Definisi
Kata dolar adalah kata di mana setiap hurufnya diberi nilai sen, dari a = 1 hingga z = 26, dan huruf-hurufnya dijumlahkan, hasilnya 100. Berikut adalah contoh pada CodeReview, dan di sini adalah daftar kata dolar yang saya temukan online.
Memasukkan
Input akan berdasarkan abjad dari az, dalam tipe data teks satu bahasa Anda (array diperbolehkan). Anda tidak perlu menghitung input lain - tidak akan ada spasi, apostrof, atau tanda hubung. Anda dapat menggunakan huruf kecil, huruf besar, atau kombinasi. Trailing newlines diizinkan.
Keluaran
Keluarkan nilai yang benar jika inputnya berupa dolar, dan nilai palsu jika tidak.
Uji Kasus
Benar:
buzzy
boycott
identifies
adiabatically
ttttt
Falsey:
zzz
zzzzzzz
abcdefghiljjjzz
tttt
basic
Ini kode-golf, jadi jawaban tersingkat dalam byte menang! Celah dan aturan standar berlaku. Tie pergi ke poster pertama.
Jawaban:
GS2 , 6 byte
Masukan harus dalam huruf besar.
Cobalah online!
Bagaimana itu bekerja
sumber
Python,
3938 byteCobalah online!
-1 byte terima kasih kepada @JonathanAllan
sumber
05AB1E , 8 byte
Kode:
Menggunakan pengkodean CP-1252 . Cobalah online!
Penjelasan:
sumber
Tn
berfungsi juga: PÇ4+OTn%0Q
adalah ide lain yang saya miliki, tetapi itu lebih buruk.Perl 6 , 21 byte
Cobalah
Bergantian:
Cobalah
Perhatikan bahwa
Ⅽ
ini adalahROMAN NUMERAL ONE HUNDRED
U + 216D dengan univalitas dari ... 100Yang membutuhkan 3 byte untuk menyandikan.
Diperluas:
sumber
MATL , 8 byte
Menggunakan input huruf kecil.
Cobalah online!
Penjelasan
Kode ini dapat dibaca saat diterima:
sumber
JavaScript (ES6), 46 byte
Pengembalian
0
atau1
.sumber
reduce
dan rekursi mereka berdua keluar 2 byte lebih lama.reduce()
selama beberapa menit pertama dari masa tenggang ketika saya awalnya mempostingnya.Haskell , 32 byte
Cobalah online!
Idenya adalah untuk membuat daftar karakter dari karakter
a
yang diberikan untuk setiap karakter dalam daftar, dan memeriksa bahwa total panjangnya adalah 100.Upaya lain:
Sayang sekali
enumFromTo
begitu lama.sumber
(100==).length.(enumFromTo 'a' =<<)
adalah penggunaan bebas-point-ness yang bersihC,
4543 byteTerima kasih kepada @Neil untuk menghemat dua byte dan membuat solusi case-insensitive!
Cobalah online!
sumber
n=0
secara global dan kemudian melewatkan klausa pertama dari spesifikasi loop, bukan? sunting: sudahlah — saya kira itu hanya akan berfungsi untuk panggilan pertama.&31
mungkin berfungsi untuk membuat case case Anda tidak sensitif.n=!n
kerjanya? Saya mengerti memeriksa apakahn
nol, karena berdasarkan beberapa tes saya melihat!0
kembali1
;!15
pengembalian0
; dan!-15
kembali0
juga. Tapi kenapa? Operan mana yang ada!
di C saat menggunakannya!integer
?!
hanya logisnot
. Dalam C,0
berartifalse
, dan nilai integer lainnya berartitrue
. Jadi!0 == 1
, dan!n == 0
untuk setiapn != 0
.0=false; 1=true
gantinya, karenanya kebingungan saya. Terima kasih atas jawabannya.Haskell , 32 byte
Ini berfungsi untuk input huruf kecil. Untuk huruf besar
s/96/64/
,. Dukungan kasus campuran akan menambah banyak byte.sumber
Mathematica, 23 byte
Fungsi murni mengambil string (atau array huruf) sebagai input, case-insensitive, dan return
True
atauFalse
. Di siniTr
hanya menambahkan nomor-nomor surat bersama; segala sesuatu yang lain sudah jelas.sumber
Jelly ,
97? * 8 byteProgram penuh, menghasilkan 1 jika input adalah kata dolar, atau 0 jika tidak.
Cobalah online!
Bagaimana?
* Mungkinkah 7 byte?
Satu-satunya alasan ini mengambil input dengan
ɠ
itu untuk menjaga³
sebagai literal 100 daripada 3 rd masukan command line (1 st masukan program).Cara untuk menghindarinya adalah, seperti yang ditunjukkan oleh Dennis, untuk membuat 100 menggunakan bentuk literal mentah
ȷ2
yaitu 10 2 . Ini mengarah ke 8 byte lainO%32S=ȷ2
, tapi ini sekarang fungsi monadik yang tidak disebutkan namanya (serta operasi sebagai program penuh dengan 3 rd argumen).Karena, dalam golf, seseorang dapat membuat variabel atau fungsi pembantu yang membatasi program tempat mereka berada (seseorang tidak dapat menggunakan kembali nama dalam lingkup tanpa menghentikan fungsi agar tidak dapat digunakan kembali), mungkin membatasi program untuk hanya mengambil input dari STDIN dapat juga dapat diterima, dalam hal ini byte 7
O%32S=³
akan diterima di sini sebagai fungsi yang tidak disebutkan namanya.sumber
O%32S=ȷ2
,. Berfungsi untuk input huruf besar dan kecil.O%32S⁼³
benar-benar menjadi entri yang valid karena tidak mendefinisikan fungsi yang tidak disebutkan namanya, dapat digunakan kembali, selama sisa program tidak menggunakan argumen baris perintah untuk input?Alice , 23 byte
Cobalah online!
Input harus huruf kecil. Mencetak
1
untuk kata-kata dolar dan0
sebaliknya.Penjelasan
Saatnya memamerkan kaset Alice dan beberapa aliran kontrol lanjutan. Meskipun cukup baik dalam bekerja dengan bilangan bulat dan string secara individual, Alice tidak memiliki built-in untuk a) menentukan panjang string, b) mengkonversi antara karakter dan poin kode mereka. Alasan untuk ini adalah bahwa semua perintah Alice memetakan bilangan bulat ke bilangan bulat atau string ke string. Tetapi keduanya membutuhkan pemetaan string ke integer atau sebaliknya, sehingga mereka tidak cocok dengan salah satu mode Alice.
Namun, selain tumpukan itu, Alice juga memiliki kaset dan mode Kardinal dan Ordinal menginterpretasikan data pada rekaman dengan cara yang berbeda.
Rekaman ini dapat digunakan untuk kedua operasi di atas: untuk mendapatkan panjang string, kita menulisnya ke rekaman dalam mode Ordinal, mencari terminating -1 dalam mode Kardinal dan mengambil posisi kepala tape. Untuk mengonversi karakter ke titik kode mereka, kami cukup membacanya dari rekaman dalam mode Kardinal.
Dua fitur penting lainnya yang digunakan dalam solusi ini adalah return stack dan iterator. Alice memiliki tumpukan kembali yang biasanya diisi saat menggunakan perintah lompat
j
, dan Anda dapat memunculkan alamat untuk melompat kembalik
. Namun, juga memungkinkan untuk mendorong alamat saat ini ke tumpukan kembali tanpa melompat ke mana punw
. Jika kita gabungkanw
dengan perintah repeat&
, kita bisa mendorong alamat saat ini ke stack kembali n kali. Sekarang setiap kali kami mencapaik
, satu salinan muncul dari tumpukan kembali dan kami melakukan iterasi lain dariw
(mulai di sel setelah itu, karena IP bergerak sebelum menjalankan perintah lain). Ketika tumpukan kembali menjadi kosong,k
tidak melakukan apa-apa dan IP hanya melewatinya. Karenanya&w...k
muncul bilangan bulat n dan kemudian jalankan...
n + 1 kali, yang memberi kita cara yang sangat ringkas untuk mengekspresikanfor
loop sederhana .Ke kode itu sendiri ...
sumber
R,
5554 byte-1 byte terima kasih kepada BLT
mengembalikan fungsi yang melakukan perhitungan yang diperlukan, yang mengembalikan
TRUE
danFALSE
seperti yang diharapkan.mengambil input dalam huruf kecil; hanya akan beralih dari
letters
keLETTERS
untuk semua huruf besarsumber
function(x)sum(match(el(strsplit(x,"")),letters))==100
menghemat satu byte.Ruby, 25 byte
Bekerja untuk huruf besar.
Saya melihat beberapa entri Ruby yang lebih kompleks, tetapi ini benar-benar sederhana.
s.sum
menambahkan kode ASCII dari string input, dan dari sini kita kurangi 64 kali panjang string.Contoh penggunaan
sumber
Java 8, 36 byte
Cobalah online!
Catatan: case independent.
sumber
05AB1E , 9 byte
Cobalah online!
Penjelasan
Karena 1 adalah satu-satunya nilai kebenaran di 05AB1E kita dapat menyimpan byte menggunakan pengurangan dibandingkan dengan 100 .
sumber
Perl 5 , 30 byte
-1 byte terima kasih kepada @Neil (
31&
bukan-96+
).29 byte kode +
-p
bendera.Cobalah online!
sumber
31&ord
?-96+
untuk hal-hal seperti itu .. Terima kasih banyak untuk itu! (tapi sekarang saya merasa harus kembali melalui posting lama saya dan mengganti setiap-96+
: x){$@+=31&ord for@_;$@==100}
(tidak teruji)+=
, tetapi dalam kasus lain Anda mungkin membuang penghematan pada tanda kurung.your one language's text datatypes
. Array bukan tipe data teks Perl ... (Jika tidak, akan menghemat 1 byte)PowerShell ,
3630 byteCobalah online!
Input sebagai array, tetapi saya ingin tahu apakah ada cara yang lebih baik untuk menangani karakter.
EDIT Kehilangan ruang yang mudah tetapi @AdmBorkBork dengan ramah memberi tahu saya: P juga, sebenarnya ada cara yang lebih baik untuk menangani karakter!
sumber
[char]$_-96
, dan Anda tidak perlu jarak di antara-eq
dan100
, membuat Anda turun ke 33. Anda juga dapat melakukan"$_"[0]
alih - alih[char]$_
, membuat Anda turun ke 32. Cobalah online!"
sekelilingnya$_
perlu? Tampaknya berfungsi tanpa gips. Mungkinkah karena input sudah menjadi string array?"
diperlukan dalam contoh khusus ini.Alice ,
2818 byteTerima kasih kepada @MartinEnder untuk bermain golf 10 byte
Cobalah online!
Kiriman ini menggunakan metode yang berbeda dari jawaban @ MartinEnder.
Pengajuan ini menghasilkan
0x00
untuk kepalsuan dan0x01
kebenaran.Jadi di sini adalah versi yang menghasilkan
0
atau1
sebaliknya: Cobalah!Penjelasan
Penjelasan di bawah ini untuk versi "terlihat". Keduanya sangat mirip, kecuali dalam program pertama, yang terakhir
o
tidak mengubah0
atau1
menjadi string (karena kita dalam mode kardinal), tetapi sebaliknya mengambil nomor dan menampilkan karakter pada titik kode itu.Setelah ini IP membungkus sekitar ke tepi kiri di
=
. Jika nilai teratas tumpukan adalah0
, IP melanjutkan jalurnya, meningkatkan jumlah total semua karakter, setelah selesai dengan input (bagian atas tumpukan akan menjadi1
), maka IP berbelok ke kanan (90 derajat searah jarum jam).Satu hal yang penting untuk dicatat, loop pada baris pertama akan beralih sekali setelah input berakhir. Ini akan mengurangi
97
(96
dari'`
dan-1
dari kurangnya input) dari total.sumber
Taksi , 1259 byte
Dengan jeda baris, terlihat seperti ini:
Ia menerima huruf besar atau kecil karena
Auctioneer School
mengubah semuanya menjadi huruf besar.Chop Suey
memecahnya menjadi karakter individu.Charboil Grill
mengkonversi karakter ke kode ASCII mereka.Kami mengambil satu karakter setiap kali, mengonversinya menjadi ASCII, mengurangi 65, dan menambahkannya ke total berjalan.
Setelah tidak ada lagi karakter, bandingkan total menjadi 100.
Pengembalian
TRUE
untuk kata-kata dolar danFALSE
untuk yang lainnya.sumber
Kode mesin IA-32, 21 byte
Hexdump:
Kode perakitan:
Dihitung dari 100 hingga 0. Jika sampai ke 0, mengembalikan true (0xff); jika tidak salah (0x00).
sumber
Dyalog APL,
1715 byteMenggunakan set karakter Dyalog Classic.
sumber
Python , 38 byte
Cobalah online!
Panjangnya sama dengan solusi ovs . Alih-alih mengurangi 96 dari setiap
ord
nilai, ini memeriksa apakahord
total sama100+96*len(s)
. Ini dinyatakan satu byte lebih pendek dari4-96*~len(s)
, yang sama dengan4-96*(-len(s)-1)
.sumber
lambda s:sum(s.encode(),96*~len(s))==4
juga akan berfungsi.Ruby ,
3530 byteCobalah online!
sumber
Retina ,
4723 byteCobalah online! Catatan: Header menurunkan input dan membaginya menjadi kata-kata; hasilnya muncul di baris terpisah. Sunting: Disimpan terlalu banyak byte berkat @MartinEnder.
sumber
Oktaf, 18 byte
Kurangi
96
dari string inputx
(huruf kecil), untuk mendapatkan nilai numerik huruf. Mengambilsum
dan membandingkannya dengan100
. Mengembalikan logika1
untuk kasus yang benar, dan logis0
untuk kasus yang salah.Saya bisa menghemat satu byte jika OK untuk memberikan false untuk "kata-kata dolar" dan berlaku untuk "kata-kata non-dolar".
sumber
Japt ,
13 1210 bytePenjelasan:
Uji secara online!
12-byte:
Cobalah online!
Solusi 12 byte lainnya menggunakan teknik yang berbeda
Cobalah online!
sumber
m%H
alih - alihm-96
(itu akan bekerja pada kedua kasus sekarang, bonus!), Dan satu pada yang kedua denganL¥U¬x@;CaX Ä
m%H
adalah penemuan yang bagus.x@
juga merupakan ide bagus!Ruby (2.4+), 38 byte
Mengambil input dalam huruf kecil. Membutuhkan Ruby 2.4's
Array#sum
agar tidak dapat berjalan di TIO.sumber
String#bytes
alih-alihString#chars
agar Anda tidak perlu meneleponc.ord
.sum
pada array bukanmap
/// ,
564210189185 byteCobalah online!
Mencetak 1 jika itu adalah "kata dolar", jika tidak mencetak "0"
Inputnya adalah sebagai berikut: (Gulir terus ke kanan)
Berfungsi dengan mengganti setiap huruf dengan nilainya dalam unary, lalu mengganti unary 100 dengan nilai 0. Kemudian mengganti apa pun nilai kata dengan 1. Jika nilai kata adalah 0, maka akan mencetak 1 karena pada akhir kode, itu menggantikan 0. Jika nilai kata adalah hal lain, itu hanya akan mencetak 0.
Golf bekerja dengan menggunakan kejadian umum dalam kode sebagai pengganti.
sumber
Utilitas Bash + GNU, 47
Cobalah online .
sumber