回答編集履歴

2

修正

2020/10/29 03:10

投稿

jeanbiego
jeanbiego

スコア3966

test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  末尾が単一の0か1で終わる(=末尾に0か1が奇数個並んでいる)のは無視というのを読み落としていたので追記しました。
4
4
 
5
- ところで、単一の1がいた場合はどうするんですか…? 「10011」とか。
5
+ ところで、末尾以外に単一の1がいた場合はどうするんですか…? 「10011」とか。
6
6
 
7
7
 
8
8
 

1

追記

2020/10/29 03:10

投稿

jeanbiego
jeanbiego

スコア3966

test CHANGED
@@ -1,8 +1,46 @@
1
1
  すみません、書かれてたコードが難しかったので、違う形で書いてしまいました。参考まで。
2
+
3
+ 末尾が単一の0か1で終わる(=末尾に0か1が奇数個並んでいる)のは無視というのを読み落としていたので追記しました。
4
+
5
+ ところで、単一の1がいた場合はどうするんですか…? 「10011」とか。
2
6
 
3
7
 
4
8
 
5
9
  ```python3
10
+
11
+ def sep0(n):
12
+
13
+ ns = str(n).replace("101","1,1").split(",")
14
+
15
+ result = []
16
+
17
+ for i, t in enumerate(ns):
18
+
19
+ if judge_odd(t):
20
+
21
+ continue
22
+
23
+ result.append(t)
24
+
25
+ return result
26
+
27
+
28
+
29
+ def judge_odd(txt):
30
+
31
+ if len(txt.replace("10",",0").split(",")[-1])%2 != 0:
32
+
33
+ return True
34
+
35
+ elif len(txt.replace("01",",1").split(",")[-1])%2 != 0:
36
+
37
+ return True
38
+
39
+ else:
40
+
41
+ return False
42
+
43
+
6
44
 
7
45
  def doublet_to_single(txt):
8
46
 
@@ -10,7 +48,7 @@
10
48
 
11
49
  i = 0
12
50
 
13
- while i < len(txt):
51
+ while i < len(txt)-1:
14
52
 
15
53
  if txt[i] == txt[i+1]:
16
54
 
@@ -24,15 +62,7 @@
24
62
 
25
63
 
26
64
 
27
- def sep0(n):
28
-
29
- ns = str(n).replace("101","1,1").split(",")
30
-
31
- return ns
32
-
33
-
34
-
35
- n = "1100111101111000000"
65
+ n = "11101100111101111000000"
36
66
 
37
67
  sep = sep0(n)
38
68