Biorąc pod uwagę ułamek w formacie m/n
(gdzie m i n są liczbami całkowitymi coprime), wypisz odpowiednią ułamek Unicode. Twój program / funkcja nie będzie przyjmować żadnych danych wejściowych, które nie odpowiadają znakom Unicode. Tablice, np [2, 3]
. W przeciwieństwie do 2/3
, są akceptowane. m / n
w przeciwieństwie do m/n
jest również w porządku. Dwa oddzielne wejścia m
i n
są również ważne.
Frakcje Unicode, które należy obsłużyć, są następujące:
½, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒
Zatem możliwe dane wejściowe są następujące:
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
Punkty kodowe znaków w Unicode są następujące:
188 ¼
189 ½
190 ¾
8528 ⅐
8529 ⅑
8530 ⅒
8531 ⅓
8532 ⅔
8533 ⅕
8534 ⅖
8535 ⅗
8536 ⅘
8537 ⅙
8538 ⅚
8539 ⅛
8540 ⅜
8541 ⅝
8542 ⅞
Przypadki testowe
1/2 -> ½
1/3 -> ⅓
2/3 -> ⅔
1/4 -> ¼
3/4 -> ¾
3/8 -> ⅜
1/10 -> ⅒
Ustaw swój kod tak krótko, jak to możliwe; to jest kod golfowy.
code-golf
kolmogorov-complexity
unicode
0WJYxW9FMN
źródło
źródło
188 ¼, 189 ½, 190 ¾, 8528 ⅐, 8529 ⅑, 8530 ⅒, 8531 ⅓, 8532 ⅔, 8533 ⅕, 8534 ⅖, 8535 ⅗, 8536 ⅘, 8537 ⅙, 8538 ⅚, 8539 ⅛, 8540 ⅜, 8541 ⅝, 8542 ⅞
Odpowiedzi:
JavaScript (Node.js) ,
7877 bajtówZaoszczędzono 1 bajt dzięki @HermanLauenstein
Pobiera dane wejściowe w składni curry
(m)(n)
.Wypróbuj online!
źródło
String.fromCharCode()
, ale spodziewałbym się podobnej liczby bajtów.Perl 6 ,
4843 bajtówSpróbuj
Spróbuj
Rozszerzony:
Zauważ, że wyszukiwanie musi zostać podzielone, aby nie zwracało innych znaków Unicode, które mają ten sam unival. (inaczej byłoby
(1..*)
)źródło
UnicodeData.txt
. Na przykład U + 109BCMEROITIC CURSIVE FRACTION ELEVEN TWELFTHS
ma właściwość znakunv=11/12
. Istnieje około 1500 punktów kodowych z niepustymi wartościami liczbowymi - raczej więcej niż to małe wyzwanie, o które trzeba rozwiązać. Są to liczby całkowite lub racjonalne.JavaScript (ES6),
8886848179 bajtówZaoszczędzono 2 bajty dzięki @Arnauld
Nie do końca tak krótki, jak druga odpowiedź JS, ale fajnie było obliczać matematycznie punkt kodowy każdej frakcji.
Testowy fragment kodu
Pokaż fragment kodu
Stara metoda (82 bajty):
Zaoszczędzono 4 bajty na tym dzięki @Arnauld.
źródło
-~'3 1'[n-6]
APL (Dyalog) ,
8864 bajtówWypróbuj online!
-3 dzięki dzaima .
Korzystanie z 84-bajtowego podejścia ETHproductions.
f←
Zawarte na TIO nie liczy, ponieważ to właśnie tam umieszczone, aby móc przetestować tę funkcję.źródło
SOGL V0.12 , 51 bajtów
Wypróbuj tutaj!
używa mapowania
(m + n*5)%33%22
Wyjaśnienie:
źródło
Clojure, 127 bajtów
Anonimowa funkcja, która przyjmuje dane wejściowe jako
"1/2"
i zwraca odpowiedni znak.Proste mapowanie z postaci Clojure
Ratio
na postać ułamkową.comp
, a fakt, że mapy Clojure są funkcjami, naprawdę tu pomógł. Musiałem przekazać ciąg znaków,read-string
aby ocenić go jako typ współczynnika, ponieważ pozwala mi to odrzucić wszystkie wzdęte cytaty na mapie.comp
pozwól mi zrobić to bez punktów, co było miłe. „Pełny” kod to:Po przeanalizowaniu innych odpowiedzi zdałem sobie sprawę, że takie podejście jest dość naiwne. Szukam sposobów na ulepszenie.
źródło
Szybki ,
10682 bajtówPort odpowiedzi @Arnaulds JavaScript
Oszczędność 24 bajtów dzięki @ Mr.Xcoder
Wypróbuj online!
źródło
var f=
w liczbie bajtów)Węgiel drzewny ,
774846 bajtówWypróbuj online! Link jest do pełnej wersji kodu. Edycja: Zapisano
2931 bajtów poprzez mapowanie z znaków ASCII na znaki wielobajtowe. Wyjaśnienie:źródło
Python 3 , 87 bajtów
Wypróbuj online!
lub
Wypróbuj online!
źródło
Python 3, 97 bajtów
źródło
[n-2][m-1]
zamiast tego potrzebujesz .Vim Script, 67 bajtów
Ta funkcja działa z Vimem digrafach które zostały wprowadzone po ich rozpoczęciem iwth
ctrl-k.
Najwyraźniej odpowiednictrl-k
znak poexe'norm
nie jest renderowany w bloku kodu powyżej.źródło