tło
echo
Program jest tak czysty. Możesz coś na to powiedzieć, a za każdym razem doskonale powtarza twoje słowa! Jakie to jest świetne! Rozczarowujące, powtarza to wejście naraz, niezależnie od prędkości pisania, co nie jest zbyt realistyczne. Będziemy musieli to naprawić.
Zadanie
Twój program pobiera dane wejściowe ze STDIN lub najbliższego odpowiednika. Powinien odczytywać wiersze od użytkownika jeden po drugim, być może wyświetlać jakieś monity, dopóki nie wejdzie w pusty wiersz. Następnie wypisze linie do STDOUT lub najbliższego odpowiednika, w tej samej kolejności, w jakiej zostały podane. Ostatnia (pusta) linia nie jest drukowana, a ostatnia drukowana linia nie musi mieć końca nowej linii.
Ponadto program zachowuje przedziały czasowe między poszczególnymi liniami: jeśli x
wejście linii zajęło x
sekundom użytkownika, wydrukowanie go zajmie kilka sekund. Dotyczy to również pierwszego i ostatniego wiersza; pusta linia nie jest drukowana, ale program i tak czeka przed zakończeniem.
Przykład
Oto przykładowa sesja z programem. Wszystkie działania, które nie powodują wygenerowania tekstu, są opisane w nawiasach, a monit (opcjonalny) jest wyświetlany jako >
.
[begin program]
> fhtagn[enter; 1.48s passed since starting program]
> yum yum[enter; 3.33s passed since previous enter]
> so cool![enter; 2.24s passed since previous enter]
> [enter; 0.23s passed since previous enter]
[wait 1.48s]fhtagn
[wait 3.33s]yum yum
[wait 2.24s]so cool!
[wait 0.23s, then end program]
Bez działań sesja wygląda następująco:
> fhtagn
> yum yum
> so cool!
>
fhtagn
yum yum
so cool!
Zasady i punktacja
Czasy oczekiwania powinny być dokładne z dokładnością do 0,01 sekundy (w praktyce, jeśli przeciętny człowiek nie potrafi odróżnić, nic ci nie jest). Wygrywa najniższa liczba bajtów, a standardowe luki są niedozwolone. Jeśli twój język ma wbudowaną funkcję dokładnie do tego zadania, nie możesz go używać.
yum yum
, co było dość kłopotliwe.