Найти минимальное перемещение между 2 списками, используя Python? - PullRequest
0 голосов
/ 08 января 2019

Учитывая a=[123,45] и b=[232,64] нам нужно определить ходы от a до b

a[0] до b[0] ведет к:

increment by 1(1 to 2), 
increment by 1(2 to 3), 
decrement by 1(3 to 2) 

итак 3 всего двигаться (1+1+1).

a[1] до b[1] приводит к

increment by 2(4 to 6), 
decrement by 1(5 to 4)

3 всего ходов (2 + 1)

Мин. Ходы = 3 + 3 = 6.

Итак, для данного 2 списка нам нужно найти общее количество ходов, чтобы добраться до следующего списка?

Моя неверная программа ниже

def sub(a,b):
 s = 0
 for x, y in zip(a,b):
   s += x-y
 return s
sub([123,45],[232,64])

-128

1 Ответ

0 голосов
/ 08 января 2019

Это должно работать:

def sub(a,b):
    s = 0
    for x, y in zip(a,b):
        s += sum(abs(int(n) - int(m)) for n, m in zip(str(x), str(y)))
    return s

print(sub([123,45],[232,64]))

Выход:

6
...