行列のできるラーメン屋 ESM オフラインどう書く (2015/10/22)
オフラインリアルタイムどう書く という、 @Nabetani さん主催のイベントを模したものを ESM の社内向けに行ったものです。
出題者: @mtsmfm スペシャルサンクス: @mattsan
問題
以下のような 8 席のラーメン屋がある。
行列を捌き切った時にどの席が埋まっているかを求めて欲しい。
ルール
-
お客さんのグループを先頭から 1 グループずつ案内する
-
1 番席から順に詰めて座るように案内する
-
お客さんは着席してから以下のように状態が遷移し、最終的には店を出ていく
-
1 グループ案内している間に、お客さんの状態は 1 つ進む
-
お客さんが複数人のグループの場合、全員が横に並べるようになるまで待ってもらう
-
席に余裕がなく案内できない間にもお客さんの状態は進む
入力
1 から 8 までの数字が並んだ文字列。1 文字がお客さん 1 グループの人数を示している。
例) 3316
出力
1 番の席から時計周りで席の状況を 8 文字で返す。
例) 11111110
誰かが座っていれば 1
、空いていれば 0
。
補足
- 不正な入力に対処する必要はない
- 実装が完了したら gist、 qiita などインターネットに見えるところに貼ってもらって、この gist に URL をコメントしてください
例
入力 3316
に対して 11111110
を返せば正解。
流れは以下のようになる。
サンプルデータ
# | 入力 | 答え |
---|---|---|
1 | 3316 | 11111110 |
2 | 3342153 | 11111111 |
3 | 8 | 11111111 |
4 | 232624 | 11110110 |
5 | 1 | 10000000 |
6 | 224673432 | 11111000 |
7 | 123464334 | 11111110 |
8 | 44372332 | 11111111 |
9 | 2344 | 11111111 |
10 | 6448476233 | 11111100 |
11 | 4345174644 | 11111111 |
12 | 77743 | 11111110 |
13 | 2136524281 | 10000000 |
14 | 344373 | 11100000 |
15 | 434226 | 11111111 |
16 | 7433223 | 11111110 |
17 | 2246534 | 11110111 |
18 | 634 | 11111110 |
19 | 2222 | 11111100 |
20 | 2442343238 | 11111111 |
21 | 7243344 | 11111111 |
22 | 26147234 | 10111111 |
23 | 34424 | 10011111 |
24 | 6334 | 11011111 |
25 | 3828342 | 11011110 |
26 | 4431 | 11110000 |
27 | 2843212125 | 11111111 |
28 | 333336482 | 11000000 |
29 | 374 | 11110000 |
30 | 4382333 | 11100111 |
テストデータ
test("3316", "11111110")
test("3342153", "11111111")
test("8", "11111111")
test("232624", "11110110")
test("1", "10000000")
test("224673432", "11111000")
test("123464334", "11111110")
test("44372332", "11111111")
test("2344", "11111111")
test("6448476233", "11111100")
test("4345174644", "11111111")
test("77743", "11111110")
test("2136524281", "10000000")
test("344373", "11100000")
test("434226", "11111111")
test("7433223", "11111110")
test("2246534", "11110111")
test("634", "11111110")
test("2222", "11111100")
test("2442343238", "11111111")
test("7243344", "11111111")
test("26147234", "10111111")
test("34424", "10011111")
test("6334", "11011111")
test("3828342", "11011110")
test("4431", "11110000")
test("2843212125", "11111111")
test("333336482", "11000000")
test("374", "11110000")
test("4382333", "11100111")