Kau tahu, kami punya banyak tantangan "alfabet" baru-baru ini. ( satu dua tiga empat lima .) Sementara saya suka tantangan yang bagus, dan tantangan itu sangat menyenangkan, saya pikir sudah waktunya untuk perubahan kecepatan. Kita perlu mengesampingkan tantangan seperti itu di masa depan. Sudah waktunya untuk otomatisasi !
Anda akan menemukan beberapa huruf untuk saya, dan untuk otomatisasi (dan untuk kemuliaan!) Huruf itu rumit dan suka menyamarkan diri mereka sendiri. [butuh rujukan] Anda harus memperhitungkan faktor-faktor berikut:
- Huruf dapat berupa huruf besar atau kecil (tetapi tidak keduanya). Jadi, Anda perlu mencari
ABCDEFGHIJKLMNOPQRSTUVWXYZ
danabcdefghijklmnopqrstuvwxyz
, tetapi tidakAbCdeFGhIJkLmNOpQRsTuvwxyZ
. Artinya, hanya mencari huruf yang seluruhnya terdiri dari satu case. - Huruf dapat bergeser. mereka mungkin tidak selalu mulai dengan
A
, tetapi sebaliknya mungkin mulai denganG
atauU
. Jadi, Anda harus mencari hal-hal sepertiOPQRSTUVWXYZABCDEFGHIJKLMN
. - Huruf mungkin tidak selalu terbaca ke depan. Mereka juga dapat membaca mundur, naik, dan turun. Misalnya,
ZYXWVUTSRQPONMLKJIHGFEDCBA
juga merupakan alfabet yang valid.
Berikut ini contoh string yang memiliki alfabet:
JIHGFEDCBAZYXWVUTSRQPONMLK
Ini adalah alfabet bergeser ke belakang yang berorientasi:
JIHGFEDCBAZYXWVUTSRQPONMLK
<--------|<---------------
Ini juga mengandung alfabet:
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
ini adalah alfabet yang berorientasi ke bawah:
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
Tantangan Anda adalah menulis sebuah program, fungsi, dll. Yang, jika diberi string, mengeluarkan / mengembalikan nilai kebenaran jika string tersebut mengandung setidaknya satu alfabet, atau nilai falsey sebaliknya. Ini adalah sebuah kode-golf , sehingga program terpendek dalam byte menang.
Uji kasus
Sejujurnya
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
Jawaban:
Jelly ,
282322 byteTerima kasih 1 byte untuk Dennis.
Cobalah online!
Mengambil array string.
sumber
Cheddar, 148 byte
Cobalah online!
Non-copmeting,
146132 byteIni sama persis seperti di atas kecuali
map(...?1:0).sum
telah menjadiany(...)
.Agak lambat tetapi bekerja ¯ \ _ (ツ) _ / ¯. ditambahkan
any
fungsi setelah tanggal rilis tantangan.Input tidak perlu diisi dengan spasi putih. Tetapi jika input tidak berfungsi, pad dengan spasi putih untuk membuat persegi panjang. Itu
turn
Fungsi benar-benar rewel dan saya tidak yakin ketika bekerja dan ketika itu tidakPenjelasan
Putar semua siklus alfabet yang mungkin. Pada setiap iterasi periksa apakah siklus alfabet saat ini ada dalam string, jika tidak, periksa apakah ada kemungkinan rotasi string memiliki alfabet.
Tidak disatukan
sumber
c?
artinyac?
berarti argumen opsional. pada dasarnya sama denganc=nil
{}
meskipunany(...)
hanyamap(...?1:0).sum
05AB1E, 43 byte
Penjelasan singkatnya
Dapatkan variasi alfabet yang berbeda (huruf besar, huruf besar, terbalik, normal) dan simpan dalam X.
Dapatkan setiap baris dan kolom input sebagai daftar string.
Periksa setiap string seperti itu jika berisi variasi alfabet.
Sum dan double negate, beri 1 untuk true dan 0 untuk false.
Cobalah online
sumber
Python, 182 byte
Tidak terasa sangat 'golf', tapi ...
Teori Operasi:
Pertama, buat pola regex yang menggabungkan semua huruf yang mungkin:
p=P.join(a[i:]+a[:i] for i in range(26))
membangun string dari semua rotasi 'a' bergabung dengan '|'. mis. "abc ... z | bcd ... za | ..."p+=P+p[::-1]
menambahkan versi terbalik itu sendiri.p+=P+p.upper()
menambahkan versi huruf besar.Kemudian buat string panjang yang menggabungkan yang asli
s
dan versis
dengan kolom berubah menjadi baris:N.join(map(''.join,zip(*s.split(N))))
membalik baris dan kolom, sehingga 'a \ nb \ nc' menjadi 'abc'return true jika polanya ada di string panjang.
sumber
in
memeriksa substring.