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:00od godziny przy aktywnym wprowadzaniu godziny (patrz pierwszy schemat). Biorąc pod uwagę listę poleceń wejściowych, wyświetl wynikowy czas w HH:mmformacie.
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.