Imprima todos os números de 0 a 100 na ordem correta, usando a maneira dinamarquesa de contar
Como eles contam
- Como o inglês, eles têm palavras dedicadas para 0-20, 30, 40 e 100
- Em vez de dizer
twenty-one
etwenty-two
, eles dizemone and twenty
etwo and twenty
Começando com cinquenta, eles dizem múltiplos de 10 como n * 20
50 = half third times twenty = half way to the 3rd multiple of 20 60 = three times twenty 70 = half fourth times twenty 80 = four times twenty 90 = half fifth times twenty
Assim, por exemplo, 55 seria
five and half third times twenty
.
Saída esperada
zero
one
two
three
four
five
six
seven
eight
nine
ten
eleven
twelve
thirteen
fourteen
fifteen
sixteen
seventeen
eighteen
nineteen
twenty
one and twenty
two and twenty
three and twenty
four and twenty
five and twenty
six and twenty
seven and twenty
eight and twenty
nine and twenty
thirty
one and thirty
two and thirty
three and thirty
four and thirty
five and thirty
six and thirty
seven and thirty
eight and thirty
nine and thirty
forty
one and forty
two and forty
three and forty
four and forty
five and forty
six and forty
seven and forty
eight and forty
nine and forty
half third times twenty
one and half third times twenty
two and half third times twenty
three and half third times twenty
four and half third times twenty
five and half third times twenty
six and half third times twenty
seven and half third times twenty
eight and half third times twenty
nine and half third times twenty
three times twenty
one and three times twenty
two and three times twenty
three and three times twenty
four and three times twenty
five and three times twenty
six and three times twenty
seven and three times twenty
eight and three times twenty
nine and three times twenty
half fourth times twenty
one and half fourth times twenty
two and half fourth times twenty
three and half fourth times twenty
four and half fourth times twenty
five and half fourth times twenty
six and half fourth times twenty
seven and half fourth times twenty
eight and half fourth times twenty
nine and half fourth times twenty
four times twenty
one and four times twenty
two and four times twenty
three and four times twenty
four and four times twenty
five and four times twenty
six and four times twenty
seven and four times twenty
eight and four times twenty
nine and four times twenty
half fifth times twenty
one and half fifth times twenty
two and half fifth times twenty
three and half fifth times twenty
four and half fifth times twenty
five and half fifth times twenty
six and half fifth times twenty
seven and half fifth times twenty
eight and half fifth times twenty
nine and half fifth times twenty
one hundred
Regras
- Você pode usar qualquer separador para separar os números
- Devido a um erro de digitação na especificação original, você pode usar em
forth
vez defourth
. - Você pode escrever uma função ou gravar em std-out
- Aplicam-se brechas padrão
- Isso é codegolf; o menor código em bytes ganha!
Respostas:
JavaScript (ES6),
347336326325308 bytesAntes de executar, substitua o
...
pelo resultado da execução deste código:Ou você pode simplesmente usar a versão não compactada:
Ainda provavelmente não é o ideal. 11 bytes salvos em parte por @Titus.
fonte
(x%20>9?"half ":"")+[third,forth,fifth][x/20-2.5|0]
vez de(x%20>9?"half "+[third,forth,fifth][x/20-2.5|0]:f(x/20|0))
third times twenty
em vez dethree times twenty
)Fourier , 7028 bytes
A recompensa irá para a resposta de Paul Schmitz
Isso foi jogado de forma programática usando o programa de golfe do issacg
Experimente online!
fonte
JavaScript (ES6), não concorrente
Decidi fazer o que o título realmente pedia e contei até 100 på dansk. Isso é baseado na resposta da ETHproductions . São 292 bytes (286 se você usar o alerta)
fonte
five and half third t
.Mathematica
251 238230 bytesIsso agora apresenta a saída no formato de uma lista, para salvar mais 8 bytes.
fonte
NumberExpand
também é útil para decompor um número (em qualquer base). `NumberExpand [943] -> {900,40,3}/// , 434 bytes
Experimente online!
fonte
PHP,
397375372381386365 bytesIsso era engraçado demais para ser ignorado. Possivelmente pode ser jogado ainda mais.
fonte
PHP,
333328321 bytesA expressão do @ ETHproductions foi portada para PHP e reduzida. Estou surpreso que o PHP possa vencer o JavaScript sem nenhum built-in .
Eu acho que os componentes mais poderosos são as previsões implícitas:
MAS: Eu preciso de
$
s (21 deles) para dizer ao PHP que é uma variável.Ainda não está claro de onde vêm os 15 bytes. Eu não joguei muito fora. Ou eu fiz? ETH apanhados.
fonte
C (gcc) ,
445426452449444439 bytesExperimente online!
192227 bytes cortados graças a @ceilingcat, mas 26 bytes foram adicionados novamente, 3 para evitar um segfault (o [] realmente precisa ter 101 entradas) e, ao verificar as regras novamente, notei que tínhamos que imprimir todos os números de 0 a 100, não apenas forneça uma função que imprima um número.Ungolfed:
fonte
Fourier, 7020 bytes
Esta é uma versão aprimorada do programa Beta Decays.
fonte
Haskell,
308291285 bytesVersão legível:
Também 285
Pode não parecer muito diferente, mas representa horas de fatoração que eventualmente me trouxeram um círculo completo. Eu acho que já fiz isso antes ..
fonte
format nil "~R"
que converte números para sua representação de texto InglêsPython 2,
359349345 bytesExplicação:
Crie uma lista dos 9 primeiros números.
Crie uma lista dos próximos 10 números.
Criar uma lista das terminações -
twenty
,thirty
,forty
,half third times twenty
etcJunte-se às duas primeiras listas com
zero
Anexar à lista de cada um dos números de 50 em diante.
Imprimir lista
Código não destruído:
fonte
in
; mudeq
para o único local em que é usado; dofor i in f+['one hundred']:print i
Python 2, com num2words, 206 bytes
Mesmo com num2words, são necessários alguns bytes!
Este é um programa completo.
Aqui está uma versão zombada do ideone
(com zombaria, quero dizer que, como o intérprete on-line não possui
num2words
, substituí-ow
por umlambda
que procura anum2word
saída de uma lista)ungolfed e com 'quarto' em vez do permitido 'adiante' (que salva um byte):
Observe que o separador usado por
num2words(100)
é um espaço, enquanto para os outros números é um "-", portanto, não precisamos fazer nada sofisticado para esse caso senão impedir que ele seja "cinco vezes vinte".a parte, de lado
Se o desafio fosse realmente produzir os números em dinamarquês, seria possível pegar o lang_DK.py na página do github e usar:
para 68 bytes, produzindo:
fonte
Bash (usando
rev
esed
),299276 bytesEu estou usando chaves de expansão do bash. No entanto, as chaves são expandidas na ordem errada, por isso imprimo todas as palavras em ordem invertida e depois fixo a ordem das letras usando
rev
. Depois disso, ainda preciso de alguns ajustes usandosed
:Um pouco menos ilegível:
fonte
JavaScript (ES6), 346 bytes
Apenas uma pequena idéia para a solução da ETHproductions: Substitua
f(..)
pora[..]
para poder ligarf
recursivamente para concaturar a saída.Ainda longe do ideal ...
fonte
Java
87,512490 + 19 bytes (importação)Precisa de uma importação
import java.util.*;
Ungolfed:
Para executar isso, basta ligar
<instance>.x();
. Isso agora retorna a lista que contém todos os números.Experimente aqui!
fonte
PHP, 318 bytes
primeira escolha com o operador coalescente nulo? as exceções.
esta versão com 314 bytes não possui, no final
fonte
05AB1E ,
127123120115 bytesExperimente online!
fonte
tinta , 286 bytes
Experimente online!
A tinta tem sequências - elas se parecem
{a|b|c}
e avaliam um valor diferente a cada vez, até que não exista um valor próximo no qual elas permaneçam com a última - é por isso que{||teen}
continua emitindoteen
após a saída nada nas duas primeiras vezes que é encontrada. Ao combinar e aninhar esses, podemos avançar bastante com muito pouco em termos de condicionais reais.Uma sequência que começa com
{&
não apenas,{
é um ciclo - esses ciclos e é assim que contamos unidades e como alternamos entre "meia enésima vez vinte" e "n vezes vinte" para as dezenas.Nós controlamos o nome das dezenas em uma variável
t
que somente atualizamos a cada décimo passo no loop. Nos passes em que atualizamos a variável, imprimimos apenas a variável, nos outros passes usamos ciclos para imprimir a unidade seguida porand {t}
.Com algumas exceções - abaixo de dez, pulamos a impressão das dezenas (não
three and zero
) e os adolescentes são irregulares o suficiente para obter uma sequência só para eles.c
é uma reunião rotulada. Reuniões sozinhas não fazem nada, mas podem ser desviadas como uma forma de fluxo de controle e registram quantas vezes foram visitadas - usamos esse número de leitura para casos especiais dos adolescentes, para saber quando precisamos atualizar a variável dezenas e saber quando parar o loop, embrulhe tudo e imprima cem.Eu sei que poderia salvar um byte usando "adiante" em vez de "quarto", mas estou optando por não.
Ungolfed
fonte