Google-Foobar/3.a. fuel-injection-perfection/patterns2.py
2024-04-16 02:50:37 -07:00

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 ###