问题描述
我怎么能做这样的事情:
A - B -C - etc - Z
AA - AB - AC -AZ
BA - BB -BC - etc -BZ
CA - CB - CC - ETC -CZ
THEN the same until Z
ZA - ZB ZC -etc ZZ
AAA -AAB - AAAC
我想你能明白。 我真的不知道从哪里开始,所以任何帮助将不胜感激
解决方法
让我们看一下这个问题的简化版本:只使用字母 A、B 和 C,不是整个字母表。
letters = ['A','B','C'];
对于第一个“级别”,我们甚至不需要循环。 使用“join”方法,我们可以将数组变成字符串:
console.log( letters.join(" - ") );
对于第二级,我们需要一个循环来设置 字母,然后加入第二个字母。
for(first_letter of letters) {
string = letters.map(second_letter => first_letter + second_letter ).join(" - ")
console.log(string);
}
对于更高的层次,我首先想到了递归,但我们可以 建立在最后一个级别的结果上。从包含的数组中获取 从第 i 层到第 i+1 层的楼梯,我们通过在整个楼梯的前面添加 A,然后添加 B,依此类推来构建新数组...
let output = document.querySelector('main');
let letters = ['A','C'];
let staircase = letters.slice(); // clone the array
console.log(`Staircase level 1`);
console.log( staircase.join(" - "));
for (let level = 2; level < 5; level++) {
let new_staircase = [];
for (let firstletter of letters) {
new_staircase.push(...staircase.map(string => firstletter + string));
}
staircase = new_staircase;
console.log(`Staircase level ${level}`);
console.log( staircase.join(" - "));
}