Tulis fungsi atau program yang mengambil input string dan mencetak nilai kebenaran jika string tersebut adalah pangram (urutan huruf yang mengandung setidaknya satu dari setiap huruf dalam alfabet bahasa Inggris) dan nilai falsey sebaliknya.
Kasus huruf harus diabaikan; Jika string adalah abcdefghijklmnopqrstuvwXYZ
, maka fungsi tersebut masih harus mengembalikan nilai yang benar Perhatikan bahwa string dapat berisi karakter lain di dalamnya, sehingga 123abcdefghijklm NOPQRSTUVWXYZ321
akan mengembalikan nilai yang sebenarnya. Input kosong harus mengembalikan nilai falsey.
Uji kasus
AbCdEfGhIjKlMnOpQrStUvWxYz
==> True
ACEGIKMOQSUWY
BDFHJLNPRTVXZ
==> True
public static void main(String[] args)
==> False
The quick brown fox jumped over the lazy dogs. BOING BOING BOING
==> True
Ini kode golf. Aturan standar berlaku. Kode terpendek dalam byte menang.
code-golf
string
decision-problem
Arcturus
sumber
sumber
Jawaban:
Pyth, 7 byte
Penjelasan:
Coba program lengkap, versi satu baris di sini .
sumber
L!-Grb0
.!-Grs.z0
juga akan bekerja tetapi lebih lama.Perl 6 , 20 byte
pemakaian:
Saya menggunakan versi 3 byte "french" (
⊆
) dariU+2286 SUBSET OF OR EQUAL TO
operator alih-alih versi 4 byte "texas" ((<=)
) yang juga akan membutuhkan ruang tambahan di depannya.sumber
GS2,
119 byteTerima kasih kepada @MitchSchwartz karena bermain golf dengan 2 byte!
Kode sumber menggunakan pengkodean CP437. Cobalah online!
Bagaimana itu bekerja
sumber
m2
(\xe9
) menghemat 2 byte.JavaScript ES6, 51
57Edit 6 byte, simpan thx @ user81655
Cuplikan tes
sumber
a.replace(/[^A-Z]|[^a-z]/g,'')
ataua.replace(/[^A-Z]/gi,'')
bekerja?A
dana
harus menjadi karakter yang sama, jika tidak himpunan akan membuat mereka berbeda dan ukurannya akan> 26[...a.toUpperCase().replace(/[^A-Z]/g,'')].length>25
?R
50,4639 byteEdit menghilangkan kebutuhan
tolower
dengan menambahkanignore.case=TRUE
(T
)sumber
ignore.case=TRUE (T)
dimasukkan dalam hitungan juga?T
sebagai akhirnya, berkat pencocokan penempatan argumen tidak perlu benar-benar menentukan nama argumen (danT
merupakan alias default untukTRUE
). Kode yang ditulis di sini melakukan tindakan yang diperlukan apa adanya, tanpa perlu menambahkan apa pun.O, 11 byte
Cobalah online.
Sayangnya, O tidak membuat perbedaan: /
Penjelasan
sumber
Julia, 38 byte
Ini sederhana -
lowercase
berkaitan dengan masalah huruf besar / kecil,'a':'z'
memegang semua huruf kecil,∩
adalah persimpangan, menghilangkan karakter apa pun yang bukan huruf dan, karena yang'a':'z'
didahulukan, hanya akan memiliki satu dari setiap huruf yang muncul dis
.endof
adalah cara terpendek untuk mendapatkan panjang array yang dihasilkan, dan jika itu 26, maka itu adalah pangram (tidak bisa lebih dari 26, dan>25
menyimpan byte relatif ke==26
).sumber
Python 2,
5351 byteSolusi alternatif:
Terima kasih kepada xnor karena menunjukkan bahwa set memiliki
<=
operator, untuk alternatif 51:sumber
lambda s:set(range(65,91))<=set(map(ord,s.upper()))
, juga untuk 51.p=lambda s:{*range(65,91)}<={*map(ord,s.upper())}
. By the way, saya tidak bisa menemukan aturan tentang apakahlambda
perlu ditugaskan (seperti dalam kasus pertama Anda) atau tidak (seperti yang Anda nanti). Membantu?Retina , 22 byte
Cobalah online.
Baris pertama cocok dengan huruf apa pun yang tidak muncul lagi kemudian dalam string. Itu memastikan bahwa kami tidak mencocokkan setiap huruf paling banyak sekali, tidak peduli seberapa sering itu terjadi. Mode kecocokan akan secara default mengganti string dengan jumlah kecocokan yang ditemukan. Jadi pada tahap kedua, kami mencocokkan
26
dengan hasil input pertama, yang akan memberikan salah satu0
atau1
, tergantung pada apakah kami menemukan maksimum 26 pertandingan atau tidak.sumber
Minkolang 0,14 , 18 byte
Coba di sini.
Penjelasan
sumber
Python 3.5, 47 byte
Prinsip yang sama dengan jawaban Mitch Schwartz , tetapi menggunakan perangkat tambahan PEP 0448 untuk
*
membongkar, pertama kali diperkenalkan dengan Python 3.5.Versi ini sedikit berbeda dari apa yang saya tulis dalam komentar saya ke posting Mitch, dalam hal saya mengubah angka menjadi huruf daripada sebaliknya. Itu karena itulah bagaimana saya menulis upaya orisinal saya pada solusi, sebelum menemukan bahwa saya tidak bisa bermain golf tanpa Mitch langsung meniru pendekatannya. Jadi pertimbangkan untuk mengubah sedikit sisa orisinalitas saya!
sumber
Ruby,
4133Pemakaian
Terima kasih kepada Vasu Adari karena telah menyelamatkan saya 8 byte
sumber
R,
5345 byteVersi lama pada 53 byte:
Pemakaian:
sumber
MATLAB / Oktaf ,
3533 byteCobalah online!
Fungsi anonim mengembalikan 1 logis jika input
x
adalah pangram, atau 0 logis jika tidak.Pada dasarnya ia menggunakan pendekatan yang sama dengan solusi Pyth @ ThomasKwa. Perbedaan yang ditetapkan antara semua karakter dalam rentang alfabet huruf besar (
65:91
) dan string input (dikonversi ke huruf besar). Setiap karakter yang ada dalam alfabet tetapi tidak dalam string input dikembalikan olehsetdiff
. Hanya jika array yang dikembalikan oleh perbedaan set kosong adalah string sebuah pangram.Menggunakan huruf besar alih-alih huruf kecil menghemat beberapa byte dibandingkan dengan
'a':'z'
karena nilai ASCII dapat digunakan sebagai gantinya untuk membuat rentang.sumber
Haskell ,
59565351 byteCobalah online!
Penjelasan:
Berikan string input
s
, untuk masing-masinga
dalam kisaran 65 hingga 90 (kode ASCII untukA
untukZ
) diperiksa apakah setiap karakter dalams
sama dengana
(karakter huruf besar) ataua+32
(karakter huruf kecil), dikonversi ke karakter dengantoEnum
. Ini menghasilkan daftar boolean.and
memeriksa apakah semuanyaTrue
.Versi lama:
Untuk setiap huruf alfabet huruf besar, periksa apakah beberapa huruf dari
s
huruf besar sama dengan itu.any(==a)s
sama sepertielem a s
tetapi memungkinkan untuk memodifikasi elemens
sebelum perbandingan - dalam hal ini, terselubung untuk huruf besar.sumber
Japt , 14 byte
Cobalah online!
Bagaimana itu bekerja
sumber
CJam, 11 byte
Ini adalah program yang lengkap. Cobalah online .
Penjelasan:
sumber
Javascript,
110109999593 byteDisimpan 6 byte berkat Thomas Kwa, dan 10 terima kasih sebagian untuk ev3.
sumber
for(i=65;i++<91;)b+=!~a.indexOf(String.fromCharCode(i));alert(!b)
?05AB1E , 4 byte (Mungkin Non-bersaing)
Cobalah online!
sumber
2sable ,
65 byteVersi 6 byte:
Cobalah online!
Penjelasan:
Versi 5 byte, terinspirasi oleh jawaban 05AB1E carusocomputing :
Cobalah online!
Penjelasan:
sumber
Brachylog , 4 byte
Cobalah online!
sumber
TeaScript , 12 byte
Posting TeaScript pertama sejak saya membunuh TeaScript: p
Cobalah online
Tidak disatukan
sumber
JavaScript ES6,
124114113 byteSaya yakin ini bisa bermain golf lebih banyak.
Menghasilkan fungsi anonim.
sumber
C, 107 byte
sumber
ES6, 68 byte
Tali itu terlihat sangat boros, tapi aku tidak tahu cara yang lebih baik.
sumber
s=>[...Array(x=9,26)].every(z=>RegExp((++x).toString(36),"i").test(s))
Scala,
594846 bytesumber
Bash,
4542 byteProgram 41 byte, plus 1 karena harus dijalankan dengan
bash -e
:Hebatnya, saya mengelola jawaban Bash tanpa karakter kutipan! (ya, saya memeriksa dengan input yang dimulai dengan
-f
dan sejenisnya).Ini mengasumsikan lokal di mana huruf-huruf bahasa Inggris kecil berdekatan dari
a
kez
. Input melalui argumen pertama ke program.Cara kerjanya adalah, untuk setiap huruf alfabet
$i
, kami menguji apakah string berisi$i
atau setara huruf besar-nya${i^}
dengan menghapus semua karakter lain. Jika ini menghasilkan string kosong, maka input tidak mengandung huruf itu, dan kami keluar dengan1
(false). Jika kami memiliki hasil yang tidak kosong, maka kami lulus tes dan melanjutkan ke surat berikutnya. Jika string input berisi setiap huruf bahasa Inggris, kami akan mencapai akhir program, sehingga keluar dengan0
(true).sumber
Perl 5, 33 byte
sumber
-pl61e '$i=$_;map$\*=$i=~/$_/i,a..z}{'
.PlatyPar , 14 byte
Penjelasan (fitur stack visualizer segera hadir!):
Jika saya memiliki fungsi "tekan semua huruf alfabet" konyol ini akan menjadi 10 ...
Cobalah online !
sumber
Pyke, 6 byte
Coba di sini!
sumber