"YMCA" é uma música popular do disco do Village People que tem uma dança bem conhecida . Escreva o programa mais curto para emitir as letras maiúsculas "Y", "M", "C" e "A" sincronizadas com o coro da música.
Geralmente, uma letra é enviada em cada linha enviada para a saída padrão. Isso é principalmente para simplificar os programas sujeitos ao buffer de saída da biblioteca padrão C (a impressão de uma nova linha libera o buffer de saída); portanto, você pode omitir uma ou todas essas novas linhas, se essa omissão diminuir o seu programa.
Seu programa, iniciado ao mesmo tempo que a música, deve exibir a letra "Y" dentro de 0,125 s de cada um desses momentos após o início (em segundos; eu determinei isso no videoclipe postado no 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
As letras "M", "C" e "A" respectivamente vêm 0,930 s, 1,395 se 1,628 s após cada "Y". Para fins de teste, esses tempos relativos são convertidos em tempos absolutos, adicionando-os ao tempo do "Y" anterior.
Eu escrevi um programa de teste e um exemplo correspondente em C que assume que uma nova linha segue cada letra (embora isso não seja uma regra de concorrência). Ele foi escrito para Linux e não funcionará no Windows sem usar o Cygwin. Se você não puder testar seu envio usando o programa de teste, verifique pelo menos o envio no vídeo do YouTube .
Se o seu envio exigir que uma opção de linha de comando especial se comporte corretamente, essa opção de linha de comando será válida no cálculo de sua pontuação. No entanto, qualquer tempo de inicialização do intérprete não conta contra você e o programa de teste pode ser modificado para acomodar isso, se necessário.
Embora eu duvide que exista, devo dizer que é proibido o uso de uma função ou biblioteca de linguagem de programação projetada especificamente para esta tarefa.
Rubi
180 135 124 118 108104fonte
%w(Y M C A)*15
vez de'Y M C A'.split*15
gerar as letras? Além disso, issoeach
provavelmente pode ser um caso demap
você não precisar da saída. Ah, e você pode escrever10.0
como1e1
!Python2.6 (
82) (214) (219) (196) (185) (152)Fixo. Funcionou contra o vídeo e parece preciso. Economizou alguns caracteres em silêncio, reduzindo a precisão de 3 para 2 na maioria dos casos (obrigado pela dica @JPvdMerwe).
O único problema é que o testador mostra uma enorme discrepância nos tempos. Começa fora da sincronização e tenta voltar à sincronização. Nos dois casos de teste, ficou mais de 175 segundos fora de sincronia no início e voltou a ficar entre 0,342 e 0,451 segundos após a sincronização.
fonte
-u
opção de linha de comando na contagem.-u
é necessário para o programa testador (que usa um tubo), não para a saída diretamente para um terminal.Mathematica, 157
Eu assisti o vídeo inteiro para confirmar o tempo. YMC A .... YMC A ...
Poderia ser mais curto com menos precisão, mas então eu teria que assistir ao vídeo novamente para confirmar que não estava desligado em mais de 0,125 no final. ri muito
fonte