サイズ: 1500
コメント:
|
サイズ: 4683
コメント:
|
削除された箇所はこのように表示されます。 | 追加された箇所はこのように表示されます。 |
行 1: | 行 1: |
== 1 == 次の2つの文字列について、最も長い共通部分列を求めてください。<<BR>> 部分列とは、文字列からいくつかの文字をとって並べたものです。取り方は飛び飛びでも構いませんが、順番を入れ替えてはいけません。 |
== るびー系 == === 1(必修) === Studentクラスに次のようなクラスメソッドconvert_studentを定義してください。 |
行 5: | 行 5: |
zFcLkjwGQxT6 BBGQxT6aTsVw |
"(id)/(name)/(dept)/(sex)"の書式で与えられた文字列を引数にとって、与えられた情報をもったStudentクラスのインスタンスを返す }}} 例えば次のように使います。 {{{#!highlight ruby st = Student.convert_student("1011203/Aragaki Ayase/i/f") # stに学籍番号1011203、名前新垣あやせ、学科I、性別女性という情報が入ったStudentクラスのインスタンスが代入される |
行 9: | 行 13: |
== 1-2 == 1で作ったプログラムは次の2つの文字列でも高速に動作しますか?試してみてください。 {{{ RzFcLkjwGQxT6aLHGgCy4bppTesCEsxaLAphTHJ3h6HQAEuQ6msNByhyJdSTgMS4cwLWPtH7DQgcm3s6xjtjUMkBA24mWD2eNc8a Y2crFAVRVS9BJXsWEtQPzxF8UXXdSZ3NuzAme4UutL3fdi87ThirXhuN2P8bsLEx9nbNxpjeEhTeRhPDkmdN9LaEtD3RU2b8NgCF PjTGcZxmfh7L6zfJ6xHyCWEC3fAHT5NYxRwzsRhZTsdh2G682CNT9UAfGhWTxs3FfZmcMTHU84dpKL68PLfgmYN6MUm6JPVCWY3B ghRARGYec4bwtFgnJKmDamzW8CYRgtJ3WJ4xZf3gJdQibkyntEGBCpBuYziMcgJCiZf7MS5FKeb7EfuBETECEUKGh95tz6b6zZHd GMsV7r8jYNdRdtkaBfiQGyM8QGNPY6byhShZZfP6KmETu2HayfBVeisAfcVRcAPJNnCybfSiDVaym6HThAPfQGKZFNDcmNa4kfUn |
=== 2(任意) === ==== a ==== 前回の必修問題を解いた状態で新しくUniversityクラスを作りましょう。 |
行 18: | 行 17: |
YY7QsWxLYwNptrGPUG5mAcJmdw67nRHEV7VwYEguUuhmRjRt4Tixp6mhYGiAyzgxCA8WcRLhWLpUJJHcH9WLNk6MbaatuF4aDzmf KDKUx2nS7G45peKKn2LP6GBARx7ETu2HayfBVeisAfcVRcAPJNnYEeeNfXjJhu8JfbYkVTQQyFXkVFKgk8mti9a9fQmpSSY7KXwB x9NYCte7cQj5TYfiHraK3tGnk5CeAit7TB3JpVyZ3sQu9AbidYkJCjVb7HTpw5CkyTTRs9bd4jRYdVETkZjW5MDe6N99QtsiLptk iWAbT6bEYJfBd3GPdGTMErMHQ3Ty9t7Z92NSMaShaDFPFxVK7mEGzy8dWgZw33JTZN7yDGAWd4DUzPTN9mRhSTbjUTiP9sAi9fyy fr9xrigCBHx56w7eU5unyKgMmEVBukctXhGMSinSwy44yMrafF44BDiLNpfgFtWpd5FMQzMUCDMNiyhwNFjJbu3YF4eksyGCVJCf |
==== b ==== Universityクラスが大学名を表すnameインスタンス変数と所属する学生を表わすstudentsインスタンス変数をもつようにしてください。<<BR>> studentsインスタンス変数はStudentクラスのインスタンスの配列をもつことにします。 === c === Universityクラスのインスタンスメソッドとして全ての学生の情報を出力するメソッドprint_all_infoを定義してください。 === 3(任意) === putsメソッドと文字列のlengthメソッドを比較します。 {{{#!highlight ruby puts "love live!" "love live!".length |
行 24: | 行 30: |
見て分かる通り、putsメソッドには'''〜.'''というものがついていません。 * a) なぜ'''〜.'''がなくても良いのか説明してください。 * b) 普通は書きませんが、putsメソッドに対して'''〜.'''をつけることができます。〜に入るものを答えてください。 === 4(任意) === クラスAとクラスBがあります。クラスAはクラスBの親クラスであるとします。クラスAとクラスBはそれぞれ次のようなメソッドを持っています。 {{{#!highlight ruby class A def abc "abc" end end class B def abc "abc!!" end def abc2 "abc2!!" end end }}} この状態で次のようなプログラムを書きます。 {{{#!highlight ruby hoge = A.new fuga = B.new puts hoge.abc puts fuga.def puts fuga.abc }}} * a) どのような出力が得られますか。 * b) なぜそうなりますか。 == あるごりずむ系 == 以下の問題はRuby以外の言語で解いても良い。 === 1(選択必修) === 芽兎(めう)めう氏が経営する兎月堂では今、お客様感謝セールとして袋に好きなだけ商品を詰めてそれを1,000円均一で買うことができるセールを行なっている。<<BR>> ただし条件があり袋には2kgまでしか商品を入れられない。<<BR>> また同じ商品を2つ以上購入することはできない<<BR>> 今、和泉一舞(いぶき)氏はこのセールで出来るだけお得に商品を買いたいと思っている。<<BR>> 兎月堂の商品は次のとおりである。 ||商品||値段||重さ|| ||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 となる組み合わせの数を出力するプログラムを作成してください。<<BR>> n 個の数はおのおの 0 から 9 までとし、1つの組み合わせに同じ数字は使えません。 入力はnとsが1つのスペースで区切られて与えられるものとします。複数の入力に対応する必要はありません(nとsは1回だけ与えられ、1回だけ答えを出力すれば良いということです)。 === 3(任意) === 0 から 100 の数字から異なる n 個の数を取り出して合計が s となる組み合わせの数を出力するプログラムを作成してください。<<BR>> n 個の数はおのおの 0 から 100 までとし、1つの組み合わせに同じ数字は使えません。 入力はnとsが1つのスペースで区切られて与えられるものとします。複数の入力に対応する必要はありません(nとsは1回だけ与えられ、1回だけ答えを出力すれば良いということです)。 なおこの問題に関しては私の環境(Core i5 1.8GHz/Memory 8GB)で2秒以内に終了することを正解の条件とします。 |
るびー系
1(必修)
Studentクラスに次のようなクラスメソッドconvert_studentを定義してください。
"(id)/(name)/(dept)/(sex)"の書式で与えられた文字列を引数にとって、与えられた情報をもったStudentクラスのインスタンスを返す
例えば次のように使います。
2(任意)
a
前回の必修問題を解いた状態で新しくUniversityクラスを作りましょう。
b
Universityクラスが大学名を表すnameインスタンス変数と所属する学生を表わすstudentsインスタンス変数をもつようにしてください。
studentsインスタンス変数はStudentクラスのインスタンスの配列をもつことにします。
c
Universityクラスのインスタンスメソッドとして全ての学生の情報を出力するメソッドprint_all_infoを定義してください。
3(任意)
putsメソッドと文字列のlengthメソッドを比較します。
見て分かる通り、putsメソッドには〜.というものがついていません。
a) なぜ〜.がなくても良いのか説明してください。
b) 普通は書きませんが、putsメソッドに対して〜.をつけることができます。〜に入るものを答えてください。
4(任意)
クラスAとクラスBがあります。クラスAはクラスBの親クラスであるとします。クラスAとクラスBはそれぞれ次のようなメソッドを持っています。
この状態で次のようなプログラムを書きます。
- a) どのような出力が得られますか。
- b) なぜそうなりますか。
あるごりずむ系
以下の問題はRuby以外の言語で解いても良い。
1(選択必修)
芽兎(めう)めう氏が経営する兎月堂では今、お客様感謝セールとして袋に好きなだけ商品を詰めてそれを1,000円均一で買うことができるセールを行なっている。
ただし条件があり袋には2kgまでしか商品を入れられない。
また同じ商品を2つ以上購入することはできない
今、和泉一舞(いぶき)氏はこのセールで出来るだけお得に商品を買いたいと思っている。
兎月堂の商品は次のとおりである。
商品 |
値段 |
重さ |
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回だけ答えを出力すれば良いということです)。
なおこの問題に関しては私の環境(Core i5 1.8GHz/Memory 8GB)で2秒以内に終了することを正解の条件とします。