Jag tror det skulle hjälpa dig att åtminstone dela upp problemet i de helt oberoende och orelaterade delproblemen interaktion med användaren och generation av permutationer.
I praktiken skulle jag föreslå att du satsar på att skriva en funktion permutations
som tar en sträng (eller en lista av tecken, men tecken finns inte riktigt i JS) som argument och returnerar en lista eller ett Set
som innehåller alla permutationer av de tecken som ingår i strängen. Då kan du jobba på att få själva permuterandet att funka utan att ens behöva tänka på att interagera med användaren. Exempel på kodskelett:
function permutations(characters) {
// …
}
console.log(permutations("abc"));
Om en liten smula TypeScript-syntax tillåts och du väljer att returnera en lista istället för ett Set
skulle jag säga att permutations
borde ha typen (characters: string) => Array<string>
och att följande ska gälla:
permutations("")
= []
permutations("a")
= ["a"]
permutations("ab")
= ["ab", "ba"]
(eller i annan ordning)
permutations("ba")
= ["ba", "ab"]
(eller i annan ordning)
permutations("xyz")
= ["xyz", "xzy", "yxz", "yzx", "zxy", "zyx"]
(eller i annan ordning)
Följande egenskaper kan vara önskvärda, men inte nödvändigtvis:
Allt detta kan du testa huruvida permutations
uppfyller utan någon som helst kod för interaktion med användaren, mer än i värsta fall ett anrop till console.log
.
(Observera att likhetstecknen ovan varken betyder ===
eller ==
, utan en mer abstrakt matematisk likhet som inte finns inbyggd i JavaScript, för både ["ab", "ba"] === ["ab", "ba"]
och ["ab", "ba"] == ["ab", "ba"]
är false
.)