「田」に触発されて思いついた「中」ですが、思いついた当初は、当然、「田」より断然難しそうに思えました。
縦3本と横2本を書くのは簡単ですが、その縦3本のうち、両側の2本だけ、上下をカットして、真ん中はそのまま残す。それが難しそうに思えたわけです。
まず浮かんだのが、「円」でした。消さねばならない四隅の「A1:A3」は、すべて、F6を中心としてA4を通る円の外側にあり、表示しなければならない「中」は円の内側にありますから、縦3本横2本を書いて、円の外側を消すというものでした。
三四郎69
=If(Fp(Row(A1)/4)*Fp(Col(E1)/5)+(SumSq(6-Row(A1),6-Col(A1))>30),,"*")
Excel75
=IF(MOD(ROW(),4)*(MOD(COLUMN(E1),5))+(SUMSQ(6-ROW(),6-COLUMN())>30),"","*")
もちろん、思いついた当時はまだSUMSQを見つけていませんでしたから、もっと文字数は多かったのですが。(^^)ベ
しかし、その後直ぐに、思いつきました。正方形が書けるなら、長方形も書けるだろう、ということです。「中」の長方形部分は、縦棒がF6から5の距離。横棒がF6から2の距離ですから、横棒の方の距離を2.5倍してやれば、F6から5の距離の正方形と同じように描くことができます。それが、これですね。
三四郎
=If(Max(Abs((6-Row(A1))*2.5),Abs(6-Col(A1)))=5,"*")
Excel
=IF(MAX(ABS((6-ROW())*2.5),ABS(6-COLUMN()))=5,"*","")
というわけで、「長方形を書く」というのがこの問題のテーマになりました。真ん中の縦棒は、「おまけ」というか、むしろ「長方形」を隠すための「フェイント」みたいなものになりました。これまで含めて1段階で書ければもっと文字数を減らせると思いますが、それはちょっと無理なようです。で、あとは無駄を省いて、
三四郎56
=If(Max(Rows(A1:A$6)*2,Cols(A1:$F1))=6 OR Col(A1)=6,"*")
Excel59
'=LEFT("*",(MAX(ROWS(1:$6)*2,COLUMNS(A:$F))=6)+(COLUMN()=6))
=LEFT("*",OR(MAX(ROWS(1:$6)*2,COLUMNS(A:$F))=6,COLUMN()=6))
になりました。
---------------------
と、以上の文を書いたのは、9日(金)のお昼過ぎでした。
その時点では、三四郎は悪児の56文字(きっちーさんも56文字)、
Excelは悪児とminmaxさんの59文字が最短でした。
ところが、その後、思いもかけなかった展開に・・・(続く)
--------------------------
悪児さんの道のりが見えてすごく楽しいです。
続きも楽しみにしてまーす。
投稿情報: minmax | 2007/11/11 23:21
続きをよろぴく。(^。^)
投稿情報: くまぷー | 2007/11/12 05:53