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

回答編集履歴

16

修正

2017/04/21 10:00

投稿

退会済みユーザー
answer CHANGED
@@ -115,10 +115,10 @@
115
115
  2.getsで入力された文字列を取得。末尾の改行文字をchompでとってto_sで文字列化する。
116
116
 
117
117
  3.splitを使って入力された文字列を半角スペースで区切る。
118
-  結果はこのようになる「[1, 2, 3, 4, 5]」(配列になる)
118
+  結果はこのようになる「[1, 2, 3, 4, 5]」(配列になる
119
119
 
120
120
  4.mapは配列の要素を入れ替える時に使う。今回は、3の配列の要素が1つずつeに入る。
121
-  e = e.to_i - 1みたいなことが行われて、3の配列の要素が全て交換される
121
+  e = e.to_i - 1みたいなことが行われて、3の配列の要素が全て交換される
122
122
 
123
123
  5.最終的にuserselectは
124
124
   userselect = [0, 1, 2, 3, 4]

15

補足

2017/04/21 10:00

投稿

退会済みユーザー
answer CHANGED
@@ -99,3 +99,30 @@
99
99
  単語テスト.txtの選択は半角英数字で区切り文字はスペースです。
100
100
 
101
101
  可読性が高いとか処理が速くなるなどのメリットは一切ありません。
102
+
103
+ #補足
104
+ ```Ruby
105
+ userselect = gets.chomp.to_s.split("\s").map{|e| e.to_i - 1}
106
+ ```
107
+ ```
108
+ 全体の意味:
109
+ 選択してもらった結果をuserselectに入れる。
110
+
111
+ 細かい説明:
112
+ 1.利用者は表示された問題集の一覧から「半角英数字」でファイルを選択する。
113
+  結果はこのようになる「1 2 3 4 5」(数字と数字の間は半角スペース。)
114
+
115
+ 2.getsで入力された文字列を取得。末尾の改行文字をchompでとってto_sで文字列化する。
116
+
117
+ 3.splitを使って入力された文字列を半角スペースで区切る。
118
+  結果はこのようになる「[1, 2, 3, 4, 5]」(配列になる)
119
+
120
+ 4.mapは配列の要素を入れ替える時に使う。今回は、3の配列の要素が1つずつeに入る。
121
+  e = e.to_i - 1みたいなことが行われて、3の配列の要素が全て交換される
122
+
123
+ 5.最終的にuserselectは
124
+  userselect = [0, 1, 2, 3, 4]
125
+ みたいな配列になる。
126
+ ```
127
+
128
+  

14

修正

2017/04/21 09:59

投稿

退会済みユーザー
answer CHANGED
@@ -97,3 +97,5 @@
97
97
  問題が書かれたテキストファイルを入れて使います。
98
98
 
99
99
  単語テスト.txtの選択は半角英数字で区切り文字はスペースです。
100
+
101
+ 可読性が高いとか処理が速くなるなどのメリットは一切ありません。

13

修正

2017/04/20 09:27

投稿

退会済みユーザー
answer CHANGED
@@ -39,7 +39,7 @@
39
39
  loop{
40
40
  all_clear = 0
41
41
  huse = []
42
- puts ""
42
+ puts ""
43
43
  array.each do |q, a|
44
44
  print "#{q}:"
45
45
  answer = gets.chomp.to_s
@@ -75,23 +75,18 @@
75
75
  files = Dir.glob("問題集/*.txt")
76
76
  if files.none?; puts "問題集がありません。"; exit; end
77
77
  puts "やりたい問題を選択してください。"
78
-
79
78
  files.each_with_index do |element, i|
80
79
  puts "#{i + 1}:\s#{File.basename(element)}"
81
80
  end
82
- userselect = gets.chomp.to_s.split("\s").map(&:to_i)
81
+ userselect = gets.chomp.to_s.split("\s").map{|e| e.to_i - 1}
83
82
  puts ""
84
- openfile = []
83
+ tmp = []
85
84
  userselect.each do |element|
86
- if element - 1 > files.length || element - 1 < 0
85
+ if element > files.length || element < 0
87
86
  element = 1
88
87
  end
89
- openfile << files[element - 1]
88
+ tmp << File.read(files[element]).chomp.split("\n").each_slice(2).to_a
90
89
  end
91
- tmp = []
92
- openfile.each do |f|
93
- tmp << File.read(f).chomp.split("\n").each_slice(2).to_a
94
- end
95
90
  return tmp.flatten(1).shuffle
96
91
  end
97
92
 

12

修正

2017/04/20 09:08

投稿

退会済みユーザー
answer CHANGED
@@ -1,4 +1,4 @@
1
- 単語テスト.txt
1
+ 単語テスト1.txt
2
2
  ```
3
3
  休み
4
4
  vacation
@@ -21,6 +21,16 @@
21
21
  areの過去
22
22
  were
23
23
  ```
24
+ 単語テスト2.txt
25
+ ```
26
+ ナポリタン
27
+ パスタ
28
+ ```
29
+ 単語テスト3.txt
30
+ ```
31
+ らーめん
32
+ しお
33
+ ```
24
34
  ```Ruby
25
35
  #encoding: utf-8
26
36
 

11

修正

2017/04/20 08:57

投稿

退会済みユーザー
answer CHANGED
@@ -1,5 +1,27 @@
1
1
  単語テスト.txt
2
2
  ```
3
+ 休み
4
+ vacation
5
+ takeの過去
6
+ took
7
+ catchの過去
8
+ caught
9
+ seeの過去
10
+ saw
11
+ 魚釣りに行く
12
+ go fishing
13
+
14
+ garden
15
+ 伝統的な
16
+ traditional
17
+ 初めて
18
+ for the first time
19
+ am,isの過去
20
+ was
21
+ areの過去
22
+ were
23
+ ```
24
+ ```Ruby
3
25
  #encoding: utf-8
4
26
 
5
27
  def wordTest(array)

10

修正

2017/04/20 08:51

投稿

退会済みユーザー
answer CHANGED
@@ -1,27 +1,5 @@
1
1
  単語テスト.txt
2
2
  ```
3
- 休み
4
- vacation
5
- takeの過去
6
- took
7
- catchの過去
8
- caught
9
- seeの過去
10
- saw
11
- 魚釣りに行く
12
- go fishing
13
-
14
- garden
15
- 伝統的な
16
- traditional
17
- 初めて
18
- for the first time
19
- am,isの過去
20
- was
21
- areの過去
22
- were
23
- ```
24
- ```Ruby
25
3
  #encoding: utf-8
26
4
 
27
5
  def wordTest(array)
@@ -29,8 +7,7 @@
29
7
  loop{
30
8
  all_clear = 0
31
9
  huse = []
32
-
33
- puts ""
10
+ puts ""
34
11
  array.each do |q, a|
35
12
  print "#{q}:"
36
13
  answer = gets.chomp.to_s
@@ -40,14 +17,13 @@
40
17
  else
41
18
  puts"X不正解!"
42
19
  print"正解を見ますか?[y/n]:"
43
- userselect = gets.chomp.to_s.tr("YN", "yn")
20
+ userselect = gets.chomp.to_s.tr("Y", "y")
44
21
  if userselect == "y"; puts a; end
45
22
  huse << [q, a]
46
23
  end
47
24
  puts "-" * 20
48
25
  puts ""
49
26
  end
50
-
51
27
  if all_clear == array.length
52
28
  puts "全問正解!!"
53
29
  break
@@ -61,12 +37,13 @@
61
37
 
62
38
  def selectFiles()
63
39
  puts "単語テストをしますか?[y/n]"
64
- userselect = gets.chomp.to_s.tr("YN", "yn")
40
+ userselect = gets.chomp.to_s.tr("N", "n")
65
41
  if userselect == "n"; exit; end
66
42
  puts ""
67
43
  files = Dir.glob("問題集/*.txt")
68
44
  if files.none?; puts "問題集がありません。"; exit; end
69
45
  puts "やりたい問題を選択してください。"
46
+
70
47
  files.each_with_index do |element, i|
71
48
  puts "#{i + 1}:\s#{File.basename(element)}"
72
49
  end

9

修正

2017/04/20 08:48

投稿

退会済みユーザー
answer CHANGED
@@ -83,7 +83,7 @@
83
83
  openfile.each do |f|
84
84
  tmp << File.read(f).chomp.split("\n").each_slice(2).to_a
85
85
  end
86
- return tmp.flatten!(1).shuffle
86
+ return tmp.flatten(1).shuffle
87
87
  end
88
88
 
89
89
  wordTest(selectFiles())

8

修正

2017/04/20 08:45

投稿

退会済みユーザー
answer CHANGED
@@ -92,4 +92,4 @@
92
92
  問題集というフォルダの中に単語テスト.txtなどの
93
93
  問題が書かれたテキストファイルを入れて使います。
94
94
 
95
- 単語テスト.txtの選択は半角数字で区切り文字はスペースです。
95
+ 単語テスト.txtの選択は半角数字で区切り文字はスペースです。

7

修正

2017/04/20 08:42

投稿

退会済みユーザー
answer CHANGED
@@ -74,7 +74,7 @@
74
74
  puts ""
75
75
  openfile = []
76
76
  userselect.each do |element|
77
- if element - 1 > files.length || element - 1 < files.length
77
+ if element - 1 > files.length || element - 1 < 0
78
78
  element = 1
79
79
  end
80
80
  openfile << files[element - 1]

6

修正

2017/04/20 08:40

投稿

退会済みユーザー
answer CHANGED
@@ -33,7 +33,7 @@
33
33
  puts ""
34
34
  array.each do |q, a|
35
35
  print "#{q}:"
36
- answer = gets.chomp.to_s.chomp
36
+ answer = gets.chomp.to_s
37
37
  if answer == a then
38
38
  puts "〇正解!"
39
39
  all_clear += 1

5

修正

2017/04/20 08:37

投稿

退会済みユーザー
answer CHANGED
@@ -40,8 +40,8 @@
40
40
  else
41
41
  puts"X不正解!"
42
42
  print"正解を見ますか?[y/n]:"
43
- userSelect = gets.chomp.to_s.tr("YN", "yn")
43
+ userselect = gets.chomp.to_s.tr("YN", "yn")
44
- if userSelect == "y"; puts a; end
44
+ if userselect == "y"; puts a; end
45
45
  huse << [q, a]
46
46
  end
47
47
  puts "-" * 20
@@ -59,7 +59,37 @@
59
59
  }
60
60
  end
61
61
 
62
+ def selectFiles()
63
+ puts "単語テストをしますか?[y/n]"
64
+ userselect = gets.chomp.to_s.tr("YN", "yn")
65
+ if userselect == "n"; exit; end
66
+ puts ""
67
+ files = Dir.glob("問題集/*.txt")
68
+ if files.none?; puts "問題集がありません。"; exit; end
69
+ puts "やりたい問題を選択してください。"
70
+ files.each_with_index do |element, i|
71
+ puts "#{i + 1}:\s#{File.basename(element)}"
72
+ end
73
+ userselect = gets.chomp.to_s.split("\s").map(&:to_i)
74
+ puts ""
75
+ openfile = []
76
+ userselect.each do |element|
77
+ if element - 1 > files.length || element - 1 < files.length
78
+ element = 1
79
+ end
80
+ openfile << files[element - 1]
81
+ end
82
+ tmp = []
83
+ openfile.each do |f|
62
- data = File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a
84
+ tmp << File.read(f).chomp.split("\n").each_slice(2).to_a
85
+ end
86
+ return tmp.flatten!(1).shuffle
87
+ end
88
+
63
- wordTest(data)
89
+ wordTest(selectFiles())
64
90
  ```
65
- 単語試験プログラムを作ってみました。
91
+ 単語試験プログラムを作ってみました。
92
+ 問題集というフォルダの中に単語テスト.txtなどの
93
+ 問題が書かれたテキストファイルを入れて使います。
94
+
95
+ 単語テスト.txtの選択は半角数字で区切り文字はスペースです。

4

修正

2017/04/20 08:35

投稿

退会済みユーザー
answer CHANGED
@@ -1,21 +1,65 @@
1
+ 単語テスト.txt
2
+ ```
3
+ 休み
4
+ vacation
5
+ takeの過去
6
+ took
7
+ catchの過去
8
+ caught
9
+ seeの過去
10
+ saw
11
+ 魚釣りに行く
12
+ go fishing
13
+
14
+ garden
15
+ 伝統的な
16
+ traditional
17
+ 初めて
18
+ for the first time
19
+ am,isの過去
20
+ was
21
+ areの過去
22
+ were
23
+ ```
1
24
  ```Ruby
2
25
  #encoding: utf-8
3
26
 
4
- puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).map{|q, a| "#{q}\t#{a}"}.shuffle
5
- ```
6
- 追記していただいた内容を書いた「単語テスト.txt」を読み込んで
7
- ランダムに画面に表示させるプログラムです。
27
+ def wordTest(array)
28
+ puts "次の問題に答えよ"
29
+ loop{
30
+ all_clear = 0
31
+ huse = []
8
32
 
33
+ puts ""
34
+ array.each do |q, a|
35
+ print "#{q}:"
36
+ answer = gets.chomp.to_s.chomp
37
+ if answer == a then
38
+ puts "〇正解!"
39
+ all_clear += 1
40
+ else
41
+ puts"X不正解!"
42
+ print"正解を見ますか?[y/n]:"
43
+ userSelect = gets.chomp.to_s.tr("YN", "yn")
44
+ if userSelect == "y"; puts a; end
45
+ huse << [q, a]
46
+ end
47
+ puts "-" * 20
48
+ puts ""
49
+ end
50
+
51
+ if all_clear == array.length
52
+ puts "全問正解!!"
9
- 実行結果例
53
+ break
54
+ else
55
+ puts "#{array.length}問中#{all_clear}問正解しました!!"
56
+ puts "間違った問題は復習しておこう!!"
57
+ array = huse
58
+ end
59
+ }
60
+ end
61
+
62
+ data = File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a
63
+ wordTest(data)
10
64
  ```
11
- 初めて for the first time
12
- 魚釣りに行く go fishing
13
- 伝統的な traditional
14
- 休み vacation
15
- catchの過去 caught
65
+ 単語試験プログラムを作ってみました。
16
- areの過去 were
17
- 庭 garden
18
- seeの過去 saw
19
- takeの過去 took
20
- am,isの過去 was
21
- ```

3

修正

2017/04/20 08:14

投稿

退会済みユーザー
answer CHANGED
@@ -1,7 +1,7 @@
1
1
  ```Ruby
2
2
  #encoding: utf-8
3
3
 
4
- puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a.map{|q, a| "#{q}\t#{a}"}.shuffle
4
+ puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).map{|q, a| "#{q}\t#{a}"}.shuffle
5
5
  ```
6
6
  追記していただいた内容を書いた「単語テスト.txt」を読み込んで
7
7
  ランダムに画面に表示させるプログラムです。

2

修正

2017/04/20 00:40

投稿

退会済みユーザー
answer CHANGED
@@ -1,8 +1,6 @@
1
1
  ```Ruby
2
2
  #encoding: utf-8
3
3
 
4
- #encoding: utf-8
5
-
6
4
  puts File.read("単語テスト.txt").chomp.split("\n").each_slice(2).to_a.map{|q, a| "#{q}\t#{a}"}.shuffle
7
5
  ```
8
6
  追記していただいた内容を書いた「単語テスト.txt」を読み込んで

1

修正

2017/04/20 00:37

投稿

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