„YMCA” to popularna piosenka disco autorstwa Village People, która ma dobrze znany taniec . Napisz najkrótszy program, który wypisze wielkie litery „Y”, „M”, „C” i „A” zsynchronizowane z refrenem piosenki.
Zasadniczo jedna litera przypada na każdą linię wysłaną na standardowe wyjście. Ma to przede wszystkim na celu uproszczenie programów podlegających buforowaniu wyjściowemu biblioteki standardowej C (wydruk nowego wiersza opróżnia bufor wyjściowy), więc możesz pominąć niektóre lub wszystkie nowe wiersze, jeśli takie pominięcie spowodowałoby skrócenie programu.
Twój program, który jest uruchamiany w tym samym czasie co muzyka, musi wypisać literę „Y” w ciągu 0,125 s każdego z tych czasów po uruchomieniu (w sekundach; ustaliłem je na podstawie teledysku opublikowanego na YouTube).
45.766 49.611 60.889
64.661 109.816 113.591
124.810 128.687 173.830
177.620 188.950 192.724
204.013 207.739 219.057
Litery „M”, „C” i „A” oznaczają odpowiednio 0,930 s, 1,395 s i 1,628 s po każdym „Y”. Do celów testowych te czasy względne są przeliczane na czasy bezwzględne poprzez dodanie ich do czasu poprzedzającego „Y”.
Napisałem program testowy i odpowiedni przykładowy program w C, który zakłada, że po każdej literze następuje nowa linia (chociaż nie jest to reguła konkurencji). Jest napisany dla systemu Linux i nie będzie działał w systemie Windows bez użycia Cygwin. Jeśli nie możesz przetestować swojego zgłoszenia za pomocą programu testowego, przynajmniej sprawdź swoje przesłanie względem filmu na YouTube .
Jeśli Twoje zgłoszenie wymaga specjalnej opcji wiersza polecenia, aby zachowywać się poprawnie, ta opcja wiersza poleceń liczy się przy obliczaniu wyniku. Jednak czas uruchamiania interpretera nie jest liczony, a program testowy można zmodyfikować w celu dostosowania go w razie potrzeby.
Chociaż wątpię, by istniał, muszę powiedzieć, że używanie funkcji języka programowania lub biblioteki zaprojektowanej specjalnie do tego zadania jest zabronione.