Inspiriert von dieser xkcd
Du arbeitest für Shazam und sie haben ein Projekt für dich. Einige Kunden beschweren sich darüber, dass ihre App zu viel Speicherplatz auf ihrem Telefon belegt. Sie möchten daher, dass Sie eine Lite-Version der App codieren. Leider kann Ihr bestehender Code nur das Wort "na" verstehen, und Sie müssen bald versenden. Das ist okay, wir werden das Beste aus dem machen, was wir haben.
Die Herausforderung
Sie müssen ein vollständiges Programm schreiben, das eine Benutzereingabe oder ein Befehlszeilenargument akzeptiert, und den Titel und den Interpreten des Songs drucken. Da wir versuchen, Kunden zu beheben, die sich über die Programmgröße beschweren, muss Ihr Code so kurz wie möglich sein. Die Eingabe ist eine Zeichenfolge, die ausschließlich aus na besteht und zwischen denen ein Leerzeichen steht. Klein- / Großbuchstaben sind beliebig. Dies wird als gültige Eingabe angesehen: Na Na nA na NA
Dies ist eine ungültige Eingabe: nah nah NA naNa banana
Sie müssen bestimmen, welches Lied abgespielt wird, und es in genau diesem Format ausdrucken:
Song: <trackname>
Artist: <artist>
Wenn die Eingabe genau 8 nas ist, entspricht dies zwei separaten Titeln, sodass Sie beide drucken müssen:
Song: Batman Theme
Artist: Neal Hefti
und
Song: Na Na Hey Hey Kiss Him Goodbye
Artist: Steam
Wenn die Eingabe genau 10 nas beträgt , müssen Sie Folgendes drucken:
Song: Katamari Damacy
Artist: Yuu Miyake
Wenn die Eingabe genau 11 ist, müssen Sie Folgendes drucken:
Song: Hey Jude
Artist: The Beatles
Bei einer Eingabe von 12 oder mehr muss gedruckt werden
Song: Land Of 1000 Dances
Artist: Wilson Pickett
Wenn die Eingabe ungültig ist, weniger als 8 Na's vorhanden sind oder eines der Wörter nicht "na" ist, kann Ihr Programm die Musik nicht verstehen. Logischerweise gibt es nur ein anderes Lied, das es möglicherweise sein könnte. Sie müssen drucken:
Song: Africa
Artist: Toto
Wie üblich gelten Standardlücken, und die kürzeste Antwort in Bytes gewinnt.
quelle
na
s? Ich habe es einfach angehört und dachte, es sei (in Bezug auf die Notenlänge)quarter quarter quarter quarter / eighth sixteenth sixteenth quarter-quarter-quarter / eighth sixteenth quarter-quarter-quarter
, was 12na
s sind.onnnnnnnnne-one-three-one-a-two-threeeeeeeeeee-one-a-two-threeeeeeee-hey-jude
definitiv 11na na / na na / na na / na na
x2batman
. Mir ist aufgefallen, dass ich den Comic zum zweiten Mal gesehen habe.Antworten:
Retina , 242
Probieren Sie es online!
Wie es funktioniert:
IgnoreCase-Flag + Grep-Modus-Flag + Regex
^na( na)*$
. Wenn die Eingabe gültig ist, drucken Sie sie so wie sie ist. Wenn nicht, drucken Sie nichts.IgnoreCase-Flag + Match-Modus-Flag + Regex
na
. Zähle die "na" und drucke die Zahl aus.Wenn der String genau "8" ist, ersetzen Sie ihn durch die zweite Zeile.
Wenn der String genau "10" ist, ersetzen Sie ihn durch die zweite Zeile.
Wenn der String genau "11" ist, ersetzen Sie ihn durch die zweite Zeile.
Wenn die Zeichenfolge übereinstimmt
[0-9].+
, ersetzen Sie sie durch die zweite Zeile. Dies ist weder wahr für einstellige Zahlen,10
und11
wie sie bereits haben repaced noch eine der oben genannten Ersatzsaiten.Wenn keine der oben genannten Übereinstimmungen vorliegt, beginnt die Zeichenfolge weiterhin mit einer Zahl. Standardeinstellung ist Toto, Afrika.
Ersetzen Sie die Platzhalter
>
und,
durchSong:
undArtist:
.quelle
JavaScript (ES6), 276 Byte
Erläuterung
Die Eingabe kann optional ein Leerzeichen enthalten.
Prüfung
Code-Snippet anzeigen
quelle
PowerShell, 278 Byte
Ungolfed
Verwendung
quelle
sh + coreutils, 290
Obwohl länger als meine andere Vorlage, ist diese unkompliziert und ziemlich ungolfed, also habe ich sie trotzdem aufgenommen.
Wie es funktioniert:
Wenn die Eingabe gültig ist, drucken Sie sie so wie sie ist. Wenn nicht, drucken Sie nichts.
Zähle die Wörter.
Einfache Nachschlagetabelle,
Song:
undArtist:
werden in Variablen gehalten.quelle
^(na ?)+$
.Python
453440406380 BytesEDIT: Danke an Cyoce für die Reduzierung von 13 Bytes!
EDIT: Nochmals vielen Dank an Cyoce!
EDIT: Danke an RainerP. für die Verbesserung des Algorithmus in bestimmten ungültigen Fällen.
Dies ist ein grober Entwurf eines Python-Programms. Ich glaube, es kann definitiv Golf gespielt werden, vielleicht auf 300-400 Bytes. Aber daran wird bald gearbeitet.
Versuch es hier!
quelle
"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"," "]: ...
ich glaube du kannst benutzenif i not in 'na ': ...
. Zusätzlichif f==0: somecode; else: somemorecode
kann reduziert werdenif f: somemorecode; else: somecode
(0 Falsy)"\nArtist:"
drei Mal. Versuchen Sie, eine Variable festzulegenA="\nArtist:"
, indem Sie beispielsweiseA
anstelle des Zeichenfolgenliteral verwenden. Das gleiche kann man mit machen"Song:"
. Ich denke auch, dassif n<8or n==9:f=10
dies an die Spitze der if-Anweisungenif n!=8:f=10
Batman Theme
stattAfrica
fürna na na nan na na na na
.Julia, 325 Bytes
Wahrscheinlich könnte weiter Golf gespielt werden.
quelle
^(na ?)+$
.<
und>
anstelle von==
: verwendet werden&&(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: Ich mag deinen Avatar. Letzte Woche war ich mit dem Anschauen von SAO fertig. ;)Rost,
501477 BytesUngolfed
Bearbeiten: unnötige to_string entfernt und Anmerkungen eingegeben
quelle
Perl 5
-pa
, 248 BytesProbieren Sie es online!
quelle
Perl 5 ,
312292 BytesProbieren Sie es online!
Ungolfed:
quelle
C (gcc) ,
403395370365 Bytes-8 -5 Bytes dank Ceilingcat
Ziemlich unkompliziert.
Probieren Sie es online!
quelle
Java 8, 353 Bytes
Erläuterung:
Probieren Sie es online aus.
quelle