Vous savez, nous avons eu beaucoup de défis "alphabet" récemment. ( un deux trois quatre cinq .) Bien que j'aime un bon défi, et ces défis étaient très amusants, je pense qu'il est temps de changer de rythme. Nous devons exclure de tels défis à l'avenir. Il est temps d' automatiser !
Vous allez trouver des alphabets pour moi, et pour l'automatisation (et pour la gloire!) Les alphabets sont difficiles et aiment se déguiser. [citation nécessaire] Vous devrez tenir compte des facteurs suivants:
- Les alphabets peuvent être en majuscules ou en minuscules (mais pas les deux). Donc, vous devez rechercher
ABCDEFGHIJKLMNOPQRSTUVWXYZ
etabcdefghijklmnopqrstuvwxyz
, mais pasAbCdeFGhIJkLmNOpQRsTuvwxyZ
. Autrement dit, ne recherchez que les alphabets composés entièrement d'un cas. - Les alphabets peuvent se déplacer. ils peuvent ne pas toujours commencer par
A
, mais peuvent plutôt commencer parG
ouU
. Vous devrez donc chercher des choses commeOPQRSTUVWXYZABCDEFGHIJKLMN
. - Les alphabets ne lisent pas toujours vers l'avant. Ils peuvent également lire en arrière, en haut et en bas. Par exemple,
ZYXWVUTSRQPONMLKJIHGFEDCBA
est également un alphabet valide.
Voici un exemple d'une chaîne qui a un alphabet:
JIHGFEDCBAZYXWVUTSRQPONMLK
Il s'agit d'un alphabet décalé orienté vers l'arrière:
JIHGFEDCBAZYXWVUTSRQPONMLK
<--------|<---------------
Il contient également un 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
c'est un alphabet orienté vers le bas:
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
Votre défi est d'écrire un programme, une fonction, etc. qui, étant donné une chaîne, génère / renvoie une valeur véridique si la chaîne contient au moins un alphabet, ou une valeur falsey sinon. Il s'agit d'un code-golf , donc le programme le plus court en octets l'emporte.
Cas de test
Truthy
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
Réponses:
Gelée ,
282322 octets1 octet merci à Dennis.
Essayez-le en ligne!
Prend un tableau de chaînes.
la source
Cheddar, 148 octets
Essayez-le en ligne!
Non copmeting,
146132 octetsC'est exactement la même chose que ci-dessus, sauf qu'il
map(...?1:0).sum
est devenuany(...)
.Plutôt lent mais ça marche ¯ \ _ (ツ) _ / ¯.
any
fonction ajoutée après la date de sortie du challenge.L'entrée ne besoin d'être complétée d'espaces. Mais si une entrée ne fonctionne pas, remplissez-la avec des espaces pour créer un rectangle. le
turn
fonction est vraiment capricieuse et je ne sais pas quand ça marche et quand ça ne marche pasExplication
Boucle à travers tous les cycles d'alphabet possibles. À chaque itération, vérifiez si le cycle actuel de l'alphabet existe dans la chaîne, sinon, vérifiez si l'une des rotations possibles de la chaîne a l'alphabet.
Non golfé
la source
c?
dire?c?
signifie argument optionnel. essentiellement le même quec=nil
{}
queany(...)
est justemap(...?1:0).sum
05AB1E, 43 octets
Explication en bref
Obtenez différentes variantes d'alphabet (majuscules, sans majuscules, inversées, normales) et stockez-les dans X.
Obtenez chaque ligne et colonne d'entrée sous forme de liste de chaînes.
Vérifiez chacune de ces chaînes si elle contient une variation de l'alphabet.
La somme et la double négation donnent 1 pour vrai et 0 pour faux.
Essayez-le en ligne
la source
Python, 182 octets
Ne se sent pas très «golfé», mais ...
Théorie de fonctionnement:
Tout d'abord, créez un modèle d'expression régulière combinant tous les alphabets possibles:
p=P.join(a[i:]+a[:i] for i in range(26))
construit une chaîne de toutes les rotations de 'a' joint à '|'. par exemple "abc ... z | bcd ... za | ..."p+=P+p[::-1]
ajoute une version inversée de lui-même.p+=P+p.upper()
ajoute une version majuscule.Créez ensuite une longue chaîne combinant l'original
s
et une version des
avec les colonnes transformées en lignes:N.join(map(''.join,zip(*s.split(N))))
retourne les lignes et les colonnes, donc 'a \ nb \ nc' devient 'abc'retourne vrai si le motif est dans la longue chaîne.
la source
in
vérifie la sous-chaîne.