Форум программистов, компьютерный форум, киберфорум
Python для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.99/120: Рейтинг темы: голосов - 120, средняя оценка - 4.99
1 / 1 / 0
Регистрация: 04.04.2016
Сообщений: 26

Задача «Кегельбан»

09.04.2017, 18:31. Показов 25715. Ответов 10
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Условие
N кеглей выставили в один ряд, занумеровав их слева направо числами от 1 до N. Затем по этому ряду бросили K шаров, при этом i-й шар сбил все кегли с номерами от li до ri включительно. Определите, какие кегли остались стоять на месте.
Программа получает на вход количество кеглей N и количество бросков K. Далее идет K пар чисел li, ri, при этом 1≤ li≤ ri≤ N.

Программа должна вывести последовательность из N символов, где j-й символ есть “I”, если j-я кегля осталась стоять, или “.”, если j-я кегля была сбита.
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
09.04.2017, 18:31
Ответы с готовыми решениями:

Олимпиадная задача по программированию. PascalABC.NET. Задача L. Переключение между окнами
Когда пользователь работает в операционной системе Winux, у него часто запущено несколько приложений. Каждое из приложений работает в...

Васильев C# Глава 8 задача 2 (Просьба объяснить формулировку(задача внутри)
Текст задачи Написать программу , в которой есть класс с полем, являющимся ссылкой на одномерный целочисленный массив. У класса есть...

Васильев C# Глава 7 задача 8 (Просьба объяснить формулировку(задача внутри)
Текст задачи Напишите программу с классом, у которого есть текстовое поле. Значение текстовому полю присваивается при создании объекта...

10
0 / 0 / 0
Регистрация: 20.06.2017
Сообщений: 1
20.06.2017, 14:06
Я решил так, но хотелось бы проще решение:

Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
kegshar=[int(i) for i in input().split()] 
a,b,c=[],[],[]
k=0
for i in range(kegshar[0]):
    i+=1
    a.append(i) 
    b.append(i)
print('a=',a)
for j in range(kegshar[1]): 
    d=[int(i) for i in input().split()]
    #a=(a[:(d[0]-1)])+(a[(d[1]):])
    for i in range(d[0], d[1]+1):
        try:
            a.remove(i)
        except ValueError:
            k+=1
print('a1=',a)
for i in b:
        if i in a:
            i='I'
        else:
            i='.'
        c.append(i)
print(''.join([str(i) for i in c]))
0
0 / 0 / 0
Регистрация: 17.09.2017
Сообщений: 10
17.09.2017, 21:03
Пытался разобраться с этой задачей, понял что
У нас есть количество кеглей N и количество бросков K. Далее идет K пар чисел l[i], r[i] по условию,
Следовательно это массив интервалов от l до r,
единсвенное что смог решить(и то неверно)
a = list(map(int, input().split())) #количество кеглей
li,ri=[],[] #K пар чисел(думаю уже неверно, как правильно не понимаю
Python
1
2
3
4
for i in range(a[-1]):
   b = list(map(int, input().split())) #количество бросков
   for j in range(int(b[0]),b[j-1])#тут определенно что то нужно исправить, что тоже не пойму
print(li,ri)#в итоге нужно вывести оставшиеся пары как я понял
Помогите найти решение, хотя бы может где-то прочитать о нем можно?
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
18.09.2017, 13:59
Python
1
2
3
4
5
6
7
N,k = list(map(int,input().split())) # или как у вас [int(i) for i in input().split()]
kegelban = ['I' for _ in range(N)]
for i in range (k):
    start,end = list(map(int,input().split()))
    for j in range (start-1,end):
        kegelban[j] ='.'
print(''.join(kegelban))
0
0 / 0 / 0
Регистрация: 17.09.2017
Сообщений: 10
18.09.2017, 14:10
спасибо за помощь!
Python
1
N,k = list(map(int,input().split())) # или как у вас [int(i) for i in input().split()]
#это количество кеглей и количество бросков,
N = list(map(int,input().split()))
k = list(map(int,input().split()))
не нужно по отдельности писать? они же отдельно подаются
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
18.09.2017, 14:59
ну если отдельно то можно и так как у вас или так
Python
1
N,k = [int(input)) for _ in range(2)]
я согласно этой подачи данных написал
0
0 / 0 / 0
Регистрация: 17.09.2017
Сообщений: 10
18.09.2017, 15:02
Понял, спасибо большое!
0
 Аватар для Semen-Semenich
5226 / 3472 / 1174
Регистрация: 21.03.2016
Сообщений: 8,299
18.09.2017, 15:19
AlekseyEfA, прошу прощенья за запарку если ЭЛЕМЕНТЫ подаются отдельно (построчно) то их и получаем построчно преобразуя в число
Python
1
2
N = int(input))
K = int(input))
так как для питона все что вводиться или получается из файла-есть строка состоящая из цифр а для дальнейшей работы нам нужны числа.
Python
1
N,k = list(map(int,input().split()))
а так мы получаем числа через пробел объясняем питону что это числа и присваиваем переменным, где количество чисел должно равняться количеству переменных. т
0
0 / 0 / 0
Регистрация: 17.09.2017
Сообщений: 10
18.09.2017, 15:49
Да если вводить отдельно
N = list(int() for i in input().split())
k = list(int() for i in input().split())
то выходит у нас не список а числа,
значит будет так?
N = (int() for i in input().split()
k = (int() for i in input().split()
0
Alvin Seville
 Аватар для Соколиный глаз
343 / 273 / 134
Регистрация: 25.07.2014
Сообщений: 4,537
Записей в блоге: 22
18.09.2017, 16:21
Python
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
import random
 
N = 15 # Количество кеглей
M = 1 # Количество шаров
 
def Remove(s, l, r):
  i = l
  while i <= r:
    if s[i]:
      s[i] = False
    i += 1
 
Skittles = []
 
for i in range(N):
  Skittles.append(True)
 
print(Skittles)
  
for i in range(M):
  l = random.randint(0, N - 1)
  r = random.randint(0, N - 1)
  if l > r:
    l, r = r, l
  Remove(Skittles, l, r)
 
print(Skittles)
Добавлено через 4 минуты
Цитата Сообщение от Darkyel Посмотреть сообщение
Далее идет K пар чисел li, ri, при этом 1≤ li≤ ri≤ N
Думаю, что хранить это все разом - не надо.

Добавлено через 44 секунды

Не по теме:

P. S. У меня True соответствует 'I', а False - '.'.

0
0 / 0 / 0
Регистрация: 03.08.2022
Сообщений: 1
03.08.2022, 20:58
n, k = map(int, input().split())
c = []
lst = [0] * n # создаем список размера n
t = 0
while t != k: # цикл для получения двумерного массива
t += 1
x = input().split()
x = list(map(int, x)) # преобразовываем списка в int
c.append(x)
for i in c: # цикл для двумерного массива
for e in range(i[0], i[1]+1): # так как координаты это два числа проходим по циклу от координат и заполняем точками
for d in range(n):
lst[e-1] = "."
for k in range(len(lst)):
if lst[k] != ".":
lst[k] = "I" # остальные части списка точнее не сбитые кегли равны I
print(''.join(map(str, lst)))
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.08.2022, 20:58
Помогаю со студенческими работами здесь

Задача со строками. Задача находится на фотке, которая прикреплена к сообщению
Фотку прикрепил к сообщению. П.5.4. Правил Запрещено создавать темы с бессмысленными названиями вроде &quot;Помогите!&quot;,...

Задача при создание нового лида выводится задача от несущ.пользователя Б24
При создание нового Лида Выходит уведомление от пользователя которого нету в компаний. Как поменять пользователя???

Задача на k-тую цифру последовательности, задача на схему Горнера.
Ну, собственно опять прошу помощи... Задача 1: Определить k-тую цифру последовательности 1234567891011121314…, в которой выписаны подряд...

Задача целочисленного программирования. Задача на оптимизацию. Матричный метод
Здравствуйте. Преподаватель дал задачи (скриншоты прикреп.) и эти две задачи были решены компонентным методом (файлы прикреплены). Но...

Задача о шахматном коне (задача Эйлера). Поиск в глубину
Требуется обойти все клетки шахматной доски ходом коня. Метод поиска решений – поиск в глубину. Буду признателен за любую помощь! Заранее...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
11
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru