Défi
Étant donné un entier, Q
dans la plage -(2^100) ≤ Q ≤ 2^100
, affichez le nombre de chiffres de ce nombre (en base 10).
Règles
Oui, vous pouvez prendre le nombre sous forme de chaîne et trouver sa longueur.
Toutes les fonctions mathématiques sont autorisées.
Vous pouvez prendre une entrée dans n'importe quelle base, mais la sortie doit être la longueur du nombre dans la base 10.
Ne comptez pas le signe moins pour les nombres négatifs. Le nombre n'aura jamais de point décimal.
Zéro peut avoir un ou zéro chiffre.
Supposons que l'entrée sera toujours un entier valide.
Exemples
Input > Output
-45 > 2
12548026 > 8
33107638153846291829 > 20
-20000 > 5
0 > 1 or 0
Gagnant
Le code le plus court en octets gagne.
Taxi , 1118 octets
Essayez-le en ligne!
Non golfé:
Explication:
la source
Zoom Zoom
chaque boucle deplan "r"
. Je viens de le tester jusqu'à 100 000 chiffres et il n'a jamais manqué de gaz. Je ne l'ai pas calculé, mais je suppose qu'il faut plus que suffisamment de prix pour payer le gaz qu'il utilise, donc il remplit le réservoir à chaque boucle.Mathematica, 13 octets
Il y a un intégré ... revient
0
pour0
.la source
There's a built-in
: Quand n'est-ce pas?dc, 3
Notez que normalement,
dc
des nombres négatifs doivent être donnés avec_
au lieu des plus habituels-
. Cependant, dans ce cas, l'un ou l'autre peut être utilisé. Si-
est donné,dc
traite cela comme une soustraction sur une pile vide, lancedc: stack empty
, puis continue avec le reste du nombre; Le résultat n'est donc pas différent.Essayez-le en ligne .
la source
Z
une soumission de fonction?dc
est un langage concaténatif avec des opérateurs quote + dup + eval, il peut donc réutiliser des chaînes de code arbitraires.Rétine , 2 octets
Essayez-le en ligne!
La rétine ne sait pas vraiment ce que sont les nombres, donc l'entrée est traitée comme une chaîne et nous comptons simplement les caractères numériques.
la source
05AB1E , 2 octets
Essayez-le en ligne! ou essayez tous les tests!
la source
Ä
hein? Nonþ
? C'est suffisant.Ä
premier, mais je géreraisþ
un point décimal, donc c'est un peu mieux je suppose.Alice , 16 octets
Essayez-le en ligne!
Explication
Trouver une mise en page à moitié décente pour cela était assez délicat. Je ne suis toujours pas super content à cause des espaces, du
<
et du;
, mais c'est le mieux que je puisse faire pour l'instant.La longueur de chaîne est l'une de ces fonctions intégrées très courantes qui n'existent pas dans Alice, car son entrée est une chaîne et sa sortie est un entier (et toutes les commandes Alice sont strictement des entiers en entier ou des chaînes en chaînes). Nous pouvons mesurer la longueur d'une chaîne en l'écrivant sur la bande en mode Ordinal puis en trouvant sa fin en mode Cardinal.
J'ai également essayé de prendre soin du signe moins en mode Cardinal avec
H
(valeur absolue), mais le commutateur de mode supplémentaire a toujours été plus cher dans mes tentatives.la source
PHP, 23 octets
Essayez-le en ligne!
log de base 10 de la valeur absolue plus un transtypage en int
pour zéro comme entrée log10 donne
INF
ce qui est interprété comme fauxLa meilleure façon est de remplacer
$argn
par$argn?:1
+3 octetsPHP, 27 octets
la longueur de chaîne moins booléen est inférieure à zéro
+2 octets pour la comparaison de chaînes
$argn<"0"
Essayez-le en ligne!
PHP, 32 octets
Essayez-le en ligne!
Regex compte tous les chiffres
35 octets
Essayez-le en ligne!
longueur de chaîne moins le nombre
-
strspn
la source
10
, car il^
a une priorité inférieure. Vous pouvez le réparer avec-~
.<?=strlen(abs($argn));
?$argn?:1
? Ce serait 26 octets aveclog10()
etabs()
.-~$x
est équivalent à((int)$x)+1
.<?=-~log10(abs($argn?:1));
semble fonctionner.Fortran 95 (gfortran),
1219695 octetsExplication:
Soustrait l'index du signe «-» de la longueur de l'argument.
Les tableaux commencent à 1 dans Fortran et index () renvoie 0 si le symbole n'est pas trouvé.
Edit: Passé à l'entier implicite "i", également récupérateur d'arguments consolidé.
Edit: -1 octet grâce à @Tsathoggua
la source
PowerShell, 24 octets
convertit la valeur "absolue" de l'argument d'entrée en chaîne et en obtient la propriété 'length'.
1 octet plus court que
"".Length
jusqu'à ce que quelqu'un trouve un meilleur moyen d'obtenir les abdos d'un nombre dans PS, c'est probablement aussi court que possible.
la source
"$args".trim('-')|% Le*
? :)05AB1E , 2 octets
Essayez-le en ligne!
la source
brainfuck , 37 octets
La sortie est par valeur d'octet.
Essayez-le en ligne!
Explication
la source
Rubis,
1511 + 1 =1612 octetsUtilise le
-n
drapeau.Essayez-le en ligne!
Explication
la source
Gelée , 2 octets
Essayez-le en ligne!
Cela fait littéralement ce qui a été demandé:
la source
D
sur les décimales? Would-1.2
sortie[-1,-0.2]
? Je l'ai essayé moi-même, ce n'est pas le cas.654.321D
donnerait[6,5,4.321]
(enfin en fait[6.0,5.0,4.321000000000026]
)[-6.0, -5.0, -4.321000000000026]
, en fait, apparemment.CJam , 5 octets
Basé sur une chaîne.
Essayez-le en ligne!
9 octets pour une solution purement mathématique:
Ou encore 5 avec conversion de base:
la source
rizs,
.Japt , 5 octets
Essayez-le en ligne!
Explication
la source
RProgN 2 , 2 octets
Essayez-le en ligne!
Obtient simplement la valeur absolue de l'entrée et compte les chiffres.
la source
JavaScript (ES6),
27262524 octetsPrend l'entrée sous forme de chaîne.
la source
s=>`${s>0?s:-s}`.length
:!JavaScript (ES6), 23 octets
Approche différente de la réponse de Shaggy .
la source
s=>s.length-(s<0)
enregistre 6 octetsJava,
3024 octetsSuppose que
i
est unBigInteger
. En outre, le type est contextualisé, donc aucune importation n'est requise, comme indiqué dans le code de test.Tester
Sauvegarde
la source
+""
au lieu de.toString()
?i
dans votre réponse. Je pense que plus de réponses lambda devraient le faire.Python 2 ,
3122 octets-9 octets grâce à Rod.
Essayez-le en ligne!
la source
len(`abs(s)`)
avec un nombre en entrée plus courtlen∘repr∘abs
.Brain-Flak , 63 octets
Essayez-le en ligne!
Cela représente 62 octets de code et +1 octet pour l'
-a
indicateur.J'ai essayé deux autres approches, mais malheureusement, les deux étaient plus longues:
Cela devrait être une réponse très courte. En fait, si nous n'avions pas à supporter des nombres négatifs, nous pourrions simplement faire:
Mais nous devons comparer la première entrée avec 45 (ASCII
-
) en premier, ce qui est la majeure partie du nombre d'octets de cette réponse.Une solution arithmétique pourrait être plus courte.
la source
([{}]((((()()()()())){}{})){}{})({(<()>)}{}[]<>)
Ruby, 20 octets
la source
->a{a.abs.to_s.size}[-95]
->a{a.abs.to_s.size}.call(-92)
Pyth, 4 octets
Essayez-le en ligne!
Tous les cas de test
la source
R, 18 octets
la source
Alice , 10 octets (non concurrent)
Essayez-le en ligne!
Il s'agit d'une solution non concurrente, car au moment où ce défi a été publié, la commande
c
était buggée dans l'interpréteur officiel (et uniquement: D). Martin Ender l'a corrigé en attendant, donc cela fonctionne maintenant.Explication
Le pointeur d'instruction passe
/
plusieurs fois par les deux miroirs ( ), il peut donc être un peu difficile à suivre. Je vais essayer de l'expliquer aussi clairement que possible, en utilisant des directions cardinales (par exemple, N est en haut, SW est en bas à gauche ...). J'appellerai/1
le miroir le plus à gauche et/2
le miroir le plus à droite.la source
Marque GNU , 78 octets
Style impératif:
Style fonctionnel, 113 octets:
Marque pure, 83 octets:
la source
C ++,
8076 octetsImprime la longueur de l'argument, moins 1 si le premier caractère est un moins car
bool
garantit la conversion en1
iftrue
ou0
iffalse
<46
place de=='-'
, et pour déférer le tableau au lieu de[]
la source
c[1][0]=='-'
par*c[1]<46
car nous pouvons supposer que l'entrée sera toujours un entier valide. (Sauf si des préfixes autres que '-' sont autorisés ...)TI-Basic (TI-84 Plus CE, OS 5.2+), 6 octets
TI-Basic est un langage à jetons;
length(
ettoString(
sont deux octets chacun.Ans
est utilisé comme entrée implicite; la valeur de la dernière (seule) ligne est renvoyée implicitement.Assez simple, prend la valeur absolue pour se débarrasser d'un signe moins, se convertit en chaîne, renvoie la longueur de la chaîne.
Une approche mathématique à 6 octets qui ne fonctionne pas pour 0:
la source
toString(
?Pari / GP , 13 octets
Essayez-le en ligne!
la source