表計算一筆書き、「女王陛下への道」
http://kumapooh.justblog.jp/blog/2007/11/post_39db.html#comment-2456489
を見て、最初に思いついたのは、中心を起点として考えると、十字部分は、RCどちらかが、0。バッテン部分は、RCの絶対値が同じ。ということ。
つまり、RCの積が十字部分が0で、バッテン部分が平方数になる。ということは、0も平方数だから、何だ、簡単じゃん、ということで、作ったのが、
=If(Fp(Sqrt(Abs((6-Row(A1))*(6-Col(A1))))),,"*")
同じようなものを作った方、多かったでしょうね。(^^)(^^)
ところが、これだと、E2など、中心から、(1,4)の位置にある、余計な8点も「*」になってしまう・・・。
ここで、一旦止まっちゃいました。
余計な8点を削除する方法が見つからない・・・
しばらく、他の方法で、三四郎57を作って、これで終わりかなぁ、などと思っていました。
しかし、そこで、閃きました。(^^)(^^)
バッテン部分は、RC同じだから、RCCにしても、RRCにしても、R(C)の3乗になる。
十字部分は、RCCにしても、RRCにしても、0、つまり、0の3乗になる。
一方、お邪魔虫部分(E2等)は、RCCにしても、RRCにしても、R(C)の3乗にはならない。
これで、できた\(^o^)/ という感じでした。
作ったのは、三四郎50
=If(Fp(Abs((6-Row(A1))*(6-Col(A1))^2)^(1/3)),,"*")
あとは、減量です。負数の平方根はエラーになりますから、absを付けましたが、負数の立方根は存在するので、absは外せる (^^)(^^)、そう思って作った
=If(Fp(((6-Row(A1))*(6-Col(A1))^2)^(1/3)),,"*")
は、しかし、なぜかエラーになってしまうのです。(-_-;)(-_-;)
調べてみると、三四郎では、負数の立方根を求めると、エラーになっちゃうんですね。(-_-;)(-_-;) Excelでは、もちろんOKですから、これはバグでしょう・・・(;_;)(;_;)
で、縮められたのは、absを^2にすることで1文字だけ。
=If(Fp(((6-Row(A1))*(6-Col(A1))^2)^2^(1/3)),,"*")
このよけいな、「^2」を除けばとても綺麗な式で、数値も試行錯誤の必要がないもので、非常に気に入り、これで満足してしまいました。
しかし、答え合わせ後、minmaxさんの手法を頂くと、さらに2文字減らせることが分かりました。
=If(Fp(((6-Row(A1))^4*(6-Col(A1))^6)^0.1),,"*")
=If(Fp(((6-Row(A1))*(6-Col(A1))^4)^2^0.2),,"*")
特に後者は、負数の立方根が求められるのであれば(三四郎のバグがなければ)、45文字になって、きっちーさんの三角関数46文字を抜けたので、ますます、三四郎のバグが情けない・・・(^^;)(^^;)
この、三四郎49ができて、もう、縮められないと判断して、着手したのが、三角関数版です。
くまぷーさんから、変化球宣言が出ていましたが、Excelはできたけど、三四郎は短くならない、というコメントが出たので、くまぷーさんは、三角関数じゃないだろうな、と思いましたが、きっちーさんは、
多分三角関数だろう、と思いました。
そこで、今回初めて、三角関数に挑戦しました。Atan2の存在を知らなかったので、AtanやAngleで、中心がエラーになるのに悩みましたが、Atan2を見つけてからは、結構簡単でした。できたのは、
=If(Len(Atan2(Row(A1)-6,Col(A1)-6)/Pi())<6,"*")
など、三四郎47三種類。
エンジン部分は同じで、その記号化の手法が違いますが、三四郎の場合、文字数は変わらないことがほとんどのようですね。
その後、きっちーさんの三四郎46宣言を受けて、sinやcosも試したのですが、0<>0が5=5になる、というのには、全く気付かず、完敗でした。(^^)ゞ
でも、悪児的には、三四郎49
=If(Fp(((6-Row(A1))*(6-Col(A1))^2)^2^(1/3)),,"*")
が、今でも、一番気に入っています。(^^)(^^)
最近のコメント