エクセルでイラストロジックを作ってみました。
自分で遊ぶためのもので、自動で作ったり解いたりするわけじゃないです。
正解判定もありません。
あえてマクロは使わないで作ったので、少し力業です。メモリー少ないPCだとつらいかも。
遊び方
- はじめて開いたときは、上部に黄色いバーで許可を求めるメッセージがでるので許可してください。
- MiniCGIのサイトから遊びたい問題番号を探して、問題取得シートのB1セルに入力すると問題を取得します。
- ゲームシートに問題が表示されるので、1,0を入力して問題を解いてください。
- 別の問題をやりたいときはゲームシートのA1セルの数式を、ロジック内部のセル全部にコピーして、問題取得シートのB1に問題番号を入力してください。
どうやって作ったの
条件付き書式、WEBSERVICE関数、数式に名前を付けるなどかなり上級テクニックを使っています。
特に難しかったのは、色々なサイズの問題に自動で対応すること。マクロを使うしかないかとあきらめてましたが、
関数配置をテーブルにすることで何とか実現できました。セル参照が複雑すぎたのか、再計算に時間がかかることがあります。
改善する余地は結構あるかな。
イラストロジックを遊ぶ部分
裏計算シートがみそです。ゲームシートに1,0を入力していくと、裏シートで連続するセルを数えて縦横のヒントを更新しています。
裏計算シート
ゲームシートの入力に応じて、連続するブロック数を数えます。
全てのセルに同じ数式が入っています。
@CHOOSE(VLOOKUP(ROW(),関数配置,MATCH(COLUMN(),関数表列)),"",縦方向ヒント,横方向ヒント,横方向カウント,横方向インデックス,縦方向カウント,縦方向インデックス,ゲーム!K8,サイズ)
この仕組みはあとで説明します。数式の後ろの縦方向ヒント,横方向ヒント,…が名前を付けた数式になります。
各数式の定義を参照するには、数式タブ→名前の管理を使います。
数式に名前を付ける
縦方向カウント・横方向カウント
縦方向インデックス・横方向インデックス
縦方向ヒント・横方向ヒント
連続セルの数え方
条件付き書式
問題取得部分
WEBSERVICE関数
JSONP形式の解析
ゲームシートの描画