Cadeado

Cadeado

The mission is in Blocked Mode. Access to the solutions is blocked for a day or two (even after you share your own), until we'll have enough solutions for you to check. All users who've solved the mission will get the notifications about their opening.

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.
example

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