Найти - Пользователи
Полная версия: Кегельбан Задача Python
Начало » Python для новичков » Кегельбан Задача Python
1
AlekseyEA
Всем привет,
помогите пожалуйста разобраться в задаче,
Условие
N кеглей выставили в один ряд, занумеровав их слева направо числами от 1 до N. Затем по этому ряду бросили K шаров, при этом i-й шар сбил все кегли с номерами от li до ri включительно. Определите, какие кегли остались стоять на месте.
Программа получает на вход количество кеглей N и количество бросков K. Далее идет K пар чисел li, ri, при этом 1≤ li≤ ri≤ N.

Программа должна вывести последовательность из N символов, где j-й символ есть “I”, если j-я кегля осталась стоять, или “.”, если j-я кегля была сбита.

что я смог решить, это неправильно но дальше мыслей нет, помогите пожалуйста разобраться поточнее с задачей, или где можно почитать про алгоритм подобных задач, так понял она типовая
a = list(map(int, input().split())) #количество кеглей
li,ri=, #K пар чисел(думаю уже неверно, как правильно не понимаю
for i in range(a):
b = list(map(int, input().split())) #количество бросков
for j in range(int(b),b)#тут определенно что то нужно исправить, что тоже не пойму
print(li,ri)#в итоге нужно вывести оставшиеся пары как я понял, как понять какая кегля упала а какая осталась я не соображу.

Romissevd
 data = input('Enter data: ')
val = list(map(int, data.split()))
res = ['I' for x in range(val[0])]
for l, r in list(zip(val[2::2], val[3::2])):
    res[l-1: r] = len(res[l-1: r]) * ['.']
print(res)
 Enter data: 10 2 2 3 7 9
['I', '.', '.', 'I', 'I', 'I', '.', '.', '.', 'I']
AlekseyEA
Спасибо огромное за помощь!
плюс хотелось бы принцип понять, я так понял это задача на точки вхождения?
1 По условию N количество кеглей(например 9)
2 K бросков(например 4)
3 следовательно у нас будет 4 пары сбитых кеглей(правильно ли я понял что один шар сбивает только две кегли?и может ли шар сбить только одну кеглю)
4 Получается сначала мы вводим
val = list(map(int, data.split()))#количество кеглей
res = ['I' for x in range(val[0])]#кегли которые остались стоять
for l, r in list(zip(val[2::2], val[3::2])): #это похоже отрезки?эту часть не совсем понял
res[l-1: r] = len(res[l-1: r]) * ['.']#соответственно заменяем сбитые кегли
print(res)#выводим весь диапазон

Вот по этой строке
 for l, r in list(zip(val[2::2], val[3::2])):
почему мы берем отрезки интервалом ?



This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB