Finden Sie die ursprüngliche Herausforderung hier
Herausforderung
Geben Sie bei einer gegebenen Ganzzahl Z
im Bereich -2^31 < Z < 2^31
die Anzahl der Ziffern in dieser Zahl aus (in Basis 10).
Regeln
Sie dürfen keine Zeichenfolgenfunktionen verwenden (im Falle einer Überladung dürfen Sie keine Zeichenfolge an Funktionen übergeben, die sowohl als Zeichenfolgen- als auch als Ganzzahlfunktionen fungieren). Sie dürfen die Nummer nicht als Zeichenfolge speichern.
Alle mathematischen Funktionen sind erlaubt.
Sie können Eingaben in einer beliebigen Basis vornehmen, die Ausgabe muss jedoch der Länge der Zahl in Basis 10 entsprechen.
Zählen Sie das Minuszeichen nicht für negative Zahlen. Die Zahl wird niemals eine Dezimalzahl sein.
Null ist effektiv eine führende Null, daher kann sie eine Null oder eine Ziffer haben.
Beispiele
Input > Output
-45 > 2
1254 > 4
107638538 > 9
-20000 > 5
0 > 0 or 1
-18 > 2
Gewinnen
Der kürzeste Code in Bytes gewinnt.
Antworten:
Mathematica, 13 Bytes
Gut...
quelle
Python 2 , 30 Bytes
Probieren Sie es online aus!
quelle
Japt ,
53 BytesProbieren Sie es online aus!
quelle
a
Unnötige macht - 5 Minuten bevor die Herausforderung veröffentlicht wurde :-) Leider bedeutet das, dass es nur auf dem Online-Interpreter funktioniert. ( Online testen! )JavaScript (ES6), 19 Byte
quelle
f=
.Gelee ,
32 Bytes1 Byte dank Leaky Nun gespeichert
Probieren Sie es online aus!
Erläuterung
quelle
DL
?D
). Die Herausforderung lautet: Im Falle einer Überladung dürfen Sie keine Zeichenfolge an Funktionen übergeben, die sowohl als Zeichenfolgen- als auch als Ganzzahlfunktionen fungieren. Diese Antwort folgt dieser Regel: Ich übergebe keine ZeichenfolgeMeine Antwort von der anderen Herausforderung funktioniert immer noch:
Brachylog , 1 Byte
Probieren Sie es online aus!
Das
l
eingebaute Gerät ist überladen, bei Ganzzahlen wird jedoch die Anzahl der Stellen der Ganzzahl verwendet, wobei das Vorzeichen ignoriert wird.quelle
Kettencode , 5 Bytes
Hinweis: Dies ist genau der gleiche Code wie bei der anderen Herausforderung
Erläuterung
quelle
Gleichstrom , 1 Byte
Probieren Sie es online aus!
Keine eingebaute, 18 Bytes:
Probieren Sie es online aus!
quelle
SILOS , 41 Bytes
Probieren Sie es online aus!
Rückgabe
1
für0
.quelle
Lua , 40 Bytes
Port von meiner Python-Antwort
Probieren Sie es online aus!
quelle
Java 8,
61593937 BytesPort aus der C # -Antwort von @TheLethalCoder , jedoch ohne die,
Math.floor
da bei Verwendung eines(int)
-casts Dezimalstellen in Java automatisch entfernt / abgeschnitten werden.Probieren Sie es online aus.
Rekursive Java 7-Antwort (
6138 Byte ):Port of @ Khaled.Ks C-Antwort .
Probieren Sie es online aus.
quelle
C #,
4956 Bytesquelle
Alice , 16 Bytes
Probieren Sie es online aus!
Erläuterung
Dies ist einfach ein Rahmen für die numerische Eingabe → mathematische Verarbeitung → numerische Ausgabe.
Der Rest des Codes ist der eigentliche Algorithmus:
quelle
Python 2 , 48 Bytes
-3 dank ovs -1 dank pizzapants
Probieren Sie es online aus!
quelle
lambda x:1+log10(abs(x)+.1)//1
für 48 Bytesimport math
undmath.log10
spart ein ByteC, 27 Bytes
Versuchen Sie es online
C (gcc), 22 Bytes
Mit Mathe 29 Bytes
quelle
R , 40 Bytes
Probieren Sie es online aus!
quelle
MATL , 5 Bytes
Probieren Sie es online aus!
Erläuterung
quelle
05AB1E , 6 Bytes
Probieren Sie es online aus! oder Probieren Sie alle Tests aus
quelle
Ä>T.nî
Gelee , 5 Bytes
Probieren Sie es online aus!
quelle
Oktave , 27 Bytes
Probieren Sie es online aus!
quelle
PHP, 23 Bytes
Probieren Sie es online aus!
quelle
PowerShell,
5251 BytesVielen Dank an Felipe für die Behebung des Problems mit Log10 und die Bereitstellung eines 1-Byte-Speichers.
Alle
System.Math
Anrufe sind in PowerShell extrem teuer.Verwendet die Methode, um das Log10 des Abs-Werts der Eingabe abzurufen und aufzurunden.
quelle
Floor()+1
.Ceil()
scheitert für Potenzen von 10$m::Log10(...
, um ein Byte zu speichernQBIC , 25 Bytes
Dies teilt die Eingabe durch 10 und verfolgt, wie oft wir dies bis
N
<1 tun können .Erläuterung:
quelle
Bash , 50 Bytes
Probieren Sie es online aus!
Kein String / Array-Befehl, nur Ziffern nach ganzzahliger Division zählen.
quelle
Ruby , 33 Bytes
Probieren Sie es online aus!
quelle
bc , 6 Bytes
Eingebaute Funktion.
quelle
Eigentlich 8 Bytes
Probieren Sie es online aus!
Erläuterung:
Dieses Programm berechnet effektiv
floor(log10(x))+1
. Umlog(0)
nicht definiert zu sein (tatsächlich wird zurückgegeben,(-inf+nanj)
was eine besondere Art zu sagen ist, dass es nicht definiert ist), wird die Eingabe inkrementiert, wenn dies0
vor der Berechnung der Länge erfolgt. Somit0
wird eine Länge von angenommen1
.quelle
Pari / GP , 13 Bytes
Probieren Sie es online aus!
quelle
Ruby, 27 Bytes
Als Test:
Es gibt aus:
quelle
Perl 5
-p
, 26 BytesProbieren Sie es online aus!
quelle