底辺私立医大を卒業した医者って頭悪いよね? Part17
■ このスレッドは過去ログ倉庫に格納されています
sim <- function(n){ a=numeric() a[1]=0 if(n==1) return(a) a[2]=sample(0:2,1) if(n==2) return(a) for(i in 3:n){ x=sample(0:2,1) a[i]=x if(x==0){ i_max=max(which(a[1:(i-1)]==0)) b=a[(i_max+1):(i-1)] if(all(b!=2)){ b[b==1]=0 a[(i_max+1):(i-1)]=b } } } return(a) } " 時刻t=0に、黒板に数字0が書かれている。 各時刻t=1,2,3,...において、数字0,1,2を下図のように1つずつ横一列に書いていく。 どの数字が書かれるかは同様に確からしい。 (t=0のとき)0 (t=5のときの一例)011212 各時刻tにおいて、数字を1つ書き終えた後、以下の操作を一回行う。 【操作】 この時刻に書かれた数字が0であった場合、そこから最も近い位置の0を探す。 この2つの0で挟まれた数字列の中に1がある場合、それら全てを0に書き換える。 ただしこの数字列の中に2が1つでも含まれる場合は、数字列に対する何らの操作も行わない。 " rm(list=ls()) f<- function(t){ # 時刻tでの数列aを返す a=numeric() a[1]=0 # a[1]=0, t=0での数列 if(t==0) return(a) for(i in 2:(t+1)){ x=sample(0:2,1) # 追加する数字0,1,2 a[i]=x if(x==0){ # 0であれば i_max=max(which(a[1:(i-1)]==0)) # i_max:追加前の最後の0のindex b=a[(i_max+1):(i-1)] # b:追加前の最後の0からの追加した0を除く数列 if(all(b!=2)){ # bに2が含まれなければ b[b==1]=0 # bの1を0に置き換えて a[(i_max+1):(i-1)]=b # aの配列に置換する } } } return(a) } f(10) sim <- function(n) sum(f(n)==0) mean(replicate(1e4,sim(10))) # 書かれた数列から変換後の結果を返す f<- function(y=c(1,1,0,1,2,0,1)){ t=length(y) a=numeric(t+1) a[1]=0 # a[1]=0, t=0での数列 if(t==0) return(a) for(i in 2:(t+1)){ x=y[i-1] a[i]=x if(x==0){ # 0であれば i_max=max(which(a[1:(i-1)]==0)) # i_max:追加前の最後の0のindex b=a[(i_max+1):(i-1)] # b:追加前の最後の0からの追加した0を除く数列 if(all(b!=2)){ # bに2が含まれなければ b[b==1]=0 # bの1を0に置き換えて a[(i_max+1):(i-1)]=b # aの配列に置換する } } } return(a) } f(c(1,1,0)) f(c(1,1,0,1,2,0,1)) > f(c(1,1,0)) [1] 0 0 0 0 > f(c(1,1,0,1,2,0,1)) [1] 0 0 0 0 1 2 0 1 問題: シリツ医 ならば (馬鹿 ならば 裏口 である) という命題が真であるときに結論できるのは以下のいずれか? 1 : シリツ医 ならば (裏口 ならば 馬鹿 である) 2 : 馬鹿 ならば (シリツ医 ならば 裏口 である) 3 : 馬鹿 ならば (裏口 ならば シリツ医 である) 4 : 裏口 ならば (シリツ医 ならば 馬鹿 である) 5 : 裏口 ならば (馬鹿 ならば シリツ医 である) # ならば の定義:(P かつ (Qでない))ではない '%=>%' = function(P,Q) !(P & !Q) A = function(S,B,U) S %=>% (B %=>% U) B1 = function(S,B,U) S %=>% (U %=>% B) B2 = function(S,B,U) B %=>% (S %=>% U) B3 = function(S,B,U) B %=>% (U %=>% S) B4 = function(S,B,U) U %=>% (S %=>% B) B5 = function(S,B,U) U %=>% (B %=>% S) C1 = function(S,B,U) A(S,B,U) %=>% B1(S,B,U) C2 = function(S,B,U) A(S,B,U) %=>% B2(S,B,U) C3 = function(S,B,U) A(S,B,U) %=>% B3(S,B,U) C4 = function(S,B,U) A(S,B,U) %=>% B4 (S,B,U) C5 = function(S,B,U) A(S,B,U) %=>% B5 (S,B,U) gr=expand.grid(c(T,F),c(T,F),c(T,F)) all(mapply(C1,gr[,1],gr[,2],gr[,3])) all(mapply(C2,gr[,1],gr[,2],gr[,3])) all(mapply(C3,gr[,1],gr[,2],gr[,3])) all(mapply(C4,gr[,1],gr[,2],gr[,3])) all(mapply(C5,gr[,1],gr[,2],gr[,3])) D2 = function(S,B,U) B2(S,B,U) %=>% A(S,B,U) all(mapply(D2,gr[,1],gr[,2],gr[,3])) " 問題 : 「シリツ医 ならば (馬鹿 ならば 裏口 である)」という命題と同値な命題はどれか? 1 : シリツ医 ならば (裏口 ならば 馬鹿 である) 2 : 馬鹿 ならば (シリツ医 ならば 裏口 である) 3 : 馬鹿 ならば (裏口 ならば シリツ医 である) 4 : 裏口 ならば (シリツ医 ならば 馬鹿 である) 5 : 裏口 ならば (馬鹿 ならば シリツ医 である) " # PならばQ ≡ (P かつ (Qでない))ではない '%=>%' = function(P,Q) !(P & !Q) # premise A = function(S,B,U) S %=>% (B %=>% U) # choice B1 = function(S,B,U) S %=>% (U %=>% B) B2 = function(S,B,U) B %=>% (S %=>% U) B3 = function(S,B,U) B %=>% (U %=>% S) B4 = function(S,B,U) U %=>% (S %=>% B) B5 = function(S,B,U) U %=>% (B %=>% S) # premise => choice C1 = function(S,B,U) A(S,B,U) %=>% B1(S,B,U) C2 = function(S,B,U) A(S,B,U) %=>% B2(S,B,U) C3 = function(S,B,U) A(S,B,U) %=>% B3(S,B,U) C4 = function(S,B,U) A(S,B,U) %=>% B4(S,B,U) C5 = function(S,B,U) A(S,B,U) %=>% B5(S,B,U) # combination grid of TRUE & FALSE gr=expand.grid(c(T,F),c(T,F),c(T,F)) # test for premise => choice all(mapply(C1,gr[,1],gr[,2],gr[,3])) all(mapply(C2,gr[,1],gr[,2],gr[,3])) # TRUE all(mapply(C3,gr[,1],gr[,2],gr[,3])) all(mapply(C4,gr[,1],gr[,2],gr[,3])) all(mapply(C5,gr[,1],gr[,2],gr[,3])) # choice -> premise D1 = function(S,B,U) B1(S,B,U) %=>% A(S,B,U) D2 = function(S,B,U) B2(S,B,U) %=>% A(S,B,U) D3 = function(S,B,U) B3(S,B,U) %=>% A(S,B,U) D4 = function(S,B,U) B4(S,B,U) %=>% A(S,B,U) D5 = function(S,B,U) B5(S,B,U) %=>% A(S,B,U) # test for choice -> premise all(mapply(D1,gr[,1],gr[,2],gr[,3])) all(mapply(D2,gr[,1],gr[,2],gr[,3])) # TRUE all(mapply(D3,gr[,1],gr[,2],gr[,3])) all(mapply(D4,gr[,1],gr[,2],gr[,3])) all(mapply(D5,gr[,1],gr[,2],gr[,3])) 忘年会は自粛。罹ると面倒くさいし。 14日間隔離、家族や職場、飲みの近くにいる連中も検査して隔離され迷惑もかける。 さらに他人になんか言われそうだしな。 こんな面倒な病気に罹るのはマイナス面しかない is.wholenumber <- function(x, tol = .Machine$double.eps^0.5) abs(x - round(x)) < tol # combination grid of TRUE & FALSE gr=expand.grid(c(T,F),c(T,F),c(T,F)) colnames(gr)=c('S','B','U') # PならばQ ≡ (P かつ (Qでない))ではない '%=>%' = function(P,Q) !(P & !Q) # premise A = function(S,B,U) S %=>% (B %=>% U) # choice B1 = function(S,B,U) S %=>% (U %=>% B) B2 = function(S,B,U) B %=>% (S %=>% U) B3 = function(S,B,U) B %=>% (U %=>% S) B4 = function(S,B,U) U %=>% (S %=>% B) B5 = function(S,B,U) U %=>% (B %=>% S) gr A =mapply(A , gr[,1],gr[,2],gr[,3]) B1=mapply(B1, gr[,1],gr[,2],gr[,3]) B2=mapply(B2, gr[,1],gr[,2],gr[,3]) B3=mapply(B3, gr[,1],gr[,2],gr[,3]) B4=mapply(B4, gr[,1],gr[,2],gr[,3]) B5=mapply(B5, gr[,1],gr[,2],gr[,3]) cbind(gr,A,B1,B2,B3,B4,B5) オリンピック中止を国民に伝える前に、コロナのせいにするためGOTOキャンペーン推進中というのはうがった見方?? モウロクジジイ菅w 意味不明なことばかり言ってるお前が国民に理解されるべきだろうがw 菅って、陰湿・陰険な老害、説明能力ゼロの無理筋悪代官丸出し 総合的俯瞰的w いくら頭が悪いにしても無理がありすぎ この一ヶ月で分かった菅の特徴 ・陰湿・陰険 ・聞かれたことに答えない不誠実さ、トンチンカン、ピント外れ ・説明能力ゼロだから、答えずに逃げる ・論点ずらし ・同じ言葉の繰り返し ・やったこと自慢の昔話 ・インタビューでも用意された原稿丸読み棒読みw ・自著で、早速、公文書管理の項目を改竄w やってることも後付け言い訳もヤバすぎるだろ。ピント外れの陰湿モウロク爺さんを通り越してるぞw 米国が移民政策成功してるのって弱者が病気になろうと 気にせずゴミのように放置できるから社会コストが跳ね上がらないから。 日本だとこういうのもみんな無料医療で国保にタカらせ集中治療室まで使わせるからパンクする >>780 フォルダのプロパティで 共有の設定も必要。 f = function(n,M=100) { x=c(rep(0,n-1),M) m=mean(x) sd=sd(x)*sqrt((n-1)/n) 50+10*(M-m)/sd } f=Vectorize(f,vect='n') f(10:15) f(10:15,runif(1,1,1000)) 裏口容疑者のシリツ医だとこういう計算は無理だろうな。 ある模試でクラスの中でひとりだけ満点、残りは全員0点であったとする。満点の学生の偏差値が80を超えるにはクラスに最低何人いる必要があるか? " 【たばこ】喫煙率 男女合わせて16.7%(男性27.1% 女性7.6%) 調査開始以降最低に [ばーど★] 厚生労働省は去年11月、全国の20歳以上の男女およそ5700人を対象に、生活習慣などを調査しました。 16.7*(m+f)=27.1*m + 7.6*f x=m/f 16.7(x+1)=27.1*x + 7.6 solve 16.7(x+1)=27.1*x + 7.6 for x x=8/7 " 5700*(8/15) 5700*(7/15) # https://www.stat.go.jp/data/jinsui/pdf/201802.pdf Male=sum(c(321,320,359,396,473,482,413,380,380,470,372,301,218,120,43,7,1))*1e4 Fem=sum(c(303,305,346,385,460,471,408,381,391,502,421,373,315,226,118,35,6))*1e4 prop.test(c(5700*8/15,Male),c(5700,(Male+Fem))) poisson.test(c(5700*8/15,Male),c(5700,(Male+Fem))) # https://www.stat.go.jp/data/jinsui/pdf/201802.pdf Male=sum(c(321,320,359,396,473,482,413,380,380,470,372,301,218,120,43,7,1))*1e4 Fem=sum(c(303,305,346,385,460,471,408,381,391,502,421,373,315,226,118,35,6))*1e4 prop.test(c(5700*7/15,Male),c(5700,(Male+Fem))) poisson.test(c(5700*7/15,Male),c(5700,(Male+Fem))) p=Male/(Male+Fem) binom.test(5700*7/15,5700,p) >>783 " 16.7*(m+f)=27.1*m + 7.6*f x=m/f 16.7(x+1)=27.1*x + 7.6 solve 16.7(x+1)=27.1*x + 7.6 for x x=7/8 " x=(16.7-7.6)/(27.1-16.7) 5700*(7/15) 5700*(8/15) # https://www.stat.go.jp/data/jinsui/pdf/201802.pdf Male=sum(c(321,320,359,396,473,482,413,380,380,470,372,301,218,120,43,7,1))*1e4 Fem=sum(c(303,305,346,385,460,471,408,381,391,502,421,373,315,226,118,35,6))*1e4 prop.test(c(5700*7/15,Male),c(5700,(Male+Fem))) poisson.test(c(5700*7/15,Male),c(5700,(Male+Fem))) p=Male/(Male+Fem) binom.test(5700*7/15,5700,p) rm(lisit=ls()) " (1)Σ[k=1,n] k! の一の位の数字について、その偶奇を調べよ。 (2)Σ[k=1,n] k! が3の倍数となるためのnの条件を求めよ。 " library(gmp) f <- function(n){ re=as.bigz(0) for(i in 1:n){ re = re + factorialZ(i) } asNumeric(re %% 10) } y=sapply(1:1000,f) y[1:100] y[900:1000] 【たばこ】喫煙率 男女合わせて16.7%(男性27.1% 女性7.6%) 調査開始以降最低に [ばーど★] 厚生労働省は去年11月、全国の20歳以上の男女およそ5700人を対象に、生活習慣などを調査しました。 https://asahi.5ch.net/test/read.cgi/newsplus/1603849457/ 人 口 推 計− 平 成 30 年 2 月 報 − https://www.stat.go.jp/data/jinsui/pdf/201802.pdf の平成30年2月1日現在 (概算値)から成人の数の概算をだすと 男性:5056万人 女性5446万人になる。 喫煙率調査につかった5700人の男性割合は比較して 日本全体で5056万/(5056万+5446万)の母集団からランダムサンプリングされたと考えてよいか? library(gtools) a=combinations(6,2) f <- function(x){ b=combinations(4,2,(1:6)[-x]) re=NULL for(i in 1:6){ tmp=c(x,b[i,],(1:6)[-c(x,b[i,])]) re=rbind(re,tmp) } re } f(a[1,]) res=NULL for(i in 1:15) res=rbind(res,f(a[i,])) rownames(res)=NULL res v=LETTERS[res] ans=matrix(v,ncol=ncol(res)) colnames(ans) = c('x','x','y','y','z','z') print(ans,quote=F) 長方形ABCDの内部の点をPとして PA=3,PB=4,PC=5のとき長方形の面積の最大値を求めよ。 x<m, y<l x^2 + (y-l)^2=a^2 (1) x^2 + y^2 =b^2 (2) (x-m)^2 + y^2=c^2 (3) (1)-(2) l^2 -2yl = a^2-b^2 l=y+sqrt(y^2+a^2-b^2) (3)-(2) m^2 -2xm =c^2-b^2 m=x+sqrt(x^2+c^2-b^2) lm=(y+sqrt(y^2+a^2-b^2))*(x+sqrt(x^2+c^2-b^2)) (2) x=b*cosθ, y=b*sinθ " rm(list=ls()) f <- function(a=3,b=4,c=5){ lm <- function(θ) (b*sin(θ)+sqrt((b*sin(θ))^2+a^2-b^2))*(b*cos(θ)+sqrt((b*cos(θ))^2+c^2-b^2)) curve(lm(x),asin(sqrt(b^2-a^2)/b),pi/2) opt=optimise(lm,c(asin(sqrt(b^2-a^2)/b),pi/2),maximum = TRUE) θ=opt$maximum x=b*cos(θ); y=b*sin(θ) l=y+sqrt(y^2+a^2-b^2) m=x+sqrt(x^2+c^2-b^2) data.frame(l=l,m=m,Area=opt$objective) } 安倍政権が在留ベトナム人を増やした 第2次安倍政権 2012年12月26日〜2020年9月16日 在留ベトナム人 2012年 5万2367 ↓ 2019年 41万1968人 外国人摘発1・1万人超 ベトナム、中国で過半数 https://www.nikkei.com/article/DGXMZO57608760T00C20A4CE0000/ 在留外国人、293万人で最多 不法残留は6年連続増―入管庁 https://www.jiji.com/jc/article?k=2020032701013& ;g=soc >ベトナムは不法残留も39.8%急増し、1万5561人で最多。以下、韓国(1万2563人)、中国(1万902人)の順となった。 スカ総理って論理的に説明できる能力が皆無なんじゃないのか? 記者 「10年間くらい(消費税)引き上げなくてもいいという、その根拠ついては何だと考えられているのか」 菅 「まさに、アベノミクスを推進をし、経済を成長させる。まさに、経済成長…え…経済を再生させると、させなければ、財政健全化ないという、その政策のである」 https://twitter.com/shin19infinity/status/1304367586738487297 アベちゃん以上にひどいじゃないか。完全に耄碌ジジイ。 安倍のほうがマシだったという時代が来そうだな。 https://twitter.com/5chan_nel (5ch newer account) 本当に経営者ってのはセコいやつばかりだなw 無利息融資とかも、大半が数字いじって申請してんだろコレw 普段は自分達のことを「経営者」とかいって偉ぶってるくせにやってることは、労基法ムシシタリ嘘の求人で人を集めたりセクハラパワハラ、そしてコロナ禍での火事場泥棒w 品性下劣なバカにはヤレヤレ derive (sqrt(a^2-x^2)+sqrt(b^2-x^2))*(x+sqrt(x^2+c^2-b^2)) f(x) = (sqrt(a^2-x^2)+sqrt(b^2-x^2))*(x+sqrt(x^2+c^2-b^2)) f'(x) =(sqrt(a^2 - x^2) + sqrt(b^2 - x^2)) (x/sqrt(-b^2 + c^2 + x^2) + 1) + (-x/sqrt(a^2 - x^2) - x/sqrt(b^2 - x^2)) (sqrt(-b^2 + c^2 + x^2) + x) =0 f'(x)=0 x=a*b/sqrt(a^2+c^2) 長方形ABCDの内部または辺上の点をPとして PA=3,PB=4,PC=5のとき長方形の面積の最大値と最小値を求めよ。 >>796 一般解が出せたので寝る。 最大値 a=3 b=4 c=5 # l (a*sqrt(a^2 - b^2 + c^2) + b*c)/sqrt(a^2 + c^2) # m (c*sqrt(a^2 - b^2 + c^2) + a*b)/sqrt(a^2 + c^2) # Area b*sqrt(a^2 - b^2 + c^2) + a*c 検算 > (a*sqrt(a^2 - b^2 + c^2) + b*c)/sqrt(a^2 + c^2) [1] 5.612792 > # m > (c*sqrt(a^2 - b^2 + c^2) + a*b)/sqrt(a^2 + c^2) [1] 5.696017 > # Area > b*sqrt(a^2 - b^2 + c^2) + a*c # Area [1] 31.97056 >448の値と一致 コピペだが激しく同意。 検査希望者が自主的に検査を受けて検査数を増やすやり方では、 いくら検査数が増えても効果が少ないのは、 アメリカや欧州を見てあきらか おそらく高リスク群なのに検査受けない人が多いんでしょう 中国方式で検査数を増やすのがいちばん確実で効果がある この地域で〇〇業種で働いてるやつ全員検査うけろ、 とか、この地域の住民全員検査受けろ、 とか、この工場で働いてるやつ全員検査、この学校のやつ全員検査、 みたいに、行政が検査対象を指定して1人も逃さず検査することが重要 正方形ABCDの内部の点をPとしてPA=3,PB=4,PC=5のとき正方形の面積を求めよ。 17 + 4*√(14) 正方形ABCDの内部の点をPとしてPA=1,PB=2,PC=3のとき正方形の面積を求めよ。 5 + 2 * sqrt(2) 正方形ABCDの内部の点をPとしてPA=a,PB=b,PC=cのとき正方形の面積を求めよ。 (1/2)*(a^2 + c^2 + sqrt(-a^4 + 2*a^2*(2*b^2+c^2)-(c^2-2*b^2)^2 )) √ <- function(x) sqrt(x) √(3) 俺の知る範囲だけど国内医療機関に補助金で救えと言っているのは自民党医系議員、共産党、れいわ新撰組だな。 俺の知る範囲だけど医療機関を補助金で救えと言っているのは自民党医系議員、共産党、れいわ新撰組だな。 大阪市廃止住民投票の反対割合の99.99%信頼区間。 > binom.confint(692996,692996+675829,conf.level = 0.9999) method x n mean lower upper 1 agresti-coull 692996 1368825 0.5062707 0.5046081 0.5079332 2 asymptotic 692996 1368825 0.5062707 0.5046081 0.5079333 3 bayes 692996 1368825 0.5062707 0.5046081 0.5079332 4 cloglog 692996 1368825 0.5062707 0.5046069 0.5079320 5 exact 692996 1368825 0.5062707 0.5046077 0.5079336 6 logit 692996 1368825 0.5062707 0.5046081 0.5079332 7 probit 692996 1368825 0.5062707 0.5046081 0.5079332 8 profile 692996 1368825 0.5062707 0.5046081 0.5079332 9 lrt 692996 1368825 0.5062707 0.5046081 0.5079332 10 prop.test 692996 1368825 0.5062707 0.5054328 0.5071086 11 wilson 692996 1368825 0.5062707 0.5046081 0.5079332 > a=t(combn(5,2)) b=expand.grid(1:10,1:10,1:10) f <- function(x){ c(a[x[1],],a[x[2],],a[x[3],]) } y=t(apply(b,1,f)) g <- function(x) !(3 %in% table(x)) i=apply(y,1,g) sum(i) z=y[i,] print(matrix(LETTERS[z],ncol=6),quote=F) 『皆さんには貧しくなる自由があるということだ。何もしたくないなら、何もしなくて大いに結構。その代わりに貧しくなるので、貧しさをエンジョイしたらいい。 ただひとつだけ、その時に頑張って成功した人の足を引っ張るな』。竹中平蔵氏が若者に向けた言葉である。 >>806 A〜Eの5人 月曜日、火曜日、水曜日の3日間について、1日2人ずつの宿直を決める。 1回も宿直に当たらない人はいてもよいが、1人で3日すべて宿直に当たるのはナシとするとき、 3日間の宿直の割り振り方は何通りありますか? A,B,C,D,Eの5人で1日1人の宿直を以下の条件で 日曜日から土曜日まで1週間の日の宿直を割り当てる。 # 1週間のうち1回も宿直に当たらない人がいてはいけない # 誰も2日続けて宿直してはならない # 前週の土曜日の宿直者を日曜日に宿直させてはならない # 誰においても7日の宿直日数の上限は2日である という条件にすると 1週間の宿直割当は何通りあるか? perm <- function(num, N=5, digit = 7){ r=num%%N q=num%/%N while(q > 0 | digit > 1){ r=append(q%%N,r) q=q%/%N digit=digit-1 } return(r+1) } pm=NULL for(i in 0:(5^7-1)){ pm=rbind(pm,perm(i)) } h <- function(x){ all(1:5 %in% x) & all(diff(x)!=0) & all(table(x)<=2) & x[1]!=1 } i=apply(pm,1,h) sum(i) y=pm[i,] ans=matrix(LETTERS[y],ncol=7) colnames(ans)=c('日','月','火','水','木','金','土') print(head(ans,10),quote=F) print(tail(ans,10),quote=F) "更にBは月曜日は都合が悪い、Cは火曜日と木曜日は都合が悪い" j <- function(x){ all(1:5 %in% x) & all(diff(x)!=0) & all(table(x)<=2) & x[1]!=1 & x[2]!=2 & x[3]!=3 & x[5]!=3 } i=apply(pm,1,j) sum(i) y=pm[i,] ans=matrix(LETTERS[y],ncol=7) colnames(ans)=c('日','月','火','水','木','金','土') print(head(ans,10),quote=F) print(tail(ans,10),quote=F) 世界的パンデミック・コロナに自助を要求し、公助が後手後手の菅自民では、今年の年末年始は、リストラ・雇止めで、職を失い、家を失い、蓄えも底をつき、餓死・凍死する人が出る可能性がある。 " ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たす割り当ては何通りあるか? (1) 1回も当直に当たらない人がいてはいけない (2) 誰も続けて当直してはならない(但し、前週の土曜日の当直は考慮しない) (3) 待機は何日連続してもよい (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 " ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たす割り当ては何通りあるか? (1) 1回も当直に当たらない人がいてはいけない (2) 誰も続けて勤務(当直または待機)してはならない(但し、前週の土曜日の勤務は考慮しない) (3) 誰においても1週間の当直総数の上限は2日である (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 女性が少ない、若手が少ない、会員に偏りがあるとかよく言う。 自分の選んだ閣僚達こそまさにそうじゃないか。スガは支離滅裂。 ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たす割り当ては何通りあるか? (1) 1回も当直に当たらない人がいてはいけない (2) 誰も続けて勤務(当直または待機)してはならない(但し、前週の土曜日の勤務は考慮しない) (3) 誰においても1週間の当直総数の上限は2日である (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 例 日 月 火 水 木 金 土 当直 A B A C D E D 待機 D E D E A B C ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たす割り当ては何通りあるか? (1) 1回も当直に当たらない人がいてはいけない(待機はしなくてもいい) (2) 誰も続けて勤務(当直または待機)してはならない(但し、前週の土曜日の勤務は考慮しない) (3) 誰においても1週間の当直総数の上限は2日である(待機の上限はなし) (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 例1 日 月 火 水 木 金 土 当直 A B A B C D E 待機 E D E D E A B 例2 日 月 火 水 木 金 土 当直 A B A C D E D 待機 D E D E A B C " ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たす割り当ては何通りあるか? (1) 1回も当直に当たらない人がいてはいけない(待機はしなくてもいい) (2) 誰も続けて勤務(当直または待機)してはならない(但し、前週の土曜日の勤務は考慮しない) (3) 誰においても1週間の当直総数の上限は2日である(待機の上限はなし) (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 " rm(list=ls()) library(gtools) pm=permutations(5,7,rep=T) f <- function(x){ # (1) & 連続当直不可 & (3) all(1:5 %in% x) & all(diff(x)!=0) & all(table(x)<=2) } i=apply(pm,1,f) sum(i) y=pm[i,] ans=matrix(LETTERS[y],ncol=7) colnames(ans)=c('日','月','火','水','木','金','土') print(ans[1000,],quote=F) ; (x=y[1000,]) f1 <- function(x){ all(diff(x)!=0) # 連続待機不可 } y1=pm[apply(pm,1,f1),] g <- function(x){ # x:当直候補配列 idx=NULL for(i in 1:nrow(y1)){ # y1=待機候補配列 if(all(x %in% 1:3 == !(y1[i,] %in% 1:3))){ #4 idx=append(idx,i) } } re=NULL for(i in idx){ cow=FALSE # 連続勤務continual work? for(j in 1:5){ a=which(j==x) # 当直曜日 b=which(j==y1[i,])# 待機曜日 if(any(diff(sort(c(a,b)))<=1)){ # 連続勤務ならbreak cow=TRUE break } } if(!cow) re=append(re,i) # 連続勤務でなければ採用 } re } apply(y[1:15,],1,g) rei=rbind(LETTERS[x<-y[1,]],LETTERS[y1[g(x)[1],]]) colnames(rei)=c('日','月','火','水','木','金','土') ; rownames(rei)=c('当直','待機') print(rei,quote=F) rei=rbind(LETTERS[y[6600,]],LETTERS[y1[g(y[6600,])[16],]]) colnames(rei)=c('日','月','火','水','木','金','土') ; rownames(rei)=c('当直','待機') print(rei,quote=F) z=apply(y,1,g) length(unlist(z)) # 12192通り nrow(y) ; length(z) rbind(LETTERS[y[1,]],LETTERS[y1[g(y[1,])[1],]]) print(rbind(LETTERS[y[6600,]],LETTERS[y1[g(y[6600,])[16],]]),quote=F) library(gtools) pm=gtools::permutations(6,5,rep=TRUE) idx=apply(pm,1,function(x) sum(x * 6^(4:0))%%6==0) sum(idx) pm[idx,][1000,] 1から6までの数字を使って5ケタの数字を作る。 同じ数字を何回使ってもいいとすると、 (1) 6の倍数は何通りあるか述べよ。 (2) その6の倍数を小さい順に並べたときに1000番目にくる数字を述べよ。 library(gtools) pm=gtools::permutations(6,5,rep=TRUE) f <- function(x) sum(x * 10^(4:0))%%6==0 idx=apply(pm,1,f) sum(idx) pm[idx,][1000,] library(gtools) pm=gtools::permutations(6,5,rep=TRUE) f <- function(x) sum(x * 10^(4:0))%%6==0 y=pm[apply(pm,1,f),] head(y,10) ; tail(y,10) cat(paste(y[1000,],collapse='')) for(i in 1:length(index)){ cat(i,': ') cat(paste(y[i,],collapse=''),'\n') } " 1から6までの数字を使って5ケタの数字を作ります。 同じ数字を何回使ってもいいとすると、6の倍数は1296通りある。 小さい順に並べたときに1000番目にくる数字を述べよ。 " library(gtools) pm=gtools::permutations(6,5,rep=TRUE) f <- function(x) sum(x * 10^(4:0))%%6==0 y=pm[apply(pm,1,f),] head(y,10) ; tail(y,10) cat(paste(y[1000,],collapse='')) for(i in 1:length(index)){ cat(i,': ') cat(paste(y[i,],collapse=''),'\n') } f1 <- function(x) sum(x * 10^(4:0))%%6 mod6=apply(pm,1,f1) pm1=cbind(pm,mod6) head(pm1,30) matrix(mod6,ncol=6,b=T) ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たす割り当ては何通りあるか? (1) 1回も当直に当たらない人がいてはいけない(待機はしなくてもいい) (2) 誰も続けて勤務(当直または待機)してはならない(但し、前週の土曜日の勤務は考慮しない) (3) 誰においても1週間の当直総数および待機総数の上限は2日である (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 (5) 当直は2日以上間隔を空ける 例 > print(rei,quote=F) 日 月 火 水 木 金 土 当直 A B D A C E D 待機 D E C E D A B > print(rei,quote=F) 日 月 火 水 木 金 土 当直 B D E C B A E 待機 E A B D E D B ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たす割り当ては何通りあるか? (1) 誰も少なくとも1回は当直および待機に割り当てられる (2) 誰も続けて勤務(当直または待機)してはならない(前週の土曜日の勤務も考慮する) (3) 誰においても1週間の当直総数および待機総数の上限は2日である (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 (5) 当直は2日以上間隔を空ける(前週の勤務も考慮する) >>826 固定だと不均衡も固定だから良くないな。 ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たすように割りあてる。 (1) 誰も少なくとも1回は日〜土の間で当直および待機に割り当てられる (2) 誰も続けて勤務(当直または待機)してはならない。 (3) 誰においても1週間の当直総数および待機総数の上限はどちらも2日である (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 (5) 当直は2日以上の間隔を空ける 今週の勤務割当は次の通りとする。 日 月 火 水 木 金 土 当直 A B D E C B D 待機 D E C B D E A 週を跨いで(1)〜(5)の条件を満たす来週の割りあて方は何通りあるか? 割り当ては132通り 例 > print(rei,quote=F) 日 月 火 水 木 金 土 当直 E B A C B D E 待機 C D E D E A B > print(rei,quote=F) 日 月 火 水 木 金 土 当直 C B E D A B E 待機 E D A B E D C " 1から6までの数字を使って5ケタの数字を作ります。 同じ数字を何回使ってもいいとすると、6の倍数は1296通りある。 小さい順に並べたときに1000番目にくる数字を述べよ。 " rm(list=ls()) source('toolmini.R') library(gtools) pm=gtools::permutations(6,5,rep=TRUE) f <- function(x) sum(x * 10^(4:0))%%6==0 y=pm[apply(pm,1,f),] head(y,10) ; tail(y,10) cat(paste(y[777,],collapse='')) # 小さい順に並べたときにn番目にくる数字 order2num <- function(n){ # cat(paste(y[n,],collapse=''),'\n') a=10*as.numeric(paste(dec2nw(n,6),collapse=''))+11100 a+(1:6)[(a+1:6)%%6==0] } n=1:(6^4-1) plot(n,sapply(n,order2num)) order2num(333) order2num(777) ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たすように割りあてる。 (1) 誰も少なくとも1回は日〜土の間で当直および待機に割り当てられる (2) 誰も続けて勤務(当直または待機)してはならない。 (3) 誰においても1週間の当直総数および待機総数の上限はどちらも2日である (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 (5) 当直は2日以上の間隔を空ける 今週の勤務割当は次の通りとする。 日 月 火 水 木 金 土 当直 A B D E C B D 待機 D E C B D E A 週を跨いで(1)〜(5)の条件を満たす来週の割りあて方は何通りあるか? library(gtools) pm=permutations(5,7,rep=T) # 当直可能配列 f <- function(x){ # (1) & 連続当直不可 & (3) & (5)(週跨ぎ) int=NULL for(i in 1:5){ a=which(i==x) # a : i の当直日 int[i]=ifelse(length(a)==1,TRUE,diff(a)>2) # 当直間隔が2を越えるか? } all(1:5 %in% x) & all(diff(x)!=0) & all(table(x)<=2) & all(int) & all(x[1]!=c(1,2,4)) & # 日曜日A,B,D当直不可 x[2]!=4 # 月曜日D当直不可 } i=apply(pm,1,f) sum(i) y=pm[i,] # 当直可能配列 # 待機可能配列 f1 <- function(x){ all(1:5 %in% x) & all(diff(x)!=0) & all(table(x)<=2) & # 最低1回 & 連続待機不可 & 待機日総数<=2 all(x[1]!=c(1,4)) # 日曜日A,D待機不可 } y1=pm[apply(pm,1,f1),] g <- function(x){ # x:当直候補配列 idx=NULL for(i in 1:nrow(y1)){ # y1=待機候補配列 if(all(x %in% 1:3 == !(y1[i,] %in% 1:3))){ #4 当直医属性!=待機医属性 idx=append(idx,i) } } re=NULL # 条件を満たす待機配列のy1での行index for(i in idx){ cow=FALSE # 連続勤務continual work? for(j in 1:5){ a=which(j==x) # 当直曜日 b=which(j==y1[i,])# 待機曜日 if(any(diff(sort(c(a,b)))<=1)){ # 連続勤務ならbreak cow=TRUE break } } if(!cow) re=append(re,i) # 連続勤務でなければ採用 } re } gg <- function(x,print=TRUE){ re=g(x) if(!is.null(re)){ n=length(re) ans=vector(mode='list',length=n) for(i in 1:n){ rei=rbind(LETTERS[x],LETTERS[y1[re[i],]]) colnames(rei)=c('日','月','火','水','木','金','土') rownames(rei)=c('当直','待機') ans[[i]]=rei if(print){print(rei,quote=F) cat('\n')} } invisible(ans) } } zz=apply(y,1,gg) nzz=length(zz) zzz=NULL for(i in 1:nzz){ if(!is.null(zz[[i]])) zzz=c(zzz,zz[[i]]) } print(head(zzz),quote=F) print(zzz,quote=F) > print(head(zzz),quote=F) [[1]] 日 月 火 水 木 金 土 当直 C A E B A D E 待機 E D C D E B A [[2]] 日 月 火 水 木 金 土 当直 C A E B C D E 待機 E D C D E A B [[3]] 日 月 火 水 木 金 土 当直 C A E B C D E 待機 E D C D E B A [[4]] 日 月 火 水 木 金 土 当直 C A E C B D E 待機 E D B D E A C [[5]] 日 月 火 水 木 金 土 当直 C A E C B D E 待機 E D B D E C A [[6]] 日 月 火 水 木 金 土 当直 C A E D A B E 待機 E D B C E D A [[101]] 日 月 火 水 木 金 土 当直 E C B D C A E 待機 B D E A E D C [[102]] 日 月 火 水 木 金 土 当直 E C B D E A B 待機 B D E A C D E [[103]] 日 月 火 水 木 金 土 当直 E C B D E A C 待機 B D E A C D E [[104]] 日 月 火 水 木 金 土 当直 E C B D E B A 待機 B D E A C D E [[105]] 日 月 火 水 木 金 土 当直 E C B D E B A 待機 B D E C A D E [[106]] 日 月 火 水 木 金 土 当直 E C B D E C A 待機 B D E C A D E >>829 これは間違い、106通りだと思う。 バグがなければだけど >>831 更に (6) 2週続けて週2回の当直はしてはならない。 を付け加えてみよう。 ある病院に内科医A,B,C、外科医D,Eがいて1週間(日〜土)の当直と呼び出し待機の割り当てをする。 以下の条件を満たすように割りあてる。 (1) 誰も少なくとも1回は日〜土の間で当直および待機に割り当てられる (2) 誰も続けて勤務(当直または待機)してはならない。 (3) 誰においても1週間の当直総数および待機総数の上限はどちらも2日である (4) 内科医が当直のときは待機は外科医、外科医が当直の時は内科医が待機する。 (5) 当直は2日以上の間隔を空ける (6) 2週続けて週2回の当直はしてはならない。 今週の勤務割当は次の通りとする。 日 月 火 水 木 金 土 当直 A B D E C B D 待機 D E C B D E A 週を跨いで(1)〜(6)の条件を満たす来週の割りあて方は何通りあるか? library(gtools) pm=permutations(5,7,rep=T) # 当直可能配列 f <- function(x){ # (1) & 連続当直不可 & (3) & (5)(週跨ぎ) int=NULL for(i in 1:5){ a=which(i==x) # a : i の当直日 int[i]=ifelse(length(a)==1,TRUE,diff(a)>2) # 当直間隔が2を越えるか? } all(1:5 %in% x) & all(diff(x)!=0) & all(table(x)<=2) & all(int) & all(x[1]!=c(1,2,4)) & # 日曜日A,B,D当直不可 x[2]!=4 &# 月曜日D当直不可 sum(x==2)<2 & sum(x==4) # B,D の当直は2回未満 } i=apply(pm,1,f) sum(i) y=pm[i,] # 当直可能配列 lwa=rbind(c(1,2,4,5,3,2,4),c(4,5,3,2,4,5,1)) # last week allocation rei=rbind(LETTERS[c(1,2,4,5,3,2,4)],LETTERS[c(4,5,3,2,4,5,1)]) colnames(rei)=c('日','月','火','水','木','金','土') rownames(rei)=c('当直','待機') print(rei,quote=F) 米国が移民政策成功してるのって弱者が病気になろうと 気にせずゴミのように放置できるから社会コストが跳ね上がらないからだろう。 日本は多民族共生できるほど民度が高くないんだよなぁ。 日本だと気の毒だからと国保にタカらせ集中治療室まで使わせるからパンクする 旅行にいく余裕もない人の税金を横取りして旅にでる強盗キャンペーン。 それでコロナが広がるならまさに死神政策。 緊急提言ではさらに、これらの対策を取った上でも、感染状況ごとに分類した四つのステージのうち、感染者が急増している「ステージ3」相当以上と判断された場合には 「社会経済活動に一定の制約を求めるような強い対策を行う必要があることから、国民が一丸となって対策を進めていく必要がある」とした。 https://mainichi.jp/articles/20201109/k00/00m/040/249000c >国民が一丸となって 一丸となったらクラスターが発生w Keltonの新著を読み始めた。 The Deficit Myth: Modern Monetary Theory and the Birth of the People's Economy (English Edition) Kindle版 この記述は意外だったな。 But even Senator Bernie Sanders has echoed Reagan, saying, “I am concerned about the debt. It’s not something we should be leaving to our kids and our grandchildren.” The fifth myth is that deficits make the United States dependent on foreigners. This myth would have us believe that countries like China and Japan have enormous leverage over us because they hold large quantities of US debt. 米国債を売ろうという誘惑に言及した総理は不審死したよあなぁ。 zを-1でない複素数として ω= (z+2i) / (z+1) とおく。 |z|=1のとき、偏角が3π/4となるωを求めよ。 options(digits=5) f <- function(x){ z=cos(x)+1i*sin(x) omega=(z+2i)/(z+1) Arg(omega) } curve(f,0,2*pi) ; abline(h=3/4*pi,lty=3) low=optimise(f,c(4,5),maximum = T)$maximum (x=uniroot(function(x)f(x)-3/4*pi,c(low,5))$root) (z=cos(x)+1i*sin(x)) (omega=(z+2i)/(z+1)) z=a+bi ω=(z+2i)/(z+1) =(a+bi+2i)/(a+bi+1) 分母子にa+1-biをかけると 分子=(a+bi+2i)(a+1-ib) 分母=(a+1)^2+b^2 ωの偏角が3/4πということは ωの虚部/ωの実部=tan(3/4π)=-1 分母は実数なので約分されて 分子の虚部/分子の実部=-1 これを変形して 分子の虚部+分子の実部=0 複素数α+iβをα+βに変形するにはi=1と置換すればいいので 分子の式(a+bi+2i)(a+1-ib)でi=1と置換して (a+b+2)(a+1-b)=0 ∴ a+b+2=0 またはa+1-b=0 |z|=1ゆえa^2+b^2=1 a+b+2=0 かつ a^2+b^2=1に実数解なし a+1-b=0 かつ a^2+b^2=1 を解くと(a,b)=(-1,0),(0,1) z≠-1なのでa=0,b=1が残る z=a+bi (a,bは実数) ω=(z+2i)/(z+1) 分母子に(a-bi+1)をかけると 分子=(z+2i)(a-bi+1)=(a+bi+2i)(a-bi+1)= (a^2+a+b^2+2b) +i(2a+b+2) 分母=(z+1)(a-bi+1)=(a+bi+1)(a-bi+1)=(a+1)^2+b^2 (実数) ωの虚部/ωの実部=分子の虚部/分子の実部=tan(4π/3)=-1 これを変形すれば、 分子の実部+分子の虚部=0 複素数α+iβをα+βに変形するにはこの形でi=1と置換すればいいので 分子のiを1に置換して a^2+a+b^2+2b +(2a+b+2) = a^2+b^2+3a+3b+2=0 |z|=1ゆえa^2+b^2=1なので 連立方程式 a^2+b^2+3a+3b+2=0 a^2+b^2=1 を解くと a=-1,b=0 または a=0,b=-1 z≠-1ゆえa=-1,b=0は不適。 候補はa=0,b=-1 z=a+bi=-i このとき ω=(z+2i)/(z+1)=i/(1-i) = -0.5+0.5i 偏角=atan(0.5/(-0.5))=(3/4)π △ABC (∠A=50°, ∠B=70°) をAを原点、Bをx軸上に配置する。 △ABCの内部の点をPとしてPA=2 PB=3, PC=4 のとき、 (1)B,C,Pの座標を求めよ。 (2)△PAB,△PBC,△PCAの面積を求めよ > re$B [1] 4.9368+0i > re$C [1] 3.4432+4.1035i > re$P [1] 1.9619+0.3879i > with(re,ABC2S(P,A,B)) #△PAB [1] 0.95738 > with(re,ABC2S(P,B,C)) #△PBC [1] 5.8139 > with(re,ABC2S(P,C,A)) #△PCA [1] 3.3576 > re$B [1] 4.9368+0i > re$C [1] 3.4432+4.1035i > re$P [1] 1.9619+0.3879i > with(re,ABC2S(P,A,B)) #△PAB [1] 0.95738 > with(re,ABC2S(P,B,C)) #△PBC [1] 5.8139 > with(re,ABC2S(P,C,A)) #△PCA [1] 3.3576 > re$S # △ABC [1] 10.129 https://i.imgur.com/PFt8IBP.png [1] 4.652337六角形AB,CD,EFの辺の長さをn,BC,DE,FAの長さをm、 ∠A=degA° ∠C=degC° ∠E=degE°、とする。 m=1,n=2, degA=60,degC=90,degE=120のとき この六角形の面積を求めなさい。 作図するプログラムを書くのが面白かっただけ。 https://i.imgur.com/m045k8H.png > Hexagon(1,2,60,90,120) [1] 4.652337 よくも悪くも、中国共産党の対日外交には虚々実々の駆け引きというか、ある程度の枠がはまっているのに対して、かりに将来、中国の民主化が進んで「反日デモ」的な大衆感情に熱狂的に支持されて議会の多数派を占めるような政権が誕生した場合、日本に対する姿勢が今までと比較にならないくらい強硬になるのではないかという不安は、多くの日本人が感じたことがあるのではないか 中国化する日本 より >>851 > re=DV2A(50,70,2,3,4) > attach(re) > A=0i > B [1] 4.936762+0i > C [1] 3.443221+4.103471i > P [1] 1.961936+0.387857i > ABC2S(P,A,B) #△PAB [1] 0.9573792 > ABC2S(P,B,C) #△PBC [1] 5.813914 > ABC2S(P,C,A) #△PCA [1] 3.357635 > S # △ABC [1] 10.12893 > D=intsect(A,P,B,C) ; pt(D,'D') > seg(P,D,col=2,lty=3) > E=intsect(A,C,P,B) ; pt(E,'E') > seg(P,E,col=2,lty=3) > F=intsect(A,B,C,P) ; pt(F,'F') > seg(P,F,col=2,lty=3) > D [1] 4.605388+0.910444i > E [1] 0.4868298+0.5801812i > F [1] 1.807311+0i > detach(re) # 小数点付きの数numをN進法で表示する(62進法まで対応 0-9,a-z,A-Z) rm(list=ls()) num=1/3;N=3;kmin=5 decN <- function(num, N, kmin = 5){ # kmin:最小小数点後桁 int=floor(num) r=int%%N q=int%/%N while(q > 0){ r=append(q%%N,r) q=q%/%N } # rに整数のN進法表示数列を格納 k=max(nchar(num)-nchar(floor(num))-1,kmin) # 同長もしくはkminの長さの小数表示 a=numeric(k) x=round(num-floor(num),k) # e.g. 7.28-floor(7.28)!=0.280に対応 for(i in 1:k){ y=round(x*N,k) # e.g. 0.728*5-3.64 !=0 に対応 a[i]=floor(y) x=y-a[i] # r . a[1] a[2] a[3] ... a[k] } b=list(integer=r,decimal=a,num=sum(c(int,a)*(1/N)^(0:k))) fig=c(0:9,letters,LETTERS)[1:N] if(N<=62){ # Nが62以下は数値として表示 cat(paste(fig[b$integer+1],sep='',collapse=''), '.',paste(fig[b$decimal+1],sep='',collapse=''),sep='') cat('\n') } else{ # Nが63以上は整数部分と小数部分を数列で表示 print(b[1:2]) } invisible(b) # b$num:検証用 } del=sapply(1:16, function(x) decN(0.1,x,16)) decN(pi,16) decN(0.1,13,10) # 13進法 0 1 2 3 4 5 6 7 8 9 A J Q options(digits=22) decK <- function(PI=pi,K=10){ x=decN(PI,13,kmin=K) K <- function(x){ if(x==0) return('0') else{ c(as.character(1:9),'A','J','Q')[x] } } K=Vectorize(K) re=paste(c(K(x$integer),'.',K(x$decimal)),collapse = '') print(re,quote=F) invisible(re) } decK(pi) decK(exp(1)) decK(sqrt(2)) 14進法 で使う数字を小さい方から0 1 2 3 4 5 6 7 8 9 A J Q Kとするときπ、ネイピア数、√2を14進法で小数10桁まで表示せよ。 62進法 で使う数字を小さい方から0 1 2 3 4 5 6 7 8 9 a b c ... x y z A B C ... X Y Z とするときπ、ネイピア数、√2を14進法で小数10桁まで表示せよ。 > decN(pi,62) 3.8MhuCIRym8egOl > decN(exp(1),62) 2.Ix4FDGbb8J4wtH > decN(sqrt(2),62) 1.pGeGLWSyyECdM 0と1の2個の数を使いマイナス二進法で1から10を数えよ (マイクロソフトの入社試験) 答と解説は https://i.imgur.com/F5AdX1Q.jpg https://www.youtube.com/watch?v=CTzw-zi7Zro 20まで計算させてみた ans 1 1 2 110 3 111 4 100 5 101 6 11010 7 11011 8 11000 9 11001 10 11110 11 11111 12 11100 13 11101 14 10010 15 10011 16 10000 17 10001 18 10110 19 10111 20 10100 それを面倒にした問題 (1) 2021をマイナス二進法で表示せよ。 (2) 3, 33, 333, 3333を各々マイナス三進法で表示せよ。 MS <- function( # Minus N-ary System num, N=-2, d=16, print=TRUE ){ base=N^((d-1):0) pm=expand.grid(replicate(d,0:(-N-1),simplify = FALSE)) colnames(pm)=1:d f <- function(x) sum(x*base) == num re=pm[apply(pm,1,f),] i=1 flg <- re[1]==0 while(flg){ i=i+1 flg <- re[i]==0 } ans=paste(as.character(re[i:d]),collapse='') if(print) print(ans,quote=F) invisible(ans) } data.frame(ans=sapply(1:20,function(n)MS(n,p=F))) MS(2021,-2) MS(3,-3,d=3) MS(33,-3,d=5) MS(333,-3,d=7) MS(3333,-3,d=9) 3を0,1,2の3つの数字をつかったマイナス三進法で表すと3 = 1*(-3)^2 + 2*(-3) + 0*(-3)^0なので 120と表せる。 1から10までをマイナス三進法で表示すると 1 1 2 2 3 120 4 121 5 122 6 110 7 111 8 112 9 100 10 101 問題 : 円周率をマイナス三進法で小数10桁まで表示せよ。 MS <- function( # Minus N-ary System num, N=-2, d=16, print=TRUE ){ base=N^((d-1):0) pm=expand.grid(replicate(d,0:(-N-1),simplify = FALSE)) colnames(pm)=1:d f <- function(x) sum(x*base) == num re=pm[apply(pm,1,f),] i=1 flg <- re[1]==0 while(flg){ i=i+1 flg <- re[i]==0 } ans=paste(as.character(re[i:d]),collapse='') if(print) print(ans,quote=F) invisible(ans) } piN <- function(N=-2){ # pi for minus N-ary system Pi=unlist(strsplit(as.character(pi),'.',fixed=T)) seisu=MS(as.numeric(Pi[1]),N,d=3,print=F) # 3(mod10) = 120(mod-3) pm=expand.grid(replicate(10,0:(abs(N)-1),simplify = F)) base=(1/N)^(1:10) f <- function(x) (pi-floor(pi)- sum(x*base))^2 dif=apply(pm,1,f) shosu=paste(as.character(pm[which.min(dif),]),collapse='') print(paste0(seisu,'.',shosu),quote=F) } ■ このスレッドは過去ログ倉庫に格納されています
read.cgi ver 07.5.5 2024/06/08 Walang Kapalit ★ | Donguri System Team 5ちゃんねる