找到更改整数以匹配列表中其他整数的最小移动次数

时间:2019-03-30 05:00:58

标签: python loops

我对编码非常陌生,在作为训练营应用程序的一部分时,遇到了我整天都在工作的问题,但Im感到困惑。它也是定时的,我只剩下大约12个小时了。我必须取两个整数,并通过上下移动每个数字,然后将它们与第二对整数进行匹配,然后加上执行此操作所需的最小移动数,这将是最终的答案。这是我第一次使用CSS以外的任何形式的语言,所以请多多包涵。示例如下:

“ Andrea和Maria每个人都有一个整数数组。Andrea想要更改其数组以匹配Maria的整数。对于她数组中的每个元素,sha可以一举一动地递增或递减一位数字。它将移动几步。选择Andrea来匹配Marias数组。

完成函数minimumMoves

minimumMoves具有以下参数: a [a [0],... a [n-1]]: m [m [0],... m [n-1]]:

我是如此迷茫,我真的需要有人向我指出正确的方向。请帮忙!!!

我已经在谷歌上搜索了,但是我无法解决这个问题,如何从整数中挑选出每个数字并遍历每个数字,而不必为每个数字编写新的代码行。

#!/bin/python3

import math
import os
import random
import re
import sys



#
# Complete the 'minimumMoves' function below.
#
# The function is expected to return an INTEGER.
# The function accepts following parameters:
#  1. INTEGER_ARRAY a
#  2. INTEGER_ARRAY m
#

def minimumMoves(a, m):
    # Write your code here
    a = [4321, 3211]
    m = [5432, 4302]
    total=0
        if a[0] <= b[0]
           a[0] += 1
        else if a[0] >= b[0]
            a[0] += 1

2 个答案:

答案 0 :(得分:0)

如果在列表中表示相同的索引数字,则可以尝试以下操作:

def minimumMoves(a, m):
    # Write your code here
    a = [4321, 3211]
    m = [5432, 4302]
    total = 0
    # iterate the array of a and m together
    for i, j in zip(a, m):
        # means how many steps to turn i into j
        total += abs(i - j)
    return total

希望对您有所帮助,如有其他问题,请发表评论。 :)

答案 1 :(得分:0)

zip两次对字符串化整数进行比较,以逐位比较和求和绝对差。
我不清楚9-> 1是两个动作(9-> 0-> 1)还是八个动作。我认为是后者:

def minimumMoves(a, m):
    a = [str(x) for x in a]
    m = [str(x) for x in m]
    return sum([
        abs(int(f) - int(s)) 
        for x, y in zip(a, m) 
        for f, s in zip(x, y)
    ])

a = [4321, 3211]
m = [5432, 4302]

minimumMoves(a, m)

>>> 8