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

回答編集履歴

5

追記3

2021/09/06 11:57

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -51,4 +51,23 @@
51
51
  print(k)
52
52
  break
53
53
  ```
54
- 説明してほしいなら、コメントください。
54
+ 説明してほしいなら、コメントください。
55
+
56
+ **追記3**
57
+ 「わかりました!」というコメントだったので、説明は不要なんですね。
58
+ 質問のコードのどこが悪かったのかを本当に分かったのかどうか疑問ですが、
59
+ 結局やりたかったことは次のようなことだったようです。
60
+ ```Python
61
+ s = input() # string
62
+ a = list(map(int, s)) # array of int
63
+ d = [ {s[0]:a[0]}, {}, {}, {} ] # dict list
64
+ for i in range(1, 4):
65
+ for k, v in d[i-1].items():
66
+ d[i][k + '+' + s[i]] = v + a[i]
67
+ d[i][k + '-' + s[i]] = v - a[i]
68
+ for k, v in d[3].items():
69
+ if v == 7:
70
+ print(k + '=7')
71
+ break
72
+ ```
73
+ タイトルが「切手問題」のままで、「切符の番号の問題」に修正されなかったことが残念です。

4

コードの修正

2021/09/06 11:57

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -43,7 +43,7 @@
43
43
 
44
44
  s(1).dic.setdefault(strlist[0], intlist[0])
45
45
  for i in range(1, 4):
46
- for j in (s(i).dic).keys():
46
+ for j in s(i).dic:
47
47
  s(i+1).dic.setdefault(j+"+"+strlist[i], s(i).dic[j]+intlist[i])
48
48
  s(i+1).dic.setdefault(j+"-"+strlist[i], s(i).dic[j]-intlist[i])
49
49
  for k, v in s(4).dic.items():

3

追記2 のコードの修正

2021/08/29 02:37

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -46,8 +46,8 @@
46
46
  for j in (s(i).dic).keys():
47
47
  s(i+1).dic.setdefault(j+"+"+strlist[i], s(i).dic[j]+intlist[i])
48
48
  s(i+1).dic.setdefault(j+"-"+strlist[i], s(i).dic[j]-intlist[i])
49
- for k in s(4).dic:
49
+ for k, v in s(4).dic.items():
50
- if s(4).dic[k] == 7:
50
+ if v == 7:
51
51
  print(k)
52
52
  break
53
53
  ```

2

追記2

2021/08/29 02:27

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -26,4 +26,29 @@
26
26
  print(f'{a[0]}{a[1]:+d}{a[2]:+d}{a[3]:+d}=7')
27
27
  exit()
28
28
  f(1)
29
- ```
29
+ ```
30
+ **追記2**
31
+ 元のコードを生かしたコードです。
32
+ ```Python
33
+ strlist = list(input())
34
+ intlist = [int(i) for i in strlist]
35
+
36
+ class s:
37
+ def __init__(self, x):
38
+ self.val = x
39
+ self.dic = {}
40
+
41
+ a = [s(1), s(2), s(3), s(4)]
42
+ def s(i): return a[i-1]
43
+
44
+ s(1).dic.setdefault(strlist[0], intlist[0])
45
+ for i in range(1, 4):
46
+ for j in (s(i).dic).keys():
47
+ s(i+1).dic.setdefault(j+"+"+strlist[i], s(i).dic[j]+intlist[i])
48
+ s(i+1).dic.setdefault(j+"-"+strlist[i], s(i).dic[j]-intlist[i])
49
+ for k in s(4).dic:
50
+ if s(4).dic[k] == 7:
51
+ print(k)
52
+ break
53
+ ```
54
+ 説明してほしいなら、コメントください。

1

別解の追記

2021/08/29 02:17

投稿

kazuma-s
kazuma-s

スコア8222

answer CHANGED
@@ -12,4 +12,18 @@
12
12
  print(''.join(e))
13
13
  exit()
14
14
  f(1, int(e[0]))
15
+ ```
16
+ **追記**
17
+ 別解
18
+ ```Python
19
+ a = list(map(int, input()))
20
+ def f(i):
21
+ if i < 4:
22
+ for j in range(2):
23
+ f(i + 1)
24
+ a[i] = -a[i]
25
+ elif sum(a) == 7:
26
+ print(f'{a[0]}{a[1]:+d}{a[2]:+d}{a[3]:+d}=7')
27
+ exit()
28
+ f(1)
15
29
  ```