Dalam bahasa Nim , aturan untuk membedakan pengidentifikasi sedikit lebih santai daripada kebanyakan bahasa lainnya. Dua pengidentifikasi setara atau alamat variabel yang sama jika mereka mengikuti aturan ini :
- karakter pertama keduanya sama (case sensitive)
- kedua string adalah sama (kasus di sensitive) setelah menghapus semua contoh dari karakter
-
dan_
Tantangan
Tulis program / fungsi yang mengambil dua string yang mewakili pengidentifikasi Nim dan menghasilkan nilai kebenaran atau falsey berdasarkan pada apakah mereka setara dengan aturan di atas.
Spesifikasi
- Aturan I / O standar berlaku .
- Celah standar yang dilarang .
- String hanya akan berisi printable ASCII . Anda tidak perlu memeriksa apakah itu pengidentifikasi yang valid.
- String dapat diambil sebagai dua input terpisah, daftar string, dll. (Anda tahu bornya)
- String kosong tidak perlu ditangani.
- Keluaran harus konsisten untuk nilai-nilai kebenaran dan falsey.
- Tantangan ini bukan tentang menemukan pendekatan terpendek dalam semua bahasa, melainkan tentang menemukan pendekatan terpendek dalam setiap bahasa .
- Kode Anda akan dinilai dalam byte , biasanya dalam pengkodean UTF-8, kecuali ditentukan lain.
- Fungsi built-in yang melakukan tugas ini diizinkan tetapi termasuk solusi yang tidak bergantung pada built-in dianjurkan.
- Penjelasan, bahkan untuk bahasa "praktis", dianjurkan .
Uji kasus
Input Output
count, Count falsey
lookMaNoSeparator, answer falsey
_test, test falsey
test, tset falsey
aVariableName, a_variable_name truthy
numbers_are_cool123, numbersAreCool123 truthy
symbolsAre_too>_>, symbols_areTOO>> truthy
Implementasi referensi tidak dikumpulkan
Ini ditulis dalam Nim, itu sendiri.
import strutils, re
proc sameIdentifier(a, b: string): bool =
a[0] == b[0] and
a.replace(re"_|–", "").toLower == b.replace(re"_|–", "").toLower
code-golf
string
decision-problem
benar-benar manusiawi
sumber
sumber
f("_test", "test")
.f("test", "tset")
, karena saya pikir satu jawaban memberikan hasil yang tidak terduga.>
?Jawaban:
JavaScript (ES6),
6261 byteDisimpan 1 byte berkat @JohanKarlsson
Mengambil input dalam sintaks currying
(a)(b)
. Mengembalikan boolean.Uji kasus
Tampilkan cuplikan kode
sumber
/-|_/g
menghemat satu bytePython 3 , 76 byte
Cobalah online!
-1 byte terima kasih kepada notjagan
-3 byte terima kasih kepada Wheat Wizard
sumber
Sebenarnya , 15 byte
Cobalah online!
Fakta menyenangkan: ini bekerja dengan sejumlah input (selalu menghasilkan kebenaran dengan kurang dari 2 input).
Penjelasan:
sumber
Pyth , 13 byte
Cobalah online!
Penjelasan
sumber
05AB1E , 12 byte
Cobalah online!
-1 terima kasih kepada Adnan .
Secara teoritis,
εćs„-_-«}Ë
seharusnya sudah bekerja selama 10 byte, tetapi sayangnya perilaku ini sudah usang untuk saat ini.sumber
„-_SK
alih-alih'-K'_K
.SK
menjadiм
.м
ada saat itu. : PJelly , 11 byte
Cobalah online!
-2 byte terima kasih kepada Erik the Outgolfer
-1 byte terima kasih kepada Jonathan Allan
sumber
["symbolsAre_too>_>", "symbols_areTOO>>"]
dan gunakanḢ;ḟ⁾-_Œl$µ€E
sebagai ganti untuk -2. Kalahkan Pyth itu!ḟ⁾-_Œl,Ḣµ€E
untuk 11 byte.Ruby ,
8664636151 byteCobalah online!
Ini
terasa sangat lamamasih terasa agak lama. Saya akan menghargai bantuan setiap guru Ruby di luar sana dalam membuat ini setidaknya sedikit lebih pendek.sumber
.delete("_-")
lebih pendek.f[x]
selalu merupakan substitusi yang valid untukf.call(x)
ketika lambdas yang terlibat terlibat.C ++,
288248 byte-5 byte terima kasih kepada Zacharý
Terima kasih, Preprocessor. Juga, kode ini mengambil keuntungan dari fakta bahwa dalam C ++ aturan untuk memasukkan int ke bool adalah
int_var!=0
sumber
;
setelah definisiF
. Kemudian, ubahreturn
pernyataan pertama menjadireturn 0;E(a,45)E(b,45)E(a,95)E(b,95)F(a)F(b)
.CJam, 20 byte
Mengambil input dalam bentuk ["string1", "string2"].
Cobalah Online (versi pengujian)
sumber
Haskell ,
8578767168 byte2 byte disimpan berkat Ørjan Johansen
Cobalah online!
Kesalahan pada string kosong.
sumber
all(/=a)"-_"
. Juga setelah edit terakhir Anda,f
perlu menjadi operator.notElem
tetapi saya tidak dapat mengingatnya selama hidup saya.Python 2 , 72 byte
Cobalah online!
Tidak akan bekerja dengan Python 3 karena
translate
sintaks baru .sumber
Excel, 105 byte
CODE () mengembalikan kode numerik karakter pertama.
Perbandingan string di Excel tidak peka huruf besar-kecil.
sumber
Sekam , 13 byte
Cobalah online!
Dibangun untuk setiap string, sepasang yang terdiri dari karakter pertama dari string dan seluruh string lebih kecil dan dengan semua kemunculan - / _ dihapus. Kemudian periksa apakah kedua pasangan sama.
Sebuah kekhususan adalah bahwa
-
di Husk adalah set perbedaan (yakni menghapus hanya kejadian pertama ditemukan): untuk menghapus semua kejadian, titik tetap-"-_
ditemukan denganω-"-_
.sumber
Japt ,
1425 byteMemeriksa kesetaraan string case-insensitive dengan menghapus semua karakter dalam kata 2 dari kata 1, dan menghapus-_
karakter; yang menghasilkan string kosong (""
) jika kata-katanya sama.Terima kasih Ørjan Johansen karena menunjukkan masalah dengan ini.
Memeriksa kesetaraan karakter pertama dan apakah input huruf besar sama setelah menghapus
_-
.Cobalah online!
Penjelasan
Input implisit:
U
danV
merupakan string inputPeriksa apakah huruf pertama dari
U
(implisit) sama dengan (¥
) karakter pertama dariV
.Dan (
©
) periksa apakahU
, huruf besar (u
) dan dengan_-
dihapus (k
), sama dengan (¥
) sama untukV
. Secara implisit kembalikan hasil boolean.sumber
test
vstset
?Python 2 ,
7973 byte-6 byte terima kasih kepada @notjagan: periksa panjang himpunan semua nama yang dikurangi adalah 1 atau tidak.
Cobalah online!
sumber
Perl 5 , 67 byte
Cobalah online!
Mengambil pengidentifikasi sebagai input pada saluran yang berbeda.
Penjelasan:
sumber
Retina , 28 byte
Cobalah online!
sumber
Arang , 29 byte
Cobalah online!
Ini mencetak
-
untuk kebenaran dan tidak untuk falsey.Tautan ke versi verbose . Pertama membandingkan karakter pertama dari kedua string input (
⁼§θ⁰§η⁰
) dan kemudian membandingkan sisa kedua string setelah menghapus garis bawah dan tanda hubung (⪫⪪⪫⪪θ_ω-ω
) dan mengkonversi ke huruf kecil (↧
).sumber
C#,
10189 bytesSaved 12 bytes thanks to @kusi581.
sumber
string.Concat(...)
you can save 2 bytes ;)Java (OpenJDK 8), 95 bytes
Try it online! Pretty straight forward.
sumber
Pyke, 13 bytes
Try it online!
sumber
C (gcc),
126114 bytesTry it online!
With whitespace and comments:
sumber
while
test can be shortened to*s%50==45
. (2) However, the lowercasing is wrong, e.g. it fails ont~
vs.t^
.>
was added, hmm.-
isn't actually allowed, but the algorithm still includes it...-
isn't in the grammar description of identifier - but then other parts of that document imply it is allowed.Dyalog APL,
473228272622 bytes-4 bytes thanks to Kritixi Lithos
Takes input as a list of the strings.
Try it online!
How?
sumber
⊃⍺=⍵
instead instead of⍺[1]=⍵[1]
⊃⍵
instead of⍵[1]
should work⊃⍺=⊃⍵
instead of⍺[1]=⍵[1]
Common Lisp, 98 bytes
Try it online!
Ungolfed (super straightforward!) version:
sumber
R, 76 bytes
Fungsi anonim yang mengambil input sebagai daftar dua string. Mengambil keuntungan dari kenyataan bahwa operasi string R, walaupun cukup lama dalam # karakter, adalah vektor. Selain itu, membungkus suatu tugas dalam tanda kurung akan mengikat variabel, jadi
(g=substr(l,1,1))
simpan variabel yang akan digunakan kembali nanti di baris dan juga untukh
.R mengembalikan ekspresi yang terakhir dievaluasi sebagai output fungsi.
Tidak Terkumpul:
Cobalah online! (semua kasus uji)
sumber
Brachylog , 17 byte
Cobalah online!
Keluaran melalui keberhasilan / kegagalan predikat.
sumber
Erlang 113 byte
sepasang fungsi anonim yang membandingkan kedua daftar. dimaksudkan untuk ditempelkan di kulit erlang.
lebih mudah dibaca:
sumber
Klip , 25 byte
Penjelasan :
x
,y
danz
dapat dirujuk dalam program Klip untuk secara implisit mengambil hingga tiga input. Karena program ini hanya referensix
dany
, dibutuhkan dua input yang ditugaskan untukx
dany
.Mengambil dua string dari input standar, output
1
dan0
untuk true dan false masing-masing.sumber