Dada una fracción en el formato m/n
(donde myn son enteros coprimos), genera la fracción Unicode correspondiente. No se espera que su programa / función tome ninguna entrada que no corresponda a un carácter Unicode. Se aceptan matrices, por ejemplo, [2, 3]
en oposición a 2/3
. m / n
a diferencia de m/n
también está bien. Dos entradas separadas m
y n
también son válidas.
Las fracciones Unicode que deben manejarse son las siguientes:
½, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒
Por lo tanto, las posibles entradas son las siguientes:
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
Los puntos de código Unicode de los caracteres son los siguientes:
188 ¼
189 ½
190 ¾
8528 ⅐
8529 ⅑
8530 ⅒
8531 ⅓
8532 ⅔
8533 ⅕
8534 ⅖
8535 ⅗
8536 ⅘
8537 ⅙
8538 ⅚
8539 ⅛
8540 ⅜
8541 ⅝
8542 ⅞
Casos de prueba
1/2 -> ½
1/3 -> ⅓
2/3 -> ⅔
1/4 -> ¼
3/4 -> ¾
3/8 -> ⅜
1/10 -> ⅒
Haga su código lo más corto posible; Este es el código de golf.
code-golf
kolmogorov-complexity
unicode
0WJYxW9FMN
fuente
fuente
188 ¼, 189 ½, 190 ¾, 8528 ⅐, 8529 ⅑, 8530 ⅒, 8531 ⅓, 8532 ⅔, 8533 ⅕, 8534 ⅖, 8535 ⅗, 8536 ⅘, 8537 ⅙, 8538 ⅚, 8539 ⅛, 8540 ⅜, 8541 ⅝, 8542 ⅞
Respuestas:
JavaScript (Node.js) ,
7877 bytesGuardado 1 byte gracias a @HermanLauenstein
Toma entrada en la sintaxis de curry
(m)(n)
.Pruébalo en línea!
fuente
String.fromCharCode()
, pero esperaría un recuento de bytes similar.Perl 6 ,
4843 bytesIntentalo
Intentalo
Expandido:
Tenga en cuenta que la búsqueda debe dividirse para que no devuelva otros caracteres Unicode que tengan el mismo unival. (de lo contrario sería
(1..*)
)fuente
UnicodeData.txt
. Por ejemplo, U + 109BCMEROITIC CURSIVE FRACTION ELEVEN TWELFTHS
tiene la propiedad de carácternv=11/12
. Hay unos 1500 puntos de código con valores numéricos no vacíos, más de lo que este pequeño desafío le pide a uno que resuelva. Estos son números enteros o racionales.JavaScript (ES6),
8886848179 bytesGuardado 2 bytes gracias a @Arnauld
No es tan corto como la otra respuesta JS, pero fue divertido calcular matemáticamente el punto de código de cada fracción.
Fragmento de prueba
Mostrar fragmento de código
Método antiguo (82 bytes):
Ahorré 4 bytes en este gracias a @Arnauld.
fuente
-~'3 1'[n-6]
APL (Dyalog) ,
8864 bytesPruébalo en línea!
-3 gracias a dzaima .
Usando el enfoque de 84 bytes de ETHproductions.
Lo
f←
incluido en TIO no se cuenta, ya que se pone allí solo para poder probar la función.fuente
SOGL V0.12 , 51 bytes
Pruébalo aquí!
usa el mapeo
(m + n*5)%33%22
Explicación:
fuente
Clojure, 127 bytes
Una función anónima que toma datos como
"1/2"
y devuelve el carácter correspondiente.Un mapeo directo de un Clojure
Ratio
a un carácter de fracción.comp
, y el hecho de que los mapas Clojure son funciones realmente ayudó aquí. Necesitaba pasar la entrada de cadenaread-string
para evaluarla como un tipo de razón, ya que eso me permite descartar todas las comillas en el mapa.comp
déjame hacer eso sin puntos, lo cual fue agradable. El código "completo" sería:Después de mirar las otras respuestas, me di cuenta de que este enfoque es bastante ingenuo. Estoy buscando formas de mejorarlo.
fuente
Rápido ,
10682 bytesPuerto de @Arnaulds Respuesta de JavaScript
Guardado 24 bytes gracias a @ Mr.Xcoder
Pruébalo en línea!
fuente
var f=
en el recuento de bytes)Carbón ,
774846 bytesPruébalo en línea! El enlace es a la versión detallada del código. Editar: se guardaron
2931 bytes mediante la asignación de caracteres ASCII a caracteres multibyte. Explicación:fuente
Python 3 , 87 bytes
Pruébalo en línea!
o
Pruébalo en línea!
fuente
Python 3, 97 bytes
fuente
[n-2][m-1]
lugar.Vim Script, 67 bytes
La función funciona con los dígrafos de Vim que se ingresan después de comenzarlos
ctrl-k.
Aparentemente, elctrl-k
carácter relevante después delexe'norm
no se representa en el bloque de código anterior.fuente