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 UUDDLRLRBA
seguido presionando la tecla enter.
Las normas
- Puede optar por utilizar la flecha hacia arriba para
U
, hacia abajo, hacia laD
izquierdaL
y 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
BABA
lugar de hacerloBA
, pero también pueden acortarlo si lo desean. Las respuestas futuras deberían usarseBA
por 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
UDLR
lugar 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
-10
con~9
).-1 byte gracias a CalculatorFeline (es posible usar un
BEL
byte literal ).donde lo que se
7
muestra 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,1
se ejecuta el no-op (reemplazo depass
brevedad); si se hacen coincidir entonces el mientras que los extremos del asa y laprint
sentencia se ejecuta, que escribe el texto deseado junto con un carácter ASCII de la campanilla ( "alarma"),0x07
que produce un sonido menos que se haya desactivado explícitamente (o el terminal no tiene altavoz !).fuente
-10
=~9
, que puede ahorrarle un byte.\n
cadenas 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 unmp3
archivo (ya que solo se admiten extensiones limitadasprocessing.sound.SoundFile
).Se
draw()
necesita la función para estar allí parakeyTyped
poder trabajar.La razón por la que estamos usando
keyTyped
es 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
. LakeyTyped
es 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 lives
y reproducimos el archivo de sonido. Y ladraw
funció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
.mp3
archivo 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
BA
lugar 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
-n
bandera.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, ela
comando pone en cola el texto+30 Lives
y el sonido de la campana (\a
) para que se imprima al final del ciclo actual (que, en este caso, es inmediato).fuente
BA
solo una vez.Mathematica, 50 bytes
Inicialmente,
x
es 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
Enter
se presiona oOK
se 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
Cancel
o sale del cuadro de diálogo,InputField
regresará$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
While
se 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.Readline
Pero 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
-ll
como opción al compilador de C en lugar de-main
como una opción para flexionar.C,
878581 bytesfuente
shortC, 52 bytes
Explicación:
Pruébalo en línea!
fuente
C, 114 bytes
fuente