プログラミング競技について
更新情報 
- 2025-06-04 プログラム実行結果の提出について を更新しました。
- 2025-05-12 マインスイーパーをお試し実行できるページに盤面データパックのダウンロード機能 が追加されました。盤面数や難易度などカスタマイズが可能です。お試し運用中です。特に問題がなさそうならば競技用盤面もこのデータパックをご使用いただきたいと思います。盤面の名前(ボード名)に安全セルの配置モードが入るようになりました。
- 2025-04-22 マインスイーパーをお試し実行できるページにお試し盤面データの生成機能 が追加されました。セルの選択リストをアップロードすると セル選択リストの採点ができる機能 が増えました。また、セル選択ログのダウンロード や スコアのダウンロードができるようになりました。地雷が置かれていない 安全セルの指定 も可能になりました。
- 2025-04-01 初版を公開しました
問題文
複数の「マインスイーパー」の盤面データが与えられます。各盤面データについて地雷がありそうなセルを予測しながら、地雷以外の全部のセルを選択することを目指します。以下の「ルール」に従って、可能な限り多くのセルを選択し、高いスコアを目指して下さい。
サンプル盤面
「マインスイーパー」の遊び方イメージを以下のサイトで体感することができます。今回のコンテストの出題形式に似せて事務局で作成したもので、盤面の様子や進行方法などはオリジナルとは異なっています。スマートフォンからもアクセスできます。
==>「マインスイーパー」をお試し実行できるページ
操作方法
- 「ボード選択」 からボードを選びます。サンプル盤面をいくつかご用意しています。盤面のテキストファイルを作成すればファイルから読み込むことも可能です。
- 「盤面データ表示切替」 をトグルすると盤面データの参照ができます。
- 盤面データには「0」から「9」までの数字が含まれています。「0」から「8」までの「数字」は 隣接する8個のセルに含まれる地雷の数 を表します。地雷が周囲に存在しない場合、盤面データは空白ではなく「0」となってます。
- 盤面データ「9」が含まれるセルは 地雷が置かれた状態 を示します。周囲の地雷の数ではありません。
- 盤面のセル座標 (X,Y) は横方向 X、縦方向 Y で、左上が (0,0)、右下に向かって座標が1つずつ増えます。
- セルをひとつずつ選択していきます。地雷以外の 未選択セル がなくなれば終了です。スコアが表示されます。
- 盤面データ「0」のセルを選択した場合は、周囲に地雷は存在しないため、地雷に近くなるまで再帰的に周囲のセルが選択されます。
- 地雷を除く未選択のセル数が 「残りセル数」 に表示されます。
- 地雷がありそうな場所に 旗を立てて 選択できないようにすることができます。「旗を立てる」 を ON にしてから当該セルを選択します。旗を解除するには再度「旗を立てる」を ON にして当該セルを選択します。旗が無くなればセル選択が可能になります。
- 旗が立っているセルは選択できなくなりますが、周囲に「0」のセルがある場合は再帰的に選択されて旗が消えることがあります。
- 途中で終了したい場合、一番下にある 「ここで採点」 をクリックすればスコアが表示されて終了となります。
ルール・得点
- スコアは選択した盤面データの 数字の合計 です。ただし、次の場合はペナルティとして減算されます。
- 地雷を選択してしまった場合は 「20」 の減点です。地雷を選択しても終了にはなりません。そのまま継続することができます。終了したい場合は 「ここで採点」 により明示的に終了可能です。
- 途中で終了した場合は、地雷を除く 全ての未選択セル分 が減点されます。
- 減点された結果、マイナスになった場合の 最終スコアは「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
プログラムの出力
- 「マインスイーパー」を解く際に選択した セルの座標 (X, Y) リスト がプログラムの出力となります。以下の形式に従って選択する順番に1行ずつ座標リストを生成して下さい。途中でセル選択を中止したい場合は、中止する直前までの座標リストを含めて下さい。
- 座標 X は横方向、盤面データのXサイズ側に相当します。座標 Y は縦方向、盤面データのYサイズ側に相当します。
- 座標の原点は左上が (0, 0) です。右下に向かって座標が1つずつ増えていきます。最も右下の座標は (Xサイズ-1, Yサイズ-1) です。
- 出力方法は自由です。標準出力をファイルに落としても構いません。
- プログラム出力には 複数の盤面 の解答を含めることができます。セルの座標を出力する前に、どの盤面の解答であるかを区別するために 「Xサイズ Yサイズ 盤面の名前」 をスペースで区切った行を出力して下さい。上記、「プログラムの入力」に記載されている「盤面データ」の1行目と同じです。
6 4 board_name <-- 左から Xサイズ(横)、Yサイズ(縦)、盤面の名前をスペースで区切ります。 2 1 < X=2, Y=1 のセルを選択 2 2 < X=2, Y=2 のセルを選択 1 1 < X=1, Y=1 のセルを選択 ... <-- 空行を挟みます 4 4 board2 <-- 次の盤面。この要領で各盤面ごとにセル選択リストを記述 0 1 3 3 2 1 1 1 ...
お試し盤面データの生成 
- 「マインスイーパー」をお試し実行できるページ からお試し盤面の生成及び 盤面データ のダウンロードができるようになりました。プログラム開発にご活用いただければと思います。「ボード選択」 からボードを選ぶと画面に盤面が表示されます。画面に表示されたボード は下の方にある 「盤面データ:download board data」 からダウンロード可能です。
- サンプルとして付属している盤面だけでなく、Xサイズ(横)、Yサイズ(縦)、地雷の数 を与えて新しい盤面を生成することが可能です。「ボード選択(カスタム):new board」 から生成して下さい。画面に表示されたボードはダウンロードが可能です。
- 大規模なボードは生成できない場合があります。また、地雷の数は盤面サイズに従い自動調整されます。
- 盤面データは 「プログラムの入力」 に従ったフォーマットのテキストファイルです。1行目に Xサイズ(横)、Yサイズ(縦)、盤面の名前をスペースで区切ったヘッダが付いています。
- 盤面データにおける地雷の位置は疑似乱数を用いて自動発生しています。
- ボード名 のフォーマットは
board_{Xサイズ}x{Yサイズ}_{地雷数}_{seed}_{安全セルの配置モード}
です。 - seed は疑似乱数へ与えるパラメータの初期値です。同じ初期値からは同じ盤面データが生成されます。
- 盤面データのダウンロード・ファイルは
ボード名.txt
です。
安全セルの指定 
- 盤面のセルがひとつも開かれていない状態では、地雷の位置を推測する情報がないため、初めのセル選択において地雷を選んでしまう可能性があります。そこで今回のプログラミング競技では、地雷が置かれていない 「安全セル」 を設定します。
- お試し盤面データの生成において、盤面データを生成する際に「安全セル」を避けるように地雷を配置することが可能です。「安全セルの設定」 から安全セルの配置モードを選択して下さい。「update sample」 でサンプルとして付属している全ての盤面データが更新されます。更新された盤面データを使う際は 「ボード選択(サンプルから)」 からもう一度、ボードを選択して下さい。
- 「安全セル」の配置モードは 「ボード選択(カスタム)」 時にも有効になります。予め配置モードを選択してから 「new board」 を実行して下さい。
- 安全セルの配置モードは次の5種類があります。
- corner:盤面の四隅
- center:盤面の中央
- both:盤面の四隅と中央
- none:安全セル無し
- auto:盤面の縦・横とも奇数サイズの場合は 2.center、それ以外の場合は 1.corner と等価(デフォルトは auto です)
- 盤面の縦または横が偶数サイズの場合、中央のセルは2個あります。2.center を選択した場合、偶数サイズ方向には中央の2セル、奇数サイズ方向には中央の1セルが安全セルとなります。
- 2.center を選択した場合の安全セル(例):10x10 の盤面では中央の4セル、10x11 の盤面では中央の2セル、11x11 の盤面では中央の1セルが安全セルとなります。、
- 5.auto を選択した場合は、縦・横両方とも奇数サイズの場合に限り、中央の1セルが安全セルになります。縦または横が偶数サイズの場合は四隅が安全セルとなり、中央に安全セルは設定されません。
- 安全セルは必ず設定されるとは限りません。盤面サイズと地雷の数に依存して安全セルが設定されない場合があります。一例として盤面の全セル数から安全セルを差し引いた 有効セル数 を考慮しています。有効セル数が地雷数の2倍以上にならない場合は安全セルが設定されません。
セル選択ログのダウンロード 
- 「マインスイーパー」をお試し実行できるページ ではセルを選択した履歴が左の 「セル選択ログ」 に表示されます。このログは 「プログラムの出力」 に従った セルの座標 (X, Y) リスト フォーマットのテキストファイルです。1行目に Xサイズ(横)、Yサイズ(縦)、盤面の名前をスペースで区切ったヘッダが付いています。
- 「セル選択ログ」 のダウンロードができるようになりました。プログラム開発にご活用いただければと思います。一番下の 「セル選択ログ:download list」 からダウンロード可能です。
- セル選択ログのダウンロード・ファイルは
select_ボード名.txt
です。
セル選択リストの採点 
- 「マインスイーパー」をお試し実行できるページ ではセル選択リストをアップロードすると実際の盤面を駆動してスコアをカウントします。
- 上記「 プログラムの出力 」をテキストファイルに落としていただき、「セル選択リスト:upload list」 から入力いただきますと、スコアがカウント されます。
- 得られたスコアを参考に、プログラムをブラッシュアップいただければと思います。
- セル選択リストを読み込んだ後、(1) そのまま採点するか、(2) 採点せずにセル選択画面に移行するか、選ぶことができます。「読み込んだ後:」 のチェックボタンから (1) は「finish」(デフォルト)、(2) は「continue」を選択して下さい。
- 画面の一番下の 「スコア・サマリ」 に 採点結果のサマリ が表の形で表示されます。
- 入力されるセル選択リストには 複数の盤面 の解答を含めることができます。セル選択リストに含まれる解答は上から順番に処理され、採点結果のサマリに追記されます。サマリには各盤面のスコアとそれまでの合計スコアが表示されます。
- 「読み込んだ後:」の設定が (2) の「continue」になっている場合は、一番最初の解答のみが処理されます。採点は行われずにセル選択画面へ移行します。
- 一度に与えることができるセル選択リストの盤面数に制限はありませんが、このサイトでは 1000 個程度の盤面データ・パックの採点に 3-5 分程度かかります。
スコアのダウンロード 
- 採点結果のサマリ「スコア・サマリ」は一番下の 「スコア・サマリ: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点となりますが)が可能です。
競技用盤面データの提供について 
- プログラミング競技で使用する盤面データは特に問題がなさそうならば上記の 盤面データパック を使用いただきたいと思います。
- 盤面データパックは (1)盤面データの個数、(2)安全セルの設定、(3)難易度 が選べます。自由にカスタマイズしていただき、最も高得点が狙えそうなデータパックを選択して下さい。
- paiza 環境の仕様から 実行時間の最大値は2秒 で、その時間内で扱えそうなボリューム(盤面数)に合わせて (1)盤面データの個数 を調整していただければと思います。
- この制限時間内に解くことが可能なサイズや盤面数についてのデータをお持ちの方は情報をいただけますと助かります。 盤面データパックの構成見直しに活かしたいと思いますので、良いデータが取れましたらお気軽に ADC 事務局あてご連絡をいただければと思います。
プログラム実行結果の提出について 
- プログラム競技の結果を記載する Excel ファイルをダウンロードいただき、実行結果を記載いただきまして、das”at”sig-sldm.org より、ADC 事務局あてご連絡をいただければと思います。(”at”は@に変換してください)。
結果を記載する Excel ファイル ==>
minesweeper_prog_result.xlsx
- メール本文には「参加者入力フォーム」に記載いただいたお名前もしくはチーム名を明記してください。
- 受領しましたら、ADC 事務局メンバーより返信させていただきます。どうぞよろしくお願いいたします。
- Excel での提出が難しい場合は、メール本文にテキストで記述いただいても大丈夫です。
- 締め切りは 2025年8月20日(水) です。
実行結果の作成方法
- 上記の セル選択リストの採点 を使用してスコアをカウントいただきます。
- マインスイーパーを解いたプログラムの出力結果(盤面ごとのセル選択座標リスト)をお試しマインスイーパーの「セル選択リスト」へアップしてください。
- 「スコア・サマリ」が画面下方に表示されます。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 について
問い合わせ先
サイトがうまく動作しない、データが足りない、などお困りの場合やその他ご不明点等がございましたらお気軽に das”at”sig-sldm.org より、ADC 事務局あてご連絡をいただければと思います。(”at”は@に変換してください)。事務局メンバーより返信させていただきます。どうぞよろしくお願いいたします。