Po wprowadzeniu ciągu [długość 1-20], zawierającego tylko znaki y dla tak i n dla nie, twój program powinien wypisać wynik (y lub n). Przykładowe dane wejściowe: yynynynny
wyprowadziłoby y.
Wynik określa się, łącząc y i n w następujący sposób:
y es i n o równa się n o
y es i y es równa się y es
n o i n o równa się y es
Jeśli ciąg zawiera więcej niż 2 znaki (prawdopodobnie ...), obliczenia wyglądałyby tak samo. Przykłady:
y es i y es i n o równa się n (ponieważ „nie” łączy się z pierwszym „tak” i „nie”, nie ma już „tak” i „tak” i to samo dzieje się ponownie)
n o i n o i n o jest równe n o (pierwsze dwa nie łączą się w tak, wtedy są tak i nie ma, które pojawiają się na nie)
Przykładowe dane wejściowe z danymi wyjściowymi:
yynynynynyyn
= n
Wskazówka: pamiętaj, że kolejność znaków, w których program działa, nie ma znaczenia. (na przykład możesz odczytać dane z tyłu lub z tyłu, wymieszać litery, posortować, cokolwiek. Liczy się poprawna wydajność). Baw się dobrze!
Kryteria wygranej: to jest golf golfowy , więc wygrywa najkrótszy kod w bajtach.
źródło
1
zay
i0
zan
.["y", "n", "n"]
Odpowiedzi:
Węgiel , 6 bajtów
Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:
źródło
Oktawa ,
2927 bajtówDzięki @RickHithcock za wskazanie błędu, teraz poprawionego. Również 2 bajty wyłączone dzięki @StewieGriffin!
Wypróbuj online!
Wyjaśnienie
Punkt kodowy ASCII
'y'
jest nieparzysty, a ten'n'
jest parzysty. Kod1
do każdego znaku w ciągu wejściowym, aby'y'
parzyste i'n'
nieparzyste;1
parzystego,2
jeśli nieparzystego;'yn'
.źródło
JavaScript (ES6), 28 bajtów
Pobiera dane wejściowe jako ciąg.
Wypróbuj online!
JavaScript (ES6), 30 bajtów
Pobiera dane wejściowe jako tablicę znaków.
Wypróbuj online!
źródło
s=>'yn'[s.match(/n/g).length&1]
Pn
.Haskell ,
3328 bajtówIndeksuje liczbę n do nieskończonej listy „ynynynyn…”. Poprzednie podejście (33 bajty) składało pary różnych elementów do n, w przeciwnym razie y:
Wypróbuj online!
źródło
Galaretka , 7 bajtów
Wypróbuj online!
c numer ount z „n , í ndex do strun ⁾ny . (z modułem 2)
Wypróbuj online!
{ C liczby ount o, podejmują h EAD, następnie í ndex w} ciąg ⁾ny .
Wypróbuj online!
Podobne do powyższej odpowiedzi Octave. Oblicz O rd wartość mieć C omplement (dla każdej wartości ord x oblicz 1-x ), Ś um, a ı ndex do łańcucha ⁾ny .
źródło
APL (Dyalog Unicode) , 15 bajtów
Wypróbuj online!
Uwaga: Domyślnie TIO to
⎕IO = 1
. Jeśli uruchomić z⎕IO←0
,APL (Dyalog Unicode) , 13 bajtów
Wypróbuj online!
Jest to funkcja XNOR (czasami nazywana EQV, szczególnie w starych BASIC-ach).
Rozkład / analiza:
źródło
Pyth, 9 bajtów
Wypróbuj tutaj
Wyjaśnienie
źródło
dc , 39
Łańcuch wejściowy jest odczytywany ze STDIN i powinien być w formie
[yynynynynyyn]
.dc nie jest znane z obsługi ciągów, ale mamy tu tylko tyle, żeby to zadziałało. Podejściem tutaj jest policzenie
n
s i wyjście,y
jeśli parzyste lubn
nieparzyste. Odbywa się to poprzez wykonanie ciągu wejściowego jako makra.dc
wyświetli'y' (0171) unimplemented
błędy dla wszystkichy
s i spróbuje wyskoczyć łańcuchy i wydrukować je dla wszystkichn
s. Najpierw upewniamy się, że mamy dużo (całkowitą długość łańcucha wejściowego) pustych łańcuchów[]
na stosie do pop. Następnie wykonujemy ciąg wejściowy i sprawdzamy, ile[]
pozostało na stosie. Odejmuje się oryginalną długość łańcucha, aby uzyskać (-ve) całkowitą liczbęn
s. Reszta jest arytmetyczna, aby wykonać mod 2 i mieć wyjście wyprowadzone jako ASCIIy
lubn
.Wypróbuj online!
źródło
Japt , 8 bajtów
Wypróbuj online!
Wyjaśnienie:
Japt używa owijania indeksu, więc jeśli
Uèn
zwróci2
, zwróci sięy
po otrzymaniu char"yn"
.źródło
Perl 6 , 21 bajtów
Spróbuj
Rozszerzony:
źródło
Python 2 , 29 bajtów
Wypróbuj online!
źródło
Java 8, 35 bajtów
Decyduje się na zwykły język! Mogę to zrobić.
Wypróbuj online
źródło
J ,
109 bajtówWypróbuj online!
źródło
{&'ny'@=/
zapisuje bajt.R ,
4644 bajtówWypróbuj online!
Zmniejsz 2 bajty dzięki Giuseppe i ngm. Odpowiedź Port of the Octave autorstwa Luisa Mendo.
źródło
sum(utf8ToInt(scan(,""))%%2)%%2
oszczędza jeden bajt.n
musi dodać +1.Japt, 9 bajtów
Oliver pobił mnie do najkrótszego rozwiązania, więc oto kilka, które są tylko bajt dłużej.
Spróbuj
Spróbuj
Objaśnienia
źródło
/// , 24 bajty
Wypróbuj online!
Uważam, że jest to najkrótszy możliwy program ///, ponieważ podstawienie jednoznakowe albo jest bezużyteczne (jeśli wstawisz coś na swoim miejscu), albo uniemożliwia, że będzie to wyjście (jeśli nic nie wstawisz). Ponieważ jednak program musi obsługiwać dwa przypadki znaków, powinno to być minimalne.
Najpierw usuwa wszystkie
y
prawa zn
. Następnie zamienia podwójnen
s nay
s, wykorzystując podstawienie LTR. Na tym etapie jest ich wiele,y
a najwyżej jedenn
; deduplikujemyy
s, a jeśli istnieje,n
użyj go do zetknięcia ostatniegoy
.źródło
MATL , 8 bajtów
Wypróbuj online!
Zaoszczędzono 2 bajty dzięki Luisowi Mendo! Wcześniej użyłem jawnego polecenia modułu, aby wprowadzić indeks do zakresu
1,2
.Wyjaśnienie
Wykorzystuje to fakt, że MATL ma modułowe indeksowanie, co oznacza, że 1, 3, 5 ... element łańcucha
ny
są takie same (n
). Podobnie jak 2., 4., 6.… element string (y
).źródło
'yn'3)
dajey
...? Teraz to sprytny projekt Luis =) Dzięki za wskazówki! :)Python 2 , 26 bajtów
Wypróbuj online!
źródło
Siatkówka , 11 bajtów
Wypróbuj online!
źródło
Galaretka ,
87 bajtówWypróbuj online!
źródło
Ẉ
można użyć zamiastL€
.05AB1E , 8 bajtów
Wypróbuj online!
źródło
Java (OpenJDK 8) , 143 bajty
Wypróbuj online!
A jeśli weźmiemy dane jako listę:
Java (OpenJDK 8) , 118 bajtów
Wypróbuj online!
Wyjaśnienie:
(wprowadź jako ciąg)
źródło
char[]u
(-1 bajt); iif(u.length==1)
może byćif(u.length<2)
(-1 bajt). Golf jest prawdopodobnie czymś więcej, ale tak naprawdę nie mam teraz czasu. :)Ruby , 24 bajty
Wypróbuj online!
Lambda bierze łańcuch i zwraca łańcuch.
źródło
Cubix ,
2420 bajtówMinęło trochę czasu, odkąd grałem z Cubix, więc ...
Wypróbuj online!
Dość naiwna implementacja, która przechodzi przez łańcuch i porównuje znak z bieżącym wynikiem.
Interaktywna prezentacja
To rozpakowuje się na kostkę w następujący sposób
W
przesuń ip w lewoi
uzyskać początkowy znaki?
zdobądź znak i przetestuj EOI (-1), także początek pętli;o@
usunie TOS, wypisze TOS jako znak i wyjdzie.-W!
odejmij, przesuń ip w lewo, sprawdź prawdę'n
pchnięcie znaku n do TOS|!'y
odbija, przetestuj i pchnij znak y do TOSv'.;w
przekieruj wokół kostki wypychając i usuwając a. i wracając do pętliźródło
Scala, 50 bajtów
źródło
Befunge-98 , 13 bajtów
Wypróbuj online!
Zasadniczo odwraca wartość 0 dla każdego
n
z danych wejściowych i jeszcze raz dla dobrej miary, a następnie wyprowadzay
dla1
in
dla0
źródło
Czysty ,
2623 bajtówWypróbuj online!
źródło
foldr1\a b|a==b='y'='n'
. (Nawiasem mówiąc, niestety zwykle import jest częścią kodu bajtowego.)JavaScript,
3937 bajtówProsta funkcja redukcji po podzieleniu ciągu wejściowego.
źródło
s
, która nie jest tutaj poprawną metodą wprowadzania . Zamiast tego możesz uczynić swoją odpowiedź funkcją lambda, przyjmując dane wejściowe jako argument, przygotowującs=>
do odpowiedzi na 42 bajty.s.split('')
z[...s]
do 37 bajtów:s=>[...s].reduce((x,y)=>x==y?'y':'n')
C (gcc) ,
5250 bajtówDzięki @Neil za sugestie.
Pożyczyłem rozwiązanie zliczania
n
s, ale zamiast utrzymywać zliczanie, po prostu przerzucam pomiędzy stanem początkowym a odwrotnym nan
.Wypróbuj online!
źródło
*a&1?0:23
zapisuje bajt ireturn i
zapisuje inny.i;f(char*a){for(i=*a;*++a;i^=*a&1?:23);a=i;}
Kotlin , 32 bajty
Wypróbuj online!
źródło