Ihre Aufgabe ist es, eine Funktion oder ein Programm zu schreiben, die bzw. das zwei nicht negative ganze Zahlen i
und k
( i
≤ k
) enthält, und herauszufinden, wie viele Nullen Sie schreiben würden, wenn Sie alle ganzen Zahlen von i
bis k
(einschließlich) in die Basis Ihrer Wahl auf einem Stück schreiben würden aus Papier. Geben Sie diese Ganzzahl, die Anzahl der Nullen, als stdout oder ähnlich aus.
-30%
Wenn Sie auch ein drittes Argument akzeptieren b
, wird die Ganzzahlbasis zum Aufschreiben der Zahlen verwendet. Um diesen Bonus zu erhalten, müssen mindestens zwei Basen behandelt werden.
- Sie können die Eingabe in einer beliebigen Basis akzeptieren und die Basis zwischen Testfällen ändern.
- Sie können die Argumente akzeptieren
i
,k
und gegebenenfallsb
in beliebiger Reihenfolge. - Die Antworten müssen mindestens eine nicht unäre Basis behandeln.
Testfälle (in Basis 10):
i k -> output
10 10 -> 1
0 27 -> 3
100 200 -> 22
0 500 -> 92
Das ist Code-Golf; Wenigste Bytes gewinnen.
code-golf
number
base-conversion
counting
Filip Haglund
quelle
quelle
Antworten:
Gelee, 1 Byte
Dies verwendet base
k+2
. In diesem Fall gibt es eine einzelne 0, wenn f 0i
ist. Es werden zwei Argumente verwendet, aber das logische NOT wird nur auf das erste angewendet.Wenn wir nicht schummeln wollen:
7 Bytes - 30% = 4,9
-1,1 Punkte von @Dennis
Das bringt den Bonus.
quelle
Python 2, 36 Bytes
Kredit muddyfish für den `` Trick.
quelle
05AB1E ,
31 ByteVerwendet Base
k+2
wie die Jelly-Antwort, Code:Erläuterung:
Nicht betrügende 3-Byte-Version:
Code:
Erläuterung:
Der Bonus gibt mir 3,5 Bytes wegen eines Fehlers:
Erläuterung:
Verwendet die CP-1252-Codierung.
quelle
Japt, 3 Bytes
Verwendet Base
k+2
, als die Gelee-Antwort. Es gibt eine Null iffi==0
. Online testen!Bessere Version,
108 BytesDieser verwendet Base 10. Testen Sie es online!
Bonusversion,
1412 Bytes - 30% = 8,4Leider lohnt sich der Bonus beim Golfen nicht mehr ... Testen Sie ihn online!
Wie es funktioniert
quelle
ES6,
9186-30% = 60,2 BytesOder speichern Sie 3 (2.1) Bytes, wenn b nicht standardmäßig 10 sein muss.
Die beste Nicht-Bonus-Version, die ich machen konnte, war 65 Bytes:
Bearbeiten: 5 Bytes mit dem Zero-Counting-Trick von @ edc65 gespeichert.
quelle
Im Ernst, 10 Bytes
Erläuterung:
Probieren Sie es online!
Mit Bonus: 11,9 Bytes
Probieren Sie es online!
Erläuterung:
quelle
CJam,
12103 BytesDies geschieht mit der Verknüpfung @ThomasKwa.
Wenn dies nicht zulässig ist, ist hier eine 10-Byte-Antwort.
Schön und kurz! Funktioniert wie @ Megos Ernsthafte Antwort.
Vielen Dank @Dennis!
Viel Spaß beim Schreiben meiner ersten CJam-Antwort!
Probieren Sie es hier aus!
quelle
T-SQL, 394 Bytes (kein Bonus)
Ich denke , warum nicht ?
Und der Freundliche:
quelle
Ruby, 46 - 30% = 32,2 Bytes
Sie könnten wahrscheinlich mehr Golf spielen, aber zumindest bekomme ich den 30% Bonus!
... oder ohne den Bonus (27 Bytes)
Trinkgelder sind willkommen und lernen immer noch diese ganze "Ruby" -Sache.
quelle
(i..k)
ist so gut wie[*i..k]
im ersten Fall.Brachylog , 26 Bytes
Übernimmt die Eingabe als Liste
[i,k]
.Erläuterung
quelle
Julia, 48 Bytes - 30% = 33,6
Dies ist eine Funktion, die drei Ganzzahlen akzeptiert und eine Ganzzahl zurückgibt. Da eines der Argumente die Basis angibt, ist dies für den Bonus qualifiziert.
Ungolfed:
Das Implementieren des Bonus ergibt eine Punktzahl, die kaum besser ist als das Nicht-Implementieren (34 Bytes):
quelle
Im Ernst, 2 Bytes
Das mag den Trick mit der Gelee-Antwort bis an die Grenze bringen, aber hier ist eine einfache 2-Byte-Antwort.
Probieren Sie es online!
quelle
Pyth, 6,3 Bytes, mit Bonus (9 Bytes - 30%)
Erläuterung:
Probieren Sie es hier aus
Oder 7 Bytes ohne den Bonus:
Erläuterung:
Probieren Sie es hier aus
Oder verwenden Sie eine Testsuite
quelle
/sjRQ}EE0
PHP, 50 Bytes
unterstützt nur dezimal
unterstützt dezimal und binär mit Bonus 63
Unterstützt Dezimal, Hexadezimal, Oktal und Binär mit Bonus 77.7
unterstützt Base 2 - 36 mit Bonus 78.4
quelle
JavaScript (ES6), 50 (71 - 30%)
Kein Bonus, Basis k + 2 ist 10 Bytes
(i,k)=>+!i
Kein Bonus, unär ist 8 Bytes
(i,k)=>0
PRÜFUNG
quelle
o='0'
vor der Schleife verschieben, funktioniert Ihr Code auch dann nochk<i
.(i ≤ k)
. Update Ich habe dies versucht, aber in der Tat funktioniert es nicht für k <iJolf, 7 Bytes
Ersetzen
♂
durch\x11
. Probieren Sie es hier aus!quelle
Lua 74 Bytes
Es muss einen effektiveren Weg geben, dies zu tun ...
Ich dachte, ich wäre wirklich auf etwas hier:
Aber leider ... Es wird immer länger, als ich merke, dass es immer mehr Nullen gibt, die ich vergessen habe ...
quelle
APL, 22 Bytes
Dies ist eine monadische Funktion, die die Bereichsgrenzen links und rechts akzeptiert und eine Ganzzahl zurückgibt.
Ungolfed:
Probieren Sie es hier aus
quelle
Haskell, 29 Bytes
Ich benutze Basis 10 .
Anwendungsbeispiel:
100 # 200
->22
So funktioniert es: Verwandle jedes Element in der Liste von
i
bisk
in seine Zeichenfolgendarstellung, verkette es zu einer einzelnen Zeichenfolge, nimm ein1
für jedes Zeichen'0'
und summiere diese1
s.quelle
MATL , 7 (10 Bytes - 30% Bonus)
Probieren Sie es online!
Dies funktioniert in Release 11.0.2 , die als diese Herausforderung ist.
Erläuterung
quelle
Matlab: 27 Bytes
Erstellt einen Vektor von einer niedrigeren zu einer größeren Zahl, konvertiert dann alle Zahlen in eine Zeichenfolge und zählt alle '0'-Symbole.
quelle
Python 3, 52.
Versucht, den Bonus umzusetzen, aber es scheint sich nicht zu lohnen.
Mit Testfällen:
quelle
Perl 6 , 23 Bytes
$^i..$^k
).comb
ist eine Str-Methode).comb(/0/)
)+
)Verwendung:
quelle
Mathematica, 39 Bytes, 27,3 mit Bonus
quelle
C # 112 Bytes
quelle
PHP, 84 Bytes * .7 = 58,8 (Basen 2 bis 36)
oder
Nimmt dezimale Eingaben von Befehlszeilenargumenten entgegen. renn mit
-r
.quelle
<?=0
Unterstützt unär und alphabetisch. ;)PowerShell,
5654514842 ByteNimmt Eingaben auf, erstellt einen Bereich mit den
$i..$k
dann-join
zusammen in einer Zeichenfolge, gefolgt von einem Regex--split
Befehl, der die Zeichenfolge in ein Array trennt, indem er am Ende der Zeichenfolge ein Slice erstellt0
. Wir kapseln das mit().count-1
, um zu messen, wie viele Nullen es gibt. Das bleibt in der Pipeline und die Ausgabe ist implizit.6 Bytes gespart dank @ConnorLSW
Probieren Sie es online!
Das Base-Handling in PowerShell ist begrenzt und unterstützt keine willkürlichen Basen. Daher werde ich den Bonus nicht in Anspruch nehmen.
quelle
param($i,$k)(-join($i..$k)-split'0').Length-1
Funktioniert bei mir, -3, oder.Count-1
um noch mehr zu sparen, habe das aber noch nicht getestet.'0'
, so dass ein paar mehr abgeschnitten.Java 8, 102 Bytes - 30% = 71,4
Warum nicht.
Ohne den Bonus 96 Bytes (also verbessert der Bonus tatsächlich meine Punktzahl!):
Dies implementiert Folgendes:
quelle
Clojure,
5049 BytesOh Regex ist kürzer als Filtern. Original:
Sehr einfach, verwendet den Zeichensatz
\0
, um andere zu entfernen und zählt, wie viele gefunden wurden.quelle