Connexes: Programmer mon four à micro-ondes et générer des valeurs paresseuses .
Mon collègue est tellement paresseux qu'il ne prend même pas la peine de bouger son doigt lors de la programmation du four à micro-ondes. (C'est en fait vrai!)
Aidez-le à trouver l'entrée micro-ondes qui donne l'heure la plus proche de ce qu'il veut, mais où tous les chiffres sont les mêmes. Si deux entrées entraînent le même décalage horaire par rapport à l'heure souhaitée, choisissez celle avec le moins de chiffres. Si les deux ont le même nombre de chiffres, choisissez le moindre - pour qu'il n'ait pas à attendre aussi longtemps.
L'entrée est l'entier que saisirait un perfectionniste, par exemple 430
4 minutes et 30 secondes 100
et 60
1 minute chacun. Il sera supérieur à 0 et ne dépassera pas 9999.
La sortie doit être un entier, par exemple 444
4 minutes et 44 secondes et 55
55 secondes.
L'entrée et la sortie ne peuvent se faire qu'en quelques secondes (pas de minutes) si le temps total est inférieur à 1 minute et 40 secondes.
C'est du code-golf , donc votre code doit être aussi court que possible.
Cas de test:
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
Réponses:
Gelée, 26 octets
Explication:
Essayez-le en ligne!
la source
JavaScript (ES6), 112 octets
Utilise une fonction d'assistance
c
qui calcule cinq fois le nombre réel de secondes écoulées.la source
Dyalog APL , 37 octets
⍳4
1 2 3 4⎕D
"0123456789"∘./⍨
table de répétition (comme une table de multiplication, mais où chaque cellule contient B répétitions de A au lieu de A × B),
faire du tableau une liste de chaînes⍎¨
faire de chaque chaîne un nombre (Maintenant, nous avons une liste de tous les possibles résultats.){
…}
fonction où l'argument est représenté par un⍵
⎕⍵
argument précédé d'une entrée demandée(
…)¨
s'applique à chacun des deux (l'argument et la liste) ...0 100∘⊤
convertit en base 10060⊥
convertit en base 60-/
calcule la différence entre les deux|
absolus⊃
liste d'extraits de valeur (car-/
encapsulé son résultat)⍋
ordre de tri (ne trie pas, renvoie uniquement l'ordre dans lequel placer les arguments pour atteindre l'ordre croissant. Si deux éléments sont égaux, ils restent dans l'ordre actuel. Puisque notre liste contient des éléments de longueur croissante, cela prend soin des liens.)⊃
le premier, c'est-à-dire celui avec la plus petite différence absolue par rapport à l'entrée,⍵⊃⍨
prend cet élément de la liste d'arguments (la liste des résultats possibles)Merci au collègue en question d'avoir rasé un octet.
Remarque: je n'avais aucune solution au moment de la publication de l'OP.
la source