Enable Javascript in your browser and then refresh this page, for a much enhanced experience.
BFS solution in Clear category for Digits Doublets by aya.kanazawa
from collections import deque
def checkio(numbers):
numbers = list(map(str, numbers))
q = deque()
q.append([numbers[0]])
while q:
root = q.popleft()
for n in numbers:
if root[-1] == numbers[-1]:
# print(f'root={root}')
return list(map(int, root))
if n in root or sum(1 for s1, s2 in zip(root[-1], n) if s1 != s2) > 1:
continue
q.append(root + [n])
#These "asserts" using only for self-checking and not necessary for auto-testing
if __name__ == '__main__':
assert checkio([123, 991, 323, 321, 329, 121, 921, 125, 999]) == [123, 121, 921, 991, 999], "First"
assert checkio([111, 222, 333, 444, 555, 666, 121, 727, 127, 777]) == [111, 121, 127, 727, 777], "Second"
assert checkio([456, 455, 454, 356, 656, 654]) == [456, 454, 654], "Third, [456, 656, 654] is correct too"
July 7, 2019
Comments: