単項数は通常、非負の整数のみを表しますが、次のようにすべての整数を表すように拡張できます。
- 正の整数NはNとして表されます
1
ます。5 -> 11111
- 負の整数-Nは、aの
0
後にNが続くことで表されます1
ます。-5 -> 011111
- ゼロは次のように表されます
0
0
セパレータとして使用すると、これらの数値のリストを明確に表すことができます。
3,-2,0,1
111,011,0,1
111 0 011 0 0 0 1
11100110001
あなたの仕事:符号付き単項数のリストを表す文字列を取得し、それを10進数のリストに変換します。
詳細
入力は、符号付き単項数の完全なリストであると想定できます。特に、プログラムは1)空の入力または2)区切り文字で終わる入力を処理する必要はありません。
各数値の大きさは127を超えないと想定することができます。文字列またはリストの最大サイズを持つ言語では、入力と出力が言語のデータ構造に適合すると想定できますが、アルゴリズムは理論的には任意のサイズ。
プログラムまたは関数は、標準的な方法でI / Oを実行できます。入力は、文字列または文字のリスト、単一文字の文字列、整数、またはブール値です。1
およびを表すために任意の2文字を使用でき0
ます。あなたが使用していない場合1
や0
、使用しているどの文字を指定してください。
出力は、妥当なリスト形式の10進数でなければなりません(特に、数字の間に何らかの区切り文字が必要です)。負の数値はマイナス記号で示す必要がありますが、言語の負の整数の形式が異なる場合はそれも受け入れます。ゼロは、出力で0
またはとして表される場合があります-0
。
テストケース
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
)と負符号プレフィックス(0
)が同じですが、数字の途中に負符号を付けることはできないため(182--693-1
数字ですか?いいえ、どちらも1111011000101111
まったく同じ理由です)。
'0's
ているため、技術的には単項ではありません。しかし、良い挑戦です!