pandasでpaiza問題(五目並べ:五目並べ(1行))

スポンサーリンク

前回の記事に引き続き、「五目並べ(1行) Python3編」に対する解答を無理矢理pandasを使って作成します。

今回は入力値が1行だけですが条件判定があります。前回は複数行だったのでpandas.DataFrameを使いましたが、今回は1行なのでpandas.Seriesを使います。

import pandas as pd  # 慣習に従ってpandasはpdと略す

lst_x = []  # 入れ物用の空リスト
tmp = input()

for i in range(5):
    lst_x.append(tmp[i])

df = pd.Series(lst_x)
# print(df)  #これをprintすればpd.DataFrameとして出力される

dct_x = df.value_counts().to_dict()  #dfの要素を出現回数でカウントしてdictに入れる

if '.' in dct_x:
    print('D')
else:
    if dct_x.get('O') == 5:
        print('O')
    elif dct_x.get('X') == 5:
        print('X')
    else:
        print('D')

コードは100点を取ったものです。例のごとくpandasなので実行速度は遅くなっています。最後の条件判定では、入力値に’O’や’X’が含まれていない可能性があるため、KeyErrorを避けるためにgetを使っています。私自身が初心者ということもあり、下手な説明で誤解を招くことを避けるため、説明は最小限にしてサンプルコードのみを掲載しています。ただ、コメントでご質問をいただければ、分かる範囲でお答えします。

続きはこちら

コメント

当ブログのコンテンツが気に入ったら広告ブロックの解除(ホワイトリスト化)をご検討下さい。

Please disable your adblocker or whitelist this site!

タイトルとURLをコピーしました