問題はこちらを参照。
【´・ω・`】:以下、sakudaさんからです。
***************************************************************************************************
皇帝【出題者解答】
今回の回転対称形については、単にカッコイイというだけで出題しただけで、私自身確たる成算が
あったわけではありません。
ただ、イメージとして、第F列と第6行で4分割した場合、(Row()-6)*(Column()-6)の符号が右上と
左下でマイナスになるのを利用すればどうにかなるはずということだけでした。
つまりRowとColumn一組を位置の特定に使用し、後一組で図を描くという考え方です。
最初にやってみたところ、↓のような108文字の長大なものになってしまいました。
=LEFT("●",IF((ROW()-6)*(COLUMN()-6)>=0,OR((COLUMN()-6)^2<=(ROW()-6)^2,ROW()=6),(COLUMN()-6)^2>=(ROW()-6)^2))
この路線を突き詰めた終着点は
=LEFT("●",SIGN((ROW()-6)*(COLUMN()-6))*(COLUMNS(A:$F)/ROWS(1:$6)-1)<=0)
で71文字です。
次にColumnとRow一組で何とかするということを考えると、
(Column()-6)/(Row()-6) の値と符号を利用せざるを得ません。
これで出来たのが↓の63文字です。
=LEFT("●",IF(ROW()=6,1,MOD(((COLUMN()-6)/(ROW()-6))^0.2,2)<=1))
この味噌は -2~0 の数を2で剰余を取ると 2-X つ
まり補数になり、かつ符号が逆転してくれる性質を
利用してます。(ほとんど偶然気が付きました)
これで、ユニオンジャックの時に使用した、エラーを積極的に
利用する手法と組み合わせて59文字にできました。
=LEFT("●",ISERR(0/(MOD(((COLUMN()-6)/(ROW()-6))^0.2,2)>1)))
これで、私の進歩は全くとまってしまったのですが、くまぷーさんの
女王様のヒントから、きっちーさんのATAN2をパクリ50文字を実現しました。
しかし、ExcelではATAN2(0,0) がどうしてもエラーになってしまうため、
無理やりになってしまい、ちょっとどうかなと言う感じになります。
(ISERRを使えば58文字でできましたが)
#Excel50は多分きっちーさん、くまぷーさんと同じだと思います。
***********************************************************************************
【´・ω・`】:おいら、Excel50は作っていないんです。(^^ゞ
・・・で、また飲み会で今頃(8:00)は駅前の笑笑で飲んだくれているので
(先週もですが・・・)、sakudaさんのスペースをお借りして・・・
Excel72文字
=LEFT("*",(ROW()-COLUMN())*(ROW()+COLUMN()-12)*(6-ROW())*(COLUMN()-6)<1)
三四郎73文字
=If((Col(A1)-Row(A1))*(Col(A1)+Row(A1)-12)*(Col(A1)-6)*(Row(A1)-6)<1,"*")
・・・どちらも同じ発想です。見やすいところが自慢かな(^^ゞ
さて、その発想ですが、「皇帝」は塗りつぶしがなければ、
「女王陛下の旗」になります。
上式は、「女王陛下の旗」で使ったmode関数の引数を
そのままかけ合わせただけです。
・・・で、それなら「女王陛下の旗」に他に使える式はないかと見てみたところ
きっちーさんの式を見つけてしまったというわけです。
自分で注意書きに・・・「式の内容が分かるような表現は、
答え合わせ(土曜20時)まで、ご遠慮下さい。」と書いておきながら
不用意な発言をしてしまったことを深くお詫び申し上げます。
くまぷー
最近のコメント