Tantangan:
Diberi kata, periksa apakah isogram atau tidak.
Apa :
Isogram adalah kata yang hanya terdiri dari huruf-huruf tanpa duplikat (case-sensitive). String kosong adalah isogram.
Contoh:
"Dermatoglyphics" ---> true
"ab" ---> true
"aba" ---> false
"moOse" ---> false
"abc1" ---> false
"" ---> true
Memasukkan :
Anda dapat menerima input dalam format apa pun yang masuk akal
Input hanya akan berisi huruf dan / atau angka, tanpa spasi ( [a-zA-Z0-9]
)
Keluaran:
true
atau nilai kebenaran apa pun jika inputnya isogramfalse
atau nilai falsy sebaliknya
Ini adalah kode-golf sehingga kode terpendek dalam byte menang di setiap bahasa.
code-golf
string
decision-problem
Muhammad Salman
sumber
sumber
sad2
sad2das
akan gagal bahkan tanpa2
jadi tidak menunjukkan apa-apa).Jawaban:
Python
2/3365248 bytesCobalah online!
Saya memanfaatkan fakta yang
set
hanya mengandung elemen unik. Dengan memohon__len__
metode masing-masing, saya dapat menentukan apakahs
juga hanya berisi elemen unik (mengabaikan kasus).EDIT: Diperbarui untuk memenuhi persyaratan yang sebelumnya diabaikan untuk mengembalikan False untuk input numerik. Himpunan semua digit dikodekan sebagai
set(str(56**7))
.EDIT 2: Mengikuti saran pengguna ini , saya sekarang mengambil keuntungan dari membongkar argumen untuk mengatur pemahaman. Ini secara resmi merusak kompatibilitas dengan Python 2.
sumber
false
ketikas
berisi karakter digit.`56**7`
(seperti pada jawaban python lainnya) alih-alihstr()
lebih pendek? Saya tidak terbiasa dengan python tetapi tampaknya itulah perbedaan utama antara dua jawaban Anda.``
, versi hanya python2 akan menghemat 4 byte (3 pada +1 ini pada divisi bukannya sama)56**7
itu terinspirasi oleh pengkodean Anda sendiri angka 0-9 di bawah ini, tetapi simpan pada Anda dengan 1 byte.lambda s:len(s)==len(set(s.lower())-{`56**7`})
05AB1E , 5 byte
Cobalah online!
Penjelasan
sumber
R , 41 byte
Cobalah online!
Pendekatan regex.
!grepl(regex,scan(,""),F)
tidak berfungsi jadi saya kira menangkap tidak cocok dengan huruf besar-kecil di R? Saya buruk di regex secara umum, jadi saya tidak akan terkejut jika saya salah melakukannya ...R , 58 byte
Cobalah online!
Tambahkan digit
0:9
ke daftar karakter dan tes (lebih kecil) jika ada duplikat.sumber
Ruby ,
25 2321 byte-2 byte pada keduanya berkat Giuseppe
Cobalah online!
-2 byte terima kasih kepada Kirill L.
Ruby
-n
,21 19 1816 byteCobalah online!
sumber
$_
- hanya melempar regex tanpa hal lain secara implisit cocok dengan$_
: 16 byte!/.../
sebelumnya, bahkan tidak dapat menemukannya di ruby-doc.orgBrachylog , 4 byte
Cobalah online!
Predikat akan berhasil jika input isogram dan gagal jika tidak, menghasilkan alfabet Latin huruf kecil jika berhasil. Karena predikat bawaan Brachylog
⊆
tidak persis cocok dengan hubungan biasa antara subset dan superset, saya harus menghabiskan satu byte untuk menyortir input yang lebih rendah, tetapi menyimpan satu byte karena tidak harus secara eksplisit memeriksa duplikat di dalamnya. (Jika tidak perlu gagal dengan angka, kita bisa menggunakanḷ≠
.)sumber
Sekam , 6 byte
Cobalah online!
Penjelasan
sumber
Japt , 12 byte
Penjelasan:
Coba di sini.
sumber
MATL , 9 byte
Cobalah online!
sumber
Python 3 , 46 byte
Cobalah online!
sumber
Japt 2.0,
1211 byte-1 byte terima kasih kepada Nit
Uji secara online!
sumber
e
JavaScript (Node.js) ,
2925 byteCobalah online!
Terima kasih atas pembaruan jawaban @BMO , @ l4m2 , @KevinCruijssen
-4 byte terima kasih kepada @KevinCruijssen
sumber
s=>!/(.).*\1|[^a-z]/i.test(s)
?[^a-z]
bisa diganti dengan\d
Retina , 16 byte
Kembali
1
sebagai nilai Kebenaran dan0
sebagai Falsey.Terima kasih @Neil untuk menemukan dan memperbaiki bug di kode awal saya.
Cobalah online.
Penjelasan:
sumber
PowerShell , 91 byte
Cobalah online!
Solusi naif, tapi saya tidak bisa menghasilkan algoritma yang lebih baik. Mengambil input
$b
, mengonversinyaToUpper
case, melemparkannya sebagaichar
-array. Pipes arrayGroup-Object
yang membangun objek yang memiliki pasangan nama / hitungan untuk setiap huruf input. Kami kemudiansort
berdasarkanc
ount dan mengambil yang0
satu daripadanya. Kami memeriksa apakah.Count
ini asli-eq
ke.Count
[-1]
pasangan terakhir . Jika demikian, maka jumlah semuanya sama, jika tidak kita memiliki jumlah huruf yang berbeda.Kami kemudian
-and
dengan memeriksa apakah input-notmatch
menentang\d
untuk mengesampingkan digit dalam input. Hasil Boolean ditinggalkan di jalur pipa dan hasilnya tersirat.sumber
Jelly , 8 byte
Cobalah online!
sumber
Python 2 ,
5756 byteCobalah online!
Pertama-tama giliran lalu input ke dalam satu set, menghapus duplikat, kemudian menghapus digit (dikodekan dalam
`763**4`
), lalu periksa apakah panjangnya sama dengan input aslisumber
Java 8,
6139 bytePenjelasan:
Cobalah online.
Penjelasan regex:
String#matches
secara implisit menambahkan^...$
.sumber
APL (Dyalog Unicode) , 12 byte
Fungsi diam-diam anonim.
Cobalah online!
819⌶
huruf kecil(
...)
terapkan fungsi tersembunyi berikut pada itu:~∘⎕D
hapus D igits dari argumen∪≡
Apakah elemen unik dari argumen itu identik dengan itu?sumber
Perl 6 , 22 byte
Cobalah online!
Tidak ada kecocokan untuk beberapa karakter, kemudian karakter yang sama. Fungsi tersirat sebagai blok kode, cocok secara implisit dengan $ _, invert book with
!
. Ditambahkan|\d
(ta Adam) tetapi juga dibutuhkan.uc~~
, yang membutuhkan kurung ...Alternatif dengan Tas, 23 byte
Cobalah online!
Kasus yang normal ini kemudian membuat tas (diatur dengan jumlah kejadian). Subset atau sama hanya benar jika semua anggota adalah anggota Tas pembanding, dan semua jumlah insiden kurang dari atau sama dengan yang ada dalam Tas pembanding. Jadi setiap pengulangan atau angka akan membuat perbandingan salah.
sumber
abc1
.|\d
?Swift , 81 byte
Cobalah online!
sumber
Visual Basic for Applications (32 bit), 102 byte
Menggunakan fakta bahwa di VBA
0^x
menghasilkan 1 jika x adalah nol dan 0 sebaliknya. Jalankan di jendela (debug) langsung.Sunting: seperti yang ditunjukkan oleh Taylor dalam komentar ini hanya berfungsi dalam 32 bit instal MS Office.
sumber
s=LCase([A1]):j=1:For i=1To Len(s):k=Mid(s,i,1):j=j*0^InStr(i+1,s,k)*(k Like"[a-z]"):Next:?j<>0
untuk 95 byte dengan mengambil input dari[A1]
. Juga, perlu dicatat bahwa karena Eksponen dalam VBA aneh bahwa solusi ini dibatasi untuk instalasi kantor 32 bit.<!-- language-all: lang-vb -->
tanda pada jawaban Anda untuk menambahkan penyorotan sintaksis05AB1E , 4 byte
Cobalah online!
Penjelasan
sumber
The input will only contain letters and/or numbers, no spaces ([a-zA-Z0-9])
C (gcc) ,
878583 byteduaempat byte berkat ceilingcat .Cobalah online!
sumber
K (ngn / k) , 18 byte
Cobalah online!
sumber
CJam , 11 byte
Cobalah online!
Penjelasan
Ide dasarnya adalah menambahkan setiap digit kemudian memeriksa duplikat. Karena append memastikan bahwa setiap digit sudah ada satu kali, setiap kehadiran lebih lanjut dari digit akan menjadi duplikat, yang menyebabkannya kembali salah.
sumber
Merah , 76 byte
Cobalah online!
sumber
Smalltalk, 57 byte
Metode yang akan didefinisikan dalam kelas String:
Ini kemungkinan besar cukup jelas.
sumber
Pyth , 17 byte
Suite uji
Penjelasan: Terjemahan Python 3:sumber
C #, 82 byte
sunting: tes tambahan untuk char
sunting: menggunakan GroupBy untuk mempersingkatnya dengan 5 byte
sumber
APL (Dyalog Unicode) ,
252022 byteCobalah online!
Mengembalikan 1 untuk true, kalau tidak 0.
Disimpan 5 byte berkat @ H.PWiz
Memperbaiki, dan menyimpan byte lain berkat @ Adám
Bagaimana?
sumber
abc1
.\w
→.
valid?(.).*\1
, tidak. Itu juga gagal untukabc1
: /abc1
, ketika harus mengembalikan 0.Tcl , 114 byte
Cobalah online!
Tcl , 121 byte
Cobalah online!
Masih terlalu lama untuk seleraku!
sumber