Bei einem Bruch im Format m/n
(wobei m und n Ganzzahlen sind) wird der entsprechende Unicode-Bruch ausgegeben. Von Ihrem Programm / Ihrer Funktion wird keine Eingabe erwartet, die keinem Unicode-Zeichen entspricht. Arrays, zB [2, 3]
im Gegensatz zu 2/3
, werden akzeptiert. m / n
im gegensatz zu m/n
ist auch in ordnung. Zwei separate Eingänge m
und n
sind ebenfalls gültig.
Folgende Unicode-Brüche müssen behandelt werden:
½, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒
Somit sind die möglichen Eingaben wie folgt:
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
Die Unicode-Codepunkte der Zeichen lauten wie folgt:
188 ¼
189 ½
190 ¾
8528 ⅐
8529 ⅑
8530 ⅒
8531 ⅓
8532 ⅔
8533 ⅕
8534 ⅖
8535 ⅗
8536 ⅘
8537 ⅙
8538 ⅚
8539 ⅛
8540 ⅜
8541 ⅝
8542 ⅞
Testfälle
1/2 -> ½
1/3 -> ⅓
2/3 -> ⅔
1/4 -> ¼
3/4 -> ¾
3/8 -> ⅜
1/10 -> ⅒
Machen Sie Ihren Code so kurz wie möglich. Das ist Code Golf.
code-golf
kolmogorov-complexity
unicode
0WJYxW9FMN
quelle
quelle
188 ¼, 189 ½, 190 ¾, 8528 ⅐, 8529 ⅑, 8530 ⅒, 8531 ⅓, 8532 ⅔, 8533 ⅕, 8534 ⅖, 8535 ⅗, 8536 ⅘, 8537 ⅙, 8538 ⅚, 8539 ⅛, 8540 ⅜, 8541 ⅝, 8542 ⅞
Antworten:
JavaScript (Node.js) ,
78.77Byte1 Byte dank @HermanLauenstein gespeichert
Übernimmt Eingaben in der Currying-Syntax
(m)(n)
.Probieren Sie es online!
quelle
String.fromCharCode()
, aber ich würde eine ähnliche Anzahl von Bytes erwarten.Perl 6 ,
4843 BytesVersuch es
Versuch es
Erweitert:
Beachten Sie, dass die Suche aufgeteilt werden muss, damit keine anderen Unicode-Zeichen mit derselben Univalität zurückgegeben werden. (sonst wäre es
(1..*)
)quelle
UnicodeData.txt
. Zum Beispiel hat U + 109BCMEROITIC CURSIVE FRACTION ELEVEN TWELFTHS
die Zeicheneigenschaftnv=11/12
. Es gibt ungefähr 1500 Codepunkte mit nicht leeren numerischen Werten - mehr als diese kleine Herausforderung, nach der man suchen muss. Dies sind ganze Zahlen oder Rationen.JavaScript (ES6),
8886848179 Byte2 Bytes dank @Arnauld eingespart
Nicht ganz so kurz wie die andere Antwort von JS, aber es hat Spaß gemacht, den Codepunkt jedes Bruchs mathematisch zu berechnen.
Testschnipsel
Code-Snippet anzeigen
Alte Methode (82 Bytes):
Dank @Arnauld wurden hier 4 Bytes gespeichert.
quelle
-~'3 1'[n-6]
APL (Dyalog) ,
8864 BytesProbieren Sie es online!
-3 danke an dzaima .
Mit dem 84-Byte-Ansatz von ETHproductions.
Der
f←
auf TIO enthaltene Wert wird nicht gezählt, da er dort abgelegt wird, um die Funktion testen zu können.quelle
SOGL V0.12 , 51 Bytes
Probieren Sie es hier aus!
verwendet das Mapping
(m + n*5)%33%22
Erläuterung:
quelle
Clojure, 127 Bytes
Eine anonyme Funktion, die Eingaben als annimmt
"1/2"
und das entsprechende Zeichen zurückgibt.Eine direkte Zuordnung von einem Clojure
Ratio
zu einem Bruchzeichen.comp
Und die Tatsache, dass Clojure-Karten Funktionen sind, hat hier wirklich geholfen. Ich musste die Zeichenfolgeneingabe durchgebenread-string
, um sie als Verhältnistyp auszuwerten, da ich so alle aufgeblähten Anführungszeichen in der Karte verwerfen konnte.comp
lass mich das sinnlos machen, was schön war. Der "vollständige" Code wäre:Nachdem ich die anderen Antworten durchgesehen hatte, stellte ich fest, dass dieser Ansatz ziemlich naiv ist. Ich suche nach Verbesserungsmöglichkeiten.
quelle
Swift ,
10682 BytesPort of @Arnaulds JavaScript Antwort
24 Bytes gespart dank @ Mr.Xcoder
Probieren Sie es online!
quelle
var f=
in dieKohle ,
774846 BytesProbieren Sie es online! Link ist eine ausführliche Version des Codes. Bearbeiten:
29 bis31 Byte durch Zuordnung von ASCII-Zeichen zu Multibyte-Zeichen gespeichert. Erläuterung:quelle
Python 3 , 87 Bytes
Probieren Sie es online!
oder
Probieren Sie es online!
quelle
Python 3, 97 Bytes
quelle
[n-2][m-1]
stattdessen.Vim Script, 67 Bytes
Die Funktion funktioniert mit Vim- Digraphen, die nach dem Starten eingegeben werden.
ctrl-k.
Offensichtlich wird das relevantectrl-k
Zeichen nach demexe'norm
im obigen Codeblock nicht gerendert.quelle