Нахождение минимального количества ходов, меняющих целые числа в соответствии с другими в списке - PullRequest
3 голосов
/ 30 марта 2019

Я чрезвычайно новичок в кодировании, и как часть приложения к загрузочному лагерю была обнаружена проблема, над которой я работал весь день, но я в тупике. Это также приурочено, и у меня осталось только около 12 часов. Я должен взять два целых числа и сопоставить их со второй парой целых чисел, переместив каждую цифру вверх или вниз, а затем добавив минимальное число ходов, которое мне потребовалось, чтобы сделать окончательный ответ. Это мой первый раз, когда я использую любой вид программирования за пределами CSS, поэтому, пожалуйста, потерпите меня. Пример выглядит следующим образом:

"Андреа и Мария имеют массив целых чисел. Андреа хочет изменить свой массив в соответствии с именем Марии. Для каждого элемента своего массива ша может увеличивать или уменьшать число в одном элементе за один ход. Сколько будет ходов? возьмите Андреа, чтобы он соответствовал массиву Мариаса.

Завершить функцию минимум движений

минимумMoves имеет следующие параметры: а [а [0], ... а [п-1]]: м [м [0], ... м [п-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 голосов
/ 27 апреля 2019

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
0 голосов
/ 30 марта 2019

Если вы имеете в виду ту же самую индексную цифру в списке, вы можете попробовать это:

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

Надеюсь, что это поможет вам, и прокомментируйте, если у вас есть дополнительные вопросы. :)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...