如何生成词序列

How to generate word sequence

1.I 想要从给定的单词生成字符组合,每个字母最多连续重复 2 次,并且至少 1.The 个合成的单词长度不等。例如来自

"cat"

"cat", "catt", "caat", "caatt", "ccat",  "ccatt", "ccaat", "ccaatt"

所需函数取一个长度为n的词并生成2^n个不等长的词。它几乎类似于具有 n 长度的二进制数字给出 2^n 组合。例如,一个 3 位二进制数给出

000 001 010 011 100 101 110 111 

组合,其中 0=t 和 1=tt。

2.And 即使给定的单词有 letters.For 示例

的重复,同样的函数也应该限制结果序列最多连续重复一个字符 2
"catt"

"catt"   "ccatt"  "caatt"  "ccaatt"

我试过这样的东西

pos=expand.grid(l1=c(1,11),l2=c(2,22),l3=c(3,33))
result=chartr('123','cat',paste0(pos[,1],pos[,2],pos[,3]))

#[1] "cat"    "ccat"   "caat"   "ccaat"  "catt"   "ccatt"  "caatt"  "ccaatt" 

它给出了正确的顺序,但我坚持将它推广到任何不同长度的给定单词。

谢谢。

正常使用标准输出...

打印("Hello, world!")

x="cat"
l=seq(nchar(x))
n=paste(l,collapse="")
m=split(c(l,paste0(l,l)),rep(l,2)) 
chartr(n,x,do.call(paste0,expand.grid(m)))

1.Just Onyambu 给出的答案的补充,用于解决问题的第二部分,即在给定输入单词中任意数量的连续字符重复的情况下,将输出限制为最多连续重复 2 个字符.

x="catt"
l=seq(nchar(x))
n=paste(l,collapse="")
m=split(c(l,paste0(l,l)),rep(l,2))
o <- chartr(n,x,do.call(paste0,expand.grid(m)))

下面的代码行删除连续重复字符超过 2 个的单词

unique(gsub('([[:alpha:]])\1{2,}', '\1\1', o))
#[1] "catt"   "ccatt"  "caatt"  "ccaatt"

2.If 你想要从 "cat" to "ccaattt" 开始的所有组合,给定输入单词中任意数量的连续字符重复。代码是

x1="catt"

下面一行代码将字符的连续重复限制为 1。

x2= gsub('([[:alpha:]])\1+', '\1', x1)
l=seq(nchar(x2))
n=paste(l,collapse="")
m=split(c(l,paste0(l,l)),rep(l,2))
o <- chartr(n,x,do.call(paste0,expand.grid(m)))
unique(gsub('([[:alpha:]])\1{2,}', '\1\1', o))
#[1] "cat"    "ccat"   "caat"   "ccaat"  "catt"   "ccatt"  "caatt"  "ccaatt"