Votre tâche consiste à écrire une fonction ou un programme qui prend deux entiers non négatifs i
et k
( i
≤ k
), et à déterminer combien de zéros vous écririez si vous écriviez tous les nombres entiers de i
à k
(inclus) dans votre base de choix sur une pièce de papier. Sortez cet entier, le nombre de zéros, vers stdout ou similaire.
-30%
si vous acceptez également un troisième argument b
, la base entière pour écrire les nombres. Au moins deux bases doivent être manipulées pour obtenir ce bonus.
- Vous pouvez accepter l'entrée dans n'importe quelle base de votre choix, et vous pouvez changer la base entre les cas de test.
- Vous pouvez accepter les arguments
i
,k
et éventuellementb
dans l'ordre que vous souhaitez. - Les réponses doivent gérer au moins une base qui n'est pas unaire.
Cas de test (en base 10):
i k -> output
10 10 -> 1
0 27 -> 3
100 200 -> 22
0 500 -> 92
C'est du code-golf; le moins d'octets gagne.
code-golf
number
base-conversion
counting
Filip Haglund
la source
la source
Réponses:
Gelée, 1 octet
Ceci utilise la base
k+2
, auquel cas il y a un seul 0 si sifflei
est 0. Il prend deux arguments, mais applique le NON logique uniquement au premier.Si nous ne voulons pas tricher:
7 octets - 30% = 4,9
-1,1 points par @Dennis
Cela obtient le bonus.
la source
Python 2, 36 octets
Crédit muddyfish pour le tour ``.
la source
05AB1E ,
31 octetUtilise une base
k+2
comme la réponse Jelly, Code:Explication:
Version 3 octets sans triche:
Code:
Explication:
Le bonus me donne 3,5 octets en raison d'un bug:
Explication:
Utilise l'encodage CP-1252.
la source
Japt, 3 octets
Utilise la base
k+2
, comme la réponse de Jelly. Il y a un zéro ssii==0
. Testez-le en ligne!Meilleure version,
108 octetsCelui-ci utilise la base 10. Testez-le en ligne!
Version bonus,
1412 octets - 30% = 8,4Malheureusement, avec le golf que j'ai fait, le bonus n'en vaut plus la peine ... Testez-le en ligne!
Comment ça fonctionne
la source
ES6,
9186-30 % = 60,2 octetsOu économisez 3 (2,1) octets si b n'a pas besoin d'être réglé par défaut sur 10.
La meilleure version non bonus que je pouvais faire était de 65 octets:
Edit: économisé 5 octets en utilisant l'astuce de comptage zéro de @ edc65.
la source
Sérieusement, 10 octets
Explication:
Essayez-le en ligne!
Avec bonus: 11,9 octets
Essayez-le en ligne!
Explication:
la source
CJam,
12103 octetsCela utilise le raccourci que fait @ThomasKwa.
Si cela n'est pas autorisé, voici une réponse de 10 octets.
Agréable et court! Fonctionne comme la réponse Serious de @ Mego.
Merci @Dennis!
Je me suis amusé à écrire ma première réponse CJam!
Essayez-le ici!
la source
T-SQL, 394 octets (sans bonus)
Je me dis «pourquoi pas », non?
Et le sympathique:
la source
Ruby, 46-30% = 32,2 octets
Vous pourriez probablement jouer au golf plus, mais au moins, j'obtiens le bonus de 30%!
... ou sans bonus (27 octets.)
Les conseils sont les bienvenus, tout en apprenant toute cette chose "Ruby".
la source
(i..k)
est aussi bon que[*i..k]
dans le premier cas.Brachylog , 26 octets
Prend la saisie sous forme de liste
[i,k]
.Explication
la source
Julia, 48 octets - 30% = 33,6
Il s'agit d'une fonction qui accepte trois entiers et renvoie un entier. L'un des arguments spécifie la base, donc cela donne droit au bonus.
Non golfé:
La mise en œuvre du bonus donne un score à peine meilleur que la non mise en œuvre (34 octets):
la source
Sérieusement, 2 octets
Cela pourrait amener la réponse Jelly à la limite, mais voici une réponse sérieuse simple de 2 octets.
Essayez-le en ligne!
la source
Pyth, 6,3 octets, avec bonus (9 octets - 30%)
Explication:
Essayez-le ici
Ou 7 octets sans le bonus:
Explication:
Essayez-le ici
Ou utilisez une suite de tests
la source
/sjRQ}EE0
PHP, 50 octets
prend en charge les décimales uniquement
prend en charge décimal et binaire avec Bonus 63
prend en charge décimal, hexadécimal, octal et binaire avec Bonus 77.7
prend en charge la base 2-36 avec Bonus 78.4
la source
JavaScript (ES6), 50 (71-30%)
Pas de bonus, la base k + 2 est de 10 octets
(i,k)=>+!i
Pas de bonus, unaire fait 8 octets
(i,k)=>0
TESTER
la source
o='0'
avant de la boucle, votre code continue de fonctionner même lorsquek<i
.(i ≤ k)
. Mise à jour J'ai essayé cela mais en fait ça ne marche pas pour k <iJolf, 7 bytes
Replace
♂
with\x11
. Try it here!la source
Lua 74 bytes
There's gotta be a more effective way to do this...
I thought I was really onto something here:
But alas... It keeps getting longer and longer as I realize there's more and more zeroes I forgot about...
la source
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
la source
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.la source
MATL, 7 (10 bytes − 30% bonus)
Try it online!
This works in release 11.0.2, which is earlier than this challenge.
Explanation
la source
Matlab: 27 bytes
creates a vector from lower number to larger one, then converts all numbers to string and counts all the '0' symbols.
la source
Python 3, 52.
Tried to implement the bonus, but it doesn't seem to be worth it.
With test cases:
la source
Perl 6, 23 bytes
$^i..$^k
).comb
is a Str method ).comb(/0/)
)+
)Usage:
la source
Mathematica, 39 bytes, 27.3 with bonus
la source
C# 112 Bytes
la source
PHP, 84 bytes *.7=58.8 (bases 2 to 36)
or
takes decimal input from command line arguments; run with
-r
.la source
<?=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.
la source
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:
la source
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.la source