53 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			53 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
| # Step 1. if even, divide by two
 | |
| 
 | |
| # Step 2. if odd, add one and test if power of two - if true include as op
 | |
| # Step 3. if odd, remove one
 | |
| 
 | |
| # test for 1 return op counter if true, else repeat
 | |
| 
 | |
| 
 | |
| # solution(1) returns 0: 1                                          . 
 | |
| # solution(2) returns 1: 2 -> 1                                     /            #
 | |
| # solution(3) returns 2: 3 -> 2 -> 1                                - /          
 | |
| # solution(4) returns 2: 4 -> 2 -> 1                                / /          ###
 | |
| # solution(5) returns 3: 5 -> 4 -> 2 -> 1                           - / /
 | |
| # solution(6) returns 3: 6 -> 3 -> 2 -> 1                           / - /
 | |
| # solution(7) returns 4: 7 -> 6 -> 3 -> 2 -> 1                      - / - /
 | |
| # solution(7) returns 4: 7 -> 8 -> 4 -> 2 -> 1                      + / / /      -
 | |
| # solution(8) returns 3: 8 -> 4 -> 2 -> 1                           / / /        ###
 | |
| # solution(9) returns 4: 9 -> 8 -> 4 -> 2 -> 1                      - / / /
 | |
| # solution(10) returns 4: 10 -> 5 -> 4 -> 2 -> 1                    / - / /
 | |
| # solution(11) returns 5: 11 -> 10 -> 5 -> 4 -> 2 -> 1              - / - / /
 | |
| # solution(12) returns 4: 12 -> 6 -> 3 -> 2 -> 1                    / / - /
 | |
| # solution(13) returns 5: 13 -> 12 -> 6 -> 3 -> 2 -> 1              - / / - /
 | |
| # solution(14) returns 5: 14 -> 7 -> 6 -> 3 -> 2 -> 1               / - / - /    -
 | |
| # solution(15) returns 5: 15 -> 16 -> 8 -> 4 -> 2 -> 1              + / / / /    #
 | |
| # solution(16) returns 4: 16 -> 8 -> 4 -> 2 -> 1                    / / / /      ###
 | |
| # solution(17) returns 5: 17 -> 16 -> 8 -> 4 -> 2 -> 1              - / / / /
 | |
| # solution(18) returns 5: 18 -> 9  -> 8 -> 4 -> 2 -> 1              / - / / /
 | |
| # solution(19) returns 6: 19 -> 18 -> 9 -> 8 -> 4 -> 2 -> 1         - / - / / / 
 | |
| # solution(20) returns 5: 20 -> 10 -> 5 -> 4 -> 2 -> 1              / / - / / 
 | |
| # solution(21) returns 6: 21 -> 20 -> 10 -> 5 -> 4 -> 2 -> 1        - / / - / / 
 | |
| # solution(21) returns 6: 22 -> 11 -> 10 -> 5 -> 4 -> 2 -> 1        - / / - / / 
 | |
| 
 | |
| # solution(30) returns _: 30 -> 15 -> 14 -> 7 -> 6 -> 3 -> 2 -> 1
 | |
| # solution(30) returns _: 30 -> 31 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1  -
 | |
| # solution(31) returns _: 31 -> 32 -> 15 -> 8 -> 4 -> 2 -> 1        #
 | |
| # solution(32) returns 5: 32 -> 16 -> 8 -> 4 -> 2 -> 1              / / / / /    ###
 | |
| 
 | |
| # solution(61) returns _: 61 -> 60 -> 30 -> 15 -> 14 -> 7 -> 6 -> 3 -> 2 -
 | |
| # solution(62) returns 8: 62 -> 63 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1 #
 | |
| # solution(63) returns 7: 63 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1       #
 | |
| # solution(64) returns 6: 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1/ / / / / /  ###
 | |
| 
 | |
| #
 | |
| # solution(125) returns 11: 125 -> 124 -> 62 -> 31 -> 30 -> 15 -> 14 -> 7 -> 6 -> 3 -> 2 -> 1
 | |
| # solution(125) returns 10: 125 -> 124 -> 62 -> 63 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1    
 | |
| # solution(125) returns 10: 125 -> 126 -> 127 -> 128 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1      -
 | |
| # solution(125) returns 9 : 125 -> 124 -> 62 -> 31 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
 | |
| 
 | |
| # solution(126) returns 9:  126 -> 127 -> 128 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1             #
 | |
| # solution(126) returns 9:  126 -> 63 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1
 | |
| 
 | |
| # solution(127) returns 8:  127 -> 128 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1                    #
 | |
| # solution(128) returns 7:  128 -> 64 -> 32 -> 16 -> 8 -> 4 -> 2 -> 1                           ### |