Moje dwoje dzieci lubi bawić się następującą zabawką:
Kolorowe obszary z kształtami w środku można dotknąć, a żółw zaświeci obszar i odtworzy dźwięk lub wypowie nazwę koloru lub kształt w środku. Środkowy przycisk zmienia tryb. Jest jeden tryb, w którym obszary odtwarzają różne nuty po dotknięciu, z akcentem: jeśli dziecko dotknie trzech kolejnych obszarów zgodnie z ruchem wskazówek zegara, odtwarzana jest specjalna melodia 1. Jeśli trzy kolejne dotknięte obszary zostaną umieszczone przeciwnie do ruchu wskazówek zegara, odtwarzana jest specjalna melodia 2.
Wyzwanie
Symulujmy wewnętrzną logikę zabawki. Biorąc pod uwagę ciąg z 3 naciśnięciami dziecka, zwróć dwie wyraźne, spójne wartości, jeśli trzy naciśnięcia dotyczą kolejnych obszarów (zgodnie z ruchem wskazówek zegara lub przeciwnie do ruchu wskazówek zegara) i trzecią wyraźną wartość, jeśli nie są.
Detale
- Obszary wejściowe będą nazwane znakami, każdy może mieć ich kolor:
ROYGB
czerwony, pomarańczowy, żółty, zielony i niebieski; lub ich kształt:HSRTC
dla serca, kwadratu, gwiazdy (R
), trójkąta i koła. Wielkość liter nie ma znaczenia, możesz wybrać pracę z danymi wejściowymi i wyjściowymi tylko wielkimi lub małymi literami. - Program otrzyma ciąg (lub tablicę znaków lub cokolwiek równoważnego) z trzema naciśnięciami. Przykłady (za pomocą kolorów):
RBO
,GYO
,BBR
,YRG
,YGB
,ORB
... - Program wyświetli trzy różne spójne wartości reprezentujące trzy możliwe wyniki: pierwszą wartość, jeśli kombinacja nie wyzwala specjalnej melodii, drugą wartość, jeśli kombinacja uruchomi specjalną melodię zgodnie z ruchem wskazówek zegara, i trzecią wartość, jeśli kombinacja wyzwoli specjalna melodia przeciwna do ruchu wskazówek zegara. Przykład:
0
brak specjalnej kombinacji,1
melodia uruchamiana przez kombinację zgodną z ruchem wskazówek zegara i-1
melodia uruchamiana przez kombinację przeciwną do ruchu wskazówek zegara. - Nie musisz się martwić obsługą niewłaściwych danych wejściowych.
Przypadki testowe
Input Output // Input based on colors
--------------
RBO 0 // No special combination
GYO -1 // Counterclockwise melody triggered
BBR 0 // No special combination
YRG 0 // No special combination
YGB 1 // Clockwise melody triggered
ORB -1 // Counterclockwise melody triggered
OOO 0 // No special combination
BRO 1 // Clockwise melody triggered
To jest golf golfowy , więc wygrywa najkrótszy kod dla każdego języka!
źródło
[0,0]
,[1,0]
,[0,1]
dozwolony jako wyjście? Widzę, że robi to odpowiedź Mathematica, i zaoszczędziłoby 3 bajty w odpowiedzi 05AB1E.Odpowiedzi:
Java 8,
483933 bajtów-6 bajtów dzięki @RickHitchcock , więc pamiętaj, aby go zagłosować !
Pobiera kolor wielkich liter jako ciąg wejściowy. Wyjścia
-1
dla none,7
dla wskazówek zegara i15
dla wskazówek zegara.Wypróbuj online.
Wyjaśnienie:
Stara 39 bajtów odpowiedź:
Pobiera kolor wielkich liter jako ciąg wejściowy. Wyjścia
9362
dla none,0
dla wskazówek zegara i1
dla wskazówek zegara.Wypróbuj online.
Wyjaśnienie:
źródło
10922
(dzielenie przez liczby całkowite/6
) lub8191
(dzielenie przez liczby całkowite/8
), ale wybieram,/7
ponieważ jest to indeks przestrzeni w ciągu znaków. :)JavaScript (ES6), 41 bajtów
Pobiera inicjały kolorów jako dane wejściowe. Zwraca
2
za brak,true
w prawo lubfalse
w lewo.Wypróbuj online!
źródło
s=>('ROYGBRO_ORBGYOR'.search(s)+8)/8|0
Python 2 , 36 bajtów
-1
- Brak0
- Zgodnie z ruchem wskazówek zegara1
- Przeciwnie do ruchu wskazówek zegaraWypróbuj online!
źródło
Excel, 29 bajtów
Kolory wielkich liter jako dane wejściowe.
Zwraca
#VALUE!
brak wzorca,TRUE
zgodnie z ruchem wskazówek zegara,FALSE
przeciwnie do ruchu wskazówek zegara.Można owinąć
IFERROR( ,0)
dla,+11 bytes
aby obsłużyć wyjątek i zamiast tego zwrócić „0” dla przypadków bez wzorca.źródło
05AB1E ,
1511 bajtówZaoszczędzono 4 bajty dzięki Kevinowi Cruijssenowi i Magic Octopus Urn .
Używa kształtów.
Wyjście
[0, 0]
dla nikogo ,[1, 0]
do ruchu wskazówek zegara , a[0, 1]
na lewoWypróbuj online! lub jako pakiet testowy
Wyjaśnienie
źródło
.•1´₃éC•Â‚εXå}¥
co powoduje[0]
,[1]
, lub[-1]
, więc +1 ode mnie. Btw, myślę, że (nie jestem pewien) można zapisać trzy bajty usuwając ostatnie trzy, wyprowadzanie[0, 0]
,[1, 0]
oraz[0, 1]
jako odrębne wartości. Widzę, że odpowiedź Mathematica robi to samo. Poprosi OP o weryfikację.‚.•ÌöJη•så
ma 11 bajtów, jeśli[1,0], [0,1] and [0,0]
są uważane za unikalne (chyba że brakuje mi czegoś oczywistego tutaj, dodanieƶO
na końcu tego 11-bajtowego to wciąż 13 dla tej samej odpowiedzi 0, 1, 2, którą masz teraz). Przypadki testowe . Przypadki testowe 2 . Odwrócenie zamówienia eliminuje potrzebę pętli.JavaScript (ES6), 32 bajty
Zwraca -1, jeśli nie ma kombinacji, 15, jeśli przeciwnie do ruchu wskazówek zegara, 7, jeśli zgodnie z ruchem wskazówek zegara.
Pokaż fragment kodu
źródło
Wolfram Language (Mathematica) ,
4236 bajtówWypróbuj online!
Zlicza, ile razy wejście pojawia się zarówno w, jak
"ROYGBRO"
i"ORBGYOR"
. Zwraca{1,0}
dla wskazówek zegara,{0,1}
dla wskazówek zegara i{0,0}
bez specjalnej kombinacji.Kosztem tylko jednego bajtu możemy uzyskać dane wyjściowe
0
za nic,1
zgodnie z ruchem wskazówek zegara i2
przeciwnie do ruchu wskazówek zegara za pomocą"ROYGBRO.ORBGYORBGYOR"~StringCount~#&
.źródło
kod maszynowy x86,
3936 bajtówMontaż:
Wypróbuj online!
Dane wyjściowe są
23
w stanie „brak”,7
zgodnie z ruchem wskazówek zegara i15
przeciwnie do ruchu wskazówek zegara. Na podstawie odpowiedzi @RickHitchcock.Zapisano 3 bajty, używając instrukcji porównywania ciągów SSE zamiast libc.
źródło
strstr
zawsze będzie adresem 32-bitowym (4 bajty). Kod maszynowy w moim poście jest niepowiązany.Perl 5
-p
, 30 bajtówWypróbuj online!
źródło
APL (Dyalog),
2218 bajtów-4 bajty dzięki @ngn
Wykonuje ciąg inicjałów kolorów. Wyjście 0 dla braku specjalnego wzorca, -1 dla przeciwnego do ruchu wskazówek zegara, 1 dla zgodnego z ruchem wskazówek zegara.
Wypróbuj online!
źródło
Python 2 ,
4543 bajtówWypróbuj online!
Z pomysłami i poważnym podziękowaniem dla @DeadPossum
-2 dzięki dzięki @JoKing. Teraz wyprowadza -1 = przeciwnie do ruchu wskazówek zegara, 0 = brak, 1 = zgodnie z ruchem wskazówek zegara.
Mój oryginalny wysiłek jest poniżej dla celów historycznych.
Python 2 ,
5251 bajtówWypróbuj online!
0 = brak, 1 = przeciwnie do ruchu wskazówek zegara, 2 = zgodnie z ruchem wskazówek zegara
źródło
Python 2 ,
3536 bajtów+1 - z jakiegoś powodu myślałem, że wszystkie przyciski będą odrębne> _ <
Opracowany niezależnie od tego, co właśnie widziałem (a teraz głosowałem) Dead Possum
Wypróbuj online!
źródło
Stax ,
1413 bajtówUruchom i debuguj
Dane wyjściowe to
źródło
Pip , 19 bajtów
Wyjścia
10
dla zgodnego z ruchem wskazówek zegara,01
dla przeciwnego do ruchu wskazówek zegara,00
dla żadnego. Wypróbuj online!Wyjaśnienie
źródło
J , 21 bajtów
Wypróbuj online!
Jak to działa
Osiąga maksymalne ponowne użycie funkcji.
źródło
Galaretka , 12 bajtów
Wypróbuj online!
-4 dzięki Jonathanowi Allanowi .
Zgodnie z ruchem wskazówek zegara:
[1, 0]
Przeciwnie do ruchu wskazówek zegara:
[0, 1]
Inne:
[0, 0]
źródło
R , 38 bajtów
Wypróbuj online!
Zwroty:
integer(0)
2
1
źródło
Węgiel drzewny , 18 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
Common Lisp , 68 bajtów
Wypróbuj online!
źródło
Czysty , 63 bajty
Wypróbuj online!
[True, True]
bez specjalnych dźwięków,[True, False]
w kierunku przeciwnym do ruchu wskazówek zegara,[False, True]
w kierunku zgodnym z ruchem wskazówek zegara.źródło
Japt,
1714 bajtówPobiera kolory jako dane wejściowe, małymi literami. Zwraca
0
dla wskazówek zegara,1
dla wskazówek zegara lub-1
jeśli nie ma kombinacji.Spróbuj
Wyjaśnienie
źródło
Rubin ,
5336 bajtówWypróbuj online!
Dane wejściowe: trzycyfrowa liczba całkowita, gdzie cyfry oznaczają kolory:
Wyjście: 0 dla ruchu wskazówek zegara, 1 dla ruchu wskazówek zegara, w
nil
przeciwnym razie.źródło
C (gcc) , 55 bajtów
Zwraca 0 dla braku, -1 dla CCW i 1 dla CW.
Wypróbuj online!
źródło