問題はこちらを参照。
【解答】
★三四郎50文字
=If((Col(A1)-6)*(Row(A1)-6) MOD 5 IN {0,1,4},,"●")
★Excel72文字
=LEFT("●",OR((ROW()-6)*(6-COLUMN())={-12,-8,-3,-2,1,2,3,4,6,8,9,12,16}))
(●`ε´●):おい、くまぷー!なんで三四郎が絶対有利なんだ?
【´・ω・`】:三四郎とExcelのModの違いだな。
三四郎では =((Col(A1)-6)*(Row(A1)-6) MOD 5 が・・・
*
*
*
*
*
・・・となるが、Excelでは=MOD((COLUMN()-6)*(ROW()-6),5) が・・・
*
*
*
*
*
(●`ε´●):なるほど符号にちがいがでるのか。これなら三四郎を使って
「御陵」を完成させるには「0,1,4」以外のところに「●」を
表示させるだけだもんな!!
【´・ω・`】:さて、こういう問題なのにExcelで60を切ったという人がいる。
どんな回答を見せてくれるか楽しみ、楽しみ。それと三四郎の46文字。
もし、これが「どこから持ってきたのその数値?」というような黒魔術ではないならば
驚き桃の木だな・・・これも楽しみ楽しみ・・・。
今回はExcel62で終戦です。
=LEFT("*",OR((6-ROW())*(COLUMN()-6)/{-2;1;2;4;6}={1,1.5,4,6}))
やはり、マイナスの数にModを掛けた時プラスに変換されてしまうのがExcelではつらかった^^;
投稿情報: y sakuda | 2007年12 月 1日 (土曜日) 午後 08時08分
うーーん、そうかーーー
MODがねーーー、、
今回は、スパッと切れませんでした。
で、、観客です。
投稿情報: ジョー3 | 2007年12 月 1日 (土曜日) 午後 08時28分
飲み中ですが。
三四郎 46文字。
=If((Col(A1)-6)*(Row(A1)-6) MOD 5 ANDB -6,"●")
MOD 5 のあとで、1と4がいらないので、第1と第3ビットを消去。
マイナス値は他のBITがたっているのでtrueになる。
投稿情報: きっちー | 2007年12 月 1日 (土曜日) 午後 08時36分
そうか
三四郎はMODしても負は負ですかぁ~
確かに今回の問題では圧倒的に有利ですね!
ExcelではMODは使いづらい・・・
なので最初の73文字は
=REPT("●",MOD((COLUMN()-6)^2*(ROW()-6)^2,5)>((COLUMN()-6)*(ROW()-6)>0)*1)
とむりやりでした。
そこで次の62文字はMODを使わず
=REPT("●",OR(MID((COLUMN()-6)*(ROW()-6)/5,3,1)={".","4","6"}))
としました。
そのときはてっきりminmaxさんが50台を
Excelでやってるものと思ってましたので、気楽に追っかけるつもりでいました。
2日後、会社でPC触れる時間が取れ、
MIDの有効性を生かすことにして思いついたのがFINDの第1引数に使うことで
=REPT("●",FIND(MID((COLUMN()-6)*(ROW()-6)/5,3,1),"28.46")>2)
60文字となりました。
58文字は"28.46"の「"」を外したものです。
このあとminmaxさんの50は三四郎と知り、びっくり。(゜o゜)?!
急にプレッシャーで重くなりました。
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 08時55分
きっちー さん、
えくせるバカ さん、
すごいなーーー・・・・
投稿情報: ジョー3 | 2007年12 月 1日 (土曜日) 午後 09時08分
ビット演算子はエクセルにないですから。
投稿情報: きっちー | 2007年12 月 1日 (土曜日) 午後 09時12分
sakudaさんも、、力作だなー・・・
今回は、、力が、、入らなかったです。
投稿情報: ジョー3 | 2007年12 月 1日 (土曜日) 午後 09時15分
きっちーさんの式は三四郎素人には難しい。
後でじっくり解析だな。
問題を見たとき三四郎が有利ということは比較的早くわかりました。
しかし、三四郎でやるとしてもエクセルで頑張る方法はないか考えてからと決めていたので一応エクセルで作ってみることに・・・
エクセルで最初にできたのは、くまぷーさんの式とほぼ一緒の72でした。
その後三四郎正規ユーザに変身してこれもくまぷーさんと同じ三四郎50になりました。
三四郎はここで終了
その後はエクセルで頑張る事にして
最終的にエクセルで62でした。
えくせるバカさんと同じmidを使ったもので全くおなじものでした。
ちなみに考え方を逆にして
=IF(OR(MID((6-ROW())*(6-COLUMN())/5,3,2)={"","2","8"}),"","●")
でも62でした。
えくせるバカさんのfindを使った式すばらしいです。全く思いつきませんでした。
投稿情報: minmax | 2007年12 月 1日 (土曜日) 午後 09時16分
MODはエクセルでもマクロでは
演算子として使いますが
きっちーさん、
「ビット演算子」ってどんなの?
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 09時16分
y sakudaさんのような考え方は、私にはなかなかできません。
いろんな意味でありがとうございました
投稿情報: minmax | 2007年12 月 1日 (土曜日) 午後 09時20分
minmax さん
三四郎にハマってなければ
あなたが先にやってたかもね!
(^^ゞ
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 09時22分
えくせるバカさんの
>FINDの第1引数に使うことで・・・
なかなか思いつく方法ではないと思います。
私には無理でしょう
投稿情報: minmax | 2007年12 月 1日 (土曜日) 午後 09時37分
MODは、エクセルでは関数ですが三四郎では演算子です。
ビット演算子は2進数の計算になります。
1は、0001
4は、0100
ー6は、11111010
ANDをとると・・・・
投稿情報: きっちー | 2007年12 月 1日 (土曜日) 午後 09時38分
酔っぱらいなんだから
メール解説するのは、きらわれる。
女の子に。
投稿情報: きっちー | 2007年12 月 1日 (土曜日) 午後 09時42分
今、ひとつひとつ見ています。
ヘビィだな~。
sakudaさんの・・・
6-ROW())*(COLUMN()-6)の分母に{-2;1;2;4;6}を
持ってくるなんて考えつかない・・・
ちょっと真似できません。
投稿情報: くまぷー | 2007年12 月 1日 (土曜日) 午後 09時48分
y sakuda さんの62文字、
私もこの手法を真似てやったのですが
65文字にしかできませんでした。(>_3))
ゆうのもやりましたが、67文字と
もっと長くなってしまいました。
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 09時50分
あれっ顔文字のあと、式が抜けました。
こんなのです、
=REPT("●",OR(LEN(SUBSTITUTE((COLUMN()-6)*(ROW()-6)/5,{4,6},11))>3))
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 09時52分
きっちーさんのANDB・・・
前にもANDBだったかORBだったかを
使っていたのを見ていたので
三四郎にこんなのがあるということは
頭では知っていたけど・・・
これもまだ自分では使えない・・・
Excelは情報量がもの凄いので
ふーん、こんなのがあったのかってのは
あまりないけど・・・
三四郎はまだまだ未開のジャングルが・・・
投稿情報: くまぷー | 2007年12 月 1日 (土曜日) 午後 09時55分
ひとりぼっち。
きらわれた。
無駄書きごめん。
投稿情報: きっちー | 2007年12 月 1日 (土曜日) 午後 10時00分
えくせるバカさんの・・・
=REPT("●",FIND(MID((COLUMN()-6)*(ROW()-6)/5,3,1),"28.46")>2)
うぎゃーっ!!
COLUMN()-6)*(ROW()-6)の3文字目に
こんな特徴があったのか?!
ぜんぜん、わからんかった!!
投稿情報: くまぷー | 2007年12 月 1日 (土曜日) 午後 10時03分
>ひとりぼっち。
>きらわれた。
(‥、)ヾ(^^ )ヨシヨシ
投稿情報: くまぷー | 2007年12 月 1日 (土曜日) 午後 10時03分
modは初めから使えないとあきらめていたので、円の部分がMod5で0,1,4以外と言う発想すらありませんでした。
きっちーさんのANDB はアセンブラ等でやってれば当然の発想ですが、Excelではねーー
でも見事です。
えくせるバカさんの
>=REPT("●",FIND(MID((COLUMN()-6)*(ROW()-6)/5,3,1),"28.46")>2)
はなんとなく分かるだけですが、見事!
やはりまるで発想が違いましたね。
これから詳細に解析させていただきます。
私の式の発想をちょっと説明しますと、最初1で割って-2,-3,-8,-12、次に1~4で割って1,2,3,4を選べばOKと考えました。
ところが、右辺はすべてプラスにそろえるので余計なものが表示されてだめ。
そこであきらめて、考え直そうと、右辺を-2,-3,-8,-12だけにしたら、ほとんど出来ちゃった!
で、Excel63の
=LEFT("*",OR((6-ROW())*(COLUMN()-6)/{-1;1;2;3;0.5}={2,3,8,12}))
になりました。
配列定数の組み合わせはいろいろあるのですが、普通の手では63が最短で最後に0.5の代わりに2,3,8,12の方を1/2にすると、小数点付き数字は同様に一つですが、12⇒6で一文字減らせることに気が付きました。
投稿情報: y sakuda | 2007年12 月 1日 (土曜日) 午後 10時05分
きっちーさん
早速、解説ありがとうございます。
「ビット演算子」の解説をさずかりましたが、
私の頭では、???です。
(決心)
これからも、私は
Excelに、しがみついて生きて行きます!!!
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 10時08分
minmaxさん、どもです。
同じ式だったようで・・・
はっぴぃです。(^O^)
とうとう三四郎ユーザがひとり増えた・・・
アンケートで「何に使うか」なんてのが
あったら「表計算一筆書き」と大書きしてください。(^^ゞ
投稿情報: くまぷー | 2007年12 月 1日 (土曜日) 午後 10時08分
きっちーさん
早速、解説ありがとうございます。
「ビット演算子」の解説をさずかりましたが、
私の頭では、???です。
(決心)
これからも、私は
Excelに、しがみついて行きます!!!
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 10時08分
あれなぜか
コメントがダブってます。
なんかうまくいかんなぁーー
投稿情報: えくせるバカ | 2007年12 月 1日 (土曜日) 午後 10時11分
>今回は、スパッと切れませんでした。
>で、、観客です。
ジョー3さん、どもです。(^O^)
次回の「中禅寺湖」第2弾では
是非、3度目のジョー3マジックを・・・
待ってますよ~(^o^)/~~~
そう言えば悪児さんは本当に
切羽詰まっているのかな?
いつもなら、ご自分のブログで
8:10に回答発表なのに・・・
今日はその気配すらない・・・
投稿情報: くまぷー | 2007年12 月 1日 (土曜日) 午後 10時17分
28.46・・・・
ふふふ、、、おもしれーーなーーー
投稿情報: ジョー3 | 2007年12 月 1日 (土曜日) 午後 10時18分
うーん、えくせるバカさんの三種類とも面白かった。
Findの発想はminmaxさん同様うなりました。
28.46の28ってのがやはり必要なんですね。すごいな^^
悪児さんのも早くみたい×2
投稿情報: y sakuda | 2007年12 月 1日 (土曜日) 午後 10時34分
雑感ですが・・・・
このところの問題みんな図形は複雑なんですが、結局ColumnとRowを一組で処理しないと勝負になんない。
なんか恐ろしい世界に入り込んでるような気が^^;
それと、回答者減っちゃいましたね。かずさんなんかも姿みせない・・・
投稿情報: y sakuda | 2007年12 月 1日 (土曜日) 午後 10時40分
minmaxさんのやっと分かった
midの第3引数が2ってのがやってみてやっと理解できました^^
投稿情報: y sakuda | 2007年12 月 1日 (土曜日) 午後 10時52分
>回答者減っちゃいましたね。かずさんなんかも姿みせない・・・
うーん、回答もかなりマニアックに
なってきましたね~。
問題自体も初めの頃の
ピラミッド、ストライク、ダイアモンドに
比べると厳しくなってしまったかな・・・
考えるときに来ているのかな~
投稿情報: くまぷー | 2007年12 月 1日 (土曜日) 午後 10時52分
>ピラミッド、ストライク、ダイアモンドに
>比べると厳しくなってしまったかな・・・
一目で分かるようなもんだと常連さんが顔出さない可能性も^^;
投稿情報: y sakuda | 2007年12 月 1日 (土曜日) 午後 10時55分
>結局ColumnとRowを一組で処理しないと勝負になんない。
column or row禁止で超簡単な図形が
書けたりしたら、、幅が広がるかもね、、
・・・・・・それは無理か???
投稿情報: ジョー3 | 2007年12 月 1日 (土曜日) 午後 11時20分
>かずさんなんかも姿みせない・・・
このところ、ちょっと忙しくて… (ーー;)
まったく手が出ないんですよ。で、こんなものしか思いつきませんでした。
=IF(OR(MOD(COLUMN(),5)=1,MOD(ROW(),5)=1,COLUMN()=ROW(),(7-ROW()+(ROW()>6)*10)=COLUMN()),"","*")
それにしても、皆さんの発想には本当に驚きますね!
投稿情報: かず | 2007年12 月 1日 (土曜日) 午後 11時26分
今帰ってきました。
今回は、ほとんどお休みでした。(^^)ゞ
三四郎50は、くまぷーさんと全く同じものと、
ちょっと縮めようとしてあがいたものと・・・
三四郎50
=Mid("** *",((6-Row(A1))*(6-Col(A1)) MOD 5+5)/2,1)
Excel69
=IF(OR(MOD(COLUMN()*{2;0;1;1}+ROW()*{0;2;1;-1},10)={2;2;7;0}),"","*")
投稿情報: 悪児 | 2007年12 月 1日 (土曜日) 午後 11時28分
>>比べると厳しくなってしまったかな・・・
>一目で分かるようなもんだと常連さんが顔出さない可能性も^^;
次は、ちょっと、
工夫します。(^_^)(^_^)/~
投稿情報: 悪児 | 2007年12 月 1日 (土曜日) 午後 11時30分
>次は、ちょっと、
>工夫します。(^_^)(^_^)/~
楽しみに待ちます。
くせになってきたのはいいのですが
仕事中も頭の片隅にあって最近集中力を欠いています。
ほどほどにしなきゃ
投稿情報: minmax | 2007年12 月 1日 (土曜日) 午後 11時35分
悪児さんのExcelは全く別の発想でしたね^^
投稿情報: y sakuda | 2007年12 月 1日 (土曜日) 午後 11時53分
>ほどほど
両立しかない(かも、勝手な発言)。
投稿情報: きっちー | 2007年12 月 1日 (土曜日) 午後 11時56分
すでにアクセス20越え。
投稿情報: きっちー | 2007年12 月 1日 (土曜日) 午後 11時58分
>minmaxさんのやっと分かった
>midの第3引数が2ってのがやってみてやっと理解できました^^
検討の過程で2としていたものをそのままにしていたものですが、
この場合は、1でもいいみたいですね^^;
投稿情報: minmax | 2007年12 月 2日 (日曜日) 午前 12時01分
>この場合は、1でもいいみたいですね^^;
あらっ?
さっき試した時2じゃないとダメと納得したんですが、1でもOKですね・・・・
投稿情報: y sakuda | 2007年12 月 2日 (日曜日) 午前 12時19分
>さっき試した時2じゃないとダメと納得したんですが、1でもOKですね・・・・
ほんの参考ですが
=IF(OR(MID((ROW()-6)*(6-COLUMN())/5,3,2)={"",".8",".2"}),"","●")
だったものの無駄を省いた際に第3引数を2から1に変更しなかったものです。
投稿情報: minmax | 2007年12 月 2日 (日曜日) 午前 12時25分
>無駄を省いた際に第3引数を2から1に変更しなかったものです。
こっちだと小数点を意識する必要がありますね^^
投稿情報: y sakuda | 2007年12 月 2日 (日曜日) 午前 12時32分
ⅡをやっててⅠの57が・・・
一応書き込んでおきます。
=REPT("●",MOD(MID((COLUMN()-6)*(ROW()-6)/2.5,3,2)&1,3)<1)
投稿情報: えくせるバカ | 2007年12 月 3日 (月曜日) 午後 06時27分
とうとう57が・・・絶え間ない進歩!!
投稿情報: くまぷー | 2007年12 月 3日 (月曜日) 午後 07時29分
動きを確認しました・・・・
絶句^^;
投稿情報: y sakuda | 2007年12 月 3日 (月曜日) 午後 08時52分
今回の問題(Excel部門)は
私と相性がよかったようです・・・(^^ゞ
いつも、そう上手くは行かない。
だから又おもしろい。
投稿情報: えくせるバカ | 2007年12 月 3日 (月曜日) 午後 09時24分
えくせるバカさんは、やっぱりほんものです。
投稿情報: minmax | 2007年12 月 3日 (月曜日) 午後 09時31分
>やっぱりほんものです。
うへっ、うぬぼれる^^
投稿情報: えくせるバカ | 2007年12 月 3日 (月曜日) 午後 09時50分