O problema
Você deve escrever um programa que, quando o Código Konami for digitado durante o tempo de execução, imprima a string " +30 lives
" e emita um ruído de sua escolha no alto-falante do computador.
Definição
O "Código Konami" é definido como UUDDLRLRBA
seguido pressionando a tecla Enter.
As regras
- Você pode optar por usar a seta para
U
cima, para baixo, paraD
esquerdaL
e direita paraR
, desde que seu código seja consistente com setas ou letras. - Sua entrada pode ser aceita de um controlador ou teclado, mas não precisa suportar os dois.
As respostas existentes podem continuar a ser usadas em
BABA
vez deBA
, mas também podem ser reduzidas, se assim o desejarem. Todas as respostas futuras devem ser usadasBA
para obter consistência.Entrada vazia não precisa ser suportada.
Respostas:
05AB1E , 33 bytes (multa na entrada vazia)
Experimente online!
05AB1E ,
3026 bytes (falha na entrada vazia)-4 graças a Adnan
Experimente online!
Exoneração de responsabilidade: O som de Bell não é reproduzido no TryItOnline, talvez pergunte a Dennis se um de seus servidores em algum lugar está tocando quando você o executa.
fonte
"+30 lives"
is“+30™‹“
:) #JavaScript (ES6),
202200198 bytesTestado apenas no Chrome e Firefox. Usa
UDLR
em vez das teclas de seta. Verifique se o CapsLock está desativado.fonte
Python 3,
5553 bytes-1 byte graças à utilização isaacg (bit a bit para não substituir
-10
com~9
).-1 byte graças ao CalculatorFeline (é possível usar um
BEL
byte literal ).onde o
7
mostrado acima é um byte literal0x07
(um não imprimível em um bloco de código).Uma vez pressionado enter, a
while
condição do loop é verificada. Se os últimos~9
= 10 caracteres (no máximo) não corresponderem ao código de comando Contra, o no-op1
será executado (substituindopass
por brevidade); se fazer corresponder, em seguida, o tempo loop termina e aprint
instrução é executada, que grava o texto necessário junto com um carácter sino ASCII ( "alarme"),0x07
que produz um som menos que tenha sido explicitamente desativado (ou o terminal tem nenhum alto-falante !).fonte
-10
=~9
, que pode economizar um byte.\n
cordas em campos de golfe em Python, por que não usariam\x0a
?Geléia,
33302927 bytesAcontece que o append (
ṭ
) não é necessário, as strings são automaticamenteunidas eimpressas.Descomprimido
Experimente online
Se você remover tudo depois
¿
, poderá mexer na entrada e ver que ela só retornará quando a sequência de entrada estiver correta.Obrigado @ JonathanAllan por me ajudar a descobrir a compactação de cadeias :)
fonte
“+30 lives”
compactado é“¡}ʠƈ[ỵ»
(para referência futura, aqui está um post sobre o assunto, ele está vinculado no tutorial no wiki do Jelly).7Ọ
seguido por uma impressão implícita do nilad“¡}ʠƈ[ỵ»
, aparecendo na stdout como se fosse concatenação. Como uma vitrine, você pode tentar adicionar um sono de 2 segundos entre comɠ⁻“UUDDLRLRBABA”$¿ṛ7Ọ2“+30 lives”œS
.Processando,
161157155 bytesO arquivo de áudio deve ser salvo como
sketchName/data/a.mp3
. Nota: Eu testei este programa apenas sem o arquivo de áudio porque tenho preguiça de fazer o download de ummp3
arquivo (uma vez que apenas extensões limitadas são suportadasprocessing.sound.SoundFile
).A
draw()
função é necessária para estar lá, a fim dekeyTyped
trabalhar.O motivo pelo qual estamos usando
keyTyped
é que o Processing não possui STDIN, ele só pode ouvir as teclas pressionadas pelo esboço sendo executado.Explicação
Todos os pressionamentos de tecla do usuário são armazenados como caracteres dentro da String
k
. AkeyTyped
é uma função incorporada que é chamada sempre que o usuário digita uma tecla. Simultaneamente, estamos verificando se essa String termina com as teclas digitadas. Em seguida, imprimimos+30 lives
e reproduzimos o arquivo de som. E adraw
função existe para atualizar continuamentekeyTyped
. Depois que o código Konami for inserido, nada mais será emitido e nenhum áudio será reproduzido.fonte
.mp3
arquivo realmente não importa, pois, não importa o que seja, o Processing o reproduzirá como um som> <>,
132696462 bytes*> <> , 84 bytesExperimente aqui!
Isso depende do toque da campainha (ascii
7
) para o ruído no final (não ouvido no intérprete on-line).Agradecemos ao @TealPelican por salvar outros 15 bytes!
Salva dois bytes procurando em
BA
vez deBABA
.fonte
C 119 -1 - 2 = 116 bytes
Golfe
Ungolfed
fonte
s/UUDDLRLR BABA/UUDDLRLRBABA
para -1 byte e o strcmp procurará a string correta!Stacked, 41 bytes
Reads input from keyboard.
fonte
AutoHotkey, 63 bytes
Depois de executar este script, ele verificará se as próximas 10 teclas são o código da Konami e, se for, mostrará uma caixa de mensagem dizendo "+30 vidas" e deve emitir um sinal sonoro (não tenho alto-falantes agora para testar )
fonte
GNU sed,
3225 + 1 =3326 bytes+1 byte para
-n
sinalizador.Experimente online!
Explicação
Every time enter is pressed (
$
), the program checks if the preceding 10 keystrokes were the code. If they were, thea
command queues the text+30 Lives
and the bell sound (\a
) to be printed at the end of the current cycle (which, in this case, is immediately).fonte
BA
just once.Mathematica, 50 bytes
Initially,
x
is just a symbol and is thus not identical (=!=
) to the symbolUUDDLRLRBA
, sox=Input[]
is evaluated. This will open a dialog box with the cursor already in the input field, so the user can immediately start typing on the keyboard.If
Enter
is pressed orOK
is clicked without typing anything, thenInputField[]
will returnNull
, which is not identical toUUDDLRLRBA
, so the loop continues and another dialog box will be opened.If the user clicks
Cancel
or otherwise exits the dialog box, thenInputField
will return$Canceled
, which is also not identical toUUDDLRLRBA
, so the loop will continue.The user can type in the dialog box to their heart's desire. When they hit
Enter
, their input is interpreted as a Wolfram language expression (possibly just boxes). If that expression is anything other than the symbolUUDDLRLRBA
, the loop will continue."Must loop until the Konami code is entered" is a little vague, but I believe this satisfies it. Once the
While
loop is completed,Beep[]
;"+30 lives"
.fonte
UUDDLRLRB
? Where'sA
?Petit Computer BASIC, 91 bytes
Finally a solution that actually uses controller input!
I used Petit Computer rather than the newer version (SmileBASIC) because it has access to the Start button, and
BTRIG()
is shorter thanBUTTON()
.I've replaced the data string with
x
's, it should contain characters with ascii codes 1,1,2,2,4,8,4,8,32,16Boring version, 46 bytes
fonte
Powershell,
8986 Bytesenter submits the string to the
Read-Host
, so it should.. work?fonte
C# (the boring version), 80 bytes
C# (The interesting one), 202 bytes
I think this works, sadly online testers do not support the existence of a console input, as such I will have to go on the tests I have done
Can most likely be golfed hugely - I'm not great at this! :)
Ungolfed:
fonte
Console.Readline
but I thought that might be aganist the spirit of the challenge! If that's fine I can make this much shorterConsole.ReadLine()
versionWonder, 50 bytes
Replace
•
with the character of code\x07
(the BEL control char). Takes input through STDIN.fonte
flex, 37 + 5 = 42 bytes
The code itself is 37 bytes, compile it with the "-main" option which adds 5 bytes. Naturally, you have to compile the resulting C file with your favorite C compiler, but I don't think that step should count toward the byte count.
I could save a byte by using a literal BEL character instead of
\a
, but I'd rather be able to read my own code.fonte
-ll
as an option to the C compiler rather than-main
as an option to flex.C,
878581 bytesfonte
shortC, 52 bytes
Explanation:
Try it online!
fonte
C, 114 bytes
fonte