Списки · 19 из 24
Пробка на кольцевой
Курьеры службы доставки возят заказы по кольцевой дороге вокруг района. Обгонять на ней нельзя: курьер едет со своей скоростью, пока не упрётся в того, кто впереди, и держит до него хотя бы клетку. Диспетчер видел странное: никто не ломался, а курьеры то и дело стоят. Чтобы понять, откуда берутся пробки, он делит кольцо на клетки и считает движение по шагам.
Что сделать
Сделайте один шаг движения по кольцу: каждый курьер едет вперёд со своей скоростью, но не ближе чем на клетку к тому, кто впереди.
Что приходит
pozicii— номера клеток, где стоят курьеры, по порядку движения: впереди каждого — следующий в списке, впереди последнего — первыйskorost— на сколько клеток курьер едет за шаг, если ничто не мешаетdlina— сколько клеток в кольце; за последней снова нулевая
Что вернуть
Новый список номеров клеток — в том же порядке курьеров.
Допишите функцию shag_kolca в редакторе справа.
Результат верните через return — то, что
напечатано, на проверку не влияет.
с графикой когда тесты пройдут, ответ вашей функции нарисуется · все задачи с графикой
Кольцо из 20 клеток, курьеры в клетках 0, 1, 2 и 10, скорость — 3. У первого впереди соседняя клетка занята — он стоит, второй тоже. Третьему до четвёртого восемь клеток — он едет на все три, в клетку 5. Четвёртому до первого, через конец кольца, десять — он в клетке 13. Ответ — [0, 1, 5, 13].
shag_kolca([0, 1, 2, 10], 3, 20)
[0, 1, 5, 13]
Все курьеры двигаются одновременно, по положениям ДО шага.
Зазор до того, кто впереди, — сколько клеток от курьера до следующего по кольцу: (впереди − свой номер) по модулю dlina. Курьер едет на min(skorost, зазор − 1) клеток: в клетку впереди идущего не въезжают. Новый номер клетки — тоже по кольцу: после клетки dlina − 1 идёт 0. Если курьер один, впереди у него всё кольцо: зазор — dlina. Номера в pozicii разные, от 0 до dlina − 1. Пустой список — пустой ответ.
Обсуждение
Вопросов пока нет.
Войдите, чтобы спросить.