自動詰将棋作成装置

諸事情により、初心者に簡単な詰将棋の問題を解かせてみようと思って、色々いじったらこんなのが出来ました、という活動報告です。
作りとしては、「やねうら王」さんが作成した大量の詰将棋からランダムに問題を取ってきて、iPadの「ぴよ将棋」アプリで解くというものです。Google Driveに元ネタファイルを保存して、GPT-4にPythonコードを書かせてランダムに問題を取ってきています。
王手に対する受け方の手は「ぴよ将棋」のコンピューターが自分で考えて指してくれます。(私が相手するのは面倒くさかったので。)

(用意するもの)
・iPad(スマホでもいけるかも)
・Google Colab
・やねうら王さんが生成した詰将棋セット(SFEN形式というファイルで、1行が1局面になっています。)

(参考)
・棋譜を「ぴよ将棋で開く」リンクの作成方法

以下、Google Colabのコードです。

from google.colab import drive
drive.mount('/content/drive')
♯ Google Driveに保存したSFENファイルのURL(ID)を指定 ♯
import gdown
file_id = 'ここにIDが入ります'
output = 'sfen_file.sfen'
gdown.download('https://drive.google.com/uc?id=' + file_id, output, quiet=False)
♯ ファイルからランダムに1行を取ってくるコード。ここでは、「ぴよ将棋」に読み込ませるURLの作成まで行っています ♯
import random
def load_sfen_file(file_path):
with open(file_path, 'r') as file:
lines = file.readlines()
return lines
def get_random_sfen(file_path):
lines = load_sfen_file(file_path)
return random.choice(lines).strip()
# 使用例
file_path = 'sfen_file.sfen'
random_sfen = get_random_sfen(file_path)
import urllib.parse
# SFEN形式の棋譜
sfen = random_sfen
# その他のパラメータ
num = -1
mode = "mate"
# SFEN形式の棋譜をURLEncode
encoded_sfen = urllib.parse.quote(sfen)
# URLを構築
url = f"piyoshogi://?sfen={encoded_sfen}&num={num}&mode={mode}"
url

後は、このコードで作成されたURLをコピー&ペーストして、「ぴよ将棋」で指すだけ。こういう簡単な詰将棋(というか詰む将棋)は本などにはほとんど載っていませんが、実際のところ初心者には極めて有効な練習だと思います。

この記事が気に入ったらサポートをしてみませんか?