El problema
Debe escribir un programa que, cuando se ingresa el Código Konami durante el tiempo de ejecución, imprime la cadena " +30 lives" y suena un ruido de su elección desde el altavoz de la computadora.
Definición
El "Código Konami" se define como UUDDLRLRBAseguido presionando la tecla enter.
Las normas
- Puede optar por utilizar la flecha hacia arriba para
U, hacia abajo, hacia laDizquierdaLy hacia la derechaR, siempre que su código sea coherente con flechas o letras. - Su entrada puede ser aceptada desde un controlador o un teclado, pero no necesita admitir ambos.
Las respuestas existentes pueden seguir utilizándose en
BABAlugar de hacerloBA, pero también pueden acortarlo si lo desean. Las respuestas futuras deberían usarseBApor coherencia.La entrada vacía no necesita ser compatible.

Respuestas:
05AB1E , 33 bytes (fino en entrada vacía)
Pruébalo en línea!
05AB1E ,
3026 bytes (falla en la entrada vacía)-4 gracias a Adnan
Pruébalo en línea!
Descargo de responsabilidad: el sonido de la campana no se reproduce en TryItOnline, tal vez pregunte a Dennis si uno de sus servidores está haciendo ping cuando lo ejecuta.
fuente
"+30 lives"es“+30™‹“:)JavaScript (ES6),
202200198 bytesProbado solo en Chrome y Firefox. Utiliza en
UDLRlugar de las teclas de flecha. Asegúrese de que CapsLock esté desactivado.fuente
Python 3,
5553 bytes-1 byte gracias a isaacg (use bit a bit para no reemplazar
-10con~9).-1 byte gracias a CalculatorFeline (es posible usar un
BELbyte literal ).donde lo que se
7muestra arriba es un byte literal0x07(no imprimible en un bloque de código).Una vez que se presiona Enter
while, se verifica la condición del bucle. Si los últimos~9= 10 caracteres (como máximo) no coinciden con el código de comando Contra,1se ejecuta el no-op (reemplazo depassbrevedad); si se hacen coincidir entonces el mientras que los extremos del asa y laprintsentencia se ejecuta, que escribe el texto deseado junto con un carácter ASCII de la campanilla ( "alarma"),0x07que produce un sonido menos que se haya desactivado explícitamente (o el terminal no tiene altavoz !).fuente
-10=~9, que puede ahorrarle un byte.\ncadenas en los campos de golf de Python, ¿por qué no las usan\x0a?Jalea,
33302927 bytesResulta que el append (
ṭ) no es necesario, las cadenas seunenautomáticamente yseimprimen.Sin comprimir
Pruébelo en línea
Si elimina todo después
¿, puede meterse con la entrada y ver que solo vuelve cuando la cadena de entrada es correcta.Gracias @JonathanAllan por ayudarme a descubrir la compresión de cadenas :)
fuente
“+30 lives”comprimido es“¡}ʠƈ[ỵ»(para referencia futura aquí hay una publicación al respecto, está vinculado en el tutorial en la wiki de Jelly).7Ọseguido de una impresión implícita del nilad“¡}ʠƈ[ỵ», que aparece en la salida estándar como si se tratara de concatenación. Como escaparate, puede intentar agregar un sueño de 2 segundos entre conɠ⁻“UUDDLRLRBABA”$¿ṛ7Ọ2“+30 lives”œS.Procesamiento,
161157155 bytesEl archivo de audio debe guardarse como
sketchName/data/a.mp3. Nota: Solo he probado este programa sin el archivo de audio porque soy demasiado vago para descargar unmp3archivo (ya que solo se admiten extensiones limitadasprocessing.sound.SoundFile).Se
draw()necesita la función para estar allí parakeyTypedpoder trabajar.La razón por la que estamos usando
keyTypedes porque Processing no tiene STDIN, solo puede escuchar las teclas presionadas a través del boceto que se está ejecutando.Explicación
Todas las pulsaciones de teclas del usuario se almacenan como caracteres dentro de la Cadena
k. LakeyTypedes una función incorporada que se llama cada vez que el usuario escribe una clave. Simultáneamente, estamos verificando si esta Cadena termina con las pulsaciones de teclas. Luego imprimimos+30 livesy reproducimos el archivo de sonido. Y ladrawfunción está ahí para actualizar continuamentekeyTyped. Después de ingresar el código Konami, no se emitirá nada más y no se reproducirá ningún audio.fuente
.mp3archivo realmente no importa, ya que no importa lo que sea, Processing lo reproducirá como un sonido> <>,
132696462 bytes*> <> , 84 bytesPruébalo aquí!
Esto se basa en el timbre de la campana (ASCII
7) para el ruido al final (no se escucha en el intérprete en línea).¡Gracias a @TealPelican por guardar otros 15 bytes!
Se guardaron dos bytes buscando en
BAlugar deBABA.fuente
C 119 -1 - 2 = 116 bytes
Golfed
Sin golf
fuente
s/UUDDLRLR BABA/UUDDLRLRBABA¡para -1 byte y el strcmp buscará la cadena correcta!Apilado , 41 bytes
Lee la entrada del teclado.
fuente
AutoHotkey, 63 bytes
Después de ejecutar este script, verificará si las siguientes 10 teclas son el código Konami y, si lo es, mostrará un cuadro de mensaje que dice "+30 vidas" y debería sonar un pitido (ahora no tengo altavoces para probar )
fuente
GNU sed,
3225 + 1 =3326 bytes+1 byte para
-nbandera.Pruébalo en línea!
Explicación
Cada vez que se presiona enter (
$), el programa verifica si las 10 teclas anteriores fueron el código. Si lo fueran, elacomando pone en cola el texto+30 Livesy el sonido de la campana (\a) para que se imprima al final del ciclo actual (que, en este caso, es inmediato).fuente
BAsolo una vez.Mathematica, 50 bytes
Inicialmente,
xes solo un símbolo y, por lo tanto, no es idéntico (=!=) al símboloUUDDLRLRBA, por lo quex=Input[]se evalúa. Esto abrirá un cuadro de diálogo con el cursor ya en el campo de entrada, para que el usuario pueda comenzar a escribir inmediatamente en el teclado.Si
Enterse presiona oOKse hace clic sin escribir nada,InputField[]volveráNull, lo que no es idénticoUUDDLRLRBA, por lo que el bucle continúa y se abrirá otro cuadro de diálogo.Si el usuario hace clic
Cancelo sale del cuadro de diálogo,InputFieldregresará$Canceled, que tampoco es idéntico aUUDDLRLRBA, por lo que el ciclo continuará.El usuario puede escribir en el cuadro de diálogo al deseo de su corazón. Cuando golpean
Enter, su entrada se interpreta como una expresión del lenguaje Wolfram (posiblemente solo cuadros). Si esa expresión no es el símboloUUDDLRLRBA, el ciclo continuará."Debe repetir hasta que se ingrese el código de Konami" es un poco vago, pero creo que esto lo satisface. Una vez que el
Whilese ha completado bucle, .Beep[];"+30 lives"fuente
UUDDLRLRB? ¿Dónde estáA?Petit Computer BASIC, 91 bytes
Finalmente, una solución que realmente utiliza la entrada del controlador.
Utilicé Petit Computer en lugar de la versión más reciente (SmileBASIC) porque tiene acceso al botón de Inicio y
BTRIG()es más corto queBUTTON().He reemplazado la cadena de datos con
x's, debe contener caracteres con códigos ascii 1,1,2,2,4,8,4,8,32,16Versión aburrida, 46 bytes
fuente
Powershell,
8986 bytesenter envía la cadena a
Read-Host, por lo que debería ... ¿funciona?fuente
C # (la versión aburrida), 80 bytes
C # (El interesante), 202 bytes
Creo que esto funciona, lamentablemente los probadores en línea no admiten la existencia de una entrada de consola, por lo que tendré que pasar por las pruebas que he realizado.
Lo más probable es que pueda jugar al golf enormemente. ¡No soy bueno en esto! :)
Sin golf:
fuente
Console.ReadlinePero pensé que podría ser contra el espíritu del desafío! Si eso está bien, puedo hacerlo mucho más cortoConsole.ReadLine()versiónMaravilla , 50 bytes
Reemplace
•con el carácter del código\x07(el carácter de control BEL). Toma entrada a través de STDIN.fuente
flex, 37 + 5 = 42 bytes
El código en sí es de 37 bytes, compílelo con la opción "-main" que agrega 5 bytes. Naturalmente, debe compilar el archivo C resultante con su compilador de C favorito, pero no creo que ese paso deba contar para el recuento de bytes.
Podría guardar un byte usando un carácter BEL literal en lugar de
\a, pero prefiero poder leer mi propio código.fuente
-llcomo opción al compilador de C en lugar de-maincomo una opción para flexionar.C,
878581 bytesfuente
shortC, 52 bytes
Explicación:
Pruébalo en línea!
fuente
C, 114 bytes
fuente