« 第88回 何進数ですか? | メイン | 第89回 πの計算 »

2011年2 月19日 (土曜日)

コメント

y sakuda

結局なにもおもいつきませんでした^^;

ジョー3

短くしようと思って、、LOGで遊びましたが、、
時々、うまくいきませんでした。・・・・
・・・・・・
どなたか、、、うまくされそうですが、、、、

りす

75{=MATCH(B3,(LEFT(D3*1)+MID(D3*1&0,2,1)/ROW(1:10))*ROW(1:10)^(LEN(D3*1)-1))}

りす

sakudaさんのこれで行けそう?
69=MATCH(B3,MMULT(C1:J1+1,MID(D3,ROW(1:8),1)*COLUMN(A:J)^(8-ROW(1:8))))

くまぷー

最初からギブアップでした~

supermab

上手くいきそうで…いかなかった^^

配列を二重にしようとしたのが敗因か…

悔しい~! > <;

ni

なーんにも思いつかなくて、力づくで
=MATCH(--D3,{SUMPRODUCT(MOD(INT(B3/2^{0,1,2,3,4,5,6,7,8}),2)*10^{0,1,2,3,4,5,6,7,8}),0)+1,
SUMPRODUCT(MOD(INT(B3/3^{0,1,2,3,4,5,6,7,8}),3)*10^{0,1,2,3,4,5,6,7,8}),0)+1,
SUMPRODUCT(MOD(INT(B3/4^{0,1,2,3,4,5,6,7,8}),4)*10^{0,1,2,3,4,5,6,7,8}),0)+1,
SUMPRODUCT(MOD(INT(B3/5^{0,1,2,3,4,5,6,7,8}),5)*10^{0,1,2,3,4,5,6,7,8}),0)+1,
SUMPRODUCT(MOD(INT(B3/6^{0,1,2,3,4,5,6,7,8}),6)*10^{0,1,2,3,4,5,6,7,8}),0)+1,
SUMPRODUCT(MOD(INT(B3/7^{0,1,2,3,4,5,6,7,8}),7)*10^{0,1,2,3,4,5,6,7,8}),0)+1,
SUMPRODUCT(MOD(INT(B3/8^{0,1,2,3,4,5,6,7,8}),8)*10^{0,1,2,3,4,5,6,7,8}),0)+1,
SUMPRODUCT(MOD(INT(B3/9^{0,1,2,3,4,5,6,7,8}),9)*10^{0,1,2,3,4,5,6,7,8}),0)+1},0)
ってしようと思ったら、「数式が長すぎますっ!!!」
って、おこられました^^;

y sakuda

ちょっと用足ししてました。
りすさんのしばらく眺めてたんですが、どうもよう分からん^^;
>sakudaさんのこれで行けそう?
おっしゃる通りみたいです。
まるで考えなかったw

y sakuda

>ってしようと思ったら、「数式が長すぎますっ!!!」
それ以前に{}の中に数式なんかかけないんじゃないのかしらん???

りす

N進数の全桁を10進数に戻すのではなく、
上位2桁のみ、10進数に戻して判定しています。
最初は下1桁や下2桁や上位1桁で試してみましたが、
誤動作が多かったため、上位2桁にしました。

y sakuda

>上位2桁のみ、10進数に戻して判定しています。
上位二けたは分かりますが・・・・
確かに動いてるんですが、いまだに理解できてない^^
minmaxさんと言いリスさんと言い一回頭の中検査してみたいですねーー

りす

実際に、上位1桁だけ計算させれば、理解出来ると思います。
上位2桁,上位3桁と行くに従って、増加分が減るので、
ほとんど誤差になって行きます。

たとえば、255(10)=2010(5)の上位1桁だけ10進数に
戻してみると、
2:2*2^3=16
3:2*3^3=54
4:2*4^3=128
5:2*5^3=250
6:2*6^3=432
7:2*7^3=686
8:2*8^3=1024
9:2*9^3=1458
10:2*10^3=2000
となるので、255を検査するので、5進数と判定されます。

りす

255(10)=11111111(2)だと、
2:1*2^7=128
3:1*3^7=2187
なので、2進数と判定されます。

上位1桁だけで、進数間の増加が大きいため、
上位2桁だけで十分なのです。

y sakuda

ああ、なるほど、それで桁数が出てきてるのか・・・・
やっと分かった。
私は単純にn進数として読んで、元の値になるやつって発想しかできなかった^^;

くまぷー

ふ~ん、そうだったのか~
言われてみればそうだけど
考えもしなかった・・・

りす

まぁ、答えが2~10になれば、何をしても良い訳ですからね。

ni

>それ以前に{}の中に数式なんかかけないんじゃないのかしらん???
が~~~~~~ん。
そういえば、「入力した数式は正しくありませんっ!!!」
って、おこってた気もする。
でも、「長すぎる」っておこられたことも確かにあった。
どんな式だったか、入力確定できなかったので、消えてしまいました。
配列、難しいです。

りす

上位2桁だけでMMULTでやるともっと短くなりませんか?
試してますが、今一MMULTをマスターしていないので、
短くなりません。

71=MATCH(B3,MMULT({1,1},MID(D3*1,{1;2},1)*COLUMN(A:J)^(LEN(D3*1)-{1;2})))

min

携帯から見たとき
りすさんの
74
{=MATCH(B3,(LEFT(D3*1)+MID(D3*10,2,1)/ROW(1:10))*ROW(1:10)^(LEN(D3*1)-1))}
に見えました。
で、さすがだなあって感心した。

MMULTを使わなければ、LENで桁数を判定し、上の2桁で判定するのありだなと頭の中では思いましたが、そのまま式にしませんでした。
同様に上1桁で判定しようと、夕方pcでやってみましたが完成しませんでした。
もうちょっと後でやってみようと思います。

sakudaさんの解答は何となく予想出来ました。
ただ、せっかくのMMULTが若干無駄に使われているように感じます。
それにしてもMMULTは嫌い、っていうか苦手。。
頭の中で考えると混乱しがちになってしまいます。

りす

そっか、D3*10で良いのかw
気が付かなかった。凡ミス

min

>凡ミス
私だったら、凡ミスというより*10は簡単に気付かないと思う。

min

とりあえず、
りすさんの
71=MATCH(B3,MMULT({1,1},MID(D3*1,{1;2},1)*COLUMN(A:J)^(LEN(D3*1)-{1;2})))

67{=MATCH(B3,MMULT(ROW(1:10)^(LEN(-D3)-{2,3}),--MID(D3*10,{1;2},1)))}
でいいと思いますが。

りす

LEN(D3*1)-1

LEN(D3/10)
で出来ないか?とか考えていたので、
そんなに難しい話じゃないと思いますよ。

りす

すげー
65=MATCH(B3,MMULT(ROW(1:10)^(LEN(-D3)-{2,3}),--MID(D3*10,{1;2},1)))
で良さそうですね。

min

失礼しました。
67ではなく
65=MATCH(B3,MMULT(ROW(1:10)^(LEN(-D3)-{2,3}),--MID(D3*10,{1;2},1)))
でしたね。

min

かぶりました。。

りす

あら、
74{=MATCH(B3,(LEFT(D3*1)+MID(D3*10,2,1)/ROW(1:10))*ROW(1:10)^(LEN(D3*1)-1))}

73{=MATCH(B3,(LEFT(D3*1)+MID(D3*10,2,1)/ROW(1:10))*ROW(1:10)^(LEN(-D3)-2))}
になりますね。

min

>になりますね。
そのとおりです。

y sakuda

うーーん、りすさんの発展してますねーー
それにしてもminmaxさん人の見て良く即座に改造できますねーー

>ただ、せっかくのMMULTが若干無駄に使われているように感じます。
>それにしてもMMULTは嫌い、っていうか苦手。。
私の場合、mabさんとかNLPさんみたいに線形数学強くないですが、一応学生時代に行列かなり叩き込まれてますから、結果を割と頭の中ですっきり処理できるんです。
ただ、硬直的な使い方になってるきらいはあるでしょうねーー
それに、「関数でできますか?」ではSumが全体のSum取っちゃうんで、その代用として使ってるだけで本来の行列計算じゃないですけどねwww

y sakuda

しかし、私のあっさりりすさんに60台に改造されちゃったし、りすさんのはどんどん短くなるし・・・・
minmaxさんの本来バージョンは出てきてないし・・・・
予想どうりとは言え、今回も出題者完敗ですねーー^^;
今送ってある(来週になるのかどうか知りませんが)のもまた同じパターンかもw

min

>本来バージョンは出てきてないし・・・・
ここまでくれば出す価値は全くないと思いますが、
64=MATCH(B3,MMULT(ROW(1:10)^(8-COLUMN(A:H)),--MID(D3,ROW(1:8),1)))
あんまりにもまともなので今回は出さないでおこうと思っていました。。

りす

すげー

y sakuda

>ここまでくれば出す価値は全くないと思いますが、
いやーー、すごいです。
私のが無駄だらけだってのを見事にさらけだしてくれてますね^^

y sakuda

そう言えば、この問題ジョー3のQ87のストレートな裏問なんで、ジョー3が考えておられた裏問とモロに被るんじゃないかと思ったんですが、ジョー3が出てこなかったところを見ると違ってましたかね?
だとするとジョー3の裏問がまだあるってことになりますねーー

りす

COLUMN(A:H)とROW(1:8)で掛け合わせるのか…
MMULT、何となく分かって来た。

y sakuda

>MMULT、何となく分かって来た。
よー分からずに、ちゃんと使ってるってのもすごい話じゃw

りす

切り貼りしてるだけなら…

きっちー

まぁ・・・なんだ・・・

・・・これでよかろー・・・

31=INT(B3^(1/LOG10(D3+(D3*1=1))))

DIV0対策と最大乗数のrを求め底の変換

jyo3

>=INT(B3^(1/LOG10(D3+(D3*1=1))))
ほーーーー・・・・・
さすがーーーーーー

y sakuda

>=INT(B3^(1/LOG10(D3+(D3*1=1))))
きっちーさんの面白いのですが、残念ながらあちこちダメですね
例えば1が1進数と表示されます
また、10の4進数 00000022 が5進数に判定されるなど、
計149ヶ所エラーになるようです。


ジョー3

>きっちーさんの面白いのですが、残念ながらあちこちダメですね
うわーーー・・・残念ですーーー
でも、私の、、LOG使用したやつは、、、もっともっと、、、エラーがあった。
40台でしたけどね、・・・・・
・・・・・・・
ちょっと試した、ところでは良かったので,深く調べませんでした。
て、ことで、、、きっちーさん、、・・・・改作出るかもね、

>例えば1が1進数と表示されます
それはすぐ直るでしょうが、、、

>10の4進数 00000022 が5進数に判定されるなど、
ほんとだーーー、、sakudaさん、よく調べましたネーーー・・・・
すごいですーーーー・・・・

y sakuda

>よく調べましたネーーー・・・・
当然プログラムが勝手に^^;

きっちー

ま、それはエクセルの丸め誤差ってやつですかね

y sakuda

>ま、それはエクセルの丸め誤差ってやつですかね
残念ながら誤差の問題ではなく、やはり手法に無理があると思います。

例えば、10の4進数 00000022 の時、Int前の数値は5.55804245460721 ですから誤差で生じるには無理です。
式自体のからくりがあまりピンと来ていないので直せる話かどうか見当付きませんがね・・・・・

コメントの確認

コメントのプレビュー

プレビュー中です。コメントはまだ投稿されていません。

処理中...
コメントを投稿できませんでした。エラー:
コメントを投稿しました。 さらにコメントを投稿する

入力された文字と数字は画像と一致していません。再度入力してください。

最後に、下の画像の中に見える文字と数字を入力してください。これはプログラムを使ってコメントを自動的に投稿するのを防ぐために行われています。

画像を読み取れない場合は 別の画像を表示してください。

処理中...

コメントを投稿

アカウント情報

(名前は必須です。メールアドレスは公開されません。)

2024年8 月

        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

TOP メニュー