gpt4 book ai didi

javascript - 置换字符串直到它匹配一些输入?

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:11:24 27 4
gpt4 key购买 nike

我在网上查了这个,没有太多结果,因为很难用几句话来描述。

基本上,我需要一个函数,例如 puntil,它接受参数 string。基本上,函数会置换直到字符串等于参数。

例如,如果您运行 puntil('ab'),它应该在函数内部执行:

一个bCd电子FGH我jk升米nopqr秒吨你vwX是z一个ab !!匹配

另一个例子,对于 puntil('abcd') 它将执行

一个bCd电子FGH我jk升米nopqr秒吨你vwX是z一个ab交流电广告ae自动对焦银啊艾杰啊阿尔是一个奥应用程序水ar作为在金影音哇斧头哎呀z

...等等等等..直到它匹配 abcd。

基本上是无限排列,直到它匹配为止。

有什么想法吗?

最佳答案

这是 fiddle

 var alphabet = ['a','b','c'];//,'d','e','f','g','h','i','j','k','l','m','n','o','p','q','r','s','t','u','v','w','x','y','z'];

var output = "";
var match = "cccc"; //<----------- match here

//This is your main function
function permutate() {

var d = 0; // d for depth

while (true) {

//Your main alphabet iteration
for (var i=0; i<alphabet.length; i++){

//First level
if (d === 0) {
console.log(alphabet[i])
output = alphabet[i];
}
else
iterator(alphabet[i], d); //Call iterator for d > 0

if (output === match)
return;
}


d++; //Increase the depth
}
}


//This function runs n depths of iterations
function iterator(s, depth){

if (depth === 0)
return;

for (var i=0; i<alphabet.length; i++){

if (depth > 1)
iterator(s + alphabet[i], depth - 1)
else {
console.log(s + alphabet[i]);
output = s + alphabet[i];
}

if (output === match)
return;
}

};

解释:

你的程序需要像这样遍历字母表树

[a] 
-[a]
-[a]
-[a]...
-[b]...

[b] ...
-[b] -
-[a]...
-[b]...

[b] - ...
[c] - ...

如果不是因为您需要先完成每个深度的要求,这可以通过传统的递归函数轻松完成。

因此我们需要一个特殊的iterator(s, depth) 函数,它可以执行请求的嵌套迭代次数(深度)。

所以主函数可以调用深度递增的迭代器(d++)。

就这些了!

警告:这只是一个原型(prototype)。这是可以优化和改进的。它使用全局变量以便于演示。您的真实程序应该避免使用全局变量。如果您的匹配词太长,我还建议在 setTimeout 中调用 iterator()n 深度只能受限于您的资源。

关于javascript - 置换字符串直到它匹配一些输入?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33887599/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com