Słowa [2023] [PR]
W pliku slowa.txt zapisano 50 słów o długościach nie większych niż 1000 złożonych z małych liter alfabetu angielskiego.
Napisz program(y), który(e) da(dzą) odpowiedzi do poniższych zadań. Odpowiedzi do poszczególnych zadań zapisz – odpowiednio – w plikach wyniki4_1.txt, wyniki4_2.txt i wyniki4_3.txt.
Plik przyklad.txt zawiera przykładowe dane spełniające warunki zadania. Odpowiedzi dla danych z tego pliku są podane pod treściami zadań.
Zadanie 4.1. (0–4)
Słowo nazwiemy WK-słowem, jeśli liczba wystąpień liter w i k w tym słowie jest taka sama.
Przykład:
Wśród słów: wakacje, wirus, kawa, matura, wykopki
WK-słowami są: wakacje, kawa, matura
Uwaga: zauważ, że w słowie matura litery w i k występują po 0 razy.
Zapisz w pliku wyniki4_1.txt wszystkie słowa z pliku slowa.txt, które są WK-słowami. Każde takie słowo wypisz w oddzielnym wierszu, zachowując kolejność z pliku slowa.txt.
Dla pliku przyklad.txt odpowiedzią jest następująca lista:
wk
wakacje
wakacjeachwakacje
abecadlo
ecowaijnippekiqswogbpznphwomxusaqevzhvtkretilpkquu
ekrceicjhhpfopqgrcewzqpctskjpslbwurgxkzdilluwfitfr
qtgcwgmbdctpgdwfmgbjdubycidalszpbnaseolwgstwznhadwuikdnlvmsimyqgkickqomanlzyuqk
vhskxhgihqyzxehhyjbnr
hvwbftvexpojohhgapnynaqxsrpvljolhtzzwgdzqhjqucgszongxpplmxzllaahlieihhyyostkpidsmrnn
ylyroyvkrsmprosg
uwlccorhlvfnnuleavntzuqalkrajcsnlwlynncrsmvfejqjvxnntlljxxekaeptexfubclfsarlbkvwhtxzwakd
hselohpejjty
grlpvomqxxmokigdomdyriikuxvwejqkqligrgdlcrrotijjddwopghqziinqmjarannnstqbhlduvynetvsrn
vbdnrbkahywwbn
cwhakacyjewakacjewakackjewwakacjewakacje
wakaccajrysewakbiacjxegizwaihkcnurfajcje
wakacjewakacjewakacjewaukacjewakacjewakacjewakacjewakacjewakacjewakacjewakacjew
akacjdewakacjewakacje
dmmwszylwwkahyowrjblddukhvkszacyjcowyamezwbmoahrkadrghhcbxljofeykzefqlcrwaaqmy
kacjuejwsamnkaqskcuzje
Zadanie 4.2. (0–4)
Dla każdego słowa z pliku slowa.txt oblicz, ile słów wakacje można ułożyć ze znaków występujących w tym słowie (każdego znaku z tego słowa możesz użyć najwyżej raz).
Przykład:
Dla słowa wwwaaaaakkcccjjee odpowiedzią jest 2 (w słowie są trzy litery w i trzy litery c, jednak nie możemy ułożyć trzech słów wakacje, ponieważ mamy do dyspozycji tylko 5 liter a – zamiast sześciu, oraz po dwie j oraz e – zamiast trzech).
Dla słowa awkcjcje odpowiedzią jest 0 (ponieważ brakuje jednego a).
Jako rozwiązanie podaj, zapisany w jednym wierszu pliku wyniki4_2.txt, ciąg pięćdziesięciu liczb rozdzielonych spacjami, w którym i-ta liczba jest równa liczbie słów wakacje, które można wyodrębnić z liter i-tego słowa z pliku slowa.txt.
Dla pliku przyklad.txt odpowiedzią jest:
0 0 0 1 2 0 2 2 2 3 0 1 0 0 0 0 1 0 2 0 2 0 2 1 3 1 3 3 2 5 3 2 1 3 3 14 13 5 2 4 5 9 70 28 80 39 56 57 25 30
Zadanie 4.3. (0–4)
Wakacyjnym słowem nazwiemy słowo otrzymane przez sklejenie z sobą dowolnie wiele razy słowa wakacje. Tak więc wakacyjnymi słowami są słowa: wakacje, wakacjewakacje, wakacjewakacjewakacje itd. Przyjmujemy, że wakacyjnym słowem jest także słowo puste, tj. niezawierające żadnej litery.
Dla każdego słowa z pliku slowa.txt oblicz najmniejszą liczbę liter, które należy z niego wykreślić, by słowo powstałe w ten sposób było wakacyjnym słowem.
Przykłady:
- Dla słowa
wakaaaacjeeodpowiedzią jest 4, ponieważ można z tego słowa otrzymać dwa słowa wakacyjne:- słowo puste – przez wykreślenie wszystkich 11 liter,
- słowo wakacje – przez wykreślenie czterech liter: trzech liter a oraz jednej litery e.
- Dla słowa
waktfaczdjeaewasakvgacrjeodpowiedzią jest 11. Można z niego otrzymać trzy słowa wakacyjne: słowo puste, słowo wakacje oraz słowo wakacjewakacje. W tym ostatnim przypadku trzeba wykreślić 11 liter, a w pozostałych przypadkach – więcej niż 11 liter. - Dla słowa
awkcjcjeodpowiedzią jest 8 (w tym przypadku trzeba wykreślić wszystkie litery aby uzyskać słowo puste, które także jest słowem wakacyjnym).
Jako rozwiązanie podaj ciąg pięćdziesięciu liczb, w którym i-ta liczba jest równa minimalnej liczbie liter, które należy wykreślić z i-tego słowa z pliku slowa.txt, by uzyskać słowo wakacyjne. Zapisz wynikowy ciąg w jednym wierszu pliku wyniki4_3.txt, oddzielając liczby spacjami.
Dla pliku przyklad.txt odpowiedzią jest:
1 2 2 0 3 8 17 27 37 12 50 50 50 50 50 50 50 50 100 100 100 100 93 100 93 100 19 19 26 5 19 26 33 19 86 2 9 72 93 79 65 37 566 916 503 839 678 678 944 930