Problem
Musisz napisać program, który po wpisaniu kodu Konami podczas uruchamiania wypisze ciąg „ +30 lives
” i wyda wybrany przez ciebie dźwięk z głośnika komputera.
Definicja
„Kod Konami” definiuje się w UUDDLRLRBA
następujący sposób, naciskając klawisz Enter.
Zasady
- Możesz użyć strzałki w górę
U
, w dółD
, w lewoL
i w prawoR
, pod warunkiem, że kod jest zgodny ze strzałkami lub literami. - Twój wkład może być zaakceptowany z kontrolera lub klawiatury, ale nie musi obsługiwać obu.
Istniejące odpowiedzi mogą nadal być używane
BABA
zamiastBA
, ale mogą również skrócić je, jeśli chcą. Przyszłe odpowiedzi powinny wykorzystywaćBA
spójność.Puste dane wejściowe nie muszą być obsługiwane.
Odpowiedzi:
05AB1E , 33 bajty (Fine przy pustym wejściu)
Wypróbuj online!
05AB1E ,
3026 bajtów ( przestaje działać przy pustym wejściu)-4 dzięki Adnanowi
Wypróbuj online!
Uwaga: Dźwięk dzwonka nie jest odtwarzany na TryItOnline, może zapytaj Dennisa, czy któryś z jego serwerów gdzieś pinguje, gdy go uruchomisz.
źródło
"+30 lives"
to“+30™‹“
:)JavaScript (ES6),
202200198 bajtówTestowane tylko w Chrome i Firefox. Używa
UDLR
raczej niż klawiszy strzałek. Upewnij się, że CapsLock jest wyłączony.źródło
Python 3,
5553 bajtów-1 bajt dzięki isaacg (stosowanie bitowe nie zastępuje
-10
się~9
).-1 bajt dzięki CalculatorFeline (możliwe jest użycie dosłownego
BEL
bajtu).gdzie
7
pokazany powyżej to bajt dosłowny0x07
(nie można go wydrukować w bloku kodu).Po naciśnięciu Enter
while
sprawdzany jest stan pętli. Jeśli ostatnie~9
= 10 znaków (najwyżej) nie zgadza się z kodem polecenia Contra, wówczas1
wykonywana jest operacja no-op (zamianapass
na zwięzłość); gdyby zrobić pasuje wtedy, gdy końce pętli iprint
wykonywana jest instrukcja, która pisze wymagane tekst wraz ze znaków ASCII Bell ( „Alarm”)0x07
, która produkuje dźwięk, chyba że zostało wyraźnie wyłączone (lub terminal ma głośnik !).źródło
-10
=~9
, co może zaoszczędzić bajt.\n
ciągów w golfach Python, dlaczego nie mieliby używać\x0a
?Galaretka,
33302927 bajtówOkazuje się, że append (
ṭ
) nie jest potrzebny, łańcuchy są automatyczniełączone razemdrukowane.Bez kompresji
Wypróbuj online
Jeśli usuniesz wszystko później
¿
, możesz zepsuć dane wejściowe i zobaczyć, że zwrócą się one tylko wtedy, gdy ciąg wejściowy jest poprawny.Dzięki @JonathanAllan za pomoc w ustaleniu kompresji ciągów :)
źródło
“+30 lives”
Skompresowany jest“¡}ʠƈ[ỵ»
(do wglądu tutaj jest post o tym, jest link w samouczku na wiki Jelly).7Ọ
po którym następuje niejawny wydruk niladu“¡}ʠƈ[ỵ»
, pojawiający się na standardowym odcinku , jakby to był konkatenacja. Jako wizytówkę możesz spróbować dodać 2-sekundowy sen pomiędzyɠ⁻“UUDDLRLRBABA”$¿ṛ7Ọ2“+30 lives”œS
.Przetwarzanie,
161157155 bajtówPlik audio należy zapisać jako
sketchName/data/a.mp3
. Uwaga: przetestowałem ten program tylko bez pliku audio, ponieważ jestem zbyt leniwy, aby pobraćmp3
plik (ponieważ obsługiwane są tylko ograniczone rozszerzeniaprocessing.sound.SoundFile
).Ta
draw()
funkcja musi być dostępna, abykeyTyped
do działania.Powodem, dla którego używamy jest
keyTyped
to, że Przetwarzanie nie ma STDIN, może jedynie nasłuchiwać naciśnięć klawiszy podczas uruchamiania szkicu.Wyjaśnienie
Wszystkie naciśnięcia klawiszy użytkownika są przechowywane jako znaki w ciągu znaków
k
.keyTyped
Jest wbudowana funkcja, która jest wywoływana zawsze, gdy użytkownik wpisze klucz. Jednocześnie sprawdzamy, czy ten ciąg kończy się na naciśnięciu klawisza. Następnie drukujemy+30 lives
i odtwarzamy plik dźwiękowy. Adraw
funkcja jest tam stale aktualizowaćkeyTyped
. Po wprowadzeniu kodu Konami nic więcej nie będzie generowane i nie będzie odtwarzany żaden dźwięk.źródło
.mp3
pliku nie ma tak naprawdę znaczenia, ponieważ bez względu na to, co to jest, Processing odtworzy go jako dźwięk> <>,
132696462 bajtów*> <> , 84 bajtówWypróbuj tutaj!
Jest to zależne od dzwonka (ascii
7
) hałasu na końcu (nie słyszanego przez tłumacza online).Dzięki @TealPelican za uratowanie kolejnych 15 bajtów!
Zapisano dwa bajty
BA
zamiastBABA
.źródło
C 119 -1 - 2 = 116 bajtów
Grał w golfa
Nie golfił
źródło
s/UUDDLRLR BABA/UUDDLRLRBABA
dla -1 bajtów, a strcmp będzie szukał poprawnego ciągu!Ułożone , 41 bajtów
Odczytuje dane wejściowe z klawiatury.
źródło
AutoHotkey, 63 bajty
Po uruchomieniu tego skryptu sprawdzi, czy kolejne 10 klawiszy to kod Konami, a jeśli tak, wyświetli się okno komunikatu „+30 żyć” i powinien odtworzyć sygnał dźwiękowy (nie mam teraz głośników do przetestowania ).
źródło
GNU sed,
3225 + 1 =3326 bajtów+1 bajt dla
-n
flagi.Wypróbuj online!
Wyjaśnienie
Za każdym naciśnięciem klawisza enter (
$
) program sprawdza, czy kodem było 10 poprzednich naciśnięć klawiszy. Jeśli tak,a
polecenie umieszcza w kolejce tekst+30 Lives
i dźwięk dzwonka (\a
), które zostaną wydrukowane na końcu bieżącego cyklu (co w tym przypadku następuje natychmiast).źródło
BA
tylko jeden raz.Mathematica, 50 bajtów
Początkowo
x
jest tylko symbolem, a zatem nie jest identyczny (=!=
) z symbolemUUDDLRLRBA
, więcx=Input[]
jest oceniany. Otworzy się okno dialogowe z kursorem już w polu wprowadzania, dzięki czemu użytkownik może od razu zacząć pisać na klawiaturze.Jeśli
Enter
zostanie naciśnięty lubOK
kliknięty bez wpisywania czegokolwiek,InputField[]
nastąpi powrótNull
, co nie jest identyczne zUUDDLRLRBA
, więc pętla będzie kontynuowana i otworzy się kolejne okno dialogowe.Jeśli użytkownik kliknie
Cancel
lub w inny sposób opuści okno dialogowe,InputField
nastąpi powrót$Canceled
, który również nie jest identyczny zUUDDLRLRBA
, więc pętla będzie kontynuowana.Użytkownik może wpisać w oknie dialogowym pożądanie swojego serca. Kiedy trafią
Enter
, ich dane wejściowe są interpretowane jako wyrażenie języka Wolfram (prawdopodobnie tylko pola). Jeśli to wyrażenie jest czymkolwiek innym niż symbolUUDDLRLRBA
, pętla będzie kontynuowana.„Musi zapętlać, dopóki nie zostanie wprowadzony kod Konami” jest trochę niejasne, ale wierzę, że to spełnia. Gdy
While
pętla zakończeniu .Beep[]
;"+30 lives"
źródło
UUDDLRLRB
? Gdzie jestA
?Petit Computer BASIC, 91 bajtów
Wreszcie rozwiązanie wykorzystujące dane wejściowe kontrolera!
Użyłem Petit Computer zamiast nowszej wersji (SmileBASIC), ponieważ ma on dostęp do przycisku Start i
BTRIG()
jest krótszy niżBUTTON()
.Zamieniłem ciąg danych na
x
„s”, powinien on zawierać znaki o kodach ascii 1,1,2,2,4,8,4,8,32,16Nudna wersja, 46 bajtów
źródło
PowerShell,
8986 bajtówEnter przesyła ciąg znaków do
Read-Host
, więc powinien .. działać?źródło
C # (nudna wersja), 80 bajtów
C # (Interesujący), 202 bajtów
ja że to działa, niestety testerzy online nie obsługują wejścia konsoli, dlatego będę musiał przejść testy, które przeprowadziłem
Można najprawdopodobniej grać w golfa ogromnie - nie jestem w tym świetny! :)
Nie golfowany:
źródło
Console.Readline
, ale myślałem, że to może być aganist duchu wyzwanie! Jeśli to w porządku, mogę to zrobić znacznie krócejConsole.ReadLine()
wersjęCud , 50 bajtów
Zamień
•
na znak kodu\x07
(znak kontrolny BEL). Pobiera dane wejściowe przez STDIN.źródło
flex, 37 + 5 = 42 bajty
Sam kod ma 37 bajtów, skompiluj go z opcją „-main”, która dodaje 5 bajtów. Oczywiście, musisz skompilować wynikowy plik C za pomocą swojego ulubionego kompilatora C, ale nie sądzę, że ten krok powinien się liczyć do liczby bajtów.
Mógłbym zaoszczędzić bajt, używając dosłownie znaku BEL zamiast
\a
, ale wolałbym móc odczytać własny kod.źródło
-ll
jako opcję kompilatora C, a nie-main
jako opcję flex.C,
878581 bajtówźródło
shortC, 52 bajty
Wyjaśnienie:
Wypróbuj online!
źródło
C, 114 bajtów
źródło