問題はこちらを参照。
***********************************************************************************************
カリフォルニア・ポピー【出題者きっちーさんの解答】(三四郎)
この問題は元図形のリアル版を簡略化したものです。
今回の問題は難しそうですが、特に変わったことをしなくても作成出来ると思いました。
対称図形では、アプローチの方法がたくさんあって、楽しめたのではないでしょうか。(^^)
斜線を個別に8本引く。(初級?)
ボックスを2つ作り重ねる。
=If(Max(Abs(Col(A1)+Row(A1)-12)+2,Abs(Col(A1)-Row(A1))-2)=5 OR Max(Abs(Col(A1)+Row(A1)-12)-2,Abs(Col(A1)-Row(A1))+2)=5,"●")
4本斜線を作り逆向きと重ねる。
=If(Max(((Col(A1)+Row(A1)-12) MOD 4)^2,((Col(A1)-Row(A1)) MOD 4)^2)=9,"●")
演算で一気に作る(中級?)
=If(Fp(((Col(A1)-Row(A1))^2+1)*((Col(A1)+Row(A1)-12)^2+1)/20),,"●")
格子を作り余計なところを消す。
(断念しました)
今回は都合により回答側に回ることが出来なかったことをお詫びします。m(_ _)m
***********************************************************************************************
【´・ω・`】:きっちーさん、お忙しい中をありがとうございました。
参考までに文字数を数えたところ、
★斜線を個別に8本引く・・・123文字
★4本斜線を作り逆向きと重ねる・・・74文字
★演算で一気に作る・・・67文字でした。
************************************************************************************************
【´・ω・`】:きっちーさんがExcelの回答を出していないので
このスペースをお借りして・・・・
=LEFT("●",OR(ABS(COLUMN()+ROW()*{-1,1}-{0,12})={2;7}))
(54文字)
苦労しました。これができたのが締切約1時間前です。(^^ゞ
53 文字ですが、、
くまぷーさんとそっくりです。
きっと、sakudaさんと、同じかな??
=LEFT("*",OR(ABS(6-ROW()+(6-COLUMN())*{1,-1})={3;7}))
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 08時33分
数でかなわないから早さで勝負と思っていたが、これも出遅れた。
私は最終的に Excel 58 でした。
=LEFT("*",OR(2^ROWS(1:$6)+2^COLUMNS(A:$F)=6*{2,3,6,8,12}))
ジョー3さんのは、絶対思いつきませんでした。 {3;7} って使い方知りませんでした。これから勉強して利用させていただきます。
ところで、くまぷーさんの式でうまく表示されますか?
投稿情報: sako | 2007年11 月24日 (土曜日) 午後 08時49分
・・のは、絶対思いつきませんでした。 {3;7} って・・・
わたしも、ここの皆さんのを見て、
まねたやつです。ここや、
あそこで(EW)色々、目に出来て楽しいです。。
きっちーさんが、仰っているように、、
色々な物見見えて、面白い問題でした。
画像で、、4種類↓
http://image.blog.livedoor.jp/jyo33/imgs/c/2/c248d595.JPG
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 09時01分
知りませんでした
ORでは=の両側で配列使えるんですね
今日は携帯からしか見られないので検証は出来ませんが
すごく勉強になります
投稿情報: minmax | 2007年11 月24日 (土曜日) 午後 09時02分
> くまぷーさんの式でうまく表示されますか?
きっと、、最後が、{3;7}かな、、
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 09時04分
>ところで、くまぷーさんの式でうまく表示されますか?
あ、すみません。
=LEFT("●",OR(ABS(COLUMN()+ROW()*{-1,1}-{0,12})={3;7}))
の間違いです。
訂正します。
投稿情報: くまぷー | 2007年11 月24日 (土曜日) 午後 09時04分
ジョー3さんの53文字は
カッコいいなぁ~~~!
私は61文字
=REPT("●",OR((7-(COLUMN()-6)^2)*((ROW()-6)^2-7)={54,14,-18}))
でした。
投稿情報: えくせるバカ | 2007年11 月24日 (土曜日) 午後 09時18分
携帯からなのでうまくいくかなあー
とりあえず一種だけ
=LEFT("*",COUNT(FIND({3,7},ROW()+COLUMN()-12&ROW()-COLUMN())))
62文字
文字数ではとてもかないませんが、実務でも式の前半部分使えそうなので気に入ってます
三四郎では(あってるかなー?)
=If(Row(A1)+Col(A1)-12 & Row(A1)-Col(A1) MATCH "(3|7)","*")
チョンボしてなければ59文字
投稿情報: minmax | 2007年11 月24日 (土曜日) 午後 09時24分
皆さんの発想には、驚きますね。
特に、ジョー3さんの式は素晴らしいです!!
今回も、まったく思いつきませんでした。
投稿情報: かず | 2007年11 月24日 (土曜日) 午後 09時29分
今帰ってきませいた。
とりあえず、何も見ずに、朝用意しておいた解答を投稿します。
その後、既出の解答をゆっくり拝見しまーーす^^
Excel53です。
=LEFT("*",OR(ABS(ROW()+{1;-1}*(COLUMN()-6)-6)={3,7}))
実はこれ、最初に60を切ったExcel54と同じものです。
=LEFT("*",OR(ABS(ROW()+{1;-1}*COLUMN()-{12;0})={3,7}))
つまり、R+C-12 と R-C-0 の0、12のスイッチをどう表現するかで1文字の違いがでました。
これはもろに正攻法で R+C=5,9,15,19 と R-C=-7,-3,3,7 の線八本を引くというもので、
R+Cから12を引くことにより、条件を-7,-3,3,7一つにまとめています。
最初に出来た、Excel68↓の発展形です
=LEFT("*",OR(ROW()+COLUMN()={5,9,15,19},ROW()-COLUMN()={-7,-3,3,7}))
この他に考えたのは4分割方式の次の二つです。
Excel57
=LEFT("*",OR(ROWS(1:$6)+{-1;1}*COLUMNS(A:$F)={-3,3;5,9}))
Excel60
=LEFT("*",OR(ROWS(1:$6)^2+COLUMNS(A:$F)^2={13,17,29,41,45}))
これが、水曜日の段階でExcel61(最終的に上記57)、Excel60 と言っていたもので、
こちらはここが行き止まりでした。
#元々配列数式は苦手で、配列定数も実用にはほとんど使った記憶がないくらい
#ですので、行と列の配列定数の組み合わせで、こう言う動きをするというのは
#知りませんでした。
#えくせるバカさんが先頭走者にならなかったのがちょっと不思議^^
投稿情報: y sakuda | 2007年11 月24日 (土曜日) 午後 09時33分
やっぱりジョー3の53は私のと同じでした。
くまぷーさんの54は私の最初に60アンダーの54と同じです^^
これからそれ以外のパターン解析しまーーす。
投稿情報: y sakuda | 2007年11 月24日 (土曜日) 午後 09時40分
>やっぱりジョー3の53は私のと同じでした。
やっぱりねーーー、、私も、そんな予感がしました。
60台から、
1個、とか、5個とか、・・・減量パターンが、似てましたからねーーー、、
61では、、同じ路線と思いませんでしたが、
53になって、・・・その後、sakudaさんが、、53になって、、、
これはーーー、とおもいました、、
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 09時57分
sakudaさんと、同じ思考の流れのようです。
私のブログに記録です。
http://blog.livedoor.jp/jyo33/archives/51228155.html#comments
でも、2日ぐらい、、飲んだ分、、遅れましたけど、、
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 10時06分
ジョー3のブログ見てきました。
最初に直線八本で作った時いきなり70を切っていたとこ以外はほとんど同じ経過です。
ただし、私は68を一字減らしたとこでお蔵入りにして、他の方法を探ってました。
解答前のコメントでジョー3が「余計な関数を使っていて」という発言をされてましたので、多分ABSを無駄にいれているんだと思いましたので、ほぼ同じことをやってらっしゃると見当をつけました^^
くまぷーさんの54ってのが私の54と全く同じなのにもびっくり^^
えくせるバカさん、sakoさん、minimaxさんのは私の60と同じでRowとColumnの組み合わせで小さな四角が固有の値を取るところを探している発想は同じなんですが、式の組み立てにいろんなパターンがあって面白かったです。
きっちーさんの計算バージョンと悪児さんの黒魔術は上手く行っている事はわかるのですが、両方ともどこから出てきた発想かさっぱり分からん・・・・・・
いずれにしろ、この問題、線がきれいでとっても面白かったな^^
投稿情報: y sakuda | 2007年11 月24日 (土曜日) 午後 10時19分
今回は、sakudaさんが、最初から(途中から?)、最後まで、トップを走って、、凄かったですね、、
最後に並べて、、良かったです。
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 10時33分
ははは、発想はジョー3さん、sakudaさんと
同じでしたが54から53の一字分詰められませんでした。(^^ゞ
今更ですが、三四郎74です。
=If(Abs(Row(A1)-Col(A1)) IN {3,7} OR Abs(Row(A1)+Col(A1)-12) IN {3,7},"*")
これも式はきれいにまとまっていると思うので
これはこれで満足です。(^。^)
投稿情報: くまぷー | 2007年11 月24日 (土曜日) 午後 10時34分
>54から53の一字分詰められませんでした。(^^ゞ
あはは、、、そうなんだよねーーー
52を、、なんとか、、って、おもったが、、、
54ばかり、、7種類ぐらい、、、出来ちゃった。
でも、きっと、いつものパターンで、
ここをこうすれば、、
52
51
50
って、どなたかが、発言しそうだなーーー
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 10時41分
minmaxさんの三四郎版・・・
>=If(Row(A1)+Col(A1)-12 & Row(A1)-Col(A1) MATCH "(3|7)","*")
さりげなく提示されているけど
とても試用版を使っている人が
作った式には思えません。(゜ペ;)ウーン
投稿情報: くまぷー | 2007年11 月24日 (土曜日) 午後 10時42分
>最後に並べて、、良かったです。
というより、最後に抜かれちゃった^^;
一番とんでもない人⇒それはジョー3です
投稿情報: y sakuda | 2007年11 月24日 (土曜日) 午後 11時01分
三四郎の身に余るおほめの言葉光栄です。
でも使えこなせません。
三四郎も面白かったけど初めて使ったcountとfindの組み合わせも面白かったです。
投稿情報: minmax | 2007年11 月24日 (土曜日) 午後 11時06分
>初めて使ったcountとfindの組み合わせも面白かったです。
飲んでないときに見ないと、、、
???な、、不思議な式ですねぇーーー
で、もう、、焼酎で、、、・・・すんません、、
投稿情報: ジョー3 | 2007年11 月24日 (土曜日) 午後 11時10分
Excel54 全く、同じですね。
=LEFT("*",OR(ABS(ROW()+COLUMN()*{1;-1}-{12;0})={7,3}))
ちょっとあがいたもの。(^^;)(^^;)
Excel54
=LEFT("*",OR((ROW()+COLUMN()*{1;-1}-{12;0})^2={49,9}))
まぁ、これは、三四郎では、思いつきません。(^^;)(^^;)
一方、こちらは黒魔術。(^^)(^^)
誰も思いつかないだろう、と思っていました。
三四郎55
=Mid("** *",(Rows(A1:A$6)+3)*(Cols(A1:$F1)+3) MOD 13,1)
Excel55
=MID("** *",MOD((ROWS(1:$6)+3)*(COLUMNS(A:$F)+3),13),1)
まぁ、発想的には、
y sakuda さんのExcelの発展形ですね。(^_^)(^_^)/~
投稿情報: 悪児 | 2007年11 月24日 (土曜日) 午後 11時32分
>=LEFT("*",OR((ROW()+COLUMN()*{1;-1}-{12;0})^2={49,9}))
これ私もやりました。
結局49が二桁になるんで変わらず、がっかりしました^^
投稿情報: y sakuda | 2007年11 月24日 (土曜日) 午後 11時38分
>y sakuda さんのExcelの発展形ですね。(^_^)(^_^)/~
Excel60 でした。(^^)ゞ
投稿情報: 悪児 | 2007年11 月24日 (土曜日) 午後 11時42分
>>最後に並べて、、良かったです。
>というより、最後に抜かれちゃった^^;
>一番とんでもない人⇒それはジョー3です
夕べですけど、、
61で、諦め、、・・・寝ようかと思ったら、
60の声、・・・で、わたしも、60
飲んでたのに、58・・・
偶然、absが、1っこ邪魔に見えて、
消したけど、、、えーーー、、動いたんです。
(だから、偶然で、、意図した、・・・ものでなかった)
投稿情報: ジョー3 | 2007年11 月25日 (日曜日) 午前 12時03分
>飲んでたのに、58・・・
ムキになって考えていてもアイデアでないです。
>偶然、absが、1っこ邪魔に見えて、
あははっ、こういうのも時々ある^^
投稿情報: y sakuda | 2007年11 月25日 (日曜日) 午後 12時01分
>いずれにしろ、この問題、線がきれいでとっても面白かったな^^ ×2
きっちーさん、音無しいけど
まだ忙しいのかな?
投稿情報: くまぷー | 2007年11 月25日 (日曜日) 午後 01時50分
イヤーほんとに勉強になります。
配列の使い方非常に勉強になりました。
こういう使い方以前どこかで見たかもしれないのですが知識の範囲外でした。
やっぱり奥が深いですね。
知らないということは、これから成長が可能ということですよね。
見ても楽しいし、参加しても楽しい。
ほんとにここはいいところですね。
見ているだけの方、参加しても楽しいですよ。
投稿情報: minmax | 2007年11 月25日 (日曜日) 午後 09時42分
>(だから、偶然で、、意図した、・・・ものでなかった)
私のはほとんど、作っては投げの繰り返しで。
(今日も)やっぱり忙しいのは疲れますな。 (~。~)ゞ
>=If(Row(A1)+Col(A1)-12 & Row(A1)-Col(A1) MATCH "(3|7)","*")
やっぱり、3,7だよなー。
でも、MATCH使うと勝てないんだよね。(黒魔術に。)
頭(体)使ったみなさん、お疲れ様でした。(^^)
投稿情報: きっちー | 2007年11 月25日 (日曜日) 午後 11時53分
>MATCH使うと勝てないんだよね。(黒魔術に。)
RCを1組にしないと、50台は難しいですからね。
今回は、珍しく、
三四郎が圧倒的に不利な問題で、
それを、きっちーさんが出した、
というところが面白かった。(^^)(^^)
投稿情報: 悪児 | 2007年11 月26日 (月曜日) 午後 02時11分
>三四郎が圧倒的に不利な問題で、
では今度はその逆と行きましょうか?!(^。^)
投稿情報: くまぷー | 2007年11 月26日 (月曜日) 午後 03時22分
・・・ていうか(^^)(^^)
minmaxさんの数式の調整をしました。
53に迫る、三四郎54文字。
下1桁の検査と、MATCH演算子の値の最適化。
=If(Row(A1)+Col(A1) & Col(M1)-Row(A1) MATCH "5|9","●")
縮まる可能性がないこともないかな。(^^)
投稿情報: きっちー | 2007年11 月26日 (月曜日) 午後 04時00分