Sabe, tivemos muitos desafios de "alfabeto" recentemente. ( um dois três quatro cinco .) Embora eu goste de um bom desafio, e esses desafios foram muito divertidos, acho que é hora de mudar de ritmo. Precisamos excluir esses desafios no futuro. Está na hora da automação !
Você encontrará alguns alfabetos para mim e para automação (e para a glória!) Os alfabetos são complicados e gostam de se disfarçar. [citation-needed] Você precisará levar em consideração os seguintes fatores:
- Alfabetos podem ser maiúsculos ou minúsculos (mas não ambos). Então, você precisa procurar
ABCDEFGHIJKLMNOPQRSTUVWXYZ
eabcdefghijklmnopqrstuvwxyz
, mas nãoAbCdeFGhIJkLmNOpQRsTuvwxyZ
. Ou seja, procure apenas alfabetos compostos inteiramente por um caso. - Alfabetos podem mudar de lugar. eles nem sempre podem começar com
A
, mas podem começar comG
ouU
. Então você terá que procurar coisas comoOPQRSTUVWXYZABCDEFGHIJKLMN
. - Os alfabetos nem sempre podem ser lidos adiante. Eles também podem ler para trás, para cima e para baixo. Por exemplo,
ZYXWVUTSRQPONMLKJIHGFEDCBA
também é um alfabeto válido.
Aqui está um exemplo de uma sequência que possui um alfabeto:
JIHGFEDCBAZYXWVUTSRQPONMLK
Este é um alfabeto deslocado para trás:
JIHGFEDCBAZYXWVUTSRQPONMLK
<--------|<---------------
Este também contém um alfabeto:
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
é um alfabeto voltado para baixo:
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
Seu desafio é escrever um programa, função etc. que, dada uma string, produza / retorne um valor verdadeiro se a string contiver pelo menos um alfabeto ou um valor falsey de outra forma. Este é um código de golfe , portanto o programa mais curto em bytes vence.
Casos de teste
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
Respostas:
Geléia ,
282322 bytes1 byte graças a Dennis.
Experimente online!
Toma uma matriz de seqüências de caracteres.
fonte
Queijo Cheddar, 148 bytes
Experimente online!
Não contencioso,
146132 bytesÉ exatamente o mesmo que acima, exceto que
map(...?1:0).sum
se tornouany(...)
.Bastante lento, mas funciona ¯ \ _ (ツ) _ / ¯.
any
função adicionada após a data de lançamento do desafio.A entrada não precisa ser preenchida com espaços em branco. Mas se uma entrada não funcionar, preencha-a com espaços em branco para criar um retângulo. A
turn
função é realmente exigente e não tenho certeza de quando funciona e quando não funciona.Explicação
Loops através de todos os ciclos possíveis do alfabeto. Em cada iteração, verifique se o ciclo atual do alfabeto existe na sequência; caso contrário, verifique se alguma das possíveis rotações da sequência possui o alfabeto.
Ungolfed
fonte
c?
significa isso ?c?
significa argumento opcional. basicamente o mesmo quec=nil
{}
emboraany(...)
é apenasmap(...?1:0).sum
05AB1E, 43 bytes
Explicação resumida
Obtenha diferentes variações de alfabeto (maiúsculas, sem maiúsculas, invertido, normal) e armazene no X.
Obtenha cada linha e coluna de entrada como uma lista de cadeias.
Verifique cada uma dessas strings se ela contém uma variação do alfabeto.
Soma e negação dupla, dando 1 para verdadeiro e 0 para falso.
Experimente online
fonte
Python, 182 bytes
Não parece muito "jogado", mas ...
Teoria de Operação:
Primeiro, crie um padrão regex combinando todos os alfabetos possíveis:
p=P.join(a[i:]+a[:i] for i in range(26))
cria uma sequência de todas as rotações de 'a' unidas a '|'. por exemplo "abc ... z | bcd ... za | ..."p+=P+p[::-1]
acrescenta uma versão invertida de si mesma.p+=P+p.upper()
anexa uma versão em maiúsculas.Em seguida, crie uma sequência longa combinando o original
s
e uma versãos
com as colunas transformadas em linhas:N.join(map(''.join,zip(*s.split(N))))
vira as linhas e colunas, para que 'a \ nb \ nc' se torne 'abc'return true se o padrão estiver na cadeia longa.
fonte
in
verifica se há substring.