javascript日和の成果物
とりあえずさっきまでの学習を形にしてみました。本当はGoogleガジェットでこのページに載せようと思ったんですが、意外と学習することが多そうなのでコードだけ載せておきます。(次のステップXMLを学習する1(理論編) - たぬきのねどこ)
内容は、(超簡易)自己学習システム。最初はちゃらんぽらんなことを聞いてきますが、きちんと答えているとまともな質問をし始めます。おかしな答えをし続ければ、そういう風に学習していきます。
メモ帳にコピペして、tanuki.htmlという名前でも付けて保存すれば見れるはずです。Array内の言葉を変えて遊んでくださいな(名詞や動詞の数の増減にも対応してます)。*1
<html> <body> <script language="JavaScript"><!-- var noun=new Array("ごはん","布団","洋服"); var verb=new Array("食べた","着た","叩いた","作った","羽織った","よそった"); var score=new Array(noun.length); for(var i=0;i<noun.length;i++)score[i]=new Array(verb.length); for(var i=0;i<noun.length;i++) for(var j=0;j<verb.length;j++) score[i][j]=100/verb.length; var result=""; function init(){ makeQ(); document.myForm.marubatu.value=result; } function makeQ(){ tempN=Math.floor(Math.random()*noun.length); tempV1=findVerb(tempN); tempV2=findVerb(tempN); while(tempV1==tempV2)tempV2=findVerb(tempN); document.myForm.question.value=""+noun[tempN]+"は、"+verb[tempV1]+"り"+verb[tempV2]+"りするもの?"; } function findVerb(tempN){ var maxTotalScore=0; for(var i=0;i<verb.length;i++)maxTotalScore+=score[tempN][i]; var probe=maxTotalScore*Math.random(); var totalScore=0; var tempV=-1; while(probe>totalScore){ tempV++; totalScore+=score[tempN][tempV]; } return tempV; } function clickYes(){ for(var i=0;i<verb.length;i++)score[tempN][i]*0.9; var up=(document.myForm.study.checked)? 2:1.8; score[tempN][tempV1]*=up; score[tempN][tempV2]*=up; result+="○"; init(); } function clickNo(){ var down=(document.myForm.study.checked)? 0.8:0.9; score[tempN][tempV1]*=down; score[tempN][tempV2]*=down; result+="×"; init(); } //--> </script> <form name="myForm"> <input type="text" size="50" name="question"><br> <input type="button" value="はい" onClick="clickYes()"> <input type="button" value="いいえ" onClick="clickNo()"> <br><br> <textarea cols="20" rows="10" name="marubatu"></textarea> <br><br> <input type="checkbox" name="study" checked>高速学習 </form> <script language="JavaScript"><!-- init(); //--> </script> </body> </html>
*1:何故かうまく表示されなかったので色付けを消しました