Trening czyni misztrza, miszcza, mistrza …

[Matthew Might]

Classroom Fortress:
The Nine Kinds of Students

Zadanie 1. Napisać program morse.c kodujący podany na wejściu tekst na kod Morsa i dekodujący podany na wejściu kod Morsa na tekst. Program powinien dać się uruchomić tak jak pokazano to poniżej (k — koduj, d — dekoduj):

echo SOS   |   ./morse k
... --- ...
echo ... --- ...   |   ./morse d
SOS

Kody Morsa możesz znaleźć na przykład w Wikipedii, a jak przekazać do uruchamianego programu argumenty wywołania jest opisane w K&R, 5.10.

Zadanie 2. Napisać program dor.c wypisujący wszystkie wyrazy ze słownika Doroszewskiego występujące w napisie podanym na wejściu. Innymi słowy program ten ma wypisywać wszystkie słowa powstające po usunięciu zera lub więcej liter z podanego napisu.

Oto przykładowe wywołanie tego programu:

cat /usr/local/share/dict/doroszewski.words   |   ./dor olaboga | sort
abo
ba
bo
la
log
...

Listę wyrazów ze słownika znajdziesz na mancie w katalogu /usr/local/share/dict/doroszewski.words.

Zadanie 3. Jednym z częściej używanych sposobów umieszczania napisów w filmach SubRip. Napisy wpisujemy w pliku tekstowym w następujący sposób:

Kolejny numer
Początek -> Koniec
Napisy, byc może w kilku wierszach
Pusty wiersz

Na przykład:

1
00:00:20,000 --> 00:00:26,500
Wlazł kotek na płotek i mruga,
ładna to piosenka niedługa.

2
00:00:28,000 --> 00:00:33,500
Niedługa, niekrótka, lecz w sam raz,
Zaśpiewaj koteczku jeszcze raz.

...

Napisy są numerowane kolejnymi liczbami naturalnymi. Liczba wpisywana jest pierwsza, dalej, w drugim wierszu wpisujemy czas trwania w formacie

godzina:minuta:sekunda,milisekunda

W trzecim i dalszych wierszach wpisujemy tekst. Napis kończy pusty wiersz.

Czasami musimy przesunąć czas we wszystkich napisach o kilka sekund do przodu lub do tyłu.

Napisać program, który po podaniu mu w linii poleceń pliku z napisami i przesunięcia wypisze na standardowe wyjście napisy z przesuniętym czasem:

$ subrip +2.500 kotek.txt
00:00:22,500 --> 00:00:29,000
Wlazł kotek na płotek i mruga,
ładna to piosenka niedługa.

2
00:00:30,500 --> 00:00:36,000
Niedługa, niekrótka, lecz w sam raz,
Zaśpiewaj koteczku jeszcze raz.

...

Być może wygodnie będzie skorzystać z usług jakiejś biblioteki oferującej funkcje na czasie 8->

Zadanie 4.

Przeczytać cucu: a compiler you can understand