Sprawdź się
Zadanie 2
W Bajtolandii ostatnim krzykiem mody są tkaniny we wzór anagramów. Najpopularniejszy wzór to ten, który składa się z trzech czteroznakowych anagramów.
Plik tkaniny.txt zawiera 100 dostępnych wzorów. Każdy ze wzorów składa się z trzech słów. Największy sklep z tkaninami w Bajtolandii chciałby złożyć zamówienie wyłącznie na te wzory, które są aktualnie w modzie, czyli anagramy składające się z czterech znaków.
W pliku tekstowym tkaniny.txt znajduje się 100 wierszy zawierających po 3 słowa w każdym wierszu. Słowa oddzielone są znakiem odstępu. Długość każdego ze słów wynosi od 2 do 14 znaków.
Przycisk do pobrania pliku TXT zawierający treść zadania. Pobierz załącznik
tkanininy.txt.Zadanie 2.1
Napisz program, który wypisze wiersze z pliku tkaniny.txt, w których znajdują się wyrazy będące anagramami składającymi się z czterech znaków. Odpowiedzi zapisz w pliku modne_tkaniny.txt.
Do oceny oddajesz:
plik
modne_tkaniny.txtz odpowiedzią do zadania (wiersze, w których znajdują się wyrazy będące anagramami składającymi się z czterech znaków),plik(i) z programem (komputerową realizacją zadania).
Informację na temat wbudowanych funkcji sortujących w językach programowania znajdziesz w e‑materiale Algorytmy sortowania w bibliotekach standardowychPrSoLNbIXAlgorytmy sortowania w bibliotekach standardowych.
Poprawny wynik dla danych podanych w testerkach:
TSST TSST TSST
ABBA BAAB BBAA
SRSR SRSR SRSR
GPWD WPDG WPDGJĘZYK C++
#include <iostream>
#include <string>
using namespace std;
string sortuj(string wyraz) {
int n = wyraz.size();
for (int i = 0; i < n; i++)
for (int j = 1; j < n - i; j++)
if (wyraz[j - 1] > wyraz[j])
swap(wyraz[j - 1], wyraz[j]);
return wyraz;
}
int main() {
int m = 5;
string slowa[m][3] = {
{"TSST", "TSST", "TSST"},
{"GDGGDEGDGG","AAEDEGDCDC","CGCGBEFCAF"},
{"ABBA", "BAAB", "BBAA"},
{"SRSR", "SRSR", "SRSR"},
{"GPWD", "WPDG", "WPDG"}
};
for (int i = 0; i < m; i++) {
string pierwsze = sortuj(slowa[i][0]);
if (pierwsze == sortuj(slowa[i][1]) && pierwsze == sortuj(slowa[i][2])) {
if (slowa[i][0].size() == 4) {
cout << slowa[i][0] << " " << slowa[i][1] << " " << slowa[i][2] << endl;
}
}
}
}JĘZYK JAVA
public class Main {
public static String sortuj(String wyraz) {
int n = wyraz.length();
for (int i = 0; i < n; i++)
for (int j = 1; j < n - i; j++)
if (wyraz.charAt(j - 1) > wyraz.charAt(j)) {
char[] c = wyraz.toCharArray();
char temp = c[j - 1];
c[j - 1] = c[j];
c[j] = temp;
wyraz = new String(c);
}
return wyraz;
}
public static void main(String[] args) {
int m = 5;
String [][] slowa = {
{"TSST", "TSST", "TSST"},
{"GDGGDEGDGG","AAEDEGDCDC","CGCGBEFCAF"},
{"ABBA", "BAAB", "BBAA"},
{"SRSR", "SRSR", "SRSR"},
{"GPWD", "WPDG", "WPDG"}
};
for (int i = 0; i < m; i++) {
String pierwsze = sortuj(slowa[i][0]);
if (pierwsze.equals(sortuj(slowa[i][1])) && pierwsze.equals(sortuj(slowa[i][2]))) {
if (slowa[i][0].length() == 4)
System.out.println(slowa[i][0] + " " + slowa[i][1] + " " + slowa[i][2]);
}
}
}
}JĘZYK PYTHON
def sortuj(wyraz):
tab = []
n = len(wyraz)
for i in range(0, n):
tab.append(wyraz[i])
for i in range(0, n):
for j in range(1, n - i):
if tab[j - 1] < tab[j]:
pom = tab[j - 1]
tab[j - 1] = tab[j]
tab[j] = pom
wynik = ""
for i in range(0, n):
wynik = wynik + tab[i]
return wynik
m = 5
slowa = [
["TSST", "TSST", "TSST"],
["GDGGDEGDGG","AAEDEGDCDC","CGCGBEFCAF"],
["ABBA", "BAAB", "BBAA"],
["SRSR", "SRSR", "SRSR"],
["GPWD", "WPDG", "WPDG"]
]
for i in range(0, m):
pierwsze = sortuj(slowa[i][0])
if pierwsze == sortuj(slowa[i][1]) and pierwsze == sortuj(slowa[i][2]):
if len(slowa[i][0]) == 4:
print(slowa[i])Odpowiedź dla danych z pliku.
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik
modne_tkaniny.txt.Zadanie 2.2
Moda w Bajtolandii zmienia się szybko – popularność straciły tkaniny ze słowami powtarzającymi się we wzorach.
Sklep chciałby złożyć nowe zamówienie, tym razem wyłącznie na te tkaniny, których wzory to czteroliterowe różne słowa, będące anagramami.
Napisz program podający liczbę wierszy w pliku tkaniny.txt, w których wszystkie słowa to czteroliterowe anagramy, które się nie powtarzają.
Do dyspozycji masz funkcje sortujące sort() w języku C++, Arrays.sort() w języku Java oraz sorted() w języku Python.
Wynik programu zapisz do pliku najmodniejsze_tkaniny.txt.
Do oceny oddajesz:
plik
najmodniejsze_tkaniny.txtz odpowiedzią do zadania (liczba naturalna oznaczającą liczbę wierszy, w których znajdują się czteroliterowe, niepowtarzające się anagramy),plik(i) z programem (komputerową realizacją zadania).
JĘZYK C++
#include <iostream>
#include <string>
#include <algorithm>
using namespace std;
string sortuj(string wyraz) {
string wyraz_kopia = wyraz;
sort(wyraz_kopia.begin(), wyraz_kopia.end());
return wyraz_kopia;
}
int main() {
int m = 5;
string slowa[m][3] = {
{"TSST", "TSST", "TSST"},
{"GDGGDEGDGG","AAEDEGDCDC","CGCGBEFCAF"},
{"ABBA", "BAAB", "BBAA"},
{"SRSR", "SRSR", "SRSR"},
{"GPWD", "WPDG", "WPDG"}
};
int licznik = 0;
for (int i = 0; i < m; i++) {
string pierwsze = sortuj(slowa[i][0]);
if (pierwsze == sortuj(slowa[i][1]) && pierwsze == sortuj(slowa[i][2])) {
if (slowa[i][0].length() == 4)
if (slowa[i][0] != slowa[i][1] && slowa[i][1] != slowa[i][2] && slowa[i][0] != slowa[i][2])
licznik++;
}
}
cout << licznik;
}JĘZYK JAVA
import java.util.Arrays;
public class Main {
public static String sortuj(String wyraz) {
char wyraz_kopia[] = wyraz.toCharArray();
Arrays.sort(wyraz_kopia);
return new String(wyraz_kopia);
}
public static void main(String[] args) {
int m = 5;
String [][] slowa = {
{"TSST", "TSST", "TSST"},
{"GDGGDEGDGG","AAEDEGDCDC","CGCGBEFCAF"},
{"ABBA", "BAAB", "BBAA"},
{"SRSR", "SRSR", "SRSR"},
{"GPWD", "WPDG", "WPDG"}
};
int liczba_wierszy = 0;
for (int i = 0; i < m; i++) {
String pierwsze = sortuj(slowa[i][0]);
if (pierwsze.equals(sortuj(slowa[i][1])) && pierwsze.equals(sortuj(slowa[i][2]))) {
if (slowa[i][0].length() == 4)
if (!slowa[i][0].equals(slowa[i][1]) && !slowa[i][1].equals(slowa[i][2]) && !slowa[i][0].equals(slowa[i][2]))
liczba_wierszy++;
}
}
System.out.println(liczba_wierszy);
}
}JĘZYK PYTHON
def sortuj(slowo):
slowo_kopia = slowo
slowo_kopia = sorted(slowo_kopia)
return "".join(slowo_kopia)
lista_slow = [
["TSST", "TSST", "TSST"],
["GDGGDEGDGG","AAEDEGDCDC","CGCGBEFCAF"],
["ABBA", "BAAB", "BBAA"],
["SRSR", "SRSR", "SRSR"],
["GPWD", "WPDG", "WPDG"]
]
liczba_wierszy = 0
for i in range(len(lista_slow)):
pierwsze = sortuj(lista_slow[i][0])
if pierwsze == sortuj(lista_slow[i][1]) and pierwsze == sortuj(lista_slow[i][2]):
if len(lista_slow[i][0]) == 4:
if lista_slow[i][0] != lista_slow[i][1] and lista_slow[i][1] != lista_slow[i][2] and lista_slow[i][0] != lista_slow[i][2]:
liczba_wierszy += 1
print(liczba_wierszy)Odpowiedź dla danych z pliku:
Przycisk do pobrania pliku TXT z wynikiem zadania. Pobierz załącznik
najmodniejsze_tkaniny.txt.