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

回答編集履歴

3

 

2023/02/11 12:18

投稿

退会済みユーザー
answer CHANGED
@@ -40,7 +40,7 @@
40
40
  tower['2本目'] = []; // 空っぽ
41
41
  tower['3本目'] = []; // 空っぽ
42
42
  ```
43
- れをたとえば1本目の塔の一番上にある円盤から 3本目の塔に移すときは
43
+ の状態で、たとえば 1本目の塔 から 3本目の塔に円盤を移すときは、
44
44
  tower['1本目'] の配列の、最後尾にある「円盤1」を取り出して、
45
45
  tower['3本目'] の配列の、最後尾に加える、
46
46
  という考え方になります。
@@ -58,9 +58,8 @@
58
58
  ```js
59
59
  tower['3本目'].push(tower['1本目'].pop());
60
60
  ```
61
- となり、この操作が終わった後の状態は
61
+ となり、この1回目の操作が終わった後の状態は
62
62
  ```js
63
- let tower = {};
64
63
  tower['1本目'] = [3,2];
65
64
  tower['2本目'] = []; // 空っぽ
66
65
  tower['3本目'] = [1];

2

 

2023/02/11 12:10

投稿

退会済みユーザー
answer CHANGED
@@ -47,10 +47,10 @@
47
47
  これをプログラムにすると下記になります。
48
48
 
49
49
  ```js
50
- // 1本目の塔の一番上にある円盤=一番最後尾の要素を取り出す
50
+ // 1本目の塔の一番上にある円盤を取り出す(配列の一番最後尾の要素を取り出す
51
51
  const takenDisk = tower['1本目'].pop();
52
52
 
53
- // 取り出した円盤を、3本目の一番上に重ねる。(=配列の最後尾にpush)
53
+ // 取り出した円盤を、3本目の塔の一番上に重ねる。(=配列の最後尾にpush)
54
54
  tower['3本目'].push(takenDisk);
55
55
  ```
56
56
 
@@ -58,4 +58,11 @@
58
58
  ```js
59
59
  tower['3本目'].push(tower['1本目'].pop());
60
60
  ```
61
+ となり、この操作が終わった後の状態は
62
+ ```js
63
+ let tower = {};
64
+ tower['1本目'] = [3,2];
65
+ tower['2本目'] = []; // 空っぽ
66
+ tower['3本目'] = [1];
67
+ ```
61
68
  となります。

1

 

2023/02/11 12:08

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- 汎用的ではないですし冗長な部分も多いですが、質問者さんのコードになるべく沿う形で実装すると
1
+ 汎用的ではないですし冗長な部分も多いですが、質問者さんのコードになるべく沿う形で実装すると
2
2
  下記のようになります。
3
3
  (あくまで一例にすぎず、もっとシンプルで美しい方法もあると思います)
4
4
  ```js
@@ -31,7 +31,7 @@
31
31
  ```
32
32
 
33
33
  #### 考え方
34
- 各塔を tower で表し、円盤の数を保持させておきます。
34
+ 各塔を tower で表し、円盤の保持状態を配列で表します。
35
35
  初期状態は、1本目に、下から大きい順(上から小さい順)に3つの円盤が入っており、
36
36
  2本目、3本目は何も入っていないので、下記のようになります。
37
37
  ```js