Sprawdź się
Zadanie 3
Haker Henryk próbuje włamać się do pewnego terminala. Ma on plik, w którym jest zapisane 1000 haseł. Kilka z nich to hasła dostępu do terminala.
W pliku hasła.txt
znajduje się 1000 potencjalnych haseł do terminala, każde w osobnej linii. Hasło to łańcuch znaków składający się z wielkich oraz małych liter alfabetu łacińskiego oraz z cyfr. Każde z nich ma długość od 3 do 16 znaków.
hasła.txt
.Henryk wie, że aby włamać się do terminala, potrzebne mu jest hasło z pliku hasła.txt
, w którym następują po sobie 3 cyfry 7 oraz ciąg znaków abc
. Ciągi znaków abc
i 777
mogą występować w dowolnej kolejności. Nie chce tracić czasu, więc chce wykorzystać pierwsze znalezione hasło.
Napisz program, który dla haseł z pliku hasła.txt
znajdzie hasło pozwalające na uzyskanie dostępu do terminala.
Dla danych:
iofjq12893ad
adsoih32
777abc
aiowefn1
youabcijo777
Hasłami pozwalającymi na dostęp będą: 777abc
oraz youabcijo777
.
Program ma wyświetlić jednak pierwsze z nich, więc wynikiem działania programu będzie 777abc
.
Do oceny oddajesz:
plik
wynik.txt
zawierający odpowiedź do zadania (jedno hasło z plikuhasła.txt
pozwalające na dostęp do terminala),plik(i) z komputerową realizacją zadania (kodem programu).
Przedstaw rozwiązanie zadania w postaci programu napisanego w wybranym języku (C++, Java lub Python).
Język C++
#include <iostream>
using namespace std;
int main() {
string hasla[] = {"EegxMjBO0Pezrv", "xp1NSCW7", "bteayabcLM777W6", "FFE0MFau", "Zcabc6Mt777zTU", "pCfJpU", "lWcYHFLu25", "Grkm", "abc77770", "08R7yBRKdqhts" };
for (int i = 0; i < hasla[i].length(); i++) {
if (hasla[i].length() < 6) {
continue;
}
bool warunek1 = false;
bool warunek2 = false;
for (int j = 1; j < hasla[i].length() - 1; j++) {
if (hasla[i][j-1] == 'a' && hasla[i][j] == 'b' && hasla[i][j+1] == 'c') {
warunek1 = true;
}
if (hasla[i][j-1] == '7' && hasla[i][j] == '7' && hasla[i][j+1] == '7') {
warunek2 = true;
}
if (warunek1 && warunek2) {
break;
}
}
if (warunek1 && warunek2) {
cout << hasla[i];
break;
}
}
return 0;
}
Język Java
public class Main {
public static void main(String[] args) {
String[] hasla = {"EegxMjBO0Pezrv", "xp1NSCW7", "bteayabcLM777W6", "FFE0MFau", "Zcabc6Mt777zTU", "pCfJpU", "lWcYHFLu25", "Grkm", "abc77770", "08R7yBRKdqhts"};
for (int i = 0; i < hasla.length; i++) {
if (hasla[i].length() < 6) {
continue;
}
boolean warunek1 = false;
boolean warunek2 = false;
for (int j = 1; j < hasla[i].length() - 1; j++) {
if (hasla[i].charAt(j - 1) == 'a' && hasla[i].charAt(j) == 'b' && hasla[i].charAt(j + 1) == 'c') {
warunek1 = true;
}
if (hasla[i].charAt(j - 1) == '7' && hasla[i].charAt(j) == '7' && hasla[i].charAt(j + 1) == '7') {
warunek2 = true;
}
if (warunek1 && warunek2) {
break;
}
}
if (warunek1 && warunek2) {
System.out.println(hasla[i]);
break;
}
}
}
}
Język Python
hasla = ['EegxMjBO0Pezrv', 'xp1NSCW7', 'bteayabcLM777W6', 'FFE0MFau', 'Zcabc6Mt777zTU', 'pCfJpU', 'lWcYHFLu25', 'Grkm', 'abc77770', '08R7yBRKdqhts']
for haslo in hasla:
if len(haslo) < 6:
continue
if 'abc' in haslo and '777' in haslo:
print(haslo)
break
Odpowiedź do zadania
Odpowiedź do zadania dla danych z pliku hasła.txt
:
wynik.txt