pengantar
Anda harus membuat fungsi untuk mengubah angka Yunani menjadi angka Arab. Masukan akan berupa angka Yunani kurang dari 1000
dan lebih dari 0
. Ini kebalikan dari tantangan saya sebelumnya .
Algoritma
- Berpisah masukan ke dalam huruf (misalnya
ΡΚΓ
->Ρ
,Κ
,Γ
) - Ambil setiap huruf, dan perubahan karakter yang ditemukan di tabel di bawah ini, untuk surat simbol, (misalnya
ΡΚΓ
->Ρ
,Κ
,Γ
->100
,20
,3
). - Tambah (misalnya
ΡΚΓ
->Ρ
,Κ
,Γ
->100
,20
,3
->123
)
Spesifikasi
- Tidak ada konversi sistem angka bawaan
- Input akan dikapitalisasi seperti dalam contoh.
- Keluaran harus dalam basis 10.
ΡΡΡΡ
tidak akan pernah terjadi. Itu akan terjadiΥ
.
Uji Kasus
ΡΚΓ -> 123
Η -> 8
ΨΟΖ -> 777
Ρ -> 100
ΧϜ -> 606
ΡϘ -> 190
ΜΒ -> 42
Ν -> 50
Meja
Α = 1 = Alpha = 913 UTF-8
Β = 2 = Beta = 914 UTF-8
Γ = 3 = Gamma = 915 UTF-8
Δ = 4 = Delta = 916 UTF-8
Ε = 5 = Epsilon = 917 UTF-8
Ϝ = 6 = DiGamma = 988 UTF-8
Ζ = 7 = Zeta = 918 UTF-8
Η = 8 = Eta = 919 UTF-8
Θ = 9 = Theta = 920 UTF-8
Ι = 10 = Iota = 921 UTF-8
Κ = 20 = Kappa = 922 UTF-8
Λ = 30 = Lambda = 923 UTF-8
Μ = 40 = Mu = 924 UTF-8
Ν = 50 = Nu = 925 UTF-8
Ξ = 60 = Xi = 926 UTF-8
Ο = 70 = Omicron = 927 UTF-8
Π = 80 = Pi = 928 UTF-8
Ϙ = 90 = Koppa = 984 UTF-8
Ρ = 100 = Rho = 929 UTF-8
Σ = 200 = Sigma = 931 UTF-8
Τ = 300 = Tau = 932 UTF-8
Υ = 400 = Upsilon = 933 UTF-8
Φ = 500 = Phi = 934 UTF-8
Χ = 600 = Chi = 935 UTF-8
Ψ = 700 = Psi = 936 UTF-8
Ω = 800 = Omega = 937 UTF-8
Ϡ = 900 = SamPi = 992 UTF-8
code-golf
number
natural-language
conversion
Tidak Ada Di Sini
sumber
sumber
ΡΡΡΡ
? Jika demikian, apa hasilnya?180
,42
dan50
.Jawaban:
Jelly ,
4745 byteCobalah online! atau verifikasi semua kasus uji .
sumber
<newline>Ç€
di akhir.Ç€
yang berlaku fungsi untuk semua kasus uji. Tautan pertama menunjukkan ke program aktual, yang panjangnya 44 byte.Python 3, 112
Disimpan 4 byte berkat vaultah.
Booyah, mengalahkan JS!
Dengan uji kasus:
Loop melalui string dan menggunakan indeksnya dalam daftar karakter potensial untuk menghitung berapa nilainya.
sumber
JavaScript (ES7), 115 byte
sumber
Haskell,
116113 byteContoh penggunaan:
map f ["ΡΚΓ","Η","ΨΟΖ","Ρ","ΧϜ","ΡϘ","ΜΒ","Ν"]
->[123,8,777,100,606,190,42,50]
.Cari nilai huruf yunani dari daftar pasangan
(letter, value)
dan jumlah. Daftar nilai dibangun oleh(*)<$>[1,10,100]<*>[1..9]
, di mana(*)<$>[1,10,100]
membangun daftar fungsi[(*1),(*10),(*100)]
(dikalikan dengan 1, 10 dan 100) yang diterapkan secara terpisah ke elemen[1..9]
dan digabungkan menjadi satu daftar.Sunting: 3 byte dengan terima kasih kepada @xnor.
sumber
(*)<$>[1,10,100]<*>[1..9]
.<*>
dalam konteks daftar, lagi. Saya tidak pernah memikirkannya sendiri. Terima kasih!Julia,
8270 byteCobalah online!
sumber
JavaScript (ES6), 116 byte
Hanya 1 byte lebih lama dari ES7!
sumber
+"e"
?9+"e"+2
dan kemudian+("9e2")
menjadi 900.Python 3, 188 Bytes
Cobalah! (Termasuk test case)
sumber
def f(x):r=list(range(1,10));R=[a*10for a in r];return sum(b*(a in x)for a,b in zip("ΑΒΓΔΕϜΖΗΘΙΚΛΜΝΞΟΠϘΡΣΤΥΦΧΨΩϠ",r+R+[a*10for a in R]))
.Retina , 72 byte
Cobalah online.
Penjelasan
Pada dasarnya - ganti setiap simbol Yunani dengan angka yang diwakilinya, lalu kembalikan jumlah semua angka yang dihasilkan:
10
Digit transliterate ke Arab dan100
digit ke alfabet Latin (0
-9
=>a
-j
):Tambahkan "aa" ke
100
digit apa saja :Tambahkan "0" ke
10
angka apa saja :1
Digit Transliterate dan alfabet Latin ke Bahasa Arab:Ubah semua angka desimal yang dipisahkan oleh ruang menjadi unary:
Hitung jumlah total unary
1
s:sumber