三角関数版 三四郎50への道
はじめは、
=If(Atan2(6-Row(A1),6-Col(A1)) MOD (Pi()/2)<=Pi()/4,"*")
で行くかな、と思ったんです。
一周2πですから、90°(π/2)ごとに区切って、
そのさらに半分の45°(π/4)以下を選択すれば・・・
ところが、やってみると、負の部分は上手くいかない。
三四郎のmodは、負数だと、負数が返るんですね。
Excelは負数でも正数が返るので、中央のエラーを除けば
=LEFT("*",(MOD(ATAN2(ROW()-6,COLUMN()-6),PI()/2)<=PI()/4))
で、できてしまいます。
そこで、負数を正数にするべく、あらかじめ全体にπを足すようにしました。
=If((Atan2(6-Row(M4),6-Col(M4))+Pi()) MOD (Pi()/2)<=Pi()/4,"*")
これが、初期作(63文字)で、この時点で、
95未満達成&最短予測52文字をアップしました。
あとは減量です。PI()を使うと長いので、近似値で誤魔化す。
その結果、55文字になりました。
=If((Atan2(6-Row(A1),6-Col(A1))+Pi()) MOD 1.57<0.8,"*")
さらなる減量のターゲットは、Pi()と0.8です。
どちらも整数にできれば、5文字減らせます。
ここで、MOD 1.57後の数値を見ると、
空白部分の最小値が0.90、*部分の最大値が0.79
ということは、0.1以上0.2以下の数を全体に足すと
0.8を1にすることができる。
そこで、πを約0.16プラスの3.3にして、
=If((Atan2(6-Row(A1),6-Col(A1))+3.3) MOD 1.57<1,"*")
52文字到達。ここで、さらに、3.3を整数にするべく、
1.57の整数倍を表示させて、1.57×5=7.85より、8を発見して、
最終形(50文字)
=If((Atan2(6-Row(A1),6-Col(A1))+8) MOD 1.57<1,"*")
ができました。
sinは、その時点までは、考えていませんでした。
家に帰って覗いてみると、もう、ネタばれ状態で・・・
早速、下記よりリンクさせて頂きました。
http://kumapooh2007.hp.infoseek.co.jp/
投稿情報: くまぷー | 2007/11/18 18:10