裏 RjpWiki

Julia ときどき R, Python によるコンピュータプログラム,コンピュータ・サイエンス,統計学

Color Space の変換

2014年10月29日 | ブログラミング

特に難しいものではないと思う。

プログラム検証に例が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 = which(BS[1] == name)
  for (i in 2:nchar(CS)) {
    BS[i] = names(which(BS[i] == mx[former,]))
    former = which(BS[i] == name)
  }
  paste(BS, collapse="")
}

sample01 = "C103023011232302323231301122233320313322132310333233003233231023023000231223"
answer01 = "CAATTCGGTGATCGGATCGATGCCACTCTATAGGCATAGACGATGGCGCTATTTAGCGATGGATTCGGGGATGAGC"
CS2BS(sample01) == answer01

sample02 = "G013232302011113133323231113100032313121302131301303000310323130301323123032"
answer02 = "GGTAGCTAAGGTGTGCATATCGATGTGCAAAATCGTACTGCCTGCATTGCCGGGGCAATCGTAATTGCTACTAATC"
CS2BS(sample02) == answer02

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

5×5ラテン方陣アナグラム

2014年10月29日 | ブログラミング

数限られているから数回の試行錯誤でもできるとは思うが,ユニーク解であるかどうかは,しらみつぶしでやるしかないかな

word.list = c("steal", "stela", "telas", "teals", "elast", "least", "laste", "astel")
w.l = sapply(word.list, function(w) unlist(strsplit(w, "")))
ans = combn(length(word.list), nchar(word.list[1]), function(o) apply(w.l[,o], 1, paste, collapse=""))
sapply(ans[,apply(apply(ans, 2, "%in%", word.list), 2, all)], function(w) unlist(strsplit(w, "")))

combn では,全てを尽くせないので,e1071permutations を使って以下のようにやってみる。

word.list = c("steal", "stela", "telas", "teals", "elast", "least", "laste", "astel")
w.l = sapply(word.list, function(w) unlist(strsplit(w, "")))
suf = unique(permutations(length(word.list))[, 1:nrow(w.l)])
ans = apply(suf, 1, function(o) apply(w.l[,o], 1, paste, collapse=""))
ans = sapply(ans[,apply(apply(ans, 2, "%in%", word.list), 2, all)], function(w) unlist(strsplit(w, "")))
dim(ans) = c(5, 5, ncol(ans)/5)
ans

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

換字式暗号

2014年10月29日 | ブログラミング

エドガー・アラン・ポーの黄金虫より簡単だ(情報が多いからね)

R で書くともっと簡単。数回の試行錯誤で解読可能。

chartr(
"ryqzvngfluohticxdbamwpejks",
"etonasirhdlucfmpgjwyvkbzxq",
tolower(readLines("text.txt")))

コメント
  • X
  • Facebookでシェアする
  • はてなブックマークに追加する
  • LINEでシェアする

PVアクセスランキング にほんブログ村

PVアクセスランキング にほんブログ村