2012年5月1日火曜日

GCJ2012 Qualification Round Problem A. 解き方

Google Code Jam 2012 Qualification Round
Problem A. Speaking in Tongues 解き方

コンテストで提出したコードは ここ からダウンロードできます(Python)。
あと このへん。移動してたら探してください。
問題紹介はこちら

以下ネタバレ

まず問題文の Sample から変換の対応表を作ります。
Googlerese の “ejp mysljylc kd kxveddknmc re jsicpdrysi” が
英文の “our language is impossible to understand” になるので
e”→“o”、“j”→“u”、“p”→“r” … という具合。

ところがこうして対応表を作るだけでは “z” と “q” の対応が決まりません。これに気付かなくて2回 incorrect しましたorz
A letter may be replaced by itself. なので自身に変換する場合もありえます。
問題文をよく読むと For example (and here is a hint!) があり、ここで英文 “q” が Googlerese “z” に対応することがわかります。そうすると1対1対応により残った “z”→“q” の対応も決まります。

あとは入力を1文字ずつ変換して出力するだけです。
Pythonには string.translate() という変換関数がありますが、、table を作る手間を考えると辞書を使った変換の方が手っ取り早い気が(^^ゞ

0 件のコメント:

コメントを投稿