最初の予想通りの超手数になりました。
短縮できそうですが、、、醜いのがますます醜くなりそうなので・・・素材のままです。
269文字です
=MAX(OR(D4:F6>""),ROUND((COUNTIF(D4:F6,"●")-SUM((D4:F6>D3:F5&D5:F7&C4:E6&E4:G6)*1))/(1+(SUM((D4:F6>"")*(D3:F5&D5:F7&C4:E6&E4:G6&$E$5="●"))=4)),0))+(COUNTIF(D4:F6,"●")=6)*(E5="")*((F5&D4="")+(D5&F4="")+(F5&D6="")+(D5&F6="")+(F4&E6="")+(E4&F6="")+(D4&E6="")+(E4&D6=""))
(ジョー3さん)
で、
ちょっとだけ、、
233
{=MAX(OR(D4:F6>""),ROUND((COUNTIF(D4:F6,"●")-SUM((D4:F6>D3:F5&D5:F7&C4:E6&E4:G6)*1))/(1+(SUM((D4:F6>"")*(D3:F5&D5:F7&C4:E6&E4:G6&$E$5="●"))=4)*0.7),0))-(COUNTIF(D4:F6,"●")=6)*(OR(AND(E4:E6=""),AND(D5:F5=""),D6&E5&F4="",D4&E5&F6=""))}
220
{=MAX(OR(D4:F6>""),ROUND((SUM((D4:F6>"")*(D3:F5&D5:F7&C4:E6&E4:G6>"")))/(1+(SUM((D4:F6>"")*(D3:F5&D5:F7&C4:E6&E4:G6&$E$5="●"))=4)*0.7),0))-(COUNTIF(D4:F6,"●")=6)*(OR(AND(E4:E6=""),AND(D5:F5=""),D6&E5&F4="",D4&E5&F6=""))}
でも、、ぜーーんぶ
・・・・・・
気に入らない。
今回は、、、ひらめきが無い。。。
投稿情報: ジョー3 | 2012年9 月 8日 (土曜日) 午後 08時20分
sakudaさんです。
----------------------------------
最終的に368で終わりました。
{=CHOOSE(MIN(4,MAX((D4:F6>"")*(LEN(D3:F5&E4:G6&D5:F7&C4:E6)+1)))+1,0,1,2,IF(SUM(N(((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))=3))=1,3,IF(SUM(N(((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))=1))=4,(SUM(N((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6)={2,9,2;9,9,9;2,9,2}))=1)+3,COUNT(0/((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))))),COUNT(0/((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))))}
基本的には●が存在するセルが幾つのセルとつながっているか数えています。
ただし、最初のChooseの所では●が全く無かった時も判別するために小細工してます。
(D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6)
{1,0,1;2,0,1;2,1,0}<=4と2の二つに分かれた時のものです。
●□●
●□●
●●□
それで、接続個数のMaxにより
1⇒2個
3、4⇒すべて一塊になっているので上の配列の数字がある個数を数える
で、問題はMAXが2の場合でややこしくなりました。
①2が1個の場合、3
②2が2個以上の場合、1(端)が4個以外の場合は配列の数字がある個数
③2が2個以上で、1が4個の場合二つの塊と判断し更に次の判別が必要になりました。
角のセルに2が1カ所だけ現れた場合は4と2に分かれるパターンで4
それ以外の場合は3
Maxが2の時の整理がうまくできれば確かに200くらいでできそうなんですが、なんともなりませんでした。
しかし、この問題、質問掲示板ででたら、躊躇なく「一つの式では無理です」でしょうし、ワークセルを使ったとしても
「非常に困難です」としか答えようがないですね。
元々ジョー3もおっしゃっているように、人間が判断すれば極簡単でコンピュータにやらせようとすると難しいという
典型的な問題ですね。
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 08時38分
あ、、、
3つ並べて、f9 1万回・・・・
全部同じだった。
でも、、、、
3つとも同じ間違いかも。・・・・・・
・・・・・・・・・・・・・・
投稿情報: ジョー3 | 2012年9 月 8日 (土曜日) 午後 08時39分
>元々ジョー3もおっしゃっているように、人間が判断すれば極簡単でコンピュータにやらせようとすると難しいという
典型的な問題ですね。
にんげんって、、、、すごいーーーーー
えくせるは、、、、、おろかだーーーー
・・・・・・・・・・・・・・・・・・・・あはは、、、、、
でもね、、、
159が、、、、
エクセルをすごいと思わせるかも、、、、
あ、、、それ以上もあるかもね、、、
投稿情報: ジョー3 | 2012年9 月 8日 (土曜日) 午後 08時43分
{=MAX(LEN(SUBSTITUTE(IF(D4:F6="",,D4:F6&D3:F5&E4:G6&C4:E6&D5:F7&IF(D3:F5>"",D2:F4,)&IF(E4:G6>"",F4:H6,)&IF(D5:F7>"",D6:F8,)&IF(C4:E6>"",B4:D6,)&IF(D3:F5&C4:E6>"",C3:E5,)&IF(D3:F5&E4:G6>"",E3:G5,)&IF(E4:G6&D5:F7>"",E5:G7,)&IF(D5:F7&C4:E6>"",C5:E7,)&IF((C4:E6>"")*(C3:E5>"")+(D3:F5>"")*(D2:F4>""),C2:E4,)&IF((E4:G6>"")*(E3:G5>"")+(D3:F5>"")*(D2:F4>""),E2:G4,)&IF((E4:G6>"")*(E5:G7>"")+(D5:F7>"")*(D6:F8>""),E6:G8,)&IF((C4:E6>"")*(C5:E7>"")+(D5:F7>"")*(D6:F8>""),C6:E8,)&IF(LEN(D3:F5&D2:F4&C2:E4)=3,B2:D4,)&IF(LEN(D3:F5&D2:F4&E2:G4)=3,F2:H4,)&IF(LEN(D5:F7&D6:F8&C6:E8)=3,B6:D8,)&IF(LEN(D5:F7&D6:F8&E6:G8)=3,F6:H8,)&IF(LEN(D3:F5&D2:F4&C2:E4&B2:D4)=4,B3:D5,)&IF(LEN(D3:F5&D2:F4&E2:G4&F2:H4)=4,F3:H5,)&IF(LEN(D5:F7&D6:F8&C6:E8&B6:D8)=4,B5:D7,)&IF(LEN(D5:F7&D6:F8&E6:G8&F6:H8)=4,F5:H7,)),0,"")))}
え~と、789文字です。
考え方:
1.セルが空白でなければ縦横方向に隣のセルを調べ、それをつなげて文字列を作る。
2.九つのセルすべてに1の作業を行う。
3.If文で文字数を稼ぐために引数を省力したので(If(条件,A,"")と
するところをIf(条件,A,)としたので1でつなげた文字列に0がまじっているので
Substituteで0を""に置換する。
4.Maxで最大数をとる。(完了)
考え方にひらめきがないので超長大になりました。
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 08時49分
考え方:
1.セルが空白でなければ縦横方向に隣のセルを調べ、それをつなげて文字列を作る。
2.九つのセルすべてに1の作業を行う。
3.If文で文字数を稼ぐために引数を省力したので(If(条件,A,"")と
するところをIf(条件,A,)としたので1でつなげた文字列に0がまじっているので
Substituteで0を""に置換する。
4.Lenで文字列の長さをだす。
5.Maxで最大数をとる。(完了)
すみません。4が抜けました。
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 08時51分
感動・・・力作・・・789
で、、チェック!!!
・・・・・・・・・・・・・・そしたら、、、、
くまぷーさんと
1万回答えが合いました。
投稿情報: ジョー3 | 2012年9 月 8日 (土曜日) 午後 09時07分
皆さんの式を拝見させていただきました
●_●_□
●_□_●
□_□_●
●_●_●
●_□_●
□_□_●
この2パターンの両方を試してください
{=CHOOSE(LOOKUP(MAX(LEN(D4:F6)*LEN(D3:F5&D5:F7&C4:E6&E4:G6)),{0,1,2,3})+1,OR(D4:F6>0)*1,2,IF(SUM((D4:F6="")*{1,2,3;4,5,6;7,8,9})=15,3,SUM((LEN(D4:F6)*LEN(D3:F5&D5:F7&C4:E6&E4:G6)=2)*1)+2),COUNT(0/(LEN(D4:F6)*LEN(D3:F5&D5:F7&C4:E6&E4:G6))))}
残念ですが時間が取れず、ただ書いただけです
ただし不具合の有無は、、、疑問です
投稿情報: からくち | 2012年9 月 8日 (土曜日) 午後 09時28分
CHOOSE・・・・・
最初・・・
これで、100未満頑張ろうとした。・・・・出来ませんでした。
投稿情報: ジョー3 | 2012年9 月 8日 (土曜日) 午後 10時08分
からくちさん、どもです。
□_●_●
□_●_●
●_□_□
上のパターンを確認して下さい。
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 10時16分
sakudaさん、どもです。
□_□_●
●_□_●
●_●_□
上のパターンを確認して下さい。
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 10時19分
>上のパターンを確認して下さい。
やはり、、、
上記修正版
{=CHOOSE(LOOKUP(MAX(LEN(D4:F6)*LEN(D3:F5&D5:F7&C4:E6&E4:G6)),{0,1,2,3})+1,OR(D4:F6>0)*1,2,IF(SUM((D4:F6="")*{1,2,3;4,5,6;7,8,9})=15,3,SUM((LEN(D4:F6)*LEN(D3:F5&D5:F7&C4:E6&E4:G6)=2)*1)+MIN(2,SUM((LEN(D4:F6)*LEN(D3:F5&D5:F7&C4:E6&E4:G6)=1)*1))),COUNT(0/(LEN(D4:F6)*LEN(D3:F5&D5:F7&C4:E6&E4:G6))))}
投稿情報: からくち | 2012年9 月 8日 (土曜日) 午後 10時25分
>くまぷーさんと
>1万回答えが合いました。
ありがとうございます。
私もジョー3さんのをチェックしましたが
間違いのパターンを発見できませんでした。
>f9で確認300回目ぐらいで、、、読みぬけが・・・出たーーーーー
・・・と仰っていましたが、出品されたものでは解決済みなのですね?
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 10時27分
>出品されたものでは解決済みなのですね?
の・・・つもりが余計悪くなったり・・・・
かも、、、、
投稿情報: ジョー3 | 2012年9 月 8日 (土曜日) 午後 10時32分
からくちさん、修正版ですが・・・
●_□_●
●_●_□
□_●_●
上のパターンを確認して下さい。
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 10時34分
遅くなりました。
ちょっと寝てしまい、今目が覚めました。
みなさんの式は良く見てませんが、
とりあえず式をだします。
一番最初単純に
175
{=MAX(SUM(--(D4:F6>"")-(D4:F6=D3:F5&C4:E6&E4:G6&D5:F7&"●"))-(SUM((D4:F6="●")*(D3:F5&D5:F7&C4:E6&E4:G6="●"))>=4)*(2+AND(SUM(--(D4:F6>""))=6,D4=F6,F4=D6))*(E5=""),--(D4:F6>""))}
でした。
最終的には、
159
{=MAX(SUM(LEN(D4:F6)*(D3:F5&C4:E6&E4:G6&D5:F7>""))-(SUM(N(D4:F6&0&D3:F5&D5:F7&C4:E6&E4:G6="●0●"))>3)*(2+IF(SUM(LEN(D4:F6))=6,D4&F4=F6&D6))*(E5=""),LEN(D4:F6))}
これでもおんなじ
{=MAX(SUM(LEN(D4:F6)*(D3:F5&C4:E6&E4:G6&D5:F7>""))-(SUM(LEN(D4:F6)*(D3:F5&D5:F7&C4:E6&E4:G6="●"))>3)*(2+IF(SUM(LEN(D4:F6))=6,D4&F4=F6&D6))*(E5=""),LEN(D4:F6))}
さて判定はいかに?
投稿情報: min | 2012年9 月 8日 (土曜日) 午後 10時37分
minさん、、、式が難しそうでもないのに・・・・へーーー
すごいですねーーー
参ったです
投稿情報: ジョー3 | 2012年9 月 8日 (土曜日) 午後 10時49分
minさんの3作をチェックしましたが
間違いのパターンを発見できませんでした。
しかし・・・よく言われることですが・・・
minさん、よく頭の中を見てみたい・・・
投稿情報: くまぷー | 2012年9 月 8日 (土曜日) 午後 10時49分
>修正版ですが・・・
なるほど、、、途中で引っかかってしまうのか
根本的に直さないと駄目ですね、、、時間が無い
もっとも時間があったら、、、
0~9までの512パターン
と言う事は、、、
=DEC2BIN()で000000000~111111111
と、ピッタシ
試してみたい、、、
投稿情報: からくち | 2012年9 月 8日 (土曜日) 午後 10時49分
あ、提示した175は最初のものではなかったです。
ま、どうでもいいんですが。。
投稿情報: min | 2012年9 月 8日 (土曜日) 午後 11時02分
では自分のためにも解説してみます。
考え方は単純で比較的すんなり思いつきましたが、
それ以外はいい方法を思いつきませんでした。
ジョー3さんとほぼおんなじ考え方ですが、
159
{=MAX(SUM(LEN(D4:F6)*(D3:F5&C4:E6&E4:G6&D5:F7>""))-(SUM(N(D4:F6&0&D3:F5&D5:F7&C4:E6&E4:G6="●0●"))>3)*(2+IF(SUM(LEN(D4:F6))=6,D4&F4=F6&D6))*(E5=""),LEN(D4:F6))}
式を分解してみます。
{=MAX(
SUM(LEN(D4:F6)*(D3:F5&C4:E6&E4:G6&D5:F7>""))
●が入っていてなおかつ上下左右に●が入っているセルの個数合計を求める
(この時点ですべて単独の●しかない場合は、0になる)
-
ここから次の部分を引いていく
(SUM(N(D4:F6&0&D3:F5&D5:F7&C4:E6&E4:G6="●0●"))
各セルに上下左右のセルをつなげて●●のセルになるセル
つまり、つながっているセルの端っこのセルが何個あるかを求める
たとえば
●●●
□□●
●●□
ならば
○●●
□□○
○○□
の白○の部分の個数を求める
>3)
これが3より大きければ
(この9セルの場合「>3」でなく「=4」でもいいのですが)
*(2
2を倍するして引く
+IF(SUM(LEN(D4:F6))=6,
さらに●の入っているセルが6個で
D4&F4=F6&D6))
●●●
□□□
●●●
または
●●□
●□●
□●●
のパタンだともう1引く必要がある。
*(E5="")
ただし
●●●
□●□
●●●
の場合、つまりは真ん中のセルが●の場合は端っこセルが4こでもつながっているため
引かない必要があるので「*(E5="")」をかける。
,LEN(D4:F6))}
このままだと入力されている●がすべてつながっていないと0になるので
「=MAX(*******,LEN(D4:F6))」で●が入っているセルがある場合は1を求める。
長くなった割にはわかりやすくないかな??
投稿情報: min | 2012年9 月 8日 (土曜日) 午後 11時41分
>よく頭の中を見てみたい・・・
頭の中は結構空っぽです。
ただ、今回の問題は9セルだったので
pcを使わなくてもパタンを考えやすかったです。
投稿情報: min | 2012年9 月 9日 (日曜日) 午前 12時13分
済みません。どこが違っているか確認してないのですが、間違えた式を出しちゃったみたいです。
正しいのは
{=CHOOSE(MIN(4,MAX((D4:F6>"")*(LEN(D3:F5&E4:G6&D5:F7&C4:E6)+1)))+1,0,1,2,IF(SUM(N(((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))=2))=1,3,IF(SUM(N(((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))=1))=4,(SUM(N((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6)={2,9,2;9,9,9;2,9,2}))=1)+3,COUNT(0/((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))))),COUNT(0/((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))))}
です。
皆さんのじっくり考えてませんが、全然分からん。
投稿情報: y sakuda | 2012年9 月 9日 (日曜日) 午前 12時13分
上の修正版ですが、チェックしてたら、皆さんのと違う答えがでたんで、そのパターンを完成品の所に貼り付けるとOK。
で、どうやら、式を文字列化したあといじって文字列修正するのわすれてたみたいです。
それにしてもminさんのすごいですね。
今日明日、時間がないので、月曜日以降みなさんのじっくり解析します。
投稿情報: y sakuda | 2012年9 月 9日 (日曜日) 午前 12時18分
それにしても、できないんじゃないかと思ったような問題にまがいなりにも答えが提出されるのが凄いですねーー
投稿情報: y sakuda | 2012年9 月 9日 (日曜日) 午前 12時20分
>答えが提出されるのが凄いですね
今回は9セルでパタンが限定されたので、
そういう意味でもいい問題でした。
ほんとは、違う方法をやりたかった。
居眠りして寝れなくなったので
そのやりたかった方法を試してみます。
多分出来ないと思うけど。
投稿情報: min | 2012年9 月 9日 (日曜日) 午前 12時33分
違ってたところ確認しました。真ん中より少し前の
((D4:F6>"")*LEN(D3:F5&E4:G6&D5:F7&C4:E6))=3
これが=2が正しかった。
確かにフェイルして直した覚えがありました。
見ても全然違いが分からないので違ったところを探す式を作るはめになったw
投稿情報: y sakuda | 2012年9 月 9日 (日曜日) 午前 12時36分
みなさん、すごいですね。
私は結局ギブアップです。
投稿情報: ni | 2012年9 月 9日 (日曜日) 午前 01時03分
>そのやりたかった方法を試してみます。
何となく出来ました。
短くなると思ったんですが長くなりました。
165
{=MAX(SUM(TEXT(FREQUENCY(LEN(D4:F6)*LEN(D3:F5&C4:E6&E4:G6&D5:F7&0),{1,2}),CHOOSE({1;2;3},"!0","[=4]"&(2-IF(SUM(LEN(D4:F6))=6,D4&F4=F6&D6))*(E5=""),))*1),LEN(D4:F6))}
投稿情報: min | 2012年9 月 9日 (日曜日) 午前 01時44分
>みなさん、すごいですね。
>私は結局ギブアップです。
わたしも、ほとんどギブアップ。
ぐちゃぐちゃというか、、
つぎはぎというか、、、、
3×3なのに、、不思議な複雑さだった。
・・・・・・・・・・・・・・
一人ぼっちは、何個ですか?
ぐらいの問題が易しくて良かったかも
投稿情報: ジョー3 | 2012年9 月 9日 (日曜日) 午前 07時32分
minさんの
165も・・・すごい、、、
私の身についてない・・・技が・・・ちらちら・・・・・
投稿情報: ジョー3 | 2012年9 月 9日 (日曜日) 午前 07時39分
>一人ぼっちは、何個ですか?
>ぐらいの問題が易しくて良かったかも
それ、頂きです!
第136回はそれにしましょう。
内容が分かってしまったのでさっそく出題しますね。
投稿情報: くまぷー | 2012年9 月 9日 (日曜日) 午前 08時48分
皆さんの回答眺めていたんですが、ちゃんと理解できたと思えるのは皆無^^;
私のだってその部類かもしれませんがw
投稿情報: y sakuda | 2012年9 月10日 (月曜日) 午後 05時34分
>ちゃんと理解できたと思えるのは皆無^^; ×2
投稿情報: くまぷー | 2012年9 月10日 (月曜日) 午後 07時03分
>ちゃんと理解できたと思えるのは皆無^^; ×3・・・・
エレガントな回答を引き出せ無かった点では、、、残念。
子供にも単純そうで、エクセル君には複雑・・・証明・・・だけ、、の収穫
お付き合いいただいたかたがたに、、、感謝。
ナイトと宝石には、、、面白い解き方があることを願ってます。
投稿情報: ジョー3 | 2012年9 月12日 (水曜日) 午前 07時59分