Das Problem
Sie müssen ein Programm schreiben, das, wenn der Konami-Code zur Laufzeit eingegeben wird, die Zeichenfolge " +30 lives
" ausgibt und über den Lautsprecher des Computers ein Geräusch Ihrer Wahl ausgibt.
Definition
Der "Konami-Code" wird wie UUDDLRLRBA
folgt definiert : Drücken Sie die Eingabetaste.
Die Regeln
- Sie können den Aufwärtspfeil für
U
, Abwärtspfeil fürD
, Linkspfeil fürL
und Rechtspfeil für verwendenR
, solange Ihr Code entweder mit Pfeilen oder Buchstaben übereinstimmt. - Ihre Eingabe wird möglicherweise von einem Controller oder einer Tastatur akzeptiert, muss jedoch nicht beide unterstützen.
Bestehende Antworten können weiterhin verwendet
BABA
werdenBA
, sie können jedoch auch gekürzt werden, wenn sie dies wünschen. Zukünftige Antworten sollten alle aus Gründen derBA
Konsistenz verwendet werden.Leere Eingaben müssen nicht unterstützt werden.
Antworten:
05AB1E , 33 Byte (Fein bei leerer Eingabe)
Probieren Sie es online!
05AB1E ,
3026 Byte ( Fehler bei leerer Eingabe)-4 Dank an Adnan
Probieren Sie es online!
Haftungsausschluss: Der Klingelton wird in TryItOnline nicht wiedergegeben. Fragen Sie Dennis möglicherweise, ob einer seiner Server beim Ausführen einen Ping-Befehl ausgibt.
quelle
"+30 lives"
ist“+30™‹“
:)JavaScript (ES6),
202200198 BytesNur unter Chrome und Firefox getestet. Verwendet
UDLR
eher als die Pfeiltasten. Bitte stellen Sie sicher, dass CapsLock ausgeschaltet ist.quelle
Python 3,
5553 Bytes-1 Byte dank isaacg (nicht bitweise ersetzen
-10
durch~9
).-1 Byte dank CalculatorFeline (es ist möglich, ein
BEL
Literalbyte zu verwenden).wobei das
7
oben gezeigte0x07
ein Literalbyte ist (ein in einem Codeblock nicht druckbares Byte ).Sobald die Eingabetaste gedrückt wird, wird die
while
Schleifenbedingung überprüft. Wenn die letzten~9
= 10 Zeichen (höchstens) nicht mit dem Contra-Befehlscode übereinstimmen, wird das No-Op1
ausgeführt (aus Gründen derpass
Kürze durch ein anderes ersetzt). wenn sie tun , passen dann die while - Schleife endet und dieprint
Anweisung ausgeführt wird , was schreibt die gewünschten Text zusammen mit einem ASCII - Glocke - Zeichen ( „Alarm“)0x07
, die einen Ton erzeugt , wenn es ausdrücklich deaktiviert wurde (oder das Terminal hat keine Lautsprecher !).quelle
-10
=~9
, wodurch Sie ein Byte sparen können.\n
in Python-Golfspielen häufig Saiten verwenden. Warum sollten sie diese nicht verwenden\x0a
?Jelly,
33302927 BytesStellt sich heraus, das append (
ṭ
) wird nicht benötigt, Zeichenfolgen werden automatischzusammengefügt undbeide gedruckt.Unkomprimiert
Online testen
Wenn Sie danach alles entfernen
¿
, können Sie mit der Eingabe herumspielen und feststellen, dass sie nur dann zurückgegeben wird, wenn die Eingabezeichenfolge korrekt ist.Vielen Dank an JonathanAllan, der mir geholfen hat, die String-Komprimierung herauszufinden :)
quelle
“+30 lives”
komprimiert ist“¡}ʠƈ[ỵ»
(zum späteren Nachschlagen gibt es hier einen Beitrag darüber, der im Tutorial im Jelly-Wiki verlinkt ist).7Ọ
gefolgt von einem impliziten Ausdruck des Nilads“¡}ʠƈ[ỵ»
, der auf stdout erscheint, als wäre es eine Verkettung. Als Schaufenster können Sie versuchen, zwischen mit einen 2 Sekunden Schlaf hinzuzufügenɠ⁻“UUDDLRLRBABA”$¿ṛ7Ọ2“+30 lives”œS
.Verarbeitung,
161157155 BytesDie Audiodatei muss gespeichert werden als
sketchName/data/a.mp3
. Hinweis: Ich habe dieses Programm nur ohne die Audiodatei getestet, da ich zum Herunterladen einermp3
Datei zu faul bin (da nur begrenzte Erweiterungen von unterstützt werdenprocessing.sound.SoundFile
).Die
draw()
Funktion muss vorhanden sein, damitkeyTyped
sie funktioniert.Der Grund, den wir verwenden,
keyTyped
ist, dass die Verarbeitung nicht über STDIN verfügt, sondern nur auf das Drücken von Tasten über die ausgeführte Skizze warten kann.Erläuterung
Alle Tastenanschläge des Benutzers werden als Zeichen in der Zeichenfolge gespeichert
k
. DaskeyTyped
ist eine eingebaute Funktion, die immer dann aufgerufen wird, wenn der Benutzer einen Schlüssel eingibt. Gleichzeitig prüfen wir, ob dieser String mit den Tastenanschlägen endet. Dann drucken wir die Sounddatei+30 lives
und spielen sie ab. Und diedraw
Funktion ist dazu da, ständig zu aktualisierenkeyTyped
. Nachdem der Konami-Code eingegeben wurde, wird nichts anderes ausgegeben und es wird kein Audio abgespielt.quelle
.mp3
Datei spielt keine Rolle, da die Verarbeitung sie als Sound> <>,
132696462 Bytes*> <> , 84 BytesProbieren Sie es hier aus!
Dies beruht auf dem Klingelton (ascii
7
) für das Rauschen am Ende (nicht im Online-Dolmetscher zu hören).Vielen Dank an @TealPelican für das Speichern von weiteren 15 Bytes!
Gespeichert zwei Bytes für die Überprüfung
BA
stattBABA
.quelle
C 119-1-2 = 116 Bytes
Golf gespielt
Ungolfed
quelle
s/UUDDLRLR BABA/UUDDLRLRBABA
für -1 Byte und der strcmp sucht nach dem richtigen String!Gestapelt , 41 Bytes
Liest Eingaben von der Tastatur.
quelle
AutoHotkey, 63 Bytes
Nach dem Ausführen dieses Skripts wird geprüft, ob die nächsten 10 Tasten der Konami-Code sind. Wenn dies der Fall ist, wird ein Meldungsfeld mit der Aufschrift "+30 Leben" angezeigt und es sollte ein Piepton abgespielt werden (ich habe jetzt keine Lautsprecher zum Testen ).
quelle
GNU sed,
3225 + 1 =3326 Bytes+1 Byte für
-n
Flag.Probieren Sie es online!
Erläuterung
Bei jedem Drücken der Eingabetaste (
$
) prüft das Programm, ob die vorhergehenden 10 Tastenanschläge der Code waren. Wenn dies der Fall ist , werden mit dema
Befehl der Text+30 Lives
und der Klingelton (\a
) in die Warteschlange gestellt, der am Ende des aktuellen Zyklus gedruckt werden soll (in diesem Fall sofort).quelle
BA
gerade schon einmal.Mathematica, 50 Bytes
Ist anfänglich
x
nur ein Symbol und ist somit nicht identisch (=!=
) mit dem SymbolUUDDLRLRBA
, sox=Input[]
wird ausgewertet. Dadurch wird ein Dialogfeld geöffnet, in dem sich der Cursor bereits im Eingabefeld befindet, sodass der Benutzer sofort mit dem Tippen auf der Tastatur beginnen kann.Wenn
Enter
gedrückt oderOK
geklickt wird, ohne etwas einzugeben,InputField[]
wird zurückgegebenNull
, was nicht identisch istUUDDLRLRBA
, sodass die Schleife fortgesetzt und ein weiteres Dialogfeld geöffnet wird.Wenn der Benutzer auf
Cancel
das Dialogfeld klickt oder es auf andere Weise beendet,InputField
kehrt das Dialogfeld zurück$Canceled
, was ebenfalls nicht mit identisch istUUDDLRLRBA
, sodass die Schleife fortgesetzt wird.Der Benutzer kann das Dialogfeld nach Herzenslust eingeben. Wenn sie treffen
Enter
, wird ihre Eingabe als Wolfram-Sprachausdruck interpretiert (möglicherweise nur Kästchen). Wenn dieser Ausdruck etwas anderes als das Symbol istUUDDLRLRBA
, wird die Schleife fortgesetzt."Muss Schleife, bis der Konami-Code eingegeben wird" ist ein wenig vage, aber ich glaube, das befriedigt es. Sobald die
While
Schleife abgeschlossen ist, .Beep[]
;"+30 lives"
quelle
UUDDLRLRB
? Wo istA
?Petit Computer BASIC, 91 Bytes
Endlich eine Lösung, die tatsächlich den Controllereingang nutzt!
Ich habe eher Petit Computer als die neuere Version (SmileBASIC) verwendet, da sie Zugriff auf die Schaltfläche Start hat und
BTRIG()
kürzer ist alsBUTTON()
.Ich habe die
x
Datenzeichenfolge durch 's ersetzt, sie sollte Zeichen mit den ASCII-Codes 1,1,2,2,4,8,4,8,32,16 enthaltenLangweilige Version, 46 Bytes
quelle
Powershell,
8986 Bytesenter übergibt die Zeichenkette an die
Read-Host
, also sollte es funktionieren?quelle
C # (die langweilige Version), 80 Bytes
C # (das Interessante), 202 Bytes
Ich denke , dass dies funktioniert. Leider unterstützen Online-Tester die Existenz einer Konsolen-Eingabe nicht. Daher muss ich die von mir durchgeführten Tests fortsetzen
Kann höchstwahrscheinlich enorm golfen werden - ich bin nicht so toll darin! :)
Ungolfed:
quelle
Console.Readline
aber ich dachte, das könnte der Geist der Herausforderung sein! Wenn das in Ordnung ist, kann ich das viel kürzer machenConsole.ReadLine()
Version hinzugefügtWunder , 50 Bytes
Ersetzen Sie
•
durch das Zeichen des Codes\x07
(das BEL-Steuerzeichen). Übernimmt die Eingabe über STDIN.quelle
Flex, 37 + 5 = 42 Bytes
Der Code selbst ist 37 Bytes, kompilieren Sie ihn mit der Option "-main", die 5 Bytes hinzufügt. Natürlich müssen Sie die resultierende C-Datei mit Ihrem bevorzugten C-Compiler kompilieren, aber ich denke nicht, dass dieser Schritt für die Byteanzahl zählen sollte.
Ich könnte ein Byte speichern, indem
\a
ich stattdessen ein buchstäbliches BEL-Zeichen verwende , aber ich wäre lieber in der Lage, meinen eigenen Code zu lesen.quelle
-ll
dem C-Compiler-main
eine Option geben, anstatt eine Option zum Flexen.C
878581 Bytesquelle
shortC, 52 Bytes
Erläuterung:
Probieren Sie es online!
quelle
C 114 Bytes
quelle