Skip to content

Instantly share code, notes, and snippets.

@mtsmfm
Last active October 26, 2015 07:33
Show Gist options
  • Save mtsmfm/4b8ffb53ffac055f5843 to your computer and use it in GitHub Desktop.
Save mtsmfm/4b8ffb53ffac055f5843 to your computer and use it in GitHub Desktop.
ESM オフラインどう書く

行列のできるラーメン屋 ESM オフラインどう書く (2015/10/22)

オフラインリアルタイムどう書く という、 @Nabetani さん主催のイベントを模したものを ESM の社内向けに行ったものです。

出題者: @mtsmfm スペシャルサンクス: @mattsan

問題

以下のような 8 席のラーメン屋がある。

座席

行列を捌き切った時にどの席が埋まっているかを求めて欲しい。

ルール

  1. お客さんのグループを先頭から 1 グループずつ案内する

  2. 1 番席から順に詰めて座るように案内する

  3. お客さんは着席してから以下のように状態が遷移し、最終的には店を出ていく

状態

  1. 1 グループ案内している間に、お客さんの状態は 1 つ進む

  2. お客さんが複数人のグループの場合、全員が横に並べるようになるまで待ってもらう

  3. 席に余裕がなく案内できない間にもお客さんの状態は進む

入力

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")
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment