数限られているから数回の試行錯誤でもできるとは思うが,ユニーク解であるかどうかは,しらみつぶしでやるしかないかな
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 では,全てを尽くせないので,e1071 の permutations を使って以下のようにやってみる。
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
※コメント投稿者のブログIDはブログ作成者のみに通知されます