回答編集履歴

2

修正

2020/10/29 03:10

投稿

jeanbiego
jeanbiego

スコア3966

answer CHANGED
@@ -1,6 +1,6 @@
1
1
  すみません、書かれてたコードが難しかったので、違う形で書いてしまいました。参考まで。
2
2
  末尾が単一の0か1で終わる(=末尾に0か1が奇数個並んでいる)のは無視というのを読み落としていたので追記しました。
3
- ところで、単一の1がいた場合はどうするんですか…? 「10011」とか。
3
+ ところで、末尾以外に単一の1がいた場合はどうするんですか…? 「10011」とか。
4
4
 
5
5
  ```python3
6
6
  def sep0(n):

1

追記

2020/10/29 03:10

投稿

jeanbiego
jeanbiego

スコア3966

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