読者です 読者をやめる 読者になる 読者になる

遊び tokidoki 仕事

数学と音楽と教育と遊び

Top | おしごと | ゼミ | がくせい | すうがく | かがく | きょういく | おんがく | おきにー | Tips | Photo | イベント | ものもう | あれこれ | About

砂の果実 ― 結局,僕らは何を教えているのだろう ―

おしごと きょういく がくせい photo

そういえば昨年の秋,京都教育大学の谷口和成先生を招いて
アクティブラーニングの授業実践のFDが行われた.
www.aichi-edu.ac.jp
大学教員と同数程度の学生も参加していたという,なかなか珍しいFDだったのだが,
近年に無く鮮やかなショックを与えてくれたので記録しておこうと思った.
しかし何しろ半年前のこと,ショックだけは残っているものの内容はすっかりうろ覚え,
関係論文を見ながら再現してみよう,あの砂を噛むような感覚を.



今回の内容は中学レベルの直列・並列回路に関する「誤概念」を素材に
講義の中で「主体的・対話的な学び」を引き起す,
一つの具体的提示を行ったものだった.
ci.nii.ac.jp
中学校電気分野における電位概念の導入と学習教材の開発

クリッカーやらタブレットやらIT機器を利用して
対話的に全員参加を促す仕組みについては諸論あるところだろうが,
そういったことがショックだったわけではない.
参加学生はもちろん教員養成大学の学生であり,しかも理系が半数ぐらいいたはずだ.
そしてテーマは中学校の直列・並列.
中にはあと半年もすれば現場で実際に理科を教える者もいただろう.

講義の入り口は電圧・電流・抵抗の関係を思い出すところから.
そもそも抵抗ってなんだっけ?的な質問から始まった(のだっけ?)
「他の説明は?」と,できるだけ多様な言い方を学生らにしてもらう.
そうして出てくる答え方の数,言葉の種類から
その事象についてどこまで分かっているか,が見えるとともに,
中には間違った理解「誤概念」が現れてくることもある.
そうそう,この「誤概念」を一つのツールとして利用するのはオオアリだなぁ,
とそのとき思ったのだった.比較的多くの学生が間違って理解していること,
それをネタに学生同士で議論させると自然に対話的・主体的な学びになりやすい.
「よく分かっているつもり」だったことが違っていたら必死になるだろうし,
あるいはこの議論の中で,なぜ相手がそういう誤解をするのだろうか,
どう考えるとそういった誤答になるのか,という想像力は
まさに教員として現場に立つ者達にとって最重要な力だろうと思うわけだ.

そんなこんなで電流・電圧・抵抗を思い出させ,
対話的に電流と電圧の関係のグラフをタブレットに描かせて
結果一覧をスクリーンに映したりしていた(のだっけ?)
何にしても少し時間を掛けて電圧と電流の比例関係であるオームの法則
   E=IR
に落ち着くところまで進む.
つまりこうして一度きちんと準備しておいたのである.
このとき確か「抵抗とは電流の流れにくさを表す」という言葉を
受講者側から引き出していたと記憶している.

さて問題はここからだ.
(学生の反応が問題だ,と言いたかったのだが,
 こちらも提示された問題がどんなものだったか再現できなくなっていることに
 こうして書きながら気付いたので二重の意味で問題なのだ.)

電球(それは抵抗の一種)のある適当な回路を見せて
直列か並列かを議論する場があり,アヤシイ解答をするグループがあったものの
まだ頷ける範囲の間違え方だった(ように記憶している).
ただ,どの問いに対しても学生の解答を一覧で示し学生同士で議論させるのみで,
正解を言う,といった場面はあえて作っていなかった.
そして同等な電球の並列つなぎは同じ明るさだったよね,といったことを復習してから,
「誤概念」が最もよくあらわれる問題を提示した.
A,B,Cの豆電球を明るい順に並べよ(ただこの問題は後付け.もっと違った気がする).
f:id:okiraku894:20170311183939p:plain
きっと習いたての中学生なら高確率で正解を言う問題(のはず)だ.
(もちろん乾電池と電球はどれも同等だとする.)

さてすぐに映し出される解答の集計を見ると,これがかなりばらつくことが分かる.
そこでそれぞれのグループにそう考えた理由を尋ねると,
見事に「誤概念」に基づく説明が出てくる.
いわゆる教科書にも援用されている水流モデルを用いて
枝分かれがあるような並列つなぎでは「電流が分かれるので」
並列つなぎでは電球が暗くなる,というものだ(実際はA=C>Bとなる).
もちろんその講義では正解を示す,などといった野暮なことはしない.

では自分の考えが正しいことを周りに説明し説得しよう,という時間が設けられる.
先ほど私たちは電圧と電流の比例関係
   E=IR
を確認したところだったね,と付け加えて.
やがて各グループからそれぞれの説明が発言されるのだが,
そこからはこの水流モデルに基づく誤解がかなり強力なのだということが窺える.
おっと,忘れてはいけないのはこの場には物理専攻を中心とする理系がかなり居たこと.
にも拘らず,元となる関係 E=IR に基づいた説明がなかなかなされない.
(もうこの時点で理科の先生方は学生らの反応を見て頭を抱えていたのだが.)
そして私が,そしておそらくそこに居られた理系の先生方全てが,
最もショックを受ける瞬間が訪れたのだった.

或る理系グループから
「並列回路の合成抵抗を計算するとAの抵抗の半分になるので,全体の電流はAの2倍になり,
それが枝分かれするので電球Cに流れる電流はAに流れる電流と等しく,だから同じ明るさになる」

といった説明が出る.この時点で理系教員全員が
「いやいやいや,そうではなくって」というツッコミを内心でしていた矢先に,
頭を抱えるある数学の学生.
「お,君は今なぜ頭を抱えた?」と谷口氏が尋ねると,
「合成抵抗という考え方をすっかり忘れていたことにショックを受けました.」
との返答.もう,ここにきて我々教員,全員ツッコんでいた.
「そこかよ!」

「え,合成抵抗の考えを使って答えて何がいけないの?」
と思う学生もいることだろう.説明が間違っているわけではない.
だが,概念を十分理解した上での解答だとはとても思えない.
たとえて言うならこの解答は,「2^33^2ではどちらが大きいか」という問いに,
「それぞれの常用対数を取ると
\log_{10}2^3=3\log_{10}2\fallingdotseq3\times0.3010=0.9030
\log_{10}3^2=2\log_{10}3\fallingdotseq2\times0.4771=0.9542となり,
\log_{10}2^3<\log_{10}3^2が分かるから2^3<3^2である.」
と答えているようなものなのだ.
そんなことせずとも,直接2^3=8<9=3^2が分かるよね?
つまり,電球A,Cいずれも乾電池一つ分の電圧がかかっていること,
そしてオームの法則に従って同じ量の電流が流れていることさえ分かれば良いわけだ.
先ほどの合成抵抗の考えはこの「同じ電圧がかかる」という事実から導かれることであり,
だから合成抵抗を使って答えるのは本末転倒なのだ.

常用対数を使った2^33^2の比較が滑稽だと皆が感じるのは,
2^3=2\times2\times2,3^2=3\times3 だということが十分分かっているからに他ならない.
100歩譲って少なくとも教員養成大学の理系学生なら「合成抵抗による解答」が滑稽だ,
と思えるぐらいにオームの法則を身につけているものだと思っていたのだったが,
もしかすると答えた学生も頭を抱えた学生も「すごい解答だ!」と思っているかもしれない.

講演者を含め,微妙な空気に教員全体が包まれてやがてFDは終わった.

このFDでも経験したことなのだが,どうやら「理解する」という意味自体が,
この数年で我々教員世代と学生世代で急速に違ってきているように思えてならない.
つまり学生にとっての理解とは「念仏を正しく唱えられること」のようなのである.
彼らにとってその念仏が意味するところはあまり重要でないようなのだ.


19世紀末,足し算のできる馬「賢馬ハンス」というのが世間を騒がせたそうだ.
賢馬ハンス - Wikipedia
足し算の問題を出すと,その答えの分だけ蹄で地面を叩くというのだ.
もちろん,この馬は足し算を「理解している」わけではなく,
聴衆の期待を敏感に感じて,つまり「その場の空気を巧みに読んで」反応していたに過ぎない.
聴衆はそれを見て「すごいすごい」と褒め称やしたわけだ.
しかしハンスは自分の行っていること,つまり足し算の概念を永遠に知ることは無い.
彼にとって出題者の表情の微妙な変化を読み取ることが目的の全てだからだ.


思えばセンター試験に代表される穴埋め式,選択肢式ペーパーテストといったものは
この「賢馬ハンス」を大量生産しやすい仕組みだった.
大量に過去問を収集し大量にこなせばある程度のパフォーマンスが出せる仕組みだから,
世代を経て次第にこうしたテストへの「お勉強の最適化」が行われてきたことは,
今振り返るとごく当たり前の結果だった.
当然我々教員世代もこのテストへ特化した勉強といったものを経験している.
けれども多くの私たちは「今はテスト特化モード」という意識を持って対応していたと思う.
つまりテストとは無関係の学びの形も心の中には同時に維持していたのだ.
どこかしら「たかがテストごとき社会システムに我々の知性が侵されてなるものか」
といった意地もあった気もする.
そこには「知」へのはるかな憧憬とある種の畏怖の念も存在していた.
子ども心にもそんな風に「知」に対峙できる十分な時間のあった幸せな時代だった,
ということなのかもしれない.

この国は貧しくなった.
経済的にも心理的にも,そして知性の点でも.
あるいは,時間的に貧しくなった,と言ってもいい.

3/8の朝日新聞の読者投稿欄に「読書はしないといけないの?」という,
教育学部の学生の投稿があった.
その主旨は,これまで読書をしてこなかったが特に困ることもなく,
読書が生きる上での糧になることもなく,生きる上で特段必要でもない.
だから楽器やスポーツと同じく趣味の問題なのではないか,というものだった.
「お勉強最適化」ここに極まれり,といったところだ.
www.asahi.com
(けれどこれは他人事ではなく,当大学でも本を読まない,
 正確には「読めない」学生が多い.そんな彼らもやがて教育現場に向かうわけだ.)

読書をしないことがいけないとか,お勉強最適化がいけないとか
そんなことはどれだけ言ったところで糠に釘である.
そもそもそんなことは言われて変えられるようなものではない.
けれど曲がりなりにも知性あるいは「知」に関わることになる教育学部の学生である.
この先も外発的な理由によってしか自分自身の知性に関わろうとしない態度のままで,
果たしてどれだけ子どもの知性の働きに気付けるだろうか?
どれほど真面に子どもの知性に向き合えるのだろうか?

外発的な「最適化されたお勉強」と内発的な手探りで泥臭い知の探究の対比.
それはちょうど道徳と倫理について平易な言葉で説いた池田晶子さんの言葉に似ている.

『悪いことはしてはいけないからしない』,これは道徳であり,
『悪いことはしたくないからしない』,これが倫理である.
『善いことはしなければいけないからする』,これが道徳であり,
『善いことをしたいからする』,これが倫理である.
                   池田晶子「私とは何か」

試験に最適化されたお勉強が学びの全てとなっている今の多くの学生に,
私たちは果たして何を伝えられるのだろうか.
明治開国以来,近代化を目指し直走ったこの国が行き着いた場所.
結局私たちが得たものは,砂の果実だったのだろうか.

f:id:okiraku894:20170121075131j:plain

砂の果実

砂の果実

私とは何か さて死んだのは誰なのか

私とは何か さて死んだのは誰なのか

「森のDNA」展@ヤマザキマザック美術館

Art photo

ようやく休みが取れたので,行ってきた.
新栄にこんな美術館があるの知らなかったね.
f:id:okiraku894:20170219083251j:plain:w300

森下友奈さんのアニメーション.
f:id:okiraku894:20170218105003j:plain
f:id:okiraku894:20170218113050j:plain

吉田達彦さんの陶.
f:id:okiraku894:20170218105123j:plain
f:id:okiraku894:20170218105234j:plain
f:id:okiraku894:20170218112212j:plain

鈴木春香さんの切り抜き.
幾何学的な細かい模様を切り抜いて幾層か重ねた作品.
コケ類の写真を撮ってるとこんな世界に浸れる.
f:id:okiraku894:20170218110401j:plain
f:id:okiraku894:20170218110340j:plain
f:id:okiraku894:20170218110440j:plain
f:id:okiraku894:20170218110449j:plain
f:id:okiraku894:20170218110546j:plain
f:id:okiraku894:20170218111356j:plain

今尾泰三さんのミクスドメディア作品.
f:id:okiraku894:20170218111950j:plain
f:id:okiraku894:20170218112117j:plain

河合真維さんの水彩.童話の挿絵のような.
f:id:okiraku894:20170218110741j:plain
f:id:okiraku894:20170218110759j:plain
f:id:okiraku894:20170218110829j:plain
f:id:okiraku894:20170218110844j:plain
f:id:okiraku894:20170218111008j:plain
f:id:okiraku894:20170218111113j:plain
f:id:okiraku894:20170218111458j:plain

ここまでは県の芸大の若手芸術家たちの作品.

そしてこの美術館の成り立ちは,フランス美術を蒐集しはじめたことによるらしく,
アール・ヌーヴォーの家具やガラス作品が多数あった.
中でもエミール・ガレのものが沢山.
f:id:okiraku894:20170218105447j:plain
f:id:okiraku894:20170218105744j:plain
f:id:okiraku894:20170218105548j:plain
f:id:okiraku894:20170218105859j:plain
f:id:okiraku894:20170218110036j:plain
f:id:okiraku894:20170218110718j:plain
f:id:okiraku894:20170218110906j:plain
f:id:okiraku894:20170218111039j:plain
f:id:okiraku894:20170218111220j:plain
f:id:okiraku894:20170218111245j:plain
f:id:okiraku894:20170218111756j:plain
f:id:okiraku894:20170218112147j:plain
f:id:okiraku894:20170218112325j:plain
f:id:okiraku894:20170218113151j:plain
f:id:okiraku894:20170218113321j:plain
いずれもILCE-6000+Sony E 35mm f1.8, Lightroomにて現像

もう一階上がると,18世紀から20世紀にかけての絵画が多数.けれどこちらはあえて撮らず.
ロダンの彫刻も幾つかあった.
正直なところ,これまでロダンが分からなかったのだけど,
技巧ではない,存在の重力ってものを初めて感じたのは一つの収穫だった.

束の間の開放,旅立ち

ゼミ きょういく おしごと イベント

今年も年中行事の一大イベントである卒論発表会が終わった.
年々こちらの危機意識と学生の意識の乖離が大きくなってきて,
送り出す側としては何とも隔靴掻痒の感甚だしく,
真夜中に目が覚めてしまうこともしばしばだったが(まぁ毎年のことだ),
ゼミ生も最後の最後に帳尻合わせしてきて何とか辿り着いた.で,今年度の作品↓
f:id:okiraku894:20170212144407p:plain
「得られることができます」とか「はしらとチュウ(柱)」とか
ほっとけばいつまでもしゃべりそうな漫談家とか,
ほっとくと雪山に行ってしまう少女とか,いや,少年もだった,とか,
それに当日,発表していて楽しくなって発表を延長しちゃうだとか,
振り返るととてもユニークな仲間たちだった.
これくらい仲の良い雰囲気で発表を迎えられたのは久しぶりだ.
さてその集大成である卒論は↓
2016年度卒業生卒論
これまでの全ての卒論一覧は↓
卒論一覧(2006~2016)



夜は3年ゼミと合同で打ち上げ.
前回しかるべき理由によってワイン6本セットをもらったのに続き,今回はワイングラス.
そうなんだ,最近果実風味の高い日本酒をワイングラスで飲む,ってのにちょっとハマってて
口の広いワイングラスを買おうかなぁ,と思ってたところ,まさに最適タイミングの数理.
f:id:okiraku894:20170212090927j:plain:w400,left
tokidoki.hatenablog.jp
明日から皆さん,国内・国外へ,っすね.気を付けて.


さてひとつ,発表を通して改めて実感したのは,
本人が(たとえ泣きながらでも)手を動かし経験したこと,というのは
どう揺さぶられても耐えられる,ということだった.
逆に付け焼きなものは直ぐに剥がれるということでもある.
今年度は出動しなくても良いだろうと思っていた「小人さん」,
想定外に出動が多かったのは大学各種委員会でゼミに十分な時間がかけられなかったこと,
やはりこれが大きい.
気を抜くと数学から逃げ出してしまう学生らに,
少ない時間でも数学を実感を持って体験させる方法,ないものかなぁ...
と,ぼや~っと考えながら藤原由紀乃のゴールドベルク変奏曲を聴く,束の間の開放.
f:id:okiraku894:20170212133029j:plain:w500,right


藤原さんのChopinのエチュード,丁寧な表現が気に入ってBachも買ったのだった.

ショパン:エチュード全集

ショパン:エチュード全集

バッハ:ゴールドベルグ変奏曲

バッハ:ゴールドベルグ変奏曲

数理音楽の風景(1)-不協和度曲線

ゼミ すうがく おんがく

2012年度卒業生から始めた当ゼミでの数理音楽なる分野,
その風景を数回シリーズでまとめてみよう.

準周期系の研究において連分数にまつわる力学系を扱うことが多かったことと,
はるか以前から音楽の仕組みに数理的仕組みが見え隠れしていると感じていたので,
ずっと取り扱いたいとは思っていたことだった.
そもそも音階の作り自体,繰り込み的な要素が多分にあるし,
その辺の感覚は連分数力学系そのものに由来する.
DSpace at 愛知教育大学: A Renormalization Approach to Level Statistics on 1-dimensional Rotations

さて,その数理音楽のゼミでの取り扱い開始は2012年度7代目の卒業研究から.
ドレミファそーする?―音律の数理と音階の構成―
不協和度曲線から始まって,連分数展開による音階構成の仕組みまで触れた卒論.
とあるページでもこの卒論が紹介されているのをしばらく前に発見した.
sites.google.com
この卒論,元になった藤沢+クックの論文*1
和音性の計算法と曲線の絵描き方 ―不協和度・緊張度・モダリティ―
の真似事から始まって,
不飽和度曲線で起こっている解析的な現象をちょっと数学的にきちんと書いてみた,
というものだった.
ただ,不協和度曲線の協和点でグラフが尖ってるといった特長があればいいものを,
そうもなっていなかったために,何らかの方法で協和点を解析的に特徴付けねば,
とでっち上げたのが第二種不協和度曲線だった.
tokidoki.hatenablog.jp

不協和度曲線の数理モデルのアイディアはこうだ.
まず,周波数の異なるsin波を同時に2つ鳴らし,
心理的な快不快の度合いを複数の被験者に採点してもらう.
その結果丁度半音階程度ずれたときが最も不快で,
そこを離れるに従い不快感は減っていったので,
この採点結果を適当な関数でモデル化する.それは例えば
f:id:okiraku894:20170129104409p:plain
であり,純音のドに対する別の純音の不協和度が以下.
f:id:okiraku894:20170128144954p:plain

しかし実際の楽器による楽音は複数の倍音が鳴っているため,
複合音の不協和度は純音の不協和度曲線をシフトして重ね合わせたものになるだろう,
つまり協和・不協和感覚に線形性が成り立っているだろう,という仮定を課すのである.
f:id:okiraku894:20170129105131p:plain

その結果,以下のような複合音に対する不協和度曲線が得られる.
例えば楽音のドに対する別の楽音の不協和度は↓
f:id:okiraku894:20170128144955p:plain
そして経験的に人々(正確には西洋音楽圏の人々*2)が協和すると感じる場所で
不協和度が下がっている,という尤もらしい説明ができる,というわけだ.
なお当たり前のことなのだが,この協和点の集合はFarey列にlog2したものに他ならない.

特に完全五度である3/2倍音は常にオクターブに次いで最も協和度が高い.
そのことによってピタゴラスは現在ピタゴラス音律と呼ばれる,
音階づくりのルールを定めたのだった.
そしてそこから連分数力学系が絡む素敵な世界が広がるのだが,その話は次回以降へ.

音律と音階の科学―ドレミ…はどのようにして生まれたか (ブルーバックス)

音律と音階の科学―ドレミ…はどのようにして生まれたか (ブルーバックス)

*1:更にその大元にはPlomp と Leveltによる音楽心理実験があるのだ. R. Plomp and J. M. Levelt "Tonal Consonance and Critical Bandwidth" Journal of the Acoustical Society of America, 1965.

*2:実際,ハーモニーという概念を持たない民族圏の人々は例えば半音差で二音鳴らした場合と完全五度で鳴らした場合とで快不快感に特段の違いは起こらなかった,という実験結果がある.単旋律文化圏であった他ならぬ明治以前の日本人もそうだったのではなかろうか.

4独のCayley graphを描いてみた by Scratch

scratch すうがく ゼミ

数独をテーマにしているゼミ生がいる.
当初は数独の難易度を測定する尺度を作れないか,
などといったことを夢見ていたが,
当人がそもそも数独を趣味にしていないようなので
そういった食指は動かなかったようだ.

じゃぁ何する,ってことになって,
そもそも数独は何通りあるのかをテーマにしようとなった.
もちろん参考書は↓

「数独」を数学する -世界中を魅了するパズルの奥深い世界-

「数独」を数学する -世界中を魅了するパズルの奥深い世界-

けれど,数の並べ替えだけで9!=362880あり,
更に盤の9色色分けの方法を考えると...と,ちょっと想像しただけでも手作業は無理.
しかし当人にプログラミング力があるわけでもなく,
そうすると人力でできるよう問題を簡単にするわけで,
数独likeなものとして4×4盤の4独を考えよう,となった.
実は4独盤は288通りだということが分かっていて,
4独盤集合を不変にする変換群(4独群と呼ぶことにしようか)
の位数も128と知られている.
(実際下に載せるBASICでしらみつぶしに調べたら128個だったし.)

これなら何とか形になるかも,と変換群の生成元をまずは固定して,
4独盤集合内の4独群の軌道を調べる,といったことを始めた.
で当人,手作業で盤を書いては試し書いては試しを繰り返していて,
何だかとても知的作業のように思えない.
いや,こうして泥臭い経験をする中から見えてくるものがあるわけだけど,
そして実際当人にも何か感覚的に見えてくるものがあったとのことだけど,
それにしても卒論提出間近にやる作業には思えない.

で,学生の卒論に託けて,4独群のシミュレーターをScratchで作ってみた.
4独変換群は3つの生成元で生成されることまでは卒論で示してあるので,
その3つの作用が動的に見えるようにしたものだ.

[4DOKU Group Simulator]
↓大変重いので,Turbo mode(Shiftキー押しながら緑の旗をクリック)で実行を.

そして,当然のことながら4DOKU Groupの「形」を見たいと思い,
幸い3つの元で生成されているからそのCayley Graphを3Dで表示してみた.
[Cayley Graph of 4DOKU Group]
↓大変重いので,Turbo mode(Shiftキー押しながら緑の旗をクリック)で実行を.

しかし,下地となるCayley graphの接続状況などすべてScratchで行うのはちょいと厳しい.
ってことで,10進BASICでそのあたりはゴニョゴニョっと.
f:id:okiraku894:20161228135159p:plain

REM
REM [4doku group calculator]
REM ver. 2016/12/23
REM

DIM bd$(1 TO 4,1 TO 128),pm$(1 TO 23),typ$(1 TO 12),cg(1 TO 3,1 TO 128)
DATA "1243","1324","1342","1423","1432","2134","2143","2314","2341","2413","2431"
DATA "3124","3142","3214","3241","3412","3421","4123","4132","4213","4231","4312","4321"
FOR k=1 TO 23
   READ pm$(k)
NEXT k
DATA "1234341221434321","1234342121434312","1234342143122143","1243341221344321"
DATA "1243342123144132","1243341243212134","1234341223414123","1234341241232341"
DATA "1234341243212143","1243342121344312","1243342141322314","1243342143122134"
FOR k=1 TO 12
   READ typ$(k)
NEXT k

!LET bd$(1,1)="1234341221434321" !初期盤
LET bd$(1,1)="123456789abcdefg" !初期盤
LET bd$(2,1)="" !単位元

LET top=1
LET btm=1
LET idx=btm
PRINT USING "### [################] <#####################":idx,bd$(1,1),bd$(2,1)
DO
   PRINT "----";top;" to ";btm;"----"
   FOR k=top TO btm
      LET a0$=bd$(1,k)
      LET g$=bd$(2,k)
      !σ
      IF g$(1:1)<>"s" THEN
         LET a$=sigma$(a0$)
         LET ss=search(a$,idx)
         IF ss=0 THEN
            LET idx=idx+1
            LET bd$(1,idx)=a$
            LET bd$(2,idx)="s"&g$
            PRINT USING "### [################] <#####################":idx,a$,bd$(2,idx)
            LET bd$(3,k)=bd$(3,k)&"s"&STR$(idx)&","
         ELSE
            LET bd$(3,k)=bd$(3,k)&"s"&STR$(SS)&","
         END IF
      END IFIF g$(1:1)<>"m" THEN
         LET a$=mu$(a0$) 
         LET ss=search(a$,idx)
         IF ss=0 THEN
            LET idx=idx+1
            LET bd$(1,idx)=a$
            LET bd$(2,idx)="m"&g$
            PRINT USING "### [################] <#####################":idx,a$,bd$(2,idx)
            LET bd$(3,k)=bd$(3,k)&"m"&STR$(idx)&","
         ELSE
            LET bd$(3,k)=bd$(3,k)&"m"&STR$(SS)&","
         END IF
      END IFIF g$(1:1)<>"t" THEN
         LET a$=tau$(a0$)
         LET ss=search(a$,idx)
         IF ss=0 THEN
            LET idx=idx+1
            LET bd$(1,idx)=a$
            LET bd$(2,idx)="t"&g$
            PRINT USING "### [################] <#####################":idx,a$,bd$(2,idx)
            LET bd$(3,k)=bd$(3,k)&"t"&STR$(idx)&","
         ELSE
            LET bd$(3,k)=bd$(3,k)&"t"&STR$(SS)&","
         END IF
      END IF
       
   NEXT k
   LET top=btm+1
   LET btm=idx
LOOP UNTIL top>btm

PRINT
PRINT

! Cayleyグラフの為の接続状況一覧-----------------
FOR k=1 TO btm
   PRINT USING "### [################] <########## <"&REPEAT$("#",40):k,bd$(1,k),bd$(2,k),bd$(3,k)
   LET g$=bd$(2,k)
   LET ln=1
   DO
      SELECT CASE g$(1:1)
      CASE "s"
         LET cg(1,k)=cg(1,k)+ln
      CASE "m"
         LET cg(2,k)=cg(2,k)+ln
      CASE "t"
         LET cg(3,k)=cg(3,k)+ln
      CASE ELSE
      END SELECT
      LET g$(1:1)=""
      LET ln=ln*1.2
   LOOP UNTIL g$=""
NEXT k

PRINT
PRINT

! 各gの12typeへの作用の様子----------------------
FOR k=1 TO btm
   LET g$=bd$(2,k)
   PRINT USING "[### <"&REPEAT$("#",10)&"] ":k,g$;
   LET cr$=""
   LET ct=0
   FOR t=1 TO 12
      LET res$=typ$(t)
      FOR l=1 TO LEN(g$)
         SELECT CASE g$(l:l)
         CASE "s"
            LET res$=sigma$(res$)
         CASE "m"
            LET res$=mu$(res$)
         CASE "t"
            LET res$=tau$(res$)
         CASE else
         END SELECT
      NEXT l
      LET res$=std$(res$)
      LET cr$=cr$&USING$("##",t)
      IF res$=typ$(t) THEN
         LET cr$=cr$&"=O,"
         LET ct=ct+1
      ELSE
         LET cr$=cr$&"=X,"
      END IF
   NEXT t
   LET bd$(4,k)=STR$(ct)
   PRINT USING ">## ":bd$(4,k);
   PRINT "(";cr$;")"
NEXT k

PRINT

! |X^g|=k となる g の表示--------------------------
FOR t=1 TO 12
   LET cr$=""
   LET ct=0
   FOR k=1 TO btm
      IF bd$(4,k)=STR$(t) THEN
         LET ct=ct+1
         LET cr$=cr$&bd$(2,k)&","
      END IF
   NEXT k
   IF ct>0 THEN
      PRINT "{g|X^g|=";t;"}=";ct;"{";cr$;"}"
   END IF
NEXT t

!FOR k=1 TO btm
!   PRINT bd$(2,k)
!NEXT k
!FOR k=1 TO btm
!   PRINT bd$(3,k)
!NEXT k

! Cayleyグラフ描画---------------------------------
! [4]←→[6] [8]↑[5]↓ [a][z]z方向
! [s] zoom in [x] zoom out
LET wmax=8
SET COLOR MIX(0) 0,0,0
SET COLOR MIX(1) 1,1,1
SET TEXT COLOR 8
SET WINDOW -wmax,wmax,-wmax,wmax
LET dt=0.01
LET QX=-0.6
LET QY=-3
LET QZ=1.8
LET OX=3.5
LET OY=7
LET sw=1
DO
   mouse poll mx,my,left,right
   LET ky$=""
   CHARACTER INPUT nowait:ky$
   SELECT CASE ky$
   CASE "8"
      LET dx=MIN(0.1,dx+dt)
   CASE "5"
      LET dx=MAX(-0.1,dx-dt)
   CASE "4"
      LET dy=MAX(-0.1,dy-dt)
   CASE "6"
      LET dy=MIN(0.1,dy+dt)
   CASE "a"
      LET dz=MIN(0.1,dz+dt)
   CASE "z"
      LET dz=MAX(-0.1,dz-dt)
   CASE "s"
      LET wmax=wmax/1.01
   CASE "x"
      LET wmax=wmax*1.01
   CASE " "
      LET sw=1-sw
   CASE ELSE
   END SELECT
   SET WINDOW -wmax,wmax,-wmax,wmax
   LET QX=QX+dx
   LET QY=QY+dy
   LET QZ=QZ+dz
   LET dx=dx*0.95
   LET dy=dy*0.95
   LET dz=dz*0.95
   IF left=1 THEN
      LET OX=mx
      LET OY=my
   END IF
   SET DRAW mode hidden
   CLEAR
   FOR k=1 TO 128
      LET ed$=bd$(3,k)
      LET X0=rotX(cg(1,k),cg(2,k),cg(3,k))
      LET Y0=rotY(cg(1,k),cg(2,k),cg(3,k))
      SET LINE COLOR 1
      DRAW circle WITH SCALE(wmax/200)*SHIFT(X0,Y0)
      IF sw=1 THEN
         PLOT TEXT ,AT X0+wmax/100,Y0 ,USING"<##########":bd$(2,k)
      END if
      DO UNTIL ed$=""
         LET l=POS(ed$,",")
         LET idx=VAL(ed$(2:l-1))
         IF idx>k THEN
            SELECT CASE ed$(1:1)
            CASE "s"
               LET cl=4
            CASE "m"
               LET cl=2
            CASE "t"
               LET cl=3
            END SELECT
            SET LINE COLOR cl
            LET X1=rotX(cg(1,idx),cg(2,idx),cg(3,idx))
            LET Y1=rotY(cg(1,idx),cg(2,idx),cg(3,idx))
            PLOT LINES: X0,Y0;X1,Y1
         END IF
         LET ed$(1:l)=""
      LOOP
   NEXT k
   SET DRAW mode explicit
LOOP UNTIL left*right=1

REM -----------------------------------------------
REM 呼び出し関数
REM -----------------------------------------------

! 一致する盤を探す
FUNCTION search(S$,midx)
   LET kk=1
   LET search=0
   DO
      IF bd$(1,kk)=S$ THEN
         LET search=kk
         LET kk=midx
      END IF
      LET kk=kk+1
   LOOP UNTIL kk>midx   
END FUNCTION

! 作用σ
FUNCTION sigma$(i$)
   LET a$=i$         
   LET b$=a$(5:8)
   LET a$(5:8)=""
   LET sigma$=b$&a$
END FUNCTION

! 作用μ
FUNCTION mu$(i$)
   LET a$=i$         
   LET b$=a$(9:16)
   LET a$(9:16)=""
   LET mu$=b$&a$
END FUNCTION

! 作用τ
FUNCTION tau$(i$)
   LET a$=i$(1:1)&i$(5:5)&i$(9:9)&i$(13:13)
   LET a$=a$&i$(2:2)&i$(6:6)&i$(10:10)&i$(14:14)
   LET a$=a$&i$(3:3)&i$(7:7)&i$(11:11)&i$(15:15)
   LET tau$=a$&i$(4:4)&i$(8:8)&i$(12:12)&i$(16:16)
END FUNCTION

! 盤の標準化
FUNCTION std$(i$)
   LET s$="1234"
   LET v=VAL(i$(1:1))
   LET s$(v:v)=STR$(1)
   LET v=VAL(i$(2:2))
   LET s$(v:v)=STR$(2)
   LET v=VAL(i$(5:5))
   LET s$(v:v)=STR$(3)
   LET v=VAL(i$(6:6))
   LET s$(v:v)=STR$(4)
   LET st$=""
   FOR kk=1 TO 16
      LET v=VAL(i$(kk:kk))
      LET st$=st$&s$(v:v)
   NEXT kk
   LET std$=st$
END FUNCTION

FUNCTION rotX(X,Y,Z)
   LET rotX=(X*COS(QZ)+Y*SIN(QZ))*COS(QY)+((X*SIN(QZ)-Y*COS(QZ))*SIN(QX)+Z*COS(QX))*SIN(QY)+OX
END FUNCTION

FUNCTION rotY(X,Y,Z)
   LET rotY=(-X*SIN(QZ)+Y*COS(QZ))*COS(QX)+Z*SIN(QX)+OY
END FUNCTION

END