2015年9月30日水曜日

回文処理没案!その2

paizaオンラインハッカソン6+
「え、妻が松江?」松江Ruby会議07協賛 回文作成プログラミングコンテスト|POH6+
https://paiza.jp/poh/joshibato/matsue-ruby

前回に引き続き例の回文です

Python 200byte


結果:https://paiza.jp/poh/joshibato/matsue-ruby/result/76d98589
Test case 1 通過 実行時間: 0.02 秒
Test case 2 通過 実行時間: 0.02 秒
Test case 3 通過 実行時間: 0.02 秒
Test case 4 通過 実行時間: 0.03 秒
Test case 5 通過 実行時間: 0.03 秒

元々こっちの案で作ってたやつですね。
といっても基本的な処理はおなじで消込型です。

■for n in r:l+=[w()];
先ずは入力される文字の読み込み、リスト(いわゆる配列)を生成

■l.sort()
リストをソート

■for i in r:
Pythonのforは処理構造がforeach文のそれです。
「r」には最初にrangeで生成した整数の連番が入ったリストが入っており順次「i」カウンタへ格納されていきます。

■k=l[i];t=k[::-1];l[i]=""
「k」に文字列を格納。「t」にはリバース文字列を格納。最後に配列を空文字列に。

■if k != "":
格納された文字が空でない場合のみ処理

■if t in l:m=m+k;l[l.index(t)]=""
「l」のリストからリバース文字列「t」があるか調べある場合、左文字列として追加。
同時に対になるリストを空文字に置き換えます。
indexはその要素が最初に出てくる番号を返します。
このリストで複数回出現しても個々に処理されます。

■elif k==t:c=k
単品でありなおかつ文字列とリバース文字列が一致数る場合中央文字が確定します。
一種類しかない事前提なので若干邪道かもしれません。

■print(m+c+m[::-1])
最後に出力しておしまいです。


「	」

0 件のコメント:

コメントを投稿