Advertisement
Guest User

Untitled

a guest
Feb 21st, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.09 KB | None | 0 0
  1. def floyd(l): # リストを入力
  2. rabbit = 0 # 早く進む変数
  3. turtle = 0 # 遅く進む変数
  4. x = 0 # 循環の開始インデックス(0はじまり)
  5. y = 0 # 循環の周期 (個数)
  6. while True:
  7. rabbit += 2
  8. turtle += 1
  9. if rabbit >= len(l):
  10. return None
  11. if l[turtle:rabbit] == l[rabbit:rabbit+(rabbit-turtle)]:
  12. break
  13. rabbit = 0
  14. while True:
  15. rabbit += 1
  16. turtle += 1
  17. if turtle >= len(l):
  18. return None
  19. if l[rabbit:b] == l[turtle:turtle+(turtle-rabbit)]:
  20. x = rabbit
  21. break
  22. turtle = x
  23. while True:
  24. rabbit += 2
  25. turtle += 1
  26. if l[turtle:rabbit] == l[rabbit:rabbit+(rabbit-turtle)]:
  27. y = turtle - x
  28. break
  29. return x, y
  30.  
  31. if __name__ == "__main__":
  32. with open("安全数列.txt") as f:
  33. l = list(map(lambda x:int(x), f.readline().split("\t")[:-1]))
  34. x, y= floyd(l)
  35. print(x, y)
  36. print(l[x: x+10]) # 一周期目から10個出力
  37. print(l[x+y: x+y+10]) # 二周期目から10個出力
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement