Su tarea es escribir una función o programa que tome dos enteros no negativos i
y k
( i
≤ k
), y calcule cuántos ceros escribiría si escribiera todos los números enteros desde i
hasta k
(inclusive) en su base de elección en una pieza de papel. Genere este número entero, el número de ceros, en stdout o similar.
-30%
si también acepta un tercer argumento b
, la base entera para anotar los números. Se deben manejar al menos dos bases para lograr este bono.
- Puede aceptar la entrada en cualquier base que desee, y puede cambiar la base entre casos de prueba.
- Puede aceptar los argumentos y
i
,k
opcionalmente,b
en el orden que desee. - Las respuestas deben manejar al menos una base que no sea unaria.
Casos de prueba (en base 10):
i k -> output
10 10 -> 1
0 27 -> 3
100 200 -> 22
0 500 -> 92
Este es el código de golf; menos bytes ganan.
code-golf
number
base-conversion
counting
Filip Haglund
fuente
fuente
Respuestas:
Jalea, 1 byte
Esto usa base
k+2
, en cuyo caso hay un solo 0 iffi
es 0. Toma dos argumentos, pero aplica el NOT lógico solo al primero.Si no queremos hacer trampa:
7 bytes - 30% = 4.9
-1.1 puntos por @Dennis
Esto recibe la bonificación.
fuente
Python 2, 36 bytes
Crédito a muddyfish por el `` truco.
fuente
05AB1E ,
31 byteUtiliza la base
k+2
como la respuesta Jelly, Código:Explicación:
Versión de 3 bytes sin trampa:
Código:
Explicación:
El bono me da 3.5 bytes debido a un error:
Explicación:
Utiliza la codificación CP-1252.
fuente
Japt, 3 bytes
Utiliza base
k+2
, como responde la gelatina. Hay un cero iffi==0
.¡Pruébalo en línea!Mejor versión,
108 bytesEste usa la base 10. Pruébelo en línea!
Versión de bonificación,
1412 bytes - 30% = 8.4Lamentablemente, con el golf que hice, el bono ya no vale la pena ... Pruébelo en línea!
Cómo funciona
fuente
ES6,
9186 - 30% = 60.2 bytesO guarde 3 (2.1) bytes si b no necesita tener un valor predeterminado de 10.
La mejor versión sin bonificación que pude hacer fue 65 bytes:
Editar: guardado 5 bytes usando el truco de conteo cero de @ edc65.
fuente
En serio, 10 bytes
Explicación:
Pruébalo en línea!
Con bonificación: 11.9 bytes
Pruébalo en línea!
Explicación:
fuente
CJam,
12103 bytesEsto usa el atajo que hace @ThomasKwa.
Si esto no está permitido, entonces aquí hay una respuesta de 10 bytes.
Agradable y corto! Funciona como la respuesta seria de @Mego.
Gracias @ Dennis!
¡Me divertí escribiendo mi primera respuesta de CJam!
Pruébalo aquí!
fuente
T-SQL, 394 bytes (sin bonificación)
Me imagino 'por qué no ', ¿verdad?
Y el amigable:
fuente
Ruby, 46 - 30% = 32.2 bytes
Probablemente podría jugar más, pero al menos obtengo el 30% de bonificación.
... o sin la bonificación (27 bytes).
Los consejos son bienvenidos, todavía estoy aprendiendo todo este asunto de "Ruby".
fuente
(i..k)
es tan bueno como[*i..k]
en el primer caso.Brachylog , 26 bytes
Toma la entrada como una lista
[i,k]
.Explicación
fuente
Julia, 48 bytes - 30% = 33.6
Esta es una función que acepta tres enteros y devuelve un entero. Uno de los argumentos especifica la base, por lo que califica para la bonificación.
Sin golf:
Implementar el bono produce una puntuación apenas mejor que no implementarlo (34 bytes):
fuente
En serio, 2 bytes
Esto podría llevar el truco de respuesta Jelly al límite, pero aquí hay una respuesta simple de 2 bytes en serio.
Pruébalo en línea!
fuente
Pyth, 6.3 bytes, con bonificación (9 bytes - 30%)
Explicación:
Pruébalo aquí
O 7 bytes sin la bonificación:
Explicación:
Pruébalo aquí
O use una suite de prueba
fuente
/sjRQ}EE0
PHP, 50 bytes
solo admite decimales
admite decimal y binario con Bonus 63
admite decimal, hexadecimal, octal y binario con Bonus 77.7
admite base 2 - 36 con Bonus 78.4
fuente
JavaScript (ES6), 50 (71 - 30%)
Sin bonificación, la base k + 2 es de 10 bytes
(i,k)=>+!i
Sin bonificación, unario es de 8 bytes
(i,k)=>0
PRUEBA
fuente
o='0'
antes del bucle, su código continúa funcionando incluso cuandok<i
.(i ≤ k)
. Actualización Intenté esto, pero de hecho no funciona para k <iJolf, 7 bytes
Reemplazar
♂
con\x11
. Pruébalo aquí!fuente
Lua 74 bytes
Tiene que haber una forma más efectiva de hacer esto ...
Pensé que realmente estaba en algo aquí:
But alas... It keeps getting longer and longer as I realize there's more and more zeroes I forgot about...
fuente
APL, 22 bytes
This is a monadic function that accepts the range boundaries on the left and right and returns an integer.
Ungolfed:
Try it here
fuente
Haskell, 29 bytes
I'm using base 10.
Usage example:
100 # 200
->22
How it works: turn each element in the list from
i
tok
into it's string representation, concatenate into a single string, take a1
for every char'0'
and sum those1
s.fuente
MATL, 7 (10 bytes − 30% bonus)
Try it online!
This works in release 11.0.2, which is earlier than this challenge.
Explanation
fuente
Matlab: 27 bytes
creates a vector from lower number to larger one, then converts all numbers to string and counts all the '0' symbols.
fuente
Python 3, 52.
Tried to implement the bonus, but it doesn't seem to be worth it.
With test cases:
fuente
Perl 6, 23 bytes
$^i..$^k
).comb
is a Str method ).comb(/0/)
)+
)Usage:
fuente
Mathematica, 39 bytes, 27.3 with bonus
fuente
C# 112 Bytes
fuente
PHP, 84 bytes *.7=58.8 (bases 2 to 36)
or
takes decimal input from command line arguments; run with
-r
.fuente
<?=0
supports unary and alphabetic. ;)PowerShell,
5654514842 bytesTakes input, creates a range with
$i..$k
then-join
s that together into a string, followed by a regex-split
command that separates the string into an array by slicing at the0
s. We encapsulate that with().count-1
to measure how many zeros. That's left on the pipeline, and output is implicit.Saved 6 bytes thanks to @ConnorLSW
Try it online!
Base-handling in PowerShell is limited and doesn't support arbitrary bases, so I'm not going for the bonus.
fuente
param($i,$k)(-join($i..$k)-split'0').Length-1
works for me, -3, or use.Count-1
to save even more, haven't tested that yet though.'0'
, so that trimmed off a few more.Java 8, 102 bytes - 30% = 71.4
Why not.
Without the bonus, 96 bytes (so the bonus actually improves my score!):
This implements the following:
fuente
Clojure,
5049 bytesOh regex is shorter than filtering. Original:
Very basic, uses the set of character
\0
to remove others and counts how many were found.fuente