RUBYの宿題教えてください。
■ このスレッドは過去ログ倉庫に格納されています
0001RUBY
05/01/24 22:17:37その講義で、期末テストとして課題が出たのですが、プログラミング初心者の私には
全然歯が立ちません。締め切りは1/31です。プロも皆さんには簡単な
問題かもしれませんがどうか教えてください。
課題は以下の通りです。
0002RUBY
05/01/24 22:18:29西暦1年1月1日は月曜日である。4年に一度閏年がある。しかし、100の倍数の年は閏年ではない。しかし、400の倍数の年は閏年である。
平年の1月1日が火曜日であったとすると次年の1月1日は水曜日である。
従って、日、月、・・・、土を、0、1、・・・、6と数字で表すと、西暦n年の1月1日の曜日kは、
n+(n-1)/4-(n-1)/100+(n-1)/400
を7で割った余りである。k=n % 7又2月の日数mは、
m=28+n/4*4/n-n/100*100/n+n/400*400/n
と表せる。ここで割り算は全て整数同士の割り算(切り捨て)である。
1.2月以外の日数を与える。
2.作成したいカレンダーの年(n)と月(m)を与える。
3.2月の日数を計算する。
28+n/4*4/n-n/100*100/n+n/400*400/n
4.1月1日の曜日を表す数字(0、1、・・・、6)を計算する。
(n+(n-1)/4-(n-1)/100+(n-1)/400) % 7
5.今対象としている月の第1日目の曜日を、上で求めた1月1日の曜日を表す数値に、
今対象とする月の前の月までの日数を加算し、7で割った余りとして求める。
6.下のようなカレンダーをHTMLの表で出力する。
1989年 4月
日 月 火 水 木 金 土
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30
0003RUBY
05/01/24 22:19:48まず、それぞれの月を番号とし、日数を要素として配列を考えてみましたが
全然解けません。講師は、「配列なんかわざわざ使わなくてもいい」
と言っていたので、解く糸口も失ってしまいました。
どうか、解答のプログラムを教えてください。
0004デフォルトの名無しさん
05/01/24 22:44:38> その講義で、期末テストとして課題が出たのですが、プログラミング初心者の私には
> 全然歯が立ちません。締め切りは1/31です。プロも皆さんには簡単な
うそつけ。歯が立たないのは、おまえの頭が弱いからだろうが。
0005デフォルトの名無しさん
05/01/24 22:45:33ないなら探せ。
講師は>2の文章が理解できるか君を試しているんだ。10時間考えても分からないなら「グレゴリオ歴」を調べよ。
0006デフォルトの名無しさん
05/01/24 22:49:19わかりました。自分でやってみます。ありがとうございました
0007RUBY
05/01/25 00:16:51罵声や無視がたくさんあるところだと思っていました。さっそく>>4のデフォルトの名無しさんに怒られてしまいました。
でも、名無しさんが言うように自分の力でやった方がためになりますよね。
図書やマニュアルを使って自分で考えてみたいと思います。>>5の助言もありがとうございました。
プログラミング分野の人たちは優しいですね。
0008デフォルトの名無しさん
05/01/25 00:19:460009デフォルトの名無しさん
05/01/25 00:21:43> Rubyが宿題になる学校も出てきたのか
宿題には、アカデミズムの世界以外ではまったく見ない言語を使ったりしますが。
0010デフォルトの名無しさん
05/01/25 00:25:12と言うか、期末テストなら自分で考えた方が後々にも役立って良いよ、1/31までは十分長いからね。
0011デフォルトの名無しさん
05/01/25 00:25:450012デフォルトの名無しさん
05/01/25 00:29:44HSPを教える学校があるこんな世の中じゃ
0013デフォルトの名無しさん
05/01/25 00:35:12> Rubyはアカデミズムの世界以外ではまったく見ない言語な訳でつね。
違うだろ。
0014デフォルトの名無しさん
05/01/25 00:36:31こんなに露骨なネタにマジレスって(ry
0015デフォルトの名無しさん
05/01/25 00:39:54> HSPを教える学校があるこんな世の中じゃ
教えるだけまし。
わたしが学生の時には、
「次回からC言語を使うので、来週までにマスターしておいてください」
だった。
0016デフォルトの名無しさん
05/01/25 00:41:17何と言うか、教える気NULLだな。
0017デフォルトの名無しさん
05/01/25 07:49:10うちの大学では1〜2年前期はCで2年後期にRubyだな
0018デフォルトの名無しさん
05/01/25 08:39:000019デフォルトの名無しさん
05/01/25 10:16:130020デフォルトの名無しさん
05/01/25 10:29:180021デフォルトの名無しさん
05/01/25 10:38:35だから>2を読めって。分からないなら質問しろ。丸投げはダメだ。こんなアホな宿題を他人にやらせてたら、ダメ人間になっちゃうゾ!
0022デフォルトの名無しさん
05/01/25 11:07:15と言うか、>>2を与えられてもまだダメだというのは、よほど無能だと
言うことだから、こいつにはプログラミングはさっさとあきらめて、
コンピュータ関係の業界に来ないで欲しいと言いたいな。
0023デフォルトの名無しさん
05/01/25 11:09:25です;
とりあえず配列使って書けたけど
>19さんの言う通りifとかcaseを使うのかな・・・(;´Д`)ウーン
002418
05/01/25 11:10:100025デフォルトの名無しさん
05/01/25 20:29:39attr_reader(:nisuuu)
def initialize
@nisuuu = Hash.new
@nisuuu[1] = 31
@nisuuu[3] = 31
@nisuuu[5] = 31
@nisuuu[7] = 31
@nisuuu[8] = 31
@nisuuu[10] = 31
@nisuuu[12] = 31
@nisuuu[4]= 30
@nisuuu[6]= 30
@nisuuu[9]= 30
@nisuuu[11]= 30
end
end
class Ni
attr_reader(:n, :m)
def initialize
print "年と月を入力しろ\n"
print "年>>>"
@n = gets.chomp.to_i
print "月>>>"
@m = gets.chomp.to_i
end
end
0026デフォルトの名無しさん
05/01/25 20:31:35attr_reader(:ni)
def initialize(n)
@ni = 28 + (n / 4 * 4 / n) - (n / 100 * 100 / n) + (n / 400 * 400 / n)
end
end
class Yon
attr_reader(:ichiyoubi)
def initialize(n)
@ichiyoubi = (n + (n - 1) / 4 - (n - 1) / 100 + (n - 1) / 400) % 7
end
end
class Go
attr_reader(:myoubi)
def initialize(ichi, ichiyoubi, nigatsu, m)
@myoubi = ichiyoubi
for i in 1..(m-1)
nisu = 0
if i == 2
nisu = nigatsu
else
nisu = ichi.nisuuu[i]
end
@myoubi += nisu
end
@myoubi %= 7
end
end
0027デフォルトの名無しさん
05/01/25 20:34:16Rubyマニュアルで文法読め!
>19の助言を読め!
大馬鹿者!
0028デフォルトの名無しさん
05/01/25 21:08:12Rubyマニュアルって何ですか?
0029デフォルトの名無しさん
05/01/25 21:56:55if first < last then
pivot = s[last]
i = first
j = last - 1
while true do
while i < last && s[i] < pivot do
i += 1
end
while j >= first && s[i] >pivot do
j -= 1
end
if i >= j then
break
end
つづきます。
0030デフォルトの名無しさん
05/01/25 21:57:26s[i] = s[j]
s[j] = temp
i += 1
j -= 1
end
temp = s[i]
s[i] = s[last]
s[last] = temp
qsort(s, first, i-1)
qsort(s, i+1, last)
end
end
def quick_sort(s)
qsort(s, 0, s.size-1)
return s
end
s = [4,5,8,7,10,8,9,3,12,0]
p quick_sort(s)
クイックソートのソースなんですけど、何故か上手くならんでくれません…。
0031デフォルトの名無しさん
05/01/25 22:12:440032デフォルトの名無しさん
05/01/25 22:15:43とにかくがんばれ
0033デフォルトの名無しさん
05/01/26 04:31:56case month
when 1,3,5,7,8,10,12
31
when 4,6,9,11
30
when 2
28
end
0034デフォルトの名無しさん
05/01/26 06:42:540035デフォルトの名無しさん
05/01/26 13:30:250036デフォルトの名無しさん
05/01/26 13:36:04詳しい人が変わりにやってあげるのが当然だと思います。
人間らしい思いやりの心を見せましょう。
0037デフォルトの名無しさん
05/01/26 13:50:23誤 while j >= first && s[i] >pivot do
正 while j >= first && s[j] >pivot do
よく見んと判らんなw
0038sage
05/01/27 00:58:54あああ、ありがとうございます!!!
動きましたーー!!たすかりました〜〜ホロリ
0039デフォルトの名無しさん
05/01/27 01:00:120040デフォルトの名無しさん
05/01/27 08:54:330041デフォルトの名無しさん
05/01/28 10:44:290042デフォルトの名無しさん
05/01/28 19:11:540043デフォルトの名無しさん
05/01/29 02:40:38らくないので勉強していなかったのでまったくわかりません。誰か助けてい
ただけませんか?
・web上の適当な英文をもちいて、大文字、小文字を無視して、各アル
ファベッドについて、次に来る文字の頻度をカウントする。単語の終
わりでは次に来る文字は、空白、カンマピリオドなどである。数字も
含め、これらはアルファベッド以外の記号は、まとめてカウントする。
結果をHTMLの表として出力する。縦に最初の文字、横に次の文字とし
て分布を見る。
という問題ですが誰かお願いします!
0044デフォルトの名無しさん
05/01/29 02:43:59コピペしてすぐ提出できるように、ちゃんと書いておいてください。
0045デフォルトの名無しさん
05/01/29 02:51:57コピペしてすぐ提出できるように、ちゃんと書いておいてください。
上の文は誰か他の人が書いたものなので。
ぜひお願いします!
0046デフォルトの名無しさん
05/01/29 02:55:490047デフォルトの名無しさん
05/01/29 03:07:57「アルファベット」でした。すいません。
0048デフォルトの名無しさん
05/01/29 03:30:15タグはどうすんの? web上の英文て対象はHTMLを含むんだよね。
<p>baka</p>
なんてHTMLが送られてきたら、pは2回、bakaは1回てカウントするの?
それともpは無視?
0049デフォルトの名無しさん
05/01/29 03:32:160050デフォルトの名無しさん
05/01/29 04:16:34作ってみたよー
require 'open-uri'
TARGET_URI = 'http://www.gnu.org/'
class CharCounter
NON_WORD_CHAR = 'OTHER'
def initialize
@buf = Hash.new{|h, k| h[k] = Hash.new(0)}
@before_char = NON_WORD_CHAR
end # def
def push(s)
s.gsub(/[\r\n]+/, '').split(//).each do |c|
c.downcase!
c = NON_WORD_CHAR if c !~ /[a-zA-Z]/
@buf[@before_char][c] += 1
@before_char = c
end
end # def
def sorted_each
@buf.keys.sort.each do |k|
yield k, @buf[k]
end
end # def
end # class
# 続く
0051デフォルトの名無しさん
05/01/29 04:17:19ALPHABETS = %w(a b c d e f g h i j k l m n o p q r s t u v w x y z)
ALPHABETS.push(CharCounter::NON_WORD_CHAR)
def print_html(counter, uri)
puts "<html><head><title>#{uri}</title></head><body><table border=1><tr><td> </td>"
ALPHABETS.each do |c|
puts "<th>#{c}</th>"
end
puts '</tr>'
counter.sorted_each do |prechar, freq|
puts "<tr><th>#{prechar}</th>"
ALPHABETS.each do |c|
puts "<td>#{freq[c]}</td>"
end
puts "</tr>"
end
puts "</table></body></html>"
end # def
def main(uri)
counter = CharCounter.new
open(uri) do |f|
f.each_line {|line|
counter.push(line)
}
end
print_html(counter, uri)
end # def
main(TARGET_URI)
0052デフォルトの名無しさん
05/01/29 04:41:19あるんですけれども、このプログラムで作ったHTMLの表はどこで見られるの
ですか?
0053デフォルトの名無しさん
05/01/29 04:58:48標準出力に出してる。だからなんかファイルにリダイレクトしてwebブラウザで開け。
例えば、vaka.rbとかいうファイルにスクリプトを書いてコマンドラインから、
ruby vaka.rb > baka.html
とかやればbaka.htmlができるからそれをブラウザで開くといい。
あ、あとRubyは1.8系が前提っすから、その辺よろしく。
0054デフォルトの名無しさん
05/01/29 05:13:42位ももらえそうです。本当にありがとうございました!!
0055デフォルトの名無しさん
05/01/29 12:48:190056デフォルトの名無しさん
05/01/29 12:49:260057デフォルトの名無しさん
05/01/29 12:55:09??
う、うん。思うよ。
0058RUBY
05/01/31 23:19:34今日、期末課題を提出しました。あれから、図書などを調べてプログラミングしてみました。
プログラムを完成させることはできなかったので、あまり良い成績はとれそうもありませんが、
一応、形にはなっていると思うので、それなりの評価はあるでしょう。
今日まで、掲示板を見ることができませんでしたが、課題の解答を沢山の人が作ってくれて
本当にありがとうございました。
今回の課題を作成しているうちにプログラミングに興味を持ったので、
休み中に何かに挑戦してみたいと思っているのですが、どんな言語から始めたらよいか、
どんな言語が将来役に立つか、プログラミング初心者が初めに読んだ方がよい図書は何か
などアドバイスがあったら教えてください。
0059デフォルトの名無しさん
05/01/31 23:22:590060デフォルトの名無しさん
05/02/01 04:19:28Rubyでいいじゃん
そんなにRuby使うの嫌か?
0061デフォルトの名無しさん
05/02/01 06:16:310062デフォルトの名無しさん
05/02/01 13:43:25白血病で氏ね
0063デフォルトの名無しさん
05/02/01 15:18:51> 一応、形にはなっていると思うので、それなりの評価はあるでしょう。
なんで? カンニングは評価くれんでしょ。
0064デフォルトの名無しさん
05/02/02 04:53:06[2] 問題文はhttp://www.edu.ics.saitama-u.ac.jp/~hira/ex04p/prog04ef.b.htmlにあります。
[3] 環境 OS:UNIX 言語:RUBY
[4] 期限:2005年2月29日14:00まで
よろしくお願いします。
0065デフォルトの名無しさん
05/02/02 06:40:10向こうで解こうとしてた者なんだが、これCじゃなかったの?
いや質問者が同一人物とは限らんのだが…
0066デフォルトの名無しさん
05/02/02 07:44:36Cの課題だと思う
コンテスト
ttp://www.edu.ics.saitama-u.ac.jp/~hira/ex04p/prog04en.b.html
== ■ 乱入者部門
* 履修者以外でも, もし乱入者がいれば (私も含めて)
* 「〆切後に改良したから試したい」「C 以外の言語で参加したい」も, こちらで
* 言語は, 端末室の UNIX 環境で使えることが条件
* 履修者・乱入者それぞれのチャンピオンで, 最終戦
0067デフォルトの名無しさん
05/02/03 06:37:06ふむ。あと1ヶ月ほどあるのね。しかも乱入も可か。
乱入してみるかなw
0068RUBY
05/02/04 03:22:20は?見てねーつってんだろ?あ?
パソコンばっかり見てるヒッキー&ブサイク男ちゃん
ドライアイで氏ね
0069デフォルトの名無しさん
05/02/04 10:18:490070デフォルトの名無しさん
05/02/06 14:55:20不謹慎すぎて笑えない
0071デフォルトの名無しさん
05/02/07 22:19:33>>58
> 休み中に何かに挑戦してみたい
好みにもよるが、BASIC・C言語・Rubyのいずれかから入るのが良いと思われる。
入門図書は、図書館があるなら自分で探せ。図書館がなければ
おすすめはC言語なら「C言語プログラミングレッスン」、Rubyなら「たのしいRuby」。
http://www.hyuki.com/lc/
http://www.amazon.co.jp/exec/obidos/ASIN/4797314087/249-5597810-1058710
ちなみに、将来役に立つ言語は何か?という問いには「将来次第」としか答えようがない。
とりあえず何にでも手を出しとけ。
0072デフォルトの名無しさん
05/02/08 00:03:450073デフォルトの名無しさん
05/02/08 02:23:02ユーザビリティ的にはC#(+IDE)かJava(+Eclipse)かPythonかRubyでFAだろう。
入門用と考えると以下は満たして欲しい。
1.参考書
2.ライブラリが豊富
3.IDE(特にコンパイラなら必須)
4.GC
Cは悪くないけど、もはやGCが無い言語は入門用としては遺物ではなかろうか。
ゴージャスなIDE付きでタダで使える実装は無いし。
Basicは発展性がなさ過ぎるというかVBA弄ってて泣きそうになったのでやめとけ。
参考書さえあるならAirみたいなオブジェクト指向でない手続き型のスクリプト言語が
習得がもっとも容易であると思われる。しかしそのような言語はあまり聞かない。
0074デフォルトの名無しさん
05/02/08 02:32:45Rubyは失格だな。なにやるにしてもネットのどこかから拾ってくればできなくもないって奴ばっかだし。
0075デフォルトの名無しさん
05/02/08 02:33:090076デフォルトの名無しさん
05/02/08 02:35:45HSP
0077デフォルトの名無しさん
05/02/09 01:37:25HSPもいいのかも知れないなあ、と一瞬思ったけどgotoを使うのが基本の言語はダメだろ。
関数定義はないし構造体も無いのは無理。
0078デフォルトの名無しさん
05/02/09 12:36:480079デフォルトの名無しさん
05/02/09 13:01:070080デフォルトの名無しさん
05/02/09 13:15:100081デフォルトの名無しさん
05/02/09 13:51:44目的がないのではなく、多目的なのでは?
0082デフォルトの名無しさん
05/02/09 18:14:330083デフォルトの名無しさん
05/02/09 20:05:17あとはApolloを使ってGUIアプリケーションとか
0084デフォルトの名無しさん
05/02/09 21:37:050085デフォルトの名無しさん
05/02/09 22:24:35Rubyを使うことが目的なのか?あふぉか?
0086デフォルトの名無しさん
05/02/22 21:23:13[2]問題文:オセロを作れ
[3]環境
[3.1]OS:
[3.2]コンパイラ:
[3.3]言語:Ruby
[4]期限:23日昼
[5]その他の制限:CPU対戦は不要
0087デフォルトの名無しさん
05/03/02 12:45:210088デフォルトの名無しさん
2005/06/20(月) 02:25:44[2] M17N
[3] native thread対応
0089デフォルトの名無しさん
2005/07/17(日) 16:31:23熟語辞書の中から熟語をランダムに選択して、その語彙を含む問題文をコーパスから拾ってきて生成するシステム。
ちょっと手がつかないです(*_*)
0090デフォルトの名無しさん
2005/07/17(日) 16:48:400091デフォルトの名無しさん
2005/07/17(日) 22:33:490092デフォルトの名無しさん
2005/07/21(木) 12:12:27ありませんね。
0093デフォルトの名無しさん
2005/08/14(日) 08:22:480094デフォルトの名無しさん
2005/08/17(水) 08:01:080095デフォルトの名無しさん
2005/09/18(日) 19:13:130096デフォルトの名無しさん
2005/10/12(水) 00:31:12の順に書かれているファイルを読み込んで、平均点と学籍番号順に並べ替えて表示するプログラムを作れといわれました。
0097デフォルトの名無しさん
2005/10/13(木) 01:07:08puts data.inject(0){|a,b| a+b.split[2].to_i}
puts data.sort_by{|a|a.split[0].to_i}
0098デフォルトの名無しさん
2005/10/19(水) 09:08:520099デフォルトの名無しさん
2005/10/20(木) 01:00:36puts data.inject(0){|a,b| a+b.split[2].to_i} / data.length.to_f
といったところか。
0100ハーピィ
2005/10/20(木) 01:06:070101デフォルトの名無しさん
2005/10/22(土) 21:44:51例えばp 5.0.integer?ならtrue、p 5.01.integer? はfalse
と整数を判別して出力するのを作れといわれました。
ほんの数行で出来るらしいのですがよろしくお願いします。
■ このスレッドは過去ログ倉庫に格納されています