Wyobraź sobie następujący zegar 24-godzinny, którym można sterować za pomocą klawiszy strzałek:
╔══╗ ┌──┐
║00║:│00│
╚══╝ └──┘
HH mm
Dwukrotne naciśnięcie strzałki w górę ( ↑↑
) spowoduje zwiększenie aktualnie ustawionej godziny:
╔══╗ ┌──┐
║02║:│00│
╚══╝ └──┘
HH mm
Naciśnięcie strzałki w prawo ( →
) spowoduje skupienie drugiego wejścia.
┌──┐ ╔══╗
│02│:║00║
└──┘ ╚══╝
HH mm
Naciśnięcie trzy razy strzałki w dół ( ↓↓↓
) zmniejszy teraz to wejście.
┌──┐ ╔══╗
│02│:║57║
└──┘ ╚══╝
HH mm
Krótko mówiąc:
- Strzałka w górę (
↑
) zwiększy aktualnie aktywne wejście. - Strzałka w dół (
↓
) zmniejsza aktywne wejście. - Prawa strzałka (
→
) przesunie fokus na prawe wejście. - Lewa strzałka (
←
) przesunie fokus na lewe wejście. - Ruch w górę i w dół zapętla się zgodnie z oczekiwaniami przez wprowadzony czas.
- Lewy i prawy ruch nie zapętlają się.
Wyzwanie
Zegar zaczyna 00:00
od godziny przy aktywnym wprowadzaniu godziny (patrz pierwszy schemat). Biorąc pod uwagę listę poleceń wejściowych, wyświetl wynikowy czas w HH:mm
formacie.
Dane wejściowe mogą być ciągiem znaków lub listą (lub odpowiednikiem języka), gdzie różne kierunki wprowadzania danych mogą być jedną z poniższych opcji:
↑↓←→
udlr
^v<>
- faktyczny klawisz strzałki naciska, jeśli twój program ma GUI
Obowiązują standardowe luki.
Przypadki testowe
↑↑→↓↓↓ = 02:57
↓→↑←↑→↓ = 00:00
↓→→↓ = 23:59
←←←←→↑ = 00:01
↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓→↓ = 23:59
0123
) ułatwiłoby wyzwanie w niektórych językach, a nie przyniosłoby korzyści innym.