ログイン
編集不可のページディスカッション情報添付ファイル
"alstamber/2013FreshmanRubySeminar5Homework"の差分

MMA
22と23のリビジョン間の差分
2013-06-07 16:48:28時点のリビジョン22
サイズ: 3892
編集者: alstamber
コメント:
2013-06-09 08:29:29時点のリビジョン23
サイズ: 4502
編集者: alstamber
コメント:
削除された箇所はこのように表示されます。 追加された箇所はこのように表示されます。
行 2: 行 2:
== 1(必修) == === 1(必修) ===
行 13: 行 13:
== 2(任意) ==
=== a ===
=== 2(任意) ===
==== a ====
行 17: 行 17:
=== b === ==== b ====
行 24: 行 24:
== 3(任意) == === 3(任意) ===
行 37: 行 37:
== 4(任意) == === 4(任意) ===
行 71: 行 71:
=== 1(必修) === === 1(選択必修) ===
行 89: 行 89:
=== 2-1(任意) ===
次の2つの文字列について、最も長い共通部分列を求めてください。<<BR>>
部分列とは、文字列からいくつかの文字をとって並べたものです。取り方は飛び飛びでも構いませんが、順番を入れ替えてはいけません。
{{{
zFcLkjwGQxT6
BBGQxT6aTsVw
}}}
=== 2(選択必修) ===
0 から 9 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力するプログラムを作成してください。<<BR>>
n 個の数はおのおの 0 から 9 までとし、1つの組み合わせに同じ数字は使えません。
行 97: 行 93:
=== 2-2(任意) ===
2-1で作ったプログラムは次の2つの文字列でも動作しますか?試してみてください。
{{{
Y2crFAVRVS9BJXsWEtQPzxF8UXXdSZ3NuzAme4UutL3fdi87ThirXhuN2P8bsLEx9nb
入力はnとsが1つのスペースで区切られて与えられるものとします。複数の入力に対応する必要はありません(nとsは1回だけ与えられ、1回だけ答えを出力すれば良いということです)。
行 102: 行 95:
fr9xrigCBHx56w7eU5unyKgMmEVBukctXhGMSinSwy44yMrafF44BDiLNpfgFtWpd5F
}}}
=== 3(任意) ===
0 から 100 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力するプログラムを作成してください。<<BR>>
n 個の数はおのおの 0 から 100 までとし、1つの組み合わせに同じ数字は使えません。

入力はnとsが1つのスペースで区切られて与えられるものとします。複数の入力に対応する必要はありません(nとsは1回だけ与えられ、1回だけ答えを出力すれば良いということです)。

なおこの問題に関しては2秒以内に終了することを正解の条件とします。

るびー系

1(必修)

Studentクラスに次のようなクラスメソッドconvert_studentを定義してください。

"(id)/(name)/(dept)/(sex)"の書式で与えられた文字列を引数にとって、与えられた情報をもったStudentクラスのインスタンスを返す

例えば次のように使います。

   1 st = Student.convert_student("1011203/Aragaki Ayase/i/f")
   2 # stに学籍番号1011203、名前新垣あやせ、学科I、性別女性という情報が入ったStudentクラスのインスタンスが代入される

2(任意)

a

前回の必修問題を解いた状態で新しくUniversityクラスを作りましょう。

b

Universityクラスが大学名を表すnameインスタンス変数と所属する学生を表わすstudentsインスタンス変数をもつようにしてください。
studentsインスタンス変数はStudentクラスのインスタンスの配列をもつことにします。

c

Universityクラスのインスタンスメソッドとして全ての学生の情報を出力するメソッドprint_all_infoを定義してください。

3(任意)

putsメソッドと文字列のlengthメソッドを比較します。

   1 puts "love live!"
   2 "love live!".length

見て分かる通り、putsメソッドには〜.というものがついていません。

  • a) なぜ〜.がなくても良いのか説明してください。

  • b) 普通は書きませんが、putsメソッドに対して〜.をつけることができます。〜に入るものを答えてください。

4(任意)

クラスAとクラスBがあります。クラスAはクラスBの親クラスであるとします。クラスAとクラスBはそれぞれ次のようなメソッドを持っています。

   1 class A
   2     def abc
   3         "abc"
   4     end
   5 end
   6 
   7 class B
   8     def abc
   9         "abc!!"
  10     end
  11 
  12     def def
  13         "def!!"
  14     end
  15 end

この状態で次のようなプログラムを書きます。

   1 hoge = A.new
   2 fuga = B.new
   3 
   4 puts hoge.abc
   5 puts fuga.def
   6 puts fuga.abc
  • a) どのような出力が得られますか。
  • b) なぜそうなりますか。

あるごりずむ系

1(選択必修)

芽兎(めう)めう氏が経営する兎月堂では今、お客様感謝セールとして袋に好きなだけ商品を詰めてそれを1,000円均一で買うことができるセールを行なっている。
ただし条件があり袋には2kgまでしか商品を入れられない。
今、和泉一舞(いぶき)氏はこのセールで出来るだけお得に商品を買いたいと思っている。
兎月堂の商品は次のとおりである。

商品

値段

重さ

A

700円

1kg

B

200円

0.4kg

C

900円

0.5kg

D

400円

0.1kg

E

900円

0.7kg

F

700円

0.3kg

G

400円

0.6kg

H

500円

0.3kg

条件を破らずに、和泉一舞氏ができるだけお得に商品を持ち帰るにはどのような組み合わせで袋に詰めれば良いだろうか。

2(選択必修)

0 から 9 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力するプログラムを作成してください。
n 個の数はおのおの 0 から 9 までとし、1つの組み合わせに同じ数字は使えません。

入力はnとsが1つのスペースで区切られて与えられるものとします。複数の入力に対応する必要はありません(nとsは1回だけ与えられ、1回だけ答えを出力すれば良いということです)。

3(任意)

0 から 100 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力するプログラムを作成してください。
n 個の数はおのおの 0 から 100 までとし、1つの組み合わせに同じ数字は使えません。

入力はnとsが1つのスペースで区切られて与えられるものとします。複数の入力に対応する必要はありません(nとsは1回だけ与えられ、1回だけ答えを出力すれば良いということです)。

なおこの問題に関しては2秒以内に終了することを正解の条件とします。

alstamber/2013FreshmanRubySeminar5Homework (最終更新日時 2013-07-06 08:52:05 更新者 alstamber)