Diberikan fraksi dalam format m/n
(di mana m dan n adalah bilangan bulat coprime), menghasilkan fraksi Unicode yang sesuai. Program / fungsi Anda tidak akan menerima input apa pun yang tidak sesuai dengan karakter Unicode. Array, misalnya [2, 3]
sebagai lawan 2/3
, diterima. m / n
sebagai lawan m/n
juga baik-baik saja. Dua input terpisah m
dan n
juga valid.
Fraksi Unicode yang harus ditangani adalah sebagai berikut:
½, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒
Dengan demikian, input yang mungkin adalah sebagai berikut:
1/2, 1/3, 2/3, 1/4, 3/4, 1/5, 2/5, 3/5, 4/5, 1/6, 5/6, 1/7, 1/8, 3/8, 5/8, 7/8, 1/9, 1/10
Codepoint Unicode karakter adalah sebagai berikut:
188 ¼
189 ½
190 ¾
8528 ⅐
8529 ⅑
8530 ⅒
8531 ⅓
8532 ⅔
8533 ⅕
8534 ⅖
8535 ⅗
8536 ⅘
8537 ⅙
8538 ⅚
8539 ⅛
8540 ⅜
8541 ⅝
8542 ⅞
Uji Kasus
1/2 -> ½
1/3 -> ⅓
2/3 -> ⅔
1/4 -> ¼
3/4 -> ¾
3/8 -> ⅜
1/10 -> ⅒
Buat kode Anda sesingkat mungkin; ini kode golf.
code-golf
kolmogorov-complexity
unicode
0WJYxW9FMN
sumber
sumber
188 ¼, 189 ½, 190 ¾, 8528 ⅐, 8529 ⅑, 8530 ⅒, 8531 ⅓, 8532 ⅔, 8533 ⅕, 8534 ⅖, 8535 ⅗, 8536 ⅘, 8537 ⅙, 8538 ⅚, 8539 ⅛, 8540 ⅜, 8541 ⅝, 8542 ⅞
Jawaban:
JavaScript (Node.js) ,
7877 byteDisimpan 1 byte berkat @HermanLauenstein
Mengambil input dalam sintaks currying
(m)(n)
.Cobalah online!
sumber
String.fromCharCode()
, tapi saya harapkan jumlah byte yang sama.Perl 6 ,
4843 byteCobalah
Cobalah
Diperluas:
Perhatikan bahwa pencarian harus dipisah sehingga tidak mengembalikan karakter Unicode lain yang memiliki unival yang sama. (kalau tidak akan
(1..*)
)sumber
UnicodeData.txt
. Misalnya, U + 109BCMEROITIC CURSIVE FRACTION ELEVEN TWELFTHS
memiliki properti karakternv=11/12
. Ada beberapa 1500 poin kode dengan nilai numerik yang tidak kosong — lebih dari tantangan kecil ini yang harus dipecahkan. Ini adalah bilangan bulat atau rasional.JavaScript (ES6),
8886848179 byteDisimpan 2 byte berkat @Arnauld
Tidak sesingkat jawaban JS yang lain, tetapi menyenangkan menghitung titik kode dari setiap fraksi secara matematis.
Cuplikan tes
Tampilkan cuplikan kode
Metode lama (82 byte):
Disimpan 4 byte yang satu ini berkat @Arnauld.
sumber
-~'3 1'[n-6]
APL (Dyalog) ,
8864 byteCobalah online!
-3 Terima kasih kepada dzaima .
Menggunakan pendekatan 84-byte ETHproduk.
The
f←
disertakan pada TIO tidak dihitung, karena itu diletakkan di sana hanya untuk dapat menguji fungsi.sumber
SOGL V0.12 , 51 byte
Coba Di Sini!
menggunakan pemetaan
(m + n*5)%33%22
Penjelasan:
sumber
Clojure, 127 byte
Fungsi anonim yang mengambil input sebagai
"1/2"
, dan mengembalikan karakter yang sesuai.Pemetaan langsung dari Clojure
Ratio
ke karakter pecahan.comp
, dan fakta bahwa peta Clojure adalah fungsi yang sangat membantu di sini. Saya perlu meneruskan input stringread-string
untuk mengevaluasinya sebagai jenis rasio, karena itu memungkinkan saya untuk membuang semua kutipan kembung di peta.comp
biarkan saya melakukan itu bebas poin, yang bagus. Kode "penuh" adalah:Setelah mencari jawaban lain, saya menyadari bahwa pendekatan ini cukup naif. Saya mencari cara untuk memperbaikinya.
sumber
Swift ,
10682 bytePort jawaban JavaScript @Arnaulds
Disimpan 24 byte berkat @ Mr.Xcoder
Cobalah online!
sumber
var f=
dalam jumlah byte)Arang ,
774846 byteCobalah online! Tautan adalah untuk mengucapkan versi kode. Sunting: Disimpan
2931 byte dengan memetakan dari karakter ASCII ke karakter multi-byte. Penjelasan:sumber
Python 3 , 87 byte
Cobalah online!
atau
Cobalah online!
sumber
Python 3, 97 byte
sumber
[n-2][m-1]
.Vim Script, 67 byte
Fungsi ini bekerja dengan digraf Vim yang dimasukkan setelah memulai dengan
ctrl-k.
Rupanya,ctrl-k
karakter yang relevan setelahexe'norm
tidak diberikan dalam blok kode di atas.sumber