Dans ce défi, vous allez écrire un programme pour afficher le nombre de décimales dans la chaîne d' entrée et découper l'entrée si nécessaire.
Exemples
-12.32
2
32
0
3231.432
3
-34.0
0 -34
023
0 23
00324.230
2 324.23
10
0
00.3
1 0.3
0
0
-04.8330
3 -4.833
Règles
- L'entrée sera une chaîne qui peut être parcourue, STDIN, des arguments de fonction ou l'équivalent le plus proche
- La sortie peut se faire via le retour de fonction, STDOUT ou l'équivalent le plus proche.
- Il n'y a pas de limite sur la taille de l'entier d'entrée, à l' exception de la longueur de chaîne maximale de votre langue .
- Si l'entrée contient des zéros inutiles (de début ou de fin):
- Vous devriez les retirer
- Sortie la quantité de décimales dans le nouveau nombre
- Afficher le nouveau numéro séparé par un séparateur (par exemple espace, nouvelle ligne, virgule)
- L'entrée correspondra toujours à ce RegEx:,
-?\d+(\.\d+)?
ou si vous ne parlez pas RegEx :- Il pourrait y avoir un
-
au début impliquant un nombre négatif. Ensuite, il y aura au moins un chiffre. Ensuite, il pourrait y avoir ... un.
et quelques chiffres supplémentaires. - Pour vérifier si une entrée est valide, vérifiez ici
- Il pourrait y avoir un
- Pas de regex
C'est le code-golf donc le code le plus court en octets gagne
0
.Réponses:
PHP 7, 142 octets
J'ai en quelque sorte réussi à tout compresser en une seule déclaration d'impression:
S'exécute à partir de la ligne de commande, comme:
Démo
Voir tous les cas de test dont un très long (62 caractères) en action:
Essayez avant d'acheter 1
1 Passez la souris sur la case " Sortie pour 7.0.0 " pour voir tous les résultats.
la source
Python 2,
165180octetsAu début, je pensais à écrire mon premier programme Pyth, à le faire compter les chiffres après la virgule potentielle. Mais ensuite, je me suis énervé, je ne sais pas comment vous aimeriez cette langue, je suppose que c'est juste pour gagner. Quoi qu'il en soit, voici ma solution (modifiée car elle ne fonctionnait pas pour les grands nombres):
Au cas où quelqu'un voudrait s'appuyer sur mon travail en Pyth:
~b@+cz"."" "1Wq@b_1"0"~b<b_1)plrb6
Pour voir où vous en êtes, vous voudrez peut-être insérer un ap entre@+
.la source
05AB1E , 23 octets (non concurrentiel)
Merde, j'étais si proche. Python analyse de très gros flottants en utilisant la notation scientifique, j'ai donc corrigé ce bogue dans l'interpréteur. Cependant, cela a été fait après la contestation et ma soumission n'est donc pas compétitive.
Code:
Explication:
Utilise le codage ISO 8859-1 .
la source
JavaScript (ES6), 156
162Edit Correction d'un bug pour '-0' - thx @Fez Vrasta Edit 2 6 octets enregistrés thx @Neil
C'est un gâchis, mais il est basé à 100% sur les chaînes - aucune limite en raison des types numériques
Moins golfé
Tester
la source
-0
comme entrée .. nous devrions sortir0
, pas0 0
c=='.'?p=t:+c&&(l=t,k=k||t)
pour vous faire économiser un octet?t=l=k=p=0
et++t&&c=='.'
etc.ES6,
102180177 octetsEdit: sauvé 3 octets grâce à @ edc65; enregistré 1 octet grâce à insertusernameici.
la source
t=[...s]
t[--l]==0
part[--l]<1
.C ++, 180 octets
Il s'agit d'un C ++ portable, qui ne fait aucune hypothèse d'encodage de caractères et ne comprend aucune bibliothèque (pas même la bibliothèque standard).
L'entrée est transmise
s
. Le nombre de décimales est renvoyé; la chaîne est modifiée sur place et le nouveau départ est retournép
.Par droits, je devrais retourner un
size_t
, mais à la place, je vais prétendre que vous devez le compiler pour un système d'exploitation qui limite la taille des chaînes à la moitié de la plage deint
. Je pense que c'est raisonnable; il compte plus de 2 milliards de décimales sur les architectures 32 bits.Explication
Programme de test
Sortie test
la source