Unäre Zahlen stellen normalerweise nur nichtnegative Ganzzahlen dar. Sie können jedoch wie folgt erweitert werden, um alle Ganzzahlen darzustellen:
- Eine positive ganze Zahl N wird als N dargestellt
1
:5 -> 11111
- Eine negative ganze Zahl -N wird als
0
gefolgt von N dargestellt1
:-5 -> 011111
- Null wird dargestellt als
0
Wir können dann eine Liste dieser Zahlen eindeutig darstellen, wenn wir 0
als Trennzeichen verwenden:
3,-2,0,1
111,011,0,1
111 0 011 0 0 0 1
11100110001
Ihre Aufgabe: Nehmen Sie eine Zeichenfolge, die eine solche Liste mit vorzeichenbehafteten unären Zahlen darstellt, und übersetzen Sie sie in eine Liste mit Dezimalzahlen.
Einzelheiten
Sie können davon ausgehen, dass die Eingabe eine vollständige Liste von vorzeichenbehafteten unären Zahlen ist. Insbesondere muss Ihr Programm nicht 1) leere Eingaben oder 2) Eingaben verarbeiten, die mit einem Trennzeichen enden.
Sie können davon ausgehen, dass die Größe jeder Zahl 127 nicht überschreitet. Bei Sprachen mit maximaler Größe von Zeichenfolgen oder Listen können Sie davon ausgehen, dass die Eingabe und Ausgabe in die Datenstrukturen Ihrer Sprache passen, aber Ihr Algorithmus sollte theoretisch für eine Liste von funktionieren alle Größen.
Ihr Programm oder Ihre Funktion kann E / A auf eine der Standardweisen ausführen . Die Eingabe kann eine Zeichenfolge oder eine Liste von Zeichen, Einzelzeichenfolgen, Ganzzahlen oder Booleschen Werten sein. Sie können zwei beliebige Zeichen verwenden, um 1
und zu repräsentieren 0
. wenn Sie nicht verwenden , 1
und 0
geben Sie bitte an, welche Zeichen Sie verwenden.
Die Ausgabe muss aus Dezimalzahlen in einem angemessenen Listenformat bestehen (insbesondere muss eine Art Trennzeichen zwischen den Zahlen bestehen). Negative Zahlen sollten mit einem Minuszeichen angezeigt werden. Wenn Ihre Sprache jedoch ein anderes Format für negative ganze Zahlen hat, akzeptiere ich das auch. Null kann in der Ausgabe als 0
oder dargestellt werden -0
.
Testfälle
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
) und das negative Vorzeichen ( 0
) dasselbe sind, obwohl es immer noch eindeutig ist, da Sie keine negativen Vorzeichen in der Mitte einer Zahl haben können (ist 182--693-1
eine Zahl? Nein, und auch nicht 1111011000101111
aus genau demselben Grund).
'0's
, ist es technisch nicht einheitlich. Gute Herausforderung!