分からない問題はここに書いてね448
■ このスレッドは過去ログ倉庫に格納されています
>>159 例えば→√2を考えたい時、qの近づけ方は問題ないんでしょうが、pの近付き方を、p_n→√2になるような有理数列p_n上で考えることは出来ないんでしょうか。 →0なんかも、実際に関数に0を入れるわけではなくギリギリまで近付けるように、p自身が√2を取れないのは、定義できないほどの大問題でしょうか。 >>60 スタート地点のポイントAに宝があると ゲーム開始とともに同着でゲーム終了になるので除外する 宝がいくつあったとしても、P君とQ君のどちらかが先に 一つでも宝を見つけるとそこでゲーム終了となる 縦方向の探査をn、横方向の探査をn+1として 宝の個数をkと置くと、調査する全範囲は {n(n+1)−1}−(k−1)=n(n+1)−kと考えられる Ω={n(n+1)−k)|n≧2,n(n+1)−1>k≧1} ■縦方向に探査をするP君の確率空間は Ω={(i,j)|1≦i≦n,1≦j≦n(n+1)−k}から #A=n{n(n+1)−k}−{n(n+1)−k−1}(n−1) =n(n^2+n−k)−{n(n^2−1)−k(n−1)−(n−1)} =n^3+n^2−kn−n^3+n+kn−k+n−1 =n^2+2n−k−1 #Aは事象Aに含まれる要素の個数 ■横方向に探査をするQ君の確率空間は Ω={(i,j)|1≦i≦n+1,1≦j≦n(n+1)−k}から #B=(n+1){n(n+1)−k}−n{n(n+1)−k−1} ={n(n+1)^2−k(n+1)}−{n^2(n+1)−kn−n} ={n^3+2n^2+n−kn−k}−{n^3+n^2−kn−n} =n^2+2n−k=n(n+2)−k #Bは事象Bに含まれる要素の個数 ■[n≧2,n(n+1)−1>k≧1]の条件下で以下の式が成立する ∴P(A)={n(n+2)−k−1}/{n^2(n+1)−kn} ∴P(B)={n(n+2)−k}/{n(n+1)^2−k(n+1)} >>168 Ωの部分集合を事象と言う Ω自身は全事象と言う 最初に探す方向を i 行または列が変わる時を j として P君とQ君のうちどちらが先に宝を見つけるのかという 事象Aと事象Bを考える. A={(i,j)| i または j が宝} B={(i,j)| i または j が宝} >>168 すでに正解とPCでのカウントの照合が終わっているのに 読んだ人の時間を無駄遣いさせるような明らかな誤答は慎めよ。 >>166 とすると、部屋数が増えたり宝が増えても数式として算出可能なのでしょうか? >>172 なんだ、このスレでデタラメ書きつづけてたのかよw >>152 , >>158 ご返答ありがとうございます。 >>167 もちろんそういう近づけかたを考えてもいいけど、その近づけかたを離散位相といってはいけない。 流石にこの程度の基本的な単語は正確に意味を確認するようにしないといかん。 >>175 >>152 は無視してな 完全に寝ぼけてたわ >>173 すみません。発言がよくわかりません。 「数式として算出」とは? >>166 は数式ではない? ここでいう数式とは多項式などのΣのない形のものでしょうか? 「部屋数が増えたり」も、もともと部屋をn×(n+1)などとしていて大きさを変えられますよ? 宝の数が2以外でも(3なら3と)固定されていて部屋の形がn×(n+1)または(n+1)×nなら>>161 を少し変えれば Σのないnについての多項式が得られる、とは言えます。 念のため書いておくと 式>>166 は部屋の縦横、宝の数が任意だが、Σがある。 部屋の形がn×(n+1)または(n+1)×nとして適当に場合分けすることにより数式処理ソフトで Σの計算できるようにした、そのコードが>>161 。 宝箱問題。申し訳ないのですが、プログラミングに詳しくないものでさっぱりです… 高校生にもわかるようにどなたか解説していただけませんか?(入試数学の解答のような形式であればありがたいです) ()>>173 可能だけど立式するのは結構な手間 Σを用いた式として立式して sagemath というソフトで簡略化して n の多項式にしたのが>>161 どう考えても面倒なので161さん以外の誰もやっていなかった 宝箱の数をkとして立式することは可能だろうけれども、 更なる面倒さに付き合ってくれる人がいなければここには書かれない こんなとこでどうでしょうか。 sagemath はスマートフォンなどでも使うことができて、 僕も今初めて使うので適当ですが例えば>>161 の最初の P1の式(Σを含むもの)の簡略化などはiPhoneアプリでも以下のようにして行えました アプリ起動して「+」ボタンで新しい式を入力するモードにして var l,a,n,k = var('l','a','n','k') a=m/2 m=n+1 sum((m-1)*(m)-2*l-1, l,1,m-2) + sum(sum((m-1-k)*(m-k)+k-1-l, l,k,2*k) + sum((m-1-k)*(m-k)+3*k-2*l-1, l,2*k+1,m-2), k,1,a-2) + sum(sum((m-1-k)*(m-k)+k-1-l, l,k,m-2), k,a-1,m-2) と入力して「evaluate」ボタンでこの式を評価(簡略化) https://i.imgur.com/4bpYZLg.jpg 弥勒(僧)とシュリニヴァーサ・ラマヌジャンはどっちの方が賢いですか? c のプログラムが無かったようなので 宝二つ、m×(m+1)型(m=1〜69)を作ったので参考にあげておきます。 http://codepad.org/pbmWeZZ5 少し説明を加えておくと、マスに1から順に番号をあたえます。 配列P[c]には、c番目 のマスをPは何番目に調査するか 配列Q[c]には、c番目 のマスをQは何番目に調査するか を入れておきます。 i番目とj番目のマスに宝があるとき、P[i]とP[j]を比べて小さい方の値で、Pは宝を発見し、 Q[i]とQ[j]を比べて小さい方の値で、Qは宝を発見します。 この値を比べ、PとQどちらが早く発見したかを判定すると言うだけのものです。 縦、横のマスの数の変更や、宝の数の変更も難しくないと思うので、興味がある方はどうぞ。 (本当は、配列は一つで十分なんだけど、可読性や対称性を考えて書いておきました) xyz空間の球B:x^2+y^2+z^2=1の表面または内部に点Pをとる。 Pを通り方向ベクトル(1,2,0)に平行な直線lとBとの共有点を考えるとき、以下の問いに答えよ。 (1)lとBの共有点の個数を場合を分けて答えよ。 (2)共有点の個数が2個のときを考える。共有点の一方をS、他方をTとする。 P(x,y,z)とするとき、長さの積PS・PTをx,y,zで表せ。Pが表面上にあるときはP=Sとして考えよ。 (3)Bを平面x=u(-1≦u≦1)で切った切断面D_u上を点Pが動く。P(u,y,z)においてy^2+z^2の取りうる最大値Mをuで表せ。 さらにz=0のとき、積分 I_u = ∫[0→M] (PS・PT) dy をuで表せ。 (4)(3)で求めたI_uに対して定積分K = ∫[-1→1] I_u du を求め、さらに比の値K/(4π/3)を求めよ。 n≧3とする。 次の和を求めよ。 Σ[k=1,2,...,n-1] {(n,k)・(n+1,k-1)} サイコロを振り、出た目に応じて点Pを動かす。最初点Pは(0,0)にある。 点Pが(a,b)にあるとき、偶数の目が出たら(a+1,b+1)に移動させ、奇数の目が出たら(a+1,b-1)に移動させる。 このとき、以下の事象が起こる確率を求めよ。 (1)Pが半直線y=x(x≧1)の上に乗る。 (2)Pが直線y=2x+1の上に乗る。 (3)m,nを整数の定数とし、Pが半直線y=mx+n(x≧1)の上に乗る。必要があればm,nの値に応じて場合分けして答えよ。 >>178 レスありがとうございました。 多項式で与えられたので他のソフトでも>163のように 簡単にグラフ化できました。 そういう意味で数式と書いたつもりでした。 >>183 いつもcのコードありがとうございます。 このコードだと縦横マスを増やすのは容易でも、宝の数を増やすには for loopを for(i=1,Pwin=Qwin=Draw=0;i<mn;i++)for(j=i+1;j<mn;j++) for(k=j+1;k<mn;k++) for(l=k+1;l<=mn;l++) という具合に増やす必要がありますよね? そんな感じですね。細かいところですが、少し修正を施すと、 for(i=1,Pwin=Qwin=Draw=0;i<mn-2;i++)for(j=i+1;j<mn-1;j++) for(k=j+1;k<mn;k++) for(l=k+1;l<=mn;l++) で、空回りを回避してます。 もし、このアルゴリズムで、宝の数を一般数化するなら、i,j,k,...の変数を配列にしてループにいれるか、 再帰関数化するか等の方がスマートですが、二つで固定なら、提示したような感じがシンプルですね。 しかし、宝の数可変を前提にプログラムを組むなら、別の方策を取ります。 Qは時刻 c に最初の宝を見つけるので、 ・Pの宝の発見時刻が全てcより大きい → Qの勝ち ・Pの宝の発見時刻にcを含み、残りは全てcより大きい → 引き分け ・それ以外 → Pの勝ち です。 Qは、時刻cに、マスcを調査するので、マスc+1、c+2、...の中に、P[x]>c を満たす マスがいくつあるかをあらかじめカウントし、テーブル化すれば、あとは、 二項係数の積の和だけの、プログラムとなると思います。 >>185 m+1≧n≧1 のとき Σ[k=1,n] C(n,k) C(m,k-1) = C(m+n,n-1) ∵ (1+x)^n (1+x)^m を展開したときの x^(n-1) の係数だから。 Σ[k=1,n-1] C(n,k) C(n+1,k-1) = C(2n-1,n-1) - C(n+1,2) >>182 蝉「おまえさ、人としじみのどっちが偉いか知ってるか?」 伊坂幸太郎「グラスホッパー」角川文庫 (2007) >>189 部屋の数=mn、宝の数trでmnCtr個の組み合わせを返すサブルーチンが必要になって、ここが処理のボトルネックになるんじゃないかと思うのですが。 数学とはなんでしょうか? 何が数学の本質なんでしょうか? 論理的な体系の構築? 定理の創出? >>161 の若干の一般化とその導出を備忘録的に書いておきます。 >>60 まず、部屋を探る順番が一般の場合を考える。 部屋がNあり、その集合をRとする。A君、B君が探る順番を表わす全単射写像をそれぞれf,gとする: f,g: R→{0,1,…,N-1} (順番は0から始まるとする。) 部屋自体の位置はなんら答えに影響しない。 σ=g・f^{-1} と置くと、σは{0,1,…,N-1}の置換。(・は写像の合成) A君がi番目に探る部屋はB君がσ(i)番目に探る部屋ということ。 以下、「A君がi番目に探る部屋」のことを「部屋i」ということにする。 求めたいのは、「A君がB君よりも早く宝を見つける宝の配置の数」であるが、宝の数をcとすると、それは Σ[σ(i)>i] binomial(#{j| j>i, σ(j)>i}, c-1) (0≦i,j≦N-1、binomialは二項係数) である。 なぜか? 「A君が初めて宝を見つける部屋(部屋iとする)」で場合分けしよう。 (つまり部屋0〜i-1には宝がなく、部屋iに宝がある場合) 部屋iはB君がσ(i)番目に探る部屋だからσ(i)>iでないと 少なくともB君はA君よりも前か同時に部屋iで宝を見つける (B君はその前に別の部屋で宝を見つけることもある)ことになりA君は勝てない。 したがって、σ(i)>iが必要。 残りのc-1個の宝は部屋i+1〜N-1にあるが、宝がある部屋を部屋jとすると、 やはりσ(j)>iでないといけない。逆に全部の宝でそうであればA君が勝つ。 よって、残りのc-1個の宝が置かれてもいい部屋の数は#{j| j>i, σ(j)>i}だけあり、 全部そこに置かれる場合はbinomial(#{j| j>i, σ(j)>i}, c-1)通り。 したがって、上記のようになる。 続く >>194 続き 部屋が縦m、横nで、A君は横1行を探し終えたらすぐ下の1行に移り、 B君は縦1列を探し終えたらすぐ右の1列に移るという場合を考える。 つまり、m=4,n=3の場合、A君は 0123 4567 891011 B君は 0369 14710 25811 という順番で探す。 このとき、σ=0,3,6,9,1,4,7,10,2,5,8,11。 一般には、σ(nk+l)=ml+k (0≦k≦m-1, 0≦l≦n-1)。 ここまでをPythonで表すと: #二項係数。SageMathでは定義ずみ def binomial(n,r): from math import factorial as f return f(n)//f(r)//f(n-r) if r>=0 and n-r>=0 else 0 #置換p、宝c個で勝つ宝の配置の数 def nwinperm(p,c): N = len(p) return sum(binomial(len([j for j in range(i+1, N) if i<p[j]]),c-1) for i in range(N) if i<p[i]) #部屋が縦m、横nのときの置換 def rectperm(m,n): return [m*l+k for k in range(m) for l in range(n)] #部屋が縦m、横n、宝がc個で横優先が勝つ宝の配置の数 def nwinrect0(m,n,c): return nwinperm(rectperm(m,n),c) 続く >>195 続き 部屋が縦m、横nの場合を考えているが、もう少し計算を進める。 #{j| j>i, σ(j)>i} をこの場合に具体的に表そう。 i,j (0≦i,j≦mn-1)をそれぞれ nk+l, nk'+l' (0≦k,k'≦m-1, 0≦l,l'≦n-1) とする。 σ(i)>i ⇔ lm+k>nk+l ⇔ (m-1)l>(n-1)k、 j>i ⇔ nk+l>nk'+l' ⇔ 「k=k' かつ l<l'」または「k<k'」、 σ(j)>i ⇔ l'm+k'>nk+l ⇔ l' + k'/m > (nk+l)/m [ここで nk+lをmで割った商をq、余りをrとすると] ⇔ l' + k'/m > q + r/m ⇔ 「q≦l'≦n-1 ただし l'=q, k'≦r を除く」 を使って #{j| j>i, σ(j)>i} = #{(k',l')|『「k=k' かつ l<l'」または「k<k'」』かつ l'm+k'>nk+l} に出てくる『「k=k' かつ l<l'」または「k<k'」』かつ l'm+k'>nk+lを満たす組(k',l')の数を求める。 k=k' かつ l<l'のとき σ(i)>iからlm+k>nk+lだからl'm+k'>nk+lは常に成り立つので、l<l'≦n-1でn-1-l個。 k<k' のとき l'm+k'>nk+l ⇔ 「q≦l'≦n-1, k<k'≦m-1 ただし l'=q, k<k'≦r を除く」だから (n-q)(m-1-k) - (r-k)δ(r>k)個、ただしδ(P)はPが真なら1、偽なら0である関数。 よって、#{j| j>i, σ(j)>i} = (n-1-l) + (n-q)(m-1-k) - (r-k)δ(r>k)。 したがって、求める数は Σ[0≦k≦m-1, 0≦l≦n-1, (m-1)l>(n-1)k] binomial((n-1-l) + (n-q)(m-1-k) - (r-k)δ(r>k), c-1)。 これを使ったPythonコード: #nloc(m,n,k,l)は縦m、横nの部屋で横優先が部屋(k,l)で初めて宝を発見する場合で #宝が置かれても縦優先に先を越されない部屋の数。 def nloc(m,n,k,l): q,r = divmod(n*k+l,m) return (n-1-l) + (n-q)*(m-1-k) - (r-k if r > k else 0) #部屋が縦m、横n、宝がc個で横優先が勝つ宝の配置の数 def nwinrect1(m,n,c): return sum(binomial(nloc(m,n,k,l),c-1) for k in range(m) for l in range(n) if (m-1)*l>(n-1)*k) 続く >>196 続き 部屋がm×(m+1) (n=m+1) のとき。 (m-1)l>(n-1)k ⇔ 0≦k≦m-2 かつ k+1≦l≦m。 (nk+l)/m = k + (k+l)/m より k+l<mのときq=k,r=k+l、k+l≧mのときq=k+1,r=k+l-m。 r>k (k+l<m)とr≦k (k+l≧m)とに分けるように場合分けをする: @0≦k≦[(m-1)/2], k+1≦l≦m-k-2 のとき r>k、 A[(m+1)/2]≦l≦m-1, m-1-l≦k≦l-1 または Bl=m, 0≦k≦m-2 のとき r≦k。 m=6のとき ×@@@@AB ××@@AAB ×××AAAB ××××AAB ×××××AB ××××××× m=7のとき ×@@@@@AB ××@@@AAB ×××@AAAB ××××AAAB ×××××AAB ××××××AB ×××××××× 後はΣの計算。>>60 に合わせるとQ君がA君の立場でmが>>60 でのn。 #以下 SageMathコード ,var m,n,l,k,q,r,c T2 = (n-1-l) + (n-q)*(m-1-k) T1 = T2 - (r-k) #mが奇数の場合: Q1 = (sum(sum(binomial(T1.subs({n:m+1,q:k,r:k+l}),c-1), l,k+1,m-k-2), k,0,(m-1)/2-1) + sum(sum(binomial(T2.subs({n:m+1,q:k+1,r:k+l-m}),c-1), k,m-1-l,l-1), l,(m+1)/2,m-1) + sum(binomial(T2.subs({n:m+1,l:m,q:k+1,r:k}),c-1), k,0,m-2) ).subs({m:n,c:2}).simplify_full().factor() #mが偶数の場合: Q2 = (sum(sum(binomial(T1.subs({n:m+1,q:k,r:k+l}),c-1), l,k+1,m-k-2), k,0,m/2-2) + sum(sum(binomial(T2.subs({n:m+1,q:k+1,r:k+l-m}),c-1), k,m-1-l,l-1), l,m/2,m-1) + sum(binomial(T2.subs({n:m+1,l:m,q:k+1,r:k}),c-1), k,0,m-2) ).subs({m:n,c:2}).simplify_full().factor() def Q1st(x): return (Q1 if mod(x,2) == 1 else Q2).subs({n:x}) 続く >>197 続き 部屋がm×(m-1) (n=m-1) のとき。 (m-1)l>(n-1)k ⇔ 1≦l≦m-2 かつ 0≦k≦l。 (nk+l)/m = k + (l-k)/m より q=k,r=l-k。 r>k (l>2k)とr≦k (l≦2k)とに分けるように場合分けをする: @0≦k≦[(m-3)/2], 2k+1≦l≦m-2 のとき r>k、 A1≦k≦[(m-3)/2], k≦l≦2k または B[(m-1)/2]≦k≦m-2, k≦l≦m-2 のとき r≦k。 m=7のとき ×@@@@@ ×AA@@@ ××AAA@ ×××BBB ××××BB ×××××B ×××××× m=8のとき ×@@@@@@ ×AA@@@@ ××AAA@@ ×××BBBB ××××BBB ×××××BB ××××××B ××××××× 後はΣの計算。>>60 に合わせるとP君がA君の立場でmが>>60 でのn+1。 #mが偶数の場合: P1 = (sum(sum(binomial(T1.subs({n:m-1,q:k,r:l-k}),c-1), l,2*k+1,m-2), k,0,m/2-2) + sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,2*k), k,1,m/2-2) + sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,m-2), k,m/2-1,m-2) ).subs({m:n+1,c:2}).simplify_full().factor() #mが奇数の場合: P2 = (sum(sum(binomial(T1.subs({n:m-1,q:k,r:l-k}),c-1), l,2*k+1,m-2), k,0,(m-3)/2) + sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,2*k), k,1,(m-3)/2) + sum(sum(binomial(T2.subs({n:m-1,q:k,r:l-k}),c-1), l,k,m-2), k,(m-1)/2,m-2) ).subs({m:n+1,c:2}).simplify_full().factor() def P1st(x): return (P1 if mod(x,2) == 1 else P2).subs(n=x) 以上、整理して少し異なったけど>>161 の導出でした。 >>198 P1 == 1/24*(6*n^3 + 20*n^2 - n - 27)*(n - 1) # nが奇数のとき P2 == 1/4*n^4 + 7/12*n^3 - 7/8*n^2 - 13/12*n + 1 # nが偶数のとき Q1 == 1/24*(6*n^2 + 10*n - 3)*(n + 1)*(n - 1) # nが奇数のとき Q2 == 1/24*(6*n^2 - 2*n - 5)*(n + 2)*n # nが偶数のとき それだけ前置きやってkを含めた式が作れないのですか? >>199 「kを含めた式」って何? あと>>178 見て 宝の数が任意のものならΣが取れないでしょう。 私は何人かの方のコンピュータによる解法はすごいと思いました 正直、Pythonはわからないし、sagemathは数学そのものなのでまだ理解できていないので 読めたのはCだけですが… 久しぶりにまともなスレになった気がします >>168 P(A)をP(B)で割ることによって P君の勝つ数とQ君の勝つ数が導ける P(A)/P(B)=(P君の勝つ数)/(Q君の勝つ数) {n(n+2)−k−1}/{n^2(n+1)−kn} P(A)/P(B)=―――――――――――――――――――― {n(n+2)−k}/{n(n+1)^2−k(n+1)} =(n+1)(n^2+2n−1−k)/{n^2(n+2)−nk} ∵[n≧2,n(n+1)−1>k≧1] ∵の範囲でnとkをいろいろと変えて見ることにより 様々な勝率が導ける 計算知能にそのまま入力するだけで通分と約分を 自動計算してくれるので試してごろうじろう ■Wolfram入力例 (n+1)(n^2+2n−1−k)/{n^2(n+2)−nk},k=2,n=3 三角形ABCにおいて、 AからBCへ下した垂線をAD, BCの中点をMとする。 BD > CDとすると BD^2 - CD^2 = 2BC・MD を示せ。 BD-CD=2MD ⇔ BD-MD=CD+MD こんな感じか >>206 BD^2 - CD^2 = (BD+CD) (BD-CD) = BC ( (BM+MD) - (CM - MD) ) = 2BC・MD (∵ BM=CM ) 特に垂線である意味がないし「垂線の定理」って何かの間違いでは? >>213 AB^2 - AC^2 = (BD^2 + h^2) - (CD^2 + h^2) = BD^2 - CD^2 = ... = 2 BC・MD なるほど 自然数a,b,cは以下の2つの等式を共に満たす。 a+b^2=c^3 a^2-b(b+c)=a+b+c (1)このような(a,b,c)を一組求めよ。 (2)(1)で求めたもの以外に(a,b,c)の組が存在するなら、全て決定せよ。 >>216 Prelude> [(a,b,c)|a<-[1..100],b<-[1..100],c<-[1..100],a+b^2==c^3,a^2-b*(b+c)==a+b+c] [(4,2,2)] Prelude> [(b,c)|b <-[1..1000],c<-[1..1000],(c^3-b^2)*(c^3-b^2-1)==(b+c)*(b+1)] [(2,2)] 変な質問ですいません 最初にピタゴラスの定理を証明した人って、どういう発想で定理が正しいと考えたのでしょうか?直感でしょうか、経験的によく知られていたのでしょうか? ピタゴラスとエウクレイデスはどっちの方が賢いですか? >>216 a=-1,b=-3,c=2 a=0,b=-1,c=1 a=0,b=0,c=0 a=-1,b=1,c=0 a=4,b=2,c=2 >>219 証明はどうだかわからないがピタゴラスが多いついたのはタイルを見て予想したと言われているらしい 直角二等辺三角形を敷き詰めると直角二等辺三角形の場合にはピタゴラスの定理が成り立つことがすぐにわかる ピタゴラスはそこから直角三角形なら常に成り立つのではないかと考えたということのようだ リーマン予想を証明したいのですが、まずは何から勉強をした方が良いのでしょうか? 証明した人に聞いてください 例えばAtiyahとかdeBrangeさんなど リーマン予想が証明されたとしたら、残りの他の全ての数学の未解決問題を自分一人で解決したい。 そのためにはやはり、数学の全分野だけでなく、物理学とか哲学とか計算機科学の全分野も究めないと無理なレベルでしょうか? とりあえず、二項定理くらいはわかるようになりましょうよ、ヒマラヤさん b^2=c^3-a a=c^3-b^2 a^2-b(b+c)=a+b+c a^2-b^2-bc=a+b+c a^2-c^3+a-bc=a+b+c a^2-c^3-bc-b-c=0 (c^3-b^2)^2-c^3-bc-b-c=0 の整数解を求める >>142 宝の数を変化させるコードをHaskellに移植してみた。 import Data.List import Data.List.Split m = 5 -- 縦マス(短軸) n = 6 -- 横マス(長軸) k = 5 -- 宝の数 q = [0..m*n-1] matQ = chunksOf m q matP = transpose matQ --行列を転置して p = concat matP -- 配列に変換 combinations :: Int -> [a] -> [[a]] combinations 0 _ = [ [] ] combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs'] treasure = combinations k q -- 宝の組み合わせ ip y = minimum $ map(\x -> elemIndices x p!!0) y -- 宝の、配列pでのindex列を求めて最小値を返す iq y = minimum $ map(\x -> elemIndices x q!!0) y idxp = map ip treasure -- 宝の組み合せで実行して idxq = map iq treasure p_q = zipWith (-) idxp idxq -- 差をとって大小判別 p1st = length $ filter (<0) p_q -- 短軸方向探索pが先に宝をみつける q1st = length $ filter (>0) p_q draw = length $ filter (==0) p_q main = do putStrLn $ "p1st = " ++ show p1st ++ ", q1st = " ++ show q1st ++ ", draw = " ++ show draw Prelude> :main p1st = 54036, q1st = 55469, draw = 33001 無限ホテルのパラドックス読んでてわからないことがあって、新しい宿泊客のために既存の客が部屋を一つづつずらすってあるけど、あれは何でそうなるの? ネットで調べたけどそれらしい答えが無くて困ってる 無限ホテルが集合論のお話で、ホテルは可算無限集合、無限に居る宿泊客全員も可算無限集合で、どっちも無限としての大きさが合うから部屋は過不足なく用意されるって話だってところまではネットで読んだ で、Wikipediaには順序数? の計算ルールが書いてあって、1+ωとω+1は違うってあったからこれが部屋移動の理由かと最初は思った でも無限ホテルって無限人の来客があってもokってあるから、これってω+ωでどこに客をぶちこんでも意味変わらないなと だからこの予想は違うと今は思ってる この疑問のしっくり来る(理解できる)解説が見つからなくてずっとモヤモヤしてるので、誰か教えてくれるとありがたいです -- バグ修正(行と列を間違えていた(._.) import Data.List import Data.List.Split m = 5 -- 縦マス(短軸) n = 6 -- 横マス(長軸) k = 5 -- 宝の数 q = [0..m*n-1] matQ = chunksOf n q matP = transpose matQ --行列を転置して p = concat matP -- 配列に変換 combinations :: Int -> [a] -> [[a]] combinations 0 _ = [ [] ] combinations n xs = [ y:ys | y:xs' <- tails xs, ys <- combinations (n-1) xs'] treasure = combinations k q -- 宝の組み合わせ ip y = minimum $ map(\x -> elemIndices x p!!0) y -- 宝の、配列pでのindex列を求めて最小値を返す iq y = minimum $ map(\x -> elemIndices x q!!0) y idxp = map ip treasure -- 宝の組み合せで実行して idxq = map iq treasure p_q = zipWith (-) idxp idxq -- 差をとって大小判別 p1st = length $ filter (<0) p_q -- 短軸方向探索pが先に宝をみつける q1st = length $ filter (>0) p_q draw = length $ filter (==0) p_q main = do putStrLn $ "p1st = " ++ show p1st ++ ", q1st = " ++ show q1st ++ ", draw = " ++ show draw >matrix.exe p1st = 55469, q1st = 54036, draw = 33001 >>231 先頭を開けて1人追加するのは 1+ω = ω 倍の部屋番号へ移して ω 人追加するのは 2ω = ω リーマン予想とP≠NP予想はどっちの方が証明するのが難しいですか? ABC EFG n=2の6マスでP君Q君のそれぞれのファーストの 組の総数をお願いします<(_ _)> P勝ち:EG FG EF BF Q勝ち:BG CG BC CE CF 引き分け:AB AC AD AE AF AG BE p win : CE, EF, EG, FG q win : BC, BF, BG, CF, CG even : AB, AC, AE, AF, AG, BE かと思った ABC DEF P勝ち CD DE DF EF Q勝ち BC BE BF CE CF 引分け AB AC AD AE AF BD 質問では DEF が EFG になってるのから俺はちゃんとその通りにやってるのにお前らときたら自由だな… >>236 に至ってはよく見るとABCDEFGの7種使ってるし >>233 ありがとうございます 連続の質問になって申し訳ないんで付けど、2ωとω+ωってこれは違うものなんですか? 自由ついでに分かりやすいように数字に置き換えてみた 1個目だけじゃなく、2個目の宝を先に見つけることも考えたら 結局、PQで差はないという直感どおりの結果になるな 123 456 12 ・Q 13 ・Q 14 ・P 15 ・P 16 ・・ 23 QQ 24 ・P 25 QP 26 Q・ 34 PQ 35 Q・ 36 Q・ 45 PP 46 P・ 56 P・ 別スレでこんなの見つけたんですが、これどこで証明されてるかご存知の方います? https://rio2016.5ch.net/test/read.cgi/math/1537516085/256 >オイラー定数をγと置く。nの約数の総和をσ(n)と置く。RHは > >σ(n)<(e^γ)*n*log(log n) (∀n>5040) > >と同値であることが知られている。 自己レス とりあえず元論文はコレらしい [24] G. Robin, Grandes valeurs de la fonction somme de diviseurs et hypoth`ese de Riemann, J. Math. Pures Appl. 63 (1984), 187–213. 英語で読めるのないかなぁ? 5×6マスで宝の数を10まで増やしていくと、 D:\bin>for %i in (1,2,3,4,5,6,7,8,9,10) do treasure 5 6 %i D:\bin>treasure 5 6 1 p1st = 14, q1st = 14, draw = 2 D:\bin>treasure 5 6 2 p1st = 203, q1st = 197, draw = 35 D:\bin>treasure 5 6 3 p1st = 1801, q1st = 1727, draw = 532 D:\bin>treasure 5 6 4 p1st = 11418, q1st = 11008, draw = 4979 D:\bin>treasure 5 6 5 p1st = 55469, q1st = 54036, draw = 33001 D:\bin>treasure 5 6 6 p1st = 215265, q1st = 211894, draw = 166616 D:\bin>treasure 5 6 7 p1st = 685784, q1st = 680768, draw = 669248 D:\bin>treasure 5 6 8 p1st = 1827737, q1st = 1825076, draw = 2200112 D:\bin>treasure 5 6 9 p1st = 4130886, q1st = 4139080, draw = 6037184 D:\bin>treasure 5 6 10 p1st = 7995426, q1st = 8023257, draw = 14026332 1:同等 1〜8:短軸探索有利 9、10:長軸探索有利 という結果になった。 Haskellのコードはここ --exe Fileにコンパイルしてコマンドラインから実行できるように改変(但し、エラー処理皆無) https://rio2016.5ch.net/test/read.cgi/math/1490734993/209 >>235 $Rscript main.r P1st Q1st even 3 4 13 6マスで宝を3個にしてみた $Rscript main.r P1st Q1st even 3 4 13 P 1st [,1] [,2] [,3] [1,] C C D [2,] D D E [3,] E F F Q 1st [,1] [,2] [,3] [,4] [1,] B B B C [2,] C C E E [3,] E F F F even [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8] [,9] [,10] [,11] [,12] [,13] [1,] A A A A A A A A A A B B B [2,] B B B B C C C D D E C D D [3,] C D E F D E F E F F D E F Rのスクリプトをここに置いたから数値を変更して実行可能 http://tpcg.io/X3bC0A >>241 自由ついでに5×6マスで宝が5個、先に全部の宝を見つけた方が勝者とすると これくらい差が出る D:\bin>treasure2 5 6 5 p1st = 54036, q1st = 55469, draw = 33001 確率にすると > treasure2(5,6,5) P1st Q1st even 54036 55469 33001 > 54036/(54036+55469+33001) [1] 0.379184 > 55469/(54036+55469+33001) [1] 0.3892398 なので差があると直観するかどうかは個々人の感性だな。 Haskel だの R だの。そういうのは他でやれよ...。 >>247 使える人間にとっては電卓みたいなもんだよ。 log2の計算にいちいちマクローリン展開して手書き計算しないだろ。 ここまでjuliaが出てこなかった juliaが流行しているのは自分の周りだけなのかな (NGに巻き込まれて見えてないだけだったらゴメン) >>249 どれかを移植して実力を示していただけたらうれしい。 5✕6マスで宝が15個の時の計算とかまだ誰も出してない。 >>241 先に2個の宝をみつけた方なら 123 456 12 Q 13 Q 14 P 15 P 16 = 23 Q 24 P 25 P 26 = 34 Q 35 = 36 = 45 P 46 = 56 = にならない? >>241 2個を先にみつけるじゃなくて これは1個めの発見はQの方が確率が高くて、2個めに発見はPの方が確率が高いというだけの話だったみたいね。 >>250 juliaが周りで流行ってるだけで自分自身はCの人(Cソース書いてくれた人とは別人) 5x6ますで宝15個とか、ID:TZqGbv4dにお願いしたらすぐやってくれるんじゃない? 完全に作り直してるし。 >>252 i 番目をどちらが先にみつけるかを計算してみた。 4×5マスに宝が5個あるとき > treasures(4,5,5) p1st q1st even [1,] 1948 9680 3876 [2,] 5488 10016 0 [3,] 7752 7752 0 [4,] 10016 5488 0 [5,] 9680 1948 3876 1個め2個めは短軸方向探索のQが、4個め5個めは長軸方向探索のPが、先にみつける宝の配置の組み合わせが多い。3個めは同じ。 全体としてはイーブンだが、 勝者は1個めを先にみつけた方にするか、全部を先にみつけた方にするかで結果が変わる。 Rのコードはここに置いたので数値を変えて実行可能。 http://tpcg.io/Ph7TUQ n元集合からk個の元を取り出す順番を考慮して可能な場合を数え上げるとn*(n-1)*....*(n-k+1)通りあるというのはより原始的なものから導かれるものですか? >>248 「プログラムで、ごり押し計算」 「マクローリン展開して手書き計算」 俺は後者の方が美しく感じるけどな。 実は前者で計算したのに後者を装ってほしいくらい。 (※ 私見です) >>254 単なる確認なんだけれども、 「i番目をどちらが見つけるか」というのは 先にi個見つけた方を勝ちとするのではなくて 例えばi=2だと Pが1つ発見、Qが1つ発見⇒2番目を見つけたQの勝ち、ということですか? >>257 >254の計算は各人にとってi番めの計算。 例えばi=2だと Pが1つ発見、Qが1つ発見だと勝敗は未決で どちらが発見者にとって2個めを発見したらそれが勝者として数えた。 んで、 ここまで答が出せた 254 名前:132人目の素数さん[sage] 投稿日:2018/10/30(火) 13:03:57.24 ID:TZqGbv4d >>252 i 番目をどちらが先にみつけるかを計算してみた。 4×5マスに宝が5個あるとき > treasures(4,5,5) p1st q1st even [1,] 1948 9680 3876 [2,] 5488 10016 0 [3,] 7752 7752 0 [4,] 10016 5488 0 [5,] 9680 1948 3876 1個め2個めは短軸方向探索のQが、4個め5個めは長軸方向探索のPが、先にみつける宝の配置の組み合わせが多い。3個めは同じ。 全体としてはイーブンだが、 勝者は1個めを先にみつけた方にするか、全部を先にみつけた方にするかで結果が変わる。 Rのコードはここに置いたので数値を変えて実行可能。 http://tpcg.io/Ph7TUQ >>260 全体を眺めると直感的通り互角。 局所でみると濃淡があるということと理解した。 ゲルト・ファルティングスとアラン・コンヌの知能指数はどれくらいですか? 「真理」というのは存在するのでしょうか? 「真理」の探究は意味があるのでしょうか? マイケル・アティヤとエドワード・ウィッテンはどっちの方が賢いですか? >>253 ここまでは算出できたが、宝を14にしたらエラー終了した。 D:\bin>treasure 5 6 11 p1st = 13346984, q1st = 13395944, draw = 27884372 D:\bin>treasure 5 6 12 p1st = 19312228, q1st = 19372871, draw = 47808126 D:\bin>treasure 5 6 13 p1st = 24301031, q1st = 24358063, draw = 71100756 >>92 ■引き分けの組み合わせは勝敗と無関係なので除外 宝が2個以上の時、 スタート地点のAマスと対極にある最終マスのLには P君もQ君もどちらも決してたどり着くことはできないので このLマスと組みとなる宝の配置は重複情報で意味を持たない ので除外する Pが先に見つけるのは以下の21通り CE,DE,DI,EF,EG,EH,EI,EJ,EK,FG,FH,FI,FJ,FK,GI,GJ,HI,HJ,IJ,IK,JK, Qが先に見つけるのは以下の22通り BC,BD,BF,BG,BH,BI,BJ,BK,CD,CF,CG,CH,CJ,CK,DF,DG,DH,DJ,DK,GH,GK,HK, となる ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.1 2024/04/28 Walang Kapalit ★ | Donguri System Team 5ちゃんねる