Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- def floyd(l): # リストを入力
- rabbit = 0 # 早く進む変数
- turtle = 0 # 遅く進む変数
- x = 0 # 循環の開始インデックス(0はじまり)
- y = 0 # 循環の周期 (個数)
- while True:
- rabbit += 2
- turtle += 1
- if rabbit >= len(l):
- return None
- if l[turtle:rabbit] == l[rabbit:rabbit+(rabbit-turtle)]:
- break
- rabbit = 0
- while True:
- rabbit += 1
- turtle += 1
- if turtle >= len(l):
- return None
- if l[rabbit:b] == l[turtle:turtle+(turtle-rabbit)]:
- x = rabbit
- break
- turtle = x
- while True:
- rabbit += 2
- turtle += 1
- if l[turtle:rabbit] == l[rabbit:rabbit+(rabbit-turtle)]:
- y = turtle - x
- break
- return x, y
- if __name__ == "__main__":
- with open("安全数列.txt") as f:
- l = list(map(lambda x:int(x), f.readline().split("\t")[:-1]))
- x, y= floyd(l)
- print(x, y)
- print(l[x: x+10]) # 一周期目から10個出力
- print(l[x+y: x+y+10]) # 二周期目から10個出力
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement