Коты в шляпах – вызов. ПитонPython

Программы на Python
Ответить
Anonymous
 Коты в шляпах – вызов. Питон

Сообщение Anonymous »

У меня есть решения этой проблемы, но: я изо всех сил пытаюсь увидеть логику решений! может кто-нибудь объяснить, как это работает?

У вас 100 кошек.
Однажды вы решаете собрать всех своих кошек в гигантский круг. Изначально ни на одной из ваших кошек нет шляп. Вы проходите по кругу 100 раз, всегда начиная с одного и того же места, с первого кота (кошка № 1). Каждый раз, когда вы останавливаетесь у кошки, вы либо надеваете на нее шляпу, если на ней ее нет, либо снимаете с нее шляпу, если она есть.
  • В первом раунде вы останавливаетесь у каждой кошки, надевая на каждую шляпу.
  • Во втором раунде вы останавливаетесь только у каждой второй кошки (№2, №4, №6, №8 и т. д.).
  • В третьем раунде вы останавливайтесь только у каждой третьей кошки (#3,#6,#9,#12 и т. д.).
  • Вы продолжаете этот процесс, пока не сделаете 100 обходов вокруг кошек (например, вы посещаете только 100-ю кошку).
Напишите программу, которая просто выводит, у каких кошек есть шляпы в конце.

Вот решение
Решение №1:

def get_cats_with_hats(array_of_cats):
cats_with_hats_on = []

for num in range(1, 100 + 1):
for cat in range(1, 100 + 1):
if cat % num == 0:
if array_of_cats[cat] is True:
array_of_cats[cat] = False
else:
array_of_cats[cat] = True
for cat in range(1, 100 + 1):
if cats[cat] is True:
cats_with_hats_on.append(cat)
return cats_with_hats_on

cats = [False] * (100 + 1)
print(get_cats_with_hats(cats))




Решение № 2:

number_of_cats = 100
cats_with_hats = []
number_of_laps = 100

# We want the laps to be from 1 to 100 instead of 0 to 99
for lap in range(1, number_of_laps + 1):
for cat in range(1, number_of_cats + 1):

# Only look at cats that are divisible by the lap
if cat % lap == 0:
if cat in cats_with_hats:
cats_with_hats.remove(cat)
else:
cats_with_hats.append(cat)

print(cats_with_hats)


Подробнее здесь: https://stackoverflow.com/questions/606 ... nge-python
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Python»