Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
First solution in Uncategorized category for Rotate Hole by Kurush
def rotate(state, pipe_numbers):
res = []
for i in range(len(state)):
new_state = rotate_list(state, i)
if (check(new_state, pipe_numbers) == True):
res.append(i)
return res
def rotate_list(lst, pos):
return lst[-pos:] + lst[:-pos]
def check(state, pipe_numbers):
for pipe_number in pipe_numbers:
if state[pipe_number] == 0:
return False
return True
if __name__ == '__main__':
#These "asserts" using only for self-checking and not necessary for auto-testing
assert rotate([1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1], [0, 1]) == [1, 8], "Example"
assert rotate([1, 0, 0, 0, 1, 1, 0, 1, 0, 0, 0, 1], [0, 1, 2]) == [], "Mission impossible"
assert rotate([1, 0, 0, 0, 1, 1, 0, 1], [0, 4, 5]) == [0], "Don't touch it"
assert rotate([1, 0, 0, 0, 1, 1, 0, 1], [5, 4, 5]) == [0, 5], "Two cannonballs in the same pipe"
Jan. 17, 2019