All your fractions are belong to base def group_and_skip(n, out, ins): A pile of n identical coins lies on the table. In each move, the coins in the currently remaining pile are arranged into groups of exactly out coins each, where out is a positive integer greater than one. The n%out leftover coins that did not make a complete group of out elements are taken aside and recorded. From each complete group of out coins taken out, exactly ins coins are put back into the pile, and the rest of the coins of that group are discarded aside. Repeat this until the pile becomes empty, which must eventually happen whenever out>ins. Return a list that tells how many coins were taken aside in each step. As you can see in the first three rows, this method produces the digits of n in base out in reverse order. So this entire setup turned out to be the cleverly disguised algorithm to construct the representation of integer n in base out. However, an improvement over the standard algorithm for such base conversion is that this version works not only for integer bases, but allows any fraction out/ins that satisfies out>ins and gcd(out,ins)==1 to be used as a base! For example, the familiar integer 42 would be written as 323122 in base 4/3. n out ins expected results 123456789 10 1 [9, 8, 7, 6, 5, 4, 3, 2, 1] 987654321 1000 1 [321, 654, 987] 255 2 1 [1, 1, 1, 1, 1, 1, 1, 1] 81 5 3 [1, 3, 2, 0, 4, 3] 10**9 13 3 [12, 1, 2, 0, 7, 9, 8, 11, 6, 8, 10, 5, 8, 3] please add comments in the code
All your fractions are belong to base
def group_and_skip(n, out, ins):
A pile of n identical coins lies on the table. In each move, the coins in the currently remaining pile are arranged into groups of exactly out coins each, where out is a positive integer greater than one. The n%out leftover coins that did not make a complete group of out elements are taken aside
and recorded. From each complete group of out coins taken out, exactly ins coins are put back into the pile, and the rest of the coins of that group are discarded aside. Repeat this until the pile becomes empty, which must eventually happen whenever out>ins. Return a list that tells how
many coins were taken aside in each step. As you can see in the first three rows, this method produces the digits of n in base out in reverse
order. So this entire setup turned out to be the cleverly disguised
out/ins that satisfies out>ins and gcd(out,ins)==1 to be used as a base! For example, the familiar integer 42 would be written as 323122 in base 4/3.
n | out | ins | expected results |
123456789 | 10 | 1 | [9, 8, 7, 6, 5, 4, 3, 2, 1] |
987654321 | 1000 | 1 | [321, 654, 987] |
255 | 2 | 1 | [1, 1, 1, 1, 1, 1, 1, 1] |
81 | 5 | 3 | [1, 3, 2, 0, 4, 3] |
10**9 | 13 | 3 | [12, 1, 2, 0, 7, 9, 8, 11, 6, 8, 10, 5, 8, 3] |
please add comments in the code
Trending now
This is a popular solution!
Step by step
Solved in 3 steps with 2 images