質問編集履歴

2

誤字の修正

2018/05/03 02:43

投稿

SkipEveryLunch
SkipEveryLunch

スコア16

test CHANGED
File without changes
test CHANGED
@@ -41,8 +41,6 @@
41
41
  ```
42
42
 
43
43
  このメソッドに関する理解ですが、以下のようなもので正しいでしょうか?
44
-
45
- (Google検索で
46
44
 
47
45
  お手数ですが誤りがないか教えていただければ幸いです。
48
46
 

1

質問の背景を詳しく記入

2018/05/03 02:43

投稿

SkipEveryLunch
SkipEveryLunch

スコア16

test CHANGED
File without changes
test CHANGED
@@ -1,8 +1,12 @@
1
1
  Javaの初学者です。
2
2
 
3
- 現在、Paizaでハノイの塔のアルゴリズムを学んでいるのですが、
3
+ 現在、Paizaの講座でハノイの塔のアルゴリズムを学んでいるのですが、
4
4
 
5
- 良くわからな部分があります。
5
+ 円盤を移動させるメソッドにつての説明を目的とした動画で、
6
+
7
+ データ構造を初期化するメソッドの説明がほとんどなかったため、
8
+
9
+ 以下のinitializeメソッドにおいて、何が行われているのかよくわかりません。
6
10
 
7
11
 
8
12
 
@@ -36,7 +40,9 @@
36
40
 
37
41
  ```
38
42
 
39
- この部分に関する理解ですが、以下のようなもので正しいでしょうか?
43
+ このメソッドに関する理解ですが、以下のようなもので正しいでしょうか?
44
+
45
+ (Google検索で
40
46
 
41
47
  お手数ですが誤りがないか教えていただければ幸いです。
42
48
 
@@ -63,3 +69,127 @@
63
69
  ④11行目において、③において追加したLinkedListのうち
64
70
 
65
71
  0番に、n~1までの数をデクリメントで追加していっている
72
+
73
+
74
+
75
+
76
+
77
+ ※「LinkedListを使用している意味がないソース」というご指摘がありました。
78
+
79
+ ありがとうございます。
80
+
81
+ 講座を作成された方の意図はむろん私にも分からないのですが、
82
+
83
+ ひょっとしたら初学者向けの講座なので、あえて上級者の方から見ると
84
+
85
+ 非効率なコードを使用しているのかもしれません。
86
+
87
+
88
+
89
+ コード全文を以下に掲載させていただきます。
90
+
91
+
92
+
93
+ ```java
94
+
95
+ import java.util.*;
96
+
97
+
98
+
99
+ class Main {
100
+
101
+ /*
102
+
103
+ piles : 3本の杭をListに格納
104
+
105
+ 名前なし : 杭は、LinkedList。円盤を格納
106
+
107
+ 名前なし : 円盤は、円盤の大きさを整数で表す。 ex. 4 3 2 1
108
+
109
+ */
110
+
111
+
112
+
113
+ static List<LinkedList<Integer>> piles;
114
+
115
+
116
+
117
+ static void initialize(int n) {
118
+
119
+ piles = new LinkedList<>();
120
+
121
+
122
+
123
+ // 3本の杭を作る
124
+
125
+ for (int i=0; i<3; i++)
126
+
127
+ piles.add(new LinkedList<>());
128
+
129
+
130
+
131
+ // 0番の杭に、n枚の円盤を追加
132
+
133
+ for (int i=n; i>=1; i--)
134
+
135
+ piles.get(0).add(i);
136
+
137
+ }
138
+
139
+
140
+
141
+ static void printPiles() {
142
+
143
+ System.out.println("--");
144
+
145
+
146
+
147
+ for (int i=0; i<3; i++) {
148
+
149
+ System.out.print(i + ":");
150
+
151
+ for (int disk : piles.get(i))
152
+
153
+ System.out.print(" " + disk);
154
+
155
+
156
+
157
+ System.out.println();
158
+
159
+ }
160
+
161
+ }
162
+
163
+
164
+
165
+ static void moveOne(int from, int to) {
166
+
167
+ int disk = piles.get(from).removeLast();
168
+
169
+ piles.get(to).add(disk);
170
+
171
+ }
172
+
173
+
174
+
175
+ public static void main(String args[] ) {
176
+
177
+ int n = 3;
178
+
179
+ System.out.println(n);
180
+
181
+
182
+
183
+ initialize(n);
184
+
185
+ printPiles();
186
+
187
+ moveOne(0, 2);
188
+
189
+ printPiles();
190
+
191
+ }
192
+
193
+ }
194
+
195
+ ```