gpt4 book ai didi

javascript - 将单词随机分成定义长度组的算法

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

我正在编写一个程序(在 JavaScript 中),它需要将一个字符串(一个单词)随机拆分为字母组,每组长度(字符数)为 2,3 或 4 个字符长。例如,australia 可以返回:

aus
tral
ia

au
str
alia

目前我正在“手动”执行此操作,每个字符串长度都有 if 语句,例如:

if (word.length == 4){ //split
sections.push(word.substr(0,2));
sections.push(word.substr(2,4));
}

if (word.length == 5){ //either 2/3 or 3/2
if (randomBetween(1,2) == 1){
sections.push(word.substr(0,2));
sections.push(word.substr(2,5));
} else {
sections.push(word.substr(0,3));
sections.push(word.substr(3,5));
}
}

etc...

// randomBetween(x,y) randomly returns one of the arguments

有没有人有更算法的解决方案?

最佳答案

迭代地从 2 到 4 中选择一个随机长度以形成组列表。当剩余字符串太小而无法提供所有这些选项时,处理边缘情况。

请注意,并非所有可能的组合都会以均匀的概率被选中。我不认为有一种简单的方法可以有效地做到这一点。

如果传入长度小于 2 的单词,我会留给你选择会发生什么。

function randomlySplit(word) {
var groups = [],
tail = word;
while (tail.length) {
var availableLengths = [2, 3, 4];
if (tail.length <= 3) availableLengths = [tail.length];
if (tail.length === 4) availableLengths = [2];
if (tail.length === 5) availableLengths = [2, 3];
var length = availableLengths[(Math.random() * availableLengths.length) | 0];
groups.push(tail.slice(0, length));
tail = tail.slice(length);
}
return groups;
}
alert(randomlySplit("australia"));

可以看到this in action on jsFiddle .

关于javascript - 将单词随机分成定义长度组的算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25982352/

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