"YMCA" est une chanson disco populaire des Village People qui a une danse bien connue . Écrivez le programme le plus court pour produire les lettres majuscules "Y", "M", "C" et "A" synchronisées avec le refrain du morceau.
Généralement, une lettre va sur chaque ligne envoyée à la sortie standard. Il s'agit principalement de simplifier les programmes soumis à la mise en mémoire tampon de sortie de la bibliothèque standard C (l'impression d'une nouvelle ligne vide la mémoire tampon de sortie), vous pouvez donc omettre une ou toutes ces nouvelles lignes si une telle omission rendrait votre programme plus court.
Votre programme, qui démarre en même temps que la musique, doit sortir la lettre "Y" à 0,125 s de chacune de ces heures après le démarrage (en secondes; je les ai déterminées à partir du clip publié sur 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
Les lettres "M", "C" et "A" viennent respectivement 0,930 s, 1,395 s et 1,628 s après chaque "Y". A des fins de test, ces temps relatifs sont convertis en temps absolus en les ajoutant au temps du "Y" précédent.
J'ai écrit un programme de test et un exemple de programme correspondant en C qui supposent qu'une nouvelle ligne suit chaque lettre (bien que ce ne soit pas une règle de concurrence). Il est écrit pour Linux et ne fonctionnera pas sur Windows sans utiliser Cygwin. Si vous ne pouvez pas tester votre soumission à l'aide du programme de test, vérifiez au moins votre soumission par rapport à la vidéo YouTube .
Si votre soumission nécessite une option de ligne de commande spéciale pour se comporter correctement, cette option de ligne de commande compte lors du calcul de votre score. Cependant, tout temps de démarrage de l'interpréteur ne compte pas pour vous et le programme de test peut être modifié pour l'adapter si nécessaire.
Bien que je doute qu'il existe, je dois dire que l'utilisation d'une fonction de langage de programmation ou d'une bibliothèque conçue spécifiquement pour cette tâche est interdite.
Ruby
180 135 124 118 108104la source
%w(Y M C A)*15
au lieu de'Y M C A'.split*15
générer les lettres? Celaeach
pourrait également être unmap
problème même si vous n'avez pas besoin de la sortie. Oh, et vous pouvez écrire10.0
comme1e1
!Python 2,6 (
82) (214) (219) (196) (185) (152)Fixé. Couru contre la vidéo et semble précis. Enregistrement de quelques caractères silencieux en réduisant la précision de 3 à 2 dans la plupart des cas (merci pour la astuce @JPvdMerwe).
Le seul problème est que le testeur montre une énorme différence dans les horaires. Il démarre désynchronisé et essaie de revenir en synchronisation. Dans les deux cas de test, elle était désynchronisée de plus de 175 secondes au début et est revenue à moins de 0,342 et 0,451 seconde après avoir été synchronisée.
la source
-u
option de ligne de commande dans le décompte.-u
est nécessaire pour le programme de testeur (qui utilise un tuyau), pas pour la sortie directement vers un terminal.Mathematica, 157
J'ai regardé la vidéo entière pour confirmer le timing. YMC A .... YMC A ...
Il pourrait être plus court avec moins de précision, mais je devrais alors regarder à nouveau la vidéo pour confirmer qu'elle n'était pas éteinte de plus de 0,125 à la fin. lol
la source