İki düğmeli salak bir eski alarm saatim var: hourve minute. hourDüğme kümesi alarm saati artırır ve minutebir dizi alarm dakikalık süresi artar. Ancak, bazı akıllı tasarımcılar aynı anda iki düğmeye de basmanın bir anlamı olması gerektiğinin farkına vardılar hourve minuteaynı anda ve aynı anda alarmın 12:00 am
/ olarak ayarlanmasına neden olacağına karar verdiler 0:00
. Görevin bu davranışı simüle etmektir.
Görev
Bir başlangıç zamanı ve bir dizi düğme durumu göz önüne alındığında, bitiş zamanını hesaplayın.
Başlangıç zamanından başlayarak, her bir oluşum için, saat artırmak (1,0)
, her bir oluşum için, dakika artırmak (0,1)
ve zamanı ayarlanmış 0:00
her bir oluşum için (1,1)
. Devletler (0,0)
göz ardı edilmemelidir, çünkü bu iki düğmeye de basılmaz.
Dakikalara ve saatlere eklerken, dakika / saat maksimumun üstüne çıkarsa, onu ayarlayın 0
, yani dakika değerini artırmak, dakika değerini 59
ayarlamak 0
ve saat değerini artırmak için saat değerini artırmak 23
gerekir 0
. Sınırlarını yukarıda dakika / saat değerleri artırım yapılması dakikası artan örneğin başka bir değer etkilemeyen 10:59
verimleri 10:00
değil 11:00
.
Örnek
Giriş zamanı 13:58
ve adımları göz önüne alındığında [(0,1),(0,1),(0,1),(0,0),(1,1),(1,0)]
,
(0,1)
. Bu minute, basılmaya karşılık gelir . Şimdi tam zamanı13:59
.(0,1)
. Bu minute, basılmaya karşılık gelir . Şimdi tam zamanı13:00
.(0,1)
. Bu minute, basılmaya karşılık gelir . Şimdi tam zamanı13:01
.(0,0)
. Bu, hiçbir düğmeye basılmamasına karşılık gelir. Etkilenmeyen zaman şimdi13:01
(1,1)
. Bu, basılan her iki düğmeye karşılık gelir. Şimdi tam zamanı0:00
.(1,0)
Bu hour, basılmaya karşılık gelir . Şimdi tam zamanı1:00
.
Sona çıktığımızdan beri 1:00
çıktı.
I / O
Giriş, bir süre ve bir dizi düğme durumundan oluşacaktır. Çıktı tek bir zamandır.
Giriş zamanı ve çıkış zamanı olabilir.
- bir 2-lü
(hour, minute)
veya(minute, hour)
içinde24
gibi-saat(13, 30)
(hour
aralıklar0
için23
veminute
aralıklar0
için59
) - Önceki olarak değil, aynı
12
-saat ve bir Booleanam
/pm
anahtar (hour
aralıkları0
için11
ya da12
ve1
üzere11
birlikteminute
gelen0
için59
). 0:00
810 gibi bir çok dakika (0 - 1439, dahil)- aynı bilgiyi kodlayan başka bir format
Düğme durumlarının sırası, örneğin Boolean 2-tuples listesinin bir temsilidir, örneğin:
- tuples listesi:
[(0,1),(1,0),(0,0),(1,1)]
- boşlukla ayrılmış bir dize:
"01 10 00 11"
- dizi:
"01100011"
- Kuaterner'de:
[1,2,0,3]
- bir tam sayıya dönüştürülmüş:
99
- aynı bilgiyi kodlayan başka bir format
Test Kılıfları
time,steps -> output
06:49,[(0, 1)] -> 06:50
12:23,[(1, 0)] -> 13:23
02:23,[(0, 1), (1, 0)] -> 03:24
21:40,[(0, 1), (0, 1), (0, 1), (0, 1)] -> 21:44
13:10,[(0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (1, 1), (0, 1), (0, 1)] -> 00:02
21:33,[(1, 0), (0, 1), (1, 0), (0, 1)] -> 23:35
14:21,[(0, 1), (0, 1), (0, 1)] -> 14:24
02:39,[(0, 0), (0, 1)] -> 02:40
16:07,[(0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1)] -> 19:16
17:55,[(0, 1), (1, 0), (0, 1)] -> 18:57
15:55,[(1, 0), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (1, 0), (1, 0), (0, 1), (1, 0)] -> 23:00
22:11,[(0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1)] -> 00:19
03:58,[(1, 0), (0, 0), (0, 0), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1)] -> 07:03
13:02,[(0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0)] -> 16:06
04:37,[(1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (1, 0)] -> 08:47
00:01,[(0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1)] -> 03:08
02:58,[(1, 0), (1, 0), (0, 1)] -> 04:59
01:43,[(0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1)] -> 04:52
07:54,[(1, 0), (0, 1), (1, 0), (1, 0), (1, 1)] -> 00:00
09:33,[(0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1)] -> 10:38
09:01,[(0, 1), (0, 1)] -> 09:03
19:04,[(0, 1), (1, 0), (0, 1), (1, 0)] -> 21:06
11:17,[(0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (1, 1), (0, 1), (0, 1)] -> 00:02
19:32,[(0, 1), (1, 0), (0, 1), (1, 0), (1, 0), (1, 0)] -> 23:34
17:31,[(0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 0), (1, 1), (0, 1)] -> 00:01
06:46,[(0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (1, 0), (1, 0), (0, 1), (1, 0), (0, 1), (0, 1), (0, 1), (0, 1), (0, 1)] -> 18:16
[[initialHour, initialMinute], [hourPressed1, minuitePressed1], [hourPressed2, minuitePressed2], ...]
?