解答例
問題発表時点で、68文字というものもありますが、わかりやすいと思いますのでこれを解答例とします。
82{=AND(EXACT(MID("A"&A2,COLUMN(1:1)*2-1,2),PROPER(MID("a"&A1,COLUMN(1:1)*2-1,2))))}
(minさん)
« 第102回 アッパよ~ | メイン | 第103回 買い物履歴(野菜の部) »
最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。
画像を読み取れない場合は 別の画像を表示してください。
アカウント情報
(名前は必須です。メールアドレスは公開されません。)
日 | 月 | 火 | 水 | 木 | 金 | 土 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
へぇ~ 2文字ずつ比較するのか。
私のは
82{=AND(EXACT(MID(IF(MOD(ROW(A:A),2),A1,UPPER(A1)),ROW(A:A),1),MID(A2,ROW(A:A),1)))}
投稿情報: ni | 2011年10 月15日 (土曜日) 午後 08時17分
minさんの式と考え方は同じのがあります
ただ、、、書き方が違うだけで
{=AND(EXACT(PROPER(MID("AA"&A1,ROW(A:A)*2,2)),MID("AA"&A2,ROW(A:A)*2,2)))}
投稿情報: からくち | 2011年10 月15日 (土曜日) 午後 08時26分
私の82は
{'=PRODUCT(A1=A2,IF(EXACT(UPPER(MID(A1,ROW(A:A)*2,1)),MID(A2,ROW(A:A)*2,1)),1,))=1}
へんなミスが無ければよいのですが・・・
投稿情報: くまぷー | 2011年10 月15日 (土曜日) 午後 08時43分
皆さんの式を拝見させて戴いてから
わたしの式を書こうと思っています、、、
理由は
>68文字というものもありますが
それよりは短いです
ただしその式より短い式が出ましたら、、、パス
投稿情報: からくち | 2011年10 月15日 (土曜日) 午後 08時48分
>へんなミスが無ければよいのですが・・・
A1=abcdefg
A2=ABCDEFG
A2=ABcDeFg
投稿情報: からくち | 2011年10 月15日 (土曜日) 午後 08時52分
>それよりは短いです
>へんなミスが無ければよいのですが・・・x2
間違い発見、、、故にパス
書いた式の数が多いだけ、、、か
情けない
投稿情報: からくち | 2011年10 月15日 (土曜日) 午後 08時59分
今はPC使ってないので書けませんが最終的には68より短いです。
それはともかく
からくちさんの68未満是非見たいです。
投稿情報: min | 2011年10 月15日 (土曜日) 午後 09時02分
あら 残念…
投稿情報: min | 2011年10 月15日 (土曜日) 午後 09時04分
>>へんなミスが無ければよいのですが・・・
>A1=abcdefg
>A2=ABCDEFG
示されてみれば単純なミス・・・
またもや沈没・・・orz
投稿情報: くまぷー | 2011年10 月15日 (土曜日) 午後 09時08分
一応確認ですが、row(a:a)って2007以上限定で良いんでしたっけ。
2003以下を持っていないので。
投稿情報: min | 2011年10 月15日 (土曜日) 午後 09時21分
>あら 残念…
では、、、間違えの式を
{=COUNT(FIND(PROPER(MID("AA"&A1,ROW(1:50)*2,2)),"AA"&A2))=50}
因みに、、、PROPER・UPPER・EXACT・・・等を禁止に書いた式も
間違え発見(今、世界ふしぎ発見!をTVでやっている)
情けないx2
投稿情報: からくち | 2011年10 月15日 (土曜日) 午後 09時22分
>あら 残念…
では、、、間違えの式を
{=COUNT(FIND(PROPER(MID("AA"&A1,ROW(1:50)*2,2)),"AA"&A2))=50}
因みに、、、PROPER・UPPER・EXACT・・・等を禁止に書いた式も
間違え発見(今、世界ふしぎ発見!をTVでやっている)
情けないx2
投稿情報: からくち | 2011年10 月15日 (土曜日) 午後 09時22分
findですか、、
私もfindでやろうと思いましたが、うまくいきませんでした。
あとsubstituteもやろうと思いましたが長くなりそうなのでやめました。
投稿情報: min | 2011年10 月15日 (土曜日) 午後 09時31分
ROW(A:A)
2003で使用してます。
投稿情報: ni | 2011年10 月15日 (土曜日) 午後 09時33分
今回の問題のポイントは
a1=a2では、大文字小文字の区別をしない。
同じように、match、vlookup、search等々でも区別しない。
ただし、codeを使う場合はa1=a2が役に立つ。。
投稿情報: min | 2011年10 月15日 (土曜日) 午後 09時38分
82?あれぇっ?と、一瞬思いました、、
76
{=AND(EXACT(PROPER(MID("zz"&A1,ROW(1:50)*2,2)),MID("zZ"&A2,ROW(1:50)*2,2)))}
からくちさんのようにROW(A:A)は怖くて出来ませんでした、、
100
{=AND(MMULT({1,-1},CODE(MID(A1:A2,COLUMN(1:1),1)&1))=
MOD(COLUMN(1:1)+1,2-(COLUMN(1:1)>LEN(A1)))*32)}
130
=AND(SUM(MMULT({1,-1},CODE(MID(A1:A2,COLUMN(1:1)*2,1)&1))/32)
=INT(LEN(A2)/2),MMULT({1,-1},CODE(MID(A1:A2,COLUMN(1:1)*2-1,1)&1))=0)
アレから何もアイデアが閃かず、、結局最初出来たやつだけでした、、、、
投稿情報: む印 | 2011年10 月15日 (土曜日) 午後 09時39分
>row(a:a)
>2003で使用してます
あら、2003でも出来るんでしたっけ。
じゃ、最短は65になるのかな。
投稿情報: min | 2011年10 月15日 (土曜日) 午後 09時42分
一番最初
155{=AND(SUM(EXACT(MID(A1,ROW(1:99)*2,1),MID(A2,ROW(1:99)*2,1))-1)=-YEN((LEN(A2)-1)/2),SUM(EXACT(MID(A1,ROW(1:99)*2-1,1),MID(A2,ROW(1:99)*2-1,1))-1)=0,A1=A2)}
今見ると何をやっているのか分からない式、
最初はcodeを使わないでやった方が短くならないかなあと思っていたのですが、
結局codeを使った方が短くなりました。
ということでcodeを使った式
めんどくさいから作った順に残しておいたやつ全部貼り付けます。
76{=AND((CODE(MID(A2,ROW(1:50)*2-{1,0},1)&{"a","A"})*{1,-1}>96*{1,-1}),A1=A2)}
69{=AND(CODE(MID(A2,ROW(1:50)*2-{1,0},1)&"[")*{1,-1}>=91*{1,-1},A1=A2)}
70{=AND((CODE(MID(A2,ROW(1:50)*2-{1,0},1)&{"a","A"})>96)*1={1,0},A1=A2)}
68{=AND((CODE(MID(A2,ROW(1:50)*2-{1,0},1)&{"a","A"})>96)-{0,1},A1=A2)}
67{=AND((CODE(MID(A2,ROW(1:50)*2-{1,0},1)&"[")<{91,92})-{1,0},A1=A2)}
67{=AND(CODE(MID(A2,ROW(1:50)*2-{1,0},1)&"[")*{1,-1}>{90,-92},A1=A2)}
66{=AND((CODE(MID(A2,ROW(1:50)*2-{1,0},1)&"[")-91)*{1,-1}>=0,A1=A2)}
row(a:a)が有効ならそれぞれ1文字ずつ減るのかな。
投稿情報: min | 2011年10 月15日 (土曜日) 午後 09時56分
130はダメでした、、
なるほど!!
>&"[")-91)*{1,-1}
1,3,5・・・文字目は大文字でマイナス
2,4,6・・・文字目は小文字でマイナス
>A1=A2
で文字の入れ替えに対応
いいアイデアですねー^^
投稿情報: む印 | 2011年10 月15日 (土曜日) 午後 10時22分
>いいアイデアですねー^^
a1=a2
を活用することは他の方も気づくと思っていたんですが。。
投稿情報: min | 2011年10 月15日 (土曜日) 午後 10時30分
今、かえってきました。
私の82はniさんとまったく同じでした。
投稿情報: y sakuda | 2011年10 月15日 (土曜日) 午後 10時50分
>他の方も気づくと思っていたんですが。。
誰しも頭にはあったでしょうねd
くまぷーさんもやっておられましたし、、
しかしそれは、奇数目(小文字)と偶数目(大文字)を
一つの式でチェックするアイデアがあればこそ、ですねd
わたしも
>CODE(MID(A2,ROW(1:50)*2-{1,0},1)&
の辺りまでは実際やってましたが
>"[")-91)*{1,-1}
が、思いつかなかったです、、
逆に、minさんがそこに至ったのは
a1=a2を活用するためだったということかな?
投稿情報: む印 | 2011年10 月15日 (土曜日) 午後 11時04分
CODEは最初考えたんですが、配列数式で先の方がエラーになっちゃうのであっさり放棄、Findも結局欠陥ありのしかできなかったです。
発想が貧困でした^^;
投稿情報: y sakuda | 2011年10 月15日 (土曜日) 午後 11時12分
>Findも結局欠陥あり
わかります、やりました
私も一度、からくちさんの
{=COUNT(FIND(PROPER(MID("AA"&A1,ROW(1:50)*2,2)),"AA"&A2))=50}
と全く同じ式かいてました、、^^;
投稿情報: む印 | 2011年10 月15日 (土曜日) 午後 11時45分
>82?あれぇっ?と、一瞬思いました、、
どの82でしょ?
>私の82はniさんとまったく同じでした。
これは、基本形ということで私も作っておりました。
>くまぷーさんもやっておられましたし、、
そうなんですよね。
くまぷーさんがproductを持ってきたときには、一瞬たまげましたが。。
>a1=a2を活用するためだったということかな?
これは、最初からcodeとセットで考えていました。
a2をcodeで大文字、小文字の区別をしてしまえば、
a1と比較するのはa1=a2でよいし、
逆の言い方をすれば、
a1=a2は大文字小文字を区別しないで、判定してくれるから、
あとはa2が小文字、大文字の順になっているか確認するだけでいい。
>Findも結局欠陥あり
今回いろいろ考えていただいてみなさんに感謝です。
あ、ジョー3さんはどうでした~。どんな式ですか?
>"[")-91)*{1,-1}
>が、思いつかなかったです、、
提示した式にも書いているように、私の場合
奇数文字目(x)>91
偶数文字目(y)<91
の双方をひとつの式で判定するには
x*1>91*1
y*-1>91*-1
をまとめて書くというのが原点でして
{w,y}*{1,-1}>91*{1,-1}
から
{w,y}-91)*{1,-1}>0
にはすぐにはたどりつけませんでした。
ある意味勘でやってみたらできただけでして
{w,y}*{1,-1}>91*{1,-1}
を変換した
{w,y}*{1,-1}>{91,-91}が
{w,y}-91)*{1,-1}>0と同じ
になるということがいまいち納得できていないんですwww
しかし、今回の問題作成のきっかけは、
x=yでは、大文字小文字を区別しないで判定する。
exact(w,y)では区別する。
ということがきっかけでした。
しかし、結局x=yを使うことになろうとは。
それと、「abcd」を「aBcD」に変換するのに
text(x,"小大・・")みたいな技がないのかなあと思い、出題することにしました。
もしそういった技があれば、
=text(a1,"小大・・")=a2
で20台の解答が出たかもしれませんので、、期待していたんですが。。
投稿情報: min | 2011年10 月16日 (日曜日) 午前 06時58分
あら〜
wとxが混在
wはxの間違いですm(__)m
投稿情報: min | 2011年10 月16日 (日曜日) 午前 08時24分
大小の判定方法はいろいろあると思います
何方も書かれていませんが(良い方法ではない証拠)
例えば、、、
len(code(***)+3)は結果が2か3になり大小の判定が可能
ただし文字数は決して短くは無いでしょう
文字数を無視すれば
LOOKUP等々その方法は数限りないと思います
そういった意味では面白い問題でした
(自身では長短を無視して遊ばせていただきました)
ただ、ここの主旨は文字数ですので
その殆んどは除外
投稿情報: からくち | 2011年10 月16日 (日曜日) 午前 09時01分
う~ん、難解でした。
最初に、そのままを数式にしたつもりだったのですが…
{=AND(EXACT(IF(ISEVEN(ROW(A1:A100)),UPPER(MID($A$1,ROW(A1:A100),1)),MID($A$1,ROW(A1:A100),1)),MID($A$2,ROW(A1:A100),1)))}
とすると、エラーになってしまい、全く解らなくなりました。
どうも、ISEVEN関数は配列式に向かない様で、MODを使えば良かったんですね!
それにしても、皆さん流石です。
投稿情報: かず | 2011年10 月16日 (日曜日) 午後 09時38分
ゆうべ・・・遅くに帰ってきました。
問題の意味は、単純・・・
誘い手がたくさん。
・・・・
でも、逃れの妙手が・・・て、ような・・・
大道詰将棋・・・みたいな問題だったかも、、、
私は、rightで、攻めたような気がする。
(今、別のパソコン・・・)
投稿情報: jyo-3 | 2011年10 月17日 (月曜日) 午前 09時24分
>row(a:a)が有効ならそれぞれ1文字ずつ減るかな。
これが、ストレスなく出来るとは思いませんでした、、
それと、66の式なら
91-CODE で、ひでもう一文字減らせました^^
{=AND(A1=A2,(91-CODE(MID(A2,ROW(A:A)*2-{1,0},1)&"["))*{1,-1}<1)}
投稿情報: む印 | 2011年10 月17日 (月曜日) 午後 02時56分
>91-CODE で、ひでもう一文字減らせました^^
コメントが変でした、、、
91-CODE で、もう一文字減らせました^^
投稿情報: む印 | 2011年10 月17日 (月曜日) 午後 03時00分
>これが、ストレスなく出来るとは思いませんでした、、
むしろ2003までは大丈夫です。2007以降では行数が多い分重くなるw
投稿情報: y sakuda | 2011年10 月17日 (月曜日) 午後 03時55分
>2007以降では行数が多い分重くなるw
なるほど、納得です!
からくちさんの
>len(code(***)+3)
これもいいアイデアですね~^^
>ただし文字数は決して短くは無いでしょう
minさんのやり方で使ってみたらそうでもなかったです、
{=AND(LEN(CODE(MID(A2,ROW(A:A)*2-{0,1},1)&{0,"z"})+3)={2,3},A1=A2)}
むしろ、式として理解しやすくなった気がします。
投稿情報: む印 | 2011年10 月17日 (月曜日) 午後 06時18分
皆さん凄いですね、
今回は、ペンキ塗り(事情があって、)と、、、
東京に3日で、、、・・・・・
・・・・・・・・・・・
忙しさで、、
作ったファイルまでなくなった。・・・・
たしか、、、
きちんと動いたようなのは、、、
108文字だった。
投稿情報: ジョー3 | 2011年10 月17日 (月曜日) 午後 07時23分
〈〉{3,2}のほうが短くならないかなあ?
投稿情報: min | 2011年10 月17日 (月曜日) 午後 08時36分
>〈〉{3,2}のほうが短くならないかなあ?
あっ!・・・・漢字かぁ~
{=AND(LEN(CODE(MID(A2,ROW(A:A)*2-{0,1},1)&"山")+3)<>{3,2},A1=A2)}
64文字でいけました!!
投稿情報: む印 | 2011年10 月17日 (月曜日) 午後 09時22分
分かるような分からないような・・・・
投稿情報: y sakuda | 2011年10 月18日 (火曜日) 午前 12時36分
minさんの考え方を整理したら
60文字を切れることが判明しました!
投稿情報: む印 | 2011年10 月18日 (火曜日) 午前 11時34分
>60文字を切れることが判明しました!
わわわ、、、執念ですねーーー
投稿情報: jyo-3 | 2011年10 月18日 (火曜日) 午前 11時55分
すいません、早とちりで間違ってました、、m(__)m
投稿情報: む印 | 2011年10 月18日 (火曜日) 午後 01時04分
>すいません、早とちりで間違ってました、、m(__)m
あはは、、、あいきょう、あいきょう・・・・・、、、、、
投稿情報: jyo-3 | 2011年10 月18日 (火曜日) 午後 01時59分