問題はこちらを参照。
(●`ε´●):おれもやってみたよ。田の字を作るためには1行目、6行目、11行目、
1列目、6列目、11列目にアスタリスクを表示すればいいわけだから・・・
=If((Col(A1)-1)*(Row(A1)-1)*(Col(A1)-6)*(Row(A1)-6)*(Col(A1)-11)*(Row(A1)-11),"","*")
・・・これで85文字だ。どうだい?
【´・ω・`】:正解だ。きっちりと下でした講習を理解している。バッチリだよ!!
(●`ε´●):この式をもう少し減量するにはどうしたらいい?
【´・ω・`】:そうだな・・・。IN と 配列を使って下のようにしてもいい。
=If(Col(A1) IN {1,6,11} OR Row(A1) IN {1,6,11},"*","")
これで54文字だ。さらに減量するには三四郎ではIF文の引数を省略できるので
偽の場合の引数を省略すれば・・・
=If(Col(A1) IN {1,6,11} OR Row(A1) IN {1,6,11},"*")
・・・となる。これで51文字だ。
(●`ε´●):そう言えばこのことは悪児さんのコメントにあったな。
さて、くまぷー。おまえの回答を見せてもらおうか?
*
【´・ω・`】:Excelでは37文字が最短のようだが、出題時には気がつかず
41文字が最短だと思っていた。下の図を見てくれ。基礎講習の
基本数式の作り方(3)でつかったもの同じ図だ。
*
*
*
*
*
*
*
(●`ε´●):十字架でつかったものだな。
【´・ω・`】:うん、田の字はこの十字に、周囲に口の字を加えたものだ。
十字の所の数字は全て0,そして周囲は0,5,10,15,20,25,-5,-10,
-15,-20,-25だ。
(●`ε´●):お、わかったぞ。5の倍数と0のセルにアスタリスクを表示させればいいんだ!!
つまり・・・
=IF(OR((ROW()-6)*(COLUMN()-6)*MOD((ROW()-6)*(COLUMN()-6),5)),"","*")
・・・これで68字。どうだ?!
【´・ω・`】:甘いな。0は5の倍数だから、別に考える必要はないよ。
従って・・・
=IF(MOD((ROW()-6)*(COLUMN()-6),5),"","*")
これで41文字だ。
(●`ε´●):なるほど。
【´・ω・`】:というような筋書きを当初は考えていました。しかし、悪児さん、きっちーさんの
より短い37文字の手が・・・というコメントからようやく、37文字の手を見つけました。
しかし、37文字の回答は独力では絶対に見つからなかったと思います。
ですから、37文字の回答発表は悪児さんかきっちーさんにお願いしようと
思います。よろぴく。
(●`ε´●):とか何とか言って、37文字の回答が見つからなかったんじゃないのか?
【´・ω・`】:うーん、じゃあ、そう思われるのも癪だから、38文字の回答をUPしておこう。
この式には、37文字版の核となるものと同じものが、使われている。
見る人が見ればわかるはずだ。
=LEFT("*",LEN(ROW(E5)*COLUMN(E5)/5)<3)
*
*
*
【´・ω・`】:それでは次に三四郎を。三四郎では31文字が最短となるようだが
こちらは2通りつくることができた。悪児さんはどうやらModを
使っているようなので使わない手を紹介しよう。A1に・・・・
=If(Fp(Row(E5)*Col(E5)/5),,"*")
これで31文字だ。
(●`ε´●):おい、よくわからないぞ!解説しろ!
【´・ω・`】:OK。何をやっているかは、条件式の内側から見ていけば一目瞭然だ。
まず、一番内側のRow(E5)*Col(E5)から・・・A1に=Row(E5)*Col(E5)と
入力しK11までコピペしたのが下図だ。
*
*
*
*
*
*
*
(●`ε´●):なんだこの数字は?!
【´・ω・`】:気づかないかい?では田の字の部分に色をつけてみようか。
*
*
*
*
*
*
*
(●`ε´●):おおおおお、田の字部分は5の倍数か!!
【´・ω・`】:そう。だから次に5でわると・・・
(下は=Row(E5)*Col(E5)/5)
*
*
*
*
*
*
(●`ε´●):田の字の部分だけが整数になるわけか。
【´・ω・`】:うん。ここで三四郎特有のFp関数を使う。
(●`ε´●):何だ、それは?
【´・ω・`】:Fp関数は数値の小数部をとりだす。
従って・・・
=Fp(Row(E5)*Col(E5)/5)
・・・をコピペすると・・・
*
*
*
*
*
*
*
(●`ε´●):なるほど、田の字の部分が0となるわけか。
【´・ω・`】:そう。で、IF文の条件式では0は偽を示すので
=If(Fp(Row(E5)*Col(E5)/5),,"*")
とすればよい。
(●`ε´●):わかったよ。おもしろいな。
【´・ω・`】:さて、みなさんの回答は如何に?答が見つからなかった人も
気楽にコメントしてくれるとうれしいです。(^。^)
それでは、みなさん、ぼちぼち感想戦をはじめましょうか。
最近のコメント