Advertisement
Guest User

k-nth x run length - collatz conjecture

a guest
Sep 28th, 2021
350
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 1.98 KB | None | 0 0
  1. #!/bin/python3
  2. import os
  3. import sys
  4. import math
  5. import random
  6. import time
  7.  
  8.  
  9. def check(n):
  10.  
  11.     count=0
  12.     while True:
  13.         count+=1
  14.         if n%2==0:
  15.             n=n/2
  16.         else:
  17.             n=(n*3)+1
  18.         if n == 1:
  19.             break
  20.     return count
  21.  
  22. def get_d(x_val,k_val):
  23.     safe=False
  24.     if x_val%2==0:
  25.         safe=True
  26.     if safe==True:
  27.         #print("safe==true")
  28.         if k_val == 2:
  29.             return 0
  30.         elif k_val == 1:
  31.             return 0
  32.         else:
  33.             d=0
  34.             c=2
  35.             for i in range(0, k_val-2):
  36.                 d+=c
  37.                 c=((c*2)*2)
  38.             return d
  39.     else:
  40.         #print("safe==false")
  41.         if k_val == 2:
  42.             return 0
  43.         elif k_val == 1:
  44.             return 0
  45.         elif k_val == 3:
  46.             return 1
  47.         else:
  48.             d=1
  49.             c=4
  50.             for i in range(0, k_val-3):
  51.                 d+=c
  52.                 c=(c*2)*2
  53.             return d
  54.  
  55. def get_nth(x_val, k_val):
  56.     v=int(pow(2, x_val))
  57.     if k_val == 1:
  58.         return v
  59.     d=get_d(x_val,k_val)
  60.     v = math.floor(((v-2)/2)/3)
  61.     v = v - d
  62.     return v
  63.  
  64. def get_k(x_val):
  65.     return math.ceil(x_val/2)-1
  66.  
  67.  
  68.  
  69. def run():
  70.     x_value=int(input("Enter sequence termination length (e.g: 5):: "))
  71.     k=get_k(x_value)
  72.     k_value=int(input("Enter nth number from 1 - "+str(k)+":: "))
  73.     if k_value < 1 or k_value > k:
  74.         return False
  75.     n=get_nth(x_value, k_value)
  76.     check_n=check(n)
  77.  
  78.     print("Termination Length: "+str(x_value))
  79.     print("k-nth-set-size: "+str(k))
  80.     #print("kv: "+str(k_value))
  81.     print("k-nth("+str(k_value)+") == "+str(n))
  82.     if check_n == x_value:
  83.         print("Termination get_nth("+str(x_value)+", "+str(k_value)+") == check_n("+str(n)+") == "+str(check_n))
  84.         print("PASSED TEST")
  85.     else:
  86.         print("FAILED TEST")
  87.     return True
  88.  
  89. def start():
  90.     ran=run()
  91.     if ran==False:
  92.         start()
  93.  
  94. start()
  95.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement