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

スポンサーリンク

pandas練習のため、無理矢理pandasを使ってpaizaの五目並べ問題を解くシリーズです。前回は一行だけの判定でしたが、今回は5×5の二次元データで判定することが求められます。forループを使ってiloc関数で位置を指定して判定する作業を繰り返します。

OかXが連続で5つ存在すると判定した時点でresultが1になるようにしており、0だった場合は引き分け判定します。

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

lst_x = []  # 入れ物用の空リスト

for i in range(5):
    x = input()
    y = []
    for j in range(5):
        y.append(x[j])
    lst_x.append(y)

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

result = 0

for i in range(5):
    df_tmp = df.iloc[i, :]
    df_bool = (df_tmp == 'O')
    if df_bool.sum() == 5:
        print('O')
        result = 1
        break

for i in range(5):
    df_tmp = df.iloc[i, :]
    df_bool = (df_tmp == 'X')
    if df_bool.sum() == 5:
        print('X')
        result = 1
        break

if result == 0:
    print('D')

例のごとくpandasなので実行速度は遅くなっています。

コードは100点を取ったものです。私自身が初心者ということもあり、下手な説明で誤解を招くことを避けるため、説明は最小限にしてサンプルコードのみを掲載しています。ただ、コメントでご質問をいただければ、分かる範囲でお答えします。

続きはこちら

コメント

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

Please disable your adblocker or whitelist this site!

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