Знаешь, в последнее время у нас было много «алфавитных» испытаний. ( один два три четыре пять ). Хотя я люблю хороший вызов, и эти испытания были очень веселыми, я думаю, что пришло время для изменения темпа. Мы должны исключить такие проблемы в будущем. Время для автоматизации !
Вы найдете несколько алфавитов для меня и для автоматизации (и для славы!). Алфавиты хитры и любят маскироваться. [ Требуется цитата] Вам необходимо учитывать следующие факторы:
- Алфавиты могут быть прописными или строчными (но не оба). Итак, нужно искать
ABCDEFGHIJKLMNOPQRSTUVWXYZ
иabcdefghijklmnopqrstuvwxyz
, но неAbCdeFGhIJkLmNOpQRsTuvwxyZ
. То есть ищите только те алфавиты, которые состоят только из одного случая. - Алфавиты могут перемещаться. они не всегда могут начинаться с
A
, но вместо этого могут начинаться сG
илиU
. Так что вам придется искать такие вещи, какOPQRSTUVWXYZABCDEFGHIJKLMN
. - Алфавиты не всегда могут читать вперед. Они также могут читать назад, вверх и вниз. Например,
ZYXWVUTSRQPONMLKJIHGFEDCBA
это также правильный алфавит.
Вот пример строки с алфавитом:
JIHGFEDCBAZYXWVUTSRQPONMLK
Это смещенный назад алфавит:
JIHGFEDCBAZYXWVUTSRQPONMLK
<--------|<---------------
Это также содержит алфавит:
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
это алфавит, ориентированный вниз:
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
Ваша задача состоит в том, чтобы написать программу, функцию и т. Д., Которые при наличии строки выводят / возвращают истинное значение, если строка содержит хотя бы один алфавит, или значение false в противном случае. Это код-гольф , поэтому выигрывает самая короткая программа в байтах.
Контрольные примеры
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
Ответы:
Желе ,
282322 байта1 байт благодаря Денису.
Попробуйте онлайн!
Принимает массив строк.
источник
Чеддер, 148 байт
Попробуйте онлайн!
Не копируется,
146132 байтаЭто точно так же, как указано выше, за исключением
map(...?1:0).sum
сталany(...)
.Довольно медленно, но работает ¯ \ _ (ツ) _ / ¯. добавлена
any
функция после даты выпуска вызова.Входные данные не должны быть дополнены пробелами. Но если ввод не работает, заполните его пробелами, чтобы создать прямоугольник.
turn
Функция действительно привередливы , и я не уверен , когда он работает , и когда она необъяснение
Перебирает все возможные циклы алфавита. На каждой итерации проверяют, существует ли текущий цикл алфавита в строке, если нет, проверяют, имеет ли алфавит какой-либо из возможных поворотов строки.
Ungolfed
источник
c?
значит?c?
означает необязательный аргумент. в основном так же, какc=nil
{}
хотяany(...)
простоmap(...?1:0).sum
05AB1E, 43 байта
Объяснение вкратце
Получить различные варианты алфавита (заглавные буквы, без заглавных букв, обратный, обычный) и сохранить в X.
Получить каждую строку и столбец ввода в виде списка строк.
Проверьте каждую такую строку, если она содержит вариацию алфавита.
Сумма и двойное отрицание дают 1 для истинного и 0 для ложного.
Попробуйте онлайн
источник
Python, 182 байта
Не чувствует себя очень "в гольфе", но ...
Теория Операции:
Сначала создайте шаблон регулярного выражения, объединяющий все возможные алфавиты:
p=P.join(a[i:]+a[:i] for i in range(26))
строит строку всех вращений «а», соединенных с «|». например, "abc ... z | bcd ... za | ..."p+=P+p[::-1]
добавляет обратную версию себя.p+=P+p.upper()
добавляет заглавную версиюЗатем создайте длинную строку, объединяющую оригинал
s
и версиюs
со столбцами, превращенными в строки:N.join(map(''.join,zip(*s.split(N))))
переворачивает строки и столбцы, поэтому «a \ nb \ nc» становится «abc»верните true, если шаблон находится в длинной строке.
источник
in
проверяет наличие подстроки.