Задача Python 3.7.3 <Ближайший ноль>

Dimetra

Новичок
Пользователь
Ноя 22, 2022
9
1
3
Всем привет, помогите пожалуйста как реализовать строку
outdoors = list(map(int, input().strip().split()))
и
return ' '.join(map(str, result))
Вместо map нужно использовать list comprehension

Python:
from typing import Tuple, List


def read_input() -> Tuple[List[int], int]:
    n = int(input())
    outdoors = list(map(int, input().strip().split()))
    return outdoors, n


def get_next_zero(outdoors: List[int], n: int) -> str:
    result = [0] * len(outdoors)
    zero_list = [i for i in range(n) if outdoors[i] == 0]

    for house in range(0, zero_list[0] + 1):
        result[house] = zero_list[0] - house

    for pos in range(len(zero_list) - 1):
        zero_1, zero_2 = zero_list[pos], zero_list[pos + 1]
        for house in range(zero_1, zero_2):
            result[house] = min(house - zero_1, zero_2 - house)

    for house in range(zero_list[-1], len(outdoors)):
        result[house] = house - zero_list[-1]

    return ' '.join(map(str, result))


def main() -> None:
    outdoors, n = read_input()
    print(get_next_zero(outdoors, n))


if __name__ == '__main__':
    main()
 

robisho

Активный пользователь
Пользователь
Окт 19, 2020
151
26
28
Python:
outdoors = [int(x) for x in input().strip().split()]
return ''.join([str(x) for x in result])
 

Dimetra

Новичок
Пользователь
Ноя 22, 2022
9
1
3
Python:
outdoors = [int(x) for x in input().strip().split()]
return ''.join([str(x) for x in result])
Попробовала, так не работает(
 

4olshoy_blen

Популярный
Пользователь
Ноя 13, 2022
372
107
43
Попробовала, так не работает(
Опишите что вы пытаетесь сделать вашим кодом?
 

Dimetra

Новичок
Пользователь
Ноя 22, 2022
9
1
3
Опишите что вы пытаетесь сделать вашим кодом?
Вот сама задача для которой написан код, не без помощи интернета, алгоритмы очень тяжко даются, а задачу нужно сдать до завтра(:)
Тимофей ищет место, чтобы построить себе дом. Улица, на которой он хочет жить, имеет длину n, то есть состоит из n одинаковых идущих подряд участков. Каждый участок либо пустой, либо на нём уже построен дом.
Общительный Тимофей не хочет жить далеко от других людей на этой улице. Поэтому ему важно для каждого участка знать расстояние до ближайшего пустого участка. Если участок пустой, эта величина будет равна нулю — расстояние до самого себя.
Помогите Тимофею посчитать искомые расстояния. Для этого у вас есть карта улицы. Дома в городе Тимофея нумеровались в том порядке, в котором строились, поэтому их номера на карте никак не упорядочены. Пустые участки обозначены нулями.

Формат ввода:
В первой строке дана длина улицы —– n (1 ≤ n ≤ 106). В следующей строке записаны n целых неотрицательных чисел — номера домов и обозначения пустых участков на карте (нули). Гарантируется, что в последовательности есть хотя бы один ноль. Номера домов (положительные числа) уникальны и не превосходят 109.

Формат вывода:
Для каждого из участков выведите расстояние до ближайшего нуля. Числа выводите в одну строку, разделяя их пробелами.

Я сделала так как выше, вставила код, она работает и проверяющий сказал исправить строки:
outdoors = list(map(int, input().strip().split()))
return ' '.join(map(str, result))
Цитирую как написал замечание "Вместо map используй list comprehension"
 

Dimetra

Новичок
Пользователь
Ноя 22, 2022
9
1
3
Опишите что вы пытаетесь сделать вашим кодом?
Вот так сейчас заработала


Python:
from typing import Tuple, List
 
 
def read_input() -> Tuple[List[int], int]:
    n = int(input())
    outdoors = [int(_) for _ in input().strip().split()]
    return outdoors, n
 
 
def get_next_zero(outdoors: List[int], n: int) -> str:
    result = [0] * len(outdoors)
    zero_list = [i for i in range(n) if outdoors[i] == 0]
 
    for house in range(0, zero_list[0] + 1):
        result[house] = zero_list[0] - house
 
    for pos in range(len(zero_list) - 1):
        zero_1, zero_2 = zero_list[pos], zero_list[pos + 1]
        for house in range(zero_1, zero_2):
            result[house] = min(house - zero_1, zero_2 - house)
 
    for house in range(zero_list[-1], len(outdoors)):
        result[house] = house - zero_list[-1]
 
    return ' '.join(str(_) for _ in result)
 
 
def main() -> None:
    outdoors, n = read_input()
    print(get_next_zero(outdoors, n))
 
 
if __name__ == '__main__':
    main()
 
  • Мне нравится
Реакции: 4olshoy_blen

Форум IT Специалистов