出題者解答
問題考えた時に思ったのはFrequencyの例題だということで、その時考えたものを整理したのが、
103の↓です。
=AND(FREQUENCY(CODE(MID(B4,ROW(1:12),1)&0),ROW(1:99))=FREQUENCY(CODE(MID(B6,ROW(1:12),1)&0),ROW(1:99)))
出題後、Large,Smallでも同じということで配列数式にはなりますが、97
{=AND(LARGE(CODE(RIGHT(0&B4,ROW(1:12))),ROW(1:12))=LARGE(CODE(RIGHT(0&B6,ROW(1:12))),ROW(1:12)))}
で、これからが、問題で、単純にCodeの和ではダメなことはあきらかなので、自乗和で比較・・・・・
でも、これは、本当に大丈夫、つまり、文字を入れ替えても同じ値になるケースがないということが証明できない・・・
疑惑の68
{=VAR(CODE(MID(B4,ROW(1:12),1)&0))=VAR(CODE(MID(B6,ROW(1:12),1)&0))}
もちろんRow(A:A)にすれば二文字減ります。
そういうことで、ただしいと確信もてるのは73の↓です。
{=SUM(LN(CODE(MID(B4,ROW(1:12),1)&0))-LN(CODE(MID(B6,ROW(1:12),1)&0)))=0}
正しいと考える理由は次の通りです。
1.eを底にした対数は無理数ですから、整数の対数はすべて無理数になる
2.従って、文字を入れ替えて同じ数になることはあり得ない
3.同じ理由で、複数の文字を違う文字数の複数の文字と入れ替えることも不可能
ただし、Excelの実数は打ち切られているので有限小数つまり有理数ですから、厳密に言えば
上記は成り立ちません。でも、32、65~90の範囲ではそんな奇跡みたいなことは起こり得ないと
割り切りました^^;
からくちさんはRow(1:12)は使ってないとのこと。一体全体からくちさんの68ってのはどんなんだろ?
楽しみです。
( y sakudaさん談)
>単純にCodeの和ではダメなことはあきらかなので、自乗和で比較・・・・
ここだけ見ました。
で、
1(和)はだめ
2(自乗)こわい気がする
3乗
4乗
もーう・・・・5乗だーー
ってことで、68文字。
{=SUM(CODE(RIGHT(1&B4,ROW(A:A)))^5,-CODE(RIGHT(1&B6,ROW(A:A)))^5)=0}
考え方も、式も単純でしょ・・・・
でも、、ちょっと、・・・・・不満足だった。
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 08時14分
>からくちさんはRow(1:12)は使ってないとのこと。
これに付いての疑問点を半分だけ答えます。(半分とは、、、ケチ)
>{=VAR(CODE(MID(B4,ROW(1:12),1)&0))=VAR(CODE(MID(B6,ROW(1:12),1)&0))}
この式はROW(1:12)が使われています
勿論これを使った式、全てが間違いとは言いません
ただし、VAR関数では間違いだからです
B4=AAAAAAAAAAAA
B6=BBBBBBBBBBBB
投稿情報: からくち | 2009年10 月10日 (土曜日) 午後 08時16分
sakudaさんーーーすごいですーーー
VAR ???忘れてました。
ん、、、、
と思ったとたん・・・・・
からくちさん、、、すごいですーーー。
おれのも、なんか、ないですか、、、
からくちさん、、、
ちょっと自信ないジョー3
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 08時23分
ジョー3は5乗和ですかw
>ただし、VAR関数では間違いだからです
なるほど、Varにしちゃうと文字一種の時ダメになっちゃいますね。
気が付かなかったです^^;
投稿情報: y sakuda | 2009年10 月10日 (土曜日) 午後 08時25分
>ジョー3は5乗和ですかw
あはは、、、65536行だから、良かった。
ヤッテナイが、きっと、2007では・・・・
問題があるよねーーー
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 08時29分
はじめの失敗式56は
{=SUM(MOD(LEN(SUBSTITUTE(B4&B6,CHAR(ROW(1:90)),)),2))=0}
とりあえず応急処置をした72は
{=SUM(MOD(LEN(B4)/LEN(B6)*LEN(SUBSTITUTE(B4&B6,CHAR(ROW(1:90)),)),2))=0}
これも怪しい・・・
投稿情報: む印 | 2009年10 月10日 (土曜日) 午後 08時47分
>はじめの失敗式56は
{=SUM(MOD(LEN(SUBSTITUTE(B4&B6,CHAR(ROW(1:90)),)),2))=0}
おおーーーーー
わたしの、58にそっくりで・・・・
たいへんたいへん・・・・・・
・・・・・・うれしいですーーー
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 08時53分
そっくりだから、、、出してみます。
{=MAX(MOD(LEN(SUBSTITUTE(B4&B6,CHAR(ROW(32:122)),)),2))=0}
なんか、、、わたし、、、数字がへんかも、、
どんなとき、例外的なことが
起こるか・・・・面白かったけど、,
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 08時57分
>なんか、、、わたし、、、数字がへんかも、、
あーーー
大文字だったかーーー失敗・・・
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 08時59分
何か今回は悪役に徹する、、、かな
>はじめの失敗式56は
>これも怪しい・・・
B4=AAAA
B6=AA
投稿情報: からくち | 2009年10 月10日 (土曜日) 午後 09時01分
>そっくりだから、、、出してみます。
>B4=AAAA
>B6=AA
投稿情報: からくち | 2009年10 月10日 (土曜日) 午後 09時02分
>CHAR(ROW(32:122))
ああっ、なるほど!
投稿情報: む印 | 2009年10 月10日 (土曜日) 午後 09時09分
>B4=AAAA
>B6=AA
そそ、、、、
書いてすぐ、気付いてしまった。
で、、・・・・
おい!!ジョーーー
書く前に気付けよなーーー
だった。
2文字続くと・・・・がっくりなのだ。
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 09時11分
>>CHAR(ROW(32:122))
>ああっ、なるほど!
そそ、、、小文字ばかり使ってました。
・・・・・・・(思い込み怖い)
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 09時13分
>B4=AAAA
>B6=AA
>ああっ、なるほど!×2
またまた修正して76文字
{=SUM(MOD((LEN(B4)<>LEN(B6))+LEN(SUBSTITUTE(B4&B6,CHAR(ROW(1:122)),)),2))=0}
投稿情報: む印 | 2009年10 月10日 (土曜日) 午後 09時18分
>くまぷー様お疲れ様です。
>今日くまぷーさんお忙しいようですが
お気遣いありがとうございます。
往復で5時間くらい運転したので
少々疲れました。
・・・風呂に入ってから、みなさんの投稿を
拝見させて頂きます。m(__)m
投稿情報: くまぷー | 2009年10 月10日 (土曜日) 午後 09時38分
今更ですが、、、鉄腕アトムは凄い(TBS)
>またまた修正して76文字
B4=AA
B6=BB
投稿情報: からくち | 2009年10 月10日 (土曜日) 午後 09時50分
>B4=AA
>B6=BB
ん、、、ーーーー
短縮こわーーい
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 10時47分
この問題を見て初めに感じたのは
式の検証の難しさでした。今、みなさんの
書き込みを見ているとやはり、苦労されて
いるようで、私だけではなかったと少し安心しました。
・・・で私の考えたのは・・・
まず、二つの文字列の長さを比較する・・・
異なればFalse
同じならば循環参照でSubstituteをぶんまわして
1文字ずつ消していく・・・
全部消えればTRUE・・・なんてやつでした。
結局、頭の中で考えただけでしたが・・・(^^ゞ
投稿情報: くまぷー | 2009年10 月10日 (土曜日) 午後 10時48分
昨日あんまり寝ていなかったので、夕食の後寝てしまいました。
さっき目が覚めました。
最初にやった97はsakudaさんと同じでした。
昨日紙に書いたやつを元に作ったやつは、
71{=SUM(CODE(MID(B4,ROW(1:12),1)&1)^2-(CODE(MID(B6,ROW(1:12),1)&1)^2))=0}
53{=SUM(CODE(MID(B4:B6,COLUMN(A:L),1)&1)^2*{1;0;-1})=0}
で二乗にするか何乗にするかはジョー3さん同様迷いましたが、とりあえず二乗のやつを掲示しておきます。どっちみち完全にあっていると証明出来ませんので。
投稿情報: min | 2009年10 月10日 (土曜日) 午後 10時52分
>全部消えればTRUE・・・なんてやつでした。
そそ、、、それやりましたーーー
で、8段階で・・・・・挫折・・・
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 10時52分
> )^2*{1;0;-1})=0}
おーーーー
このへんは、、、
技術だねーーーー
おらは、そのあたりは、、、だめだめ、、、
投稿情報: jyo-3 | 2009年10 月10日 (土曜日) 午後 10時55分
>結局、頭の中で考えただけでしたが・・・(^^ゞ
循環参照は私も頭の中では考えました。
投稿情報: min | 2009年10 月10日 (土曜日) 午後 11時00分
ちょっと外出してたら、沢山投稿が^^;
うーーんからくちさん鋭い指摘の連発ですねーー
これから、皆さんの改めて拝見しまーーす。
投稿情報: y sakuda | 2009年10 月10日 (土曜日) 午後 11時05分
>技術だねーーーー
というより、私の71の式は明らかに式を繰り返しているので、COLUMNを使って、配列を整理して短縮しただけです。
投稿情報: min | 2009年10 月10日 (土曜日) 午後 11時06分
む印さん、ジョー3のB4&B6とまとめて処理するのは私も考えたんですけど、ダメっぽいと思い深く追求せずに止めちゃいました。(実際に形にまではしてない)
minmaxさんの
>{1;0;-1}
はさすがですねーー
そもそも B4:B6と言う発想がないから、行くはずもなかったんですがw
(一セル離したのにも他意はないです)
からくちさんの早く見たいな^^
投稿情報: y sakuda | 2009年10 月10日 (土曜日) 午後 11時24分
>からくちさんの早く見たいな
あれっ、答えは出ているも同然ですが、、、
ROW(1:12)は・・・・・・×
それなら
ROW(1:13)にしてしまえばOK
で
ROW(A:A)でマイナス2
>そもそも B4:B6と言う発想がないから
これ、短い式と考えたとき1番先に頭に過ぎりました
、、、が、即却下
理由はB4乃至B6は勿論OKですが
B5は空白とは言え参照している限り作業列に当ってしまう、、、と言う判断で・・・
投稿情報: からくち | 2009年10 月11日 (日曜日) 午前 01時19分
>ROW(1:12)は・・・・・・×
>それなら
>ROW(1:13)にしてしまえばOK
全然意味が分からんw
どういう状況でROW(1:12)がダメなんでしょ?
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午前 01時26分
わたしの68、、、ROW(A:A)を使えば66とした式は、、、
この問題
>単純にCodeの和ではダメなことはあきらかなので
{=PRODUCT(CODE(RIGHT(0&B4,ROW(1:12))))=PRODUCT(CODE(RIGHT(0&B6,ROW(1:12))))}
{=SUM(1/CODE(RIGHT(0&B4,ROW(1:12))))=SUM(1/CODE(RIGHT(0&B6,ROW(1:12))))}
これはOKなのですが、苦手なより短い式でとなると・・・
そこで使ってみようと思ったのがVAR
過去に殆ど使ったことの無い関数なので
どんな計算をしているのか改めてヘルプを見返すと
何のことは無い、、、分散を得ているだけ
と言うことは例え違う値でも分散が無いと・・・
つまりは何がB4・B6に入ろうが強制的?に分散させてしまえばいいだけ
{=VAR(CODE(RIGHT(0&B4,ROW(1:13))))=VAR(CODE(RIGHT(0&B6,ROW(1:13))))}
{=VAR(CODE(MID(B4,ROW(1:13),1)&0))=VAR(CODE(MID(B6,ROW(1:13),1)&0))}
多分同じ式と思ったのですが、、、
ROW(1:12)では不具合があるのでROW(1:13)を使っています
と、書いては不味いと思い
ROW(1:12)は使っていません
と、書いた次第
投稿情報: からくち | 2009年10 月11日 (日曜日) 午前 09時17分
そうか・・・・・
ROW(1:12)だと同一文字12文字の時だけコケル・・・・・
逆にROW(A:A)なら大丈夫ですね。
私のやってること同じですが、そこに気が付いたかどうかで天と地の差だな^^;
脱帽です。
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午前 10時17分
からくちさんのProduct版
この場合は桁落ちするのは全く関係ないですねーー
Sum(1/X)これも、32、65~90の文字に限ってるから全く大丈夫みたいですねーー
倍数になるケースがなければ大丈夫と言いながら、SQRTやらLNは考えてましたが一番単純なの忘れてたw
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午前 10時36分
>B5は空白とは言え参照している限り作業列に当ってしまう、、、と言う判断で・・
からくちさんは自分にも厳しいですね。
確かにB5を参照しているのは間違いないですが、B5が空白でなくてもエラー値以外なら結果は変わらないので良いとの自分に甘い判断でした。
今さらですが、これなら許せるのかな?
62{=SUM(CODE(MID(INDEX(B4:B6,{1,3}),ROW(1:12),1)&1)^2*{1,-1})=0}
それにしてもVARは考えなかった。
投稿情報: min | 2009年10 月11日 (日曜日) 午前 10時45分
minmaxさんおはようございます
この62ですが、どうもIndexの所が上手く動かず、B4しか拾ってこないみたいです。
よさそうなんだけど、なんでだろ?
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午前 11時06分
INDEXでそういう使い方はダメなんでしたっけ?
じゃあチューズとか別の関数かな?
現在出先で検証できません。
投稿情報: min | 2009年10 月11日 (日曜日) 午前 11時34分
>B4=AA
>B6=BB
やっぱりB4&B6では駄目でしたねー^^;>
minさんの考え方いいですねー
それをヒントに66
{=SUM(CODE(MID(B4&10^12&B6&10^12,ROW(1:12)+{0,12},1))^2*{1,-1})=0}
こんなのもあり?(確信はありません)
=FTEST(CODE(MID(B4,ROW(1:12),1)&1),CODE(MID(B6,ROW(1:12),1)&1))>98%
=TTEST(CODE(MID(B4,ROW(1:12),1)&1),CODE(MID(B6,ROW(1:12),1)&1),2,1)=1
投稿情報: む印 | 2009年10 月11日 (日曜日) 午前 11時46分
検証が難しいってそういうことだったんですね
思ったより数理的な問題だったんだなあ
感心するしかできないやw
む印さんの
>{=SUM(CODE(MID(B4&10^12&B6&10^12,ROW(1:12)+{0,12},1))^2*{1,-1})=0}
B4:AAAAAA
B6:AAAAAA
がFALSEになるみたい
>=TTEST(CODE(MID(B4,ROW(1:12),1)&1),CODE(MID(B6,ROW(1:12),1)&1),2,1)=1
B4:A
B6:A
でDIV0エラーになってしまいました(全く理解してないけど^^;;;)
投稿情報: himi | 2009年10 月11日 (日曜日) 午後 02時43分
あぁー、また根本的に間違ってました^^;
投稿情報: む印 | 2009年10 月11日 (日曜日) 午後 03時21分
>{=SUM(CODE(MID(B4&10^12&B6&10^12,ROW(1:12)+{0,12},1))^2*{1,-1})=0}
む印さんのこれ、B4&10^12の方はLeftで12ケタにそろえないとまずいですね。
>思ったより数理的な問題だったんだなあ
いえ、上手い判定手段を模索するとそうなるだけで、出題者解答の103とか97とかでは数理的要素全くなしです。
himiさん119っておっしゃってたけど、Frequency版かなにかなんでしょうか?
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午後 06時28分
>himiさん119っておっしゃってたけど、Frequency版かなにかなんでしょうか?
いえ、そんな高等な関数は全く考えつかなくて(^^ゞ
{=AND(SMALL(CODE(MID(B4&REPT("a",12),ROW(1:12),1)),ROW(1:12))=SMALL(CODE(MID(B6&REPT("a",12),ROW(1:12),1)),ROW(1:12)))}
97に贅肉をゆったりつけたかんじでしょうかw
CODEは先頭文字をみるので、RIGHTで上手く作れたんですね。納得です。
投稿情報: himi | 2009年10 月11日 (日曜日) 午後 07時24分
>>himiさん119っておっしゃってたけど、Frequency版かなにかなんでしょうか?
>いえ、そんな高等な関数は全く考えつかなくて(^^ゞ
高等とかなんとかではなく、私は問題作った直後、Frequencyしか思いつかなかったw
でも結局Large、Smallの方が短くなりました。
Rightなんかは、慣れですねーーw
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午後 07時41分
あ、Frequency、使われてるのは見かけても目がスルーだったので、
今、ヘルプを見てみました。(たぶん過去にも見たはずだけど…)
ああ、なるほど、配列を返す希少な関数なんですね
便利そうな意味がようやくわかった気が^^
使いこなせるかは別問題w
投稿情報: himi | 2009年10 月11日 (日曜日) 午後 07時56分
>ああ、なるほど、配列を返す希少な関数なんですね
そうなんですが、私なんかもここでからくちさんが色んな応用みせてくれるまで、ほとんど使ったこと無かったです。
確か過去には1回、田中さんの掲示板で、Frequencyの例題見たいな質問に答える際、使ってみただけかも^^;
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午後 08時01分
どうやら、出尽くした見たいですねーー
この問題、本当にACUOブログの提灯持ちになにかと考えて作っただけで、面白くなるとは全く考えてなかったんですが、私自身もvarで落とし穴に落ちちゃったし、結構奥が深かったですねーー。
意外でした^^
明日辺り、次のからくちさんの難問が出題されるのかな?
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午後 09時30分
>明日辺り、次のからくちさんの難問が出題されるのかな?
そうですね。
そろそろですかね・・・
投稿情報: くまぷー | 2009年10 月11日 (日曜日) 午後 09時37分
あぁぁ・・・・・、結局一つの式にできなかったです。(p_-)
複数回出てくるアルファベットをいかに処理するかで
皆さんのようにまとめてって言う発想にならなかったです。
T1、T2、T3、みたいに切り出して比較する
と言う考え方から抜け切れなった。^^;
作業セルでできましたから、配列数式でも
作れそうな気がしたんですけどね...。^^;
H4=IF(COUNTIF($L$4:$L$15,J4),TRUE,FALSE)
I4=MID($B$4,ROW(A1),1)
J4=I4&COUNTIF($I$4:I4,I4)
K4=MID($B$6,ROW(B1),1)
L4=K4&COUNTIF($K$4:K4,K4)
これらの式を15行目までコピー。
これを配列数式に作りたかった。^^;
投稿情報: ますたあ | 2009年10 月11日 (日曜日) 午後 10時00分
>どうやら、出尽くした見たいですねーー
私的にはそうなんですが、
>62{=SUM(CODE(MID(INDEX(B4:B6,{1,3}),ROW(1:12),1)&1)^2*{1,-1})=0}
がうまくいかなかったので、
代わりに
59{=SUM(CODE(MID(IF({0,1},B4,B6),ROW(1:12),1)&1)^2*{1,-1})=0}
これならちょっとはいいかな?
投稿情報: min | 2009年10 月11日 (日曜日) 午後 10時10分
なんか、ますたーさんの却って難しいw
分かるようで分からん^^;
ところで、
Abbb
A
がTrueになっちゃいますね。
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午後 10時14分
minmaxさん、今度のは大丈夫みたいですねーー
それにしても50台は凄いな。
投稿情報: y sakuda | 2009年10 月11日 (日曜日) 午後 10時46分
>IF({0,1},B4,B6)
ぎょえーーー、
IFの分岐で、二つの配列を作るとは、すばらしいアイデア!
これはいろいろ使えそうです!!
投稿情報: む印 | 2009年10 月12日 (月曜日) 午前 09時39分
む印さんお疲れ様です。
お宝でも変なことやってたの思いだしました。
投稿情報: min | 2009年10 月12日 (月曜日) 午前 10時18分
>お宝でも変なことやってたの思いだしました。
これのことかな?
=left("\",mod(counta(a$7:a7,a1:if(rows(1:$8)=2,$d1:$h2,$f1)),9)=6)
これだけ見ると一体全体なんじゃ?って感じw
久しぶりに↓見ましたが並べるとなかなか壮観ですねーー。綺麗だし。
http://www.geocities.jp/kuma_pooh1958/sub7.html
投稿情報: y sakuda | 2009年10 月12日 (月曜日) 午前 10時32分
>がTrueになっちゃいますね。
検証してもらったんだ。^^;
すいませんね~。
確かに、Trueになっちゃいますね。
空白数字と数字の比較になるんだけど
イコールの判定になってしまうんですね。
未完成品の式ですが、
考え方だけでも説明しようかと思って書いたのですが...。
^^;;;;;;;;
投稿情報: ますたあ | 2009年10 月12日 (月曜日) 午後 02時12分
>考え方だけでも説明しようかと思って書いたのですが...。
しばらくいじってたのですが、よー分からんかったですw
投稿情報: y sakuda | 2009年10 月12日 (月曜日) 午後 03時22分