2014-10-01から1ヶ月間の記事一覧
READ + WRITE + TALK = SKILL を満たす解が何通りあるか。 以下のプログラムは,2 番目のものより 10 倍ほど「遅い」。 library(e1071)d = permutations(10)-1w = c(1000, 100, 10, 1)w2 = c(w*10, 1)ans = apply(d, 1, function(x) all(x[c(1,5,7,10)] != 0…
プログラムの冒頭に示すような,1 文字を要素とする 20×20 の行列がある。 "STAY HUNGRY, STAY FOOLISH" の各文字が,行列のどこにあるか,添え字を求めよ。 ただし,一度検索された要素(添え字)は二度目以降は検索対象にならない。 box <- matrix(c("Z","…
16 種類のオーダーと,それにかかる日数と売上代金の表がある。同じオーダーを 2 つ以上使うことはできない。同時に 2 つ以上のオーダーは処理できない。代金が最大になるような複数のオーダーの組合せを求めよ。ただし,所要日数の合計は 100 日以内でなけ…
「最もエネルギー効率のよいルート選択」と同じであるが,こちらは,合計距離が最短になるルート選択。エネルギー行列と違って,距離行列は対称行列である。 ノードが少なければ,しらみつぶし探索でも問題ないが,ノードが多くなったら,別の解法を採らない…
6 つのポイントがあり,あるポイントから別のポイントへ移動するために必要なエネルギーが energy.matrix で記述されている。1 番目のポイントから 2 番目のポイントに移動するためには,energy.matrix[1, 2] = 7 必要というようなこと。 1 番目のポイントか…
特に難しいものではないと思う。 プログラム検証に例が100個も必要か? CS2BS = function(CS) { mx = matrix(c(0,1,2,3, 1,0,3,2, 2,3,0,1, 3,2,1,0), 4) name = c("A","C","G","T") dimnames(mx) = list(name, name) BS = unlist(strsplit(CS, "")) former …
数限られているから数回の試行錯誤でもできるとは思うが,ユニーク解であるかどうかは,しらみつぶしでやるしかないかな word.list = c("steal", "stela", "telas", "teals", "elast", "least", "laste", "astel")w.l = sapply(word.list, function(w) unlis…
エドガー・アラン・ポーの黄金虫より簡単だ(情報が多いからね) R で書くともっと簡単。数回の試行錯誤で解読可能。 chartr("ryqzvngfluohticxdbamwpejks","etonasirhdlucfmpgjwyvkbzxq",tolower(readLines("text.txt")))
library(gmp)count2 = function(s, n) { if (nchar(s) == 1) { return(as.bigz(as.integer(s) >= n)) } else { left = as.integer(substring(s, 1, 1)) s = substring(s, 2, nchar(s)) result = left*nchar(s)*as.bigz(10)^(nchar(s)-1) - (n == 0)*as.bigz(…
「CodeIQ 7 を数える」を任意の数字の個数を数えることができるように,再帰関数として定義した。 count2 = function(s, n) { if (nchar(s) == 1) { return( (as.integer(s) >= n)+0) } else { left = as.integer(substring(s, 1, 1)) s = substring(s, 2, n…
1~2*n 番目までの 2*n 個の個体が円周上に並んでいる。2 番目から初めて 1 つ置きに取り去る。最後に取り除かれるのが最初に並んだときの n 番目の個体であるような n を小さい方から 5 つ求めよ。 k = 0n = 5 # 21, 85, 341, 1365, 5461, 21845 i.e. a[1]=…
> 12人全員が他人のパソコンを持って帰ってしまうような組み合わせが何通りあるか Wikipedia 曰く, 完全順列(かんぜんじゅんれつ、英 Derangement)、もしくは攪乱順列(かくらんじゅんれつ)とは、整数 1, 2, 3, …, n を要素とする順列において、i 番目 (…
9 桁の整数を二乗して,結果の下 9 桁が最初の数と同じになる。そういう数を見つけなさいと... 素直にやっていくとどうしようもない。どうせ,各桁の取り得る値は限られているのだから,下の桁から可能性を絞っていくという戦略で,ループを段階的に深くした…
データの性質を見極めておかないと誤った統計数値を得てしまうよという教訓を垂れる訳だろうが... 図に示すような 3 種類のデータがある。各データは 2 列で,1 列目と 2 列目の合計が等しいかどうか判断せよと。 1 番目のデータ(左上が 1 列目,左下が 2 …
自分で PI の小数点以下の数字を求めて,その中に特有の数字列がどこにあるかを探すプログラムを書く。PI の数字列は自分で計算することを条件とする。 たとえば 9 が 6 個連続して出現するのはどこか?そのほかに,どのような「珍しい」数字列がどこにある…
r-statistics-fanの日記Rで標準化効果量を計算する(Rewriting the code of SAS proc %stddiff to R)http://r-statistics-fan.hatenablog.com/entry/2014/10/14/215903比率と,順序尺度については大いに参考になりました。間隔尺度についての効果量は,各群の…
言語によって,gsub の仕様が少し変わるが基本は同じ。 BEGIN {str = "14159265358979323846264338327950288419716939937510582097494459230781640628620899862803482534211706798214808651328230664709384460955058223172535940812848111745028410270193852…
(2)と似ているが str = "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211055596446229489549303819644288109756659…
計算時間を贅沢に > library(gmp)> n = 30*0:10000> n = n[isprime(n+11) > 0 & isprime(n+13) > 0 & isprime(n+17) > 0 & isprime(n+19) > 0]> t(sapply(n, "+", c(11, 13, 17, 19))) [,1] [,2] [,3] [,4] [1,] 11 13 17 19 [2,] 101 103 107 109 [3,] 191 …
文字列操作で書いてみる(題意通りの解が得られる区切り方) str = "1415926535897932384626433832795028841971693993751058209749445923078164062862089986280348253421170679821480865132823066470938446095505822317253594081284811174502841027019385211…
> 最初の2桁は 14 なので、アルファベット・インデックス表の 「o」 にあたり、カウントしません。 > 次の2桁は 15 なので、アルファベット・インデックス表の 「p」 にあたり、カウントします。 以下のプログラムは,要求されている仕様と異なる。以下のプ…
> 早大:小保方氏の博士号取り消し決定 論文訂正に1年猶予 論文訂正に1年の猶予というのではなく,まずは取り消し,再提出されたならば厳正に審査するというのが正しい対処法ではないか? なぜ猶予刑なのか。理解に苦しむ。
> 10/06 朝の体重78.6㎏、体脂肪率31%でした。> 10/05 朝風呂後の体重78.6㎏、体脂肪率27%でした。> 10/04 朝の体重79.4㎏、体脂肪率26%でした。 体の中の脂肪の量って,そんなに変動するものなのか? 体脂肪量を表示する体重計の精度とか理論とか考えるべ…
R の次のバージョンのコードネームは Pumpkin Helmet だそうだ。 いつものように,Snoopy と Charlie Brown ゆかりのもの。 http://dvd.netflix.com/Movie/You-re-a-Good-Sport-Charlie-Brown/70111491 最初の絵の説明中には,以前のコードネーム Good Sport…
outer は,実に使いでのある関数だ # 差が 6 の素数の組n = 2:500m = n[1-outer(n, n)]index = which(outer(m, m, "-") == 6, arr.ind=TRUE)cat(paste(apply(matrix(m[index], ncol=2), 1, function(x) sprintf("(%i,%i)", x[2], x[1])), collapse=","))# ま…
1:N までの数列から,2の倍数(2, 4, 6, ...)と3の倍数(3, 6, 9, ...)を取り除いた数列の和func1 = function(N) { n = 1000000 x = 1:n x[1:(n%/%2)*2] = 0 x[1:(n%/%3)*3] = 0 x = x[x != 0] if (N > length(x)) return(NA) else return(sum(x[1:N]))}func2 …
func2 <- function(n) { stopifnot(n <= 1388888888888885) # 桁数の同じ数を一群とする (5,6,7,8,9), (10,11,...,99), (100,101,...,999), (1000,1001,...,9999),... head <- 5 # 群の最初の数値 5, 10, 100, 1000,... kosuu <- 5 # 群に含まれる数値の個数…
負の数は10の補数とするので,引き算もできるN <- 31 # 符号を含めた桁数Add <- function(a, b) { carry <- function(s) { for (i in 1:N) { if (s[i] > 9) { s[i+1] <- s[i+1]+1 s[i] <- s[i]-10 } } return(s) } decomp <- function(s) { if (sign <- grep…
R だと invisible(sapply(1:10, function(n) cat(choose(n, 0:n), "\n"))) for を使う方が短いが for (i in 1:10) cat(choose(i, 0:i), "\n") choose なんていう関数を使うなということならば x <- 1; for (i in 1:10) cat(x <- c(x, 0)+c(0, x), "\n") いず…