好的,这里是一个整数序列。在数学堆栈交换中,我了解了这个序列的含义。基本上:
- 给定 n 个项目,a(n) 是您可以创建的三个组的数量,其中没有两个组有多个共同项目。
所以如果你有 7 个项目,用字母 ag 表示,你可以组成这七个组:
1. abc
2. ade
3. afg
4. bdf
5. beg
6. cdg
7. cef
'a'
并且'b'
只一起出现一次,与'a'
and'c'
和每隔一对相同。
我正在尝试编写一个小程序,可以为我提供任意数量的这些三重奏。现在它适用于一个长度为 n 个字符的字符串。这就是我所拥有的。我认为它很好地解释了自己。
var str = 'abcdefg';
var userPairs = [];
var found = 0
var x;
var y;
var z;
$('.bundles').append(str.length+'<br>');
for (x = 0; x < str.length; x += 1) {
for (y = 0; y < str.length; y += 1) {
for (z = 0; z < str.length; z += 1) {
var possible = str[x]+str[y]+str[z];
if (!tooSimilar(possible)) {
found += 1;
$('.bundles').append(found + ') ');
$('.bundles').append(possible+'<br>');
userPairs.push(str[x]+str[y]);
userPairs.push(str[y]+str[z]);
userPairs.push(str[x]+str[z]);
}
}
}
}
function tooSimilar(possible) {
if (possible[0] === possible[1] ||
possible[1] === possible[2] ||
possible[2] === possible[0]) {
console.log('repeated char');
return true;
} else if (userPairs.indexOf(possible[0]+possible[1]) !== -1 ||
userPairs.indexOf(possible[1]+possible[0]) !== -1 ||
userPairs.indexOf(possible[1]+possible[2]) !== -1 ||
userPairs.indexOf(possible[2]+possible[1]) !== -1 ||
userPairs.indexOf(possible[0]+possible[2]) !== -1 ||
userPairs.indexOf(possible[2]+possible[0]) !== -1){
console.log('repeated pair');
return true;
} else {
console.log('FOUND ONE');
return false;
}
}
它适用于七个或更少的字符,给出您期望从序列中获得的三重奏数量。但是超过七个它就坏了。
它输出的三重奏列表总是符合标准,但似乎缺少一些,我不知道在哪里。