653文字
これを、、うまくまとめられない、、、はずかしさ、、
=LEFT("○",OR(
(MID(H2,2,1)=B$2)*COUNTIF(A$1:C$3,RIGHT(H2))*COUNTIF(A$1:C$3,LEFT(H2)),
(MID(H2,2,1)=C$2)*COUNTIF(B$1:D$3,RIGHT(H2))*COUNTIF(B$1:D$3,LEFT(H2)),
(MID(H2,2,1)=D$2)*COUNTIF(C$1:E$3,RIGHT(H2))*COUNTIF(C$1:E$3,LEFT(H2)),
(MID(H2,2,1)=B$3)*COUNTIF(A$2:C$4,RIGHT(H2))*COUNTIF(A$2:C$4,LEFT(H2)),
(MID(H2,2,1)=C$3)*COUNTIF(B$2:D$4,RIGHT(H2))*COUNTIF(B$2:D$4,LEFT(H2)),
(MID(H2,2,1)=D$3)*COUNTIF(C$2:E$4,RIGHT(H2))*COUNTIF(C$2:E$4,LEFT(H2)),
(MID(H2,2,1)=B$4)*COUNTIF(A$3:C$5,RIGHT(H2))*COUNTIF(A$3:C$5,LEFT(H2)),
(MID(H2,2,1)=C$4)*COUNTIF(B$3:D$5,RIGHT(H2))*COUNTIF(B$3:D$5,LEFT(H2)),
(MID(H2,2,1)=D$4)*COUNTIF(C$3:E$5,RIGHT(H2))*COUNTIF(C$3:E$5,LEFT(H2))))
(ジョー3さん)
******************************************************************************************************
今回の問題は配列のお勉強問題と思いました。
結構面白い問題でした。
最初にやった233文字
223{=LEFT("○",COUNT((FIND(MID(H2,1,1),A$1:C$3&A$2:C$4&A$3:C$5&B$1:D$3&B$2:D$4&B$3:D$5&C$1:E$3&C$2:E$4&C$3:E$5)+FIND(MID(H2,3,1),A$1:C$3&A$2:C$4&A$3:C$5&B$1:D$3&B$2:D$4&B$3:D$5&C$1:E$3&C$2:E$4&C$3:E$5))/(MID(H2,2,1)=B$2:D$4)))}
まとめたもの。
141{=LEFT("○",COUNT(SEARCH(REPLACE(H2,2,1,"*"),REPT(A$1:C$3&A$2:C$4&A$3:C$5&B$1:D$3&B$3:D$5&C$1:E$3&C$2:E$4&C$3:E$5,2))/(MID(H2,2,1)=B$2:D$4)))}
配列のお勉強応用編
126{=LEFT("○",COUNT(SEARCH(REPLACE(H2,2,1,"*"),REPT($1:3&$2:4&$3:5&B$1:D3&B$3:D5&C$1:E3&C$2:E4&C$3:E5,2))/(MID(H2,2,1)=B$2:D4)))}
番外編2007以上互換性モードで(PCによってはリソース不足になるから実験しないほうがいいと思う)
119{=LEFT("○",COUNT(SEARCH(REPLACE(H2,2,1,"*"),REPT(A:C&$2:4&$3:5&B:D&B$3:D5&C:E&C$2:E4&C$3:E5,2))/(MID(H2,2,1)=B$2:D4)))}
(minさん)
****************************************************************************************************
くまぷーさん、こんにちは 96回の回答をお送りします。
最初につくった改行込みの526文字
{=LEFT("○",(MID(H2,2,1)=C$3)+(MID(H2,2,1)=B$2)*OR(B$2:C$3=LEFT(H2))*OR(B$2:C$3=RIGHT(H2))+(MID(H2,2,1)=B$3)*OR(B$2:C$4=LEFT(H2))*OR(B$2:C$4=RIGHT(H2))+(MID(H2,2,1)=B$4)*OR(B$3:C$4=LEFT(H2))*OR(B$3:C$4=RIGHT(H2))+(MID(H2,2,1)=C$2)*OR(B$2:D$3=LEFT(H2))*OR(B$2:D$3=RIGHT(H2))+(MID(H2,2,1)=C$4)*OR(B$3:D$4=LEFT(H2))*OR(B$3:D$4=RIGHT(H2))+(MID(H2,2,1)=D$2)*OR(C$2:D$3=LEFT(H2))*OR(C$2:D$3=RIGHT(H2))+(MID(H2,2,1)=D$3)*OR(C$2:D$4=LEFT(H2))*OR(C$2:D$4=RIGHT(H2))+(MID(H2,2,1)=D$4)*OR(C$3:D$4=LEFT(H2))*OR(C$3:D$4=RIGHT(H2)))}
個々の判定に配列を使用しているので、さらに配列でまとめようとすると、配列の配列が必要?
精一杯の174文字{=LEFT("○",OR((LEN(SUBSTITUTE(SUBSTITUTE(LEFT(A$1:C$3&B$1:D$3&C$1:E$3&A$2:C$4&C$2:E$4&A$3:C$5&B$3:D$5&C$3:E$5&10000,8),LEFT(H2),,1),RIGHT(H2),,1))=6)*(B$2:D$4=MID(H2,2,1))))}
真ん中文字を判定、前後の文字を文字列から削除して文字数をチェック。
これはもう削れない?
(niさん)
***************************************************************************************************
146です
{=LEFT("○",MAX((B2:D4=MID(H2,2,1))*LEN(SUBSTITUTE(SUBSTITUTE(A1:C3&B1:D3&C1:E3&A2:C4&C2:E4&A3:C5&B3:D5&C3:E5,LEFT(H2),5^9),RIGHT(H2),5^9,1))/15))}
ただし、前提として、最初の文字が重複しないということがあります。
もし、いちご、ゆりね、りんご のように最初の文字(り が2回)ということになると、最初のSubstituteに ,1 を加える必要があり、2文字増えます。
考え方としては、二番目の文字の位置決めをし、その周囲に先頭と末尾の文字が両方そろっているというのを〇の条件にしています。
なお、この方法だと、ココアには対応できますが、トマト(最初と最後が同じ)には対応できません。
(sakudaさん)
*****************************************************************************************************
りすです。とりあえず、解答を送ります。
もっと短縮できそうだけど、技術がなく、動くものが作れませんでした。
169{=LEFT("○",SUM((COUNTIF(OFFSET(B$2,{0,1,2},{0;1;2}),MID(H2,2,1)))*COUNTIF(OFFSET(A$1,{0,1,2},{0;1;2},3,3),LEFT(H2))*COUNTIF(OFFSET(A$1,{0,1,2},{0;1;2},3,3),RIGHT(H2))))}
(りすさん)
******************************************************************************************************
今回の問題は、、、ジョー3さん、並びに皆さんに完敗です
最短式の前後10%以内なら、それなりに競ってはいる
最短式の前後20%以内なら、他を圧倒した式なら競ったかな
最短式の20%越えでは、、、論外
今回は残念ながら、、、論外
ここの主旨は最短式であって、数勝負では無い
わたしの考え方ではそのどれも重複回避に文字数を費やしてしまう
いろいろ書いたとは言えその束縛から逃げ出すことは出来なかった
全く別角度からのアプローチが必要なのでしょうが
果たしてそれで上手く遂行してくれるのか、、、
弄らないで、、、頭の中で否定してしまっている
最悪の、、、パターン
一番やってはいけないこと
常日頃一番否定していること
自身がやっているとは、、、情けない
<わたしの代表的な考え方>
3文字なので2番目(真ん中)の文字の位置を探し
それに隣接する範囲内に前後の文字があれば条件に適合
探し方はいろいろ、、、ジョー3さんの様に
縦に1・2~もよし、横に1・2~もまたよし
範囲の取り方も
直接 B2:D4 と入れる方法
位置を数値に変えてしまう方法
INDEX等で取得する方法
その他いろいろ
一例:数値にする場合
245,13456,256,12578,12346789,23589,458,45679,568等でそのまま範囲に、、、
124578235689123456789等でMIDなりで範囲に、、、などなど
検索はCOUNTIF・FIND・OR・・・これこそ色々
良さは、、、想定外無し(今の日本政府とは違う)
欠点は、、、文字の重複回避に文字数を費やしてしまう
わたしは、、、エクセルは第一に弄る事と思っていました
最近これを怠っていたが故、、、論外になってしまった(反省)
ジョー3さん、、、ありがとう
(からくちさん)
**********************************************************************************************
3文字限定とのことで、多分これで大丈夫と思うのですが、はっきり言って自信はありません、、、
264文字{=LEFT("○",(COUNTIF(OFFSET(INDIRECT("R"&SUBSTITUTE(MIN(IF(MID(H2,2,1)=$B$2:$D$4,{1;2;3}/1%+{1,2,3})),0,"C"),),,,3,3),MID(H2,{1,3},1))=1)+(COUNTIF(OFFSET(INDIRECT("R"&SUBSTITUTE(MAX((MID(H2,2,1)=$B$2:$D$4)*({1;2;3}/1%+{1,2,3})),0,"C"),),,,3,3),MID(H2,{1,3},1))=1))}
とりあえず今回も参加できてよかった、、--
(む印さん)
最近のコメント