Mein Wecker
Ich bin Amerikaner und mein (digitaler) Wecker auch. Um den Alarm einzustellen, startet er zu der Zeit, die er zuvor war. Durch Drücken der Stundentaste wird eine Stunde nach oben und durch Drücken der Minutentaste eine Minute nach oben verschoben. Wenn Sie beide Tasten gleichzeitig drücken, wird dies auf Mitternacht (00:00 Uhr) zurückgesetzt und als zwei Tastendrücke gezählt.
Wenn die Stunden ihre Obergrenze (12) überschreiten, wird sie auf 1 zurückgesetzt und das AM / PM-Licht wird umgeschaltet. Wenn die Minuten ihre Obergrenze (59) überschreiten, werden sie auf 0 zurückgesetzt, ohne die Stunden zu beeinflussen.
Die Aufgabe
Ihre Aufgabe ist es, anhand einer Startzeit und einer Zielzeit die optimale Anzahl von Tastendrücken auszugeben, die erforderlich sind, um meinen Alarm auf die Zielzeit einzustellen.
Sie können Eingaben in einem für Sie am besten geeigneten Format vornehmen. Die einzigen Daten, die Ihr Programm benötigen sollte, sind Stunden und Minuten für beide Eingaben. Das bedeutet, dass Sie zum Beispiel Daten seit der Epoche als Millisekunden annehmen und die Stunden und Minuten extrahieren, aber möglicherweise nichts in das Jahr, den Monat, die Sekunde usw. codieren "Militärzeit" (oder reguläre Zeit für den größten Teil der Welt), aber das ändert nichts an meiner Uhr.
Beispiele
1:15 pm -> 2:30 am
Sie können beide Tasten drücken, um auf 00:00 Uhr zurückzusetzen, und dann auf 02:30 Uhr erhöhen, was einem Drücken von 2+2+30 = 34
Tasten entspricht. Sie können auch auf 2:30 vormittags aufsteigen, was ein 13+15 = 28
Knopfdruck wäre . Daher ist Ihre Ausgabe 28
.
3:58 am -> 4:02 am
Sie könnten zurücksetzen und inkrementieren, was ein 2+4+2 = 8
Knopfdruck wäre . Sie könnten auch erhöhen, was ein 1+4 = 5
Knopfdruck wäre . Daher ist Ihre Ausgabe 5
.
10:55 pm -> 1:00 am
Sie könnten zurücksetzen und inkrementieren, was ein 2+1 = 3
Knopfdruck wäre . Sie könnten auch erhöhen, was ein 3+5=8
Knopfdruck wäre . Daher ist Ihre Ausgabe 3
.
1:00 am -> 1:59 pm
Sie könnten zurücksetzen und inkrementieren, aber das wären drei Druckvorgänge mehr als nur inkrementieren. Daher ist Ihre Ausgabe 12+59 =
71
.
Testfälle
Current Target = Output
1:15pm 2:30am = 28
3:58am 4:02am = 5
10:55pm 1:00am = 3
1:00am 1:59pm = 71
12:00am 12:00am = 0
6:51pm 12:00am = 2
2:01pm 11:00pm = 25
2:01pm 11:01pm = 9
12:59am 12:01am = 2
11:50am 12:00pm = 11