暗算強化月間
暗算が苦手です。こんにちは。
先日の2桁の掛け算で目から鱗が出た俺ですが、その感動を人に伝えたら笑われた・・・。
「桁で分けて計算とか普通の筆算と同じじゃんwwwwwww」
そうじゃないんだ、複雑な問題を分かりやすい問題に分ける事*1や、従来のやり方を捨てて理解しやすい方法を編み出すことや、ソリューションの美しさで覚えた感動を伝えたかっただけなんだ。
なんにしても頭のいい人にバカが感じた感動を伝えるのは難しい。象を飲み込んだウワバミの話を思い出したよ。
計算が苦手なのを克服したいので
暗算の問題を自動生成するプログラム作ったよ!足し算だけだけど、折を見て四則演算を全部盛り込みつつ、モジュロ演算や階乗やルートや総和の問題なんかも出したい!全部暗算で出来るように、このプログラムで特訓します・・・。
<html> <head> <style type="text/css"> #question{ float : left; width : 10em; height : 1em; } #level{ float : left; width : 10em; height : 1em; } #score{ float : left; width : 10em; height : 1em; } </style> <script> var gScore, gLevel, gLife; var gAnswer = ""; var gCount = 0; var $ = function(id) { var obj = document.getElementById(id); obj.T = function(s){ var ret_t; if(obj.innerText == undefined){ if(s != undefined) obj.textContent = s; ret_t = obj.textContent; }else{ if(s != undefined) obj.innerText = s; ret_t = obj.innerText; } return ret_t; } return obj; }; function $q(s){ return parseInt(Math.random() * 100000) % (s * 10); } function GetQuestion() { var valX = $q(gLevel), valY = $q(gLevel); $('question').T(valX + " + " + valY); $('answer').value = ""; $('answer').focus(); gAnswer = valX + valY; } function Redraw(s) { var strLife = ""; for(var i=0;i<gLife;i++) strLife += "(´・ω・`)"; $('level').T("LEVEL:" + gLevel); $('score').T("SCORE:" + gScore); $('life' ).T(strLife); $('disp' ).innerHTML = s ? s:""; } function GameReset() { gScore = 0; gLevel = 1; gLife = 3; Redraw(); $('btnStart' ).style.display = ''; $('question' ).T(""); $('answer' ).value = ''; $('btnAnswer').disabled = false; } function GetAnswer() { var strDisp = ""; if($('answer').value == gAnswer){ gScore += 10; if((++gCount) % (10 * gLevel) == 0) { gLevel++; gCount = 0; } if(gScore % 3000 == 0) gLife++; strDisp = "正解!<br>"; }else{ strDisp = "ハズレ!<br>正解は " + gAnswer + " でした。<br>"; gLife --; } if(gLife > 0){ GetQuestion(); }else{ strDisp += "Game Over<br>"; $('btnAnswer').disabled = true; } Redraw(strDisp); } function GameStart() { GameReset(); $('btnStart').style.display = 'none'; GetQuestion(); } </script> </head> <body> <div id="level">LEVEL:1</div><div id="score">SCORE:0</div><br style="clear:both"><br> <form action="javascript:GetAnswer()"> <div id="question"></div><div>=<input type="text" id="answer"> <input type="button" id="btnAnswer" value="答える" onClick="GetAnswer()"> </div><br> 残機:<span id="life"></span> <div id="disp"></div> <input type="button" id="btnStart" value="ゲーム開始" onClick="GameStart()"> <input type="button" id="btnReset" value="リセット" onClick="GameReset()"> </form> </body> </html>
燕雀いずくんぞ鴻鵠の志を知らんや。賢くなりたいなぁ・・・。
追記
IEでもFirefoxでも動くように改造しました。
*1:分けたことで俺の理解が進んで、2桁同士の掛け算に対する面倒意識がなくなった事。これが一番大事。