pengantar
Anda harus membuat fungsi untuk mengubah angka Arab menjadi angka Yunani. Input akan berupa bilangan bulat kurang dari 1000
dan lebih dari 0
.
Algoritma
- Jumlah dibagi menjadi digit (misalnya
123
->1
,2
,3
) - Mengambil setiap digit, dan perubahan karakter yang ditemukan di tabel di bawah ini, untuk surat simbol atau nama surat, (misalnya
123
->1
,2
,3
->ΡΚΓ
atauRhoKappaGamma
).
Spesifikasi
- Tidak ada konversi sistem angka bawaan
- Hasil harus dikapitalisasi sebagai contoh.
- Input akan berada di basis 10.
Uji Kasus
123 -> RhoKappaGamma or ΡΚΓ
8 -> Eta or Η
777 -> PsiOmicronZeta or ΨΟΖ
100 -> Rho or Ρ
606 -> ChiDiGamma or ΧϜ
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
Tidak Ada Di Sini
sumber
sumber
123
menjadi "PKΓ"700
dan803
(dengan nol sebagai digit).Jawaban:
Jelly ,
4240 byteCobalah online! atau verifikasi semua kasus uji .
sumber
Pyth,
49484644 byteCoba di sini.
Masih bekerja untuk memperpendek fungsi untuk menghasilkan alfabet ... dan ya, generator lebih panjang dari pengodean alfabet sebanyak 4 karakter, tetapi tidak dalam byte.
Begini cara fungsi penghasil alfabet bekerja. Mari kita ambil semua codepoint dan kurangi 913 (nilai terkecil):
Sekarang mari kita tarik yang tidak sesuai dengan pola:
Oke, jadi strateginya terbentuk: hasilkan rentang 0 hingga 24 (kita akan berurusan dengan 17 yang hilang nanti), lalu masukkan 75, 71, dan 79 di lokasi yang benar.
Bagaimana kita bisa memasukkan outlier? Pyth memiliki
.i
fungsi nterleave yang mengambil ex.[1,2,3]
dan[4,5,6]
dan menghasilkan[1,4,2,5,3,6]
. Kami harus menambahkan beberapa placeholder, karena jelas outliernya berjauhan. Mari kita mewakili pengganti dengan X:Benar, jadi array outlier bawah dimulai dengan empat
X
s. Bisakah kita mengelompokkan outlier ke masing-masing didahului oleh empatX
dan melihat apa yang tersisa?Sekarang kita membuat pengamatan kunci lain: sejak 79 datang pada akhir , bisa ada setiap jumlah
X
s mendahuluinya, dan setiap jumlahX
s berikut juga! Ini karena interleaving[1,2,3]
dan[4,5,6,7,8,9]
menghasilkan[1,4,2,5,3,6,7,8,9]
—catat bahwa elemen tambahan dalam array kedua berakhir di akhir, dan karena mereka akan dihapus, kita dapat mengizinkannya dengan aman.Itu berarti kita dapat menormalkan ini sehingga setiap outlier didahului oleh empat
X
dan digantikan oleh 6:Bagus! Sekarang kita bisa mengambil array
[75, 71, 79]
, menyisipkan empat nilai placeholder sebelum setiap elemen dan enam setelahnya, dan kemudian interleave dengan rentang0..24
.Tapi tunggu, apa yang terjadi
17
? Ingat, baris teratas dalam semua contoh ini telah hilang 17. Kita cukup menghapus 17 setelah interleaving; tetapi ini membiarkan kemungkinan jahat lainnya terbuka. Anda dapat menebaknya — nilai placeholder yang telah kami rujukX
akan menjadi 17. Ini memungkinkan kami untuk menghapus kedua nilai 17 yang asing dan semua nilai placeholder dalam sekali gerakan.Akhirnya! Berikut kode yang digunakan untuk mengimplementasikan ini:
sumber
JavaScript (ES6),
120115 byteHitungan byte menggunakan UTF-8. Panjangnya 88 karakter. Input adalah angka.
Uji
sumber
Python 3, 118 byte
sumber
i*"_"and
untuk menghindari ruang. Saya tidak akan menemukan itu.Retina , 57 byte
Transliterasi sederhana dengan rentang karakter yang sesuai dan
0
penghapusan pada setiap digit.Cobalah online. (Baris pertama ditambahkan untuk memungkinkan semua testcase berjalan bersama.)
Martin juga menyarankan yang ini untuk skor yang sama:
sumber
Julia, 138 byte
Ini adalah fungsi yang menerima integer dan mengembalikan string.
Untuk setiap digit dalam input dalam urutan terbalik, kita mendapatkan karakter yang sesuai dengan digit itu dari string yang sesuai kemudian menggabungkan karakter dan membalikkan hasilnya. Untuk setiap angka 0, kita cukup menggunakan string kosong.
sumber
Julia, 84 byte
Cobalah online!
sumber
JavaScript (ES6), 83 karakter, 110 byte
sumber
0
diganti dengan apa-apa dan berpikir mereka akan merusaknya!Perl 6 , 102 byte
Cobalah online!
sumber
Ruby, 134 byte
Basic lookup dealie menggunakan modulus. Ini mungkin dapat dioptimalkan di suatu tempat, tetapi Ruby tidak akan memaksa string menjadi bilangan bulat seperti Javascript, haha
sumber