3v4l.org

run code in 300+ PHP versions simultaneously
<?php function reduce($bits, $value = '0') { if (strlen($bits) == 1) { // a single bit can be flipped as needed return ($bits[0] == $value) ? 0 : 1; } if ($bits[0] == $value) { // nothing to do with this bit, flip the remainder return reduce(substr($bits, 1)); } // need to convert balance of string to 1 followed by 0's // then we can flip this bit, and then reduce the new string to 0 return reduce(substr($bits, 1), '1') + 1 + reduce(str_pad('1', strlen($bits) - 1, '0')); } for ($i = 0; $i < 128; $i++) { echo "$i (" . decbin($i) . ") takes " . reduce(decbin($i)) . " steps\n"; }
Output for 7.2.0 - 7.2.34, 7.3.0 - 7.3.33, 7.4.0 - 7.4.33, 8.0.0 - 8.0.30, 8.1.0 - 8.1.29, 8.2.0 - 8.2.23, 8.3.0 - 8.3.11
0 (0) takes 0 steps 1 (1) takes 1 steps 2 (10) takes 3 steps 3 (11) takes 2 steps 4 (100) takes 7 steps 5 (101) takes 6 steps 6 (110) takes 4 steps 7 (111) takes 5 steps 8 (1000) takes 15 steps 9 (1001) takes 14 steps 10 (1010) takes 12 steps 11 (1011) takes 13 steps 12 (1100) takes 8 steps 13 (1101) takes 9 steps 14 (1110) takes 11 steps 15 (1111) takes 10 steps 16 (10000) takes 31 steps 17 (10001) takes 30 steps 18 (10010) takes 28 steps 19 (10011) takes 29 steps 20 (10100) takes 24 steps 21 (10101) takes 25 steps 22 (10110) takes 27 steps 23 (10111) takes 26 steps 24 (11000) takes 16 steps 25 (11001) takes 17 steps 26 (11010) takes 19 steps 27 (11011) takes 18 steps 28 (11100) takes 23 steps 29 (11101) takes 22 steps 30 (11110) takes 20 steps 31 (11111) takes 21 steps 32 (100000) takes 63 steps 33 (100001) takes 62 steps 34 (100010) takes 60 steps 35 (100011) takes 61 steps 36 (100100) takes 56 steps 37 (100101) takes 57 steps 38 (100110) takes 59 steps 39 (100111) takes 58 steps 40 (101000) takes 48 steps 41 (101001) takes 49 steps 42 (101010) takes 51 steps 43 (101011) takes 50 steps 44 (101100) takes 55 steps 45 (101101) takes 54 steps 46 (101110) takes 52 steps 47 (101111) takes 53 steps 48 (110000) takes 32 steps 49 (110001) takes 33 steps 50 (110010) takes 35 steps 51 (110011) takes 34 steps 52 (110100) takes 39 steps 53 (110101) takes 38 steps 54 (110110) takes 36 steps 55 (110111) takes 37 steps 56 (111000) takes 47 steps 57 (111001) takes 46 steps 58 (111010) takes 44 steps 59 (111011) takes 45 steps 60 (111100) takes 40 steps 61 (111101) takes 41 steps 62 (111110) takes 43 steps 63 (111111) takes 42 steps 64 (1000000) takes 127 steps 65 (1000001) takes 126 steps 66 (1000010) takes 124 steps 67 (1000011) takes 125 steps 68 (1000100) takes 120 steps 69 (1000101) takes 121 steps 70 (1000110) takes 123 steps 71 (1000111) takes 122 steps 72 (1001000) takes 112 steps 73 (1001001) takes 113 steps 74 (1001010) takes 115 steps 75 (1001011) takes 114 steps 76 (1001100) takes 119 steps 77 (1001101) takes 118 steps 78 (1001110) takes 116 steps 79 (1001111) takes 117 steps 80 (1010000) takes 96 steps 81 (1010001) takes 97 steps 82 (1010010) takes 99 steps 83 (1010011) takes 98 steps 84 (1010100) takes 103 steps 85 (1010101) takes 102 steps 86 (1010110) takes 100 steps 87 (1010111) takes 101 steps 88 (1011000) takes 111 steps 89 (1011001) takes 110 steps 90 (1011010) takes 108 steps 91 (1011011) takes 109 steps 92 (1011100) takes 104 steps 93 (1011101) takes 105 steps 94 (1011110) takes 107 steps 95 (1011111) takes 106 steps 96 (1100000) takes 64 steps 97 (1100001) takes 65 steps 98 (1100010) takes 67 steps 99 (1100011) takes 66 steps 100 (1100100) takes 71 steps 101 (1100101) takes 70 steps 102 (1100110) takes 68 steps 103 (1100111) takes 69 steps 104 (1101000) takes 79 steps 105 (1101001) takes 78 steps 106 (1101010) takes 76 steps 107 (1101011) takes 77 steps 108 (1101100) takes 72 steps 109 (1101101) takes 73 steps 110 (1101110) takes 75 steps 111 (1101111) takes 74 steps 112 (1110000) takes 95 steps 113 (1110001) takes 94 steps 114 (1110010) takes 92 steps 115 (1110011) takes 93 steps 116 (1110100) takes 88 steps 117 (1110101) takes 89 steps 118 (1110110) takes 91 steps 119 (1110111) takes 90 steps 120 (1111000) takes 80 steps 121 (1111001) takes 81 steps 122 (1111010) takes 83 steps 123 (1111011) takes 82 steps 124 (1111100) takes 87 steps 125 (1111101) takes 86 steps 126 (1111110) takes 84 steps 127 (1111111) takes 85 steps

preferences:
79.88 ms | 418 KiB | 5 Q