問題はこちらを参照。
【´・ω・`】:以下、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時)まで、ご遠慮下さい。」と書いておきながら
不用意な発言をしてしまったことを深くお詫び申し上げます。
くまぷー
最初の考えは
=IF((COLUMNS(B:$F)/ROWS($6:16)-1)*SIGN(ROW()-6)*SIGN(COLUMN()-6)<=0,"*","")
でした。y sakudaさんと同じ考えですが、SIGN((ROW()-6)*(COLUMN()-6))に気づく前にヒントが・・・・。
で、結局
=LEFT("*",SIN(ATAN2(COLUMN()-6,ROW()-6.01)*4)<0.4)
とパクリを使ってしまいました。
投稿情報: sako | 2007年11 月17日 (土曜日) 午後 08時48分
わーーー
今回は、、難しかったです。
&
結婚式の、、、疲れで、頭が、にぶちゃんでした。
投稿情報: ジョー3 | 2007年11 月17日 (土曜日) 午後 08時51分
sin tan atan ・・・・忘れてるなーーー
学校時代・・・
中央から、(f6)45度ずつ、、4回
って、思ったけど、技術がなかった。惨敗だ。
sakudaさん、参りましたです。
投稿情報: ジョー3 | 2007年11 月17日 (土曜日) 午後 08時55分
飲み中。
三四郎 46文字。
=if(Sin(Atan2(Col(A1)-6,Row(A1)-6)*4)36))<0.l,"●")
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 09時03分
送信がくずれたのであとで。
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 09時05分
飲み中。
三四郎 46文字。
=if(Sin(Atan2(Col(A1)-6,Row(A1)-6)*4)<0.l,"●")
EXCEL 50文字。
=LEFT("●",SIN(ATAN2(COLUMN()-5.99,ROW()-6)*4)<0.1)
これでゆるぴて。。。
再計算あそび。
=if(Sin(Atan2(Col(A1)-6,Row(A1)-6)*4+Pi()/2*(Second(NowTime()) MOD 4)*(Row(A1)*Col(A1)<>36))<0.l,"●")
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 09時23分
最初64文字で
=REPT("●",((COLUMN()-6)^2-(ROW()-6)^2)*(COLUMN()-6)*(ROW()-6)<1)
次にきっちーさんの女王様より
=REPT("*",ISERR(LN(1-SIN(ATAN2(6-COLUMN(),6-ROW())*4)<1)))
58文字から進展せず。
sakoさんの-6.01には気づかなかった。
投稿情報: えくせるバカ | 2007年11 月17日 (土曜日) 午後 09時42分
今回は、きっちーさんの女王様の解答が、一粒で二回おいしいというのに全く気が付いておらず、結果的にはきっちーさんの圧勝ということでした^^;
くまぷーさんの72文字はオーソドックスですね。
悪児さんの69は一見私の71と同じなんで、どこが違うのかちょっとかんがえちゃいました。
Signの結果をべきに使うの全く思いつかなかった^^
悪児さんのATAN2のは、+8ってのがどこから出てきた発想か、まだ理解できてないです。
きっちーさんの再計算モデル試してみてますが、サッカー見ながらじゃ上手く翻訳できない^^;
投稿情報: y sakuda | 2007年11 月17日 (土曜日) 午後 09時46分
えくせるバカさんの64・・・・
最初に考えてもよさそうなシンプルさですね。
どうも、この問題に関しては、RowとColumnを自乗するっての初めから捨ててたみたいだな・・・・・・
投稿情報: y sakuda | 2007年11 月17日 (土曜日) 午後 09時54分
うわ~っ、今回もまったくお手上げでした。
なんとなく、ATAN2関数で何とかなるのかなぁ、と思ってたら時間切れでした。
ここんとこ、まったくだるまさんです。
それにしても、皆さんの発想には驚きますね!
投稿情報: かず | 2007年11 月17日 (土曜日) 午後 10時11分
再計算の数値ミス。
再計算あそび。
=if(Sin(Atan2(Col(A1)-6,Row(A1)-6)*4+Pi()/2*(Second(NowTime()) MOD 4)*(Row(A1)^Col(A1)<>46656)
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 10時15分
今回の問題は頭が混乱しました。
何となく三角関数が一番かなと思いましたが、三角関数は超苦手です。
(そのほかの関数が大得意というわけではありませんが)
とりあえずできたのが、90代、80代・・・。
このの時点でもう諦めムード
しばらくして女王様の力をお借りしてみようかなと思い、きっちーさんの式をお借りして最終的にはエクセル51・・・それも妙な式
6の代わりに6.01や5.99を使うことは思いつきませんでした。
とりあえず妙な式のエクセル51のみ公開します。
=LEFT("●",SIN(ATAN2(COLUMN()-6&1,ROW()-6&1)*4)<0.4)
投稿情報: minmax | 2007年11 月17日 (土曜日) 午後 10時21分
おお、&1なんて斬新だ。
飲み中。
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 10時35分
>おお、&1なんて斬新だ。×2
やっぱ、何かシデカスひとだなぁ~!
投稿情報: えくせるバカ | 2007年11 月17日 (土曜日) 午後 10時43分
だれか後ろの&1消してみて。
携帯からじゃためせないので。
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 10時46分
>おお、&1なんて斬新だ。
正攻法で行く能力がなかっただけです(●´・△・`)
投稿情報: minmax | 2007年11 月17日 (土曜日) 午後 10時49分
>だれか後ろの&1消してみて。
私もなんで両方なんだろうと思ってやってみたところです。
左上、右下の一部が白くなって後は真っ黒。
やはり、両方じゃないとダメでした^^
投稿情報: y sakuda | 2007年11 月17日 (土曜日) 午後 10時53分
>私もなんで両方なんだろうと思ってやってみたところです。
最初はまず両方に&1を付ける事を思いつきました。
その後片方でいけるなら49になると思い何度か試してみましたができませんでした。
やっぱ三角関数は微妙です。
投稿情報: minmax | 2007年11 月17日 (土曜日) 午後 11時11分
"51"とかになるわけか、なるほど。
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 11時24分
悪児の解答は、
こちらです。
http://akuji.justblog.jp/blog/2007/11/post_19c8.html
三四郎50&Excel56
三四郎81&Excel84
三四郎69&Excel69
です。
投稿情報: 悪児 | 2007年11 月17日 (土曜日) 午後 11時30分
黒魔術じゃないのかな・・・
投稿情報: きっちー | 2007年11 月17日 (土曜日) 午後 11時40分
>黒魔術じゃないのかな・・・
三四郎50&Excel56
は黒魔術だとオモフ・・・・
よーわからん>+8
投稿情報: y sakuda | 2007年11 月17日 (土曜日) 午後 11時59分
>+8
これは、演算誤差2桁だから。
1桁だと+4になります。
投稿情報: きっちー | 2007年11 月18日 (日曜日) 午前 12時30分
だよねぇ。
投稿情報: きっちー | 2007年11 月18日 (日曜日) 午前 12時34分
解説していただいても、まだ理由が納得いかない・・・・>+8
明日すっきりした頭で考えたら分かるかな・・・・
投稿情報: y sakuda | 2007年11 月18日 (日曜日) 午前 01時11分
内部演算は2進数です。
その誤差は4と8を2進数にしてくわえると有効桁をはじくことになります。
投稿情報: きっちー | 2007年11 月18日 (日曜日) 午前 01時46分
>悪児さんのATAN2のは、+8ってのがどこから出てきた発想か、まだ理解できてないです。
黒魔術ではありません。
ちゃんと計算で導いています。(^^)(^^)
くわしくは、後ほど、
悪児のブログで。(^^)ゞ
投稿情報: 悪児 | 2007年11 月18日 (日曜日) 午前 04時16分
>その誤差は4と8を2進数にしてくわえると有効桁をはじくことになります。
そうはなりません。
確かに大きな数字を足すことにより、有効桁数の範囲は変わりますが、
ビットパターンがシフトした結果、新たな打ち切り誤差を生むだけです。
特にこの場合1.57でModを取ってますから、4とか8を足したら当然答えは大きく違ってきます。
悪児さんの記事見て納得できるかな^^;
#納得できてもこう言うのを黒魔術というのでは・・・・
投稿情報: y sakuda | 2007年11 月18日 (日曜日) 午前 07時55分
「「皇帝」への道」
アップしました。
http://akuji.justblog.jp/blog/2007/11/post_4df9.html
投稿情報: 悪児 | 2007年11 月18日 (日曜日) 午後 01時39分
>「「皇帝」への道」
見てきました。1.57*5⇒8 はやっぱり黒魔術^^;
投稿情報: y sakuda | 2007年11 月18日 (日曜日) 午後 06時57分
説明していただくと、、ほほーーーー
であっても、、
ぱっとみでは、、、???、、、
???、、、むむむーーーー
だよね、、、
でまた、、2,3週間たつと、、、・・・・
・・・・・おれだけか??
投稿情報: ジョー3 | 2007年11 月18日 (日曜日) 午後 10時09分