質問するログイン新規登録

回答編集履歴

1

関数名を改善

2023/02/11 12:11

投稿

cx20
cx20

スコア4700

answer CHANGED
@@ -6,6 +6,7 @@
6
6
 
7
7
  コンソールは基本文字しか扱えないのでグラフィカルな表現には向いていません。
8
8
  テキスト表現でよければ以下のような出力は可能です。絵文字を使用しています。
9
+ ※ このコードは円盤3枚までしか対応していません。あしからず。。
9
10
 
10
11
  ```javascript
11
12
  function hanoi(n, from, to, using, result) {
@@ -15,33 +16,33 @@
15
16
  hanoi(n - 1, from, using, to, result);
16
17
  result[to].push(result[from].pop());
17
18
  console.log(`円盤 ${n} を ${towers[from]} から ${towers[to]} に移動`);
18
- tower(result);
19
+ showTower(result);
19
20
  hanoi(n - 1, using, to, from, result);
20
21
  }
21
22
 
22
- function tower(result) {
23
+ function showTower(result) {
23
- console.log(`1本目: ${getDisks(result.A)}`);
24
+ console.log(`1本目: ${makeTower(result.A)}`);
24
- console.log(`2本目: ${getDisks(result.B)}`);
25
+ console.log(`2本目: ${makeTower(result.B)}`);
25
- console.log(`3本目: ${getDisks(result.C)}`);
26
+ console.log(`3本目: ${makeTower(result.C)}`);
26
27
  console.log("");
27
28
  }
28
29
 
29
- function getDisks(diskArray) {
30
+ function makeTower(diskArray) {
30
- let result = "";
31
+ let towerString = "";
31
32
  for (let i = 0; i < 3; i++) {
32
33
  if (i < diskArray.length) {
33
- result += disks[diskArray[i]];
34
+ towerString += disks[diskArray[i]];
34
35
  } else {
35
- result += "━━";
36
+ towerString += "━━";
36
37
  }
37
38
  }
38
- return result;
39
+ return towerString;
39
40
  }
40
41
 
41
42
  let towers = { A: "1本目", B: "2本目", C: "3本目" };
42
43
  let disks = { 1: "▪", 2: "◾", 3: "⬛" };
43
44
  let result = { A: [3, 2, 1], B: [], C: [] };
44
- tower(result);
45
+ showTower(result);
45
46
  hanoi(3, "A", "C", "B", result);
46
47
  ```
47
48