Die Inspiration für die Challenge war die, die ich irgendwo gesehen habe:
Das Wort "Nonne" ist nur der Buchstabe n , der ein Rad dreht
Ihre Herausforderung besteht darin, eine Schnur zu nehmen und festzustellen, ob es sich um den ersten Buchstaben handelt, der ein Rad dreht.
Regeln
Eine Zeichenfolge ist ein Buchstabe, der ein Rad dreht, wenn:
- Der erste Buchstabe ist der gleiche wie der letzte Buchstabe. (Der Brief kann nicht auf dem Kopf landen.)
- Die Zeichenfolge wechselt zwischen Wagenradbuchstaben für jedes Zeichen.
Die Wagenradbuchstaben sind n
und u
, m
und w
, b
und q
. Beachten Sie, dass n
und w
zusammen keine Wagenradbuchstaben sind und auch nicht w
und b
.
- Sie nehmen eine Zeichenfolge mit einer unserer Standardeingabemethoden.
- Sie geben einen Wahrheitswert aus, wenn die Zeichenfolge ein Wagenradbuchstabe ist, und einen falschen Wert, wenn dies nicht der Fall ist. Die Ausgabe kann mit beliebigen Standardausgabemethoden erfolgen.
Zusätzliche Regeln:
- Es dürfen nur Kleinbuchstaben
n
/u
/m
/w
/b
/ verwendetq
werden. - Sie können davon ausgehen, dass die Eingabe niemals leer ist.
- Eine einstellige Zeichenfolge ist kein gültiges Rad.
Testfälle
Input -> Output
nun -> truthy
nunun -> truthy
nunununu -> falsy
wmw -> truthy
wmwun -> falsy
bqbqbqbqbqb -> truthy
v^v^v -> falsy
AVAVA -> falsy
OOO -> falsy
ununununu -> truthy
nunwmwnun -> falsy
nun unun -> falsy
nunwmw -> falsy
nnuunnuunnuu -> falsy
nwnwnwnwn -> falsy
m -> falsy
nunuuunun -> falsy
Gewinner
Wie beim Code-Golf gewinnt der kürzeste Code (in jeder Sprache)!
b
Räder inq
, nicht wahr?d
undp
sind auch Radkumpels. Der Schlüssel ist, dass sie sich drehen, nicht drehen.uwuwuwuwuwu
bqb
aber nichtpdp
?dpd
,pdp
und so nicht arbeiten, ich glaube , Sie sie in den Testfällen mit einer falsy Antwort haben sollten.Antworten:
Jelly , 23 Bytes
Das hat mehr Arbeit gekostet, als man denkt!
Ein monadischer Link, der eine Liste von Charakteren
1
aufnimmt und (wahrheitsgemäß) oder0
(falsch) zurückgibt.Probieren Sie es online! oder sehen Sie sich eine Testsuite an .
Wie?
Sucht den Index jedes Zeichens der Eingabe in der 1-indizierten Zeichenliste
nmbuwq
. Diese Zeichenfolge ist so angeordnet, dass die Indizes von Paaren drei voneinander entfernt sind, da die inkrementelle Differenz der Indizes für gültige Wagenräder Wiederholungen von einem von[-3,3]
oder sind[3,-3]
.Wenn ein Element nicht durch den "Index von" Atom in einer Liste gefunden wird,
i
gibt es zurück0
, die nicht gefundene Zeichen mit koppeln würdeb
, Eingabe wiebxbxb
wahr. Daher werden0
s10
vor der Gültigkeitsprüfung durch einen Wert ersetzt, der mehr als drei von allen anderen Werten entfernt ist.quelle
sed 4.2.2 , 30 + 1
-r
=4331 Bytes12 Byte dank @Neil durch Verkürzung der ersten Zeile eingespart
Probieren Sie es online!
Löscht die Eingabe, wenn sie falsch ist, andernfalls wird die Eingabe nicht bearbeitet.
Erläuterung
Mit dem
-r
Flag müssen wir\(
und nicht\)
zum Erfassen von Gruppen verwenden und dies spart Bytes.quelle
sed
Zauberer ...sed
sieht für mich nach Zauberei aus. : Punu
undnun
enthalten,nu
und die zweite Zeile stellt sicher, dass die restlichen Buchstaben mit diesen beiden übereinstimmen.JavaScript (ES6),
827877 Byte1 Byte mit zwei falschen Werten gespeichert, wie von ThePirateBay und MD XF vorgeschlagen.
Testfälle
Code-Snippet anzeigen
quelle
&&
anstatt&
?&
würde entwederfalse
oder produzieren0
.)&
; Ich habe (im Chat) manchmal angegeben, dass inkonsistente falsche Werte zulässig sind.Python 3 , 111 Bytes
-2 Bytes dank Mr. Xcoder.
Probieren Sie es online!
quelle
nunununu
.Python 2 , 63 Bytes
Probieren Sie es online!
quelle
"nu un nm mn bp pb".split()
4 Bytes einsparen und Leerzeichen entfernen. 75 Bytes:lambda s:any(s==c[-1]+c*max(len(s)/2,1)for c in"nu un nm mn bp pb".split())
s[0]
anstattc[-1]
.unmnu
und zurückunmwnu
. Wirklich gibt es falsch positive Ergebnisse zurück, wenn(s==s[::-1])+len(set(s))
4 ist, was leicht zu erzwingen ist. Selbst mit nur 4 verschiedenen Zeichen wird True zurückgegeben.Python 3 , 71 Bytes
Probieren Sie es online!
-1 dank @HyperNeutrino und -13 dank @ovs
Wenn sich herausstellt, dass der obige Testfall fehlgeschlagen ist, gibt es eine Alternative:
Probieren Sie es online!
Erläuterung
''.join(sorted(list({*n[1::2]}).union({*n[::2]}))))
- Ermittelt die Zeichen bei ungeraden Indizes und die Zeichen bei geraden Indizes, de-dupliziert sie und sortiert die durch ihre Vereinigung gebildete Liste.in'nu,mw,bq'
- Überprüft, ob es sich um gültige Cart-Letter-Kombinationen handelt.n[0]==n[-1]
- Überprüft, ob das erste Zeichen mit dem letzten übereinstimmt.quelle
uwuwuwuwuwu
Ergebnisse in truenuuun -> True
. Das ist nicht richtig.JavaScript (ES6), 40 Byte
Überprüft, ob die mit dem zweiten Zeichen der Eingabezeichenfolge verknüpfte Eingabezeichenfolge eine sich wiederholende Zeichenfolge desselben Wagenradzeichenpaars ist.
Tests:
quelle
Clojure, 156 Bytes
Das war täuschend schwierig! Ich musste es in 3 Unterprobleme aufteilen:
Ich habe auf keinen Fall gewonnen, aber das war eine gute Morgenübung! Vollständige Erklärung unten:
quelle
Haskell,
8078 BytesProbieren Sie es online!
Wie es funktioniert:
quelle
Python 2 , 45 Bytes
Probieren Sie es online!
Die Leerzeichen in der Zeichenfolge sind
DEL
Zeichen.quelle
|u|
wird als Wagenrad interpretiert.DEL
Zeichen eingegeben , um klar zu sein.s[:3]in'bqbqnunuwmwm'
Retina , 24 Bytes
Gibt 1 für wahr, 0 für falsch aus.
Antwort von Port of Cows.
Probieren Sie es online!
quelle
nunwmwnun
(wenn es falsch sein sollte), weshalb ich die\1*
in meinem sed Antwort hatte.G`nu|mw|bp
alle echten Zeichenfolgen eines dieser Buchstabenpaare enthalten, und die zweite Zeile stellt sicher, dass der gesamte Rest der Zeichenfolge auch diese Buchstaben enthält.ununununu
Schmutz , 28 Bytes
Probieren Sie es online! Drucke
1
für truthy Eingänge und0
für falsy diejenigen.Erläuterung
Die Grime-Syntax ähnelt regulären Ausdrücken, und ein Grime-Programm gibt ein Muster an, das mit einem Rechteck von Zeichen übereinstimmen kann oder nicht.
Einige Features von Grime, die dazu beigetragen haben, dies zu verkürzen:
""
ändert sich jedoch: Syntaxelemente werden maskiert, Literale jedoch nicht. Ohne die Anführungszeichen wäre der Teil, der die Zeichenpaare auflistet(\n\u|\b\p|\m\w)oT
.-
), wirken sich auf das Ergebnis aus:..-#!"…"oT
ist äquivalent zu(..-"…"oT)#!
.v
niedriger die Priorität der darauf folgenden Syntaxelemente. Ein Einzelner&
hat eine höhere Priorität als-
, aberv&
eine niedrigere. Ebenso..+
wird analysiert als.(.+)
, ist aber..v+
äquivalent zu(..)+
.quelle
Python 2 , 69 Bytes
Probieren Sie es online!
quelle
Pyth , 27 Bytes
Test Suite.
Ausgaben
1
für Wahr undFalse
oder0
für Falsch, wie das OP im Chat erlaubt.quelle
Gelee , 27 Bytes
Probieren Sie es online!
Wie es funktioniert
quelle
Python 2 , 103 Bytes
Probieren Sie es online!
quelle
Japt , 47 Bytes
Probieren Sie es online!
quelle
Python 3 , 88 Bytes
len(x)%2
: Eine gerade Zeichenfolge darf nicht mit dem ersten Zeichen endenx[:2] in
: Überprüfen Sie, ob eines der 6 gültigen Anfangspaare vorhanden istlen(set())
: Länge der Zeichensätze bei 0,2,4 ... und 1,3,5 ... ermittelnGibt zurück,
True
wenn die Liste der Bewertungen gleich [1,1,1,1] ist, sonstFalse
.Probieren Sie es online!
quelle
Perl 5 , 55 + 1 (-p) = 56 Bytes
Probieren Sie es online!
Druckt die "verkehrte" Version des ersten Zeichens für wahr, nichts für falsch.
quelle
PHP, 59 + 1 Bytes
Als Rohr mit laufen lassen
-F
.Teilweise Regex-Lösung, 101 + 1 Byte:
Leere Ausgabe für falsch. Als Rohr mit laufen lassen
-nR
.quelle
Java 8, 57 Bytes
Probieren Sie es hier aus.
Einfache Regex für alle sechs Fälle. Beachten Sie, dass Java
String#matches
automatisch mit der gesamten Zeichenfolge übereinstimmt, sodass dies nicht erforderlich ist^...$
.quelle
MATL , 25 Bytes
Die Ausgabe ist ein nicht leerer numerischer Spaltenvektor, der wahr ist, wenn alle seine Einträge ungleich Null sind, und ansonsten falsch ist . Probieren Sie es online!
Um alle Testfälle zu überprüfen ,
if
wird in der Fußzeile eine Verzweigung hinzugefügt, die einen Wahrheitswert durch die Zeichenfolge'truthy'
oder einen falschen Wert durch die Zeichenfolge ersetzt'falsy'
, und anschließend die Zeichenfolge angezeigt.Erläuterung
quelle
Python 2 , 74 Bytes
Probieren Sie es online! Dieses Problem ist überraschend konkurrenzfähig.
quelle
Clojure, 115 Bytes
Erstellen Sie aus jedem Buchstabenpaar einen regulären Ausdruck und prüfen Sie, ob die Eingabe mit einer übereinstimmt. Viele elegantere Möglichkeiten, all diese Teile zu erledigen, aber sie sind alle ausführlicher. So ist das Leben mit Clojure Golf.
quelle
Perl 5, 68 + 1 = 69 Bytes
Laufen Sie mit
-n
.Erläuterung:
quelle
TXR Lisp , 50 Bytes
Lauf:
f^$
ist ein Kombinator, der ein Regex-Objekt nimmt und eine Funktion zurückgibt, die verankert mit diesem Regex übereinstimmt. (Ein reguläres Objekt ist ein funktionsaufrufbares Objekt, das eine Zeichenfolge aufnimmt und nach sich selbst sucht.)quelle
Python 3 , 66 Bytes
Probieren Sie es online!
quelle
TXR :
7874 BytesFühren Sie von der Systemaufforderung aus. Die Nummer in der Eingabeaufforderung ist der Beendigungsstatus: 0 = Erfolg, 1 = Fehler:
Erläuterung:
@{x 2}
: stimmen mit zwei Zeichen überein, binde anx
Variable.@(rep :gap 0)@x@(end)
: wiederholte Übereinstimmung ohne übersprungene Lücken: null oder mehr Vorkommen desx
zuvor übereinstimmenden Digraphen.@y
: Rest der Zeile stimmt überein, erfasst iny
.@(bind(x y)(foo bar))
: bindenx
anfoo
, y anbar
. Dax
undy
sind sie bereits gebunden, müssen sie übereinstimmenfoo
undbar
sonst liegt ein Fehler vor.foo
ist#"nu un mw wm bq qb"
ein wortlistenliteraler syntaktischer Zucker für die Lisp-Liste("nu" "un" ... "qb")
. Einebind
Übereinstimmung zwischen einer Variablen und einer Liste bedeutet, dass die Variable mit einem Element übereinstimmen muss.bar
ist@[x 0..1]
: die Ein-Zeichen-Teilzeichenfolge vonx
Anfang an. Diebind
Übereinstimmung zwischeny
und bewirkt, dass der letzte Buchstabe der Zeile mit dem ersten übereinstimmt.quelle
C ++, 268 Bytes
quelle
n
= 110,u
= 117,m
= 109,w
= 119,q
= 113. Die Verwendung von ASCII-Werten oder nicht ist für Zeichen größer alsc
(99) nicht von BedeutungJavaScript (ES6), 63 Byte
Rückgabe
1
oder0
.Erläuterung
Alle Wagenradsaiten haben einen oder mehrere Werte von bq , wm oder un . Wir testen das mit:
Wenn Sie alle Instanzen der ersten beiden Buchstaben einer Wagenradzeichenfolge durch nichts ersetzen, bleibt der erste Buchstabe der Zeichenfolge übrig. Wir testen das mit:
Code-Snippet anzeigen
quelle