Relacionado: Programe meu forno de microondas e Gere valores preguiçosos .
Meu colega é tão preguiçoso que nem se incomoda em mexer o dedo ao programar o forno de microondas. (Isso é verdade!)
Ajude-o a encontrar a entrada de microondas que permita o tempo mais próximo do que ele deseja, mas onde todos os dígitos são iguais. Se duas entradas resultarem na mesma diferença horária do tempo desejado, escolha aquela com menos dígitos. Se ambos tiverem o mesmo número de dígitos, escolha o menor - para que ele não precise esperar tanto.
Input é o número inteiro que um perfeccionista digitaria, por exemplo, 430
é de 4 minutos e 30 segundos enquanto 100
e 60
cada um é de 1 minuto. Será maior que 0 e não excederá 9999.
A saída deve ser um número inteiro, por exemplo, 444
4 minutos e 44 segundos e 55
55 segundos.
Tanto a entrada quanto a saída podem ser realizadas apenas em segundos simples (sem minutos) se o tempo total for inferior a 1 minuto e 40 segundos.
Isso é código-golfe , portanto, seu código deve ser o mais curto possível.
Casos de teste:
30 → 33
60 → 55
70 → 111
90 → 88
100 → 55
101 → 66
120 → 77
130 → 88
200 → 99
201 → 222
500 → 444
700 → 666
1000 → 888
1055 → 999
1056 → 1111
1090 → 1111
Respostas:
Geléia, 26 bytes
Explicação:
Experimente online!
fonte
JavaScript (ES6), 112 bytes
Usa uma função auxiliar
c
que calcula cinco vezes o número real de segundos decorridos.fonte
Dyalog APL , 37 bytes
⍳4
1 2 3 4⎕D
"0123456789"∘./⍨
tabela de repetição (como uma tabela de multiplicação, mas onde cada célula contém B repetições de A em vez de A × B),
transforma a tabela em lista de cadeias de caracteres⍎¨
transforma cada número em cadeia (Agora, temos uma lista de todos os possíveis resultados.){
…}
função em que o argumento é representado pelo⍵
⎕⍵
argumento precedente com entrada solicitada(
…)¨
aplica-se a cada um dos dois (o argumento e a lista) ...0 100∘⊤
converte em base-10060⊥
converte em base-60-/
calcule a diferença entre os dois valores|
absolutos⊃
lista de extração de valor (porque-/
encapsulou seu resultado)⍋
ordem de classificação (Não classifica, retorna apenas a ordem na qual os argumentos devem ser alcançados. Se dois elementos forem iguais, eles permanecerão na ordem atual. Como nossa lista possui elementos de tamanho crescente, isso cuida dos vínculos.)⊃
o primeiro, ou seja, aquele com a menor diferença absoluta da entrada,⍵⊃⍨
retira esse elemento da lista de argumentos (a lista de resultados possíveis)Agradecemos ao colega em questão por reduzir um byte.
Nota: Eu não tinha nenhuma solução no momento da postagem do OP.
fonte