構文は間違っていないはずなのにwhile文から抜け出せなくなり無限ループしてしまいます。
なぜでしょうか?
python
1def rule1(word_list, v): 2 return v in word_list 3 4def rule2(v, before_word, pass_rule2): 5 return pass_rule2 or before_word[-1] == log[0] 6 7def rule3(current_log, v): 8 return not v in current_log 9 10def rule4(v): 11 return v[-1] != "z" 12 13n, k, m = map(int, input().split()) 14word_list = [] 15log = [] 16 17for _ in range(k): 18 word_list.append(input()) 19 20for _ in range(m): 21 log.append(input()) 22 23alive = [True] * n 24current_log = [] 25 26now_number = 0 27pass_rule2 = True 28for i, v in enumerate(log): 29 30 # ここから抜け出せなくなる 31 while True: 32 if now_number >= len(alive): 33 now_number = 0 34 if alive[now_number]: 35 break 36 now_number += 1 37 38 if rule1(word_list, v) and rule2(v, log[i-1], pass_rule2) and rule3(current_log, v) and rule4(v): 39 pass_rule2 = False 40 else: 41 alive[now_number] = False 42 pass_rule2 = True 43 44 current_log.append(v) 45 now_number += 1 46 47print(sum(alive)) 48for i, v in enumerate(alive, start=1): 49 if v: 50 print(i)
回答1件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。