Sua tarefa é escrever uma função ou programa que use dois números inteiros não negativos i
e k
( i
≤ k
) e descobrir quantos zeros você escreveria se escrevesse todos os números inteiros de i
até k
(inclusive) na sua base de escolha em uma peça de papel. Envie esse número inteiro, o número de zeros, para stdout ou similar.
-30%
se você também aceitar um terceiro argumento b
, a base inteira para anotar os números. Pelo menos duas bases devem ser manipuladas para obter esse bônus.
- Você pode aceitar a entrada em qualquer base que desejar e alterar a base entre os casos de teste.
- Você pode aceitar os argumentos e
i
,k
opcionalmente,b
em qualquer ordem que desejar. - As respostas devem lidar com pelo menos uma base que não é unária.
Casos de teste (na base 10):
i k -> output
10 10 -> 1
0 27 -> 3
100 200 -> 22
0 500 -> 92
Isso é código-golfe; menos bytes vencidos.
code-golf
number
base-conversion
counting
Filip Haglund
fonte
fonte
Respostas:
Geléia, 1 byte
Isso usa base
k+2
, caso em que existe um único 0 se 0i
é 0. São necessários dois argumentos, mas aplica o NOT lógico apenas ao primeiro.Se não queremos trapacear:
7 bytes - 30% = 4,9
-1,1 pontos por @Dennis
Isso recebe o bônus.
fonte
Python 2, 36 bytes
Crédito para muddyfish pelo `` truque.
fonte
05AB1E ,
31 byteUsa base
k+2
como a resposta Jelly, Código:Explicação:
Versão sem trapaças de 3 bytes:
Código:
Explicação:
O bônus me dá 3,5 bytes devido a um erro:
Explicação:
Usa a codificação CP-1252.
fonte
Japonês, 3 bytes
Usa base
k+2
, como a resposta da geléia. Existe um zero sei==0
. Teste online!Versão melhorada,
108 bytesEste usa a base 10. Teste online!
Versão bônus,
1412 bytes - 30% = 8,4Infelizmente, com o golfe que fiz, o bônus não vale mais a pena ... Teste on-line!
Como funciona
fonte
ES6,
9186 - 30% = 60,2 bytesOu salve 3 (2,1) bytes se b não precisar usar o padrão 10.
A melhor versão sem bônus que eu pude fazer foi de 65 bytes:
Editar: salvou 5 bytes usando o truque de contagem zero de @ edc65.
fonte
Sério, 10 bytes
Explicação:
Experimente online!
Com bônus: 11,9 bytes
Experimente online!
Explicação:
fonte
CJam,
12103 bytesIsso usa o atalho @ThomasKwa.
Se isso não for permitido, aqui está uma resposta de 10 bytes.
Bom e curto! Funciona como a resposta séria do @ Mego.
Obrigado @Dennis!
Diverti-me escrevendo minha primeira resposta CJam!
Experimente aqui!
fonte
T-SQL, 394 bytes (sem bônus)
Eu imagino 'por que não ', certo?
E o amigável:
fonte
Ruby, 46 - 30% = 32,2 bytes
Você provavelmente poderia jogar mais isso, mas pelo menos eu recebo o bônus de 30%!
... ou sem o bônus (27 bytes.)
Dicas são bem-vindas, ainda aprendendo toda essa coisa de "Ruby".
fonte
(i..k)
é tão bom quanto[*i..k]
no primeiro caso.Braquilog , 26 bytes
Leva a entrada como uma lista
[i,k]
.Explicação
fonte
Julia, 48 bytes - 30% = 33,6
Esta é uma função que aceita três números inteiros e retorna um número inteiro. Um dos argumentos especifica a base, portanto, qualifica-se para o bônus.
Ungolfed:
A implementação do bônus gera uma pontuação apenas um pouco melhor do que a não implementação (34 bytes):
fonte
Sério, 2 bytes
Isso pode levar o truque de resposta Jelly até o limite, mas aqui está uma resposta simples de 2 bytes a sério.
Experimente online!
fonte
Pitão, 6,3 bytes, com bônus (9 bytes - 30%)
Explicação:
Experimente aqui
Ou 7 bytes sem o bônus:
Explicação:
Experimente aqui
Ou use uma suíte de testes
fonte
/sjRQ}EE0
PHP, 50 bytes
suporta apenas decimal
suporta decimal e binário com bônus 63
suporta decimal, hexadecimal, octal e binário com bônus 77.7
suporta base 2 - 36 com bônus 78,4
fonte
JavaScript (ES6), 50 (71 - 30%)
Sem bônus, a base k + 2 é 10 bytes
(i,k)=>+!i
Nenhum bônus, unário é 8 bytes
(i,k)=>0
TESTE
fonte
o='0'
antes do loop, seu código continuará funcionando mesmo quandok<i
.(i ≤ k)
. Atualização Eu tentei isso, mas, na verdade, ele não funciona para k <iJolf, 7 bytes
Substitua
♂
por\x11
. Experimente aqui!fonte
Lua 74 bytes
Tem que haver uma maneira mais eficaz de fazer isso ...
Eu pensei que estava realmente em algo aqui:
Mas, infelizmente ... Ele está ficando cada vez mais longo, pois eu percebo que há mais e mais zeros que eu esqueci ...
fonte
APL, 22 bytes
Esta é uma função monádica que aceita os limites do intervalo à esquerda e à direita e retorna um número inteiro.
Ungolfed:
Experimente aqui
fonte
Haskell, 29 bytes
Estou usando a base 10 .
Exemplo de uso:
100 # 200
->22
Como funciona: transforme cada elemento da lista de
i
emk
para sua representação de string, concatene em uma única string, use a1
para cada caractere'0'
e some esses1
s.fonte
MATL , 7 (10 bytes - bônus de 30%)
Experimente online!
Isso funciona na liberação 11.0.2 , que é anterior a esse desafio.
Explicação
fonte
Matlab: 27 bytes
cria um vetor do número mais baixo para o maior, depois converte todos os números em string e conta todos os símbolos '0'.
fonte
Python 3, 52.
Tentou implementar o bônus, mas não parece valer a pena.
Com casos de teste:
fonte
Perl 6 , 23 bytes
$^i..$^k
).comb
é um método Str).comb(/0/)
)+
)Uso:
fonte
Mathematica, 39 bytes, 27,3 com bônus
fonte
C # 112 bytes
fonte
PHP, 84 bytes * .7 = 58,8 (bases 2 a 36)
ou
recebe entrada decimal dos argumentos da linha de comando; corra com
-r
.fonte
<?=0
suporta unário e alfabético. ;)PowerShell,
5654514842 bytesToma entrada, cria um intervalo com
$i..$k
, em seguida,-join
é que em conjunto numa cadeia de caracteres, seguido por uma expressão regular-split
de comando que separa a cadeia numa matriz de corte nos0
s. Encapsulamos isso com().count-1
para medir quantos zeros. Isso é deixado no pipeline e a produção está implícita.Guardado 6 bytes graças a @ConnorLSW
Experimente online!
O manuseio de base no PowerShell é limitado e não suporta bases arbitrárias, portanto, não vou pedir o bônus.
fonte
param($i,$k)(-join($i..$k)-split'0').Length-1
funciona para mim, -3, ou use.Count-1
para economizar ainda mais, ainda não testei isso.'0'
, para que aparem mais algumas.Java 8, 102 bytes - 30% = 71,4
Por que não.
Sem o bônus, 96 bytes (então o bônus realmente melhora minha pontuação!):
Isso implementa o seguinte:
fonte
Clojure,
5049 bytesOh regex é mais curto que a filtragem. Original:
Muito básico, usa o conjunto de caracteres
\0
para remover outros e conta quantos foram encontrados.fonte