Dada uma fração no formato m/n
(onde m e n são números inteiros de coprime), imprima a fração Unicode correspondente. Não se espera que seu programa / função receba nenhuma entrada que não corresponda a um caractere Unicode. Matrizes, por exemplo [2, 3]
, ao contrário 2/3
, são aceitas. m / n
ao contrário m/n
também é bom. Duas entradas separadas m
e n
também são válidas.
As frações Unicode que devem ser tratadas são as seguintes:
½, ⅓, ⅔, ¼, ¾, ⅕, ⅖, ⅗, ⅘, ⅙, ⅚, ⅐, ⅛, ⅜, ⅝, ⅞, ⅑, ⅒
Assim, as entradas possíveis são as seguintes:
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
Os pontos de código Unicode dos caracteres são os seguintes:
188 ¼
189 ½
190 ¾
8528 ⅐
8529 ⅑
8530 ⅒
8531 ⅓
8532 ⅔
8533 ⅕
8534 ⅖
8535 ⅗
8536 ⅘
8537 ⅙
8538 ⅚
8539 ⅛
8540 ⅜
8541 ⅝
8542 ⅞
Casos de teste
1/2 -> ½
1/3 -> ⅓
2/3 -> ⅔
1/4 -> ¼
3/4 -> ¾
3/8 -> ⅜
1/10 -> ⅒
Faça seu código o mais curto possível; isso é código de golfe.
code-golf
kolmogorov-complexity
unicode
0WJYxW9FMN
fonte
fonte
188 ¼, 189 ½, 190 ¾, 8528 ⅐, 8529 ⅑, 8530 ⅒, 8531 ⅓, 8532 ⅔, 8533 ⅕, 8534 ⅖, 8535 ⅗, 8536 ⅘, 8537 ⅙, 8538 ⅚, 8539 ⅛, 8540 ⅜, 8541 ⅝, 8542 ⅞
Respostas:
JavaScript (Node.js) ,
7877 bytesGuardado 1 byte graças a @HermanLauenstein
Recebe entrada na sintaxe de currying
(m)(n)
.Experimente online!
fonte
String.fromCharCode()
, mas eu esperaria uma contagem de bytes semelhante.Perl 6 ,
4843 bytesTente
Tente
Expandido:
Observe que a pesquisa precisa ser dividida para que não retorne outros caracteres Unicode que tenham o mesmo unival. (caso contrário, seria
(1..*)
)fonte
UnicodeData.txt
. Por exemplo, U + 109BCMEROITIC CURSIVE FRACTION ELEVEN TWELFTHS
tem a propriedade de caracterenv=11/12
. Existem cerca de 1500 pontos de código com valores numéricos não vazios - muito mais do que esse pequeno desafio exige que se resolva. Estes são números inteiros ou racionais.JavaScript (ES6),
8886848179 bytesGuardado 2 bytes graças a @Arnauld
Não é tão curto quanto a outra resposta do JS, mas foi divertido calcular matematicamente o ponto de código de cada fração.
Snippet de teste
Mostrar snippet de código
Método antigo (82 bytes):
Economizei 4 bytes neste arquivo graças a @Arnauld.
fonte
-~'3 1'[n-6]
APL (Dyalog) ,
8864 bytesExperimente online!
-3 graças a dzaima .
Usando a abordagem de 84 bytes da ETHproductions.
O
f←
incluído no TIO não é contado, pois é colocado lá apenas para poder testar a função.fonte
SOGL V0.12 , 51 bytes
Experimente aqui!
usa o mapeamento
(m + n*5)%33%22
Explicação:
fonte
Clojure, 127 bytes
Uma função anônima que recebe entrada como
"1/2"
e retorna o caractere correspondente.Um mapeamento direto de um Clojure
Ratio
para um caractere de fração.comp
e o fato de os mapas de Clojure serem funções realmente ajudaram aqui. Eu precisava passar a entrada da stringread-string
para avaliá-la como um tipo de proporção, pois isso me permite descartar todas as aspas inchadas no mapa.comp
deixe-me fazer isso sem pontos, o que foi legal. O código "completo" seria:Depois de examinar as outras respostas, percebi que essa abordagem é bastante ingênua. Estou procurando maneiras de melhorá-lo.
fonte
Rápido ,
10682 bytesPorto da @Arnaulds resposta JavaScript
Guardado 24 bytes graças a @ Mr.Xcoder
Experimente online!
fonte
var f=
na contagem de bytes)Carvão ,
774846 bytesExperimente online! Link é a versão detalhada do código. Edit: Salvo
2931 bytes, mapeando de caracteres ASCII para caracteres de vários bytes. Explicação:fonte
Python 3 , 87 bytes
Experimente online!
ou
Experimente online!
fonte
Python 3, 97 bytes
fonte
[n-2][m-1]
.Script do Vim, 67 bytes
A função trabalha com os digrafos do Vim que são inseridos após iniciá-los.
ctrl-k.
Aparentemente, octrl-k
caractere relevante após oexe'norm
não é renderizado no bloco de código acima.fonte