Les nombres unaires ne représentent généralement que des entiers non négatifs, mais nous pouvons les étendre pour représenter tous les entiers comme suit:
- Un entier positif N est représenté par N
1
:5 -> 11111
- Un entier négatif -N est représenté par un
0
suivi de N1
:-5 -> 011111
- Zéro est représenté comme
0
Nous pouvons alors représenter une liste de ces nombres sans ambiguïté si nous utilisons 0
comme séparateur:
3,-2,0,1
111,011,0,1
111 0 011 0 0 0 1
11100110001
Votre tâche: prendre une chaîne représentant une telle liste de nombres unaires signés et la traduire en une liste de nombres décimaux.
Détails
Vous pouvez supposer que l'entrée est une liste complète des numéros unaires signés. En particulier, votre programme n'aura pas à gérer 1) une entrée vide ou 2) une entrée qui se termine par un séparateur.
Vous pouvez supposer que la magnitude de chaque nombre ne dépassera pas 127. Pour les langues avec des tailles maximales de chaînes ou de listes, vous pouvez supposer que l'entrée et la sortie s'adapteront aux structures de données de votre langue, mais votre algorithme devrait théoriquement fonctionner pour une liste de n'importe quelle taille.
Votre programme ou fonction peut effectuer des E / S de n'importe quelle manière standard . L'entrée peut être une chaîne ou une liste de caractères, des chaînes à un seul caractère, des entiers ou des booléens. Vous pouvez utiliser deux caractères quelconques pour représenter 1
et0
; si vous n'utilisez pas 1
et 0
, veuillez spécifier les caractères que vous utilisez.
La sortie doit être des nombres décimaux dans n'importe quel format de liste raisonnable (en particulier, il doit y avoir une sorte de séparateur entre les nombres). Les nombres négatifs doivent être indiqués par un signe moins, bien que si votre langue a un format différent pour les entiers négatifs, je l'accepterai également. Le zéro peut être représenté dans la sortie comme0
ou -0
.
Cas de test
1 -> 1
0 -> 0 (or -0, and similarly for the other test cases)
011 -> -2
1101 -> 2,1
1100 -> 2,0
11001 -> 2,-1
110001 -> 2,0,1
11100110001 -> 3,-2,0,1
00000001 -> 0,0,0,-1
01111011111111001111111111111110111111111111111100111111111111111111111110111111111111111111111111111111111111111111 -> -4,8,-15,16,-23,42
01111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111111 -> -127
0
) et le préfixe du signe négatif ( 0
) sont les mêmes, bien que ce soit toujours sans ambiguïté, car vous ne pouvez pas avoir de signes négatifs au milieu d'un nombre ( 182--693-1
un nombre? Non, et ni 1111011000101111
pour la même raison).
'0's
, ce n'est pas techniquement unaire. Bon défi cependant!