Inspiré par ce xkcd
Vous travaillez pour Shazam et ils ont un projet pour vous. Certains clients se plaignent de voir leur application occuper trop de place sur leur téléphone. Ils souhaitent donc que vous codiez une version allégée de l'application. Malheureusement, votre code existant ne peut comprendre que le mot "na" et vous devez le faire rapidement. Ce n'est pas grave, nous ferons de notre mieux avec ce que nous avons.
Le défi
Vous devez écrire un programme complet prenant une entrée utilisateur ou un argument en ligne de commande, puis imprimer le titre et l'artiste de la chanson. Étant donné que nous essayons de corriger les clients qui se plaignent de la taille du programme, votre code doit être aussi court que possible. L'entrée sera une chaîne composée entièrement de na, avec un seul espace entre eux. Minuscules / majuscules est arbitraire. Ceci est considéré comme une entrée valide: Na Na nA na NA
Ceci est une entrée invalide: nah nah NA naNa banana
Vous devez déterminer la chanson en cours de lecture et l’imprimer exactement dans ce format:
Song: <trackname>
Artist: <artist>
Si l'entrée a exactement 8 na, cela correspond à deux chansons distinctes, vous devez donc les imprimer:
Song: Batman Theme
Artist: Neal Hefti
et
Song: Na Na Hey Hey Kiss Him Goodbye
Artist: Steam
Si l'entrée correspond exactement à 10 na, vous devez imprimer:
Song: Katamari Damacy
Artist: Yuu Miyake
Si l'entrée correspond exactement à 11 na, vous devez imprimer:
Song: Hey Jude
Artist: The Beatles
Si la saisie est supérieure ou égale à 12 na, vous devez imprimer
Song: Land Of 1000 Dances
Artist: Wilson Pickett
Enfin, si l'entrée est invalide, s'il y a moins de 8 na ou si l'un des mots n'est pas "na", votre programme ne comprend pas la musique. Donc logiquement, il n'y a qu'une seule chanson possible. Vous devez imprimer:
Song: Africa
Artist: Toto
Comme d'habitude, des failles standard s'appliquent et la réponse la plus courte en octets est gagnante.
la source
na
n'est-il pas? Je viens de l'écouter et je pensais que c'était le cas (en termes de longueur des notes)quarter quarter quarter quarter / eighth sixteenth sixteenth quarter-quarter-quarter / eighth sixteenth quarter-quarter-quarter
, ce qui correspond à 12na
s.onnnnnnnnne-one-three-one-a-two-threeeeeeeeeee-one-a-two-threeeeeeee-hey-jude
certainement 11na na / na na / na na / na na
x2batman
. J'ai remarqué que la deuxième fois que j'ai vu la bande dessinée.Réponses:
Rétine , 242
Essayez-le en ligne!
Comment ça marche:
Indicateur IgnoreCase + indicateur de mode Grep + Regex
^na( na)*$
. Si l'entrée est valide, imprimez-la telle quelle. Sinon, n'imprimez rien.Indicateur IgnoreCase + Indicateur de mode de correspondance + Regex
na
. Comptez les "na" et imprimez le nombre.Si la chaîne est exactement "8", remplacez-la par la deuxième ligne.
Si la chaîne est exactement "10", remplacez-la par la deuxième ligne.
Si la chaîne est exactement "11", remplacez-la par la deuxième ligne.
Si la chaîne correspond
[0-9].+
, remplacez-la par la deuxième ligne. Ce n'est pas vrai pour les nombres à un chiffre,10
et11
comme ils ont déjà été remplacés, ni aucune des chaînes de remplacement ci-dessus.Si aucun des éléments ci-dessus ne correspond, la chaîne commence toujours par un nombre. Par défaut, Toto, Afrique.
Remplacez les espaces réservés
>
et,
parSong:
etArtist:
.la source
JavaScript (ES6), 276 octets
Explication
L'entrée peut éventuellement contenir un espace de fin.
Tester
Afficher l'extrait de code
la source
PowerShell, 278 octets
Ungolfed
Usage
la source
sh + coreutils, 290
Quoique plus long que mon autre mémoire, celui-ci est simple et peu gai, alors je l’ai inclus quand même.
Comment ça marche:
Si l'entrée est valide, imprimez-la telle quelle. Sinon, n'imprimez rien.
Comptez les mots.
Table de consultation simple,
Song:
etArtist:
sont conservés dans des variables.la source
^(na ?)+$
.Python
453440406380 octetsEDIT: Merci à Cyoce pour la réduction de 13 octets!
EDIT: Merci encore à Cyoce!
MODIFIER: Merci à RainerP. pour m'aider à améliorer l'algorithme sur certains cas non valides.
Ceci est un brouillon d'un programme Python. Je crois qu'il peut être joué au golf, peut-être à 300-400 octets. Mais travaillera sur cela bientôt.
Essayez ici!
la source
"Batman Theme,Neal Hefti,Na Na Hey Kiss Him Goodbye,Steam,Katamari Damacy,Yuu Miyake,Hey Jude,Beatles,Land of the 1000 Dances,Wilson Pickett,Africa,Toto".split(',')
if i not in ["n","a"," "]: ...
je crois que vous pouvez utiliserif i not in 'na ': ...
. De plus,if f==0: somecode; else: somemorecode
peut être réduit àif f: somemorecode; else: somecode
(0 est Falsy)"\nArtist:"
trois fois. essayez de définir une variable, par exempleA="\nArtist:"
, puis utilisez-laA
à la place du littéral chaîne. La même chose peut être faite avec"Song:"
. De plus, je pense que celaif n<8or n==9:f=10
peut être déplacé en haut de la déclaration if et remplacé parif n!=8:f=10
Batman Theme
au lieu deAfrica
pourna na na nan na na na na
.Julia, 325 bytes
Probably could be golfed further.
la source
^(na ?)+$
.<
and>
instead of==
:&&(c=length(split(ARGS[1],"na"))-1)<9?(p("Batman Theme","Neal Hefti"),p("Na Na Hey Hey Kiss Him Goodbye","Steam"))c>11?p("Land Of 1000 Dances","Wilson Pickett"):c>10?p("Hey Jude","The Beatles"):c>9?p("Katamari Damacy","Yuu Miyake"):p("Africa","Toto")
. Off-topic: I like your Avatar. Finished watching SAO last week. ;)Rust,
501477 bytesUngolfed
Edit: removed an unnecessary to_string and type annotations
la source
Perl 5
-pa
, 248 bytesTry it online!
la source
Perl 5,
312292 bytesTry it online!
Ungolfed:
la source
C (gcc),
403395370365 bytes-8 -5 bytes thanks to ceilingcat
Pretty much as straight-forward as can be.
Try it online!
la source
Java 8, 353 bytes
Explanation:
Try it online.
la source