pengantar
Di tanah [Masukkan nama keren di sini], orang tidak membeli barang dengan uang, karena semua orang memiliki alergi parah terhadap kertas. Mereka saling membayar dengan kata-kata! Tapi bagaimana itu? Ya, mereka memberikan nilai angka setiap huruf:
a=1,b=2,c=3,etc.
(Dengan beberapa aturan khusus lainnya yang akan dijelaskan nanti)
Dalam tantangan ini, tugas Anda adalah menghitung nilai kalimat.
Tantangan
Anda akan mengambil input yang akan menjadi kalimat. Anda dapat menganggap input tidak memiliki baris baru atau spasi tambahan. Tantangannya adalah untuk menghitung nilai kalimat, menggunakan aturan-aturan ini:
a=1,b=2,c=3,etc.
- Huruf kapital bernilai 1,5 kali sesuai dengan huruf kecil
H=h*1.5
Jadi, kata itu
cab
Akan bernilai c+a+b = 3+1+2 = 6
Tetapi kata Cab
dengan huruf c akan bernilai. (c*1.5)+a+b = 4.5+1+2 = 7.5
Jadi jika input program Anda adalah "Cab", program Anda akan menghasilkan 7.5
- Semua karakter bukan alfabet bernilai 1.
Ini kode golf, jadi jawaban tersingkat dalam byte menang. Semoga berhasil!
7.0
bukan7
?Jawaban:
Python 3,
716561 byteDengan kebetulan yang luar biasa,
(ord(s)-64)*1.5
sama denganord(s)*1.5-96
, jadi kita hanya perlu menulis-96
sekali. Sisanya cukup lurus ke depan.Sunting: Memotong beberapa byte menggunakan shenanigans eksponensial.
sumber
Python 2,
120102 byteEdit:
Pengajuan pertama, tidak begitu golf tetapi kita harus mulai di suatu tempat.
sumber
for
dalam pemahaman.e
sebagai parameter yang mengembalikan hasilnya.Pyth,
2320 byteDemo langsung dan uji kasus.
Penjelasan
Cukup banyak penggunaan kreatif nilai boolean sebagai bilangan bulat di sini.
Versi 23 byte:
Demo langsung dan uji kasus.
sumber
.
(semua karakter non-alfabet harus bernilai 1.)Julia, 63 byte
Ini hanya menjumlahkan array yang dibangun melalui pemahaman yang melompati karakter dalam string input dan melakukan aritmatika pada codepoint mereka.
Tidak Disatukan:
Terima kasih kepada Glen O untuk memperbaiki pendekatannya.
sumber
Terjebak ,
8543 BytesYeah yeah, saya tahu, Python lebih pendek ..: PSaya menggunakan logika yang sama dengan Tryth sekarang, untuk sebagian besar.Penjelasan:
sumber
Python 2, 101 byte
sumber
CJam, 30 byte
Cara kerjanya (wow, saya tidak pernah membuat ini!):
sumber
F #, 168 byte
Belum benar-benar bermain golf, tapi awal:
Di sini versi yang lebih mudah dibaca:
sumber
K, 30
.
Bagaimana itu bekerja:
.Q`a`A
menghasilkan dua daftar huruf kecil dan besar!:1+til 26
memetakan setiap huruf dalam setiap daftar dari 1 hingga 26Lipat gandakan daftar pertama dengan 1, terakhir dengan 1,5
Raze menjadi satu kamus menggunakan
,/
Petakan karakter dalam string input ke skor yang relevan
Isi semua nilai nol dengan 1
Jumlah
sumber
JavaScript, 121 byte
panggil file js dengan simpul (node index.js "Cab")
sumber
MATLAB, 68 byte
Ini mengambil keuntungan dari fakta bahwa karakter secara otomatis dilemparkan ke bilangan bulat, dan bahwa nilai boolean dapat dijumlahkan sebagai bilangan bulat.
sumber
Perl 5, 77 byte
Diuji pada
v5.20.2
.sumber
Javascript (ES6),
85828067 byteSaya suka tantangan cepat & mudah seperti ini. :)
Ini bekerja dengan menafsirkan masing-masing karakter sebagai nomor basis-36, mengalikannya dengan 1 atau 1,5 jika lebih besar dari 9 (
a-z
atauA-Z
), dan memberikan 1 sebagai gantinya jika tidak. Seperti biasa, saran diterima!sumber
toString(36)
.toString(36)
berlaku di sini. Apakah maksud Anda sesuatu seperti ituparseInt(c,36)
? Sebenarnya, itu mungkin lebih pendek ...([c,...t])=>c?(parseInt(c,36)-9||2/3)*(c>'Z'||1.5)+f(t):0
Python 3:
8685 Bytessumber
C # 81 Bytes
Panggilan dengan (LinqPad):
sumber
PHP, 102 byte
Contoh penggunaan:
Tidak ada yang istimewa dalam algoritma. Setiap karakter dari argumen program pertama (
$argv[1]
) diperiksa terhadapA
danZ
kemudiana
danz
dan dihitung sesuai.sumber
PowerShell, 108 Bytes
Kompetitif, saya agak terkejut. Tidak terlalu kumuh karena tidak memiliki operator Ternary yang kompak.
Kode:
Dijelaskan:
sumber
C, 85 byte
The
!!
sebelumislower
danisupper
diperlukan, karena nilai-nilai boolean dikembalikan oleh fungsi-fungsi ini tidak dijamin akan0
dan1
, nilai sebenarnya adalah1024
pada sistem saya memang!sumber
Candy ,
2622 byte(~ "a" <{A # 64-2 / 3 * | A # 96-} h) ZTerima kasih kepada @Tryth untuk trik faktorisasi!
Invokation dengan bendera -I, seperti pada
candy -I "Cab" -e $prg
Kode dalam bentuk panjangnya adalah:
sumber
Prolog (SWI), 101 byte
Kode:
Dijelaskan:
Contoh:
sumber
PHP, 75 byte
Jalankan sebagai pipa dengan
-nr
atau coba online .sumber