Twoim zadaniem jest napisanie funkcji lub programu, który przyjmuje dwie nieujemne liczby całkowite i
i k
( i
≤ k
), i dowiedzieć się, ile zer byś napisał, gdybyś napisał wszystkie liczby całkowite od i
do k
(włącznie) w wybranej bazie na kawałku z papieru. Wypisuje tę liczbę całkowitą, liczbę zer, na standardowe wyjście lub podobne.
-30%
jeśli zaakceptujesz również trzeci argument b
, podstawa liczb całkowitych do zapisania liczb. Aby uzyskać ten bonus, należy obsłużyć co najmniej dwie podstawy.
- Możesz zaakceptować dane wejściowe w dowolnej bazie i możesz zmienić bazę między przypadkami testowymi.
- Można przyjąć argumenty
i
,k
i ewentualnieb
w dowolnej kolejności. - Odpowiedzi muszą obsługiwać co najmniej jedną bazę, która nie jest jednostkowa.
Przypadki testowe (w bazie 10):
i k -> output
10 10 -> 1
0 27 -> 3
100 200 -> 22
0 500 -> 92
To jest golf golfowy; najmniej bajtów wygrywa.
code-golf
number
base-conversion
counting
Filip Haglund
źródło
źródło
Odpowiedzi:
Galaretka, 1 bajt
Używa podstawy
k+2
, w którym to przypadku jest jeden 0 iffi
wynosi 0. To wymaga dwóch argumentów, ale logiczne NIE stosuje tylko do pierwszego.Jeśli nie chcemy oszukiwać:
7 bajtów - 30% = 4,9
-1.1 punktów autor: @Dennis
To dostaje bonus.
źródło
Python 2, 36 bajtów
Kredyt dla muddyfish dla `` sztuczki.
źródło
05AB1E ,
31 bajtUżywa bazy
k+2
jak odpowiedź Jelly, Code:Wyjaśnienie:
3-bajtowa wersja bez oszustwa:
Kod:
Wyjaśnienie:
Bonus daje mi 3,5 bajta z powodu błędu:
Wyjaśnienie:
Wykorzystuje kodowanie CP-1252.
źródło
Japt, 3 bajty
Używa bazy
k+2
, jak odpowiada galaretka. Jest zero iffi==0
. Przetestuj online!Lepsza wersja,
108 bajtówTen używa bazy 10. Przetestuj online!
Wersja premiowa,
1412 bajtów - 30% = 8,4Niestety, gdy grałem w golfa, bonus nie jest już tego wart ... Przetestuj online!
Jak to działa
źródło
ES6,
9186-30 % = 60,2 bajtówLub zapisz 3 (2.1) bajty, jeśli b nie musi mieć domyślnie 10.
Najlepsza wersja bez premii, jaką mogłem zrobić, to 65 bajtów:
Edycja: Zapisano 5 bajtów, używając sztuczki liczenia zera @ edc65.
źródło
Poważnie, 10 bajtów
Wyjaśnienie:
Wypróbuj online!
Z premią: 11,9 bajtów
Wypróbuj online!
Wyjaśnienie:
źródło
CJam,
12103 bajtówUżywa to skrótu @ThomasKwa.
Jeśli nie jest to dozwolone, oto 10-bajtowa odpowiedź.
Miło i krótko! Działa jak poważna odpowiedź @ Mego.
Dzięki @Dennis!
Bawiłem się pisząc moją pierwszą odpowiedź CJam!
Wypróbuj tutaj!
źródło
T-SQL, 394 bajtów (bez premii)
Myślę, że „dlaczego nie ”, prawda?
I przyjazny:
źródło
Rubinowy, 46–30% = 32,2 bajtów
Prawdopodobnie mógłbyś zagrać w golfa więcej, ale przynajmniej dostaję 30% bonus!
... lub bez premii (27 bajtów)
Wskazówki są mile widziane, wciąż ucząc się tego całego „Rubinowego”.
źródło
(i..k)
jest tak samo dobry jak[*i..k]
w pierwszym przypadku.Brachylog , 26 bajtów
Pobiera dane wejściowe jako listę
[i,k]
.Wyjaśnienie
źródło
Julia, 48 bajtów - 30% = 33,6
Jest to funkcja, która akceptuje trzy liczby całkowite i zwraca liczbę całkowitą. Jeden z argumentów określa podstawę, więc kwalifikuje się do premii.
Nie golfowany:
Wdrożenie premii daje wynik niewiele lepszy niż brak implementacji (34 bajty):
źródło
Poważnie, 2 bajty
Może to doprowadzić do wyczerpania sztuczki z odpowiedzią Jelly, ale oto prosty 2-bajtowy Poważnie.
Wypróbuj online!
źródło
Pyth, 6,3 bajtów, z premią (9 bajtów - 30%)
Wyjaśnienie:
Wypróbuj tutaj
Lub 7 bajtów bez premii:
Wyjaśnienie:
Wypróbuj tutaj
Lub użyj pakietu testowego
źródło
/sjRQ}EE0
PHP, 50 bajtów
obsługuje tylko dziesiętne
obsługuje dziesiętne i binarne z Bonus 63
obsługuje dziesiętne, szesnastkowe, ósemkowe i binarne z Bonusem 77.7
obsługuje bazę 2 - 36 z Bonusem 78,4
źródło
JavaScript (ES6), 50 (71–30%)
Bez premii, podstawa k + 2 to 10 bajtów
(i,k)=>+!i
Bez premii, jednoosobowy to 8 bajtów
(i,k)=>0
TEST
źródło
o='0'
pętlę przed, Twój kod będzie działał nawet wtedy, gdyk<i
.(i ≤ k)
. Aktualizacja Próbowałem tego, ale w rzeczywistości nie działa dla k <iJolf, 7 bajtów
Wymień
♂
się\x11
. Wypróbuj tutaj!źródło
Lua 74 bajty
Musi być bardziej skuteczny sposób, aby to zrobić ...
Myślałem, że naprawdę mnie tu coś interesuje:
Ale niestety ... To staje się coraz dłuższe, ponieważ zdaję sobie sprawę, że jest coraz więcej zer, o których zapomniałem ...
źródło
APL, 22 bajty
Jest to funkcja monadyczna, która akceptuje granice zakresu po lewej i prawej stronie i zwraca liczbę całkowitą.
Nie golfowany:
Wypróbuj tutaj
źródło
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.źródło
MATL, 7 (10 bytes − 30% bonus)
Try it online!
This works in release 11.0.2, which is earlier than this challenge.
Explanation
źródło
Matlab: 27 bytes
creates a vector from lower number to larger one, then converts all numbers to string and counts all the '0' symbols.
źródło
Python 3, 52.
Tried to implement the bonus, but it doesn't seem to be worth it.
With test cases:
źródło
Perl 6, 23 bytes
$^i..$^k
).comb
is a Str method ).comb(/0/)
)+
)Usage:
źródło
Mathematica, 39 bytes, 27.3 with bonus
źródło
C# 112 Bytes
źródło
PHP, 84 bytes *.7=58.8 (bases 2 to 36)
or
takes decimal input from command line arguments; run with
-r
.źródło
<?=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.
źródło
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:
źródło
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.źródło