"YMCA" adalah lagu disko populer oleh Village People yang memiliki tarian terkenal . Tuliskan program terpendek untuk menghasilkan huruf kapital "Y", "M", "C", dan "A" yang disinkronkan ke paduan suara lagu.
Secara umum, satu huruf berjalan pada setiap baris yang dikirim ke output standar. Hal ini terutama untuk menyederhanakan program yang tunduk pada buffering output dari pustaka standar C (mencetak baris baru memunculkan buffer output), sehingga Anda dapat menghilangkan salah satu atau semua baris baru ini jika kelalaian seperti itu akan membuat program Anda lebih pendek.
Program Anda, yang dimulai pada saat yang sama dengan musik, harus menampilkan huruf "Y" dalam 0,125 detik dari masing-masing waktu setelah mulai (dalam detik; saya menentukan ini dari video musik yang diposting di 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
Huruf "M", "C", dan "A" masing-masing datang 0,930 s, 1,395 s, dan 1,628 s setelah masing-masing "Y". Untuk tujuan pengujian, waktu relatif ini dikonversi menjadi waktu absolut dengan menambahkannya ke waktu "Y" sebelumnya.
Saya telah menulis program pengujian dan program contoh terkait dalam C yang mengasumsikan baris baru mengikuti setiap huruf (meskipun ini bukan aturan persaingan). Ini ditulis untuk Linux dan tidak akan bekerja di Windows tanpa menggunakan Cygwin. Jika Anda tidak dapat menguji kiriman Anda menggunakan program pengujian, setidaknya periksa kiriman Anda terhadap video YouTube .
Jika kiriman Anda memerlukan opsi baris perintah khusus untuk berperilaku dengan benar, opsi baris perintah itu diperhitungkan saat menghitung skor Anda. Namun, waktu mulai juru bahasa tidak diperhitungkan terhadap Anda, dan program pengujian dapat dimodifikasi untuk mengakomodasi hal itu jika perlu.
Meskipun saya ragu ada, saya harus mengatakan bahwa menggunakan fungsi bahasa pemrograman atau perpustakaan yang dirancang khusus untuk tugas ini dilarang.
Ruby
180 135 124 124 118 108104sumber
%w(Y M C A)*15
alih - alih'Y M C A'.split*15
menghasilkan surat? Juga itueach
mungkin bisa jadimap
meskipun Anda tidak perlu output. Oh, dan kamu bisa menulis10.0
sebagai1e1
!Python2.6 (
82) (214) (219) (196) (185) (152)Tetap. Berlari melawan video & tampaknya akurat. Simpan beberapa karakter dengan mengurangi presisi dari 3 menjadi 2 di sebagian besar kasus (terima kasih atas tipnya @JPvdMerwe).
Satu-satunya masalah adalah bahwa penguji menunjukkan perbedaan besar dalam timing. Itu dimulai dari sinkronisasi & mencoba untuk kembali ke sinkronisasi. Dalam dua kasus uji itu lebih dari 175 detik tidak sinkron di awal dan kembali ke dalam 0,342 dan 0,451 detik untuk kembali sinkron.
sumber
-u
opsi baris perintah dalam hitungan.-u
diperlukan untuk program penguji (yang menggunakan pipa), bukan untuk output langsung ke terminal.Mathematica, 157
Saya menonton seluruh video untuk mengonfirmasi waktu. YMC A .... YMC A ...
Bisa jadi lebih pendek dengan presisi kurang, tapi kemudian saya harus menonton video lagi untuk memastikan bahwa itu tidak mati lebih dari .125 pada akhirnya. lol
sumber