İ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:00her 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 59ayarlamak 0ve saat değerini artırmak için saat değerini artırmak 23gerekir 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:59verimleri 10:00değil 11:00.
Örnek
Giriş zamanı 13:58ve 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çinde24gibi-saat(13, 30)(houraralıklar0için23veminutearalıklar0için59) - Önceki olarak değil, aynı
12-saat ve bir Booleanam/pmanahtar (houraralıkları0için11ya da12ve1üzere11birlikteminutegelen0için59). 0:00810 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], ...]?