質問編集履歴
1
非常にわかりにくくて申しわけありませんでした。問題文を訂正したので、そちらの方を宜しくお願いします。
title
CHANGED
File without changes
|
body
CHANGED
@@ -1,30 +1,38 @@
|
|
1
|
+
すみません、dodoxさんの翻訳内容であっています。訂正します。
|
1
|
-
現在、ユーザーからランダムな整数入りのリストを取って、そレを一旦2進数に変換し、新しい10
|
2
|
+
現在、ユーザーからランダムな整数入りのリストを取って、そレを一旦2進数に変換し、新しい10進数へと変換する、プログラムを作っています。例えば[11, 24] という リストの箱で受け取った場合は最終的に
|
3
|
+
424896という10進数に変換されて、出力されます。
|
4
|
+
受け取ったリストは最初に[11, 24] から [1011, 11000]と変換されます。
|
5
|
+
|
2
|
-
|
6
|
+
そちら1つずつの整数要素を連続させます。例えば 1は11に0は00になります。上の例だとこうなります。
|
3
|
-
|
7
|
+
[1011, 11000] → [11001111, 1111000000]
|
8
|
+
それから、要素が区切られている部分に0を挿入して要素を増やします。0の挿入は連続の作業が終了した後に行います。今は、2つの要素だけで行っていますが、要素数が1つの場合は0は挿入しません、
|
9
|
+
また 要素数3つや4つの場合などはその要素の前ごとに挿入します。最後の要素の後には0は挿入しません。
|
10
|
+
|
11
|
+
例[1100] (要素が1つの場合)
|
12
|
+
[1011,0 ,11110000, 0 ,100111100] (要素が3つある時)
|
13
|
+
|
4
|
-
|
14
|
+
上の[11,24]だとこうなります、[11001111, 0 , 1111000000]。そしてそれらを結合すると、[1100111101111000000]となります。
|
15
|
+
それを10進数に変換すると、424896となります。
|
16
|
+
|
17
|
+
ですが、私の書いたコードですと、[11, 24]の10進数の出力が 51230208 となり、
|
5
|
-
|
18
|
+
本来の 424896 と出力されません。解決方法が見当たらず、質問させて頂きました。
|
19
|
+
すみませんが、よろしくお願いします。
|
6
20
|
```php:filename.php
|
7
21
|
def encode(numbers):
|
8
|
-
numbers= ''.join(bin(e)[2: ] for e in the_input)
|
22
|
+
numbers= ''.join(bin(e)[2: ] for e in the_input)#受けとったリストの中身を2真数へ
|
9
|
-
combination= ''
|
23
|
+
combination= '' #0が結合した後の空のstr
|
10
24
|
index = 0
|
11
25
|
doubled_numbers = []
|
12
26
|
for number in numbers:
|
13
27
|
double_number = ''
|
14
|
-
number_string_rep = str(number)
|
28
|
+
number_string_rep = str(number) #int to str
|
15
29
|
for letter in number_string_rep:
|
16
30
|
|
17
|
-
double_number = double_number + letter + letter
|
31
|
+
double_number = double_number + letter + letter #iterateしたletterを足して、2連続させる
|
18
|
-
doubled_numbers.append(double_number)
|
32
|
+
doubled_numbers.append(double_number) #空のliistへappend
|
19
|
-
combination= "0".join(doubled_numbers)
|
33
|
+
combination= "0".join(doubled_numbers) #0の結合。
|
20
|
-
return int(combination, 2)
|
34
|
+
return int(combination, 2) #0が結合された後の文字列を10進数へ変換
|
21
35
|
input: [11, 24]
|
22
36
|
out: 51230208
|
23
37
|
#out should be 424896
|
24
|
-
```
|
38
|
+
```
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
、¥
|