Verwandte: Programmieren Sie meine Mikrowelle und Generieren Sie faule Werte .
Mein Kollege ist so faul, dass er sich beim Programmieren der Mikrowelle nicht einmal die Mühe macht, den Finger zu bewegen. (Das ist tatsächlich wahr!)
Helfen Sie ihm, den Mikrowelleneingang zu finden, der die Zeit angibt, die dem am nächsten kommt, was er will, aber bei dem alle Ziffern gleich sind. Wenn zwei Eingaben zur gleichen Zeitdifferenz von der gewünschten Zeit führen, wählen Sie die mit weniger Stellen. Wenn beide die gleiche Anzahl von Ziffern haben, wählen Sie die kleinere - damit er nicht so lange warten muss.
Die Eingabe ist die Ganzzahl, die ein Perfektionist eingeben würde, z. B. 430
4 Minuten und 30 Sekunden, während 100
und 60
jede Minute 1 Minute ist. Es wird größer als 0 sein und 9999 nicht überschreiten.
Die Ausgabe muss eine ganze Zahl sein, z. B. 444
4 Minuten und 44 Sekunden und 55
55 Sekunden.
Sowohl Eingabe als auch Ausgabe dürfen nur in einfachen Sekunden (keine Minuten) erfolgen, wenn die Gesamtzeit unter 1 Minute und 40 Sekunden liegt.
Das ist Code-Golf , also muss Ihr Code so kurz wie möglich sein.
Testfälle:
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
Antworten:
Gelee, 26 Bytes
Erläuterung:
Probieren Sie es online!
quelle
JavaScript (ES6), 112 Byte
Verwendet eine Hilfsfunktion,
c
die das Fünffache der tatsächlichen Anzahl der verstrichenen Sekunden berechnet.quelle
Dyalog APL , 37 Bytes
⍳4
1 2 3 4 Wiederholungstabelle⎕D
"0123456789"∘./⍨
(wie eine Multiplikationstabelle, wobei jedoch jede Zelle B Wiederholungen von A anstelle von A × B enthält),
Tabelle in Liste von Zeichenfolgen⍎¨
umwandeln Jede Zeichenfolge in Zahl umwandeln (Jetzt haben wir eine Liste aller möglichen Ergebnisse.){
…}
Funktion, bei der das Argument durch⍵
⎕⍵
vorangestelltes Argument mit Eingabeaufforderung dargestellt wird.(
…)¨
auf jedes der beiden Argumente (das Argument und die Liste) anwenden. ...0 100∘⊤
auf Basis 10060⊥
konvertieren. Von Basis 60 konvertieren.-/
Die Differenz zwischen den beiden|
Absoluten berechnen Wert⊃
Extraktes Liste (weil-/
gekapselt sein Ergebnis)⍋
Sortierreihenfolge (Sortiert nicht, gibt nur die Reihenfolge zurück, in der die Argumente platziert werden müssen, um eine aufsteigende Reihenfolge zu erreichen. Wenn zwei Elemente gleich sind, bleiben sie in der aktuellen Reihenfolge. Da unsere Liste Elemente mit zunehmender Länge enthält, werden Bindungen berücksichtigt.)⊃
der erste, dh der mit der geringsten absoluten Abweichung von der Eingabe,⍵⊃⍨
nimmt das Element aus der Argumentliste (der Liste der möglichen Ergebnisse)Vielen Dank an den fraglichen Kollegen für das Abschneiden eines Bytes.
Hinweis: Ich hatte zum Zeitpunkt der Veröffentlichung des OP keine Lösung.
quelle