Le problème
Vous devez écrire un programme qui, lorsque le code Konami est tapé pendant l'exécution, imprime la chaîne " +30 lives
" et émet un bruit de votre choix depuis le haut-parleur de l'ordinateur.
Définition
Le "Code Konami" est défini comme UUDDLRLRBA
suit en appuyant sur la touche Entrée.
Les règles
- Vous pouvez choisir d'utiliser la flèche vers le haut pour
U
, le bas pourD
, la gauche pourL
et la droite pourR
, tant que votre code est cohérent avec des flèches ou des lettres. - Votre entrée peut être acceptée à partir d'un contrôleur ou d'un clavier, mais n'a pas besoin de prendre en charge les deux.
Les réponses existantes peuvent continuer à être utilisées à la
BABA
place deBA
, mais peuvent également les raccourcir si elles le souhaitent. Les réponses futures devraient toutes être utiliséesBA
pour la cohérence.L'entrée vide n'a pas besoin d'être prise en charge.
Réponses:
05AB1E , 33 octets (fin sur entrée vide)
Essayez-le en ligne!
05AB1E ,
3026 octets (échoue sur une entrée vide)-4 merci à Adnan
Essayez-le en ligne!
Avertissement: le son de Bell ne joue pas sur TryItOnline, demandez peut-être à Dennis si l'un de ses serveurs quelque part cingle lorsque vous l'exécutez.
la source
"+30 lives"
is“+30™‹“
:)JavaScript (ES6),
202200198 octetsTesté uniquement sur Chrome et Firefox. Utilise
UDLR
plutôt que les touches fléchées. Veuillez vous assurer que CapsLock est désactivé.la source
Python 3,
5553 octets-1 octet grâce à isaacg (utilisez au niveau du bit pour ne pas remplacer
-10
par~9
).-1 octet grâce à CalculatorFeline (il est possible d'utiliser un
BEL
octet littéral ).où l' illustration
7
ci-dessus est un octet littéral0x07
(non imprimable dans un bloc de code).Une fois la touche Entrée enfoncée, la
while
condition de boucle est vérifiée. Si les derniers~9
= 10 caractères (tout au plus) ne correspondent pas au code de commande Contra, alors le no-op1
est exécuté (remplacement depass
par souci de concision); si elles font correspondre alors le tout en fin de boucle et l'print
exécution de l' instruction, qui écrit le texte requis avec un caractère de cloche ASCII ( « alarme »),0x07
qui produit un son à moins qu'il ait été explicitement désactivé (ou le terminal n'a pas haut - parleur !).la source
-10
=~9
, ce qui peut vous faire économiser un octet.\n
cordes dans les golfs Python, pourquoi ne les utiliseraient-ils pas\x0a
?Gelée,
33302927 octetsIl s'avère que l'ajout (
ṭ
) n'est pas nécessaire, les chaînes sont automatiquementjointes lesdeux imprimées.Non compressé
Essayez-le en ligne
Si vous supprimez tout après
¿
, vous pouvez jouer avec l'entrée et voir qu'elle ne revient que lorsque la chaîne d'entrée est correcte.Merci @JonathanAllan de m'avoir aidé à comprendre la compression des chaînes :)
la source
“+30 lives”
compressé est“¡}ʠƈ[ỵ»
(pour référence future voici un article à ce sujet, il est lié dans le tutoriel sur le wiki Jelly).7Ọ
suivie d'une impression implicite de la nilade“¡}ʠƈ[ỵ»
, apparaissant sur stdout comme s'il s'agissait d'une concaténation. Comme vitrine, vous pouvez essayer d'ajouter un sommeil de 2 secondes entre avecɠ⁻“UUDDLRLRBABA”$¿ṛ7Ọ2“+30 lives”œS
.Traitement,
161157155 octetsLe fichier audio doit être enregistré sous
sketchName/data/a.mp3
. Remarque: J'ai uniquement testé ce programme sans le fichier audio car je suis trop paresseux pour télécharger unmp3
fichier (car seules des extensions limitées sont prises en charge à partir deprocessing.sound.SoundFile
).La
draw()
fonction doit être là pourkeyTyped
fonctionner.La raison pour laquelle nous l'utilisons
keyTyped
est que le traitement n'a pas STDIN, il ne peut écouter que les touches enfoncées via l'esquisse en cours d'exécution.Explication
Toutes les frappes de l'utilisateur sont stockées sous forme de caractères dans la chaîne
k
. LakeyTyped
est une fonction intégrée qui est appelée chaque fois que l'utilisateur tape une clé. Simultanément, nous vérifions si cette chaîne se termine par les frappes. Ensuite, nous imprimons+30 lives
et lisons le fichier son. Et ladraw
fonction est là pour se mettre à jour en permanencekeyTyped
. Une fois le code Konami entré, rien d'autre ne sera émis et aucun son ne sera lu.la source
.mp3
fichier n'a pas vraiment d'importance car peu importe ce qu'il est, le traitement le jouera comme un son> <>,
132696462 octets*> <> , 84 octetsEssayez-le ici!
Cela repose sur le carillon de la cloche (ascii
7
) pour le bruit à la fin (non entendu sur l'interprète en ligne).Merci à @TealPelican d'avoir économisé encore 15 octets!
Enregistrement de deux octets à la recherche
BA
deBABA
.la source
C 119 -1 - 2 = 116 octets
Golfé
Non golfé
la source
s/UUDDLRLR BABA/UUDDLRLRBABA
pour -1 octet et le strcmp recherchera la chaîne correcte!Empilé , 41 octets
Lit l'entrée du clavier.
la source
AutoHotkey, 63 octets
Après avoir exécuté ce script, il vérifiera si les 10 touches suivantes sont le code Konami et si c'est le cas, il affichera une boîte de message disant "+30 vies" et il devrait émettre un bip (je n'ai pas de haut-parleurs maintenant pour tester ).
la source
GNU sed,
3225 + 1 =3326 octets+1 octet pour le
-n
drapeau.Essayez-le en ligne!
Explication
Chaque fois que la touche Entrée est enfoncée (
$
), le programme vérifie si les 10 touches précédentes étaient le code. Si tel était le cas, laa
commande met en file d'attente le texte+30 Lives
et le son de la cloche (\a
) à imprimer à la fin du cycle en cours (qui, dans ce cas, est immédiatement).la source
BA
une seule fois.Mathematica, 50 octets
Initialement,
x
est juste un symbole et n'est donc pas identique (=!=
) au symboleUUDDLRLRBA
, ilx=Input[]
est donc évalué. Cela ouvrira une boîte de dialogue avec le curseur déjà dans le champ de saisie, afin que l'utilisateur puisse immédiatement commencer à taper sur le clavier.Si
Enter
est pressé ouOK
cliqué sans rien taper, alorsInputField[]
reviendraNull
, qui n'est pas identique àUUDDLRLRBA
, donc la boucle continue et une autre boîte de dialogue sera ouverte.Si l'utilisateur clique
Cancel
ou quitte la boîte de dialogue, ilInputField
reviendra$Canceled
, ce qui n'est pas non plus identique àUUDDLRLRBA
, donc la boucle continuera.L'utilisateur peut taper dans la boîte de dialogue au gré de ses envies. Lorsqu'ils frappent
Enter
, leur entrée est interprétée comme une expression du langage Wolfram (peut-être juste des cases). Si cette expression est autre chose que le symboleUUDDLRLRBA
, la boucle continuera."Doit boucler jusqu'à ce que le code Konami soit entré" est un peu vague, mais je crois que cela le satisfait. Une fois la
While
boucle terminée ,.Beep[]
;"+30 lives"
la source
UUDDLRLRB
? O's estA
?Petit ordinateur BASIC, 91 octets
Enfin une solution qui utilise réellement l'entrée du contrôleur!
J'ai utilisé Petit Computer plutôt que la version plus récente (SmileBASIC) car elle a accès au bouton Démarrer et
BTRIG()
est plus courte queBUTTON()
.J'ai remplacé la chaîne de données par
x
's, elle devrait contenir des caractères avec les codes ascii 1,1,2,2,4,8,4,8,32,16Version ennuyeuse, 46 octets
la source
Powershell,
8986 octetsenter soumet la chaîne au
Read-Host
, donc elle devrait .. fonctionner?la source
C # (la version ennuyeuse), 80 octets
C # (L'intéressant), 202 octets
Je pense que cela fonctionne, malheureusement les testeurs en ligne ne prennent pas en charge l'existence d'une entrée de console, en tant que tel, je devrai passer les tests que j'ai effectués
Peut très probablement être énormément joué au golf - je ne suis pas doué pour ça! :)
Non golfé:
la source
Console.Readline
mais je pensais que cela pourrait être l'esprit du défi! Si ça va, je peux faire ça beaucoup plus courtConsole.ReadLine()
versionWonder , 50 octets
Remplacez
•
par le caractère du code\x07
( le caractère de contrôle BEL). Prend entrée via STDIN.la source
flex, 37 + 5 = 42 octets
Le code lui-même fait 37 octets, compilez-le avec l'option "-main" qui ajoute 5 octets. Naturellement, vous devez compiler le fichier C résultant avec votre compilateur C préféré, mais je ne pense pas que cette étape devrait compter pour le nombre d'octets.
Je pourrais enregistrer un octet en utilisant un caractère BEL littéral au lieu de
\a
, mais je préférerais pouvoir lire mon propre code.la source
-ll
comme option au compilateur C plutôt que-main
comme option de flexion.C,
878581 octetsla source
shortC, 52 octets
Explication:
Essayez-le en ligne!
la source
C, 114 octets
la source