Advertisement
pineapplemachine

Recursive construction of Collatz sequences tree

Oct 27th, 2014
110
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Python 0.90 KB | None | 0 0
  1. # Public domain code originally written by Sophie Kirschner (sophiek@pineapplemachine.com)
  2.  
  3. # constructs a tree out of possible collatz sequences
  4. def do_steps( recursion, initial = 1 ):
  5.     return ( initial, do_step( recursion, initial ) )
  6. def do_step( recursion, value ):
  7.     even = value * 2
  8.     odd = ( value - 1 ) / 3.0
  9.     odd = int( odd ) if odd % 2 == 1 else 0
  10.     next_values = [ even, odd ]
  11.     result = []
  12.     for nvalue in next_values:
  13.         if( nvalue > 1 ):
  14.             next_step = do_step( recursion - 1, nvalue ) if recursion else None
  15.             result.append( ( nvalue, next_step ) )
  16.     return result
  17.  
  18. # output results of do_steps to the console
  19. def output_steps( results, prefix = '' ):
  20.     print prefix + str( results[0] ) + ':'
  21.     if results[1]:
  22.         for result in results[1]:
  23.             output_steps( result, prefix + '.  ' )
  24.  
  25. # do stuff!
  26. output_steps( do_steps( 16 ) )
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement