回答編集履歴

16

修正

2017/04/21 10:00

投稿

退会済みユーザー
test CHANGED
@@ -232,13 +232,13 @@
232
232
 
233
233
  3.splitを使って入力された文字列を半角スペースで区切る。
234
234
 
235
-  結果はこのようになる「[1, 2, 3, 4, 5]」(配列になる)
235
+  結果はこのようになる「[1, 2, 3, 4, 5]」(配列になる
236
236
 
237
237
 
238
238
 
239
239
  4.mapは配列の要素を入れ替える時に使う。今回は、3の配列の要素が1つずつeに入る。
240
240
 
241
-  e = e.to_i - 1みたいなことが行われて、3の配列の要素が全て交換される
241
+  e = e.to_i - 1みたいなことが行われて、3の配列の要素が全て交換される
242
242
 
243
243
 
244
244
 

15

補足

2017/04/21 10:00

投稿

退会済みユーザー
test CHANGED
@@ -201,3 +201,57 @@
201
201
  可読性が高いとか処理が速くなるなどのメリットは一切ありません。
202
202
 
203
203
 
204
+
205
+ #補足
206
+
207
+ ```Ruby
208
+
209
+ userselect = gets.chomp.to_s.split("\s").map{|e| e.to_i - 1}
210
+
211
+ ```
212
+
213
+ ```
214
+
215
+ 全体の意味:
216
+
217
+ 選択してもらった結果をuserselectに入れる。
218
+
219
+
220
+
221
+ 細かい説明:
222
+
223
+ 1.利用者は表示された問題集の一覧から「半角英数字」でファイルを選択する。
224
+
225
+  結果はこのようになる「1 2 3 4 5」(数字と数字の間は半角スペース。)
226
+
227
+
228
+
229
+ 2.getsで入力された文字列を取得。末尾の改行文字をchompでとってto_sで文字列化する。
230
+
231
+
232
+
233
+ 3.splitを使って入力された文字列を半角スペースで区切る。
234
+
235
+  結果はこのようになる「[1, 2, 3, 4, 5]」(配列になる)
236
+
237
+
238
+
239
+ 4.mapは配列の要素を入れ替える時に使う。今回は、3の配列の要素が1つずつeに入る。
240
+
241
+  e = e.to_i - 1みたいなことが行われて、3の配列の要素が全て交換される
242
+
243
+
244
+
245
+ 5.最終的にuserselectは
246
+
247
+  userselect = [0, 1, 2, 3, 4]
248
+
249
+ みたいな配列になる。
250
+
251
+ ```
252
+
253
+
254
+
255
+  
256
+
257
+

14

修正

2017/04/21 09:59

投稿

退会済みユーザー
test CHANGED
@@ -197,3 +197,7 @@
197
197
  単語テスト.txtの選択は半角英数字で区切り文字はスペースです。
198
198
 
199
199
 
200
+
201
+ 可読性が高いとか処理が速くなるなどのメリットは一切ありません。
202
+
203
+

13

修正

2017/04/20 09:27

投稿

退会済みユーザー
test CHANGED
@@ -80,7 +80,7 @@
80
80
 
81
81
  huse = []
82
82
 
83
- puts ""
83
+ puts ""
84
84
 
85
85
  array.each do |q, a|
86
86
 
@@ -152,37 +152,27 @@
152
152
 
153
153
  puts "やりたい問題を選択してください。"
154
154
 
155
-
156
-
157
155
  files.each_with_index do |element, i|
158
156
 
159
157
  puts "#{i + 1}:\s#{File.basename(element)}"
160
158
 
161
159
  end
162
160
 
163
- userselect = gets.chomp.to_s.split("\s").map(&:to_i)
161
+ userselect = gets.chomp.to_s.split("\s").map{|e| e.to_i - 1}
164
162
 
165
163
  puts ""
166
164
 
167
- openfile = []
165
+ tmp = []
168
166
 
169
167
  userselect.each do |element|
170
168
 
171
- if element - 1 > files.length || element - 1 < 0
169
+ if element > files.length || element < 0
172
170
 
173
171
  element = 1
174
172
 
175
173
  end
176
174
 
177
- openfile << files[element - 1]
178
-
179
- end
180
-
181
- tmp = []
182
-
183
- openfile.each do |f|
184
-
185
- tmp << File.read(f).chomp.split("\n").each_slice(2).to_a
175
+ tmp << File.read(files[element]).chomp.split("\n").each_slice(2).to_a
186
176
 
187
177
  end
188
178
 

12

修正

2017/04/20 09:08

投稿

退会済みユーザー
test CHANGED
@@ -1,4 +1,4 @@
1
- 単語テスト.txt
1
+ 単語テスト1.txt
2
2
 
3
3
  ```
4
4
 
@@ -44,6 +44,26 @@
44
44
 
45
45
  ```
46
46
 
47
+ 単語テスト2.txt
48
+
49
+ ```
50
+
51
+ ナポリタン
52
+
53
+ パスタ
54
+
55
+ ```
56
+
57
+ 単語テスト3.txt
58
+
59
+ ```
60
+
61
+ らーめん
62
+
63
+ しお
64
+
65
+ ```
66
+
47
67
  ```Ruby
48
68
 
49
69
  #encoding: utf-8

11

修正

2017/04/20 08:57

投稿

退会済みユーザー
test CHANGED
@@ -1,6 +1,50 @@
1
1
  単語テスト.txt
2
2
 
3
3
  ```
4
+
5
+ 休み
6
+
7
+ vacation
8
+
9
+ takeの過去
10
+
11
+ took
12
+
13
+ catchの過去
14
+
15
+ caught
16
+
17
+ seeの過去
18
+
19
+ saw
20
+
21
+ 魚釣りに行く
22
+
23
+ go fishing
24
+
25
+
26
+
27
+ garden
28
+
29
+ 伝統的な
30
+
31
+ traditional
32
+
33
+ 初めて
34
+
35
+ for the first time
36
+
37
+ am,isの過去
38
+
39
+ was
40
+
41
+ areの過去
42
+
43
+ were
44
+
45
+ ```
46
+
47
+ ```Ruby
4
48
 
5
49
  #encoding: utf-8
6
50
 

10

修正

2017/04/20 08:51

投稿

退会済みユーザー
test CHANGED
@@ -1,50 +1,6 @@
1
1
  単語テスト.txt
2
2
 
3
3
  ```
4
-
5
- 休み
6
-
7
- vacation
8
-
9
- takeの過去
10
-
11
- took
12
-
13
- catchの過去
14
-
15
- caught
16
-
17
- seeの過去
18
-
19
- saw
20
-
21
- 魚釣りに行く
22
-
23
- go fishing
24
-
25
-
26
-
27
- garden
28
-
29
- 伝統的な
30
-
31
- traditional
32
-
33
- 初めて
34
-
35
- for the first time
36
-
37
- am,isの過去
38
-
39
- was
40
-
41
- areの過去
42
-
43
- were
44
-
45
- ```
46
-
47
- ```Ruby
48
4
 
49
5
  #encoding: utf-8
50
6
 
@@ -60,9 +16,7 @@
60
16
 
61
17
  huse = []
62
18
 
63
-
64
-
65
- puts ""
19
+ puts ""
66
20
 
67
21
  array.each do |q, a|
68
22
 
@@ -82,7 +36,7 @@
82
36
 
83
37
  print"正解を見ますか?[y/n]:"
84
38
 
85
- userselect = gets.chomp.to_s.tr("YN", "yn")
39
+ userselect = gets.chomp.to_s.tr("Y", "y")
86
40
 
87
41
  if userselect == "y"; puts a; end
88
42
 
@@ -95,8 +49,6 @@
95
49
  puts ""
96
50
 
97
51
  end
98
-
99
-
100
52
 
101
53
  if all_clear == array.length
102
54
 
@@ -124,7 +76,7 @@
124
76
 
125
77
  puts "単語テストをしますか?[y/n]"
126
78
 
127
- userselect = gets.chomp.to_s.tr("YN", "yn")
79
+ userselect = gets.chomp.to_s.tr("N", "n")
128
80
 
129
81
  if userselect == "n"; exit; end
130
82
 
@@ -135,6 +87,8 @@
135
87
  if files.none?; puts "問題集がありません。"; exit; end
136
88
 
137
89
  puts "やりたい問題を選択してください。"
90
+
91
+
138
92
 
139
93
  files.each_with_index do |element, i|
140
94
 

9

修正

2017/04/20 08:48

投稿

退会済みユーザー
test CHANGED
@@ -168,7 +168,7 @@
168
168
 
169
169
  end
170
170
 
171
- return tmp.flatten!(1).shuffle
171
+ return tmp.flatten(1).shuffle
172
172
 
173
173
  end
174
174
 

8

修正

2017/04/20 08:45

投稿

退会済みユーザー
test CHANGED
@@ -186,6 +186,6 @@
186
186
 
187
187
 
188
188
 
189
- 単語テスト.txtの選択は半角数字で区切り文字はスペースです。
189
+ 単語テスト.txtの選択は半角数字で区切り文字はスペースです。
190
190
 
191
191
 

7

修正

2017/04/20 08:42

投稿

退会済みユーザー
test CHANGED
@@ -150,7 +150,7 @@
150
150
 
151
151
  userselect.each do |element|
152
152
 
153
- if element - 1 > files.length || element - 1 < files.length
153
+ if element - 1 > files.length || element - 1 < 0
154
154
 
155
155
  element = 1
156
156
 

6

修正

2017/04/20 08:40

投稿

退会済みユーザー
test CHANGED
@@ -68,7 +68,7 @@
68
68
 
69
69
  print "#{q}:"
70
70
 
71
- answer = gets.chomp.to_s.chomp
71
+ answer = gets.chomp.to_s
72
72
 
73
73
  if answer == a then
74
74
 

5

修正

2017/04/20 08:37

投稿

退会済みユーザー
test CHANGED
@@ -82,9 +82,9 @@
82
82
 
83
83
  print"正解を見ますか?[y/n]:"
84
84
 
85
- userSelect = gets.chomp.to_s.tr("YN", "yn")
85
+ userselect = gets.chomp.to_s.tr("YN", "yn")
86
86
 
87
- if userSelect == "y"; puts a; end
87
+ if userselect == "y"; puts a; end
88
88
 
89
89
  huse << [q, a]
90
90
 
@@ -120,10 +120,72 @@
120
120
 
121
121
 
122
122
 
123
- data = File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a
123
+ def selectFiles()
124
124
 
125
+ puts "単語テストをしますか?[y/n]"
126
+
127
+ userselect = gets.chomp.to_s.tr("YN", "yn")
128
+
129
+ if userselect == "n"; exit; end
130
+
131
+ puts ""
132
+
133
+ files = Dir.glob("問題集/*.txt")
134
+
135
+ if files.none?; puts "問題集がありません。"; exit; end
136
+
137
+ puts "やりたい問題を選択してください。"
138
+
139
+ files.each_with_index do |element, i|
140
+
141
+ puts "#{i + 1}:\s#{File.basename(element)}"
142
+
143
+ end
144
+
145
+ userselect = gets.chomp.to_s.split("\s").map(&:to_i)
146
+
147
+ puts ""
148
+
149
+ openfile = []
150
+
151
+ userselect.each do |element|
152
+
153
+ if element - 1 > files.length || element - 1 < files.length
154
+
155
+ element = 1
156
+
157
+ end
158
+
159
+ openfile << files[element - 1]
160
+
161
+ end
162
+
163
+ tmp = []
164
+
165
+ openfile.each do |f|
166
+
167
+ tmp << File.read(f).chomp.split("\n").each_slice(2).to_a
168
+
169
+ end
170
+
171
+ return tmp.flatten!(1).shuffle
172
+
173
+ end
174
+
175
+
176
+
125
- wordTest(data)
177
+ wordTest(selectFiles())
126
178
 
127
179
  ```
128
180
 
129
181
  単語試験プログラムを作ってみました。
182
+
183
+ 問題集というフォルダの中に単語テスト.txtなどの
184
+
185
+ 問題が書かれたテキストファイルを入れて使います。
186
+
187
+
188
+
189
+ 単語テスト.txtの選択は半角数字で区切り文字はスペースです。
190
+
191
+

4

修正

2017/04/20 08:35

投稿

退会済みユーザー
test CHANGED
@@ -1,41 +1,129 @@
1
+ 単語テスト.txt
2
+
3
+ ```
4
+
5
+ 休み
6
+
7
+ vacation
8
+
9
+ takeの過去
10
+
11
+ took
12
+
13
+ catchの過去
14
+
15
+ caught
16
+
17
+ seeの過去
18
+
19
+ saw
20
+
21
+ 魚釣りに行く
22
+
23
+ go fishing
24
+
25
+
26
+
27
+ garden
28
+
29
+ 伝統的な
30
+
31
+ traditional
32
+
33
+ 初めて
34
+
35
+ for the first time
36
+
37
+ am,isの過去
38
+
39
+ was
40
+
41
+ areの過去
42
+
43
+ were
44
+
45
+ ```
46
+
1
47
  ```Ruby
2
48
 
3
49
  #encoding: utf-8
4
50
 
5
51
 
6
52
 
53
+ def wordTest(array)
54
+
55
+ puts "次の問題に答えよ"
56
+
57
+ loop{
58
+
59
+ all_clear = 0
60
+
61
+ huse = []
62
+
63
+
64
+
65
+ puts ""
66
+
67
+ array.each do |q, a|
68
+
69
+ print "#{q}:"
70
+
71
+ answer = gets.chomp.to_s.chomp
72
+
73
+ if answer == a then
74
+
75
+ puts "〇正解!"
76
+
77
+ all_clear += 1
78
+
79
+ else
80
+
81
+ puts"X不正解!"
82
+
83
+ print"正解を見ますか?[y/n]:"
84
+
85
+ userSelect = gets.chomp.to_s.tr("YN", "yn")
86
+
87
+ if userSelect == "y"; puts a; end
88
+
89
+ huse << [q, a]
90
+
91
+ end
92
+
93
+ puts "-" * 20
94
+
95
+ puts ""
96
+
97
+ end
98
+
99
+
100
+
101
+ if all_clear == array.length
102
+
103
+ puts "全問正解!!"
104
+
105
+ break
106
+
107
+ else
108
+
109
+ puts "#{array.length}問中#{all_clear}問正解しました!!"
110
+
111
+ puts "間違った問題は復習しておこう!!"
112
+
113
+ array = huse
114
+
115
+ end
116
+
117
+ }
118
+
119
+ end
120
+
121
+
122
+
7
- puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).map{|q, a| "#{q}\t#{a}"}.shuffle
123
+ data = File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a
124
+
125
+ wordTest(data)
8
126
 
9
127
  ```
10
128
 
11
- 追記していただいた内容を書いた「単語テスト.txt」を読み込んで
12
-
13
- ランダムに画面に表示させるプログラムです
129
+ 単語試験プログラムを作ってみました
14
-
15
-
16
-
17
- 実行結果例
18
-
19
- ```
20
-
21
- 初めて for the first time
22
-
23
- 魚釣りに行く go fishing
24
-
25
- 伝統的な traditional
26
-
27
- 休み vacation
28
-
29
- catchの過去 caught
30
-
31
- areの過去 were
32
-
33
- 庭 garden
34
-
35
- seeの過去 saw
36
-
37
- takeの過去 took
38
-
39
- am,isの過去 was
40
-
41
- ```

3

修正

2017/04/20 08:14

投稿

退会済みユーザー
test CHANGED
@@ -4,7 +4,7 @@
4
4
 
5
5
 
6
6
 
7
- puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a.map{|q, a| "#{q}\t#{a}"}.shuffle
7
+ puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).map{|q, a| "#{q}\t#{a}"}.shuffle
8
8
 
9
9
  ```
10
10
 

2

修正

2017/04/20 00:40

投稿

退会済みユーザー
test CHANGED
@@ -1,8 +1,4 @@
1
1
  ```Ruby
2
-
3
- #encoding: utf-8
4
-
5
-
6
2
 
7
3
  #encoding: utf-8
8
4
 

1

修正

2017/04/20 00:37

投稿

退会済みユーザー
test CHANGED
@@ -4,13 +4,17 @@
4
4
 
5
5
 
6
6
 
7
+ #encoding: utf-8
8
+
9
+
10
+
7
- puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a.map{|q, a| "#{q}\t#{a}"}
11
+ puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a.map{|q, a| "#{q}\t#{a}"}.shuffle
8
12
 
9
13
  ```
10
14
 
11
15
  追記していただいた内容を書いた「単語テスト.txt」を読み込んで
12
16
 
13
- 画面に表示させるプログラムです。
17
+ ランダムに画面に表示させるプログラムです。
14
18
 
15
19
 
16
20
 
@@ -18,24 +22,24 @@
18
22
 
19
23
  ```
20
24
 
25
+ 初めて for the first time
26
+
27
+ 魚釣りに行く go fishing
28
+
29
+ 伝統的な traditional
30
+
21
31
  休み vacation
32
+
33
+ catchの過去 caught
34
+
35
+ areの過去 were
36
+
37
+ 庭 garden
38
+
39
+ seeの過去 saw
22
40
 
23
41
  takeの過去 took
24
42
 
25
- catchの過去 caught
26
-
27
- seeの過去 saw
28
-
29
- 魚釣りに行く go fishing
30
-
31
- 庭 garden
32
-
33
- 伝統的な traditional
34
-
35
- 初めて for the first time
36
-
37
43
  am,isの過去 was
38
44
 
39
- areの過去 were
40
-
41
45
  ```