Neste exercício, estudaremos o problema das 100 portas. Temos 100 portas em sequência, numeradas 1-100, e todas começam trancadas. Agora passamos 100 vezes pelas portas. Na primeira passagem, você muda o estado das trancas (portas trancadas são abertas, portas abertas são trancadas) nas portas $1,2,3,4,\dots$. Na segunda passagem, você muda o estado das trancas nas portas $2,4,6,8,\dots$, e na terceira passagem, você muda o estado das trancas nas portas $3,6,9,12,\dots$, e assim por diante. Você faz isso até chegar a 100 (nessa última passagem apenas a última porta tem sua tranca modificada).
Matematicamente, isso significa que na $m$-ésima passagem, você troca o estado da tranca para cada $m$-ésima porta (quer dizer, as portas numeradas $k$ de modo que $k\mod m =0$).
Na caixa abaixo, insira uma lista Python ordenada (menor para o maior) contendo os números das portas que estarão desbloqueadas após 100 passagens (nota: você pode querer escrever um programa Python para ajudar a responder essa pergunta!).
Portas abertas:
Você provavelmente notou um padrão interessante nos números acima! Nesta seção, investigaremos se esse padrão se mantêm independentemente do número de portas consideradas.
Escreva uma função ndoors
que recebe um único argumento inteiro representando $n$ (o número de portas consideradas) e retorna uma lista de portas que estão desbloqueadas após $n$ passagens pela porta. Por exemplo, se 1000
for passado como argumento, consideraremos o caso em que temos 1000
portas e fazemos 1000
passagens por elas.
Você deve resolver esse problema completamente, não apenas testar se o padrão acima se mantém ou não.
Antes de executar seu código, tente pensar se o padrão observado acima deve se manter conforme o número de portas muda.
Notas:
Quando estiver pronto, faça upload do seu arquivo Python no Problema 2.3 no Gradescope. Lembre de nomear seu arquivo p2_3.py
.