質問編集履歴

1

非常にわかりにくくて申しわけありませんでした。問題文を訂正したので、そちらの方を宜しくお願いします。

2020/11/01 04:04

投稿

M_Nishi
M_Nishi

スコア2

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