プログラミング競技について
更新情報
- 2026-04-28 初版を公開しました
問題文
複数の「マインスイーパー」の盤面データが与えられます。各盤面データについて地雷がありそうなセルを予測しながら、地雷以外の全部のセルを選択することを目指します。以下の「ルール」に従って、可能な限り多くのセルを選択し、高いスコアを目指して下さい。
サンプル盤面
「マインスイーパー」の遊び方イメージを以下のサイトで体感することができます。今回のコンテストの出題形式に似せて事務局で作成したもので、盤面の様子や進行方法などはオリジナルとは異なっています。スマートフォンからもアクセスできます。
==>「マインスイーパー」をお試し実行できるページ
操作方法
- 「ボード選択」 からボードを選びます。サンプル盤面をいくつかご用意しています。盤面のテキストファイルを作成すればファイルから読み込むことも可能です。
- 「盤面データ表示切替」 をトグルすると盤面データの参照ができます。
- 盤面データには「0」から「9」までの数字が含まれています。「0」から「8」までの「数字」は 隣接する8個のセルに含まれる地雷の数 を表します。地雷が周囲に存在しない場合、盤面データは空白ではなく「0」となってます。
- 盤面データ「9」が含まれるセルは 地雷が置かれた状態 を示します。周囲の地雷の数ではありません。
- 盤面のセル座標 (X,Y) は横方向 X、縦方向 Y で、左上が (0,0)、右下に向かって座標が1つずつ増えます。
- セルをひとつずつ選択していきます。地雷以外の 未選択セル がなくなれば終了です。スコアが表示されます。
- 盤面データ「0」のセルを選択した場合は、周囲に地雷は存在しないため、地雷に近くなるまで再帰的に周囲のセルが選択されます。
- 地雷を除く未選択のセル数が 「残りセル数」 に表示されます。
- 地雷がありそうな場所に 旗を立てて 選択できないようにすることができます。「旗を立てる」 を ON にしてから当該セルを選択します。旗を解除するには再度「旗を立てる」を ON にして当該セルを選択します。旗が無くなればセル選択が可能になります。
- 旗が立っているセルは選択できなくなりますが、周囲に「0」のセルがある場合は再帰的に選択されて旗が消えることがあります。
- 途中で終了したい場合、一番下にある 「ここで採点」 をクリックすればスコアが表示されて終了となります。
ルールと得点 
- 1盤面あたりのスコアは、-1点~1点の範囲となります。
- 安全セルを1つ開けた場合、(1 / 盤面の全セル数 - 地雷セル数) を加点します。
- 地雷セルを1つを開けた場合、 (1 / 盤面の全地雷セル数) を減点します。
- 1盤面あたりのスコアは、以下の式で表されます。
$\text{score} = \frac{\text{開けた安全セル数}}{\text{盤面の全セル数} - \text{盤面の全地雷セル数}} - \frac{\text{開けた地雷セル数}}{\text{盤面の全地雷セル数}}$ - 地雷セルを開けずに、全ての安全セルを開けた場合は1点となります。
- 地雷セルのみを全て開けた場合は-1点となります。
-
盤面上の全セル(安全セル+地雷セル)を開けた場合は0点となります。
-
開発していただくプログラムは、入力として盤面データを読み込み、解答した盤面数、実行時間、および解答した盤面の合計スコアを出力するものとします。
- 入力として与えられる盤面データを解析すれば地雷セルの位置を特定できますが、「マインスイーパー」を解くプログラムにおいては、地雷セルの位置は分からないものとして実装してください。
- 選択済みのセルから得られる情報を元に、次のセルを選択することは問題ありません。
- 選択した地雷セルの位置情報を利用することは問題ありません。
- プログラムは paiza.IO 環境※ で実行いただきます。paiza 環境の仕様に従い、実行時間の最大値は2秒 です。
-
複数の盤面が与えられます。2秒以内により多くの問題を解いていただき、他の参加者よりも 合計のスコアが高くなる ことを目指して下さい。
※ paiza.IOは ブラウザだけで プログラミングが始められる オンラインのプログラム実行環境 です。無料で使用できます。ユーザー登録も不要です。 下記「paiza.IO の使い方」もご覧いただければと思います。
プログラムの入力
- 盤面データ がプログラムの入力となります。以下の形式に従ったテキストファイルです。
- ファイルの読み込み方法は自由です。標準入力に与えても構いません。
- ひとつのファイルには 複数の盤面データ が入っています。各盤面には 名前 が付いていますので、この名前で盤面を識別するようにプログラム実装をいただければと思います。
- 一度の読み込みで複数の盤面データを読み込めますので、「マインスイーパー」を解く際は 盤面を選んで 実行いただければと思います。ひとつの盤面の実行が終わりましたら、連続して他の盤面を解いて下さい。盤面を実行する順番は自由で、全ての盤面を解く必要はありません。paize 環境の実行時間の最大値は 2秒 ですので、その時間内で可能な限り 解いていただければと思います。
- 競技で実際に使用する盤面データについては 競技用盤面データの提供について をご参照下さい
6 4 board_name <-- 左から Xサイズ(横)、Yサイズ(縦)、盤面の名前がスペースで区切られています
011100 <-- X個の盤面データ、これは1行目
019100 <-- X個の盤面データ、これは2行目
011211 <-- X個の盤面データ、これは3行目
000191 <-- X個の盤面データ、これは4行目、Y 行目でこの盤面データは終了
<-- 空行を挟みます
4 4 board2 <-- 次の盤面データ、この要領で複数の盤面データを連続して記述
0111
1291
1921
1110
プログラムの出力
- 解答した盤面数、実行時間、および解答した盤面の合計スコアがプログラムの出力となります。
お試し盤面データの生成
- 「マインスイーパー」をお試し実行できるページ からお試し盤面の生成及び 盤面データ のダウンロードができるようになりました。プログラム開発にご活用いただければと思います。「ボード選択」 からボードを選ぶと画面に盤面が表示されます。画面に表示されたボード は下の方にある 「盤面データ:download board data」 からダウンロード可能です。
- サンプルとして付属している盤面だけでなく、Xサイズ(横)、Yサイズ(縦)、地雷の数 を与えて新しい盤面を生成することが可能です。「ボード選択(カスタム):new board」 から生成して下さい。画面に表示されたボードはダウンロードが可能です。
- 大規模なボードは生成できない場合があります。また、地雷の数は盤面サイズに従い自動調整されます。
- 盤面データは 「プログラムの入力」 に従ったフォーマットのテキストファイルです。1行目に Xサイズ(横)、Yサイズ(縦)、盤面の名前をスペースで区切ったヘッダが付いています。
- 盤面データにおける地雷の位置は疑似乱数を用いて自動発生しています。
- ボード名 のフォーマットは
board_{Xサイズ}x{Yサイズ}_{地雷数}_{seed}_{安全セルの配置モード}です。 - seed は疑似乱数へ与えるパラメータの初期値です。同じ初期値からは同じ盤面データが生成されます。
- 盤面データのダウンロード・ファイルは
ボード名.txtです。
セル選択ログのダウンロード
- 「マインスイーパー」をお試し実行できるページ ではセルを選択した履歴が左の 「セル選択ログ」 に表示されます。このログは 「プログラムの出力」 に従った セルの座標 (X, Y) リスト フォーマットのテキストファイルです。1行目に Xサイズ(横)、Yサイズ(縦)、盤面の名前をスペースで区切ったヘッダが付いています。
- 「セル選択ログ」 のダウンロードができるようになりました。プログラム開発にご活用いただければと思います。一番下の 「セル選択ログ:download list」 からダウンロード可能です。
- セル選択ログのダウンロード・ファイルは
select_ボード名.txtです。
セル選択リストの採点
- 「マインスイーパー」をお試し実行できるページ ではセル選択リストをアップロードすると実際の盤面を駆動してスコアをカウントします。
- 上記「 プログラムの出力 」をテキストファイルに落としていただき、「セル選択リスト:upload list」 から入力いただきますと、スコアがカウント されます。
- 得られたスコアを参考に、プログラムをブラッシュアップいただければと思います。
- セル選択リストを読み込んだ後、(1) そのまま採点するか、(2) 採点せずにセル選択画面に移行するか、選ぶことができます。「読み込んだ後:」 のチェックボタンから (1) は「finish」(デフォルト)、(2) は「continue」を選択して下さい。
- 画面の一番下の 「スコア・サマリ」 に 採点結果のサマリ が表の形で表示されます。
- 入力されるセル選択リストには 複数の盤面 の解答を含めることができます。セル選択リストに含まれる解答は上から順番に処理され、採点結果のサマリに追記されます。サマリには各盤面のスコアとそれまでの合計スコアが表示されます。
- 「読み込んだ後:」の設定が (2) の「continue」になっている場合は、一番最初の解答のみが処理されます。採点は行われずにセル選択画面へ移行します。
- 一度に与えることができるセル選択リストの盤面数に制限はありませんが、このサイトでは 1000 個程度の盤面データ・パックの採点に 3-5 分程度かかります。
- 以下はマインスイーパーを解いたプログラムの出力結果(盤面ごとのセル選択座標リスト)のサンプルです。10個の盤面に関するセル選択リストが入っています。試しに、この盤面リストを セル選択リスト : upload list からアップロードいただきますと、お試し採点が可能です。
複数盤面のセル選択リスト・サンプル ‘select_board_pack_10_auto_low_sample.txt’
スコアのダウンロード
- 採点結果のサマリ「スコア・サマリ」は一番下の 「スコア・サマリ:download score summary」 からダウンロードが可能です。
- スコア・サマリのダウンロード・ファイルは csv 形式で
score_summary.csvです。
お試し盤面データパックのダウンロード
- 複数の盤面データを含むテキストファイルのダウンロードができるようになりました。(1)盤面データの個数、(2)安全セルの設定、(3)難易度、のカスタマイズが可能です。
- 「盤面データ・パックの download board data pack」 からダウンロード可能です。
- (1) 盤面データの個数: 10個単位で増減が可能です。
- (2) 地雷が置かれていない安全セルの配置モード: 安全セルの指定 に従います。
- (3) 難易度: 全セルにおける爆弾数の割合から、次の6種類を設けました。
- low: 5% - 10%
- middle: 8% - 15%
- high: 10% - 20%
- dangerous: 13% - 25%
- serious: 15% - 30%
- ultra: 18% - 35%
- 盤面サイズは縦、横、独立に 4 から 20 までのランダム値となります。
- 爆弾数の下限は 3 個 となっています。low モードの場合、4x4=16 セルの 5% は 1 個未満ですが、下限制約から 3 個になります。
- お試し盤面データパックのダウンロード・ファイルは
board_pack_{盤面数}_{安全セルの配置モード}_{難易度}.txtです。
お試し盤面データパックに含まれる盤面リストのダウンロード
- お試し盤面データパックの盤面一覧が書かれたテキストファイルのダウンロードができるようになりました。
- 「盤面データ・パックの download board list」 からダウンロード可能です。
- 盤面リストのダウンロード・ファイルは
board_list_{盤面数}_{安全セルの配置モード}_{難易度}.txtです。 - 盤面リストの各行は左から Xサイズ(横)、Yサイズ(縦)、盤面の名前がスペースで区切られたフォーマットです。
8 14 board_8x14_10_1_auto 11 19 board_11x19_12_13_auto 18 14 board_18x14_26_26_auto 19 6 board_19x6_8_58_auto 18 5 board_18x5_7_68_auto ... - このフォーマットは プログラムの入力 や プログラムの出力 に登場するボードデータのヘッダ形式になっています。
- この盤面リストはセルを1つも選択していない状態のセル選択リスト(セル選択ログ) に相当します。
- 試しに、この盤面リストを セル選択リスト : upload list からアップロードいただきますと、セル未選択状態でのお試し採点(全て0点となりますが)が可能です。
競技用盤面データの提供について
- プログラミング競技で使用する競技用盤面データは6月下旬に公開予定です。尚、最初に選択したセルが安全セルである保証はありません。
- paiza 環境の仕様から 実行時間の最大値は2秒 です。
プログラム実行結果の提出について
- 実行結果の提出方法は6月下旬に公開予定です。
- 締め切りは 2026年8月17日(月) です。
<!–
実行結果の作成方法
- 上記の セル選択リストの採点 を使用してスコアをカウントいただきます。
- マインスイーパーを解いたプログラムの出力結果(盤面ごとのセル選択座標リスト)をお試しマインスイーパーの「セル選択リスト」へアップしてください。
- 「スコア・サマリ」が画面下方に表示されます。Total 列の最も下に表示されている値が合計スコアです。
- 最も良い結果を生成したプログラムに関して以下のデータを取得しておいていただければと思います。
- 使用したお試し盤面データパックのファイル名 (例:board_pack_10_auto_low.txt)
- 解けた全問題の 合計スコア (画面下方に表示される「スコア・サマリ」右下の合計点(Total))
- paize サイトで実行した際の 実行時間(paize 実行画面・右下に表示された値)
- 「download score summary」から「スコア・サマリ」をダウンロードいただいて、別シートとして追加いただければと思います。
- ファイルサイズが 3MByte を超える場合は 4. の添付は不要です。別途、ご連絡をさせていただきます。
–>
paize.IO の使い方
-
paize.IO の詳細はサイトが提供する 利用ガイド に記載がございます。以下は簡単な仕様の抜粋です。
項目 paizaの仕様 言語 33言語 実行時間制限 2秒 メモリ制限 512MB ソースコードサイズ制限 ?(記載なし) - ソースコードサイズについて、事務局では数MByte のコード(print 文を大量に記述したもの)について実行ができることは確認しています。
- 以下にサンプル画面とウィンドウ操作について簡単に説明します。
言語を選ぶ
プログラムの実行
プログラムの実行時間
- 鍵マークはコードの公開・非公開を切り替えることができます。公開コードはすべての人の一覧に表示されますが、非公開コードはURLを知っている人だけがアクセスできます。例えば、公開はしたくないが何人かに知らせたい場合、非公開にしてURLのみ連絡することができます。非公開にしたからと言ってコードが見えなくなるわけではありません。URLを知っている人ならばだれでもアクセスが可能です。
セッション ID について