★第8回 「王手飛車」解答例
=IF(OR(AND((INT(AB19/9)-INT(AB20/9))^2=(MOD(AB19,9)-MOD(AB20,9))^2,(INT(AB19/9)-INT(AB20/9))*(INT(AB18/9)-INT(AB20/9))+(MOD(AB19,9)-MOD(AB20,9))*(MOD(AB18,9)-MOD(AB20,9))=0),AND((INT(AB20/9)-INT(AB19/9))^2=(MOD(AB20,9)-MOD(AB19,9))^2,(INT(AB18/9)-INT(AB20/9))*(MOD(AB19,9)-MOD(AB20,9))=(INT(AB19/9)-INT(AB20/9))*(MOD(AB18,9)-MOD(AB20,9)),MOD(AB20,9)<MAX(MOD(AB18,9),MOD(AB19,9)),MOD(AB20,9)>MIN(MOD(AB18,9),MOD(AB19,9)),INT(AB20/9)<MAX(INT(AB18/9),INT(AB19/9)),INT(AB20/9)>MIN(INT(AB18/9),INT(AB19/9)))),"王手飛車!","") 515
盤面の駒はAA18:AD98の表、特にAB列の数値により表示されます。
そこでAB列の数値を参照して数式を作ります。例えばAB18の
数値を見れば、王の表示位置がわかります。
王の表示列:=MOD(AB18,9)+1 (盤面左からの列数)
王の表示行:=INT(AB18/9)-1 (ワークシートの行数)
飛車・角の位置も同様です。
飛車の表示列:=MOD(AB19,9)+1 (盤面左からの列数)
飛車の表示行:=INT(AB19/9)-1 (ワークシートの行数)
角の表示列:=MOD(AB20,9)+1 (盤面左からの列数)
角の表示行:=INT(AB20/9)-1 (ワークシートの行数)
王手飛車になるケースを2つに分けて考えます。
(1) 王、飛、角が一直線に並ぶ場合。この場合は角が王と飛に挟まれる場合のみ「王手飛車」です。ただし一直線に並んでも、角の利き筋に王・飛が位置していなければなりません。
1. 王、飛、角が一直線に並ぶ条件(共通の1点、 傾きが同じ)
(INT(AB18/9)-INT(AB20/9))*(MOD(AB19,9)-MOD(AB20,9))=(INT(AB19/9)-INT(AB20/9))*(MOD(AB18,9)-MOD(AB20,9))
2. 角が王と飛に挟まれる条件(下の4式が同時に成立)
角の行位置 < Max(王の行位置 , 飛の行位置)
角の列位置 < Max(王の列位置 , 飛の列位置)
角の行位置 > Min(王の行位置 , 飛の行位置)
角の列位置 > Min(王の列位置 , 飛の列位置)
3. 角の利き筋に王・飛が位置する条件
(INT(AB20/9)-INT(AB19/9))^2=(MOD(AB20,9)-MOD(AB19,9))^2
よって・・・
=AND((INT(AB20/9)-INT(AB19/9))^2=(MOD(AB20,9)-MOD(AB19,9))^2,(INT(AB18/9)-INT(AB20/9))*(MOD(AB19,9)-MOD(AB20,9))=(INT(AB19/9)-INT(AB20/9))*(MOD(AB18,9)-MOD(AB20,9)),MOD(AB20,9)<MAX(MOD(AB18,9),MOD(AB19,9)),MOD(AB20,9)>MIN(MOD(AB18,9),MOD(AB19,9)),INT(AB20/9)<MAX(INT(AB18/9),INT(AB19/9)),INT(AB20/9)>MIN(INT(AB18/9),INT(AB19/9)))
(2) 角・王・飛が一直線に並ばない場合。
1. 角→王 、角→飛のなす角が直角
(INT(AB18/9)-INT(AB20/9))*(MOD(AB19,9)-MOD(AB20,9))=(INT(AB19/9)-INT(AB20/9))*(MOD(AB18,9)-MOD(AB20,9))
2. 角の利き筋に王・飛が位置する条件
(INT(AB20/9)-INT(AB19/9))^2=(MOD(AB20,9)-MOD(AB19,9))^2
よって「王手飛車!」は(1) または(2)が成立すればよいので、答えは最初に示した解答例のようになる。 (くまぷー)
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★★
★第9回 「王手オリジナル」解答例
自分を含めて、回答まで行かなかったら、どうしましょ、、
(忙しくて、時間が取れない)
と、少し思いましたが、、
皆さんから、時間をいただきまして、有難うございました。
さて、
出題者回答ですが、、、
飛竜部分は
1行目
2行目
3行目
・・・
9行目
と切り取って、、、&でくっつけて
飛王、王飛、竜王、王竜・・・を探して・・・あるかで、決まり
角馬部分は
1行目
〇2行目
〇〇3行目
・・・・・・
9行目
とずらしてから・・・探しに行くという・・・
簡単な作戦、、、
だが、これを短縮となると、、、、
つかれますーーー・・・技術がない私は、、、、
で、、、
557?
{=IF(COUNT(FIND({"王飛";"飛王";"王竜";"竜王"},I9:Q9&I10:Q10&I11:Q11&I12:Q12&I13:Q13&I14:Q14&I15:Q15&I16:Q16&I17:Q17))
+COUNT(FIND({"王飛","飛王","王竜","竜王"},I9:I17&J9:J17&K9:K17&L9:L17&M9:M17&N9:N17&O9:O17&P9:P17&Q9:Q17))
+COUNT(FIND({"角王";"王角";"馬王";"王馬"},A9:Q9&B10:R10&C11:S11&D12:T12&E13:U13&F14:V14&G15:W15&H16:X16&I17:Y17))
+COUNT(FIND({"角王";"王角";"馬王";"王馬"},I9:Y9&H10:X10&G11:W11&F12:V12&E13:U13&D14:T14&C15:S15&B16:R16&A17:Q17))
+SUM(((I9:Q17="王")*((J8:R16="竜")+(H10:P18="竜")+(H8:P16="竜")+(J10:R18="竜")+(I8:Q16="馬")+(I10:Q18="馬")+(H9:P17="馬")+(J9:R17="馬")))),"王手!","")}
ちょっとだけ角をまとめて、
524
{=IF(COUNT(FIND({"王飛";"飛王";"王竜";"竜王"},I9:Q9&I10:Q10&I11:Q11&I12:Q12&I13:Q13&I14:Q14&I15:Q15&I16:Q16&I17:Q17))
+COUNT(FIND({"王飛","飛王","王竜","竜王"},I9:I17&J9:J17&K9:K17&L9:L17&M9:M17&N9:N17&O9:O17&P9:P17&Q9:Q17))
+COUNT(FIND({"角王";"王角";"馬王";"王馬"},A9:Q9&B10:R10&C11:S11&D12:T12&E13:U13&F14:V14&G15:W15&H16:X16&I17:Y17
&9&
I9:Y9&H10:X10&G11:W11&F12:V12&E13:U13&D14:T14&C15:S15&B16:R16&A17:Q17))
+SUM(((I9:Q17="王")*((J8:R16="竜")+(H10:P18="竜")+(H8:P16="竜")+(J10:R18="竜")+(I8:Q16="馬")+(I10:Q18="馬")+(H9:P17="馬")+(J9:R17="馬")))),"王手!","")}
+技術でうまくまとめれば、
400台、300台と、思ったが・・・・・わたしには、、、・・・根気と、技術がない・・・・ (ジョー3さん)
横のケーキを切って、、、
縦に、、、積んで、、、イチゴの、、あるところを
探した、、、感じ、、、
で、、、わかりやすいとは、、、思います。
・・・ていうか、、、
難しいことできない、、、ジョーだから、、、
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 08時08分
【第9回】
160:{=REPT("王手飛車!",COUNT(FIND({13;23;31;32},SUBSTITUTE(MMULT(1^COLUMN(A:I),SUMIF(AB18:AB20,AB20+(MOD(AB20,9)+ROW(1:9)-9)*{8,-10},AA18:AA20)*10^ROW(1:9)),0,)*1))=2)}
【第10回】
386:{=REPT("王手!",OR(COUNTIF(OFFSET(H7:J9,AB18/9-9,MOD(AB18,9)),{"竜","馬"}),COUNT(FIND({13;16;31;61},SUBSTITUTE(MMULT(1^COLUMN(A:I),INT(SUMIF(AB18:AB22,AB18+(MOD(AB18,9)+ROW(1:9)-9)*{8,-10},AA20:AA24)/2)*10^ROW(1:9)),0,))),COUNT(FIND({12;14;21;41},SUBSTITUTE(MMULT(1^COLUMN(A:I),INT(SUMIF(AB18:AB22,AB18*{1,0}+90*{0,1}+MOD(AB18,9)*{-1,1}+(ROW(1:9)-1)*{1,9},AA20:AA24)/2)*10^ROW(1:9)),0,)))))}
投稿情報: maron | 2017年8 月19日 (土曜日) 午後 08時15分
で、、、
なんとなく、、、
min さんにばればれ、、、&、、、きっちり、、、
min さんは、、、整理の予感、、、
sakuda さんのと、、、
maron さんのは、、、
私では、理解不能の、、、予感、、
くまぷーさんの、、、だって、、、もう、、、
nonndakara,wakannnai
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 08時16分
◆回を間違いました
◆【第8回】と【第9回】でした
投稿情報: maron | 2017年8 月19日 (土曜日) 午後 08時17分
今、maron さんのを、みた・・・
うひゃーー、、
suujiga,数字が、すうじが、、、
こんなに解析して、、、くださって、、、感謝ですーーー、、、
すげーーーー
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 08時21分
出先から
王手飛車
193
{=REPT("王手飛車!",COUNT(FIND({"飛角王","飛角","角飛","王角飛","王角","角王"},I1:I17&J2:J18&K3:K19&L4:L20&M5:M21&N6:N22&O7:O23&P8:P24&Q9:Q25&0&I9:I25&J8:J24&K7:K23&L6:L22&M5:M21&N4:N20&O3:O19&P2:P18&Q1:Q17))>1)}
これはもう少し減らせます。
実際にやってませんが。
投稿情報: min | 2017年8 月19日 (土曜日) 午後 08時29分
もしかして、、、
maron さんって、、、
若くて、、
体力あって、、
・・・私にない2つ、、、
もってそうーーー
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 08時29分
あ、、、
min さんの
王手飛車、、、
わたしと、、、
かなり、にてて、、、少し、、、違う、、、
でも、考えは、、、おなじ、、ね、、、
予感、アタリ、、、
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 08時35分
出先から
坂本竜馬でやってみましした。
442
{=IF(COUNT(1/(FIND(OFFSET(G7:I9,SUM((I9:Q17="王")*ROW(1:9)),SUM((I9:Q17="王")*COLUMN(A:I))),"坂本竜馬")-1),FIND({"王角","王馬","角王","馬王"},I1:I17&J2:J18&K3:K19&L4:L20&M5:M21&N6:N22&O7:O23&P8:P24&Q9:Q25&0&I9:I25&J8:J24&K7:K23&L6:L22&M5:M21&N4:N20&O3:O19&P2:P18&Q1:Q17),FIND({"王飛","王竜","飛王","竜王"},I9:I17&J9:J17&K9:K17&L9:L17&M9:M17&N9:N17&O9:O17&P9:P17&Q9:Q17&0&TRANSPOSE(I9:Q9&I10:Q10&I11:Q11&I12:Q12&I13:Q13&I14:Q14&I15:Q15&I16:Q16&I17:Q17))),"王手!","")}
これもcountを使っているので40位は減らせると思います。
今は実際にやれませんが。
投稿情報: min | 2017年8 月19日 (土曜日) 午後 08時45分
minさんの
442も、、すごいなーーー、、、
いっぱい工夫、、、
わたしのは、、、素材、、に、、過ぎない、、、
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 08時50分
王手飛車問題ですが、、
196 のは、、
{=IF(COUNT(FIND({"角王";"王角";"角飛";"飛角"}
,A9:Q9&B10:R10&C11:S11&D12:T12&E13:U13&F14:V14&G15:W15&H16:X16&I17:Y17
&9&
I9:Y9&H10:X10&G11:W11&F12:V12&E13:U13&D14:T14&C15:S15&B16:R16&A17:Q17))>1,"王手飛車!","")}
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 09時21分
まだ、皆さんの研究してませんが、両方共全くダメでした。
王手飛車288
{=REPT("王手飛車!",(COUNT(0/MOD(MMULT(LARGE(IF(I9:Q17="角",181,I9:Q17>"")*ROW(1:9)*19+COLUMN(A:I),{1,2;1,3}),{1;-1}),{18,20}))=2)-AND(OR(MMULT({1,1},MOD(MMULT(LARGE((I9:Q17>"")*ROW(1:9)*19+COLUMN(A:I),{1,2;1,3}),{1;-1}),{18,20}))=0),MAX((I9:Q17="角")*ROW(1:9))<>LARGE((I9:Q17>"")*ROW(1:9),2)))}
飛角竜馬 976
{=REPT("王手!",OR(OFFSET(G7,MAX((I9:Q17="王")*ROW(1:9)),MAX((I9:Q17="王")*COLUMN(A:I)),3,3)={"竜","馬","竜";"馬",0,"馬";"竜","馬","竜"},INT((ABS(MMULT(MOD(LARGE((I9:Q17>"")*(ROW(1:9)*9+COLUMN(A:I))-(MAX((I9:Q17="王")*ROW(1:9))=ROW(1:9))/2+(I9:Q17="王")*2%+(I9:Q17="飛")*3%+(I9:Q17="竜")*3%,{1,2;2,3;3,4;4,5}),1),{1;-1})))/1%+1%)=1,INT((ABS(MMULT(MOD(LARGE((I9:Q17>"")*(COLUMN(A:I)*9+ROW(1:9))-(MAX((I9:Q17="王")*COLUMN(A:I))=COLUMN(A:I))/2+(I9:Q17="王")*2%+(I9:Q17="飛")*3%+(I9:Q17="竜")*3%,{1,2;2,3;3,4;4,5}),1),{1;-1})))/1%+1%)=1,INT(MMULT(MOD(LARGE(IF(MOD(ROW(1:9)*19+COLUMN(A:I)-MAX((I9:Q17="王")*ROW(1:9)*19+COLUMN(A:I)),20)=0,(I9:Q17>"")*(ROW(1:9)*19+COLUMN(A:I))+(I9:Q17="王")*2%+(I9:Q17="角")*3%+(I9:Q17="馬")*3%,),{1,2;2,3;3,4;4,5}),1),{1;-1})/1%+1%)={1,-1},INT(MMULT(MOD(LARGE(IF(MOD(ROW(1:9)*19+COLUMN(A:I)-MAX((I9:Q17="王")*ROW(1:9)*19+COLUMN(A:I)),18)=0,(I9:Q17>"")*(ROW(1:9)*19+COLUMN(A:I))+(I9:Q17="王")*2%+(I9:Q17="角")*3%+(I9:Q17="馬")*3%,),{1,2;2,3;3,4;4,5}),1),{1;-1})/1%+1%)={1,-1}))}
投稿情報: y sakuda | 2017年8 月19日 (土曜日) 午後 09時52分
なるほどーー
全然方向性違ってた・・・・
投稿情報: y sakuda | 2017年8 月19日 (土曜日) 午後 10時11分
うひゃーーー
976も、、、
長いだけでない、、、
長いだけで、いろいろ繰り返しなら・・・わかりやすいが、、、
})))/1%+1%)=
とか、、
3%,{1,2;2,3;3,4;4,5}),1),{1;-1})
すげーーー、、、数字類、、、
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 10時13分
ジョー3さん
"飛角王","王角飛"
はいらなかったのですね。
深く考えませんでした。
そうなると推定18文字減ることになる。
投稿情報: min | 2017年8 月19日 (土曜日) 午後 10時27分
これで配列を作り、MMULTで隣どおしの差を求めてます。
その差のMOD1が0.01の時王手とみなしてます。
投稿情報: y sakuda | 2017年8 月19日 (土曜日) 午後 10時29分
sakudaさんの解読
携帯からでは難しい
それにしてもすご、。。
投稿情報: min | 2017年8 月19日 (土曜日) 午後 10時31分
sugo スゴ すご・・・・・・・
のんだから、、、、
のんでなくても、、、
わからない、、、てくにっく
こんなに、、、、、もうしわけない・・・かんじ、、、
投稿情報: jyo3 | 2017年8 月19日 (土曜日) 午後 10時43分
>携帯からでは難しい
最初の部分の隣接の判定は説明不要だと思います。
角筋 ↓は右下がり
INT(ABS(MMULT(MOD(LARGE(IF(MOD(ROW(1:9)*19+COLUMN(A:I)-MAX((I9:Q17="王")*ROW(1:9)*19+COLUMN(A:I)),20)=0,(I9:Q17>"")*(ROW(1:9)*19+COLUMN(A:I))+(I9:Q17="王")*2%+(I9:Q17="角")*3%+(I9:Q17="馬")*3%,),{1,2;2,3;3,4;4,5}),1),{1;-1}))/1%+1%)=1
このMod20を18 に変えて左下がり
飛筋は↓
INT((ABS(MMULT(MOD(LARGE((I9:Q17>"")*(ROW(1:9)*9+COLUMN(A:I))-(MAX((I9:Q17="王")*ROW(1:9))=ROW(1:9))/2+(I9:Q17="王")*2%+(I9:Q17="飛")*3%+(I9:Q17="竜")*3%,{1,2;2,3;3,4;4,5}),1),{1;-1})))/1%+1%)=1
これを、列に替えたものとペアです。
つまり200見当の式が4つに100ちょっとの隣接判定で1000弱ってことになります。
さすがにこん長いの書いたことありませんからつかれましたw
投稿情報: y sakuda | 2017年8 月19日 (土曜日) 午後 11時19分
解説ありがとうございました。
雰囲気はわかりました。
携帯からだと式が全部表示されないので、今度じっくり見ます。
投稿情報: min | 2017年8 月19日 (土曜日) 午後 11時46分
アイデアは単純なんですが、実際にやるといろいろ・・・・
飛車、竜の場合、例えば王が行の左端(実際の端ということではなく、他の駒が左側にないということ)で、飛車が前の行の右端にあるとアタリ判定がでちゃったんで、王と飛車が同一行にある場合に限る小細工。
角の場合は折り返しを避けるために、×9ではなく×19でやれば良かったはずが、右下がりの対角線の場合だけ異常が起こり、小細工
てなことで原型から大分のびました^^
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 12時04分
◆よい子の693
{=REPT("王手!",OR(COUNTIF(OFFSET(G7:I9,MAX((I9:Q17="王")*ROW(1:9)),MAX((I9:Q17="王")*COLUMN(A:I))),{"竜","馬"}),COUNT(FIND({12,21},SUBSTITUTE(SUM(COUNTIF(OFFSET(H8,MAX((I9:Q17="王")*ROW(1:9))+MAX((I9:Q17="王")*COLUMN(A:I))-ROW(1:9),ROW(1:9)),{"王","角","馬","飛","竜"})*{1,2,2,3,3}*10^ROW(1:9))&9&SUM(COUNTIF(OFFSET(H8,MAX((I9:Q17="王")*ROW(1:9))-MAX((I9:Q17="王")*COLUMN(A:I))+ROW(1:9),ROW(1:9)),{"王","角","馬","飛","竜"})*{1,2,2,3,3}*10^ROW(1:9)),0,))),COUNT(FIND({13,31},SUBSTITUTE(SUM(COUNTIF(OFFSET(H8,MAX((I9:Q17="王")*ROW(1:9)),ROW(1:9)),{"王","角","馬","飛","竜"})*{1,2,2,3,3}*10^ROW(1:9))&9&SUM(COUNTIF(OFFSET(H8,ROW(1:9),MAX((I9:Q17="王")*COLUMN(A:I))),{"王","角","馬","飛","竜"})*{1,2,2,3,3}*10^ROW(1:9)),0,)))))}
投稿情報: maron | 2017年8 月20日 (日曜日) 午前 12時05分
maronさんの・・・・隣接の部分はなるほどーーです。
が・・・・・後のは何が何だかわかんないです。後でというか明日すっきりした頭でじっくり考えます。
でも700アンダーってのはすごいです。
前のもそうですが、私はCountifどうもうまく使えないです。
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 12時44分
◆【第8回】の*1を-にしたら、160→159の150台になったのに、安易でした・・・
159:{=REPT("王手飛車!",COUNT(FIND({13;23;31;32},-SUBSTITUTE(MMULT(1^COLUMN(A:I),SUMIF(AB18:AB20,AB20+(MOD(AB20,9)+ROW(1:9)-9)*{8,-10},AA18:AA20)*10^ROW(1:9)),0,)))=2)}
◆それにしても、sakudaさんのチェック用マクロはすごくて、便利ですね
投稿情報: maron | 2017年8 月20日 (日曜日) 午前 01時40分
◆そう言えば昔、成果物をすごいとほめたら、「成果物がすごいのではなく、それを作った人がすごいんだ」と言われたことがあります
◆まさに、sakudaさんはすごいですね
投稿情報: maron | 2017年8 月20日 (日曜日) 午前 01時53分
VBA好評みたいでうれしいですが・・・・
中ご覧になれば分かりますが、書き流しの簡単なものです。
なんせ、チェック内容は単純ですから凝りようがありません。VBAちょっとかじった方ならだれでも作れます。
特に自分用でしたら、起動部とかオプションとかはコード直接いじっちゃうとかできますからややこしいことやる必要ありませんしね。
一日以内にほとんどトラぶらないのをでっち上げるのは慣れです。
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 02時25分
みなさーん
大変、有難うございました。、、
ある意味、この忙しい時期に、、、
ある意味、変な問題に、、、お付き合いいただきまして、、、
今日は、出かけますが、、、帰ってから、ゆっくり見たいです、
&
VBAも、関心ありますので、・・・
こちらも、、、ちかいうちに、ゆっくり見たいです。
sakudaさん、、教材としても、、
嬉しいです。
投稿情報: jyo3 | 2017年8 月20日 (日曜日) 午前 06時52分
お早うございます。
いや~、みなさんのは私には全然思いつかない手です。
どうしてそんな発想ができるのか。
今回も完全に参りました。
投稿情報: くまぷー | 2017年8 月20日 (日曜日) 午前 08時12分
maronさんの今朝再度眺めてやっと分かった^^
文字列化して操作するって発想、このシリーズのどれかの時試したんですが・・・・
私の場合、10^Row(1:16)になってしまい、精度が保てずそこで断念してしまいました。
Offset使うと後何も操作できなくなる場合が多く、そこも発展性がなくなっちゃいました。
Countifで有無をチェックするってのは今回一回もやってません。前半でもmaronさんがやってらっしゃったけど、応用できなかったと言うかまるで頭に浮かんでこなかった・・・・
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 08時22分
今回これで終わりかしら?
私自信はなにも問題思いつきませんが・・・・
難しそうに見えるが、上手い手を見つければ簡単にできるってのも良いですが、こういうセル一つでできるんか?ってのも面白いんですけどね。
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 08時26分
ジョー3の500台の奴、昨晩パッと見で分かったつもりになってましたが、丸で分かってなかったです。
=I9:I17&J9:J17
この形、思いつく以前にできるって知らなかったみたいですねーー。
ジョー3もExcel良く知ってる^^
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 09時05分
うーーん
(I9:Q17="王")*((J8:R16="竜")
この発想もなかった。いい味ですねーー
maronさんのとジョー3の分かったから、今度はminさんのだな。
これもさっぱりわかんねー
こうやって見ると私のが一番単純な発想w(無知の勝利)
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 09時18分
参考
441
{=IF(COUNT(1/(FIND(OFFSET(G7:I9,SUM((I9:Q17="王")*ROW(1:9)),SUM((I9:Q17="王")*COLUMN(A:I))),"0竜馬")-1),FIND({"王角","王馬","角王","馬王"},I1:I17&J2:J18&K3:K19&L4:L20&M5:M21&N6:N22&O7:O23&P8:P24&Q9:Q25&0&I9:I25&J8:J24&K7:K23&L6:L22&M5:M21&N4:N20&O3:O19&P2:P18&Q1:Q17),FIND({"王飛","王竜","飛王","竜王"},I9:I17&J9:J17&K9:K17&L9:L17&M9:M17&N9:N17&O9:O17&P9:P17&Q9:Q17&0&TRANSPOSE(I9:Q9&I10:Q10&I11:Q11&I12:Q12&I13:Q13&I14:Q14&I15:Q15&I16:Q16&I17:Q17))),"王手!","")}
以下分割
88
1/(FIND(OFFSET(G7:I9,SUM((I9:Q17="王")*ROW(1:9)),SUM((I9:Q17="王")*COLUMN(A:I))),"0竜馬")-1)
155
FIND({"王角","王馬","角王","馬王"},I1:I17&J2:J18&K3:K19&L4:L20&M5:M21&N6:N22&O7:O23&P8:P24&Q9:Q25&0&I9:I25&J8:J24&K7:K23&L6:L22&M5:M21&N4:N20&O3:O19&P2:P18&Q1:Q17)
174
FIND({"王飛","王竜","飛王","竜王"},I9:I17&J9:J17&K9:K17&L9:L17&M9:M17&N9:N17&O9:O17&P9:P17&Q9:Q17&0&TRANSPOSE(I9:Q9&I10:Q10&I11:Q11&I12:Q12&I13:Q13&I14:Q14&I15:Q15&I16:Q16&I17:Q17)))
その他
24
投稿情報: min | 2017年8 月20日 (日曜日) 午前 09時31分
minさんの隣接判定
FIND(OFFSET(G7:I9,SUM((I9:Q17="王")*ROW(1:9)),SUM((I9:Q17="王")*COLUMN(A:I))),"坂本竜馬")
これも理解するのにちょいと時間かかったです。
分かって見ればなるほどーーですね。
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午前 09時53分
◆発想
◆【第8回】は対象範囲内にある、王・飛・角の有無をAA・AB列を使って、1・2・3に数値化して、角・王、角・飛の有無をCOUNTします。
◆それを9ケタの数値にして、0を削除して、角による、王手飛車なので、FINDで王手・飛車とりをCOUNTして、COUNT=2にしています
◆【第9回】は対象範囲内にある、王・飛・竜・角・馬の有無をSUMIF関数を使ってAA・AB列を参照して数値化して、1・2・3になるように、INT(・・・/2)としています
◆後は、【第8回】と考え方はほぼ同じです
投稿情報: maron | 2017年8 月20日 (日曜日) 午前 11時38分
さて、また、作りたくなった。、、、問題、、、あはは、、、
で、、、
自分で考えた手法・・・、、、
それを、見つけるための、、問題でなくて、、、
ふっと、無責任に、、思った、、問題、、、
それなら、、、いくらでもできそう・・・
(今、草刈りして、疲れて、ビールが、、、そう言っている)
だから、簡単か、難しいか、、わからない問題。
3問セット、、、今作りかけてますーーー・・・
詰将棋でなく・・・
詰むや詰まざるや、、、、
的なものです、、、
投稿情報: jyo3 | 2017年8 月20日 (日曜日) 午後 04時23分
>だから、簡単か、難しいか、、わからない問題。
いいんじゃないですかーー
難しけりゃ難しいで誰かなんかやるにきまってますもんw
投稿情報: y sakuda | 2017年8 月20日 (日曜日) 午後 04時47分
>これもcountを使っているので40位は減らせると思います。
完全短縮しなければさほど重くなることはない頭で考えていたのですが、
予想が外れ、結構重くなることが分かりました。
PCが固まることはないとは思いますが、
>良い子はマネをしてはいけません ( >_<)
441を395 {=IF(COUNT(1/(FIND(OFFSET(G7:I9,SUM((I9:Q17="王")*ROW(1:9)),SUM((I9:Q17="王")*COLUMN(A:I))),"0竜馬")-1),FIND({"王角","王馬","角王","馬王"},I:I&J2:J18&K3:K19&L4:L20&M5:M21&N6:N22&O7:O23&P8:P24&Q9:Q25&0&I9:I25&J8:J24&K7:K23&L6:L22&M5:M21&N4:N20&O3:O19&P2:P18&Q:Q),FIND({"王飛","王竜","飛王","竜王"},I1:I17&J:J&K:K&L:L&M:M&N:N&O:O&P:P&Q:Q&0&TRANSPOSE(A9:Q9&10:10&11:11&12:12&13:13&14:14&15:15&16:16&17:17))),"王手!","")}
失礼しました。
投稿情報: min | 2017年8 月20日 (日曜日) 午後 10時25分
ちなみに完全短縮したら、固まります。
投稿情報: min | 2017年8 月20日 (日曜日) 午後 11時19分
お早うございます。
>ちなみに完全短縮したら、固まります。
試してみました。
かなり、遅いですが固まりませんでした。
投稿情報: くまぷー | 2017年8 月21日 (月曜日) 午前 07時57分
>今回これで終わりかしら?
ジョー3さんのがあと一つです。
投稿情報: くまぷー | 2017年8 月21日 (月曜日) 午前 08時01分
>441を395>
やはりねーーーできるんだーーーー、、、すごい、、
>ジョー3さんのがあと一つです。
あれ、、、あったけーーーー
修正しかけは、、、記憶してたけど、、
投稿情報: jyo3 | 2017年8 月21日 (月曜日) 午後 12時34分
>>ジョー3さんのがあと一つです。
>あれ、、、あったけーーーー
孫のやつです。
投稿情報: くまぷー | 2017年8 月21日 (月曜日) 午後 01時12分
>孫のやつです。
簡単すぎですね、、、
・・・・きっと、、、
もう一つ、、、足して、三題に、したらいいかなーーー
投稿情報: jyo3 | 2017年8 月21日 (月曜日) 午後 05時47分
>もう一つ、、、足して、三題に、したらいいかなーーー
暇そうだったら、、、出しますね、、、
投稿情報: jyo3 | 2017年8 月21日 (月曜日) 午後 07時20分
これから第10回の用意をします。
投稿情報: くまぷー | 2017年8 月21日 (月曜日) 午後 07時35分