gpt4 book ai didi

javascript - 生成字符串的所有辅音

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

我想生成给定字符串的所有辅音。

Consonance is a stylistic literary device identified by the repetition of identical or similar consonants in neighboring words whose vowel sounds are different. (Wikipedia)

A consonant是字母表中的一个字母,表示辅音。下表吸收了英语辅音组,采用以下便利使事情简单(istic):

  1. 它会忽略变音符号(“sh”、“ch”、“th”等)。
  2. 它忽略元音。
  3. 它忽略“h”、“y”、“w”、“x”。
  4. 它假设给定的字母只能是一个辅音组的成员。因此,“c”(随机)与“s”和“z”放在一起,“g”与“j”放在一起。

我们还假设符合情况 2 和 3 的输入是允许的,应该简单地忽略。但是,如果输入符合情况 1 或不符合情况 4,则输入无效(请参见下面的示例)。

所以:

var consonants = [
['b', 'p'],
['c', 's', 'z'],
['d', 't'],
['f', 'v'],
['g', 'j'],
['k', 'q']
];

例如,给定字符串"jedi",输出应该是:

var consonances = ["gedi", "jeti", "geti"]

请注意,“e”和“i”——元音(第 2 种情况)——可以作为输入。

其他一些例子:

"btb"       --> ["ptb", "pdb", "pdp", "bdb", "bdp", "btp", "ptp"]
"star" --> ["ctar", "ztar", "sdar", "cdar", "zdar"]

无效输入:

  1. 图表:“show”、“chair”、“high”、“the”
  2. 破例 4:“sure”、“cat”、“good”

我在试图找到接近它的方法时碰壁了。我经历了排列问题,因为我猜它们可能与这里相关,但我不知道如何在这里应用这样的解决方案。

我需要一个算法,但当然,完整的代码解决方案会更好。我将在此处添加我目前剩下的内容(JS 代码):

const irrelvant = ['a', 'e', 'i', 'o', 'u', 'h', 'y', 'w', 'x'];
function isConsonant(c) {
return !irrelvant.includes(c);
}
function getConsonants(c) {
let curConsonants = [];
consonants.every((group) => {
if (group.includes(c)) {
curConsonants = group;
};
return !curConsonants.length;
});
return curConsonants;
}

最佳答案

我建议在 map 中组织相关的辅音:

var consonants = {
"b": "p",
"p": "b",
"c": "sz",
"s": "cz",
"z": "cs",
"d": "t",
"t": "d",
"f": "v",
"v": "f",
"g": "j",
"j": "g",
"k": "q",
"q": "k",
];

现在您可以逐个字符地迭代字符串。如果您在映射中命中一个字符,请考虑将映射字符串中的每个字符插入到 pos 处的已更改单词(除了您仍然执行的未更改的递归之外)。伪代码:

function generate(word, pos) {
if (pos == word.length) {
console.log(word);
return;
}
generate(word, pos + 1);
mapped = consonants[word.charAt(pos)];
if (mapped != null) {
var prefix = word.substring(0, pos);
var suffix = word.substring(pos + 2);
for (var i = 0; i < mapped.length; i++) {
var changed = prefix + mapped.charAt(i) + suffix;
geneate(changed, pos + 1);
}
}
}

关于javascript - 生成字符串的所有辅音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52505840/

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