7.切り捨てではなく、切り上げ。
0と1の間に仕切を入れるには、どうすればよいか?
DIVのやることは、切り捨てだけど、これを切り上げにすれば、0と1は区別される、
ということに気付くまで、ちょっとかかってしまった。で気付いて作ったのが、次の式。
=Mid(" * * * *",RoundUp(((Row(F6)-6)^4+(Col(F6)-6)^4)/96+1),1)
69文字。
これで、見事、70文字を切って、手裏剣が完成。\(^o^)/
(第3のハードルクリア(^^)(^^))
ここまで、約25分ほど。
ここで、70文字を切った、というコメントを出したのだった。(^^)(^^)
8.文字数の削減。
あとは、更なる文字数の削減。RoundUp()は普段多用しているけど、切り上げに使える別な関数があったはず・・・。そんな記憶があったので、調べて、Ceilを見つけ、交換して、66文字。切り捨ては、Ipというもっと短いのがあったので、96で割ったときに、商を切り捨てて、0は1にし、1は2にするには、96*2-1の191を加えておけばよい、ということで、Ip版を作ったが、これも66文字。では、DIVを使ったら、と試したが、こちらも、66文字。
Excelでも、66文字が最短だった。
三四郎の3種の中では、
=Mid(" * * * *",Ceil(((Row(F6)-6)^4+(Col(F6)-6)^4)/96+1),1)
が、一番綺麗かな?
また、見慣れない関数は使っていない、という点では、
=Mid(" * * * *",((Row(F6)-6)^4+(Col(F6)-6)^4+191) DIV 96,1)
が、ベストかも。(^^)(^^)
悪児さん、解説どうも有り難うございます。
解説を読んだ後でも、やはり
魔法のように思えます。(^^ゞ
投稿情報: くまぷー | 2007/10/01 16:03