ある地域のカラム地図を作る際、悩ましいのは縦横をいくつにするか。
東京23区であれば、かけると23以上になる比較的近い整数2つを選ぶことになるが、網羅性を検証しようとすると地味に面倒な課題。

そんなときには、プログラミング!
面倒事対処にもってこい!


逆かけ算 - カラム地図用

まずアルゴリズムを考える
1. 平方根であたりをつける
2. その前後をかけ算して、収まる組み合わせリストを作る
3. 余りが少ない順にソートする

実現しやすそうなプログラミング言語でつくる(今回はJavaScriptをセレクト)

const n = this.value // 1. 平方根であたりをつける const m = Math.floor(Math.sqrt(n)) // 2. その前後をかけ算して、収まる組み合わせリストを作る let s = [] const width = m for (let i = -width; i <= width; i++) { const a = m + i if (a < 1) continue for (let j = i ; j <= width; j++) { const b = m + j if (b < 1) continue const c = a * b const d = n - c if (d <= 0 && -d < n) s.push([ d + (a - m) / 100, a + " x " + b + " = " + c + " = " + n + (d <= 0 ? " - " : " + ") + Math.abs(d) ]) } } // 3. 余りが少ない順にソートする s.sort(function(a, b) { return b[0] - a[0] })

十分な速度と精度がでれば完了!
(速度や精度が不十分なら、アルゴリズムを改良する。検証もプログラミングでやると楽!)

北陸三県カラム地図へのご意見ありがとうございます!
やはり地元の人の力、大事ですね!

GW明けの5/10、高専生企画で楽しいIoTプログラミング伝授に兵庫県、明石高専へ行きます!

全国の高専生のご要望にできるだけ応えたいと思いますが、1年で全部はとても回りきれないので、アプリ開発の経験を積んで、IchigoJam伝道師にもなれちゃう「高専インターン」がオススメ!
全国高専生向けjig.jpインターンプログラム2019 ~募集開始のお知らせ~

links
- 地図の新表現「カラム地図」で辿る世界、日本、北陸三県
- 日本は1%マイノリティー時代へ、高専生インターン募集開始!

Tweet
クリエイティブ・コモンズ・ライセンス
この作品は「Creative Commons — CC BY 4.0」の下に提供されています。
CC BY / @taisukef / アイコン画像 / プロフィール画像 / RSS