Cadeado
Retirado da OBI Nível Júnior de 2024
Verificação de Aprendizagem: Avalie sua compreensão. Tente resolver sem consultar materiais, usando apenas seu conhecimento. Identifique áreas que precisam de revisão.
Enunciado
Após uma longa viagem, Fábio quer descansar. Ele pretende vestir o pijama que está dentro de sua mala, trancada com um cadeado protegido por uma senha numérica de N dígitos.
O cadeado possui N discos, um para cada dígito. Cada disco possui os dígitos de 0 a 9 ordenados em sentido horário. Para trocar um dígito, Fábio pode girar o disco em sentido horário ou anti-horário. Cada giro de uma posição faz um "clique".
Por exemplo, considere um disco que mostra o dígito 9:
- Se girarmos uma posição no sentido **horário**, ele mostrará o dígito 8.
- Se girarmos duas posições no sentido **anti-horário**, ele mostrará o dígito 1.

Para abrir o cadeado, os dígitos mostrados devem corresponder à senha. Fábio quer abrir o cadeado com o **mínimo de cliques** possível para não acordar seu colega de quarto.
Dada a quantidade N de dígitos, o dígito atual de cada disco e o dígito da senha, determine o número mínimo de cliques necessários.
Entrada: Um inteiro `N` (a quantidade de discos). Uma lista `discos` de tuplas, onde cada tupla é `(atual, senha)`, representando o dígito atual e o dígito da senha para aquele disco.
Saída: Um inteiro representando a quantidade mínima total de cliques.
Exemplo
cadeado(3, [(0, 0), (9, 8), (9, 1)]) >> 3
Habilidades
-
Lógica de Condições e Decisões
Controle de Fluxo e Iteração