問題はこちらを参照。
(●`ε´●):おれもやってみたよ。田の字を作るためには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),,"*")
とすればよい。
(●`ε´●):わかったよ。おもしろいな。
【´・ω・`】:さて、みなさんの回答は如何に?答が見つからなかった人も
気楽にコメントしてくれるとうれしいです。(^。^)
それでは、みなさん、ぼちぼち感想戦をはじめましょうか。
最初は適当に式を作っていたら
=IF((MOD(ABS(COLUMN()-6),5)*MOD(ABS(ROW()-6),5)),5)=0,"*","")
で61文字
待てよ、MODは一つで良いな。
と思って直したら
=IF((MOD(ABS(COLUMN()-6)*ABS(ROW()-6),5))=0,"*","")
で51文字
ABSなんて要らないし、判別式の=0も
要らないなと思って直して
=IF(MOD((COLUMN()-6)*(ROW()-6),5),"","*")
で41文字
この時点でくまぷーさんから「あとよろしく」
と言われて、これが答えなのかと思った。
コメントを見ていると41文字が答えの様で安堵していたら、悪児さんから40文字
を切った。 というコメントが、本当に黒魔術
じゃないかと思った。
しばらくご無沙汰して、金曜日にここを覗いたら
37文字になったというコメントが。。。
焦りましたね^^ しまった抜かれた^^
焦りまくって時間を見たら既に17:30
あと2時間半しかないじゃないか と
心臓がバクバクしました。
きっちーさんの謎の言葉をみても???
じゃぁ基本に返って行と列を分解して
E5を用いて式を作ったら、A1=25、K11=225
の表が出来て、あとはくまぷーさんの
回答と同じで37文字になりました。
=IF(MOD(COLUMN(E5)*ROW(E5),5),"","*")
ハラハラ、ドキドキ、楽しかったです。
投稿情報: ぷりたま | 2007年10 月13日 (土曜日) 午後 08時53分
結局Excel37文字版は多分皆さん同じみたいですね。
しかし、私は最初にまとめたのが、今までの延長で
=IF(MOD((ROW()-6)*(COLUMN()-6),5),"","*")
まてよ?今度は4分の1づつやってるわけじゃないし、5でMOD取るんだから・・・
=IF(MOD((ROW()-1)*(COLUMN()-1),5),"","*")
ここから先、Row等の引数を指定して字数を増やすなんて考えもせず、悩んでました。
最終的に引数を指定することは思いついたのですが、-1じゃ1行目、1列目がREFになっちゃう・・・・
MOD5だから-1⇒+4でも同じと悟るまでまた1時間・・・・・
自分の鈍さにはほとほと愛想がつきました^^;
投稿情報: y sakuda | 2007年10 月13日 (土曜日) 午後 09時02分
37
は、同じなので、
そして、
それまでの苦労も似てるので、
42だけど、お遊びです。
=LEFT("*",RIGHT(ROW(E5)*COLUMN(E5)*2)="0")
投稿情報: ジョー3 | 2007年10 月13日 (土曜日) 午後 09時30分
こてこての
=IF(OR(MOD(COLUMN(),5)*MOD(ROW(),5)=1),"*","")
46文字から減少しませんでした。
投稿情報: かず | 2007年10 月13日 (土曜日) 午後 09時36分
=IF(OR(MOD(COLUMN(),5)*MOD(ROW(),5)=1),"*","")
考え方が、わかりやすいです。
投稿情報: ジョー3 | 2007年10 月13日 (土曜日) 午後 09時41分
くまぷーさんずるいなぁ~
考えてたのを殆ど解答してる・・・。
似てるやつで
=REPT("*",LEN(COLUMN(E1)*ROW(A5)*2%)<4)
ところで、かずさん
> =IF(OR(MOD(COLUMN(),5)*MOD(ROW(),5)=1),"*","")
で、できますか?
私も同じようなのがあって
=REPT("*",OR(MOD(ROW(),5)=1,MOD(COLUMN(),5)=1))
とか
=REPT("*",OR(RIGHT(COLUMN(E5)*ROW(E5))*1={0,5}))
となりました。
投稿情報: えくせるバカ | 2007年10 月13日 (土曜日) 午後 10時21分
>ところで、かずさん
すみません。
=IF(OR(MOD(COLUMN(),5)=1,MOD(ROW(),5)=1),"*","")
の48文字でした。^^;
色々遊んでた数式を、そのまま勘違いしてしまいました。
う~ん、最近ポカが多い…
投稿情報: かず | 2007年10 月13日 (土曜日) 午後 10時47分
>色々遊んでた数式を、そのまま勘違いしてしまいました。
あはは、お名前で、信用しちゃった。
投稿情報: ジョー3 | 2007年10 月13日 (土曜日) 午後 10時57分
ぷりたまさん、どもです。
楽しんでいただけたようで
出題者冥利に尽きます。(^。^)
>、あとはくまぷーさんの
回答と同じで37文字になりました。
えっ、おいら、37文字の回答は
提示してはいませんけど・・・(^^ゞ
投稿情報: くまぷー | 2007年10 月13日 (土曜日) 午後 11時38分
sakudaさん、こんばんは。
おいらも・・・
=IF(MOD((ROW()-6)*(COLUMN()-6),5),"","*")
・・・が決定版だと思っていました。(^^ゞ
投稿情報: くまぷー | 2007年10 月13日 (土曜日) 午後 11時43分
ジョー3さん、こんばんは。
なるほど・・・
「*2」の発想が面白いです。
5の倍数であれば2倍すれば必ず末尾が0になる・・・
5の倍数でなければ2倍しても末尾が0になることは絶対にない・・・
思いつきませんでした。
投稿情報: くまぷー | 2007年10 月13日 (土曜日) 午後 11時54分
かずさん、こんばんは。
>=IF(OR(MOD(COLUMN(),5)=1,MOD(ROW(),5)=1),"*","")
は
くまぷーが決定版だと思っていた
=IF(MOD((ROW()-6)*(COLUMN()-6),5),"","*")
と基本的には同じですね(^-^)/
投稿情報: くまぷー | 2007年10 月13日 (土曜日) 午後 11時59分
えくせるバカさん、こんばんは。
0.02を2%として計算できることを初めて知りました。
φ(・_・)メモメモ
>くまぷーさんずるいなぁ~
>考えてたのを殆ど解答してる・・・。
すみません。次回から気をつけま~す。
(_ _ )/ハンセイ
でも、ほんとは遠慮して三角関数をちょっと
使ったやつをだしていないんだ・・・(-。-) ボソッ
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午前 12時06分
>でも、ほんとは遠慮して三角関数をちょっと
>使ったやつをだしていないんだ・・・(-。-) ボソッ
みなさん、大体出揃った様子なので
そろそろ出しても
いいんじゃないですか?
投稿情報: えくせるバカ | 2007年10 月14日 (日曜日) 午前 12時13分
さて、眠くなったから・・・おやすみーーー
k さんと
kir さんのを・・・
見たかったけど・・・・
あと、10分で寝るから、今日は、駄目かなーーー
投稿情報: ジョー3 | 2007年10 月14日 (日曜日) 午前 12時17分
Fpは、ちょっと浮かんだんだけど、
詰めませんでした。(^^)ゞ
次からは、頂戴します。(^^)(^^)
投稿情報: 悪児 | 2007年10 月14日 (日曜日) 午前 04時04分
お早うございます。
>>でも、ほんとは遠慮して三角関数をちょっと
>>使ったやつをだしていないんだ・・・(-。-) ボソッ
>みなさん、大体出揃った様子なので
>そろそろ出しても
>いいんじゃないですか?
それでは・・・
=LEFT("*",TRUNC(COS(MOD((ROW()-6)*(COLUMN()-6),5))))
・・・偽を真に変換するのにCOS0が1になることを利用しています。
「それなら素直にNotを使えよ!」というツッコミは厳禁!!(^^ゞ
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午前 07時27分
>k さんと
>kir さんのを・・・
>見たかったけど・・・・ ×2
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午前 07時29分
>Fpは、ちょっと浮かんだんだけど、
>詰めませんでした。(^^)ゞ
>次からは、頂戴します。(^^)(^^)
悪児さんにそういわれるとうれぴこです。(^。^)
ところで、Excelには三四郎のFpにあたる関数がないんですよね。
だから、同じ事をExcelでやろうとすると長くなってしまう・・・
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午前 07時31分
おはようございます。
42文字=IF(MOD(LCM(ROW()+4,COLUMN()+4),5),"","*")
変わった方法は、A1:E5を選択して、書式設定を"*";;
数式は={1,0,0,0}+{1;0;0;0}と入力し、Ctrl+Shift+Enterで確定
→{={1,0,0,0,0}+{1;0;0;0;0}}で26文字
これの範囲をK列までドラッグし、その後11行までドラッグ
投稿情報: kir | 2007年10 月14日 (日曜日) 午前 09時38分
lcm・・・・最小公倍数???
ほ~~~
もう一つも、難しい・・・
投稿情報: ジョー3 | 2007年10 月14日 (日曜日) 午後 12時16分
Kirさんのとジョー3さんのを基にしてつくりました・・・(^^ゞ
=MID("*",RIGHT(LCM(ROW(E5),COLUMN(E5),2)+1),1)
最小公倍数の引数に2を加えることによって・・・1の位は常に0。
これをRightで取り出す。しかしこのままでは文字の0なので
+1することにより、数値化 & 0が1「になり偽が真になる・・・一席2鳥。
ところでKirさん、田の字はA1からK11までに
描くのですが、提示されたやりかたで
できるのでしょうか。(^^ゞ
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午後 01時16分
あ、上で・・・
>ところでKirさん、田の字はA1からK11までに・・・
というのは配列数式の方です。(^^ゞ
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午後 01時17分
>提示されたやりかたで
きっとね、{1,0,0,0} は 1っこ不足だと思います。
うっかりですね、・・・ {1,0,0,0,0}
投稿情報: ジョー3 | 2007年10 月14日 (日曜日) 午後 01時43分
解答とコメント見たら、考えたのと同じでした。(modもfpも解説しちゃったのね)
ちょっと遊びの”田~園” (^^)ゞ
=If(Fp(Col(E5)*Row(E5)/5),,"園")
33文字GCDバージョン。
=If(Gcd(Row(E5)*Col(E5),5)=5,"園")
投稿情報: きっちー | 2007年10 月14日 (日曜日) 午後 04時06分
私は今回、配列式が思い浮かばなかったのですが、
Kirさんが見事にやって下さいましたね!凄い。
このKirさんの方法を使って
書式など使わずにまともにやると
A1:E5に
=CHAR(-{0,2,2,2,2}*{0;5;5;5;5}+42)
を入力してCtrl+Shift+Entarしてコピペ
36文字で出来ました。
投稿情報: えくせるバカ | 2007年10 月14日 (日曜日) 午後 05時52分
>36文字で出来ました。
おーーーー
kirさんも、
えくせるバカ さんも、
勉強熱心だから・・・・
すごいことだ、
解説、いかがですか??
投稿情報: ジョー3 | 2007年10 月14日 (日曜日) 午後 06時40分
>このKirさんの方法を使って書式など使わずにまともにやると
配列数式の鬼だな^^;
私は配列数式は丸で駄目みたいなもんなんですが、ちょっと教えてください。
配列数式入れた後のドラッグってのは知らなかったんですが、確かに上手く行くのですが、納得行かない。
どういう意味になるんですかね?
(全体に対して配列数式入れるのとは違うと言うところです)
投稿情報: y sakuda | 2007年10 月14日 (日曜日) 午後 06時54分
みなさん、どうも(^。^)
おいらも真似して配列数式で作りました。
=LEFT("*",{1,0,0,0,0}+{1;0;0;0;0})
これで34文字。
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午後 07時59分
ただの猿まねです。ごみんm(__)m
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午後 08時22分
配列数式ドラッグすると繰り返しになるんですね。
実験してみて納得。
知らないことがいっぱいあるなーー^^;
投稿情報: y sakuda | 2007年10 月14日 (日曜日) 午後 09時13分
>配列数式ドラッグすると繰り返しになるんですね。
そうなんだ~。
知らなかった。(^^ゞ
配列数式はどうもよくわからん・・・(-_-;)
投稿情報: くまぷー | 2007年10 月14日 (日曜日) 午後 10時24分
仕事してて遅くなりました
>解説、いかがですか??
私のやつは
{0, 0, 0, 0, 0;
...0,10,10,10,10;
...0,10,10,10,10;
...0,10,10,10,10;
...0,10,10,10,10}
となる2次元の配列
(この場合5×5のマスと考えてください)
にマイナスを掛けて42を加えると・・・
0(ゼロ)が42で10が32となり、
これをCHAR関数の引数としました。
5×5のセル範囲でCtrl+Shift+Enterすることで
この配列の単位を正しく認識決定し
かつ、セルの位置がインデックス番号の
働きをして配列の中からその位置に合った値を表示します。
>配列数式ドラッグすると繰り返しになるんですね。
その通りです。
5×5で作った“「”型を右と下に
くりかえし、最後の右辺“|”と
底辺“_”は5×5の1列目と1行目
ということです。
こんなとこでお許しをm(__)m
投稿情報: えくせるバカ | 2007年10 月14日 (日曜日) 午後 10時35分
>おいらも真似して配列数式で作りました。
>=LEFT("*",{1,0,0,0,0}+{1;0;0;0;0})
これを34文字とするなら
私の
>=CHAR(-{0,2,2,2,2}*{0;5;5;5;5}+42)
も34文字です。(^_^)v
投稿情報: えくせるバカ | 2007年10 月14日 (日曜日) 午後 10時40分
やっと来れた^^;
皆さんの回答をみて、、、やっぱりさすが^^;
さてと、、、何の芸もない。。回答!
41文字
=IF(MOD((6-ROW())*(6-COLUMN()),5),"","*")
42文字
=LEFT("*",MOD((6-ROW())*(6-COLUMN()),5)=0)
42文字Ver2
=MID("**",LEN((6-ROW())*(6-COLUMN())/5),1)
43文字
=MID("*",MOD((6-ROW())*(6-COLUMN()),5)+1,1)
46文字
=MID("*",LEN(ABS((6-ROW())*(6-COLUMN())/5)),1)
48文字
=IF(OR(ROW()={1,6,11},COLUMN()={1,6,11}),"*","")
53文字
=IF(ISERR(FIND(".",(6-ROW())*(6-COLUMN())/5)),"*","")
(-^〇^-) ハハハハ
ダミダこりゃ^^;
投稿情報: k@自転 | 2007年10 月15日 (月曜日) 午前 10時27分
>(-^〇^-) ハハハハ
>ダミダこりゃ^^;
わーー、いろいろあって、おもしろいですよーーー
とくに、48文字は、
考え方が、わかりやすくていいなーーー
投稿情報: ジョー3 | 2007年10 月15日 (月曜日) 午前 10時50分
えくせるバカさん、解説どうも有り難うございました。(^。^)
>これを34文字とするなら私の
>>=CHAR(-{0,2,2,2,2}*{0;5;5;5;5}+42)
>も34文字です。(^_^)v
そうでした。(^。^)
投稿情報: くまぷー | 2007年10 月15日 (月曜日) 午後 05時12分
あ、Kさん、やっと登場だ!!
>(-^〇^-) ハハハハ
>ダミダこりゃ^^;
・・・とか何とか言ってトリをつとめて
主役の座をかっさらおうという魂胆ですな・・・流石、役者!!
登場するタイミングを計っていたな~(^。^)
投稿情報: くまぷー | 2007年10 月15日 (月曜日) 午後 05時19分
> 登場するタイミングを計っていたな~(^。^)
計っててこの結果じゃあね~~^^;
投稿情報: k@自転 | 2007年10 月15日 (月曜日) 午後 06時04分
さあ、今晩、いよいよ悪児さんの
問題が出題される!!!
楽しみにしていてちょ!!
投稿情報: くまぷー | 2007年10 月16日 (火曜日) 午前 08時49分