pengantar
Di Android Studio dan IDE lain ada pelengkapan kode untuk membantu penyisipan kode yang efisien (terutama ketika nama-nama kelas atau metode sangat verbose), seperti yang ada pada gambar di bawah ini.
Ada beberapa logika berbeda yang digunakan antara IDE untuk menentukan kelas, metode, dan variabel apa yang disarankan, tetapi sebaliknya umum: mengetikkan huruf awal dari setiap kata, dan pengidentifikasi yang cocok dengan huruf-huruf awal tersebut akan disarankan.
Tantangan
Dalam tantangan ini, tulis sebuah program atau fungsi yang menerima dua string, yaitu input
dan identifier
, tentukan apakah identifier
cocok input
.
Kami membagi identifier
kata-kata di mana:
- huruf kecil diikuti oleh huruf besar (
"SplitHere" -> "Split", "Here"
), - huruf besar diikuti oleh huruf besar dan kecil (
"SPLITHere" -> "SPLIT", "Here"
), atau - ada angka atau garis bawah
_
("SPLIT_HERE" -> "SPLIT", "HERE"
).
Jika ini masih tidak cukup jelas, di sini adalah regex mewakili kondisi perpecahan: (?<=[a-z])(?=[A-Z])|(?<=[A-Z])(?=[A-Z][a-z])|[_0-9]
. Berikut beberapa contoh:
theWord_Example
, Di mana 3 kata (the
,Word
,Example
) dapat ditemukan.THEWORD2EXAMPLE
, di mana hanya 2 kata (THEWORD
,EXAMPLE
) dapat ditemukan (karenaTHEWORD
merupakan huruf besar dan begitu jugaEXAMPLE
).THEWordEXAMPLE3
, Di mana 3 kata (THE
,Word
,Example
) dapat ditemukan (Word
dianggap kata terpisah di sini).THEWORDEXAMPLEFOUR
, di mana hanya 1 kata (THEWORDEXAMPLEFOUR
) dapat ditemukan (seluruh huruf besar).
Untuk tujuan ini di sini kami menggunakan versi yang disederhanakan. Pada kenyataannya, logikanya jauh lebih kompleks. Dalam versi ini hanya ada dua aturan:
Jika
input
hanya terdiri dari huruf kecil, makaidentifier
cocok denganinput
hanya jika ada pemisahaninput
menjadi substring, bahwa untuk setiap substring ada kata dalamidentifier
awal dengan substring itu, dalam urutan yang tepat.Input contoh:
sbo
Kasus truthy: , , (UPDATE)
SQLiteBindOrColumnIndexOutOfRangeException
SparseBooleanArray
StringIndexOutOfBoundException
Kasus palsu:
SeekBar
(hilango
), ( bukan di awal kata)StatusBarNotification
o
Jika
input
berisi huruf besar, maka perpecahan padainput
harus dilakukan sebelum setiap huruf besar saat menerapkan Aturan 1.Input contoh:
sbO
Kasus kebenaran:
SQLiteBindOrColumnIndexOutOfRangeException
Kasus palsu: ( harus muncul di awal kata), (urutan salah)
SparseBooleanArray
O
StringIndexOutOfBoundException
I / O
Input : dua string, satu untuk input
dan satu untuk identifier
. Anda dapat mengasumsikan bahwa regex [A-Za-z]+
cocok input
dan regex [A-Za-z0-9_]
cocok identifier
.
Output : salah satu nilai truey atau falsy. Anda dapat memilih nilai apa yang akan dikembalikan sebagai benar dan salah, tetapi pilihan Anda harus konsisten di semua kasus. Misalnya Anda dapat kembali 1/0
, true/false
, π/e
atau apa pun, tetapi mereka harus tetap sama di semua kasus.
Uji kasus
Setiap baris terdiri dari dua string, yaitu input
dan identifier
masing - masing.
Kasus kebenaran:
"sbo" "SparseBooleanArray"
"sbo" "StringIndexOutOfBoundException"
"sbo" "SQLiteBindOrColumnIndexOutOfRangeException"
"sbO" "SQLiteBindOrColumnIndexOutOfRangeException"
"Al" "ArrayList"
"AL" "ArrayList"
"Al" "ALARM_SERVICE"
"As" "ALARM_SERVICE"
"AS" "ALARM_SERVICE"
"SD" "SQLData"
"SqD" "SQLData"
"SqlD" "SQLData"
"SqDa" "SQLData"
"the" "theWord_Example"
"the" "THEWORD2EXAMPLE"
"the" "THEWordEXAMPLE3"
"the" "THEWORDEXAMPLEFOUR"
"thw" "theWord_Example"
"thw" "THEWordEXAMPLE3"
"te" "theWord_Example"
"te" "THEWORD2EXAMPLE"
"te" "THEWordEXAMPLE3"
Kasus palsu:
"sbo" "SeekBar"
"sbo" "StatusBarNotification"
"sbO" "StringIndexOutOfBoundException"
"sbO" "SparseBooleanArray"
"AL" "ALARM_SERVICE"
"ASE" "ALARM_SERVICE"
"SQD" "SQLData"
"SqLD" "SQLData"
"SLD" "SQLData"
"SQDt" "SQLData"
"SQDA" "SQLData"
"thw" "THEWORD2EXAMPLE"
"thw" "THEWORDEXAMPLEFOUR"
"te" "THEWORDEXAMPLEFOUR"
Kriteria Menang
Ini adalah kode-golf , sehingga kode terpendek dari setiap bahasa menang. Celah default tidak diizinkan.
sumber
"SQLData", "SQLData"
adalah palsu?"sqldata", "SQLData"
itu benar."sbo" "StringIndexOutOfBoundException"
cocok*S*tringIndexOutOf*Bo*undException
?Jawaban:
Python 2 ,
239227 byteCobalah online!
sumber
JavaScript (ES6), 177 byte
Mengharapkan
(identifier)(input)
.Cobalah online!
sumber