Weißt du, wir hatten in letzter Zeit viele "Alphabet" -Herausforderungen. ( eins zwei drei vier fünf .) Obwohl ich eine gute Herausforderung liebe und diese Herausforderungen sehr lustig waren, denke ich, ist es Zeit für eine Abwechslung. Wir müssen solche Herausforderungen in Zukunft ausschließen. Es ist Zeit für Automatisierung !
Du wirst ein paar Alphabete für mich und für die Automatisierung (und für den Ruhm!) Finden. Alphabete sind knifflig und verkleiden sich gerne. [citation benötigte] Sie werden für die folgenden Faktoren Rechnung benötigen:
- Alphabete können in Groß- oder Kleinbuchstaben geschrieben werden (aber nicht in beiden Fällen). Also musst du suchen
ABCDEFGHIJKLMNOPQRSTUVWXYZ
undabcdefghijklmnopqrstuvwxyz
, aber nichtAbCdeFGhIJkLmNOpQRsTuvwxyZ
. Das heißt, suchen Sie nur nach Alphabeten, die nur aus einem Fall bestehen. - Alphabete können sich verschieben. Sie beginnen möglicherweise nicht immer mit
A
, sondern mitG
oderU
. Also musst du nach Dingen wie suchenOPQRSTUVWXYZABCDEFGHIJKLMN
. - Alphabete werden möglicherweise nicht immer vorwärts gelesen. Sie können auch rückwärts, aufwärts und abwärts lesen. ZB
ZYXWVUTSRQPONMLKJIHGFEDCBA
ist auch ein gültiges Alphabet.
Hier ist ein Beispiel für eine Zeichenfolge mit einem Alphabet:
JIHGFEDCBAZYXWVUTSRQPONMLK
Dies ist ein rückwärtsgerichtetes, verschobenes Alphabet:
JIHGFEDCBAZYXWVUTSRQPONMLK
<--------|<---------------
Dies auch enthält ein Alphabet:
F
G
H
I
J
K
L
M
N
O
P
Q
R
S
T
U
V
W
X
Y
Z
A
B
C
D
E
Es ist ein nach unten gerichtetes Alphabet:
F |
G |
H |
I |
J |
K |
L |
M |
N |
O |
P |
Q |
R |
S |
T |
U |
V |
W |
X |
Y |
Z V
A===
B |
C |
D |
E V
Ihre Herausforderung besteht darin, ein Programm, eine Funktion usw. zu schreiben, das / die bei gegebener Zeichenfolge einen Wahrheitswert ausgibt / zurückgibt, wenn die Zeichenfolge mindestens ein Alphabet enthält, oder ansonsten einen Falsey-Wert. Dies ist ein Code-Golf , also gewinnt das kürzeste Programm in Bytes.
Testfälle
Wahrheit
ABCDEFGHIJKLMNOPQRSTUVWXYZ
abcdefghijklmnopqrstuvwxyz
ABCDEFGHIJKLMNOPQRSTUVWXYabcdefghijklmnopqrstuvwxyz
ZABCDEFGHIJKLMNOPQRSTUVWXYghijklmnopqrstuvwxyzabcdef
ZBCDEFGHIJghijklmnopqrstuvwxyzabcdef
AAAAAAAA
BBBBBBBB
CCCCCCCC
DDDDDDDD
EEEEEEEE
FFFFFFFF
GGGGGGGG
HHHHHHHH
IIIIIIII
JJJJJJJJ
KKKKKKKK
LLLLLLLL
MMMMMMMM
NNNNNNNN
OOOOOOOO
PPPPPPPP
QQQQQQQQ
RRRRRRRR
SSSSSSSS
TTTTTTTT
UUUUUUUU
VVVVVVVV
WWWWWWWW
XXXXXXXX
YYYYYYYY
ZZZZZZZZ
J54
Igeh
H
G
Fzx6
E
Dv
Cvzxc
Bs
Adf
Z
@Yascvf
Xsf
W
Vfas
Uw
Te
~S
R
Qasdfasdf
P
O
N
M
LMNOPQR
K
Falsey
Hello, World!
KLMNOPQRSTUVWXYZABCDEF
K ZYXW
L V
M U
N T
O S
P R
Q
A
BCDEFGHIJKLMNOPQRSTUVWXYZ
ABCDEFGHIJKLmnopqrstuvwxyz
Antworten:
Jelly ,
282322 Bytes1 Byte danke an Dennis.
Probieren Sie es online!
Nimmt eine Reihe von Zeichenfolgen.
quelle
Cheddar, 148 Bytes
Probieren Sie es online!
Nicht-Copmeting,
146132 BytesDies ist genau das gleiche wie oben, außer es
map(...?1:0).sum
wurdeany(...)
.Ziemlich langsam, aber es funktioniert ¯ \ _ (ツ) _ / ¯.
any
Funktion nach dem Veröffentlichungsdatum der Challenge hinzugefügt .Die Eingabe muss nicht mit Leerzeichen aufgefüllt werden. Wenn eine Eingabe jedoch nicht funktioniert, füllen Sie sie mit Leerzeichen auf, um ein Rechteck zu erstellen. Die
turn
Funktion ist wirklich knifflig und ich bin mir nicht sicher, wann sie funktioniert und wann nichtErläuterung
Durchläuft alle möglichen Alphabetzyklen. Prüfen Sie bei jeder Iteration, ob der aktuelle Zyklus des Alphabets in der Zeichenfolge vorhanden ist. Ist dies nicht der Fall, prüfen Sie, ob eine der möglichen Rotationen der Zeichenfolge das Alphabet aufweist.
Ungolfed
quelle
c?
das?c?
bedeutet optionales Argument. Im Grunde das gleiche wiec=nil
{}
wennany(...)
is justmap(...?1:0).sum
05AB1E, 43 Bytes
Erklärung kurz
Holen Sie sich verschiedene Variationen des Alphabets (Großbuchstaben, ohne Großbuchstaben, umgekehrt, normal) und speichern Sie in X.
Holen Sie sich jede Zeile und Spalte der Eingabe als Liste von Zeichenfolgen.
Überprüfen Sie jede solche Zeichenfolge, wenn sie eine Variation des Alphabets enthält.
Summiere und negiere doppelt und gib 1 für wahr und 0 für falsch.
Probieren Sie es online aus
quelle
Python, 182 Bytes
Fühlt sich nicht sehr "golfen", aber ...
Theorie der Arbeitsweise:
Erstellen Sie zunächst ein Regex-Muster, in dem alle möglichen Alphabete kombiniert sind:
p=P.join(a[i:]+a[:i] for i in range(26))
Erstellt eine Folge aller Rotationen von 'a', die mit '|' verknüpft sind. zB "abc ... z | bcd ... za | ..."p+=P+p[::-1]
fügt eine umgekehrte Version von sich selbst an.p+=P+p.upper()
Hängt eine Großbuchstabenversion an.Erstellen Sie dann eine lange Zeichenfolge, die das Original
s
und eine Version von kombiniert,s
wobei die Spalten in Zeilen umgewandelt werden:N.join(map(''.join,zip(*s.split(N))))
Kehrt die Zeilen und Spalten um, sodass aus 'a \ nb \ nc' 'abc' wird.Gibt true zurück, wenn sich das Muster in der langen Zeichenfolge befindet.
quelle
in
Prüft speziell auf Teilzeichenfolgen.