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

質問編集履歴

5

規約に則り削除

2017/03/05 12:04

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -57,83 +57,4 @@
57
57
  よろしくお願いいたします。
58
58
 
59
59
  #
60
- #
60
+ #
61
-
62
- 例題の追記をします。
63
-
64
- とある学校で受験が行われるそうです。がんばってください。
65
- その学校には1つの学年に文系と理系のクラスがあるそうですが、文系か理系かによって合格の条件が変わります。
66
-
67
- ・1科目は100点満点です
68
- ・共通する条件はどちらのクラスも合計点が350点以上なければなりません。
69
- ー350点の内、理系受験者は理科と数学の合計点が150点以上なければなりません。
70
- ー350点の内、文系受験者は国語と社会の合計点が150点以上なければなりません。
71
- ・一行目に受験した人数が入力されます
72
- ・2行目以降はどちらを受験したかの後に、各教科の点数が半角スペース区切りで入力されます。科目の順番は国語・数学・英語・理科・社会の順番です。
73
- ・whichがscなら理系受験者、soなら文系受験者です。
74
-
75
- 人数
76
- which 国 数 英 理 社
77
- .
78
- .
79
- .
80
- 人数分の入力
81
-
82
- ```Ruby
83
- n = gets.chomp.to_i #生徒の人数
84
- score = [] #生徒の成績を入れるための配列
85
- #生徒の人数分配列にスペース区切りで配列の最後に追加していく
86
- n.times do
87
- score << gets.chomp.split()
88
- end
89
-
90
- #scoreを1つずつ展開する。展開直後は多重配列になっているのでさらに展開して普通の状態の配列にする。
91
- #次に配列の中身の値で条件分岐する。最初のアルファベットでどちらを受験したか判断する。
92
- #判断した後は数列にして点数を求めたいので文字列を削除。
93
- #そして数列に
94
- #数列にしたnum2の値を合計してnumberに代入
95
- #numberの合計値と受験したクラスの条件によって合否の判定
96
-
97
- #以上の処理を文系と理系分作成
98
-
99
- score.each_slice(1) do |num|
100
- num.each do |num2|
101
- if num2[0] == "so"
102
- num2.delete("so")
103
- num2 = num2.map(&:to_i)
104
- number = num2.inject{ |sum, n| sum + n }
105
-
106
- if number >= 350 && num2[0] + num2[4] >= 150
107
- puts "文系クラス合格"
108
- else
109
- puts "残念でした"
110
- end
111
- end
112
- if num2[0] == "sc"
113
- num2.delete("sc")
114
- num2 = num2.flatten.map(&:to_i)
115
- number = num2.flatten.inject{ |sum, n| sum + n }
116
-
117
- if number >= 350 && num2[1] + num2[3] >= 150
118
- puts "理系クラス合格"
119
- else
120
- puts "残念でした"
121
- end
122
- end
123
- end
124
- end
125
-
126
- ```
127
-
128
- といった具合でしょうか。
129
- 私が一番改善したい箇所はnum2[0]やnum2[4]などと書いてあるところです。
130
- この場合ですと
131
- kokugo = num2[0]
132
- のようにやるしかないのでしょうか。
133
- ここの値が個数が多い問題で処理を書き直すときなどに理解が追いつかなくなってしまい、とても時間がかかってしまいます。
134
-
135
-
136
- もう一つは、理系と文系に分けて処理していますがこの部分を2in1や問題によっては3in1などでキレイに書けないものかと模索しています。
137
-
138
-
139
- よろしくお願いいたします。

4

参考問題の追記

2017/03/05 12:04

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -54,4 +54,86 @@
54
54
 
55
55
  理解に努めますが、Ruby以外分からないのでその際は言葉で説明して頂けると助かります。
56
56
 
57
+ よろしくお願いいたします。
58
+
59
+ #
60
+ #
61
+
62
+ 例題の追記をします。
63
+
64
+ とある学校で受験が行われるそうです。がんばってください。
65
+ その学校には1つの学年に文系と理系のクラスがあるそうですが、文系か理系かによって合格の条件が変わります。
66
+
67
+ ・1科目は100点満点です
68
+ ・共通する条件はどちらのクラスも合計点が350点以上なければなりません。
69
+ ー350点の内、理系受験者は理科と数学の合計点が150点以上なければなりません。
70
+ ー350点の内、文系受験者は国語と社会の合計点が150点以上なければなりません。
71
+ ・一行目に受験した人数が入力されます
72
+ ・2行目以降はどちらを受験したかの後に、各教科の点数が半角スペース区切りで入力されます。科目の順番は国語・数学・英語・理科・社会の順番です。
73
+ ・whichがscなら理系受験者、soなら文系受験者です。
74
+
75
+ 人数
76
+ which 国 数 英 理 社
77
+ .
78
+ .
79
+ .
80
+ 人数分の入力
81
+
82
+ ```Ruby
83
+ n = gets.chomp.to_i #生徒の人数
84
+ score = [] #生徒の成績を入れるための配列
85
+ #生徒の人数分配列にスペース区切りで配列の最後に追加していく
86
+ n.times do
87
+ score << gets.chomp.split()
88
+ end
89
+
90
+ #scoreを1つずつ展開する。展開直後は多重配列になっているのでさらに展開して普通の状態の配列にする。
91
+ #次に配列の中身の値で条件分岐する。最初のアルファベットでどちらを受験したか判断する。
92
+ #判断した後は数列にして点数を求めたいので文字列を削除。
93
+ #そして数列に
94
+ #数列にしたnum2の値を合計してnumberに代入
95
+ #numberの合計値と受験したクラスの条件によって合否の判定
96
+
97
+ #以上の処理を文系と理系分作成
98
+
99
+ score.each_slice(1) do |num|
100
+ num.each do |num2|
101
+ if num2[0] == "so"
102
+ num2.delete("so")
103
+ num2 = num2.map(&:to_i)
104
+ number = num2.inject{ |sum, n| sum + n }
105
+
106
+ if number >= 350 && num2[0] + num2[4] >= 150
107
+ puts "文系クラス合格"
108
+ else
109
+ puts "残念でした"
110
+ end
111
+ end
112
+ if num2[0] == "sc"
113
+ num2.delete("sc")
114
+ num2 = num2.flatten.map(&:to_i)
115
+ number = num2.flatten.inject{ |sum, n| sum + n }
116
+
117
+ if number >= 350 && num2[1] + num2[3] >= 150
118
+ puts "理系クラス合格"
119
+ else
120
+ puts "残念でした"
121
+ end
122
+ end
123
+ end
124
+ end
125
+
126
+ ```
127
+
128
+ といった具合でしょうか。
129
+ 私が一番改善したい箇所はnum2[0]やnum2[4]などと書いてあるところです。
130
+ この場合ですと
131
+ kokugo = num2[0]
132
+ のようにやるしかないのでしょうか。
133
+ ここの値が個数が多い問題で処理を書き直すときなどに理解が追いつかなくなってしまい、とても時間がかかってしまいます。
134
+
135
+
136
+ もう一つは、理系と文系に分けて処理していますがこの部分を2in1や問題によっては3in1などでキレイに書けないものかと模索しています。
137
+
138
+
57
139
  よろしくお願いいたします。

3

誤解を生まないようなタイトルに編集

2017/03/04 18:05

投稿

退会済みユーザー
title CHANGED
@@ -1,1 +1,1 @@
1
- 競技プログラミングで記述量減らしたい
1
+ 競技プログラミングで可読性高めたい
body CHANGED
File without changes

2

2017/03/04 10:15

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -52,6 +52,6 @@
52
52
 
53
53
  もしかしたらifなどのネストでやるべきかとも思いますが方法がありましたらぜひお願いします。
54
54
 
55
- 理解に努めますが、Ruby以外分からないのでその際は言葉で説明して頂ければ助かります。
55
+ 理解に努めますが、Ruby以外分からないのでその際は言葉で説明して頂けると助かります。
56
56
 
57
57
  よろしくお願いいたします。

1

誤字の修正

2017/03/04 01:34

投稿

退会済みユーザー
title CHANGED
File without changes
body CHANGED
@@ -22,7 +22,7 @@
22
22
  end
23
23
  ```
24
24
  のように行っています。
25
- しかし、これが上記のifの結果を更に使用して、そしてその結果もまた使用する。といった事があります。
25
+ しかし、これが上記のifの結果を使用して、そしてその結果もまた使用する。といった事があります。
26
26
 
27
27
  #そのような場合は
28
28
  ```Ruby
@@ -34,7 +34,7 @@
34
34
  .
35
35
  end
36
36
  ```
37
- や、これさらにnumをeachしたコードを書いています。
37
+ や、ものよってはeachを2重3重したコードを書いています。
38
38
  さらにまたその結果を・・・と合計で4回ほど行う時があり、辟易してしまいます。
39
39
 
40
40
  ###知りたいこと