Existem muitos quebra-cabeças com correspondências que envolvem adicionar, remover ou mover um certo número de correspondências para criar novos números ou formas. É assim com um relógio digital.
Dado um tempo válido em um relógio digital de 12 horas, imprima o dígito que requer mover o menor número de linhas para que todos os dígitos visíveis no relógio se tornem esse dígito. Se mais de um dígito for o mínimo, imprima todos eles. Se for impossível tornar todos os dígitos iguais, -1
gerar um valor falso ou diferente de 0 (você obterá muitos deles).
Os dígitos do relógio são assim:
|
|
_
_|
|_
_
_|
_|
|_|
|
_
|_
_|
_
|_
|_|
_
|
|
_
|_|
|_|
_
|_|
_|
_
| |
|_|
Casos de teste:
Entrada: 123
Exibição do relógio:
_ _
| : _| _|
| : |_ _|
Resultado: 4
Explicação: A exibição para 1:23
requer um total de 12 linhas a serem desenhadas. Portanto, para cada dígito ser o mesmo, cada dígito teria que ter 4 linhas. O único dígito que tem 4 linhas é 4
. Portanto, a resposta tem que ser 4
.
Entrada: 1212
Exibição do relógio:
_ _
| _| : | _|
| |_ : | |_
Resultado: -1
Explicação: A exibição para 12:12
requer 14 linhas. 14 dividido por 4 não é um número inteiro; portanto, é impossível que cada dígito seja o mesmo.
Entrada: 654
Exibição do relógio:
_ _
|_ : |_ |_|
|_| : _| |
Resultado: 5
Explicação: O número total de linhas é 15. 15 dividido por 3 é 5, portanto, cada dígito deve ter 5 linhas. Os únicos dígitos que têm 5 linhas são 2
, 3
e 5
. A resposta é 5
que são necessários apenas dois movimentos para fazer todos os dígitos 5. Mova a linha na parte inferior esquerda do 6 para a parte inferior do 4, e você terá:
_ _
|_ : |_ |_|
_| : _| _|
Então, como você pode ver, tudo o que você precisa fazer é mover a linha no canto superior direito do dígito que originalmente era 4 para o topo e você consegue 5:55
. Para tornar cada dígito um 2
ou 3
exigiria mais de 2 movimentos.
Entrada: 609
Exibição do relógio:
_ _ _
|_ : | | |_|
|_| : |_| _|
Saída: 609
( 6,0,9
ou [6,0,9]
também ok).
Explicação: 6
, 0
, e 9
são os únicos dígitos que têm 6 linhas. Como tal, elas também são as únicas soluções possíveis. Não é difícil ver que seriam necessários dois movimentos para tornar qualquer um deles o único dígito. Portanto, você produz os três dígitos.
Notas:
- Embora o tempo de entrada deva ser válido, o tempo de saída não (por exemplo,
999
como uma saída está correta). - Eu sou muito flexível com a entrada. Você pode exigir um 0. inicial. Você pode usar um número com um ponto decimal. Você pode usar uma string. Você pode usar uma matriz. Você pode ter um parâmetro para cada dígito.