オフラインリアルタイムどう書く という、 @Nabetani さん主催のイベントを模したものを ESM の社内向けに行ったものです。
# | タイトル |
---|---|
第1回 | 行列のできるラーメン屋 |
星型と五角形をかたどった次のようなグラフがあります。 頂点と交点にはA〜Jの名前と赤か白かの色が付けられています。また頂点あるいは交点を結ぶ辺には向きが付けられています。
指定された頂点あるいは交点から出発し、決められた順序で辺をたどって点を移動したとき、最後に到達する頂点あるいは交点の名前を出力してください。
- 出発する点は
A
〜J
の名前で指定されます。 - たどる辺は次の点の色を表す文字で指定されます。
R
が指定された場合、現在の点からたどれる赤い点へ移動します。同様にW
が指定された場合は白い点へ移動します。 - 辺は辺につけられた向きにしかたどることができません。例えば
C
からA
へたどることはできますが、A
からC
へたどることはできません。
1文字目が出発点を表す文字、2文字目以降がたどる点の色を表す文字からなる文字列です。
例) AWWRRWR
出発点を含めたたどった点の名前をたどった順に並べた文字列で出力します。
例) AIGDFAH
入力は、1文字目は A
〜 J
、2文字目以降は R
あるいは W
で、それ以外の文字が現れることはないとします。
書いたコードは社内から参照できる場所にアップしていただき、リンクを連絡していただけると助かります。 アップ先は GitHub, Qiita, esa.io などの公のサービスでも構いません。
入力 | 期待する出力 |
---|---|
AW |
AI |
GR |
GD |
GW |
GE |
IR |
IF |
HR |
HJ |
BWW |
BGE |
ARW |
AHC |
GRR |
GDF |
BWR |
BGD |
JWWW |
JECA |
DRRR |
DFHJ |
CWWR |
CAIF |
HWWW |
HCAI |
GWRWR |
GEBGD |
FRRRW |
FHJBG |
JRRWW |
JBDIG |
JWWRRW |
JECJBG |
GRRRWW |
GDFHCA |
BRWRWR |
BDIFAH |
IRWRRWR |
IFAHJEB |
IWWWRRW |
IGECJBG |
GWWRWWR |
GECJECJ |
HRRWRWRW |
HJBGDIFA |
FRWWWRRW |
FHCAIFHC |
HRWWWRWRW |
HJECAHCJE |
CWWWRRWWW |
CAIGDFAIG |
BRRRWRRRRW |
BDFHCJBDFA |
FRWRRWRRWW |
FHCJBGDFAI |
GWRRRRWRWRW |
GEBDFHCJEBG |
DRWWWWWWRRW |
DFAIGECAHJE |
ARRRRWRRRRWW |
AHJBDIFHJBGE |
AWWWWWWRRWRR |
AIGECAIFHCJB |
JWWWRRWRWRWWR |
JECAHJEBGDIGD |
CRWRWRRWWWRWW |
CJEBGDFAIGDIG |
DWRWRWRWRWWRWW |
DIFAHCJEBGEBGE |
GRWWWRRRRWRWRR |
GDIGEBDFHCJEBD |
ARWWWRWWRWWWWWW |
AHCAIFAIFAIGECA |
DWRWRRWRWWRWWRW |
DIFAHJEBGEBGEBG |
JRWRRRRRWRRRRRWR |
JBGDFHJBGDFHJBGD |
IRWWRRWWWWWRRWWR |
IFAIFHCAIGEBDIGD |
- できるだけオブジェクティブに書いてみてください。扱う値をできるだけオブジェクトで表現してみてください。
- できるだけデータやパラメータとロジックを分離して書いてみてください。どれぐらい汎用的にできるか試みてください。
- 変数の値を変更できる言語の場合、再代入を用いないで書いてみてください。
- ループを使って書いた場合、再帰を使って書いてみてください。再帰を使って書いた場合、畳み込みを使って書いてみてください。
- 視覚的に表現してみてください。