2018-01-07

Excelでデータ加工したら、コマンド一発でJSONとして生成するやーつ

次ネタデータ管理をJSONに任せるための、副生産物のアルファ版をupした。
Jsonic 0.0.9

調べた限りでは、データを書くだけ書いて階層構造でJSONをバリッと一発変換するのになかなかどれも帯襷問題を抱えていたので、正月返上で作ってみた。
おかげでまたもや昼夜逆転。

Excelでデータの分布見ながらテストデータセット作ったり、発生頻度のチューニングと解析、グラフから逆変換もできるはず。
いやこの場合、偉いのはExcelだけれど、統計やvisualizeなんかは得意なやつに任せればいいと思う。世の中いくらでもそれ系のツールはあるし。

手始めにExcelを選んだ理由は、シートに分けて設計思想のmap'n reduceできるところ。



あとユニットテストと、jsonschema snipetsから成立したでかいschemaを生成すればit.1.1完了
nullの扱いとプロシージャ拡張はなんとかせねば。。。。

これ単体をバックエンドにおいて、MASに出してみようかしら。

2017-12-10

マーティン・ガードナー数学ゲーム全集1 読書メモ


amazonで故マーティンガードナー先生の著作物を死後全集化する活動として、ガードナーの数学パズル・ゲーム なんてモノが世の中にあると言うことを知り、おぉ!と。紙メディアしかなかったが迷わずポチった。

僕とガードナー先生著作物との出会いとか、Scientific Americanとか、これはaha!掲載だとか意識高いことは一切抜きにして、以後Onenoteに書き留めた純粋に数学的な私的現象確認メモを雑にbloggerへ貼り付ける試み
同じ内容を2カ所以上で記述することになるため、なんなら自動化ももくろんでいる。

§はタイトルに掲示した出版物の章番号を記述している。尚、順不同でピックアップ。
マウンティング、意識高い振り、継続性を阻害する要素は徹底的に排除したと解釈いただけるとありがたい。

ひょっとするとどれかは今後のアプリネタになる可能性はあるけれど、大人対応していただけると非常に助かります。


§ 2 方陣を使ったマジック


e.g., 掲載例

19
8
11
25
7
12
1
4
18
0
16
5
8
22
4
21
10
13
27
9
14
3
6
20
2

観客がいて、誰かにこの方陣を見せているとする

  1. 任意の数値を選んでもらう
  2. 選ばれた数値の行と列を潰す
  3. 潰れていないますからまた数値を選ばせる
  4. 1-3を全てが潰れるまで繰り返す

残った数値の和が57になる


やってみる

5, 4, 25, 2を順に選択
19
8
11
25
7
12
1
4
18
0
16
5
8
22
4
21
10
13
27
9
14
3
6
20
2

最後に21が残る

5 + 4 + 25 + 2 + 21 = 57

種明かし


index
i
0
1
2
3
4
j
bk \ ak
12
1
4
18
0
0
7
19
8
11
25
7
1
0
12
1
4
18
0
2
4
16
5
8
22
4
3
9
21
10
13
27
9
4
2
14
3
6
20
2
この表自体が、
a= {12, 1, 4, 18, 0} 
bn ={7, 0, 4, 9, 2}
の加算表になっている
Σa: 12+1+4+18+0=35
Σb: 7+0+4+9+2=22 
なので、選択された数値以外の行と列を消すと言うことは、
(ai, bjにおける組み合わせ、Sijを順に消していくことを意味する
上例で言うと、
5 = (1, 2) {i | 0, 2, 3, 4}, {j | 0, 1, 3, 4}
4 = (2, 1) {i | 0, 3, 4}, {j | 0, 3, 4}
25 = (3, 0) {i | 0, 4}, {j | 3, 4}
2 = (4, 4) {i | 0}, {j | 3} = 21

つまり最終的に集合a, bの各項の和 (斜め要素に等しい)
12 + 7 = 19
1 + 0 = 1
4 + 4 = 8
18 + 9 = 27
0 + 2 = 2   
と等しくなる
ちなみに、斜めには被験者はストレートに全て選択できる。


作ってみる

  1. 別パターンの5x5行列を作る
an= {5, 4, 6, 7, 8}
bn= {8, 10, 9, 12, 4}

index
i
0
1
2
3
4
j
bk \ ak
5
4
6
7
8
0
8
13
12
14
15
16
1
10
15
14
16
17
18
2
9
14
13
15
16
17
3
12
17
16
18
19
20
4
4
9
8
10
11
12

Σa = 5+4+6+7+8=30 
Σb = 8+10+9+12+4=43 
73になる方陣完成

 

13+14+15+19+12=73  

集合a, bは順番に興味が無いので、行列を入れ替える
11
9
12
8
10
19
17
20
16
18
16
14
17
13
15
17
15
18
14
16
15
13
16
12
14

11+17+17+14+14=73


  1. 8x8にしてみる
an = {3,4,1,8,9,14,2,0}, Σa = 3+4+1+8+9+14+2+0=41 
bn = {5,3,7,4,0,1,7,9}, Σb= 5+3+7+4+0+1+7+9=36 
41 + 36 = 77


3
4
1
8
9
14
2
0
5
8
9
6
13
14
19
7
5
3
6
7
4
11
12
17
5
3
7
10
11
8
15
16
21
9
7
4
7
8
5
12
13
18
6
4
0
3
4
1
8
9
14
2
0
1
4
5
2
9
10
15
3
1
7
10
11
8
15
16
21
9
7
9
12
13
10
17
18
23
11
9


8+7+8+12+9+15+9+9=77

  1. 非正方行列 2から抽出
8x3
an = {3,4,1,8,9,14,2,0}, Σa = 3+4+1+8+9+14+2+0=41 
bn = {5,3,7}, Σb = 5+3+7=15 
41+15=56

8+4+11=23  56 - 23=33 

3
4
1
8
9
14
2
0
5
8
9
6
13
14
19
7
5
3
6
7
4
11
12
17
5
3
7
10
11
8
15
16
21
9
7


5x4
11
9
12
8
10
19
17
20
16
18
16
14
17
13
15
17
15
18
14
16

  • 1:1空間ではない

  1. 正方行列 2から抽出

3x3

3+4+1=8
5+3+7=15  
8
9
6
6
7
4
10
11
8
8+11+4=23


4+1+8=13
5+3+7=15
9
6
13
7
4
11
11
8
15

7+6+15=28

8+9+14=31
7+4+0=11
15
16
21
12
13
18
8
9
14
8+16+18=42



5x5
3+4+1+8+9=25
4+0+1+7+9=21

3
4
1
8
9
4
7
8
5
12
13
0
3
4
1
8
9
1
4
5
2
9
10
7
10
11
8
15
16
9
12
13
10
17
18
4*4+18+12=46


大きな方陣から抽出可能 証明はしていない