« 第171回 分離と復元 解答例 | メイン | 第172回 10桁×10桁 解答例 »

2013年5 月21日 (火曜日)

コメント

jyo-3

he---

y sakuda

拙作の超桁数アドイン使っちゃえば、終わりなんですがw

む印

ええっ、、、、、、、、。

maron

◆とにかく作ってみました、
◆超多文字数なのと、検算が大変です・・・(ただ今、検算式作成中・・・)

jyo-3

あどいん
ええーー
はは、、、、はっは、は、、

y sakuda

これ、検証の方が大変w
現時点では極単純にやったんで88

y sakuda

86で今晩は終わりらしい
私のAddin元々浮動小数点の長桁数の演算用なんで、末桁が0だとEタイプの答えをかえしてきちゃうんで、やっぱり式で検証計算やらないと上手くない。
どうしようかな?

y sakuda

最初のやつ、同一部分をコピーしてたんで、余計なかっこなんかがあったんで、整理して、80。
へたすると、これで終わっちゃうかも。
niさんの想定どのくらいなんだろ?

y sakuda

この問題、長い桁どうしの割り算だと大変なことになる。
ワークエリア使っても相当難しいはず。(40年くらい前にFortranで四則演算作ったことがあります。割り算どうやったか全く覚えてませんがw)

ni

どうもです。

15桁までなら、書式設定を数値にすれば確認できますよね。
下1桁は下1桁どうしの掛け算でOK
あとは・・・・

想定は・・・50前後ですが、もう少し何とかなれば・・・
本当は、もっと桁数の多い計算ができないかと

y sakuda

手抜きして、50~60くらいとおもったんですが、手抜きするとやはり稀にゴミが出るケースがあってダメでした。

ジョー3

>niさんの想定どのくらいなんだろ?
そりゃ言わない方が良いと、,,,おもう・・・・
言えば、そこに集まるから、、、、

>想定は・・・50前後ですが、もう少し何とかなれば・・・
あーーー言っちゃた。・・・ねーーーーー

ジョー3

ちょっとやってみた。
しかし、、、、
>手抜きして、50~60くらいとおもったんですが、手抜きするとやはり稀にゴミが出るケースがあって
うんうん、、、心配・・・・・・

y sakuda

無駄やってるの気が付いて、70
ただし、今までの式答えが100等きわめて小さい数になった時前ゼロが付いちゃいます。 00100 等
こういうのもちゃんと処理するって前提ですか>niさん

ジョー3

>きわめて小さい数になった時前ゼロが付いちゃいます。
ん・・・・・・
きちんと式を
見てませんでした。必ず、10桁×10桁と、思ってました。

からくち

>わめて小さい数になった時
--RIGHT(RAND(),10)
この式を見る限りでは8~10桁になるのでは
勿論ですが確率が0ではありませんが
B2・B3共にとなると、これは 1/天文学的数値 で
出現を待つまでに可也の年数がかかってしまうのでは

この問題は、、、落とし穴があったのですね、、、
まさかこの関数も、この関数も・・・とは
使えるのがこの関数だけとは、、、知りませんでした
改めて勉強させていただきました
これだから関数は、、、面白い

ジョー3

約1万回ほど
6806
2756
510
78
9
2
0
0
0
0
0
どれくらいか、テストとしてみました。
=LEN(B2*B3) でね、
20桁~15桁
・・・・・・・・・・・・・
で、私も・・・10桁未満は・・・無視しました。

ジョー3

2文字短くしようとしたら、、、
その前と、たまに答えが合わない。
短縮は、,,怖いなーーーー

ni

答えが10桁以下・・・想定外です^^;

9桁×9桁ぐらいまではあったほうがうれしいけれど。
10桁×10桁限定でもいいですよ。
桁上がりの有無は必須でおねがいします。

本当は、もっと大きい桁数を扱いたくて(素数計算とか)

ジョー3

>やっぱり式で検証計算やらないと上手くない。 どうしようかな?
3つ、4つ、、書いて比較作戦なのだ。
ん、、、全部同じパターンで駄目なら、、、、むむーーーそれは考えてない。

ジョー3

>まさかこの関数も、この関数も・・・とは
一つしか、、気付いてないジョーかも、、

ジョー3

>10桁×10桁限定でもいいですよ。
それなら、少し短くなるが、、、だが、

頻繁に・・・
10・9
10・8
10・7
たまたま
8・7
等があるから
>9桁×9桁ぐらいまではあったほうがうれしいけれど。
7・7等までは対応させる予定です

ni

>この問題は、、、落とし穴があったのですね、、、
えっ???
全く出題者の想定外・・・

>一つしか、、気付いてないジョーかも、、
全く気がついてない出題者・・・

ni

>言えば、そこに集まるから、、、、
そこに集めておいて、抜け駆けしようとたくらんでるんですが、
何も思いつかない・・・

からくち

>7・7等までは対応させる予定です
B2*B3の値が1~5桁までは
文字列にする為に、頭に0が付きますが
それ以外の値は正しいです
因みに、、、B2=0、B3=0では、00となります

6桁以上はそのままで、、、

>全く出題者の想定外・・・
わたしも知りませんでした、、、けど
MicrosoftのExcel開発者は知っている、、、のかな
意外と・・・と言う事もありうる、、、ような、、、

ni

あーっ、落とし穴、あったー

落とし穴埋めて、ここを変えると、6文字短くなった

Excelの有効数字って、15桁であってます?

ジョー3

>あーっ、落とし穴、あったー
えーーーー、、、気づかないじょー・・・・
ってことは、、、、

>落とし穴埋めて、ここを変えると、6文字短くなった
ええーーーー
>想定は・・・50前後ですが、もう少し何とかなれば・・・
とあわせると、、、

なんとかなったのねーーーーー
ってことは、40前後????・・・・げげーーーーー

ni

落とし穴埋めたつもりが、新たな落とし穴が・・・orz
埋め戻して6文字増加、元に戻ってしまいました

ni

ひとつ直すとまた不具合が・・・もう、いや
それで、10文字増加

からくち

う~~~ん、、、書いても、、、いいのかな、、、
落とし穴の、、、1つ

=LEFT(B2*B3,15)
20桁から頭の15桁(残りは00000)、、、
決して正しい値では無いと言うことです

ジョー3

>20桁から頭の15桁(残りは00000)、、、
>決して正しい値では無いと言うことです
それは気付いてました。
15桁目は頻繁に違う
14桁目も怖い
13桁目は10万回テストに耐えている、、、、

ジョー3

以前の研究を思い出しましたが、
=9.99999999999999+6/10^15 は10にならないが、
=9.99999999999999+7/10^15 は10になる・・・・とか、、、

からくち

>それは気付いてました。
流石、、、ジョー3さんです
問題はその先、、、
でも、それは、、、書いてはいけない

ni

>決して正しい値では無いと言うことです
そこにはまりました。
で、修正したつもりが別の不具合が出て、
それを修正すると全然違う答えになって、
さらに修正が必要になったと。

1000000001×1000000001=1000000002000000001
が出なかった。

y sakuda

>1000000001×1000000001=1000000002000000001
ちゃんと出るけど、短くならんw

ジョー3

>13桁目は10万回テストに耐えている、、、、
と言ったが、、、
1000000001
×
999999999
で、私・・・・つぶれ、、、、みたいです。
明日・・・以降、、、やり直します。

ジョー3

結局最初考えた、、長いのに戻りそう・・・・
短くしようとすると、危険かなーーー
・・・・・・
ねる、ねる。きょうはやめ・・・・・

y sakuda

アドイン使って、完璧な計算が可能ですので、例を投稿していただければ、正解を計算します。

からくち

ジョー3さん、、、とんでもないものを・・・
正直、、、最初40文字と思いました
しかし落とし穴が、、、で修正45文字
関数的には全てOK、、、が、、、

>1000000001×999999999
これ、、、関数以前、、、計算そのもの、、、

この問題、、、思っていた以上に、、、根が深い
>やり直し
です。。。

からくち

=B$2*MID(TEXT(B$3,REPT(0,10)),ROW(A1),1)*10^(10-ROW(A1))
これを下へ、、、10行

___________________0
900,000,000,900,000,000
_90,000,000,090,000,000
__9,000,000,009,000,000
____900,000,000,900,000
_____90,000,000,090,000
______9,000,000,009,000
________900,000,000,900
_________90,000,000,090
__________9,000,000,009

これを合計すると当たり前のように、、、
1,000,000,000,000,000,000
B2*B3と同じになってしまう

からくち

これ、、、面白いけど、、、厄介かも

A1=999,999,999,999,999,000
B1=576.03125
C1=A1+B1=999,999,999,999,999,000

B1=576.031250000001
C1=A1+B1=1,000,000,000,000,000,000

=999999999999999000+576.03125=999,999,999,999,999,000
=999999999999999000+576.031250000001=1,000,000,000,000,000,000

=999999999999999000+576+64.03125=999,999,999,999,999,000
=999999999999999000+576+64.0312500000001=1,000,000,000,000,000,000

ジョー3

>これ、、、面白いけど、、、厄介かも
ややや、、、、、、、やっかい、、、、すぎ、、、

からくち

>やっかい、、、、すぎ、、、
ですね、、、

999999999999999000+576は、、、そのまま
999999999999999000+577では、、、1000000000000000000
でも、、、
999999999999999000+576+64でも、、、そのまま

数値の大きさで判断では、ダメなのです
本当にエクセル君は、、、計算が苦手

y sakuda

Excelの不動小数点、結構調整しちゃうんでそういうことも起こるんだと思います。
何にもしてないと、質問掲示板で、「等しいはずが等しくないと判断されます」って質問の嵐になりますw

ジョー3

こうなってくると・・・・sakudaさんの文字数に、わたしは、敵いません。
そのうち、100越えで、、、=最初の案・・・案だけだった。が、、、
そのうち、、手を付けます。

y sakuda

字数あまりでてきてないですが、結局どこに落ち着くんだろ?
というか、何通回答があつまるのか?

ni

>1000000001×999999999
げっ、これ、9が18個並ぶんですよね?
だめだぁ~

ということで、出題者回答例、できていません。

y sakuda

一万回に一回くらいの割合で、B2,B3に小数点のついた数字が出てきます。
どうも、Randがきわめて小さい数字を出してきてるのだと思われます。
式の方もそういうのは想定してないし、チェックプログラムも対応しきれないw

y sakuda

例によって、明日の晩遅刻です。
最初の方の70から進歩してませんが、さびしくなる可能性もありそうですので、熊ぷーさんとこへ回答送っておきますので、よろしくーー

ジョー3

>一万回に一回くらいの割合で、B2,B3に小数点のついた数字が出てきます。
へーーー、、私のは、、、
小数点、、、出てこないなーーーー・・・一応20万回ほど、、

ジョー3

あ、、、出てきました。面白い現象です。
0.00002153224023970780000
3.970780000
上は実際の数
下は、右から10桁取って、数値にした結果。

なぜか、元の数で、
0.0000と小数点以下が4つ続いたときに、起こるみたいで、、????わからん、、、、

ジョー3

そうかーーー
標準の
Eから逆に数えて
そのあとの数値分下がって勝手に、 小数点を付けるのだね、,,,

むむーーーー、、、、芸が細かい(とも、、、言えるかも)

maron

◆やっと、63になりました

maron

◆ひょっとして、58になったかも・・・

maron

◆やっぱり、58はダメでした・・・
◆でも、61はいいかも・・・

からくち

この問題は明日で終了ですが
おそらく当分の間、、、
いや、、、思い出しては時折弄くり回す事でしょう
これ、、、終りが見えません
余りにも色々な事が多過ぎて

従いまして、、、
回答を書いても長いだけで面白くも無い式になってしまう
と言う事で、回答を書かずに
この問題から得たものを弄り回しているのみ
これは面白いです
niさん&ジョー3さん、、、ありがとう
当分の間、、、お遊び出来ます

maron

◆61も63も完全とは言えない気がしてきました・・・

ジョー3

>これは面白いです
なぞが、、、なぞを、、、、・・・・

それを、、、

1)どうでも良いとするか。
2)色々しらべるか?。
3)しゃぶり尽くすか。・・・・・・

・・・・・・・・・・・・・・・・・・・・
3)にしたいが、、、、、飲んでるうちに、、、、・・・・・忘れることが多い。じょーー。

ni

未だに回答例ができておりません。
こうなったら、力づくでも作成したいところですが、
とんでもない長い式になりそうです。
これをタイプミス無しに作成できるか?
作業セルをいっぱい使って何とか一度はできていたんですが・・・

ni

なんとか、できました。
>1000000001×999999999
>1000000001×1000000001=1000000002000000001
どちらも計算できています。
他に落とし穴・・・もうわかりません。

で、260文字です。

出題者回答例としてお送りしました。

ジョー3

ほほーーーーー

あした、、、やるかも、、、

y sakuda

>他に落とし穴・・・もうわかりません。
私のもmaronさんのも厳密にどうだかわかりません。
全件チェックは不可能ですからw
回答がでたところで、ダメなケース探すってのも面白いかもwww

y sakuda

しかし、なんで小数点のある数字が出てくるんだろ?
問題の式をどう変えても解消できない^^;

くまぷー

>熊ぷーさんとこへ回答送っておきますので、よろしくーー

了解しました。∠(@O@) ビシッ!

>出題者回答例としてお送りしました。

拝受しました。 ∠(@O@) ビシッ!

ジョー3

>しかし、なんで小数点のある数字が出てくるんだろ?
例えば、
=rand() が、
0.0000444456789055555 とする。
そのとき、
=right(rand(),10) は、
055555E-05 と、なって、、
先頭に  --   があるので、、
0.55555
と、エクセルさんが処理・・・してるみたいですね、、、


てことで、
少数計算が意図せず・・・だが、・・・時々出る。

・・・・・ってことでしょうか?

ジョー3

あと、、、
=RIGHT(D14,20)
とすると、、、
4.44456789055555E-05
となって、、、えくせるさんの、、、思考・・・処理が、、、おもしろいけど、、、、

y sakuda

なるほど・・・・・

ジョー3

> =RIGHT(D14,20)
あ、、、かりに、、、
0.0000444456789055555 を、、
D14 に入れてました。・・・・
・・・・・・・・・・失礼致しました。

ni

問題に小数点

=INT(RAND()*10^10)

こうすればよかったのかな?

ジョー3

>こうすればよかったのかな?
少数が出るとは、、、気付かなかった。
言われて始めて、、、調べた。・・・・

からくち

>こうすればよかったのかな
問題に使われている式は、、、
--right(rand(),10) だったかな
例えばrand()の値が0.123000000000000
この場合では、--right(0.123,10) となります
上記は極端な例ですが、例えば
right(rand(),15) としますと
0.12345678901234?
この最後の?が0の場合(勿論ですがその前の値も同様ですが)
.12345678901234 の15文字が返されます

len(right(rand(),15)*1)
これの値は、、、
15、、、当たり前ですね
時折14や13も、、、でも16も出るのですよ
rightで15文字しか得ていないのに、、、
同じですね、、、

ジョー3

わたしも、本題以外に、、、あそんでたです。

>   =INT(RAND()*10^10)
これ、、10桁出るかなーーーー・・・と、気になった。・・・ので、、、
3万回で出ました。

いま、、、9桁を調べてます。
あ、、、、なんか、、、エクセルさんが・・・・変です・・・・・
ネット見ながら、、、テストは、、、パソコン、,,つらいのかなーーーーー

あと、、最初
10桁×10桁 と、問題にあったので、、、
勝手に、、
=1000000000+int(rand()*9000000000)
なんて、式を想像していた。

maron

>>1000000001×999999999
>>1000000001×1000000001=1000000002000000001
>どちらも計算できています。

◆それで、190になりました

>>他に落とし穴・・・もうわかりません。

ジョー3

あ、、間違い・・・・

>   =INT(RAND()*10^10)
    =len(rand()*10^10)
だった。
・・・・・・・・・・・・・

ジョー3

> ◆それで、190になりました

いろいろ、、、遊んでたら、,,本題を・・・忘れてました。

だが、、、そのうち、、、、10×10限定とかで・・・・やってみるかも、,,,

きょうは、、、、、nomukara yannnai kamo,,,,

む印

どうすればいいのやら、、見当もつかないまま・・・

しかし、参加はしたい、、、
・・・ということで一応やったというだけの83を^^;

コメントの確認

コメントのプレビュー

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

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

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

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

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

処理中...

コメントを投稿

アカウント情報

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

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 メニュー