Os franceses soletram números de uma maneira peculiar.
- 1-16 são "normais"
- 17-19 são escritos 10 + 7. 10 + 8, 10 + 9 .
- 20-69 são "normais" (OK, OK! Na verdade, mas eles estão nesse desafio)
- 70-79 são 60 + 10, 60 + 11 ... 60 + 10 + 7, 60 + 10 + 8, 60 + 10 + 9 .
- 80-99 são 4 * 20, 4 * 20 + 1, 4 * 20 + 2 ... 4 * 20 + 16, 4 * 20 + 10 + 7, 4 * 20 + 10 + 8, 4 * 20 + 10 + 9
Desafio:
Pegue um número inteiro positivo no intervalo [1.100] e faça a saída do modo "francês". Você deve saída lo exatamente como é mostrado abaixo, com *
e +
, por isso, 97
é 4*20+10+7
, não [4 20 10 7]
ou qualquer outra coisa.
Casos de teste:
1 - 1
.. - ..
16 - 16
17 - 10+7
18 - 10+8
19 - 10+9
20 - 20
21 - 21
.. - ..
69 - 69
70 - 60+10
71 - 60+11
72 - 60+12
77 - 60+10+7
78 - 60+10+8
79 - 60+10+9
80 - 4*20
81 - 4*20+1
82 - 4*20+2
.. - ..
90 - 4*20+10
91 - 4*20+11
96 - 4*20+16
97 - 4*20+10+7
98 - 4*20+10+8
99 - 4*20+10+9
100 - 100
code-golf
number
kolmogorov-complexity
Stewie Griffin
fonte
fonte
16
para10+7
cima. (Em inglês, isso acontece entre12
e10+3
, com um pouco mais de disfarce morfológico.) Eu sempre fui um pouco superestimada com o fato de que diferentes idiomas fazem essa transição em números diferentes.22
quando "dix-huit" é10+8
?Respostas:
Excel,
153149 bytesTenho certeza de que isso poderia ser melhor, lutei para encontrar uma maneira eficiente de explicar a # 80.
editar: consolidou os casos 'normais' para economizar 4 bytes. # 80 ainda é uma merda.
Não foi possível encontrar uma resposta específica aqui, não tenho certeza das regras do code-golf tbh. Posso usar várias células no Excel e adicionar a contagem de bytes de cada uma?
ie Para uma entrada na célula A1
A2: 11 bytes
A3 (resultado): 125 bytes
Para um total de 136?
fonte
IF(A1=80,,IF(MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,"+"&MOD(A1,20)))
paraIFS(A1=80,,MOD(A1,20)>16,"+10+"&MOD(A1,20)-10,1,"+"&MOD(A1,20))
)
o final, pode fazer o mesmo no Excel? Assim, você pode salvar 5 "bytes" (realmente existem UCS2-Chars, portanto, se você disser Byte == octeto, deve contar em dobro). E você deve alterar a,
em;
Retina ,
5248 bytes4 bytes salvos graças a Neil
Experimente online! ou verifique todas as entradas (fornecidas por Neil)
Explicação
Primeiro, lidamos com a tradução de 70, 80 e 90. Nesses três primeiros estágios, um 7 no início com outro caractere a seguir é substituído por
60+1
. Da mesma forma,9
é substituído por81
e8
por4*20+1
. A substituição de9
é essencialmente alterá-lo para "oitenta e dez" e tal, para que o8
item seja tratado pela próxima substituição, que economiza bytes ao escrever4*20+1
duas vezes.Isso lida com os casos de
17
,18
e19
substituindo o1
em cada um por10+
.Finalmente, nunca deve haver um
+0
no final, então exclua-o se estiver lá.fonte
7-9
, mas acho que você não precisa olhar para trás: experimente online!$1
é tão longo quanto?=
.Python 2 , 98 bytes
Experimente online!
fonte
JavaScript (ES6),
7371 bytesVersão bônus que imprime os números à medida que são escritos na verdade por mais 2 bytes:
fonte
23
, por exemplo, deve produzir23
, não20+3
.(m=n%20)
m
é redefinido0
naf(n-n%20)
chamada. (É uma variável global)n<70|n>99
paran%100<70
. Além disso, você poderia adicionar um compilador de teste?R, 110 bytes
fonte
(i-r)/10
vez defloor(i/10)
. Ei>15
deveria seri>16
.PHP, 99 bytes (eu quero ser a versão feliz)
uma porta reta de JS da ETHproductions , 4 bytes de golfe. Imprime os números conforme solicitado pelo OP.
demolir
Quero a versão correta,
11498 bytesnova abordagem inspirada na ETHproductions , imprime os números à medida que são detalhados.
experimente online .
demolir
fonte
Python 2,
130108 bytes22 bytes salvos graças a @mathjunkie
Experimente online!
fonte
f=
porque o usou dentro do lambda.Lote,
220217 bytesRecebe entrada em STDIN. Gerar e remover os principais
+
economiza 1 byte sobre o invólucro especial 80. Edit: Salvo 3 bytes graças ao @ ConorO'Brien.fonte
@echo off
e prefixar todas as declarações exceto para instrução de loop hte com@
Geléia , 55 bytes
Experimente online! ou veja uma suíte de testes
Sem dúvida, há um caminho mais curto!
Quão?
fonte
Pitão,
6156 bytesTeste online!
Agradecemos a Leaky Nun por uma melhoria de 5 bytes!
Explicação:
fonte
*-Q100>Q69
→ #}/QTr6T
@]b}17 19
→ #}b}17 19
+"10+"eb
→ #j\+,Teb
Python3, 127 bytes
Cada elemento da matriz contém sua representação:
Na verdade, o código não cria uma função, apenas uma matriz - não sei se isso é permitido. Caso contrário, eu teria que fazer isso 139 bytes adicionando
f=[...].__getitem__
.fonte
f=
, porque funções não nomeadas (ou seja, expressões que são avaliadas para a função enviada) são boas, a menos que o nome seja necessário para algo como recursão.Java 7,
9796109 bytes+13 bytes para o caso de correção de erros
80
.. :(Explicação:
Código do teste:
Experimente aqui.
fonte