Как в Python считать по кругу?

Приветствую

Пытаюсь понять как в python считать по кругу, но туговато получается.

Задача:

Есть 30 человек в круге. Ведущий выгоняет по кругу каждого n-ного человека. Нужно определить номер человека, который останется в итоге и по возможности порядковые номера исключенных из круга.


Подскажите пожалуйста варианты решения этой задачи.
  • Вопрос задан
  • 2018 просмотров
Пригласить эксперта
Ответы на вопрос 3
@n1cew0lf
Sysadmin
Бесподобная вики опять помогает:
https://ru.wikipedia.org/wiki/%D0%97%D0%B0%D0%B4%D...

Задача Иосифа Флавия. И алгоритм тоже есть :)
Ответ написан
@abcd0x00
>>> import collections
>>> 
>>> lst = [1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> n = 5
>>> 
>>> deq = collections.deque(enumerate(lst))
>>> 
>>> while len(deq) > 1:
...     deq.rotate(-n)
...     print(deq.pop())
... 
(4, 5)
(0, 1)
(6, 7)
(3, 4)
(2, 3)
(5, 6)
(8, 9)
(1, 2)
>>> print(deq)
deque([(7, 8)])
>>>
Ответ написан
abs0lut
@abs0lut
как в python считать по кругу

>>> import itertools
>>> foo = itertools.cycle((1,2,3))
>>> for i in range(7):
	     next(foo)	
1
2
3
1
2
3
1
>>>
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы