teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

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

2020/11/01 04:04

投稿

M_Nishi
M_Nishi

スコア2

title CHANGED
File without changes
body CHANGED
@@ -1,30 +1,38 @@
1
+ すみません、dodoxさんの翻訳内容であっています。訂正します。
1
- 現在、ユーザーからランダムな整数入りのリストを取って、そレを一旦2進数に変換し、新しい10数へと変換する、プログラムを作っています。例 [10, 20, 30] [11, 24]
2
+ 現在、ユーザーからランダムな整数入りのリストを取って、そレを一旦2進数に変換し、新しい10数へと変換する、プログラムを作っています。例えば[11, 24] という リストの箱で受け取った場合は最終的に
3
+ 424896という10進数に変換されて、出力されます。
4
+ 受け取ったリストは最初に[11, 24] から [1011, 11000]と変換されます。
5
+
2
- これをリスト中で2進に変換します。(実装済み)そして、出来た2進数の数字連続させます。
6
+ そち1つずつ要素を連続させます。例えば 1は11に0は00になります。上の例だとこうなります。
3
- 例えば、[1011,11000] → [11001111, 1111000000]。もしindexが2つ以上ありましたら、区切りの
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
- 部分に0を代入します。そしてそれらを結合しま。上の場合、[1100111101111000000]となります。
14
+ 上の[11,24]だとこうなります、[11001111, 0 , 1111000000]。そしてそれらを結合すると、[1100111101111000000]となります。
15
+ それを10進数に変換すると、424896となります。
16
+
17
+ ですが、私の書いたコードですと、[11, 24]の10進数の出力が 51230208 となり、
5
- それを10進数に変換すると、424896となります。ですが、私の書いたコードですと、違う出力になってしい、解決方法が見当たらず、質問させて頂きました。すみませんが、よろしくお願いします。
18
+ 本来の 424896 と出力されせん。解決方法が見当たらず、質問させて頂きました。
19
+ すみませんが、よろしくお願いします。
6
20
  ```php:filename.php
7
21
  def encode(numbers):
8
- numbers= ''.join(bin(e)[2: ] for e in the_input) #リストを2真数へ
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) #Intをstr変換
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)#0を代入し、結合
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
- 、¥