Nach der Eingabe eines Strings [Länge 1-20], der nur die Zeichen y für yes und n für no enthält, sollte Ihr Programm das Ergebnis (y oder n) ausgeben. Eingabebeispiel: yynynynny
würde y ausgeben.
Das Ergebnis wird durch folgende Kombination von y und n ermittelt:
y n und n o equals n o
y n und y n gleich y n
n o und n o gleich y n
Wenn die Zeichenfolge mehr als 2 Zeichen enthält (wahrscheinlich ...), würde die Berechnung gleich aussehen. Beispiele:
y n und y n und n o equals n o (weil das keine verschmilzt mit dem ersten ja bis Nr. dann gibt es keine und ja links und das gleiche passiert wieder)
n o und n o und n o equals n o (die ersten beiden Neins Zusammenführung ja, dann gibt es ja und nein links, die nicht auftauchen)
Beispiel Eingabe mit Ausgabe:
yynynynynyyn
= n
Tipp: Beachten Sie, dass die Reihenfolge der Zeichen, in der Ihr Programm ausgeführt wird, keine Rolle spielt. (zum Beispiel können Sie die Eingabe von hinten oder von hinten lesen, die Buchstaben mischen, sortieren, was auch immer. Was zählt, ist die richtige Ausgabe) Viel Spaß!
Gewinnkriterien: Dies ist Code-Golf , also gewinnt der kürzeste Code in Byte.
quelle
1
füry
und0
fürn
.["y", "n", "n"]
Antworten:
Holzkohle , 6 Bytes
Probieren Sie es online! Link ist eine ausführliche Version des Codes. Erläuterung:
quelle
Oktave ,
2927 BytesVielen Dank an @RickHithcock für den Hinweis auf einen Fehler, der jetzt korrigiert wurde. Außerdem 2 Bytes weniger dank @StewieGriffin!
Probieren Sie es online!
Erläuterung
Der ASCII-Codepunkt von
'y'
ist ungerade und der von'n'
ist gerade. Der Code1
zu jedem Zeichen in der Eingabezeichenfolge Gerade'y'
und'n'
Ungerade hinzu;1
gerade,2
wenn auch ungerade;'yn'
.quelle
JavaScript (ES6), 28 Byte
Übernimmt die Eingabe als Zeichenfolge.
Probieren Sie es online!
JavaScript (ES6), 30 Byte
Nimmt die Eingabe als Array von Zeichen.
Probieren Sie es online!
quelle
s=>'yn'[s.match(/n/g).length&1]
n
.Haskell ,
3328 BytesIndiziert die Anzahl von n in die unendliche Liste "ynynynyn ...". Vorheriger Ansatz (33 Bytes) war das Falten von Paaren verschiedener Elemente zu n, ansonsten zu y:
Probieren Sie es online!
quelle
Gelee , 7 Bytes
Probieren Sie es online!
ċ ount Anzahl von „n , í ndex in den String ⁾ny . (mit Modulo 2)
Probieren Sie es online!
{ Ċ ount Anzahl, nehmen Sie die H ead, dann ich ndex in} String ⁾ny .
Probieren Sie es online!
Ähnlich wie bei der obigen Oktavantwort. Berechnen O rd Wert, nehmen Sie die C omplement (für jeden ord Wert x berechnen 1-x ), S & mgr ; m, dann í ndex in Zeichenfolge ⁾ny .
quelle
APL (Dyalog Unicode) , 15 Byte
Probieren Sie es online!
Hinweis: TIO ist standardmäßig auf eingestellt
⎕IO = 1
. Wenn mit ausgeführt⎕IO←0
,APL (Dyalog Unicode) , 13 Bytes
Probieren Sie es online!
Dies ist die XNOR-Funktion (manchmal auch EQV genannt, insbesondere in alten BASICs).
Zersetzung / Analyse:
quelle
Pyth, 9 Bytes
Probieren Sie es hier aus
Erläuterung
quelle
dc , 39
Die Eingabezeichenfolge wird aus STDIN gelesen und sollte in der Form vorliegen
[yynynynynyyn]
.dc ist nicht für sein String-Handling bekannt, aber wir haben hier gerade genug, um dies zum Laufen zu bringen. Der Ansatz hier ist, das
n
s zu zählen und auszugeben,y
ob gerade odern
ungerade. Dies erfolgt durch Ausführen der Eingabezeichenfolge als Makro.dc
Gibt'y' (0171) unimplemented
Fehler für alley
s aus und versucht, Zeichenfolgen zu platzieren und sie für allen
s zu drucken . Als erstes stellen wir sicher, dass genügend leere Zeichenfolgen (Gesamtlänge der eingegebenen Zeichenfolgen)[]
auf dem Stapel vorhanden sind, die abgelegt werden sollen. Dann führen wir die Eingabezeichenfolge aus und sehen, wie viele[]
auf dem Stapel übrig sind. Die ursprüngliche Stringlänge wird davon abgezogen, um die (-ve) Gesamtzahl vonn
s zu erhalten. Der Rest ist arithmetisch für Mod 2 und die Ausgabe erfolgt direkt als ASCIIy
odern
.Probieren Sie es online!
quelle
Japt , 8 Bytes
Probieren Sie es online!
Erläuterung:
Japt verwendet Index-Wrapping. Wenn also etwas
Uèn
zurückgegeben wird2
, wird es zurückgegeben,y
wenn das Zeichen abgerufen wird"yn"
.quelle
Perl 6 , 21 Bytes
Versuch es
Erweitert:
quelle
Python 2 , 29 Bytes
Probieren Sie es online!
quelle
Java 8, 35 Bytes
Ein Entscheider für eine reguläre Sprache! Ich kann das machen.
Probieren Sie es online
quelle
J ,
109 BytesProbieren Sie es online!
quelle
{&'ny'@=/
Speichert ein Byte.R ,
4644 BytesProbieren Sie es online!
2 Bytes weniger dank Giuseppe und ngm. Port of the Octave Antwort von Luis Mendo.
quelle
sum(utf8ToInt(scan(,""))%%2)%%2
spart ein Byte.n
auch so müssen zuerstJapt, 9 Bytes
Oliver hat mich bis zur kürzesten Lösung geschlagen, also sind hier ein paar, die nur ein Byte länger sind.
Versuch es
Versuch es
Erklärungen
quelle
/// 24 Bytes
Probieren Sie es online!
Ich glaube, dies ist das kürzestmögliche Programm, da eine Ein-Zeichen-Ersetzung entweder nutzlos ist (wenn Sie etwas an seiner Stelle einfügen) oder verhindert, dass es eine Ausgabe ist (wenn Sie nichts einfügen). Dies sollte jedoch minimal sein, da das Programm die beiden Zeichenfälle behandeln muss.
Entfernt zuerst alle
y
s von einemn
. Ersetzt dann das Doppelten
s durchy
s und nutzt die LTR-Substitution. In diesem Stadium gibt es vieley
s gefolgt von höchstens einemn
; wir deduplizieren diey
s und wenn es einen
Verwendung gibt, wischen sie die letztey
auf.quelle
MATL , 8 Bytes
Probieren Sie es online!
2 Bytes gespart dank Luis Mendo! Ich habe zuvor den Befehl explicit modulus verwendet, um den Index in den Bereich zu bringen
1,2
.Erläuterung
Dies nutzt die Tatsache, dass MATL eine modulare Indizierung hat, was bedeutet, dass das 1., 3., 5. ... Element des Strings
ny
dasselbe ist (n
). Sind also das 2., 4., 6. ... Element des Strings (y
).quelle
'yn'3)
gibty
...? Nun das ist cleveres Design Luis =) Danke für die Tipps! :)Python 2 , 26 Bytes
Probieren Sie es online!
quelle
Retina , 11 Bytes
Probieren Sie es online!
quelle
Gelee ,
87 BytesProbieren Sie es online!
quelle
Ẉ
kann anstelle von verwendet werdenL€
.05AB1E , 8 Bytes
Probieren Sie es online!
quelle
Java (OpenJDK 8) , 143 Byte
Probieren Sie es online!
Und wenn wir den Input als Liste nehmen:
Java (OpenJDK 8) , 118 Byte
Probieren Sie es online!
Erläuterung:
(Eingabe als String)
quelle
char[]u
(-1 Byte) entfernen ; undif(u.length==1)
kannif(u.length<2)
(-1 Byte) sein. Es gibt wahrscheinlich mehr zum Golfen, aber ich habe momentan nicht wirklich die Zeit. :)Ruby , 24 Bytes
Probieren Sie es online!
Ein Lambda, der eine Schnur nimmt und eine Schnur zurückgibt.
quelle
Cubix ,
2420 BytesEs ist schon eine Weile her, seit ich mit Cubix gespielt habe, also ...
Probieren Sie es online!
Ziemlich naive Implementierung, die die Zeichenfolge durchläuft und den Charakter mit dem aktuellen Ergebnis vergleicht.
Interaktive Demo
Dies wird wie folgt auf den Würfel gewickelt
W
ip nach links verschiebeni
Erhalte den Anfangsbuchstabeni?
Hole Charakter und teste auf EOI (-1), auch Start der Schleife;o@
TOS entfernen, TOS als Zeichen ausgeben und beenden .-W!
subtrahieren, ip nach links verschieben, auf wahrheit prüfen'n
schieben Sie das Zeichen n zu TOS|!'y
reflektiert, teste und schiebe das Zeichen y zu TOSv'.;w
umleiten um den Würfel schieben und entfernen a. Charakter und rechts zurück in die Schleife verschiebenquelle
Scala, 50 Bytes
quelle
Befunge-98 , 13 Bytes
Probieren Sie es online!
Invertiert grundsätzlich eine 0 für jeden
n
Eingang und noch einmal für einen guten Takt und gibt danny
für1
undn
für aus0
quelle
Sauber ,
2623 BytesProbieren Sie es online!
quelle
foldr1\a b|a==b='y'='n'
. (ImJavaScript,
3937 BytesEinfache Reduktionsfunktion nach Aufteilen der Eingabezeichenfolge.
quelle
s
befindet. Dies ist hier keine gültige Eingabemethode . Sie können Ihre Antwort stattdessen in eine Lambda-Funktion umwandeln und die Eingabe als Argument verwenden, indems=>
Sie der Antwort 42 Byte voranstellen .s.split('')
mit[...s]
für 37 Bytes:s=>[...s].reduce((x,y)=>x==y?'y':'n')
C (gcc) ,
52–50BytesDanke an @Neil für die Vorschläge.
Ich habe mir die Lösung des Zählens von
n
s geliehen , aber anstatt eine Zählung durchzuführen, wechsle ich einfach zwischen dem Anfangszustand und seinem Inversen auf einn
.Probieren Sie es online!
quelle
*a&1?0:23
Speichert ein Byte undreturn i
speichert ein anderes.i;f(char*a){for(i=*a;*++a;i^=*a&1?:23);a=i;}
Kotlin , 32 Bytes
Probieren Sie es online!
quelle