1 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 07:00:47 ] あなたが解けないRuby言語の宿題を片付けもらうスレッドです。気に入らない質問やその他や発言はスルーの方向で。 【質問者へ】 回答者の便宜のため、質問の際は以下を行うことを推奨します。 ・質問は【質問テンプレ】を利用してください。 ・問題文は、出題されたまま全文を書いてください。 ・問題文やコードをリンクするときは、一言内容にについて説明をつけましょう. ・計算問題は数式をあげ、どのような計算をするのか詳しく説明してください。 ・エラーは、その詳細と発生した行を書きましょう。エラーメッセージはコピペしてください。 ・後から問題に付け足しするのはやめましょう。付け足しは作業を無駄にしがちです。 ・なりすましを防ぐため、トリップを使ってください。名前欄に、「#」に続けて任意の文字列を入力して投稿すると、その文字列を知らない他人に騙られることを防ぐことができます。 【質問テンプレ】 [1] 授業単元: [2] 問題文(含コード&リンク):() [3] 環境 [3.1] OS: (Windows/Linux/等々) [3.2] バージョン: (Ruby 1.8.6 等) [3.3] 言語: (Ruby/JRuby/IronRubyどちらでも可 等) [4] 期限: ([yyyy年mm月dd日hh:mmまで] または [無期限] のいずれか) [5] その他の制限: (どこまで習っているか、標準ライブラリは使ってはいけない等々) 【アップローダー==ラウンジ】(質問が長い時はココ使うと便利 回答者もコードが長ければここに) kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/joyful.htm 前スレ pc11.2ch.net/test/read.cgi/tech/1106572657/ Ruby Home Page www.ruby-lang.org/ja/ Ruby 初心者スレッド Part 16 pc11.2ch.net/test/read.cgi/tech/1197120980/ Rubyについて Part 30 pc11.2ch.net/test/read.cgi/tech/1200106073/ Ruby on Rails pc11.2ch.net/test/read.cgi/tech/1191381506/ その他 過去スレ・関連スレは >>2-
2 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 07:05:00 ] 詰め込みすぎた 今は反省している
3 名前:デフォルトの名無しさん mailto:sage [2008/01/13(日) 18:01:26 ] 乙
4 名前:デフォルトの名無しさん [2008/01/13(日) 23:17:57 ] >>1 乙
5 名前:デフォルトの名無しさん mailto:sage [2008/01/14(月) 21:01:58 ] pc11.2ch.net/test/read.cgi/tech/1200106073/8 pc11.2ch.net/test/read.cgi/tech/1200106073/9 pc11.2ch.net/test/read.cgi/tech/1200106073/12 pc11.2ch.net/test/read.cgi/tech/1200106073/22
6 名前:デフォルトの名無しさん mailto:sage [2008/01/22(火) 23:07:44 ] 宿題まだぁ?
7 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 10:39:24 ] ちんちん
8 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:19:14 ] [1] 授業単元: ネットワークコンピューティング概論 [2] 問題文(含コード&リンク):Google Pagesのようなコンテンツ管理システムを作成しなさい。 [3] 環境 [3.1] OS:GNU/Linux [3.2] バージョン: Ruby 1.8.6、Rails 1.2.5 [3.3] 言語: Ruby [4] 期限: 2008年3月20日 [5] その他の制限: Railsの基礎(ActiveRecord、ActionController、ActionView)は習いました。
9 名前:デフォルトの名無しさん mailto:sage [2008/01/23(水) 23:28:11 ] ええええええええええええええええええええええええええ それ宿題っていうか試験のレベルなのでは… GooglePagesでできることはやたら多岐にわたるぞ ユーザーからファイルアップロードとHTML入力を許して 「ユーザー名.サービス.com」なサイトを作らせるシステムを作れってことなのかな
10 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:11:38 ] 金くれるならやるレベル
11 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:23:12 ] CMSのごく単純なのを作れってことでは。 例としてGooglePagesが挙げられているだけで。
12 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 00:52:06 ] >>10 そこをなんとかお願いいたします。m(__)m >>11 その通りです。Google Pagesはあくまで例とのことです。 言葉足らずで申し訳ありません。 まったく手も足もでない状況です・・・ 丸投げで申し訳ありませんが、よろしくお願いいたします。m(__)m
13 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 01:35:42 ] ちなみにワンライナーでお願いします
14 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 02:07:08 ] デンライナーで勘弁してください
15 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 20:19:10 ] とっとりライナーでお願いします
16 名前:デフォルトの名無しさん mailto:sage [2008/01/24(木) 21:07:57 ] ワンライナーで勘弁してください
17 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 19:12:34 ] ワカランナイナー
18 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 21:49:54 ] やってもいいけど、君はどこ大学? 話はそれからだ。
19 名前:デフォルトの名無しさん mailto:sage [2008/01/25(金) 22:14:32 ] レイルズ使ったこと無いから答えられない
20 名前:8 [2008/01/26(土) 11:35:03 ] >>19 じゃあ答えなくて良いです。 他の方よろしくお願いいたします。m(__)m
21 名前:デフォルトの名無しさん mailto:sage [2008/01/26(土) 12:18:50 ] 了解
22 名前:デフォルトの名無しさん [2008/01/27(日) 14:06:48 ] rubricks.org/ こいつでいいんじゃね?
23 名前:デフォルトの名無しさん mailto:sage [2008/01/27(日) 17:18:38 ] 解決ね。 はい、次の宿題どぞー
24 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 03:03:18 ] >>1 乙 前スレいつの間に落ちたんだ >>9 ワロタ
25 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 03:11:37 ] Rails tutorial CMSで検索しても以外にない 参考になりそうなところ Ruby on Rails based CMS in Ruby on Rails wiki.rubyonrails.org/rails/pages/Ruby+on+Rails+based+CMS
26 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 03:15:33 ] wikiのtutorialならあるから、それを参考にするのhどう? wikiもCMSの一種だし pylori*style: RailsでWikiクローンを作る tam.qmix.org/archives/2005/08/railswiki.html Japan.internet.com デベロッパー - RailsでWikiシステムを作成する japan.internet.com/developer/20070731/26.html その他参考サイト RoRのサンプルまとめ - plus ultra blog ultra.boy.jp/?p=926
27 名前:デフォルトの名無しさん mailto:sage [2008/01/28(月) 20:03:06 ] >>8 「金くれたらやるよ」でOK 教授にもう少し勉強しなさいって言っておけ
28 名前:28 ◆B/rqf88wwo [2008/01/28(月) 23:57:40 ] 【質問テンプレ】 [1] 授業単元:リダイレクト、正規表現など [2] 問題文(含コード&リンク):(kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/5932.zip ) [3] 環境 [3.1] OS: (Windows) [3.2] バージョン: (詳しくは分かりませんが最新のものだと思われます) [3.3] 言語: (Ruby) [4] 期限: ([2008年1月30日17:00まで]) [5] その他の制限: (とりあえず正規表現あたりまで) レポートの期限が明後日に迫って神にもすがる思いです・・・ どなたかお願いします_ _
29 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:07:21 ] ISBN関連は作ったことあるから回答の半分以上はコピペで済むけど で、自力ではどこまでできたんだよ レポートに説明書かないといけないんだから方向くらいは示してくれ
30 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:15:27 ] とりあえずバージョンの見方ぐらいは覚えておこうな。 ruby -v
31 名前:28 ◆B/rqf88wwo [2008/01/29(火) 00:20:38 ] >>29 「入力が終わりに達するまで1行ずつ読み込む」→while line = gets 「1行分のデータをタイトルと旧ISBN規格のコードを代入する」→split(/,/) 「タイトルをキーとするハッシュをソートする」→.sort! おそらくこの辺りを使うと思うんですが、全体的な構成が全然見えなくて… あと「while line = gets」を実行すると「Bad file descriptor」というエラーが出てきてどうも上手くいかないみたいなんです。
32 名前:28 ◆B/rqf88wwo [2008/01/29(火) 00:23:29 ] >>30 これは初めて知りました! 実行してみたら「ruby 1.8.5」と出ました。
33 名前:28 ◆B/rqf88wwo [2008/01/29(火) 00:26:08 ] >>31 正しくは 「1行分のデータをタイトルと旧ISBN規格のコードに分割」→split(/,/) です
34 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:27:46 ] ぐぐったら色々出てきた コーディング規約とか書いてあったけど自分で修正するの?
35 名前:28 ◆B/rqf88wwo [2008/01/29(火) 00:52:02 ] >あと「while line = gets」を実行すると「Bad file descriptor」というエラーが出てきてどうも上手くいかないみたいなんです。 これは自己解決しました! リダイレクト実行の場合、先頭に「ruby」を付けないとこんなエラーが出るみたいです
36 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 00:56:13 ] #! ruby -Ks # filename : script.rb # Usage : ruby script.rb < rep1-data.txt book = Hash.new while ARGF.gets title, isbn = $_.strip.chomp.split(",") isbn = isbn.split(/[\s-]/) book[title] = isbn end p book ほれハッシュに放り込むとこまで作ったぞ
37 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:01:25 ] def get_checkdigit13(body) i = ('978' + body).split(//).map{|v| v.to_i} checksum = (i[0]+i[2]+i[4]+i[6]+i[8]+i[10])*1 # ISBNの1,3,5,7...桁 checksum = checksum+(i[1]+i[3]+i[5]+i[7]+i[9]+i[11])*3 # ISBNの2,4,6,8...桁 return (10 - checksum.to_s[-1,1].to_i).to_s end def get_grouptag(code) case code when 0,1 ; return '英語圏' when 2 ; return 'フランス語圏' when 3 ; return 'ドイツ語圏' when 4 ; return '日本' when 5 ; return 'ロシア' else return 'その他' end end
38 名前:37 mailto:sage [2008/01/29(火) 01:01:54 ] list = {} while line = gets do # run as: ruby report1.rb rep1-data.txt pair = line.split(/,/) list[pair[0]] = pair[1] end list.keys.sort!.each do |title| isbn = list[title].split(/\s|-/) isbn10 = isbn.join('-') checkdigit13 = get_checkdigit13(isbn[0]+isbn[1]+isbn[2]) isbn13 = "978-#{isbn[1]}-#{isbn[2]}-#{checkdigit13}" grouptag = get_grouptag(isbn[0].to_i) puts "#{title.downcase.capitalize},#{isbn10},#{grouptag},#{isbn[1]},#{isbn[2]\ },#{isbn[3]},#{checkdigit13},#{isbn13}" end
39 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:02:59 ] >>37-38 の実行結果 $ ruby syukudai.rb rep1-data.txt Idea factory,4-89583-115-9,日本,89583,115,9,4,978-89583-115-4 In the blink of an eye,0-7432-5733-2,英語圏,7432,5733,2,6,978-7432-5733-6 Neko to saru,4-19-850077-0,日本,19,850077,0,1,978-19-850077-1 Probabilidade,2-5216-0294-9,フランス語圏,5216,0294,9,9,978-5216-0294-9 Random variables,98-486-0107-4,その他,486,0107,4,5,978-486-0107-5 Reaction kinetics,4-8079-0532-5,日本,8079,0532,5,4,978-8079-0532-4 Second nature,0-300-12039-7,英語圏,300,12039,7,4,978-300-12039-4
40 名前:37 mailto:sage [2008/01/29(火) 01:06:21 ] あ、Emacsからコピペしたときに変なことに putsのとこは1行で書いてね そういえばチェックディジットの計算にはmod使えって書いてあったんだっけ 「下1桁を文字列として取る」とか数学的な計算を思いっきり無視してるなスマン
41 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:12:20 ] ちょwwwww 同じ学類wwwww そんくらい自分でやれよ! 単位取れても使えなきゃ意味無いぞ!
42 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:18:19 ] ちなみにワンライナーでお願いします
43 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:21:04 ] >>41 使わなけりゃ問題はなかんべ
44 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:23:40 ] 学類ってうちの大学かな・・・
45 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:32:56 ] 他に学群学類なんて分け方をしてる大学があったら教えてくれよ。 …まあ、Rubyの産みの親だしな…
46 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:34:12 ] 担当の教官の人がruby-listに投稿したような形跡はあるから、案外ここも見てるかもね >>44 Tくば大学のハルヒキャンパスだそうな いや意表ついて本当にハルヒって読むんだったらぼかしにも何にもなってなくてスマンが
47 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:38:26 ] 自力で解説つけろという指定はコピペ可能な提出物の扱いに慣れてる感じがしてさすがに安定感があるな 他の大学でしょぼいとこは真似っこしてみるといいと思う
48 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:44:30 ] >>46 安心しろ、読み方違うから。 でもしょっちゅうネタになってる…orz しかし俺の書いたのの半分くらいで作られると、自分の技量の無さがいやと言うほど判って悲しくなってくるぜ
49 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:48:27 ] def cd(c);(10-[0,2,4,6,8,10].inject{|v,i|v+c.split(//).map{|e|e.to_i}[i]}+3*[1,3,5,7,9,11].inject{|v,i|v+c.split(//).map{|e|e.to_i}[i]}%10)%10;end p cd('897'<<'0743257332') #=>6 よっしゃー^^; どんなもんじゃー!
50 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:54:59 ] >>48 調べながら書いたので技量はたいしたことない whileとgetsの使い方なんてエラー出たからマニュアル見て書き換えたくらいで全く覚えてないぞ
51 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 01:55:43 ] 課題曰く、「可読性も採点対象」だそうな
52 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 03:22:11 ] 日日な俺も暇だから作ってみたぜ def check_digit(dig) dig = dig.to_s.scan(/\d/).map{|c| c.to_i} n = (0 .. 5).inject(0){|x, y| x += dig[y*2] + 3 * dig[y*2+1] } return (10 - n % 10) % 10 end def group_name(group) Hash[0, '英語圏', 1, '英語圏', 2, 'フランス語圏', 3, 'ドイツ語圏', 4, '日本', 5, 'ロシア'][group[0, 1].to_i] or 'その他' end ARGF.each do |line| title, isbn = line.strip.split(',') title = title.split(' ').map{|w| w.capitalize}.join(' ') isbn = isbn.gsub(' ', '-') group, pub, book, cd = isbn.split(/[-]/) cd2 = check_digit('978' + group + pub + book) isbn2 = ['978', group, pub, book, cd2].join('-') puts [title, isbn, group_name(group), pub, book, cd, cd2, isbn2].join(',') end
53 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 03:25:27 ] アルファベット順にソートすんのわすれたけど面倒くさいからもういいぜ
54 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 03:27:55 ] 最後らへんのputsを削除して ARGF.each do ... end を puts ARGF.map do ... end.sort にするだけな気がするけど面倒くさいから試さないぜ
55 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 11:47:07 ] >>47 >>37-38 をコピペしたら「本当はわかってない」のが丸わかりだろうな コメントや解説の強制はなかなか効果的だ
56 名前:28 ◆B/rqf88wwo mailto:sage [2008/01/29(火) 11:48:04 ] >>36-39 >>52 みなさんありがとうございます! 大変助かりました。 大いに参考にさせていただきます!
57 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 12:10:05 ] >>55 でもまあ動作するスクリプトが目の前にあれば自力ででも作りやすいだろ コピペで済ますのも自由だしな
58 名前:デフォルトの名無しさん [2008/01/29(火) 14:42:24 ] 教えて欲しい問題があります! データベースに登録した同じ次元のベクトルをコサイン尺度によって類似度を求めたいのですが, コサイン尺度のプログラムが書けなくて困ってます! 以下がコサイン尺度の数式です. cos(dj,q) =(Σ_[i=1, m] dij*qi)/(√(Σ_[i=1, m] dij^2)^(1/2)) * (√(Σ_[i=1, m] qi^2)^(1/2)) ※q=検索質問ベクトル,dj=各文書ベクトル となっています. また,dj*q はベクトル間の内積を表していて, dj*q = Σ_[i=1, m] dij*qi となってます. 少し複雑な計算式ですが,とりあえず書いてみました. Railsのスレで質問したのですがこのスレの方が良いと言われたので書き込みました. どなたかRubyになおしてもらえるならお願いします(×_×)
59 名前:デフォルトの名無しさん mailto:sage [2008/01/29(火) 18:00:30 ] おらすうがくっちゅーもんがかいもくわからんですたい。
60 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:13:17 ] どこが分らんのか分らん。単なるベクトルの計算を地道にやればいいんじゃないの? require'matrix'してVectorクラス使ってみれば。あとはmathnとか必要に応じて dj*qは(dj.covector*q)[0]くらいでいけるんじゃね
61 名前:デフォルトの名無しさん mailto:sage [2008/01/30(水) 03:27:39 ] ああ内積のメソッドあったわ・・・ dj*q=dj.inner_product(q) 絶対値もあったわ・・・ (Σ_[i=1, m] dij^2)^(1/2)=dj.r
62 名前:デフォルトの名無しさん [2008/02/01(金) 22:52:41 ] 質問テンプレ】 [1] 授業単元:クラス、正規表現、ファイル入出力 [2] 問題文(含コード&リンク): 現在の年月日を取得し「2008年02月02日」のように 表示しテキストファイルAに出力しなさい。 コマンドラインから日時を入力し、 テキストファイルAをスキャンして マッチした一行をテキストファイルBに出力。 また自分の生年月日をコマンドラインに出力し、 現在の日時から生年月日を引いたものも表示しなさい。 [3] 環境 [3.1] OS: (unix) [3.2] バージョン: (Ruby 1.8.6 ) [3.3] 言語: (Ruby) [4] 期限: [2008年02月02日07:00まで] [5] その他の制限:クラスを利用。 :出来るだけ簡単なクラス、メソッドの利用 コマンドライン表示 例 ーーーーーーーーーーーーーーーー 現在時刻 2008年02月02日 生年月日 2000年01月01日 生きてる年数 8年01月01日間 ーーーーーーーーーーーーーーーー 時間の取得とファイル入出力はできるのですが, クラスでメソッドを定義しファイル入出力をしようとすると 上手く行きません.見本をどなたかお願いします, 初心者の質問でもうしわけないのです,よろしくお願いします,
63 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 00:05:56 ] 問題がよくわからない。 「2008年02月02日」をテキストファイルAに出力し、 コマンドラインから「2008年02月02日」とか入力して、 テキストファイルAに「2008年02月02日」という行があったら それをテキストファイルBにコピーするという意味か? どういう処理なんだかよくわからない。 あと何がうまくいかないんだかよくわからないから うまくいかないソースを提示したらどうだ。 丸投げで全部書いてくれってのはよくない。
64 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 00:41:28 ] ハルヒキャンパスでこのスレ一番上にくるwwwwwワロス >>49 すげえw
65 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 00:51:09 ] ていうかハルヒキャンパスなんて名称を聞くと 時代だなあ・・・って思ってしまう 俺のいたころ(つっても数年前だが)には まだハルヒとかなかったもんな
66 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 06:57:38 ] >>63 いや、そのまんまの処理だと思うが… たった1行書き出してたった1行読み込んでたった1行マッチさせてたった1行を再書き出し もっと実利に即したわかりやすい課題にしろよとは思うが適当に課題出せばこんなもんだろ >>62 クラスとメソッドを自力で定義してよいという課題な時点で回答は無限に存在する ぜんぜん理解できないスゴい代物が返ってくる可能性があるので、 どの部分をクラスにしてどの部分をメソッドにする気なのか口頭でいいから教えてちょ
67 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:03:00 ] って、期限過ぎちゃったのか
68 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:30:00 ] てか、ギリギリしぎだろw
69 名前:デフォルトの名無しさん mailto:sage [2008/02/02(土) 07:58:30 ] こりゃ課題出した先生が悪い だってつまんないんだもん^^;
70 名前:デフォルトの名無しさん [2008/02/06(水) 17:12:21 ] >>66 ありがとうございます。 初心者ですみません>< どの部分をクラス、メソッドにすれば一番理解しやすいものに なるのでしょうか。解説つけることも課題の内なので、理解しやすいもので お願いします。 「どの部分をクラスにしてどの部分をメソッド」というのにすごく驚きました。 そんなに無限にできるのですか?@@
71 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 20:26:05 ] >>70 ひとつポリシーの質問なんだが 2000年6月15日に生まれて、今日が 2001年9月20日だった場合、生きてる期間は1年と3月と5日だよな じゃあ今日が 2001年3月14日だった場合は何年と何月と何日だと思う?
72 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:01:44 ] 年月日の引き算は意外とめんどい そのぶん、普段頭の中でやってる計算をプログラムとして書き下すという訓練には適してるけど
73 名前:デフォルトの名無しさん mailto:sage [2008/02/06(水) 22:06:09 ] 閏年とか計算するともうね。
74 名前:デフォルトの名無しさん [2008/02/07(木) 10:17:58 ] >>71 すみません。 うるう年とか、31日とかは気にせず、30日で 計算で大丈夫です。
75 名前:sage [2008/02/07(木) 10:42:29 ] de = nil ←1 while true begin case de when nil de = gets next when 'l' then puts "X" end rescue puts $! end de = nil ←2 end 今いろいろなソースを読んでいるのですが、 上記の1と2がわかりません。説明をお願いします。 また、
76 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 11:01:34 ] 1は、その代入で、de というローカル変数が存在するようにしている、 2は、de が指している文字列オブジェクトが参照されなくなるようにしている、 のだと思う。
77 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 12:22:19 ] >>75 begin while de = gets do puts 'X' if de == 'l' end rescue puts $! end たぶんこういう標準入力ループをやりたかったのだろうと推測 while trueを使うことはRubyではあまりない nilの理解はしてるかな Rubyで偽を表す特別な値だ 値の一度も入ってないローカル変数を参照することはできないから、 「仮に」nilを入れておくということをRubyではよくやる それが1なんだが、「エラーが出たから書きました」的投げやり感が…
78 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:02:36 ] >>74 require 'date' class Date def to_s return self.strftime("%Y年%m月%d日") end def passed_from(base) d = self.day - base.day if d < 0 then d = d + 30; sage_m = 1 # 本当は30とは限らない else sage_m = 0 end m = self.month - base.month - sage_m if m < 0 then m = m + 12; sage_y = 1 else sage_y = 0 end y = self.year - base.year - sage_y if y < 0 puts 'エラー!:生年月日が今日より先です' exit end return "#{y}年#{m}月#{d}日" end end
79 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:03:05 ] class MyFile def initialize(filename) @file = filename end def save(text) File.open(@file,'w'){|f| f.puts(text)} end def grep(text) matched = Array.new File.open(@file,'r').each{|line| matched.push(line) if line.chomp =~ Regexp.new(text) } return matched end end
80 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:03:59 ] file_a = MyFile.new('A.txt') file_b = MyFile.new('B.txt') today = Date.today my_birthday = Date.new(1995,7,7) puts "現在時刻\t#{today}" file_a.save(today) file_b.save(file_a.grep(ARGV[0])) puts "生年月日\t#{my_birthday}" puts "生まれてから\t#{today.passed_from(my_birthday)}"
81 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 13:07:23 ] >>78-80 をくっつけて実行 $ ruby kadai.rb 2008年02月07日 現在時刻 2008年02月07日 生年月日 1995年07月07日 生まれてから 12年7月0日 $ cat A.txt 2008年02月07日 $ cat B.txt 2008年02月07日 暇な人がもっと簡単にしてくれるはず sage_mはmonthの繰り下がり、sage_yはyearの繰り下がり
82 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:26:11 ] よしじゃあ俺も・・・ class Time def to_s; strftime('%Y年%m月%d日'); end end class Days def initialize(sec) mo, d, h, m, s = 12, 30, 24, 60, 60 @y = (sec / s / m / h / d / mo).to_i @m = (sec / s / m / h / d ).to_i % mo @d = (sec / s / m / h ).to_i % d end def to_s; sprintf('%d年%02d月%02d日間', @y, @m, @d); end end
83 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:26:33 ] today = Time.now puts '現在時刻 ' + today.to_s open('a.txt', 'w'){|fp| fp.puts today} open('b.txt', 'w'){|fp| fp.puts File.readlines('a.txt').grep(gets)} birthday = Time.local(2000, 1, 1) age = Days.new(today - birthday) puts '生年月日 ' + birthday.to_s puts '生きてる年数 ' + age.to_s
84 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 16:28:41 ] $ ruby kadai.rb 現在時刻 2008年02月07日 2008年02月07日 生年月日 2000年01月01日 生きてる年数 8年02月19日間 二行目が入力するとこね あと年数計算は一月30日、一年360日で適当だからな
85 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:15:47 ] で、fpって何の意味?
86 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 18:42:14 ] File.open('a.txt', 'w'){|f| f.puts today} と f で書く癖をつけておくと後々幸せになれるかと思われ
87 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 19:02:47 ] Rubyだとファイルポインタじゃなくてファイルオブジェクトだからfが妥当な気がすま
88 名前:デフォルトの名無しさん mailto:sage [2008/02/07(木) 22:31:18 ] fp は FILE *fp のことかと。 C言語のころのクセなんだろう Rubyでは意味的に >>87 でいいと思われる
89 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 07:55:15 ] ifp と ofp みたいにした場合、単に f にしてると if でかぶるから、 fp にしてるのって俺だけ?
90 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 08:23:14 ] 俺はその辺わけてるわ。 >>86 みたいに使い捨ての場合は f、 inとoutがあるばあいは、input、outputとちゃんと書く
91 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:32:09 ] >>77 ありがとうございます。 これをいくつかに分岐させるとしたら。 while de = gets do if de == 'l' puts 'X' else de =='V' puts 'Y' end てな感じでよいのでしょうか?
92 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 11:39:46 ] >>89 inとoutでいいじゃん IOっぽいし長くても3文字だし inやoutをデータ変数名に使ってて紛らわしくなるとか口走ったら百叩きで >>91 Rubyにおいてはif文の連結はelisfを使う あるいはcaseを使ってもいい いちいち聞いてると埒あかないから適当なRuby入門サイトでも見て勉強するといい
93 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 13:32:54 ] >>92 はい。 elisf調べてみます。
94 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 16:05:16 ] 今ごろ泣いてそうだが elsif な 初心者用解説サイトくらい見ながらやったほうが時間の節約にもなるというのは同意 必要なくなったら忘れりゃいいんだし
95 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 18:25:07 ] >>92 > inやoutをデータ変数名に使ってて紛らわしくなるとか口走ったら百叩きで 紛らわしいどころか、inは予約語だよ。
96 名前:デフォルトの名無しさん mailto:sage [2008/02/08(金) 21:49:45 ] for i in (1..3) do puts "inは予約語だお" end
97 名前:デフォルトの名無しさん [2008/02/11(月) 17:08:01 ] プログラム(アルゴリズム)の性能評価をしたいんですが、 Rubyのコード内でメモリ消費量やステップ数の計算・表示はできるんでしょうか? また普通どういう方法でおこなうのでしょうか?
98 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 17:28:15 ] それはできません
99 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:16:24 ] >>97 プロファイリングを使う
100 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 19:42:40 ] メモリ消費量やステップ数の表示ってできたか?
101 名前:デフォルトの名無しさん [2008/02/11(月) 19:48:57 ] builder.japan.zdnet.com/news/story/0,3800079086,20366461,00.htm これ?
102 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 20:01:33 ] お、なんぞこれ、と思ったがgem提供か gem install なんとか で Bulk updating Gem source index for: gems.rubyforge.org と表示して数分止まるのはどうにかならんもんかね っていうかこのとき何してるんだ
103 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 21:04:53 ] >>102 gem遅いよねえ たぶん、毎回、gems.rubyforge.org/yaml からYAMLまるごともってきてるからだと思う。 gems鯖側でDBにしてクエリーなげればいいんだろうけどな
104 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 21:08:35 ] > gems.rubyforge.org/yaml スゲエ スクロールしてもスクロールしても先が見えねえ
105 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 21:24:37 ] せめて圧縮するとか
106 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 21:45:48 ] $ wget -S --spider gems.rubyforge.org/yaml --21:43:05-- gems.rubyforge.org/yaml => `yaml' gems.rubyforge.org をDNSに問いあわせています... 205.234.109.19 gems.rubyforge.org[205.234.109.19]:80 に接続しています... 接続しました。 HTTP による接続要求を送信しました、応答を待っています... 1 HTTP/1.1 200 OK 2 Date: Mon, 11 Feb 2008 12:43:08 GMT 3 Server: Apache 4 Last-Modified: Mon, 11 Feb 2008 10:24:05 GMT 5 ETag: "698ba3-f43fad-445df56e95b40" 6 Accept-Ranges: bytes 7 Content-Length: 16007085 8 Keep-Alive: timeout=3, max=100 9 Connection: Keep-Alive 10 Content-Type: text/plain 200 OK むっちゃプレーンめっちゃプレーン プレーン以外の選択肢がない…えーと、じ、16MB…?
107 名前:デフォルトの名無しさん mailto:sage [2008/02/11(月) 22:04:09 ] >>104 ワロス どっかの円周率のサイト思い出した
108 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 00:47:18 ] gemが数十ていどだったときは良かったんだけどね。 そろそろgentooのportageみたいに細かく分ける方式にしたほうがいいね。
109 名前:デフォルトの名無しさん mailto:sage [2008/02/12(火) 20:53:12 ] >>104 HAHAHA! こいつはクレイジーだぜ! 開いただけでfirefoxが112MBもメモリ喰ってる
110 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:52:31 ] >107 円周率のサイトは無限に続いてたんだっけ?
111 名前:デフォルトの名無しさん mailto:sage [2008/02/14(木) 09:58:25 ] 現在の記録、確か1兆桁越えてたっけ? 無限じゃないにしろ、ふつう表示しきれない。
112 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 01:54:15 ] 宿題かもーん。
113 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 13:49:30 ] せっかくだし初学者にもためになるゲームでも作りながら待機しようぜ
114 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 14:22:44 ] じゃんけんは前スレで作ったな ○×ゲームも作った覚えがある 3分タイマーとかも作ったっけか
115 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 17:18:33 ] オセロとか?
116 名前:デフォルトの名無しさん mailto:sage [2008/02/15(金) 18:10:29 ] Matz並べ
117 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:03:06 ] やっぱまだまだRubyを教材に使う学校は少ないのかねぇ。
118 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:19:25 ] 鳥取大学もプログラミングの講義の1つにRubyを使ってたけどカリキュラム変更で無くなった><; CGI使ったクライアント<->サーバの実習みたいなのではRuby使ったけど。
119 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 03:54:13 ] >>116 先手、Matzで Ruby│ │ ──┿──┿── │ │ ──┿──┿── │ │
120 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 04:18:27 ] Ruby│Rutile │ ──┿───┿── │ │ ──┿───┿── │ │
121 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:33:10 ] Ruby│Rutile │ ──┿───┿── │Ruby │ ──┿───┿── │ │
122 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:35:07 ] Ruby│Rutile │ ──┿───┿── │Ruby │ ──┿───┿── │ │ Ruby
123 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 13:36:14 ] Ruby│Rutile │ ──┿───┿── │Rutile │ ──┿───┿── │Rutile │
124 名前:デフォルトの名無しさん [2008/02/16(土) 14:19:13 ] ruby-sapporo.org/live
125 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 16:20:38 ] >>124 thx
126 名前:デフォルトの名無しさん mailto:sage [2008/02/16(土) 18:19:24 ] Hi all. What is Rutile?? I don't know.
127 名前:デフォルトの名無しさん mailto:sage [2008/02/18(月) 02:23:54 ] >126 ルビーもルチルも宝石名かつBL誌名
128 名前:デフォルトの名無しさん mailto:sage [2008/02/19(火) 07:13:52 ] >>127 Thanks. I like BL too. u r a best friend.
129 名前:デフォルトの名無しさん mailto:sage [2008/02/20(水) 00:06:31 ] 宿題かもーん。
130 名前:デフォルトの名無しさん [2008/02/23(土) 18:49:39 ] [1] 授業単元:2chの書き込み(よくわからないけどこれでいいのかな) [2] 問題文(含コード&リンク):net/httpで2chに書き込むソースを作ってください。こちらも作っていますが日付関連でうまくいきません。 cookieが expires=Friday, 01-Jan-2010 00:00:00 GMT; ですごいおかしいです。 [3] 環境 [3.1] OS:Mac,Bash [3.2] バージョン:Ruby1.8.2 [3.3] 言語: Ruby [4] 期限:無期限。できれば日曜まで [5] その他の制限: net/httpを使ってください、コメントありで,UTF8。kconvを使って変換してください。
131 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 18:55:37 ] >>130 そんな2ch的に危なっかしいものこっちからホイホイ出せるか(w あと、Cookieとか2chとかに関する勉強が足りないように見える それのどこがそんなにおかしいのかさっぱりわからない
132 名前:デフォルトの名無しさん [2008/02/23(土) 19:01:18 ] >>131 ERROR:ブラウザを立ち上げ直してみてください。 とりあえず, Set-CookiesをそのまんまCookiesヘッダにセットしないで、 Datを取得したときのDateヘッダーをexpiresにセットしても同じで、 expiresを消去しても無効。 どうすればいいんだろうか
133 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:29:46 ] >>132 > とりあえず なんでそんなこと場当たり的に試す必要があるんだよ 2chへの書き込み方法はきちんと形式が決まってるだろ
134 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 19:49:37 ] 1.8.2って何かバグあったっけ? 書き込むがShiftJISでないのに一票
135 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 20:15:39 ] >>130 > [1] 授業単元:2chの書き込み(よくわからないけどこれでいいのかな) この問題は、自力で解決できないやつは質問不可。
136 名前:デフォルトの名無しさん [2008/02/23(土) 20:29:33 ] できたです。 Cookieじゃなくて、POSTのtimeがおかしかった模様。 すいません>< ちなみにKConv.tosjisつかってます 最初はURL間違ってたとかで初歩的だった。 それをなおしたらこれだったんだけど。 Rubyでlocaltimeというの?microtimeだっけ?取得するのはどうやるんだろう
137 名前:デフォルトの名無しさん mailto:sage [2008/02/23(土) 21:09:16 ] >>30 2chブラウザ開発資料 info.2ch.net/wiki/index.php?monazilla%2Fdevelop 2ちゃんねるの仕様 ttp://www.monazilla.org/document/ Rubyで書かれた2chブラウザ(古いので鼻捥げには未対応と思われ) ttp://www.unixuser.org/~haruyama/software/goRua/
138 名前:デフォルトの名無しさん [2008/02/24(日) 06:04:08 ] 2chブラウザでも作ってるっていうんだろうが、 スクリプトで2ch書き込みって時点で危なっかしくて答えられねえよw
139 名前:デフォルトの名無しさん mailto:sage [2008/02/24(日) 06:31:39 ] GoRuaってRubyの2ちゃんブラウザのコードを読んでみれば?
140 名前:140 ◆.DxfZ0s0HA [2008/02/26(火) 20:20:04 ] 【質問テンプレ】 [1] 授業単元:GUI等 [2] 問題文(含コード&リンク):(www.dotup.org/uploda/www.dotup.org2551.zip.html ) [3] 環境 [3.1] OS: (Windows) [3.2] バージョン: (1.8.5) [3.3] 言語: (Ruby) [4] 期限: ([2008年2月29日17:00まで]) [5] その他の制限: (必ずGUIを用いる) 途中できたところまでのソースも入れてあります。 どうしてもGUIを用いる段階で引っかかっています。 よろしくお願いします。
141 名前:28 ◆B/rqf88wwo [2008/02/26(火) 20:20:42 ] ちなみに>>140 のDLパスは「rep」です。
142 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:29:50 ] tk使うんじゃねか
143 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 20:33:10 ] ま た ○ く ば の ハ ルヒか 授業見てねーからGUIに何使ってるかわからんので答えられないぞ しかし微妙にレベルがハイで面白そうな演習してるな
144 名前:140 ◆.DxfZ0s0HA [2008/02/26(火) 20:45:19 ] >>142-143 GUIにtk使うことは確実なんですが… 上手く動作しませんがフォーマットだけはなんとか作れました。 あとはこれで動作するようになればいいのですが… www.dotup.org/uploda/www.dotup.org2565.zip.html DLパス:rep
145 名前:デフォルトの名無しさん mailto:sage [2008/02/26(火) 23:58:09 ] これ自分で書いたコード? 見栄えはきっちり書いてるみたいなのにチグハグなところがいっぱいあるんだけど。
146 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 00:10:49 ] >>145 前に自分で書いた2つの別のコードを組み合わせて作りました。 一部整合性つけるために直した(defの部分など)つもりなんですが… あとどこを直せば上手く動くのかが見当つかなくて…
147 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:45:33 ] www2.uploda.org/uporg1272800.zip.html 定義した関数が in:標準入力 out:標準出力 のままじゃん in: 検索語 out: 検索結果 に変更汁
148 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 00:52:15 ] ていうかGUIは一旦忘れたほうがいい 引数を受け取って結果を返すメソッドとか作れ メソッドを作った後にボタン押すと引数が入って結果が画面に表示されるように切り替えればいい そんな丁寧にやってたら間に合わないかもしれないけれど
149 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 09:31:30 ] >>140 # 1/2 : GUI 構築 require 'tk' label = TkLabel.new(nil,:text=>'検索文字列入力') label.pack(:side=>:top,:fill=>:x) $entry = TkEntry.new(nil) $entry.value = '検索文字列を入力' $entry.pack(:side=>:top,:fill=>:x) meta = TkButton.new(nil,:text=>'メタデータから検索') meta.pack(:side=>:top) text = TkButton.new(nil,:text=>'本文全体から検索') text.pack(:side=>:top) view = TkButton.new(nil,:text=>'ファイルの中身を表示') view.pack(:side=>:top) scr = TkScrollbar.new(nil) $text = TkText.new(nil) scr.command = '%s yview'%$text.path $text.yscroll = '%s set'%scr.path scr.pack(:side=>:left,:fill=>:y) $text.pack(:side=>:left,:fill=>:both) # 後半へ続く
150 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 09:33:10 ] >>140 # 2/2 真ん中のボタンの処理 : メインループ text.command = proc { $text.delete('1.0',:end) pattern = $entry.value re = Regexp.new(pattern) Dir.glob('*.txt') do |filename| file = File.read(filename) if file =~ re meta = file.split("\r\n")[0,2] meta << filename $text.insert(:end,meta.join(',')) $text.insert(:end,"\n") end end } # 上下のボタンは自分で作れるだろ? meta.command = nil view.command = nil # Dir.chdir('/tmp/aozora') Tk.mainloop # 以上
151 名前:149-150 mailto:sage [2008/02/27(水) 11:22:58 ] いくつか訂正 ・Tk---.new(nil,...) の nil を削除(あっても問題ないけど) ・テキストとスクロールバーを同期させる部分 scr.command $text.yscroll -> $text.yscrollbar(scr) ・実害はないけど被ってる変数名(metaとか)は適当に変更 あと青空文庫からテキスト落してみたけど、作品によって題名、 著者名(、原題、副題、翻訳者等)の並びが違う 検索結果が期待した表示にならないケースが結構あると思う
152 名前:その1/2 Viewクラス(ユーザーインターフェースの役割) mailto:sage [2008/02/27(水) 11:45:22 ] #!ruby -Ks require "tk" class View def initialize TkRoot.new(:title=>"宿題") @briefLabel = TkLabel.new(:text=>"検索文字列入力") @InputEntry = TkEntry.new(:textvariable=>"検索文字列を入力") @searchMetaButton = TkButton.new(:text=>"メタデータから検索") @searchBodyButton = TkButton.new(:text=>"本文全体から検索") @displayFileButton = TkButton.new(:text=>"ファイルの中身を表示") @scrollbar = TkScrollbar.new @resultTextArea = TkText.new @resultTextArea.yscrollbar(@scrollbar) @resultTextArea.font = TkFont.new({:family=>"MS Pゴシック", :size=>12}) self.pack return self end def pack @briefLabel.pack( :side=>:top, :fill=>:x) @InputEntry.pack( :side=>:top, :fill=>:x) @searchMetaButton.pack( :side=>:top, :fill=>:x) @searchBodyButton.pack( :side=>:top, :fill=>:x) @displayFileButton.pack(:side=>:top, :fill=>:x) @scrollbar.pack( :side=>:right, :fill=>:y) @resultTextArea.pack( :side=>:bottom, :fill=>:both, :expand=>true) end def connect(outlet, action) outlet.command = proc{method(action).call} end end
153 名前:その2/2 Controllerクラス(UIと手続きの関連付け) mailto:sage [2008/02/27(水) 11:46:57 ] class Controller < View def initialize super connect(@searchMetaButton, :searchMeta) connect(@searchBodyButton, :searchBody) connect(@displayFileButton, :displayFile) end def searchMeta pattern = @InputEntry.textvariable.value result = "" Dir.glob("**.rb"){|filename| io = File.open(filename) title = io.gets.chomp; author = io.gets.chomp io.close result << "#{title} #{author} #{filename}\n" if author.include?(pattern) } @resultTextArea.value = result end def searchBody puts "ここに処理を書くよ" @resultTextArea.value = "ここに処理を書くよ" end def displayFile filename = @InputEntry.textvariable.value text = File.open(filename){|io|io.read} if FileTest.exist?(filename) @resultTextArea.value = text end end # メイン処理 Controller.new Tk.mainloop
154 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 13:39:56 ] なるほど、「乗っかってる」ようなイメージで継承使ってるのね Tk部品部分と内部検索処理部分でどうやってデータ受け渡そうかとか悩むのが軽減される
155 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 17:32:44 ] >>147-153 皆さん本当にありがとうございます! ところで>>149-150 は最初のdefの後に続ければいいのでしょうか?
156 名前:149- mailto:sage [2008/02/27(水) 18:13:30 ] >>155 >>149 と >>150 を連結して ruby -Ks 149+150.rb で実行できるはず 最初の def てのは r2-1.rb の fileread のことかな? 適当に書き換えて「メタデータで検索」の中身に使うといいよ >>153 Controller 内のメソッドは文字列を返すだけにして connect で定義する proc を { input_string = @InputEntry.textvariable.value @resultTextArea.value = method(action).call(input_string) } にすれば tk を分離できるね
157 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 20:33:54 ] >>156 とりあえず、>>149 と>>150 を連結してそのまま実行してみたんですが「本文全体検索」は問題なく実行できました。 ただ、「メタデータから検索」ができないんですけどどのようにすればよいのでしょうか…? あと >・テキストとスクロールバーを同期させる部分 >scr.command $text.yscroll -> $text.yscrollbar(scr) の部分はどこに挿入すればいいのでしょうか?
158 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:00:07 ] 少しは自分で考えとかないと、これからの課題の負担が膨大になるぞ 俺たちは授業受けてないんだから、自分からテンプレートくらい出せないと 「明らかに授業と違うプログラム」を提出し続ける羽目になる それがどう評価されるかは自明だ てか、改造する心の余裕くらいは持ってほしい所存
159 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:03:10 ] Ruby/Tkは同じ処理で書き方が山のようにあるから、授業で受けた形式に整えておかないと不審 >>157 それぞれがどういう処理してるかは読める?
160 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 21:10:33 ] >>159 はい、なんとなくは… meta.command(上のボタンの処理)とview.command(下のボタンの処理)に付け加える 必要があることは分かります。 ただそのままここでdefを使用しても動作しないみたいで…
161 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:18:36 ] Ruby/Tkの部品に対する動作、commandはProcオブジェクトである必要がある defで定義したメソッド名をそのまま指定しても動作しない Proc.new{ }の中身はいわゆるふつーのRubyスクリプトでよい 変数は「その場」で有効なスコープの変数が使える どうでもいいけど$entryとか$textとかはグローバル変数でなくてもいいような希ガス meta.command = Proc.new{ metasearch($entry.value) } ... def metasearch(search_str) # search_strをてきとうにけんさく end
162 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 21:31:12 ] てか、metasearchを実行するたびに全ファイルを読み込むのは非常にアレだな 課題として可能なら起動時に@databaseとかにメタデータ部分を保管しておくといいのかもしれん
163 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 22:00:12 ] >>161 def search(pattern) result = "" Dir.glob("//kikyo/home1/saka/pub/data/aozora-portion/*_*_*.txt){|filename| io = File.open(filename) title = io.gets.chomp author = io.gets.chomp io.close result << "#{title} #{author} #{filename}\n" if author.include?(pattern) } return result end meta.command = Proc.new{search($entry.value) pattern = $entry.value label.text(pattern) text.value = search(pattern) } これを>>149-150 に新たに付け加えてみたのですが上手く動作しません… どこがおかしいのでしょうか?
164 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 22:32:26 ] >どうでもいいけど$entryとか$textとかはグローバル変数でなくてもいいような希ガス あれ?ほんとだ、なに勘違いしてたんだろ >>163 saerch を二回呼んでるのは御愛嬌として ・Tk.mainloop 以下の記述は無効(未処理) ・ファイル名が glob のワイルドカードと一致していない ・文字コードが sjis に統一されていない ・副題、原題等がある時 search は正しく動作しない くらいかな
165 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 22:49:46 ] >>164 やっぱりここでdefは使わない方がいいのでしょうか…? 混乱してきましたw
166 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 23:04:13 ] >>158 ちなみに普段の授業ではこういう形式で習っています。 以下はプログラムの1例です。 #! ruby -Ks require("tk") def fileread(filename) io = open(filename, "r") str = "" while line = io.gets str.concat(line) end io.close return str end label = TkLabel.new label.text("ここにファイル名が表示されます") label.fg("black") label.pack("fill"=>"x") button.text("ファイル読み出し") …… …… …… button.command{ filename = entry.value label.text(filename) text.value = fileread(filename) } Tk.mainloop
167 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:10:08 ] defはそのメソッドの使用前の部分にまとめておけ Tkのパーツに対する初期的指示はTkナントカ.newから.packの間に書いておけ あと、メソッド単体でも動作するようにしてからTkに組み込め どこでエラーが発生してるのかわけがわからなくなるから それと、手を抜くためにも授業は受けておけ 授業を受けておけば授業込みで3時間くらいでパクれるものが、授業を聞かないがために1日以上掛かる
168 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:13:35 ] 授業って言っても、ほとんど自習みたいなもんなんだけどね テキストが与えられて、10個くらいの課題をこなす。 そのうち1つが必須になっていて、そこまでできたら見せに行く。 教授とTAがいるから、わからない部分があれば質問できる。 2コマなんだが、さっさと終わらせて1コマ目で出て行くやつも多いし。
169 名前:140 ◆.DxfZ0s0HA [2008/02/27(水) 23:17:11 ] >>167 授業は受けてるんですけど今回のプログラミングの教師があんまり説明をしてくれないもので。。 ほとんど自学状態なんですよ… ほんとに初心者ですいません。 残りの上のボタンの処理(メタデータから検索)と下のボタンの処理(ファイルの中身を表示)もご教授お願いしますm(_ _)m
170 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:25:35 ] >>163 のsearchはこれで一応メタデータの検索できねーか glob先のファイルパスの先頭に//が2つあるのが若干謎だが あ、そうか、これじゃエラーで動かねえな Dir.globの引数はglobな文字が入った文字列だがこれじゃ文字列になってない 実行エラーの見かたとか習ってないん? 行数が表示されるからそのへんがおかしいとか どこがおかしいのか見当もつかないようではちょっとミスっただけで延々全部検証する羽目になるぞ
171 名前:デフォルトの名無しさん mailto:sage [2008/02/27(水) 23:32:55 ] >>163 の内容をソースの最後に追加してないか? Tk.mainloop 以下の記述はウインドウ閉じるまでは実行されないぞ あと、ファイルの表示はまんま >>166 だろ
172 名前:その2/2 Controllerクラス(UIと手続きの関連付け) mailto:sage [2008/02/28(木) 03:53:05 ] #!ruby -Ks require "tk" #やりかた多すぎ # インスタンス生成時に引数で与える方法 btn1=TkButton.new(:command=>proc{puts "hoge"}).pack(:fill=>:x) # configureメソッドで後から変更する方法 btn2=TkButton.new.pack(:fill=>:x) btn2.configure(:command=>proc{puts "fuga"}) # メソッドでProcオブジェクトを与える方法 btn3=TkButton.new.pack(:fill=>:x) btn3.command=proc{ puts "piyo" } # メソッドでブロックを与える方法 btn4=TkButton.new.pack(:fill=>:x) btn4.command{ puts "poko" } TkButton.new{ command(proc{puts "Foo"}) pack(:fill=>:x) } TkButton.new{|btn| btn.command(proc{puts "Bar"}) btn.pack(:fill=>:x) } TkButton.new{ self.command = proc{puts "Baz"} self.pack(:fill=>:x) } Tk.mainloop
173 名前:140 ◆.DxfZ0s0HA [2008/02/28(木) 12:28:32 ] >>170 >Dir.globの引数はglobな文字が入った文字列だがこれじゃ文字列になってない これはどういうことなのでしょうか…? >>171 もちろん最後に追加してるわけじゃないです。
174 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 12:56:09 ] >>170 > glob先のファイルパスの先頭に//が2つあるのが若干謎だが WindowsだからUNCだろ。 >>173 > >Dir.globの引数はglobな文字が入った文字列だがこれじゃ文字列になってない > これはどういうことなのでしょうか…? 文字列が閉じてないということだろうが、ちゃんとコピペするように。 というか、File.openはブロックつきで使え。 filereadもIO#read使えばwhileなんて必要ない。 ちょっとリファレンスくらい読んどけ。 というかこのくらいも説明しない授業ならとる必要ない。
175 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 13:33:18 ] その講義のWebサイト読んでみたんだがC言語をせずにいきなりRubyからやってる感じだな Ruby特有の記述をバリバリ使うんじゃなくて、どの言語でも通用するような書き方で書いてる雰囲気が漂ってくる だから#eachとか使わずwhileで回したりしてるとおもふ
176 名前:140 ◆.DxfZ0s0HA [2008/02/28(木) 13:34:41 ] >>174 すいません! 文字列閉じはここに書き写すときに抜け落ちました。 実際はあるんですが、それでも上手く動作しないんです。 あとブロックつきとか何のことか分からないです…
177 名前:140 ◆.DxfZ0s0HA [2008/02/28(木) 13:41:29 ] www.dotup.org/uploda/www.dotup.org3429.zip.html DL Pass:rep とりあえず現段階のプログラムリストをアップいたします。 どこかおかしい所があれば修正お願いいたします。
178 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 16:03:02 ] >>175 感じも何も、いきなりRubyだ 初めての言語がRubyってどうなんだろうな
179 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 16:14:39 ] Cの知識の上にRubyがこないとギクシャクすると思う。
180 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 16:30:02 ] >>178 別に問題はない きちんとRubyとして教えられてさえいれば CやBASICのようにRubyを教えるというのは最悪な使われ方 流行のスクリプト言語以外に移ったときには確実に戸惑うが、そんなのはどの言語でも同じだしな >>177 とりあえず、変数の意味を考えれ 正確なRubyとは違うが $entry = TkEntry.new() とnewで定義されてる$entryは「特定のTkの部品TkEntry」を指している だから、$entry.valueというのはこのTkEntry(一行入力欄)のvalue(テキスト的内容の値)を指している で、Tkのややこしいとこはデータの取得と再指定が同じ書き方だということだ entry.value = 'ここが入力欄だよ!' と書けばentryの入力欄に「ここが入力欄だよ!」と表示されるし input_text = entry.value と書けば変数input_textに「現在entryに表示されてる文字列」が入る で、何が言いたいかというと、36行目の「text.value」でエラーが起きてる text.valueはtextで示されるTk部品の内容を指してるが、textというTk部品はTkButtonだ とりあえず、ボタンはボタンらしい変数名にしたほうがいいぞ metasearch_button = TkButton.new(:text=>'メタデータから検索') とかいう書き方にすれば、変数の名前見ただけでボタンだってわかるし、 ボタンのvalueにsearch(pattern)の結果を渡すというのがそもそも変だってわかるだろ
181 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 17:10:09 ] require 'tk' label = TkLabel.new(:text=>'検索文字列入力') label.pack(:side=>:top,:fill=>:x) entry = TkEntry.new() entry.value = '検索文字列を入力' entry.pack(:side=>:top,:fill=>:x) metasearch_button = TkButton.new(:text=>'メタデータから検索') metasearch_button.pack(:side=>:top) textsearch_button = TkButton.new(:text=>'本文全体から検索') textsearch_button.pack(:side=>:top) view_button =TkButton.new(:text=>'ファイルの中身を表示') view_button.pack(:side=>:top) scrollbar = TkScrollbar.new() textfield = TkText.new() scrollbar.command ='%s yview'%textfield.path textfield.yscroll = '%s set'%scrollbar.path scrollbar.pack(:side=>:left,:fill=>:y) textfield.pack(:side=>:left,:fill=>:both) def metasearch(pattern) result = Array.new # Dir.glob("//kikyo/home1/saka/pub/data/aozora-portion/*_*_*.txt"){|filename| Dir.glob("data/*_*_*.txt"){|filename| io = File.open(filename) title = io.gets.chomp author = io.gets.chomp io.close result << "#{title} #{author} #{filename}" if author.include?(pattern) } return result end
182 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 17:10:51 ] metasearch_button.command = Proc.new{ pattern = entry.value searchresult = metasearch(pattern) # searchresult's format is [ "title1 author1 filename1", "title2 author2 filename2", ...] textfield.value = searchresult.join("\n") label.text = "#{pattern} は #{searchresult.size}件見つかりました" } def textsearch(pattern) result = Array.new # Dir.glob("//kikyo/home1/saka/pub/data/aozora-portion/*_*_*.txt"){|filename| Dir.glob("data/*_*_*.txt"){|filename| io = File.open(filename) title = io.gets.chomp author = io.gets.chomp file = io.read # 最初の2行はio.gets×2で通り過ぎたあとなのでfileの中身に注意 io.close puts file result << "#{title} #{author} #{filename}" if file.include?(pattern) } return result end textsearch_button.command = Proc.new { textfield.delete('1.0',:end) pattern = entry.value searchresult = textsearch(pattern) textfield.value = searchresult.join("\n") label.text = "#{pattern} は #{searchresult.size}件見つかりました" } #Dir.chdir('//kikyo/home1/saka/pub/data/aozora-portion') Tk.mainloop
183 名前:デフォルトの名無しさん mailto:sage [2008/02/28(木) 17:30:17 ] どんどんレベルが落ちていくな(w クラスとメソッドとかの授業はしてないのかしら ブロックつきメソッドとか
184 名前:140 ◆.DxfZ0s0HA mailto:sage [2008/02/28(木) 20:22:25 ] >>180-182 ご丁寧にありがとうございますm(_ _)m ようやく全ての機能を満たしたプログラムの完成にこぎつけられました。 ちなみにmetasearchのメソッドのところではタイトルと著者名両方から検索しろとのことだったので 「||」を使ったのですがそれで問題ないみたいです。 とにかく変数がやたらと出てきたのがまず混乱の元だったと思います。。 def部分とその他は分けて考えたほうが良さそうですね・・・
185 名前:デフォルトの名無しさん mailto:sage [2008/02/29(金) 00:08:12 ] なにはともあれ、お疲れさん。
186 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 00:34:43 ] 宿題かもーん。
187 名前:デフォルトの名無しさん [2008/03/01(土) 23:12:32 ] ファイル読み込みの一番簡単な方法は、 s = IO.read "foobar.txt" でいいですよね。 書き込みも一発でできないのかな? これくらい? open("foobar.txt", "w") {|f| f.write s}
188 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:18:12 ] ruby unko.rb > foobar.txt
189 名前:デフォルトの名無しさん mailto:sage [2008/03/01(土) 23:52:40 ] まあ、あっても面白いとは思うけどね そんなこと言ったらread()という関数的メソッドがあってもいいし
190 名前:デフォルトの名無しさん mailto:sage [2008/03/02(日) 13:26:35 ] cat foobar.txt > unko.rb
191 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 16:53:38 ] >>188 日本語でおk
192 名前:デフォルトの名無しさん mailto:sage [2008/03/23(日) 17:06:50 ] ルビー う○こ ぽち るび だいなり なんたら ぽち テキスト
193 名前:デフォルトの名無しさん mailto:sage [2008/03/30(日) 13:16:29 ] 過疎
194 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:12:10 ] オブジェクト指向の講義するならRubyなんかよりC++の方がいいんでないの? 教育や学習に限ると、生産性の高さとか全く不要だと思うんだがー
195 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 17:41:59 ] オブジェクト指向の授業をするのにRubyを用いる理由がゼロだというなら、C++を使う理由はマイナスだぜ 何が悲しくてオブジェクト指向の理解にC覚えなきゃいかんのよ
196 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 18:04:09 ] メモリの使い方とか理解するのにいいと思います
197 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 18:07:08 ] Cも覚えられるなら一石二鳥じゃん!
198 名前:デフォルトの名無しさん mailto:sage [2008/03/31(月) 21:14:39 ] 宿題かもーん。
199 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:27:51 ] Rubyで書かれたソースを解析し、 クラス継承図を描くプログラムを完成させなさい。
200 名前:デフォルトの名無しさん mailto:sage [2008/04/02(水) 00:55:25 ] Rubyあんま関係ないな
201 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:48:37 ] 1 から 100 までの数字を出力するプログラム ただし、 3 の倍数のときは数字の変わりに Aho 5 の倍数のときは数字の変わりに Buzz 3 と 5 の倍数のときは数字の変わりに FizzBuzz 8 の倍数のときには数字の変わりに Ahe を出力するプログラムを作成してください。
202 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:50:10 ] 訂正 誤 3 の倍数のときは数字の変わりに Aho 正 3 の倍数と 3 が付く数のときは数字の変わりに Aho
203 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 20:55:18 ] ワンライナーでお願いします
204 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:21:46 ] >>201 d.hatena.ne.jp/gom68/20080314/1205471295
205 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:23:52 ] p '1 2 Aho 4 Buzz Aho 7 Ahe Aho Buzz 11 Aho Aho 14 AhoBuzz Ahe 17 Aho 19 Buzz Aho 22 Aho AhoAhe Buzz 26 Aho 28 29 AhoFizzBuzz Aho AhoAhe Aho Aho AhoBuzz Aho Aho Aho Aho Buzz 41 Aho Aho 44 AhoBuzz 46 47 AhoAhe 49 Buzz
206 名前:デフォルトの名無しさん mailto:sage [2008/04/03(木) 21:26:40 ] >>201 ttp://www.yabooo.org/archives/60
207 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:49:36 ] 過疎り杉だろw
208 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:50:22 ] 安心しろ、九月に入ったらまた某大学の一年生が助けを求めてくるから
209 名前:デフォルトの名無しさん mailto:sage [2008/05/12(月) 21:53:28 ] 講義担当者は骨のある問題頼むぜ ワンライナーで書いてやっからw
210 名前:デフォルトの名無しさん mailto:sage [2008/06/03(火) 17:33:12 ] 宿題かもーん
211 名前:デフォルトの名無しさん mailto:sage [2008/06/05(木) 23:27:43 ] 人いるのかなw いたらお願いします ・英文ファイルを読み込んで、40文字の行(単語が2行にまたがっては駄目) に分割して出力するスクリプトを作成せよ
212 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 00:54:12 ] 前スレで同じような質問をみたな 確か答えはこんな感じだったはず puts ARGF.read.gsub(/\s+/," ").gsub(/(.{0,40})\s/,"\\1\n")
213 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:13:11 ] 毎回思うんだが、この手の課題って「空白をカウントするのかどうか」「改行は文字なのか」って絶対触れられないよな サンプルのテキストファイルを整形しろ、という課題でないと駄目だと思う
214 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:56:25 ] 禁則処理とかダメダメだが、即興のやつ。 re = / (\w+) | (\s+) | ([^\w\s]+) /x ARGF.each do |line| buf = [] line.scan(re) do case when $1 then buf << [$1, :word] when $2 then buf << [$2, :space] when $3 then buf << [$3, :else] else raise Exception, 'must not happen' end end
215 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 01:57:22 ] until buf.empty? tmp = '' while tmp.size <= 40 buf.empty? and break s, type = buf.shift unless tmp.size + s.size > 40 tmp << s else case type when :word buf.unshift [s, type] when :space ; else margin = 40 - tmp.size margin, rest = s[0, margin], s[margin-1..-1] tmp << margin buf.unshift [rest, type] end break end end #while tmp.size <= 40 puts tmp end #buf.empty? end #ARGF.each
216 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:06:12 ] あ゙ー、やっぱ語にタグつけるのが妥当だよな あと、みんな存在を忘れるんだが 's は頻発するから無視したら駄目だぞ
217 名前:デフォルトの名無しさん mailto:sage [2008/06/06(金) 02:51:36 ] ふつーのアポストロフィSだったら/\w+(?:'s)?/で取れるけど、 foos' みたいなのが難しい…質問者じゃないが教えてエロいひと。 あと\w使ってるけど、英文で単語繋いだりするときってアンダーバーよりもむしろハイフンだよなぁ。 /[A-Za-z]+(?:-[A-Za-z]+)*/とかのほうがいいんだろうか。
218 名前:211 mailto:sage [2008/06/06(金) 17:50:27 ] ありがとうございます
219 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 19:25:36 ] [1] 授業単元:データベースと統計処理 [2] 問題文(含コード&リンク):() [3] 環境 [3.1] OS: Linux [3.2] バージョン:ruby 1.8.6 (2007-06-07 patchlevel 36) [i486-linux] [3.3] 言語: Ruby [4] 期限: 今月中 [5] その他の制限: なし ファイルが2つあります。 key.txt:インデックス(キー)となるファイル、名前が羅列してあります。 Mr.A Mr.B Mr.C Mrs.D hoge-hoge san . (数百人程度) data.txt:体重のデータファイル 住所、電話番号、氏名(キー)、体重(値) A市,000-111-1111,Mr.A,81.2 B市,111-222-3333,Mr.B,93.2 . 問題 key.txt に載っている人の体重を data.txt から選び出し、体重の少ない方から 並べて、分布の 50%, 95%, 99% の体重を表示してお終い。体重分布の比較をしたい。 という宿題です。 以上です。
220 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 19:32:35 ] ワンライナーでですか?
221 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 19:39:46 ] >key.txt に載っている人の体重を data.txt から選び出し、体重の少ない方から >並べて、 ここまではやりました><; File.open("data.txt"){|io|io.read}.split($/).map{|line| line.split(",")}.delete_if{|record| !File.open("key.txt"){|io|io.read}.split($/).include?(record[2])}.sort{|x,y| x[3]<=>y[3]}
222 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 22:59:50 ] |io|io が loli に見えて、いい変数使うなあって思った
223 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:28:49 ] >>221 えっ、えっ、 すごいな、並べるところまでできてしまっているような感じ ワンライナーでなくても良いんですが。解読するのに1週間くらい かかりそう。でもすごい。 MS Access で、2つのファイルをテーブルに読み込んで選択クエリー でつなげばできるんですけど、MS Access も入手できない、poor man プログラマーは、なんとかしなければならない。でも、すごいな。
224 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:33:22 ] あ、なんだ、本気だったのね
225 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:41:58 ] もちろん。 最初に data.txt を読み込んで、次に key.txtを読み込んで、ここにkeyが含まれていない 場合は、そのrecord を削除してしまい、残った record を4番目の項でソートする。 そんな感じでしょうか。 Hash とか使うのかなあと思っていたら、使わなくても良いとは ちょっと、びっくり。
226 名前:デフォルトの名無しさん mailto:sage [2008/06/19(木) 23:51:08 ] そのへんを素直に処理するとこうだ # キーを読み込む indexes = File.readlines('key.txt') # キーに含まれるデータだけを格納する配列 data = Array.new # data.txt を1行ごとの配列とし、 File.readlines('data.txt').each do |line| # 1行をコンマで区切り、 a = line.chomp.split(',') # 2要素目(3項目目)が keys.txt に含まれていれば data に登録(最後の数字は数値に変換) data.push([a[0], a[1], a[2], a[3].to_f]) if indexes.include?(a[2]) end # 3要素目(4項目目、つまり体重の数値)で並び替えたものを sorted_data という配列に sorted_data = data.sort_by{|a| a[3]}
227 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 01:55:52 ] 分布忘れちったからソートするところまで自分もやってみる。 >>226 みたいに初心者向けっぽい気づかいを忘れてた。Structとかダメ? #data.txt 一行ぶんの情報を表す構造体クラス class Record < Struct.new(:address, :telephon, :name, :weight) def initialize(*args) args[-1] = Float(args[-1]) super(*args) end end #両ファイルを行ごとの配列にして読み込む entries, data = ["key.txt", "data.txt"].map{|path| File.readlines(path).map{|s| s.chomp } } #コンマ区切りの情報を分けて、構造体にし、 #key.txtにある名前だけというふるいをかけ、体重の値でソート records = data.map{|s| Record.new(*s.chomp.split(',')) }.select{|r| entries[r.name] }.sort_by{|r| r.weight }
228 名前:225 mailto:sage [2008/06/20(金) 08:08:28 ] 寝ている間に宿題ありがとうございました。 >>226 とても分かりやすいです。 data.push([a[0], a[1], a[2], a[3].to_f]) if indexes.include?(a[2]) 後半の if indexes.include? という部分の記述は経験がありません。 勉強します。 >>227 クラスというのは、どういう風に使うのだろうと思っていました。 key.txt は、100の整数倍を取ることにしていますので、小さい方から 並び替えて、順番を付け、順番/データ数を計算すれば必ず50%, 95% 99% のデータがあります。というわけで、ソートができれば、ゴールまで もう少しです。
229 名前:デフォルトの名無しさん mailto:sage [2008/06/20(金) 12:50:55 ] >>226 動いたっぽいです。えーと、 > # キーを読み込む > indexes = File.readlines('key.txt') これだと、改行コードが indexes にひっついたままで、data.txt の検索で 引っかかりませんでした。ここは定石にしたがって i=Files.open("key.txt") indexes=Array.new i.each{|key| indexes << key.chomp} で検索できるようになりました。
230 名前:デフォルトの名無しさん [2008/06/20(金) 17:32:26 ] jp.rubyist.net/RubyKaigi2008/Live.html
231 名前:デフォルトの名無しさん [2008/07/03(木) 10:01:06 ] はいorいいえの質問に答えてもらって結果を 「はいの数が3つ以上なら〜です。」 「はいの数が3つ未満なら〜です。」 というように出すプログラムを作りたいのですが わからなくて… 誰か助けて…
232 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 10:08:47 ] 授業でどんなことしててどのへんがわからんのかくらいは言え 放っておくと授業で全く触れてないもの使った先生が読めないようなプログラムが回答として返ってくるぞ 小学校の夏休みの算数の宿題に高校数学が使われてたらあからさまに不自然だろ
233 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 10:26:20 ] すみません。 授業では基礎的なことしかやっていません。 例えば gets.chomp if printf STDEER というようなものを使ったりしています
234 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 10:27:34 ] >>232 まったくだ questions = ['海は死にますか?', '山は死にますか?', '風はどうですか?', '空もそうですか?'] yes = 0 no = 0 puts '質問にyesかnoで答えてください' questions.each do |q| puts q answer = gets if /^y/i =~ answer then yes = yes + 1 else no = no + 1 end end puts '結果を発表します' puts "yes: #{yes} no: #{no}" if yes < 3 then puts 'YESが3未満のあなたのさだまさし度はまだまだです' else puts 'YESが3以上のあなたのさだまさし度は熱狂的です' end
235 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 10:52:18 ] ありがとうございます! すみませんがputsというのは習ってないのですが、 どんな意味ですか?
236 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 11:05:04 ] questions = ["海は死にますか?\n", "山は死にますか?\n", "風はどうですか?\n", "空もそうですか?\n"] yes = 0 no = 0 print "質問にyesかnoで答えてください\n" questions.each do |q| print q answer = gets if /^y/i =~ answer then yes = yes + 1 else no = no + 1 end end print "結果を発表します\n" print "yes: #{yes} no: #{no}\n" if yes < 3 then print "YESが3未満のあなたのさだまさし度はまだまだです\n" else print "YESが3以上のあなたのさだまさし度は熱狂的です\n" end
237 名前:デフォルトの名無しさん mailto:sage [2008/07/03(木) 11:12:07 ] >>236 あ、これならすべて習っています! 本当にありがとうございます。 助かりました(;_;)
238 名前:デフォルトの名無しさん [2008/07/05(土) 05:27:15 ] >>235 putsは改行も一緒に出力する
239 名前:a ◆Ge868FLoWU [2008/07/12(土) 18:37:49 ] [1] プログラミング言語 [2]パスカルの3角形を印字するプログラムを 書きなさい。ただし、次のプログラムで印字 されるようにプログラムを作成してください。 [3] 環境 [3.1] Vista [3.2] Ruby 1.8.6-2.6 [3.3] Ruby [4] 2008/7/14/8:00 [5] 以下のコードを補完すること print("Enter n: "); n = gets.chomp.to_i if( n>30 || n<0 ) then n = 10 end a = Array.new( n ) a[0] = [1] # 要素が1 の長さ1の配列 # ここでパスカルの3角形を作る # このとき、a[i]ごとに配列を作る # そして、印字 (0..a.length-1).each{ |i| (0..a[i].length-1).each{ |j| print( " ", a[i][j] ) } print( "\n" ) } お願いします。
240 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 18:45:37 ] 0..a.length-1 まぁこういうのは配列操作のイディオムの知識としては必要なんだろうけど。 (´-ω-`)
241 名前:デフォルトの名無しさん mailto:sage [2008/07/12(土) 19:37:25 ] > (0..a.length-1).each{ |i| > (0..a[i].length-1).each{ |j| > print( " ", a[i][j] ) > } > print( "\n" ) > } 吐いた むしろ泣いた メソッド定義…、この授業だと「関数定義」とか呼んでそうだが、 def ナントカ で使い回しできる機能を自分で作ることは習った?
242 名前:a ◆Ge868FLoWU [2008/07/12(土) 19:50:16 ] >241 「関数定義」という言葉は授業で出てきましたが、よくわかりませんでした。
243 名前:a ◆Ge868FLoWU [2008/07/12(土) 20:27:25 ] print("Enter n: "); n = gets.chomp.to_i if( n>30 || n<0 ) then n = 10 end a = Array.new( n ) a[0] = [1] i = 0 j = 0 if j = 0 || j = i then a[ i ][ j ] = 1 else a[ i ][ j ] = a[i-1][j-1]+a[i-1][j] end (0..a.length-1).each{ |i| (0..a[i].length-1).each{ |j| print( " ", a[i][j] ) } print( "\n" ) } 自分なりに考えてみた結果、こうなったんですが、やはりエラーが出ます↓ Enter n: >Exit code: -1073741510 (´;ω;`)
244 名前:デフォルトの名無しさん [2008/07/13(日) 02:39:00 ] 添削: a.each {|i| i.each{|j| print j, " " }} puts inject版とか作ってくれ
245 名前:デフォルトの名無しさん [2008/07/13(日) 02:41:29 ] puts a.flatten.join " " flatten一発ワロタ
246 名前:デフォルトの名無しさん [2008/07/13(日) 02:42:19 ] ああ、列ごとに改行いるのか(´・ω・`) >>244 >>245 じゃダメだな
247 名前:デフォルトの名無しさん [2008/07/13(日) 02:45:29 ] これで a.each {|i| puts i.join(" ")}
248 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 03:07:12 ] コード補完しれって、 a.each すら使わせたくないんじゃないか? 宿題出した先生は本当はCでやりたいんだと
249 名前:デフォルトの名無しさん mailto:sage [2008/07/13(日) 13:44:30 ] コード補完は単に宿題の採点を楽にする為だと思われ
250 名前:デフォルトの名無しさん [2008/07/22(火) 01:08:06 ] あらかじめ配列 ar に 100個のデータが格納される処理が,プログラムの最初で行われているものとする。その部分については書く必要はない。 ただし,ar に格納されたデータのうち負のものは,誤りを含んだデータなので集計しないようにしたい。 for ループで配列の要素を読み込んでいく, その要素がゼロ以上の値を持つデータであれば,データの数を数え上げるとともに,データを加算していく。 ループが終了したら,上の例のように出力する。いずれの行の最後にも改行がある。
251 名前:デフォルトの名無しさん [2008/07/22(火) 01:11:59 ] ar = [ 4.2,29.8,5.1,19.9,3.4,15.3,11.4,1.1,24.1,28.7,0.0,30.2,-0.0,41.2,8.3, 26.8,27.4,0.5,26.2,35.8,33.7,2.0,9.4,36.8,33.2,7.8,21.6,42.7,31.4,9.3, 16.9,9.4,39.6,-0.7,40.4,43.8,26.6,16.1,38.7,4.5,14.1,4.1,7.8,10.5,26.1, 44.9,26.7,17.6,34.2,10.9,33.6,34.2,28.1,40.6,13.7,5.4,13.2,15.8,22.5,36.5, 2.0,13.1,11.2,-1.7,7.4,39.6,29.5,19.7,21.7,16.3,12.3,41.5,-2.8,13.5,40.9, -1.7,26.9,6.7,0.7,43.8,43.0,17.4,6.9,35.4,36.2,27.6,10.6,39.8,6.4,31.3, 13.7,0.9,20.2,6.4,36.0,31.9,36.4,-1.3,-3.2,-3.2] # 以下の部分を適当に補って作成して,下のフォームに記入しなさい。 count = 0 sum = 0.0 for i in ???? # このループの中で if 構文を使ってデータを判定して集計する。 end print ?????? print ?????? あらかじめ配列 ar に 100個のデータが格納される処理が,プログラムの最初で行われているものとする。その部分については書く必要はない。 ただし,ar に格納されたデータのうち負のものは,誤りを含んだデータなので集計しないようにしたい。 for ループで配列の要素を読み込んでいく, その要素がゼロ以上の値を持つデータであれば,データの数を数え上げるとともに,データを加算していく。 ループが終了したら,上の例のように出力する。いずれの行の最後にも改行がある。 例 有効なデータの数 = 13 平均値 = 23
252 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 02:13:05 ] ひとつ問題がある。データ1行目の後ろのほうに -0.0 という値が入ってる。 これをカウントすべきかどうかで平均値が変わる。 計測器によっては -0.0 は 0 から -0.1 を含まない領域の値を示していることがある。 題意からすると、これは負で取り除くべきデータということになる。 しかし、Ruby は 0 も 0.0 も -0.0 も同じゼロとして扱うから、特別に判断処理を入れない限り区別できない。 以下、区別しないスクリプト。 区別したい場合は if のとこを if i >= 0 && i.to_s != '-0.0' then に書き換える。 ar = [ 4.2,29.8,5.1,19.9,3.4,15.3,11.4,1.1,24.1,28.7,0.0,30.2,-0.0,41.2,8.3, 26.8,27.4,0.5,26.2,35.8,33.7,2.0,9.4,36.8,33.2,7.8,21.6,42.7,31.4,9.3, 16.9,9.4,39.6,-0.7,40.4,43.8,26.6,16.1,38.7,4.5,14.1,4.1,7.8,10.5,26.1, 44.9,26.7,17.6,34.2,10.9,33.6,34.2,28.1,40.6,13.7,5.4,13.2,15.8,22.5,36.5, 2.0,13.1,11.2,-1.7,7.4,39.6,29.5,19.7,21.7,16.3,12.3,41.5,-2.8,13.5,40.9, -1.7,26.9,6.7,0.7,43.8,43.0,17.4,6.9,35.4,36.2,27.6,10.6,39.8,6.4,31.3, 13.7,0.9,20.2,6.4,36.0,31.9,36.4,-1.3,-3.2,-3.2] # 以下の部分を適当に補って作成して,下のフォームに記入しなさい。 count = 0 sum = 0.0 for i in ar if i >= 0 then count = count + 1 sum = sum + i end end print "有効なデータの数:#{count}\n" print "平均値:#{sum / count}\n"
253 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 10:03:23 ] > -0 => 0 > (-0).to_s => "0"
254 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 12:07:59 ] >>253 irb> ar.all?{|e| e.is_a?(Float)} true
255 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 12:26:52 ] 揚げ足とってるだけかしらんけど、それがどうしたんだ?
256 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 12:36:31 ] ・ データは全て Float だから Integer の話をしても意味がない ・ -0.0 を to_s すると "-0.0" だから指摘に関連性を見出せない ・ トリビアごっこは他の場所でどうぞ
257 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 12:53:50 ] なるほど、mswin32版では挙動が違うようだ ごめんね
258 名前:デフォルトの名無しさん [2008/07/22(火) 13:50:23 ] >>252 さんありがとうございす。 このプログラムは,次の数列の和が, i がいくつになったときに,与えられた数を超えるのかを調べている。 sum = a1 + a2 + a3 + ... + ai + ... ただしここで,ai は次の式で与えられる数である。 ai = i 3 - 4 * i 2 この計算を行うプログラムの不完全なリストが下にある。次の方針にもとづいて完成させなさい。 引数をコマンドライン引数として受け取り limit という整数に代入する(これはすでに書き込まれている)。 数列の和は sum という変数に加算されていくものとする。 i はループのなかで1ずつ増加するようにする。for ループと違って, iはループ変数でなく,したがって自動的に増加することはないことに注意すること(これをうっかりすると無限ループに陥る!)。 while 文を使って,sum が limit よりも小さい間 ループが回るようにする。 ループを抜けたら,結果を印刷する(これもすでに書きこまれている) 。 limit = ARGV[0].to_i sum = 0 i = 0 while ????? ???? ???? end print "i が", i, "のときに sum は ", limit, " を超えました。\n"
259 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 13:55:16 ] >>258 どうでもいいが、それができないとこれからの課題の全てを全部他人が書かないといけなくなるぞ 小学校2年で九九を全く覚えなかった小学生のように窮地に陥る
260 名前:デフォルトの名無しさん [2008/07/22(火) 13:59:49 ] わたしは情報系の学部ではないのでできなくても問題ありません。 ただ単位だけ欲しいんです(><)
261 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 14:02:03 ] うん、だから、期限までに誰も助けてくれなかったらどうするの?
262 名前:デフォルトの名無しさん [2008/07/22(火) 14:05:27 ] ここは宿題を教えてもらう場ですよね?
263 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 14:07:23 ] ワンライナーにさせてもらえないからみんな苛立ってるんだよw
264 名前:デフォルトの名無しさん mailto:sage [2008/07/22(火) 14:09:34 ] まあそのへんはなんでもいいけど>>258 では回答は来ないだろうな
265 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 00:39:10 ] せめて問題文を理解して間違いなく写して下さい
266 名前:デフォルトの名無しさん [2008/07/23(水) 01:14:19 ] >>265 さん わかりにくくてごめんなさい。 でも問題文はこれですべてです。コピペしてあるので・・・
267 名前:デフォルトの名無しさん [2008/07/23(水) 05:19:11 ] >>266 そういうことじゃなくて朝鮮語で書けってことじゃないか? 俺はRubyは全くわからないが出題の意図は理解出来たぞ。
268 名前:デフォルトの名無しさん [2008/07/23(水) 06:54:20 ] >>258 要するに課題出した側はwhileを使ってほしいんだろうが、 if文でbreakでもいいのでは 限界より計算結果が大きくなったらbreakするプログラムで 式はsum+=100として limitとsumをしっかり初期化すればおk そっちの方がちょっと簡単そう、それを直せば出来る エラーで困ってるならそれで endや条件式の等号が==じゃなくて代入=になってないかとか 確認して、 #if・・・ if 1+1==2とかバグがありそうな行をコメントにして、代わりを書いて実行する バックアップとりまくってアンドゥは1万回でも出来るような環境を利用する 警告出たっけ
269 名前:デフォルトの名無しさん mailto:sage [2008/07/23(水) 10:51:03 ] 初心者の俺が作ってみた limit = ARGV[0].to_i sum = 0 i = 0 while sum <= limit i += 1 sum += i**3 - 4*i**2 end print "i が", i, "のときに sum は ", limit, " を超えました。\n"
270 名前:269 mailto:sage [2008/10/10(金) 21:37:16 ] せっかく解いたのにお礼がこないね (´・ω・`)
271 名前:デフォルトの名無しさん mailto:sage [2008/10/11(土) 16:05:24 ] お礼が言えるようなまともな奴なら、 そもそも宿題を人に聞いたりはしない。 俺らは粛々と利用されておけば良い。
272 名前:デフォルトの名無しさん [2008/10/12(日) 20:29:21 ] お返事遅くなりまして大変申し訳ありません ありがとうございました
273 名前:デフォルトの名無しさん [2008/10/20(月) 13:12:25 ] rubyの知識が皆無なのに課題だされて途方にくれています。 誰か教えていただけると幸いです>< WikipediaAPIをrubyで使いたいのですが(実はこの意味もわかってないです ttp://wikipedia.simpleapi.net/ 上記のページでも紹介されている ttp://d.hatena.ne.jp/ma2/20061026/p1 を参照し、コピペして実行すると c:/ruby/lib ruby/site_ruby/1.8/rubygems/custom_requre.rb:27:in'gem_original_require': no such file to load --sinple_wikipedia_api(LoadError) fro c:/ruby/lib/ruby/site_ruby/1.8/rubygems/custom_requre.rb:27:in'reqire' というエラーが出てきます。 きっと根本的なことが間違っているんですが…どうすれば使えるようになるので しょうか? 何かインストールしたりする必要があるんですかね。 正直参照したページも色々理解できてません。馬鹿ですみません。
274 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 16:08:51 ] >>273 課題の資料読め
275 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 19:35:48 ] 課題に資料ないんですよ。 WikipediaAPIをrubyで使えれるようにするといわれただけなので…
276 名前:デフォルトの名無しさん mailto:sage [2008/10/20(月) 19:55:17 ] >275 エラーメッセージよく読め。 スペルミスしてないか?
277 名前:デフォルトの名無しさん [2008/10/21(火) 09:06:06 ] sinple_wikipedia_api www
278 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:36:03 ] この課題、よそのライブラリとか使ってもいいの? ライブラリ作るのが課題なんじゃないの?
279 名前:デフォルトの名無しさん mailto:sage [2008/10/21(火) 19:39:26 ] 課題本文を見ないことにはなんともな
280 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 00:07:11 ] 質問者の意図は放置してシンプルなのを作ってみた require 'kconv' require 'uri' require 'net/http' def wikipedia(keyword,query={}) query[:keyword] = URI.escape(keyword.toutf8) uri = URI('wikipedia.simpleapi.net/api ') uri.query = query.to_a.map{|a| a.join('=')}.join('&') Net::HTTP.get(uri) end puts wikipedia('ギコ猫',:output=>:html).toeuc # tosjis,etc
281 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 19:40:34 ] >>276 エラーメッセージみても意味不明だったんで聞きました >>276 コピペなんで何がどう間違えてるかわかりませんでした >>277 PCから書き込めず携帯で打って間違えましたw >>278 ライブラリ…?とりあえずできればよそのでも! >>279 課題というか口頭命令でして… >>280 動きました!ありがとうございます!!! 本当に感謝です。でもなんでこんなにシンプル…凄いです…
282 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 20:06:17 ] ・ Rubyに興味はなく、それをやれば終わり ・ それはRubyに関わる始まりに過ぎない どっちなのかによって回答が大幅に違うと思われる
283 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:19:07 ] あと半年ほどやらないと卒業できないんです なので後者ですかね…実際会って教えていただきたいものです
284 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:31:53 ] あーそりゃ色々な意味で無理だ、今年は諦めて来年に回せ というか、このタイミングで ・ 勝手ライブラリの WikipediaAPI 使え ・ 使ったことのない Ruby 使え という指示が出るというのは研究はいったい何なんだろう
285 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:36:57 ] 必修のコンピュータ使用の授業なんじゃないかなあ その割にはいろいろヘンだが… とりあえず、Rubyの入門を適当に学ぶしかないな
286 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:39:39 ] 無理ですか>< 来年社会人なるのでRubyは多分使いませんww 研究は詳しくは言えないのですが涙目です…;;
287 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 21:51:57 ] >>286 「話せない」のなら無理だ 君は自分のやることを理解していない 教官もこんなのが残ってて困ってることだろう
288 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:09:26 ] おっしゃる通りです…全く迷惑だと痛感してます 何をしたいか概略は話せますがこれを見られ特定されるのは痛いので… 先行研究の技術的な部分で教授に言われることをしている感じなんです
289 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:28:45 ] あのあれだ、 「○○の××を用いた場合の△△手法開発における基礎的研究」とか ものすごい注釈つきまくった浅い卒論になる奴だな 3年から本気でやらないからそんな題名レベルで異常に恥ずかしい俺何もやってませんでした的なものになる 履歴書に卒論題名書いたことでむしろ落とされるというレアな経験をお前も体験するんだ とりあえず、本当はRuby関係ないんじゃね? 欲しいのはWikipediaのデータなんじゃないかと
290 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:41:04 ] 就職先はすでに決まりました ついでに女です
291 名前:デフォルトの名無しさん mailto:sage [2008/10/22(水) 22:48:45 ] 小出し君に構うと損するぞ
292 名前:デフォルトの名無しさん mailto:sage [2008/11/01(土) 23:39:41 ] 最近記憶が飛ぶんです
293 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 15:18:56 ] 質問なんですが windowsではプロセスってつかえないっすか?
294 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 15:28:47 ] 使えますが。 Process クラスの使い勝手は Unix と違ってくるかもしれん。
295 名前:デフォルトの名無しさん mailto:sage [2008/11/06(木) 21:55:11 ] ありがとうございます。よく調べてみます!
296 名前:デフォルトの名無しさん mailto:sage [2008/11/08(土) 23:05:21 ] upload.fam.cx/cgi-bin/img-box/5ic81107014301.jpg
297 名前:デフォルトの名無しさん [2008/12/24(水) 14:58:22 ] test
298 名前:デフォルトの名無しさん mailto:sage [2008/12/30(火) 03:01:09 ] >>272 もういないだろうけど小●先生はきっとここ見てると思うよ
299 名前:デフォルトの名無しさん [2009/01/01(木) 11:48:51 ] 299
300 名前:デフォルトの名無しさん [2009/01/01(木) 11:49:35 ] 300
301 名前: 【小吉】 【1044円】 [2009/01/01(木) 11:52:07 ] ○ /⌒\ (__) \●/(__)/⌒\ ∩ ( ・ω・ )\●/ あけましておめでとうございます Y  ̄ ||y||  ̄`''φ Lノ /ニ|| ! ソ > 乂/ノ ハ ヽー´ `ー-、__| ことしもよろしくね☆
302 名前:デフォルトの名無しさん [2009/01/04(日) 23:07:19 ] 100マス計算をするプログラムを書いてください。 プログラムがランダムに出題し、人間が100個の マスに回答を入力し、確認ボタンを押すと 全問正解なら回答にかかった時間を表示して終了。 間違った場合は間違った場所にカーソルが止まり、 別の値が入力されるまで待ちます。 横10個、縦10個の数字は各々11〜99までの乱数、 演算は +,-,x のみでよいです。 よろしくおねがいします。
303 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 00:33:25 ] >>302 全然宿題じゃないだろこれw 仕事頼むなら金出せよ
304 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:13:00 ] >>302 ttp://www.imymode.com/hp/bbs/index.cgi?mode=view&no=35 作成方法について 作り方を公開する予定は今のところないのですが、実際プログラムは驚くほど簡単です。 10×10のマスにランダムに数字を入れて、それを計算と会っているかどうかチェックするだけです。プログラムを始めたばかりの方の勉強として作るにはちょうどいいかもしれません。 がんばってくださいね。
305 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:14:09 ] おまいらそんなレスでお茶を濁していていいのか Python宿題スレでも見て来い
306 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 01:19:34 ] この百マス計算で、わが娘はギュウギュウ絞られ、はじめは7分とか8分かかって指折り数えながら問題を解いていましたが、この紙を200枚近く消化することで最近は3分あまりで問題を解くようになりました。 自分の小学生時代を思い起こせば、無駄な労力と思います。こんなことをしなくても足し算の答えなんて変わらないのだから、その分少しでも余分に遊んで暮らしたいと小学生なら思うことでしょう。 ところが大人になって、九九の答えより足し算の答えのほうが出しにくいことを悟ってからは、人間多少はこんな理不尽な労働もしておく必要があったことを少しはわかりました。 第一の試練は、人生最大の難関だった就職試験に「クレペリン検査」が含まれていたことです。 10分ほどの時間を限られて、数字の列をただ足していくテストですが、私は1分で50ほどしか足し算ができず、本当は正答数より仕事上のムラや能率を調べるテストなはずですが、自分の能力の低さを改めて思い知らされることになりました。 それに追い討ちをかけるように、検査の間の休息時間に試験官がこんなことを言い出したのです。 「この検査ねえ。私は長年やっているけれども一人だけ、いたね。1分間で百問全部できる人が。傾向も何もわかったものじゃない。まあ、能力が高いといえばそれまでなんだけどね。」 試験中にそんなことを言い出す試験官もけっこう珍しいとは思います。 その後、私の受験勉強にクレペリン検査対策が含まれたのは言うまでもありません。ちょっとやっておけば少なくともうろたえないで済みます。 第二の試練は、「脳を鍛える大人のDSトレーニング」の登場です。 私も鍛えられなければボケる歳になってしまいました。
307 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 08:24:08 ] ttp://ja.wikipedia.org/wiki/%E5%86%85%E7%94%B0%E3%82%AF%E3%83%AC%E3%83%9A%E3%83%AA%E3%83%B3%E7%B2%BE%E7%A5%9E%E6%A4%9C%E6%9F%BB いじめとかそういう思い出がいつのまにか美化されるようなのと似た話だな。
308 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 08:33:29 ] ttp://ja.wikipedia.org/wiki/%E3%82%A8%E3%83%9F%E3%83%BC%E3%83%AB%E3%83%BB%E3%82%AF%E3%83%AC%E3%83%9A%E3%83%AA%E3%83%B3 老人にボケが発生するのは 死を待つ苦しみを和らげるためらしい
309 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 10:19:00 ] require 'tk' class Drill100 PACKOPT = {:side=>:left,:fill=>:both,:expand=>true} PACKOPTF = {:side=>:top,:fill=>:both,:expand=>true} CELLOPT = {:width=>3} def initialize(root) @root = root @root.title = '100マス計算' @size,@min,@max = ( $test ? [2,0,9] : [10,11,99] ) @column,@row,@cells = [],[],[] f = TkFrame.new(@root).pack(PACKOPTF) @reset = TkButton.new(f,:text=>'切替',:command=>proc{init}).pack(:side=>:left) @start = TkButton.new(f,:text=>'開始',:command=>proc{start}).pack(:side=>:left) f = TkFrame.new(@root).pack(PACKOPTF) @op = TkLabel.new(f,CELLOPT).pack(PACKOPT) @size.times {|i| @column << TkLabel.new(f,CELLOPT).pack(PACKOPT) } @size.times do |i| f = TkFrame.new(@root).pack(PACKOPTF) @row << TkLabel.new(f,CELLOPT).pack(PACKOPT) @cells << [] @size.times {|j| @cells[i] << TkEntry.new(f,CELLOPT).pack(PACKOPT) } end end def init @reset.state = :normal @start.configure(:text=>'開始',:command=>proc{start}) @op.text = {'+'=>'-','-'=>'*','*'=>'+'}[@op.text] || '+' [@column,@row].each {|labels| labels.each {|l| l.text = random(@min,@max).to_s }} @cells.each {|line| line.each {|cell| cell.state = :disabled }} end # つづく
310 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 10:20:05 ] # つづき def start @reset.state = :disabled @start.configure(:text=>'確認',:command=>proc{check}) @cells.each {|line| line.each {|cell| cell.state = :normal ; cell.value = '' }} @cells[0][0].focus @starttime = Time.now end def check @endtime = Time.now @cells.each_with_index do |line,r| line.each_with_index do |cell,c| y,x = @row[r].text.to_i,@column[c].text.to_i case @op.text when '+' then answer = y + x when '-' then answer = y - x when '*' then answer = y * x end ( cell.focus ; Tk.bell ; return ) if answer != cell.value.to_i end end time = @endtime - @starttime TkDialog.new(@root,:buttons=>[:OK],:message=>"#{time.to_i}秒かかりました") init end def random(min,max) ; rand(max - min + 1) + min ; end def run ; init ; Tk.mainloop ; end end # $test = true Drill100.new(Tk.root).run
311 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 10:52:54 ] # 修正 # >>309 initialize の中ほど @reset = TkButton.new(f,:text=>'切替',:command=>proc{init}).pack(PACKOPT) @start = TkButton.new(f,:text=>'開始',:command=>proc{start}).pack(PACKOPT) # >>310 def check time = Time.now - @starttime op = {'+'=>proc{|y,x| y+x},'-'=>proc{|y,x| y-x},'*'=>proc{|y,x| y*x}}[@op.text] @cells.each_with_index do |line,r| line.each_with_index do |cell,c| answer = op.call(@row[r].text.to_i,@column[c].text.to_i) ( cell.focus ; Tk.bell ; return ) if answer != cell.value.to_i end end TkDialog.new(@root,:title=>'全問正解',:buttons=>[:OK],:message=>"#{time.to_i}秒かかりました") init end
312 名前:デフォルトの名無しさん mailto:sage [2009/01/05(月) 11:12:45 ] もしかして減算は上の値から左の値を引くのかな だったらcheckメソッド内の '-'=>proc{|y,x| y-x} を {|y,x| x-y} に修正
313 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 02:37:04 ] 生きるだけなら人の一生は長い。 しかしそれ以外するには時間が足りない。 うまくなりたいなら毎日やる。 ひとつだけならまだしも 二つとなるとハードルは一気に上がる。 そしてそのことを悩むとなれば三つとなりまたあがる。 ならばいっその事悩まずに やってしまえばいい。 一人今、この体での一度きりの人生。 悔いを残すくらいなら今を生きて 今できることをすればいい。 焦っても仕方のないことだから 歩いていこうどこまでも。 「人生は何かを成し遂げるには短すぎるものだが、何もしないとすれば長すぎる」 孔子
314 名前:デフォルトの名無しさん mailto:sage [2009/01/06(火) 20:37:16 ] >>313 ttp://www.iknow.co.jp/lists/1244
315 名前:デフォルトの名無しさん [2009/01/11(日) 02:03:14 ] RubyでGUIアプリケーションは作成可能でしょうか? 友人からは、GUIアプリケーションは VC++、VBとかじゃないと無理と聞いたのですが・・・
316 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 02:07:26 ] 可能か不可能かだけを答えるなら、可能。
317 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 03:46:03 ] いろいろあるよ ttp://jp.rubyist.net/magazine/?0001-RubyGUI#l1
318 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 07:31:51 ] ていうか初心者スレでロクに相手されなかったからってマルチはよくねえな ボタンなんかをくっつけてマウス操作に対応させることはできるが、GUIをメインに作る言語よりは絶対に劣る ビジュアルなんとかの言語はGUI作成のフォローが半端ないから作るのが簡単 RubyでGUIをやるということは「わざわざ難しいやり方でイマイチなものを手間隙かけて作る」ことに他ならない
319 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 07:52:21 ] >>318 馬鹿ですね わかります
320 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:19:41 ] >>315 >VC++、VBとかじゃないと無理と聞いたのですが・・・ 釣りだろうけど そんなことはないよ ttp://wxpython.org/screenshots.php
321 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 09:37:13 ] 「できる」と「やりやすい」の間には深く暗い溝がある 下手に「できる」と言わないほうがいいこともあるのさ 正確であることがいいこととは限らない
322 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:45:16 ] 無理か無理じゃないかの溝のほうがでっかいけどな
323 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 10:53:29 ] つか、Aというプログラミング言語で可能なことがBというプログラミング言語で可能かどうかという問いには 多くの場合「そりゃやろうと思えば不可能じゃないけどぉ…」という留保つきの回答がほとんどだろ
324 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:33:38 ] Pythonは楽だけどRubyではしんどい VBは楽で良いと思う C++が楽というのは同意しかねる C#の間違いじゃないのか
325 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 11:47:44 ] 他人にやらせるのが一番いいよ
326 名前:デフォルトの名無しさん mailto:sage [2009/01/11(日) 20:05:38 ] japanese.joelonsoftware.com/uibook/chapters/6.html
327 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 15:15:14 ] 宿題じゃないですが、これより強いジャンンケン戦略作れます? www.ceres.dti.ne.jp/~kaga/strategy.txt
328 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:06:38 ] / /::// : : : : : : : i: : : ∧\: : : : :∧: :\ : : : : : : : : : ヽ.: : :|ム: : : : : : : : : : : / /://.: : : : : : :i : |: : : : ∧: ヘ: : : :∧: ::ム._: : : : : : : : :.l: : :|ム!: : : : : : : : : : . / / .|.: : : : : : : |: :ム、: : ∧.ヘ ><´ ̄\ヘ`,ハ: : ム、 ハ: : |ム!: : : : : : : : : : ,'. |: : :i: : :i: : ハ,斗―.、: :∧ ヘ r',ィ==寸ュ、_,ハ: : i: |: : |: : |ム!: : : : : : : : : : i | :|: i : : i: : :ヘ、〉zュ、\::ヘ. .\ '´ f⌒付ハヘ〉!|: |: |: : 「.ヽ!ム!: : : : : : : : : : | |: |: i : : i: : : : r{.「⌒ヽ \ヘ. ` .kr'...::i:::::!′|: |: | : fい lム!: : : : : : : : : : : | .| ∧ヘ: : :ヘ: : : N kr'::ム ヽ Vし'ク;ソ .|: |: |: / .メム!: : : : : : : : : : : . N ヽ \: :\:`ヽ. Vし! `ー " ノ ル' / |/ Nム: : : : : : : : : : : . '. \ \: :\∧ゝノ. . |: /.i .|. | Vム: : : : : : : : : : . \|丶: : ∧. ` __ ,イ レi i. | .| i.Nム: : : : : : : : : : |: :i: : 「`ヽ. ヽ ) / | i i. | .| i.|. Vム: : : : : : : : |: :i: : | .,≧、 / | i i. | .| i.| Vム: : : : : : : : -‐-、j: :i: :i.| / } ` rュ-1´ ,ィ| i i .L__ | i.| Vム: : : : : : : . { ヽi i.|‐/ .ノ_,ィj .>! r<´ | i i .! `ヽ L__ Vム: : : : : : `ヾ. └-イ / / ト、_}-{_ァ|. | i i | 、丶ヽy'¨ ̄`Vム__: : : : 受験生の皆さん / | `ー-‐'´ ̄ ̄`Y. .〈. ノ≧{:::{≦.、 | i i |. \/ }ム}. 〉 センター試験 . /. |、 、____,斗-!、/.::/:/:/|「|:∧:::〉| i i |、 >' ./ム! / 頑張って下さい { | ノ―〈/::/.:||::!:::::V. | i i |/ ./ム! /
329 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:17:36 ] >>327 これより強い戦略ってどういう意味で言ってるの?
330 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:30:54 ] >>329 よく考えたらじゃんけんで強い戦略なんてないですよね? class NoStrategy < Strategy def nextHand Hand.new.getHand(rand(3)) end end として、このNoStrategyに対して常に5割を上回る勝率が出せる戦略ってあるのでしょうか? さしずめ今回の問題に関しては、WinningStrategyに対してProbStrategyより高い勝率で勝てる 戦略って感じでしょうか。
331 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 16:38:32 ] >>330 ランダムに出す
332 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:18:56 ] 33.33%以上はみり
333 名前:デフォルトの名無しさん mailto:sage [2009/01/17(土) 21:19:54 ] 33.33%以上は33.333%
334 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 09:24:33 ] 人間は、直前に出した手と同じ手はあまり出さなかったりするようなクセがあるので、 人間がじゃんけんに出す手はランダムとは限らない。つまり、繰り返す場合は出してくる 手をバイグラムとかで分析して対応すれば期待値以上いく可能性はある。 というかざっと見た感じ、historyってのでなんかそれらしいことやってるね。
335 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 10:01:16 ] 一番咄嗟に出やすいのがグーだと言われている その次がパー 意識して出さないと出ないのがチョキ
336 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 10:09:08 ] L字のチョキはパーより上
337 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 10:51:37 ] >>335 「グーで負けた。グーで負けるというのは、保守的なために敗北したかのような、苦い後悔が残るものだ。 」
338 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 11:26:54 ] サザエさんが番組の終わりに出す手は グー 282回 チョキ 308回 パー 283回 (1991-2009) これ豆知識な
339 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:08:26 ] 宿題ではなく、Hobby です。カレンダーデータを10年程度出力したいので以下のスクリプト を作りました。コードと出力が美しくありません。 require 'date' day=Date.new(2009,1,18) for i in 1..5000 day=day.next case day.wday when 0 then printf("%s","日,") when 1 then printf("%s","月,") when 2 then printf("%s","火,") # 中略 end puts day.strftime("%Y%m%d,%Y,%b,%m月,%d,%a,%w,%W") end day.wday から月、火を出力するコードが冗長です。rubyらしくしたい。 月や日の表示がいつも2桁になります。01月ではなく1月にしたい。以上です。
340 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:11:45 ] Rubyらしくって話ならforはあまりというかほとんど使わない。
341 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:20:01 ] カレンダーは定番で安定だな > day.wday から月、火を出力するコードが冗長です。 そういうときは、たとえばHashを使う 今回に限っては配列でもいいけれど require 'date' weekdays = {0 => '日', 1 => '月', 2 => '火',3 => '水', 4 => '木', 5 => '金', 6 => '土' } puts weekdays[Date.today.wday]
342 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:44:16 ] >>339 require 'date' day = Date.new(2009,1,18) last = Date.new(day.year+1, day.month, day.mday) weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'} while day < last do wday = weekdays[day.wday] puts day.strftime("%Y%m%d,%Y,%b,%-m月,%-d,#{wday},%w,%W") day = day.next end もしかしたら、%-m や %-d は動作しないかもしれない
343 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:46:02 ] >>340 そうですね。 5000.times とかで書けるのでしょうか。
344 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 20:56:54 ] >>342 動きました。ちゃあんと1桁表示、2桁表示、自動的に変わります。 あ、ありがとうございました。なんというスピード。驚きました。
345 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:00:52 ] 最悪で12回のメソッド呼び出し->O(1) が何回もだもんなぁ。
346 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:30:55 ] wday = '日月火水木金土'[day.wday*2,2] たぶんソースが2バイトにならないエンコード(UTF-8とか)だとだめ
347 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:32:15 ] >>346 測定可能な負荷または速度の差は発生しないか、たぶんハッシュのほうが誤差レベルで速い
348 名前:デフォルトの名無しさん [2009/01/20(火) 22:41:20 ] >>346 これでよくねえ?ハッシュにする意味がわからんw いやまあ結果的に全然問題ないし、もっと一般的な話なんだろうけど puts %w[日 月 火 水 木 金 土][Date.today.wday]
349 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:45:35 ] >>342 さんのをちょいじってみた。 Date#uptoがあるとさっき知ったもので。 require 'date' y, m, d = 2009, 1, 18 weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'} Date.new(y, m, d).upto Date.new(y.succ, m, d.pred) do |day| puts day.strftime("%Y%m%d,%Y,%b,%-m月,%-d,#{weekdays[day.wday]},%w,%W") end
350 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:49:56 ] >>348 自分が書き捨てるなら配列を使う ただ、これは「たまたま」 Date#wday の返り値が0から始まって抜けなく6まで連続していたから可能な きわめて特殊な事例に過ぎないと考える 「case文が単純なルックアップしかしないのになんか冗長」という人に教えるのは {条件 => 値} の Hashであるべきだと思うよ
351 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:53:46 ] 0〜6ってシンボルになるんかな
352 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:59:07 ] >>351 うんにゃ、Integerクラスのオブジェクト、つまりただの整数 RubyのHashのキーは、あらゆるオブジェクトを指定できる 文字列しか指定できないようなイメージがどうしても付きまとうが、本当は何でもいい あとで変化してしまうようなものを指定するとキー名では取り出せなくなるけどな
353 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:19:25 ] wdayが0-6を返すのもmonが0-11なのも、「たまたま」でも「特殊」でもないよ Cの構造体「struct tm」がベース、配列を使う事を前提に0からの連番になってる こればどの言語でもほぼ共通してるからフツーは>>348 風の記述になる
354 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:21:33 ] case → コレクションの変換というカテゴリにおいては「たまたま」でも間違ってないと思う ここで配列じゃツブシが利かんわけで、宿題スレにはいまいち不向き
355 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:26:11 ] ロケールを適切にすればstrftimeで日本語の曜日が出てこないかね
356 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 23:57:20 ] >>355 あいにく、rubyの標準実装ではハードコーディングされているので_
357 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 00:07:37 ] cronで動かしたときだけシェルスクリプト中のなんかどっかの何かが違ってうまくいかん、という めんどくさいデバッグの経験があると、ロケールに頼る出力は嫌がるね
358 名前:デフォルトの名無しさん [2009/01/25(日) 18:16:41 ] オリジナルのrubyプログラムを作成しなさい。繰り返しや条件分岐といった プログラミングの基本要素が含まれていればどんなものでも構いません。 ただし、20行以上の長さである事と、口頭試問によるプログラムの説明 をしてもらいます。 という課題が今日でたのですが、期限が明日までです。。。 誰か助けてください。
359 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:18:22 ] > 課題が今日でたのですが、期限が明日までです うひゅ まあどんなものでもいいというのなら、何かかんたんなゲームでも作ればいいんじゃね 説明もしやすかろう
360 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:21:16 ] プログラムはまあ出来るけど >口頭試問によるプログラムの説明 こっちは助けられないぜ? 課題は簡単だから、とりあえずチュートリアル読んで自分で理解しないと 口頭試問はパスできないと思う。 www1.tf.chiba-u.jp/~shin/tutorial/index.rb
361 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:26:52 ] 他愛のないゲームは割とお勧めだが、 意外とめんどいのでじゃんけんはやめたほうがいいとアドバイスはしておく 自作の場合は「これなんでここをこういうふうにしたの?」に答えられないとかありえないからな 他人が作ったのではどうにもなるまい
362 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:31:21 ] これはいい課題だなw
363 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:34:51 ] 下手に1週間とか期間長くすると ファイル4つくらいでダウンローダー作ってくる空気読めない昔の俺みたいなのが混じるからな 1日でちっちゃいの適当に作れというのは妥当だ てか、授業受けてて「あーじゃあこれでこういうプログラム作るとこんな動きするんだなー」とか思わなかったのかね 思わないんだとしたらどんなもの作ろうかさっぱり思いつかない可能性はあるな
364 名前:デフォルトの名無しさん [2009/01/25(日) 18:41:13 ] www1.tf.chiba-u.jp/~shin/tutorial/index.rb ってどうやって見るんですか?文字化けしてわけが分かりません。。 質問ばかりで申し訳ない
365 名前:デフォルトの名無しさん [2009/01/25(日) 18:42:22 ] >>364 use firefox
366 名前:デフォルトの名無しさん [2009/01/25(日) 18:43:48 ] よく初心者が始める数当てゲームがいいんじゃないの?
367 名前:デフォルトの名無しさん [2009/01/25(日) 18:44:59 ] なべあつ問題か、FizzBuzzでもいいのかもだが、 20行以上になるかな?
368 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:47:58 ] まあどんなプログラムを書くかも問題だが とりあえず授業で出てきた関数/メソッド/構文を使うほうがいいぞ そうでないと授業受けてないのがバレてツッコミが厳しくなることは容易に想像できる
369 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 18:48:59 ] >>364 どのブラウザか知らないが、 大抵は[表示]-[エンコード]みたいなメニューがあるから、そこでエンコードをUnicode(UTF-8)にする ってかIE7、Firefox3、Opera9全部で正常に表示されたが
370 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:27:46 ] >>368 関数って何ですか?
371 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 19:41:19 ] 授業で使ってない言葉使うのはまずいよね
372 名前:デフォルトの名無しさん [2009/01/25(日) 19:53:45 ] >>370 hage("test"); ↑ この hage って奴が関数 puts 1234.to_s ↑ これも関数だけどRubyでは この . の後のつくのはメソッドという
373 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:04:42 ] >>372 Rubyには関数は存在できない
374 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:09:09 ] hage()もメソッドなんだけど便宜的に関数と呼ばれたりする それを許さず関数とか言った途端に怒り出すのは狂信者
375 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:12:29 ] 煽りにも気付かずに頑なに関数と言い放つ人をいじめたくなるのは分からんでもない
376 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:14:27 ] 「クラスやメソッド」という言葉にそれ以外のものが混じる余地がないのがそれこそ普通だと思う
377 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:20:32 ] 授業聴いてなかったと思われるから不利
378 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:25:50 ] 出席すらしてないかも。
379 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 20:26:21 ] 「宿題でこんなん作りましたがどうですか」でない時点で匙は投げてるだろ
380 名前:デフォルトの名無しさん [2009/01/25(日) 20:41:20 ] いま、チュートリアル見ながらやってます。ありがとうございました。 また、途中で分からなくなったらよろしくお願いします。
381 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 21:33:28 ] オリジナルのrubyプログラムを作成しなさい。繰り返しや条件分岐といった プログラミングの基本要素が含まれていればどんなものでも構いません。 ただし、20行以上の長さである事と、口頭試問によるプログラムの説明 をしてもらいます。 という課題が今日でたのですが、期限が明日までです。。。 誰か助けてください。
382 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 21:46:28 ] 課題が思いつかないなら 数あてゲームや簡単なフィルタ(ファイルからのキーワード検索や大文字小文字変換とか) でいいんじゃないの? 丸ごと考えろというならこんなところで聞いてないで適当にググって見つけた ソースをコピベしたほうが早い
383 名前:デフォルトの名無しさん [2009/01/25(日) 22:26:59 ] while true
384 名前:デフォルトの名無しさん mailto:sage [2009/01/25(日) 23:51:57 ] [1] 授業単元: スクリプトプログラミング [2] 問題文:curses及びファイル等機能拡張を実装したLifegameを作成しなさい。 [3] 環境 [3.1] OS:Mac OS X Leopard [3.2] バージョン: Ruby 1.8.6 [3.3] 言語: Ruby [4] 期限: 2009年01月27日21:00まで [5] その他の制限: 特になし
385 名前:デフォルトの名無しさん [2009/01/25(日) 23:53:00 ] require 'win32ole' s = WIN32OLE.new('SAPI.SpVoice') vs = s.GetVoices naoko = nil (0 .. vs.Count-1).each do |i| id = vs.Item(i).Id puts id if (id.match(/LHNAOKO/)) naoko = vs.Item(i) end end s.Voice = naoko s.Rate = 5 s.Speak('課題が思いつかないなら', 2) s.Speak('数あてゲームや簡単なフィルタ', 2) s.Speak('(ファイルからのキーワード検索や大文字小文字変換とか)', 2) s.Speak('でいいんじゃないの?', 2) s.Speak('丸ごと考えろというなら', 2) s.Speak('こんなところで聞いてないで', 2) s.Speak('適当にググって見つけた', 2) s.Speak('ソースをコピベしたほうが早い', 2)
386 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 00:45:46 ] 女性の声はやめてほしいw
387 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 00:57:07 ] >>384 機能拡張前のLifegameのソースよこせ
388 名前:デフォルトの名無しさん [2009/01/26(月) 01:11:47 ] metatoys.org/propella/lifeGame/#ruby
389 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 01:49:08 ] ライフゲームくらいになると授業とは無関係に作ることができるから、 授業で作ったベースのものがないと頓珍漢なクオリティのしかできあがらないな
390 名前:384 ◆tu89IYB51k mailto:sage [2009/01/26(月) 03:40:37 ] kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8732.txt 遅くなってすいませんベースです、どうもCursesのほうは実装されているようにも見えるのですが 恥ずかしながら授業にほとんど出てなかったため内容がほとんど理解できてません・・・ 本当に申し訳ありませんがそれも含めてどうかお願いします
391 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 03:52:42 ] 素直にCで授業やれよ、と思う
392 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 04:21:25 ] >[2] 問題文:curses及びファイル等機能拡張を実装したLifegameを作成しなさい。 これだけ読んでも、何作りゃいいのかさっぱりわからんのだが ファイルをどうすりゃいいの?
393 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 04:42:07 ] # # 初期盤面 # def init() $field=[ [1,0,0,0,0,0,1,0,0,0], [1,0,0,1,0,0,0,0,1,0], [0,0,1,1,0,0,1,0,0,0], [0,0,0,1,0,1,0,0,0,0], [0,0,0,1,0,0,0,1,0,0], [0,0,0,0,0,0,0,0,1,0], [0,0,0,0,0,0,0,0,1,0], [0,0,0,0,1,1,0,0,1,0], [0,1,0,0,1,0,0,0,0,0], [0,0,0,0,1,0,0,0,1,0]] # 盤面の大きさの設定(H=行数、W=幅) $H=$field.size $W=$field[0].size $FP=open("lifegame.log","w") end
394 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 04:42:56 ] def savefield() for line in 0..$H-1 for col in 0..$W-1 $FP.print($field[line][col]==1?"o":"_") end $FP.print("\n") end end ############## # # MAIN # init() createtmp() init_screen() # curses 画面初期化 begin crmode # リターンキーなしで文字入力を許す for generation in 1..20 printfield() $FP.print("Generation:",generation,"\n") savefield() nextgeneration() copynext() c=getch() printf("[%x,%c]",c,c) if( c==97 || c==0x1B )then; break; end end ensure close_screen() # 画面を閉じる $FP.close end
395 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 04:46:34 ] 出題者の書きたかったことの意図を汲んで、世代のログをファイルに保存してみた 正直、この書き方は気持ち悪くて仕方ない Rubyでなくてもいい書き方をRubyでやる意味って確かにないよな 元のファイルの最初の init()…end を>>393 で置き換えて、 最後の ############## # # # MAIN # のとこを>>394 で置き換える ############## の前にdef savefield()…endがある状態
396 名前:384 ◆tu89IYB51k mailto:sage [2009/01/26(月) 16:41:46 ] 回答ありがとうございます、レスが遅くなってすいません。>>395 を参考に置き換えてみたのですが ruby: invalid option -1 (-h will show valid options) (RuntimeError) とエラーが出て実行できません。たびたび申し訳ありませんがこのエラーの解決方法を教えてもらえませんか? どうかよろしくお願いします
397 名前:デフォルトの名無しさん mailto:sage [2009/01/26(月) 16:50:46 ] >>396 ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8737.txt
398 名前:384 ◆tu89IYB51k mailto:sage [2009/01/26(月) 17:53:38 ] すいません、自分で統合してみたファイルのurlをつけるのを忘れてました ttp://kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8736.txt あと>>397 さんのを試したところエラーは表示されなくなりましたが Lifegameが表示されなくなってしまいました
399 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:01:03 ] > 恥ずかしながら授業にほとんど出てなかったため ご両親はお前のために命を削って働いて 決して安くない授業料を捻出しているのに、 お前ときたら……。
400 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:42:46 ] 親の教育のせいだね
401 名前:デフォルトの名無しさん mailto:sage [2009/01/27(火) 14:48:07 ] まあ半分くらいはそうだな
402 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 04:23:49 ] ttp://www.nikoli.co.jp/ja/puzzles/slitherlink/ 1.「スリザーリンク」を解くプログラムを書いてください 2.適当な難易度で問題を出題するプログラムを書いてください
403 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 08:15:04 ] なんでよりによってスリリンなんだ
404 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 08:49:58 ] そんな簡単に問題作れるなら俺だって問題送って小遣い稼ぎしたい
405 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 08:53:06 ] 問題作成してお金になるなら俺だって小遣い稼ぎたい
406 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:13:38 ] ttp://pc11.2ch.net/test/read.cgi/tech/1153585095/751 > 751 名前:デフォルトの名無しさん [sage] 投稿日:2009/01/27(火) 18:46:14 > ttp://www.nikoli.co.jp/ja/puzzles/slitherlink/ > 1.「スリザーリンク」を解くプログラムを書いてください > 2.適当な難易度で問題を出題するプログラムを書いてください
407 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 09:47:04 ] これは酷い
408 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 19:23:55 ] PuzzleManiakであるなあ。嵌ってるわ 起点への一本道をランダムに作るのはいいとして、どの程度ヒントを出すかが難しいな。 3と0だけ全部表示しちまって、あとは適当にランダムで表示する枠選べば適当な難易度になるかな? 面白い課題だけど実装案出すだけでもキツそうだなw
409 名前:デフォルトの名無しさん [2009/01/29(木) 21:52:02 ] Ruby、Perl、Pythonの違いをレポートで比較しないといけないんですが、違いを教えてください。
410 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:03:13 ] >>409 Perlスレで聞け
411 名前:デフォルトの名無しさん [2009/01/29(木) 22:04:53 ] >>410 え、なんで?
412 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:11:46 ] 的確なアドバイスだな っていうか、Perlはバージョンによってアホみたいに内容が違うからPerlから攻めたほうが吉
413 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:43:21 ] Perlの質問スレないもん><
414 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:47:22 ] このへん? pc11.2ch.net/test/read.cgi/tech/1232206156/
415 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:56:37 ] >>408 ヒントの出し方が悪いと答えが二通り以上考えられたりするんだよね
416 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 22:59:53 ] >>415 スリザーリンクは回答は1通りです
417 名前:デフォルトの名無しさん mailto:sage [2009/01/29(木) 23:28:33 ] >>416 一通りにならないダメ問題が生成されるってことでしょ
418 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 00:54:54 ] 何にせよ、ここでは解決しないって事がわかったのは良い経験
419 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 01:06:05 ] >>402 1だけ書いてみた kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/8784.txt 2は知らん
420 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 04:17:42 ] >>409 どれもあんまり新しい記事じじゃないが matzがPythonについて語ってるの jp.rubyist.net/magazine/?0008-Legwork ラリーウォールがRubyについても一部語っている slashdot.jp/developers/article.pl?sid=03/03/06/1041206 その後に企画されたmatzへのインタビュー slashdot.jp/developers/article.pl?sid=03/03/14/0258247
421 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 09:12:42 ] >>419 狼!ありがとうございます!! Pythonスレより先に解答が出るとは思いませんでした!!!
422 名前:デフォルトの名無しさん mailto:sage [2009/01/30(金) 10:59:45 ] >>419 の罪は重い
423 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 02:02:44 ] 馬鹿なの? 死ぬの?
424 名前:デフォルトの名無しさん [2009/01/31(土) 04:50:43 ] Ruby1.9.1キタ――――――(゚∀゚)――――――!!
425 名前:デフォルトの名無しさん mailto:sage [2009/01/31(土) 23:02:02 ] science6.2ch.net/test/read.cgi/denki/1222899759/965
426 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:37:30 ] >>419 のコードを読んでみてる。 色んな意味で読みにくいんだが、面白いな。 Walls にちょっと感動したよ。
427 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:43:28 ] いや、これあまりRuby的ではないから参考にしたらいかんよ
428 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:50:00 ] 早期の完全動作書き上げを目的にするから、その人の地が出るよね(それが面白いという説があるが) なんとなくJavaっぽい雰囲気 printf() なんて久しぶりに見た
429 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 00:55:40 ] >>426 それは分かってる。自分用に読みやすく書き換えたコードからは、 とりあえずInteger#times()を追放した。 そろそろクラスの構成が変わるかも。
430 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 18:53:53 ] 前回、カレンダーでお世話になりました。 前回は、1日1行でしたが、今回は、1週を1行にしたいのですが... require 'date' day = Date.new(2009,2,2) last = Date.new(day.year+10, day.month, day.mday) weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'} while day < last do wday = weekdays[day.wday] puts day.strftime("%Y%W,%Y,%b,%-m月,%-d,#{wday},%a,%w,%W") day = day+7 end で出力に、月曜日から日曜日までの出力を一行に出力したいですが どうすれば良いでしょうか?
431 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 19:29:56 ] そのへんは山場なんでちっとは頭使おうぜ print で月曜から改行なしで日付だけ表示して日曜日が終わったときに改行するようにしたいとか 日付の文字を月曜から7個追加していって1週間をヨコ長の文字列にして表示するのがよさそうとか なんかプランとかないん?
432 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 19:51:10 ] でへっ だんな、お見通しですな。
433 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 20:53:58 ] 何点でしょうか? 一応、やりたいことはできたかな。 require 'date' day = Date.new(2009,2,2) last = Date.new(day.year, day.month+1, day.mday) weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'} while day < last do print day.strftime("%Y%W,%Y,%W,") dayday=day while dayday < day+7 do wday = weekdays[dayday.wday] print dayday.strftime("%b,%-m月,%-d,#{wday},%a,%w,") dayday= dayday+1 end print "\n" day = day+7 end
434 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 21:35:02 ] 60点くらいでいいとこなんじゃね
435 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:06:09 ] 行末の "," が取れない。 60点かあ。Cってとこね。
436 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:35:17 ] そりゃ一体化してるからな 日付部は日付部だけにして、カンマは別なとこで表示するようにしとけ そうしたほうがシンプルだ 月曜表示 カンマ 火曜表示 カンマ 水曜表示 カンマ 木曜表示 カンマ 金曜表示 カンマ 土曜表示
437 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:45:00 ] 配列に文字列要素を格納していって最後に カンマで結合して出力って手もある a = [] a.push('a') a.push('b') a.push('c') a.join(',') => "a,b,c"
438 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 22:57:29 ] まだ早いと思って飛ばしたんだが…
439 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:18:05 ] それは失礼しました
440 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:20:16 ] コレクションをいつ使ってもらうかってけっこう困るよね
441 名前:デフォルトの名無しさん mailto:sage [2009/02/02(月) 23:28:31 ] やりたいことが明確なら、構文を便利機能として まるのみしてもらって理解は後から、 というのもありかと
442 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 00:42:02 ] >>419 です そうですか、Java野郎なのバレバレですか でも、最近は前任者の作ったひどい生jspを力技で 修正するばかりの日々なので、すでにJavaとすらいえないかも 実はRubyも10行以上のプログラムは数年ぶりで、newの構文が 30秒も思い出せなかったのにはびっくりです コード書くのは面白かったんだけど、 Python, Perlの比較対象にならないソースでごめんなさい
443 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:30:07 ] 1年でRuby習ったってのに2年ではPerl使えと言われた… 教授の趣味らしい
444 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:40:38 ] 学生も大変なんですね。。。
445 名前:デフォルトの名無しさん mailto:sage [2009/02/03(火) 22:44:52 ] 3年はPythonですか
446 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 00:59:46 ] 別の世界があることを知るのはよいことだ
447 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 01:54:32 ] 実習授業の6割くらいは似非FORTRANとしてしか使ってないから 授業ごとに切り替わっても実際的な問題はない
448 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 03:51:41 ] 授業ごとに切り替わるとかって大変じゃね? 全部習得したら凄い人材にはなりそうだけど
449 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 09:06:16 ] 凄くはないだろ
450 名前:デフォルトの名無しさん mailto:sage [2009/02/04(水) 13:12:02 ] C/Javaとスクリプトと関数型が切り替わるならすごいけどお手軽LLばっかり やっててもな・・・
451 名前:デフォルトの名無しさん mailto:sage [2009/02/07(土) 02:19:19 ] Scheme→C言語→空白→(Verilog HDL) もどうかと思うけどな…。
452 名前:435 mailto:sage [2009/02/07(土) 10:31:16 ] >>435 ですが、こんな風にしてみました。 require 'date' day = Date.new(2009,2,9) last = Date.new(day.year, day.month+2, day.mday) weekdays = {0 => '日', 1 => '月', 2 => '火', 3 => '水', 4 => '木', 5 => '金', 6 => '土'} while day < last do records=Array.new records.push(day.strftime("%Y%W,%Y,%W")) dday = day while dday < day+7 do wday = weekdays[dday.wday] records.push(dday.strftime("%b,%-m,%d,%w,#{wday},%a")) dday = dday+1 end print records.join(',') print "\n" day = day+7 end
453 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:41:39 ] >>452 require 'date' day = Date.new(2009,2,9) last = Date.new(day.year, day.month+2, day.mday) weekdays = "日,月,火,水,木,金,土".split(/,/) while day < last records = [day.strftime("%Y%W,%Y,%W")] 7.times{ records << day.strftime("%b,%-m,%d,%w,#{weekdays[day.wday]},%a") day += 1 } print records.join(','),"\n" end
454 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:48:03 ] >>453 > weekdays = "日,月,火,水,木,金,土".split(/,/) ソースにはこれの実行結果を直に書くべき 毎回文字列から split させるというのは微妙にくどい というか>>435 の欲しいものが微妙につかめない俺
455 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 14:57:21 ] オフィシャルに提供されてる weekdays = %w(日 月 火 水 木 金 土) みたいな書き方でもいいな
456 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 15:17:12 ] weekdays = defined? weekdays ? weekdays : "日,月,火,水,木,金,土".split(/,/)
457 名前:デフォルトの名無しさん [2009/02/08(日) 16:29:33 ] >>456 きもい
458 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 17:05:20 ] >>454 「毎回」の意味を具体的に。
459 名前:Calendar君 mailto:sage [2009/02/08(日) 18:05:58 ] >>454 カレンダーデータを作成したい理由は、所謂、システム手帳の 週間スケジュールのリフィルを作りたい。これが目的です。 従いまして、 1. ruby でカレンダーデータを作成する。 2. カレンダーデータを OOo Base あるいは、MS Access に食わせる。 3. レポート機能を使って求めるリフィルをデザインし印刷する。 という事になります。OOo でレポートを作成するには、Sun Report Builder という拡張ツールをインストールせねばなりませんが、まあそんな事を やりたいために、まずは、ruby でカレンダーデータを作成しています。 祝日のデータは今のところ、手動で追加しています。
460 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 19:03:25 ] データ構造とかちゃんと考えてる? 今までのやりとり見てると、プログラムなんか作らずに手帳に直接書いた方がましに思える
461 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 19:10:06 ] ていうか印刷できるリフィルデータは巷にいくつかあるだろう それのデザインだけ変えりゃいいんじゃねの まあ、Rubyの勉強も兼ねたいっていうなら別に問題ないけれど
462 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 19:20:11 ] 最初にことわったかも知れませんが半分Hobbyです。街中で入手できる リフィルでは用が足りないためこんなことをしています。 データ構造とかは何をおっしゃりたいかよくわかりませんが、勉強のため 作成したデータは、MySQLとかに読ませ、OOo から接続したりとか 遊びのネタの中に、char で読み込むのか integer で読み込むのとか、 リソースを無駄使いしないように何文字にするかとかそれなりに考えて いますが、答えになっていますか? 1年分を作成しようと思うと、手書きではねえ。それを手書きでいいや と思えるようであれば、こんなことしていません。
463 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 22:56:55 ] 最近 calendar.google.com 使ってみてる 意外と良いですよ
464 名前:デフォルトの名無しさん [2009/02/08(日) 23:28:12 ] >>455 がスマートだな。 >>459 OOOとかAccess通すより、RubyのPDF用ライブラリつかって直接印刷できる形式にした方が早そうだが。 趣味ならとめないが
465 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:29:24 ] うお、ageちゃった 祝日はAPI使ったら、楽にとれそうだよ 本を読む 祝日のリストをGoogle Calendar APIを使って作る emasaka.blog65.fc2.com/blog-entry-289.html
466 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:31:20 ] こっちの方がいいかも。 確か、公式のGoogle Calenderの休日って不完全なんだよね・・・ floatingdays: Google Calendar API で日本の祝日データを取得 fdays.blogspot.com/2008/04/google-calendar-gdatakeygdata.html
467 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:40:26 ] >>458 こんなん直接 ["日", "月", "火", "水", "木", "金", "土"] でいいじゃん、という程度の話
468 名前:デフォルトの名無しさん mailto:sage [2009/02/08(日) 23:51:42 ] ループの中でなければsplit()で何がいけないの、とか思ってしまうのだが 自分では "日月火水木金土".split('') みたいなスタイルが好き
469 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 00:00:15 ] www.google.com/calendar/feeds/japanese@holiday.calendar.google.com/public/full?start-min=2009-01-01&start-max=2009-12-31 www.google.com/calendar/feeds/outid3el0qkcrsuf89fltf7a4qbacgt9@import.calendar.google.com/public/full?start-min=2009-01-01&start-max=2009-12-31
470 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 19:46:27 ] >>464 これ質問しようと思っていたんです。 ruby からいきなり pdf に出力する やり方があるんですね。これやりたい。次はこれ行ってみます。
471 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 19:53:50 ] >>470 てか、pdfを直接エディタで開け それが答えだ
472 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:05:23 ] 開けてみました。これは敷居が高いな。
473 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 21:20:28 ] いや、適当なpdf出力ライブラリ使えよw 検索したらいくつかあるぞ。 そこまで手取り足取りせなならんのかwww
474 名前:デフォルトの名無しさん mailto:sage [2009/02/09(月) 22:04:15 ] あは、 また叱られてしまた。 はい、ぐぐってみましたです。履歴書の出力を説明したサイトを 見つけました。
475 名前:デフォルトの名無しさん mailto:sage [2009/02/10(火) 06:38:22 ] おぬでとう
476 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 16:49:53 ] [1] 授業単元:Ruby [2] 問題文(含コード&リンク): 1から9までの数字を縦横方向に同じものが並ばないように下記の例のように並べる 並べ方が全部で何通りあるかとその並びをすべて列挙する [3] 環境:特になし [4] 期限: 明日まで [5] その他の制限: 例 534681297 685293714 948367125 153472869 426538971 261759483 817945632 379126548 792814356
477 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 17:02:19 ] > [4] 期限: 明日まで 鬼だ…
478 名前:デフォルトの名無しさん mailto:sage [2009/02/12(木) 17:09:59 ] Python の宿題ここで答えます Part 1 pc11.2ch.net/test/read.cgi/tech/1153585095/785 C/C++の宿題片付けます 122代目 pc11.2ch.net/test/read.cgi/tech/1232029287/542 Rubyの宿題教えてください。2限目 pc11.2ch.net/test/read.cgi/tech/1200175247/476 こんなんで数独の掲載料もらえるなら俺だって問題送りたい っていうか、前にスリザーリンク解かせた奴と同じだろお前
479 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:10:45 ] 数独よりもゆるい条件だけど、その例の列を並び換えるだけで 9 ! = 362 880通りになるねえ。列挙頑張ってね!
480 名前:デフォルトの名無しさん mailto:sage [2009/02/13(金) 01:12:35 ] 行の並び替えもOKだから1例だけで (9 ! = 362 880) * (9 ! = 362 880)
481 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:37:06 ] >>476 勉強がてら作ってみた。 3×3で12通り 4×4で576通り 5×5で161280通り 合ってるかな? codepad.org/1fdKGZwE
482 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 20:51:09 ] en.wikipedia.org/wiki/Latin_square
483 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 21:08:12 ] >>482 おー、合ってるみたいだ
484 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 22:39:16 ] >>481 最終セルの判定は calc の前でいいんじゃないの で、if文の中にnext入れとけば return if line > @num の判定も不要
485 名前:デフォルトの名無しさん mailto:sage [2009/02/14(土) 23:03:11 ] >>484 なるほど。 少し簡潔になりました。 アドバイス、サンクス。
486 名前:デフォルトの名無しさん [2009/02/23(月) 14:38:51 ] 誰か人いるかな?
487 名前:デフォルトの名無しさん mailto:sage [2009/02/23(月) 14:48:35 ] 雑談は雑談スレで
488 名前:デフォルトの名無しさん [2009/03/23(月) 11:08:21 ] [1] 授業単元:Ruby [2] 問題文(含コード&リンク): 下の例参照 与えられた数字のみからなる文字列から各桁の数字に分割し、 隣り合う数字の合計の下一桁の値を並べたものを次の文字列とし、 結果が一桁になるまで繰り返しそれぞれの過程の文字列を出力する。 [3] 環境:特になし [4] 期限: 明日まで [5] その他の制限: 例 525123214112431 77635535523674 4398088075931 727886872424 99564459666 8410894522 251873974 76950261 3545287 899705 78675 5432 95 4
489 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:15:22 ] [1] 授業単元:Ruby [2] 問題文(含コード&リンク): 課題2 >>488 の出力において(上から1段目だけは入力なので) 上から2段目から最後の段までに現れる0から9数字の 総出現数と各数字毎の出現比率を出力する。 [3] 環境:特になし [4] 期限: 明日まで [5] その他の制限: 129個 0: 10回 3% 1: 43回 20% 2: 8回 2% ... 9: 18回 6% のように出力してください。 おながいします
490 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:32:14 ] [1] 授業単元:Ruby [2] 問題文(含コード&リンク): 課題3 >>489 のスクリプト名を p2.rb とする その入出力について入力はスクリプトへの標準入力として例えば echo 525123214112431 | p2.rb という形で受け取れるようにし、 10, 0.03, 43, 0.20, 8, 0.02, ... 18, 0.06, 129 の様に0から9までの出現数、出現比率(末尾に総数)をカンマ区切りで 出力するように変更し、 さらに新たなスクリプト p3.rb から別プロセスとして p2.rb を起動し、 標準出力を介して 111111111 から 999999999 までの連続する数字を与え、 それぞれの結果を出力する。 [3] 環境:特になし [4] 期限: 明日まで [5] その他の制限:
491 名前:デフォルトの名無しさん [2009/03/23(月) 11:41:04 ] [1] 授業単元:Ruby [2] 問題文(含コード&リンク): 課題4 >>490 の出力について 111111111 から 999999999 までの連続する数字を与える代わりに N 桁の全ての数字を与え、N を 2 〜 9 まで変化させたときに 各 N における全ての出現数、出現比率を0から9までの数字毎に合計し、出力する。 [3] 環境:特になし [4] 期限: 明日まで [5] その他の制限: N = 2 のとき 10 〜 99 について 10 -> 1 が 1回 11 -> 2 が 1回 12 -> 3 が 1回 ... 99 -> 18, 9 -> 1 が 1回, 8 が 1回, 9 が 1回 の回数の合計として 0から9までの出現数、出現比率(末尾に総数)をカンマ区切りで出力する。 よろしくおねがいします。
492 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:55:37 ] 配列に対する map は習った? each_with_index は知っている? 範囲オブジェクト (0..9) は授業で出た? 標準入力のキーワードはいくつかあるけど授業のは何?
493 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 11:57:58 ] あ、map は collect かもしれない a = [1,2,3] b = a.map{|e| e*2} p b これが [2, 4, 6] になるやつ map でも collect でもいい
494 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 12:00:18 ] まだあった >>490 > さらに新たなスクリプト p3.rb から別プロセスとして p2.rb を起動し で使うと思われるメソッド(関数)って何? system とか `` とかあるけどどれ習った?
495 名前:デフォルトの名無しさん mailto:sage [2009/03/23(月) 22:10:59 ] >>488 だけやってみた まぁ後は誰かがやってくれるのを期待してみよう s=gets.chomp.bytes.map{|x|x-?0.ord} while (s=s.each_cons(2).map{|x,y|(x+y)%10}).any? $> << s << "\n" end
496 名前:デフォルトの名無しさん mailto:sage [2009/03/24(火) 02:22:34 ] >>490 までは既にできてる というか each ばっかでバカみたいに愚直平凡なコード書きまくって疲れたので返事があるまで放置
497 名前:デフォルトの名無しさん mailto:sage [2009/03/27(金) 11:23:10 ] >>495 の罪は重い
498 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 07:48:29 ] まあはっきり言って、なにをやってるのかわかりません>< >>495
499 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 09:11:38 ] >>488 の例での最後の2つ間違ってね?
500 名前:デフォルトの名無しさん mailto:sage [2009/03/28(土) 09:26:39 ] >>499 間違ってるよ コピペされないように大元が間違いを入れてるんだろう 正しいプログラムを作れば、>>488 がそもそも間違ってる(数字の個数自体が合わない) ということに気づけるようになっているのだろう とか教育的意図を深読みしたときに限って単なる投稿時の書き写しミスだったりするわけだが(w
501 名前:デフォルトの名無しさん mailto:sage [2009/04/06(月) 04:01:10 ] スルー推奨
502 名前:デフォルトの名無しさん mailto:sage [2009/04/08(水) 01:02:35 ] は?
503 名前:デフォルトの名無しさん mailto:sage [2009/04/14(火) 23:19:09 ] 6個のreal型変数x1、y1、x2、y2、x3、y3を定義しそれぞれに実数つを読み込んで、xy平面上の3点 (x1、y1)(x2、y2)(x3、y3)を頂点に持つ三角形の面積を計算して、その値を表示するプログラムを作成してください。 ・公式:底辺x高さ÷2を使って計算してください。 お願いします!!
504 名前:デフォルトの名無しさん mailto:sage [2009/04/15(水) 03:47:09 ] マルチ乙
505 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:36:12 ] Nの階乗を再帰を用いた方法で計算してその計算過程も表示するプログラムを教えてください あと def factorial(n) i = 1 j = 1 while(i <= n) j = j * i i = i + 1 end return j end print "Nを入力してください : " n = gets.to_i printf("\n%d次のようにして計算します。\n\n", n) wh = factorial(n) printf("\n%dの答えは%dです。\n", n, wh) ってプログラムの「次のようにして計算します。」 の実際の計算過程を表示するにはどう書き直せば良いのでしょうか? 回答お願いします
506 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:50:46 ] >>505 です すいませんテンプレ入れるの忘れました [1] 授業単元:Ruby [2] 問題文 ホワイトとブラック [3] 環境:Ruby 1.8.6 [4] 期限:2009年月20日07:00まで [5] その他の制限: Rubyのことは基本的なことくらいしかわかりません
507 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:51:57 ] 「Ruby 階乗 再帰」くらいで検索すれば一発で出てくると思うんだが、そういうことやらないのはなんで? いや、ものすごく純粋に疑問なんだけど
508 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 21:59:43 ] >>507 さん 変数を代入してその数の階乗を求めなおかつ計算過程を表示するプログラムが乗ってないからです
509 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 22:10:20 ] 他人に宿題やってもらおうなんて奴に考えなんぞある訳無い def fact(n) m = (1 < n ? fact(n-1) : 1) result = n * m puts '%d * %d = %d'%[m,n,result] result end
510 名前:デフォルトの名無しさん mailto:sage [2009/04/17(金) 23:43:33 ] >>509 さん えっと・・・本当に初歩的なこと聞いて申し訳ないんですが どこにそれを入れればよいのでしょうか・・・?
511 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 00:20:23 ] ホワイトとブラック ?
512 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 01:08:53 ] >>510 ファイル
513 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 10:29:27 ] >>511 さん 授業で総称してるだけです ホワイトは普通のNの階乗で ブラックが再帰を使用した階乗です >>512 さん 言い方がまずかったです どこの部分を>>509 さんの書き込みのように書き直せばいいんですか?
514 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 10:43:11 ] 授業聞いてれば 1時間で終わったのにね 手抜くから何時間も無駄にかかる 手元に実行環境があれば適当に実行して試せばわかるんだが難しいか >>509 は >>505 の factorial を置き換えるものだから、factorial(n) の代わりに fact(n) で呼べばいい ただ、授業で使ってない方法で書かれてるだろうから、このまま提出したら呼び出し食らって減点対象だぞ
515 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 11:22:34 ] >>514 さん 申し訳ないです どうやら勘違いしてたみたいです >>509 さんの書き込んでくれたソースを実際走らせて見たんですが ファイル名:rb2: Invalid char |201' in expression ファイル名:rb3: Invalid char |201' in expression ファイル名:rb4: Invalid char |201' in expression ファイル名:rb4: syntax error, unexpected tSTRING_BEG, e xpecting kEND puts '%d * %d = %d'%[m,n,result] ^ ファイル名:rb5: Invalid char |201' in expression って出てしまいます
516 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 11:29:08 ] ^は%の下です
517 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 12:13:06 ] 全角空白になってる
518 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 12:48:57 ] >>515 >>517 の言ってる事をもう少し噛み砕くと、 >>509 のコードはインデントを表すのに全角空白を使ってる。 だからまず行頭の空白を消すべし。もしインデントが欲しかったら新たに加えなおせ。 def とか end を半角で書かなきゃいかんように、 空白文字はtab, spaceを使わにゃいかんと決まっとる。
519 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 14:03:12 ] >>513 書き換える必要はない。全角空白は削除する必要はあるけど
520 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:20:53 ] >>518-519 さん def fact(n) m = (1 < n ? fact(n-1) : 1) result = n * m puts '%d * %d = %d'%[m,n,result] result end と入力してコマンド プロンプトで起動してみましたが 何も実行されませんでした・・・。
521 名前:デフォルトの名無しさん mailto:sage [2009/04/18(土) 23:53:45 ] 定義だけで呼び出してないから。
522 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:04:35 ] >>521 さん 呼び出しは print "Nを入力してください : " n = gets.to_i printf("\n%d次のようにして計算します。\n\n", n) wh = factorial(n) printf("\n%dの答えは%dです。\n", n, wh) で良いんですか?
523 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 00:05:19 ] >>522 >>514 読んでないだろ。
524 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:00:48 ] >>523 読みましたが・・・。 def factorial(n) if n <= 1 1 else n * factorial(n-1) end end if ARGV[0] == nil STDERR.puts "数はいくつ?" exit 0 end n =ARGV[0].to_i printf("%dの階乗=%d\n", n , factorial(n)) 一応教科書見ながら作ってみたんですが動かないんですが どこが悪いんでしょうか?
525 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 01:35:00 ] おまえのあたま
526 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 03:00:15 ] 留学生なのかな?
527 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 08:39:13 ] >>514 を音読しろ、まずはそれからだ
528 名前:デフォルトの名無しさん mailto:sage [2009/04/19(日) 09:37:23 ] みなさんご迷惑をおかけして申し訳なかったです・・・。 なんかえらく勘違いしてました・・・。 ようやくできました ありがとうございました どうでもいいですが留学生ではないですよ
529 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:47:05 ] 宿題のようで、宿題なのですがよろしくお願いします。 [1] 授業単元:Ruby [2] 問題文 ファイル分割 下記は、hoge.csvを均等に4分割して tmp/ 以下に書き込むプログラムである。 ruby split.rb hoge.csv tmp/ 4 出力例 tmp/1out.csv tmp/2out.csv tmp/3out.csv tmp/4out.csv このプログラムをできるだけ簡潔に書け。 ただし、出力された各csvは hoge.csv の1行目のヘッダーを含むものとする。 [3] 環境:Ruby 1.8.7 [4] 期限:2009年月21日12:00まで [5] その他の制限: RubyGems等の使用など特に制限はなし。より簡潔に書けた方がよい。
530 名前:デフォルトの名無しさん [2009/04/20(月) 17:48:43 ] x 宿題のようで、宿題なのですがよろしくお願いします。 o 宿題じゃないようで、宿題なのですがよろしくお願いします。 orz
531 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 17:50:18 ] 均等に四分割ってw 少なくとも行数は四の倍数で入ってるとか?
532 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 20:14:01 ] x 宿題のようで、宿題なのですがよろしくお願いします。 o ネタのようで、ネタなのですがよろしくお願いします。
533 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 20:18:53 ] (1..ARGV[3].to_i).each do |i| p ARGV[2] . i . "out.csv" end
534 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 20:32:06 ] require 'csv' org_csv, dest_dir, n_split, = ARGV n_split = Integer(n_split) rows = CSV.foreach(org_csv).to_a header = rows.shift matrix = Array.new((rows.size / Float(n_split)).ceil){ [] } iter = matrix.cycle rows.each{|row| iter.next << row } matrix.transpose.each_with_index do |rows, i| CSV.open File.join(dest_dir, "#{i + 1}out.csv"), "w" do |w| w << header rows.each{|row| w << row } end end
535 名前:デフォルトの名無しさん mailto:sage [2009/04/20(月) 20:32:43 ] (1..ARGV[2].to_i).each do |i| p ARGV[1]+i+"out.csv" end
536 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 18:13:20 ] > このプログラムをできるだけ簡潔に書け。 つまりゴルフだな?
537 名前:デフォルトの名無しさん mailto:sage [2009/04/21(火) 19:54:56 ] golf と聞いて(ry i,d,c=$*;c=c.to_i;a=open i;h=a.gets;f=(1..c).map{|j|open("#{d}#{j}out.csv",'w')<<h};a.map{|l|f[$.%c]<<l}
538 名前:デフォルトの名無しさん [2009/04/22(水) 06:12:44 ] >>534 ありがとうございます!無事できました。 >>537 ちょwwwワンライナーwww
539 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 12:56:44 ] File.readlines(ARGV[0]).each_slice(ARGV[2].to_i).with_index{|v,i| File.open("#{ARGV[1]}#{i+1}out.csv", 'w+'){|f| f.puts v.join } } こっから縮めると、 i,d,c=$*;open(i).readlines.each_slice(c.to_i).with_index{|v,n|open("#{d}#{n}output.csv",'w+').puts v.join }
540 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 12:57:26 ] 間違えて書き込んでしまった。 i,d,c=$*;open(i).readlines.each_slice(c.to_i).with_index{|v,n|open("#{d}#{n}output.csv",'w+')<<v.join} 動作確認はしてない。
541 名前:デフォルトの名無しさん [2009/04/22(水) 12:57:59 ] Enumerable#each_slice初めて知ったw こんなメソッドあるんかよすげえ
542 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 14:10:09 ] each_slice だと n 個ずつに分割されるんだったorz
543 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 14:15:08 ] i,d,c=$*;open(i).readlines.group_by.with_index{|v,n| (n+1)%c.toi}.each{|k,v|open("#{d}#{k}output.csv",'w+')<<v.join} 長いな。動作確認はしてない。
544 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 17:22:23 ] ブロックなし group_by って何寸の?riみためいまいち
545 名前:デフォルトの名無しさん mailto:sage [2009/04/22(水) 19:37:15 ] Enumeratorを返す
546 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 09:21:31 ] 312 名前:デフォルトの名無しさん[] 投稿日:2009/05/31(日) 02:29:50 文字列を与えられた時、アルファベットを大文字小文字区別せずに出現頻度順に小文字で並べた文字列を返すプログラムを作る問題がわかりません。
547 名前:デフォルトの名無しさん [2009/05/31(日) 10:35:02 ] [1] 授業単元: プログラミング初歩 [2] 問題文(含コード&リンク):(文字列を与えられた時、アルファベットを大文字小文字区別せずに出現頻度順 に小文字で並べた文字列を返すプログラムを作りなさい。) [3] 環境 [3.1] OS: (WindowsXP) [3.2] バージョン: (Ruby 1.8.6 ) [3.3] 言語: (Ruby [4] 期限: ([2009年06月01日21:00まで] [5] その他の制限: 配列などの初歩的な概念まで よろしくお願いします。
548 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 10:50:36 ] 全く同じ課題をちょくちょく見るがどこの課題なんだろうね str を与えられた文字列として arr = str.downcase.split(//) puts arr.sort_by{|a| arr.grep(a).size}.reverse.join
549 名前:デフォルトの名無しさん mailto:sage [2009/05/31(日) 12:33:07 ] freq = Hash.new(0) str.scan(/[a-z]/i) {|c| freq[c.downcase] += 1} puts freq.keys.sort_by {|c| -freq[c]}.join("") # 1.8.7以降 input.each_char.inject(Hash.new(0)) {|freq, c| freq[c.downcase] += 1 if /[a-z]/i =~ c; freq}. sort_by {|c, n| -n}.map {|c, n| c}.join("")
550 名前:デフォルトの名無しさん [2009/06/11(木) 01:50:29 ] [1] 授業単元: Ruby演習 [2] 問題文、kansai2channeler.hp.infoseek.co.jp/cgi-bin/joyful/img/9426.txt [3] 環境 [3.1] OS:Windows [3.3] 言語:Ruby [4] 期限: 6月11日午前11時30分まで [5] その他の制限: 現在ハッシュクラスを勉強中 よろしくお願いします
551 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 04:31:12 ] >>550 ギリギリすぎワロタ
552 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 04:52:41 ] wday = {"sunday" => "日曜日", "monday" => "月曜日", "tuesday" => "火曜日", "wednesday" => "水曜日", "thursday" => "木曜日", "friday" => "金曜日", "saturday" => "土曜日"} size = wday.size puts "wday の大きさは" + size.to_s + "です。" wday.each do |eng, jap| puts eng + "とは" + jap + "のことです。" end def str2hash(str) hash = {} array = str.split(/\s+/) i = 0 while i < array.size if i % 2 == 1 then hash[array[i-1]] = array[i] end i = i + 1 end return hash end puts "str2hashを検証します。" str2hash("key1 value1 key2 value2").each do |key, value| puts "キーは" + key1 + "で値は" + value "です。" end
553 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 04:53:43 ] >>550 適当 (1) wday = {"sunday"=>"日曜日", "monday"=>"月曜日", "tuesday"=>"火曜日", "wednesday"=>"水曜日", "thursday"=>"木曜日", "friday"=>"金曜日","saturday"=>"土曜日"} (2) p wday.size (3) wday.keys.each do |d| puts "「#{d}」は#{wday[d]}のことです。" end (4) def str2hash(s) h = Hash.new s.scan(/(\S+)\s+(\S+)\s*/) {|pair| h[pair[0]] = pair[1] } h end
554 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 05:12:51 ] 実のところ、4が小難しい(テンプレ的にできそうでできないいい問題だとも言えるが) こんなん通常は Hash[*str.split] で終了だが、おそらくは手作業であり
555 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:04:16 ] 問題文くらい晴れよ。検索避けなのかもしれんが ---- Rubyの問題がわかりません 助けてください (1)曜日を表す英語と日本語との対応を表すハッシュwdayを定義しなさい p wday["sunday"] #=> "日曜日" p wday["monday"] #=> "月曜日" p wday["saturday"] #=> "土曜日" (2)ハッシュのメソッドを使って(1)のハッシュwdayのペアの数を数えなさい (3)eachメソッドと(1)のハッシュwdayを使って以下の文字列を出力させてください。 「sunday」は日曜日のことです。 「monday」は月曜日のことです。 … (4)ハッシュには配列の%wのようなものがありません。そこで、空白とタブと改行 (正規表現で定義するなら「/\s+/」)で区切られた文字列をハッシュに変換するメソッド str2hashを定義してください。 p str2hash("bule 青 white 白\nred赤"); #=> {"bule"=>"青", "white"=>"白", "red"=>"赤"}
556 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 07:18:06 ] >>555 君以外は全員読んで回答してるんだが?
557 名前:デフォルトの名無しさん [2009/06/11(木) 11:52:38 ] >>552 >>553 550です ありがとうございます
558 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 13:20:30 ] >>556 >>555 じゃないけど 携帯からでなきゃ時間帯的に覗けない時とか ちょっともどかしい 余裕のある人が答えてるからいいんだろうけど
559 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 13:24:27 ] そこまで頑張って答えるようなもんでもないと思うがどう まあどうでもいいけどさ
560 名前:デフォルトの名無しさん mailto:sage [2009/06/11(木) 23:57:47 ] >>550 「たのしいRuby 第2版」を買っておくといいかも ttp://www.notwork.org/sbcr-ruby/answer/
561 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 01:45:26 ] そもそもなんだが、rubyって学校で教えてるものなの? ふつうC++とかJavaとか使えそうなもの教えそうな気がするけど。
562 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 03:26:10 ] 教えてる
563 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 03:55:04 ] プログラミングがメインじゃないけれども教わってる。 講義概要にはrailsって書いてあるけれども。
564 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 07:51:26 ] >>561 超マジレスすると、学校で教えるような部分が「使えるもの」になる可能性はゼロだ その人がプログラミングができるかどうかの試金石として働けばなんでもいいんで、 教えやすかったりすればそれでいい
565 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:13:24 ] >>561 東大の場合 jp.rubyist.net/RubyKaigi2008/?MainSession#l12 lecture.ecc.u-tokyo.ac.jp/~cichiji/is-06/is-06.html ぶっちゃけ、言語は何でもいい。教育としては概念を把握させるのが目的。 それに、特定の言語でしか身動きできないような人間を作ってしまうような 教育なら大学で教える意味はない。
566 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 08:14:24 ] yes
567 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:53:31 ] オレの学校はリデュースってので習ったぜ
568 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 10:59:22 ] ただ、学校が「専門学校」であった場合、 学校で教えることはそれなりに即戦力の礎になることが期待されてはいるので そこでRubyを教えることは稀だろうなとは思う 理系大学1年の教養の情報系授業のプログラミングで Rubyを選択肢に入れるのは間違ってはいないと思う 3年4年のときに特定の言語でプログラミングするなら 3年や4年のときに特定の言語をツールとして勉強すれば充分
569 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 23:51:14 ] >理系大学1年の教養の情報系授業のプログラミングで >Rubyを選択肢に入れるのは間違ってはいないと思う なんかそれこそ、最初にruby教えたらプログラミングの概念間違って覚えてしまいそうだけどな。
570 名前:デフォルトの名無しさん mailto:sage [2009/07/12(日) 23:56:15 ] >>569 がどういう概念を持ってるのか興味が出てきた。
571 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 06:04:39 ] >>569
572 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 15:17:18 ] ALGOL型ならなんでもいいよ というか、東大とか行くくらいならRubyぐらい知ってて当然だろう センターのBASICはどんなアホでできるぐらい簡単なんだし、そのつながりで ALGOL型言語ならだいたいわかるだろう。
573 名前:デフォルトの名無しさん mailto:sage [2009/07/13(月) 16:24:07 ] pc12.2ch.net/test/read.cgi/tech/1200989025/
574 名前:デフォルトの名無しさん [2009/07/15(水) 14:14:17 ] 大学の課題がわからなくて困っています 宜しくお願いします。こんなんです スキャンラインアルゴリズムに基づいて,三角形を塗りつぶすメソッドを作成して,メソッドをテストするプログラムも含めて作成して下さい. require 'gfc' class Gfc def draw_line(x0,y0,x1,y1,color) # # 前回作ったdraw_lineを拡張する # # (x0,y0)--(x1,y1)に線分を描く.color: 色の指定 [r,g,b] # 同時にデジタル線分上のピクセル座標の列を次のような配列として返す # trace=[[x0,y0],....,[x1,y1]] # # 最初にtraceを空の配列として用意する trace = [] # デジタル線分を描きつつ,ピクセルの座標をtraceに格納していく # 前回のdraw_lineに少し追加するだけでよいはず. # (draw_pixelとともにtraceに座標を格納すればよい) # 最後に次の式を書く(これがdraw_lineの値となる) trace end end
575 名前:デフォルトの名無しさん [2009/07/15(水) 14:15:39 ] class Gfc class Triangle ## 指定された色で三角形を塗りつぶしてgの画像に描画する ## (描画色はparam[0]に格納されている) def fill(g,param) # 三角形の3頂点を取り出す # vt = [[x0,y0],[x1,y1],[x2,y2]] vt = vertices() # 色を取りだす color=param[0] # 現在の色を退避して与えられた色に設定する bkup_color=g.get_foreground() g.set_foreground(color)
576 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:35:25 ] 凹型三角形のときはどうするつもりなんだ
577 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:38:02 ] これでおしまい?続きは無いの? あと gfc ってこれであってるかな ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/CG/ruby/gfc.html
578 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 14:44:05 ] 課題ってこれか ttp://www.stdio.h.kyoto-u.ac.jp/~hioki/CG/report/2009/triangle_fill.html 「線分の描画」のとこ理解してれば応用で出来るぞ
579 名前:デフォルトの名無しさん mailto:sage [2009/07/15(水) 19:59:59 ] 高い授業料払ってるんだから聞きにいけよ
580 名前:デフォルトの名無しさん [2009/07/27(月) 20:59:43 ] [1] 授業単元: 論理学 [2] 問題文: 整数からなる配列を受け取り、その最大値を除いた配列を出力するメソッドを定義せよ。 ただし、配列の長さが3未満のときはnilを出力する。 [4] 期限: 7月27日9:00まで [5] その他の制限: 筆記試験です すみませんがよろしくお願いします。
581 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:13:51 ] def foo (array) (array.length < 3) ? nil : array - array.max end 完全に未テストだけど 重複の有無は言われてないので考慮してない
582 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:17:31 ] すげえ期限だな。 def hoge(list) if list.length < 3 nil else max = list.max list.reject{|e| e == max } end end def kadai(list) hoge(list).display end >>581 array - [array.max]
583 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:21:08 ] www.ruby-lang.org/ja/man/html/Array.html self - other other が配列でなければ to_ary メソッドによる 暗黙の型変換を試みます。 と書いてあるので多分[]は必要ない 未テストだけど
584 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:24:26 ] irb(main):002:0> 666.respond_to?(:to_ary) => false ほい。というわけで要る。
585 名前:デフォルトの名無しさん [2009/07/27(月) 21:27:50 ] 580です! ありがとうございました!
586 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:29:46 ] ほう、マジか
587 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:36:04 ] 解決してるがいっこだけ >>581 引くな 要素を取り除くということと配列を引くということはまったく違う
588 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:41:14 ] $ refe Array#- Array#- --- -(other) -> Array 自身から other の要素を取り除いた配列を生成して返します。 ……。
589 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:49:32 ] 配列 self から 配列 other の各要素をすべて取り除いた結果の配列を新たに生成して返します だろうから、まあ問題ないなというか言葉足りな過ぎるな 「要素 other」ではなく「配列 other の要素」
590 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:51:18 ] ていうか、そもそも - って同じクラスのオブジェクト同士のメソッド遣り取りだろ to_ary すら本来は期待してはイカン
591 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:51:47 ] >>587 右辺の要素を取り除いた配列を新しく作るんだけど こういうところで全くの素人相手にものを教えてやっていい気になってるような奴はやっぱ低レベルだな
592 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 21:58:44 ] >>591 >>580 もう一度読め どう考えても配列から要素1種だけ引く問題 delete や delete_if を使うべき 配列の「引き算」で回り道して実装する意味はなんもない
593 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 22:02:12 ] そこはrejectとかにしてやってくれ。 元の配列ぶっ壊して良いのかどうか窺い知れんから。
594 名前:デフォルトの名無しさん mailto:sage [2009/07/27(月) 23:07:40 ] うーん…w
595 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 02:41:46 ] def hoge(arr) if arr.size<3 return nil end return arr.sort.pop end でいいんじゃないの?
596 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 05:03:29 ] [3, 5, 2, 6, 4] を渡して [2, 3, 4, 5] が返ってきたら怒っていいと思う 普通は [3, 5, 2, 4] だろ あと pop や shift はキューとしての擬似操作だ キューだから操作した要素が返る irb> p [1, 2, 3].pop 3
597 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 05:11:22 ] 要するに回答するならテストぐらいしろと
598 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 05:34:24 ] よくわからないモノを無理して使うから…
599 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 07:20:19 ] [3, 6, 5, 2, 6, 4] を渡して [3, 5, 2, 4] が返ってきたら怒っていい?
600 名前:デフォルトの名無しさん mailto:sage [2009/07/28(火) 07:31:07 ] 重複は存在しない単純化された問題か、または一律取り除いていい処理だろうと思える というか、1個だけ取って残りはそのままでいいというほうがなんか変だろ
601 名前:デフォルトの名無しさん [2009/08/25(火) 10:32:13 ] Visual Basic の課題で困っております。 誰かお答えください。本当に助けてください。 1.Visual Basicの関数で数値を文字に直すCStr()とStr()の違いについて 2.戻り値の違いが確認できる方法を考え、戻り値の違いについて実際に確認し、 その確認方法と違いを具体的に述べよ。 注意:実際にやったことと、確認した違いを簡潔かつ具体的に書くこと。 3.下記の計算結果などから、Visual Basicで計算できる数値の桁数について考察をまとめ、 何故そのような制限があるかについて理由を答えよ 1) 48 x 100 - 81 2) 12 ÷ 9.3 x 247 3) 0.2 - 12 ÷ 69 4) -12 ÷ 100 + 100
602 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 10:42:08 ] Rubyの宿題スレで質問する意図は?
603 名前:デフォルトの名無しさん mailto:sage [2009/08/25(火) 11:07:34 ] www.google.co.jp/search?hl=ja&source=hp&q=CStr ()%E3%81%A8Str()%E3%81%AE%E9%81%95%E3%81%84&btnG=Google+%E6%A4%9C%E7%B4%A2&lr=&aq=f&oq= multi
604 名前:デフォルトの名無しさん [2009/09/20(日) 01:27:35 ] .
605 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 13:40:33 ] Mechanize(0.9.2)で教えていただきたいことが有ります。 目的のWEBページを取得して 単にリンク一覧を表示させたいだけなのですが URLが表示できないリンクが存在します。 結果はnilになります。 ABC : nil <- 取得できていない DEF : http://www.abcdefc.com よく見ると、htmlのソースには <A HREF=・・・・・> *** </A> と、大文字でかかれてました。 Mechanizeで大文字が使えない仕様なのか、WEBで調べて見ましたが 答えは見つかりませんでした。 どなたか、情報をお持ちの方、お教えください。
606 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 14:41:04 ] それだけじゃわからんソースだせ
607 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 15:24:15 ] すまんです。 こんな感じで書いてます。 require 'rubygems' require 'mechanize' agent = WWW::Mechanize.new page = agent.get('*****') <ー 目的のアドレス page.links.each do |link| puts "#{link.text} : #{link.uri}" end googleとか入れたらちゃんと動くんだけどな〜
608 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 17:03:37 ] 605です。 自己解決できましたので、ご報告します。 ちょっと、強引ですが、置換しみたら上手く行ってるみたい。 require 'rubygems' require 'mechanize' agent = WWW::Mechanize.new page = agent.get('*****') page.body = page.body.sub("HREF","href") #<-- これ入れてみた。 page.links.each do |link| puts "#{link.text} : #{link.uri}" end でも、何かスマートじゃないな〜 なんか、もっといい方法が在りましたら、情報いただけるとうれしいっす。
609 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 17:54:55 ] class Link : def initialize(node, mech, page) : @href = node['href'] : となってるので小文字じゃなきゃ駄目なのかも。 XHTML的には妥当だけど、HTML的には許容範囲のはずだよなー。 ここはNokogiriの担当かね。
610 名前:デフォルトの名無しさん mailto:sage [2009/09/22(火) 18:51:01 ] 605です。 >609さん。さすがです。 Mechanizeその物を読んでみればよかったんですね。 Nokogiriのなのかな。パーサーとしてhpricotを使って見るべきか。 ま、小文字「href」に統一して使えるように、意識するのが 簡単なのかな。 情報ありがとうございます。
611 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 11:01:42 ] >>609 > @href = node['href'] ワロタ 小文字じゃなきゃ駄目なのかw
612 名前:デフォルトの名無しさん mailto:sage [2009/09/23(水) 12:19:20 ] せっかくNokogiri::HTML::DocumentとNokogiri::XML::Document とクラスが分かれてるんだから、HTMLのほうは大文字と小文字を無視 したアクセスが出来るようになってるべきなんだろうな。 今の実装だと結局Nokogiri::XML::Nodeのメソッドを使うから、全部 同じやり方になってしまう。
613 名前:デフォルトの名無しさん [2009/09/25(金) 02:08:54 ] できる人にはすぐできるんだと思うけど <a href="../test/read.cgi/mnewsplus/1251516247/l50">最新50</a> のhrefの部分と最新50の部分をぬきだすのてどうするの? while line=gets if /<a href="(\w+)"\/>(\w+)<\/a>/ =~line print $1 print $2 でうまくいきません どこが間違えている? だれかだすけて・
614 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 02:18:08 ] datファイル使った方がいいぞ
615 名前:デフォルトの名無しさん [2009/09/25(金) 03:06:50 ] if /href\s*=\s*\"(.*?)\"/i =~line print "href="+$1+"\n" end
616 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 05:15:11 ] >>612 attribute は全て小文字でアクセスする 元のHTMLの attribute が大文字だろうが小文字だろうが関係ない irb> p Nokogiri::HTML.parse('<html><a HREF="/">link</a></html>').at('a')['href'] "/" これができない場合、パースには成功しているなら libXML2 のバージョンに問題がある irb> p Nokogiri::VERSION_INFO {"warnings"=>[], "libxml"=>{"loaded"=>"2.7.3", "binding"=>"extension", "compiled"=>"2.7.3"}, "nokogiri"=>"1.3.3"} まあ、バグしか入ってない Mechanize 0.9.2 をいまだに使ってる時点で知れてるが
617 名前:デフォルトの名無しさん mailto:sage [2009/09/25(金) 05:41:35 ] >>613 間違いが二点 ×if /<a href="(\w+)"\/> (以下略) △if /<a href="(\w+)"> \w は [A-Za-z0-9_] 及び日本語にマッチし [./] は含まない
618 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:23:50 ] net/httpあたりにリンク抽出のメソッドなかったっけ
619 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:31:31 ] モジュール名100回読め
620 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 11:43:33 ] uriだったかな
621 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 13:10:05 ] モジュール名100回読め
622 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 13:30:26 ] Net::HTTP や URI というクラスに HTML のリンク抽出のメソッドがあったら 俺は Ruby に失望する
623 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:05:37 ] URI.extract('<a href="www.example.org/index.html ">XXX</a> <a href="ttp:www.example.com">YYY</a>') => ["www.example.org/index.html ", "ttp:www.example.com"]
624 名前:デフォルトの名無しさん mailto:sage [2009/09/26(土) 16:07:42 ] 補足しておくと、HTMLの構造を理解して抽出しているわけではないので、 地の文だろうが href=の中身だろうがパターンに合致すれば抽出される。 というわけで >>622 も失望しないでよい。
625 名前:デフォルトの名無しさん [2009/09/27(日) 20:42:27 ] str.scan(/".+"|最新\d+/)
626 名前:デフォルトの名無しさん [2009/09/27(日) 20:43:40 ] >>625 は>>613 宛ね
627 名前:デフォルトの名無しさん [2009/09/29(火) 00:48:27 ] #------------------------------- #これはリンクを抜くプログラム #プログラム名 test.rb data.txt(これはダウンロードしたデータ) #>ruby test.rb #-------------------------------- i0=1 url="namidame.2ch.net" while line=gets r=line.scan(/<a\s.*?\bhref\s*=\s*(?:([^'"\s]+)|'([^']+)'|"([^"]+)")[^>]*>/i){ # r=line.scan(/<a\s.*?\bhref\s*=\s*(?:"([^"]+)")[^>]*>/i){ |s| str2 = s[0].sub(/\.\./,url) print str2 print "\n" } end これでうまいこといくのだが ついでにリンクアドレス+リンクの名前(下線部の部分) を対比して抜き出したいのです。 /<a\s.*?\bhref\s*=\s*(?:([^'"\s]+)|'([^']+)'|"([^"]+)")[^>]*> ここに正規表現付け加える/i) あともう少し・・・・・ 当方正規表現の白戸ですw。もっと勉強しなきゃ
628 名前:デフォルトの名無しさん [2009/09/29(火) 01:35:45 ] ttp://xy.yu.to/ 寂しい人向け 混む時間帯は人気ありすぎて定員オーバーで入れん 24時間荒れ放題の超カオスな絵チャット 本当の本当に完全無法地帯の絵チャット (2ちゃんとは比較にならない) 荒しプログラマーと防衛プログラマーの攻防戦 防衛側が強し、求む強力な荒しプログラマー しかも外国サーバー(イギリス)で管理人は荒し容認 殺人予告すらOKっぽい。ログなんて当然取ってないし
629 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 03:38:28 ] >>627 data = File.read('data.txt') list = data.scan(/<a\s+.*?href=(['"])(.+?)\1[^>]*>(.*?)<\/a>/im).map {|a| a[1,2] } list.each {|uri,str| puts uri,str,'' }
630 名前:デフォルトの名無しさん [2009/09/29(火) 03:48:07 ] 629>> なるほど。できました。どうもありがとうです。 Rubyも勉強しなきゃ。
631 名前:デフォルトの名無しさん mailto:sage [2009/09/29(火) 06:57:24 ] subject.txt と dat 使えとあれほど ローカルでやるぶんには負担ガチ無視の勉強中スクリプトでも全く問題ないが、 外部にアクセスするスクリプトは相手の負荷を自分のできる最大で考慮しろ というか HTML 出力以外の API が用意されてるならそっち使え そのほうが多くの場合速くて軽い
632 名前:デフォルトの名無しさん [2009/10/01(木) 23:57:20 ] >>HTML 出力以外の API が用意されてるならそっち使え 探したんだけどあるのかな? リンクとリンク名を表示するやつ
633 名前:デフォルトの名無しさん [2009/10/03(土) 22:34:21 ] 629の部分だけど list.each {|uri,str| puts url.gsub(/\.\./,"moji"),"STR="+str,'' } にするとエラーになるんだけど。 なんでだろう?変数が定義されていないみたいなエラーが
634 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 22:47:35 ] そのまんまだ エラーは勝手に省略するな 全部読め
635 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 23:33:57 ] [授業単元]不明 [問題文]次のような丁半ゲームのプログラムを作成しなさい。 丁半ゲームの始まりです。 2つのサイコロの目の合計が偶数なら丁、奇数なら半です。 では始めましょう! 予想を入力してください(丁 or 半):丁 結果は... #"." を1秒置きに表示するなど、工夫してみましょう。 1と3の丁! 大当たり! 先に作成した丁半ゲームを、次のように繰り返し行えるようにしてみましょう。 結果は... 1と2の半! 残念、ハズレです! もう一度勝負しますか?(yes or no):yes 予想を入力してください(丁 or 半): [環境]OS:windows terapadを使用しコマンド プロンプトより実行 [期限]月曜日 [制限]条件分岐や配列は並びました
636 名前:デフォルトの名無しさん mailto:sage [2009/10/03(土) 23:57:19 ] puts '丁半ゲームの始まりです。' puts '2つのサイコロの目の合計が偶数なら丁、奇数なら半です。' puts 'では始めましょう!' print '予想を入力してください(丁 or 半):' input = gets.chomp dice1 = rand(5) + 1 dice2 = rand(5) + 1 if (dice1 + dice2) % 2 == 0 then result = '丁' else result = '半' end puts print dice1.to_s + 'と' + dice2.to_s + 'の' + result.to_s + '!' if input == result then puts ' 大当たり!' else puts ' 残念、ハズレです!' end
637 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 00:08:58 ] puts '丁半ゲームの始まりです。' puts '2つのサイコロの目の合計が偶数なら丁、奇数なら半です。' puts 'では始めましょう!' print '予想を入力してください(丁 / 半 / q):' while input = gets.chomp do if input == 'q' then puts 'さようなら' exit end dice1 = rand(5) + 1 dice2 = rand(5) + 1 if (dice1 + dice2) % 2 == 0 then result = '丁' else result = '半' end puts '出目は…' sleep 0.5 puts dice1.to_s + 'と' sleep 0.5 puts dice2.to_s + 'の' sleep 0.5 puts result.to_s + '!' if input == result then puts '大当たり!' else puts '残念、ハズレです!' end print '予想を入力してください(丁 or 半 or q):' end
638 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 00:12:26 ] >>636 さん 丁半ゲームの始まりです。 2つのサイコロの目の合計が偶数なら丁、奇数なら半です。 では始めましょう! 予想を入力してください(丁 or 半):丁 結果は... #"." を1秒置きに表示するなど、工夫してみましょう。 1と3の丁! 大当たり! 先に作成した丁半ゲームを、次のように繰り返し行えるようにしてみましょう。 の追加分を含まないプログラムはどう書けばいいのでしょうか? あとなぜか大当たりしか出ません;;
639 名前:繰り返し条件が課題に指定してあった… mailto:sage [2009/10/04(日) 00:12:59 ] puts '丁半ゲームの始まりです。' puts '2つのサイコロの目の合計が偶数なら丁、奇数なら半です。' puts 'では始めましょう!' print '予想を入力してください(丁 or 半):' while input = gets.chomp do dice1 = rand(5) + 1 dice2 = rand(5) + 1 if (dice1 + dice2) % 2 == 0 then result = '丁' else result = '半' end puts '出目は…' sleep 0.5 puts dice1.to_s + 'と' sleep 0.5 puts dice2.to_s + 'の' sleep 0.5 puts result.to_s + '!' if input == result then puts '大当たり!' else puts '残念、ハズレです!' end print 'もう一度勝負しますか?(yes or no)' answer = gets.chomp if answer == 'yes' then print '予想を入力してください(丁 or 半):' else exit end end
640 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 00:26:34 ] class Game def prompt(msg) print msg; $stdout.flush; readline.chomp.strip end def game_init puts <<EOT 丁半ゲームの始まりです。 2つのサイコロの目の合計が偶数なら丁、奇数なら半です。 では始めましょう! EOT end def game_input while true line = prompt("予想を入力してください(丁 or 半):") return line if line == "丁" or line =="半" end end def game_result(choice) dice1, dice2 = rand(6)+1, rand(6)+1 result = (dice1 + dice2) % 2 == 0 ? "丁" : "半" print "結果は"; $stdout.flush (0..3).each { sleep 1; putc "."; $stdout.flush }; puts puts "#{dice1}と#{dice2}の#{result}!" + (choice == result ? "大当たり!" : "残念、ハズレです!") end def start game_init; choice = game_input(); game_result(choice) end end
641 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 00:30:58 ] class Game2 < Game def continue? while true line = prompt("もう一度勝負しますか?(yes or no):") return true if line == "yes" return false if line =="no" end end def start game_init continue = true while continue choice = game_input() game_result(choice) continue = continue? end end end Game2.new.start
642 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 00:36:10 ] $stdout.sync = true puts "丁半ゲームの始まりです。 2つのサイコロの目の合計が偶数なら丁、奇数なら半です。 では始めましょう!" prompt = '予想を入力してください(丁 or 半、終了は q):' print prompt while input = gets.chomp do exit if input == 'q' or input.empty? d1 = rand(6) + 1; d2 = rand(6) + 1 result = if (d1 + d2) % 2 == 0 then '丁' else '半' end msg = if input == result then '大当たり' else '残念、ハズレです' end puts '結果は…' sleep 0.4 ; print "#{d1}と" sleep 0.4 ; print "#{d2}の" sleep 0.2 ; print "#{result}! #{msg}!\n" print prompt end
643 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 01:11:49 ] >>635 です 皆さん親切に多彩な回答をして頂きありがとうごさいました
644 名前:デフォルトの名無しさん mailto:sage [2009/10/04(日) 03:00:04 ] ktns
645 名前:デフォルトの名無しさん [2009/10/05(月) 02:55:47 ] list.each {|uri,str| puts url.gsub(/\.\./,"moji"),"STR="+str,'' } これはじゃ無理なのかな。一部のURLの文字列..を文字に置き換える 処理。|url,str|のurlはstringじゃないんでstringオブジェクト にするにはどうしたらいいのだろう? urlの文字列を一部置き換えたいのですが・・・
646 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 03:21:40 ] .to_s()
647 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 03:25:37 ] >>645 エラーってこれだろ? NameError: undefined local variable or method `url' ... 指摘されているように「url は定義されていない」んだよ >>629 の最後の行と自分のプログラム見比べてみれ
648 名前:デフォルトの名無しさん mailto:sage [2009/10/05(月) 06:34:29 ] >>645 ヒント ゆーあーるえる ゆーあーるあい というか横着してないで入門書でも買って勉強すれ
649 名前:デフォルトの名無しさん [2009/10/05(月) 23:32:00 ] >>というか横着してないで入門書でも買って勉強すれ その通りですね。Ruby初めてなんで少しパニクッてます。 入門書欲しいですね。 最近 お金ないんですよ。 恥ずかしながら・・・・ まあ、がんばって勉強していこうと思います。 つまらないミスではずかしいです。ありがとうございます。
650 名前:デフォルトの名無しさん mailto:sage [2009/10/07(水) 23:59:32 ] # -*- coding: shift_jis -*- $KCODE='s' 文字コード指定する方法を2種類習ったんだけど $KCODE='s'が書いてあるときはエラーで # -*- coding: shift_jis -*-を追加したら動いたんだけど どんな違いがあるの?
651 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 00:09:19 ] >>650 1.8以前 KCODE 1.9以降 coding
652 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 00:30:53 ] スクリプト中に$KCODEへの代入を書く場合、その代入が実行されるのは、 そのスクリプトの構文解析が済んだ後だということを忘れないように。
653 名前:デフォルトの名無しさん mailto:sage [2009/10/08(木) 00:37:26 ] その説明で納得できる奴は宿題スレに来ないだろう・・・
654 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 01:35:47 ] >>652 どういう意味か教えてくれ
655 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 02:21:02 ] デフォルトの $KCODEは'NONE' なので漢字は考慮されない。 スクリプト中の $KCODE への代入は、その代入が実行されなければ無意味。 たとえば以下のスクリプトが Shift_JIS で書かれているとする。 $KCODE = 's' puts "表" 「表」のShift_JISのバイト並びは 0x95 0x5c(=バックスラッシュのコード) 2行めが p u t s " 0x95 バックスラッシュ " 改行 の並びに見える。 " で文字列が始まって、中に0x95と、エスケープした " で改行した状態。 文字列が閉じていないので、実行以前に構文解析段階でエラーになる。 オプションや #! 行は構文解析の前に処理されるので、$KCODE を設定するならそこで。
656 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 13:42:10 ] 鍵は箱の中、あるいは手遅れ
657 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 14:41:06 ] loop
658 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 19:32:31 ] 缶切り入りの缶詰
659 名前:デフォルトの名無しさん mailto:sage [2009/10/09(金) 22:58:47 ] >>655 スクリプトの内部で $KCODE="e" じゃなくて #!/usr/bin/ruby -Ke ってこと?
660 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 17:04:14 ] 難しくてわからんが、 # -*- coding: shift_jis -*- こっち使えばokってことだな
661 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 17:31:56 ] たとえば Shift_JIS と Windows-31J には以下のような違いがあるので注意されたし。 全角チルダと波ダッシュの例 "¥uff5e".encode('Windows-31J') #=> "¥x{8160}" "¥uff5e".encode('Shift_JIS') #=> Encoding::UndefinedConversionError: U+FF5E from UTF-8 to Shift_JIS "¥u301c".encode('Windows-31J') #=> Encoding::UndefinedConversionError: U+301C from UTF-8 to Windows-31J "¥u301c".encode('Shift_JIS') # => "¥x{8160}"
662 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:31:05 ] いやいや、初心者にコード並べて注意されたしと言っても読み解けないな U+FF5E from UTF-8 to Shift_JIS U+FF5Eは全角チルダの文字コード? u301cは波ダッシュの文字コード? U+FF5E from UTF-8 to Shift_JIS これは 文字コードU+FF5EをUTF-8からShift_JISに変換される? エラーの意味は Encoding::UndefinedConversionError これは文字コードが設定されていないので変換できない? どちらも変換後の設定がされていないからエラーですって事なのかな? でも違いって何だ???
663 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 19:57:41 ] >>661 はよくある初心者未満の語る場違いウンチク 気にしなくてよい 自分で詰まらないと理解できない
664 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:29:43 ] おまいら「〜」は何に見える?
665 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:34:35 ] >>664 〜←に見える(波線)
666 名前:デフォルトの名無しさん mailto:sage [2009/10/11(日) 20:59:04 ] どっちも波線には見えるんじゃないの?
667 名前:デフォルトの名無しさん mailto:sage [2009/10/12(月) 06:11:03 ] >>666 変なのがあった pc12.2ch.net/test/raed.cgi/tech/1242876647/766
668 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 15:45:37 ] config.ru って名前のファイルがあるらしいんだけど Rubyの拡張子ってrb以外にもあるの? Sinatraでshotgunの代わりにRack::Reloaderを使う方法 - Hello, world! - s21g blog.s21g.com/articles/1638
669 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 15:56:17 ] config.ja config.us config.fr config.ru
670 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 16:17:02 ] >>668 Rackの設定ファイル(rack up)
671 名前:デフォルトの名無しさん mailto:sage [2009/10/13(火) 17:32:06 ] 質問は質問スレで
672 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 00:37:51 ] よろしくお願いします [1] 授業単元:関数の復習と応用 [2] 問題文(含コード&リンク):() 曜日計算をします。曜日を2つ入力してください。 曜日1:水曜 曜日2:木曜 水曜 + 木曜 = 日曜 [3] 環境 [3.1] OS: WindowsXP [3.2] バージョン:Ruby-186-27 [3.3] 言語: (Ruby/JRuby/IronRubyどちらでも可 等) [4] 期限: 月曜日
673 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 01:19:33 ] >>672 プログラミング言語の前に日本言語を・・・ まあ俺はエスパーだから、 { "月曜"=>1 "火曜"=>2 "水曜"=>3 ・・・ } てやれば良いないか? ってアドバイスしてみる。
674 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 02:03:14 ] >>672 # -*- coding: utf-8 -*- require 'date' def a672(n) wd = ["日曜","月曜","火曜","水曜","木曜","金曜","土曜"] r = [] printf("曜日計算をします。曜日を%dつ入力してください。\n",n) 1.upto(n){|i| printf("曜日%d:\n",i) r << gets.chomp } s = r.inject(0){|x,v|x += wd.index(v)} % wd.size printf("%s + %s = %s\n",r[0],r[1],wd[s]) end a672(2)
675 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 02:42:30 ] >>673 すいません(´;ω;`) ハッシュは発展問題であります>< def youbi1(x) a = gets.chop if(a == "月曜") x = 1 elsif(a == "火曜") x = 2 elsif(a == "水曜") x = 3 elsif(a == "木曜") x = 4 elsif(a == "金曜") x = 5 elsif(a == "土曜") x = 6 else(a == "日曜") x = 7 end#i return(x) end ともうひとつdef youbi2(y)を同じ感じで作ったんですが 計算する部分がいまいちわからなくて質問しました
676 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 03:00:20 ] >>675 横レスだが、xを7で割った余りを求めるなら x = x % 7 または if x >= 7 x = x - 7 end
677 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 11:47:11 ] youbi = x + y if(youbi > 7) youbi = youbi - 7 end print "曜日計算をします。曜日を2つ入力してください。" print "曜日1:" a = gets.chop print "曜日2:" b = gets.chop print x, "曜日" "+" , y, "曜日" "=" ,youbi,"です。" と作ったんですが 132.rb:38: undefined local variable or method `x' for main:Object (NameError) 38行目はyoubi = x + yなのですが とでてしまいます
678 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 11:56:07 ] youbi = x + y の右辺に定義されてない x があるから怒られてるんだよ プログラムの冒頭に print x とかあったら何を表示していいかわからないだろう
679 名前:デフォルトの名無しさん mailto:sage [2009/10/17(土) 22:42:21 ] ポインタ動詞の演算は禁止だろうjk
680 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 12:01:04 ] これ曜日となってて日付の計算に見えるが、ただの代数と剰余の問題だな。 水曜 + 木曜 = 日曜から、月曜が1で日曜が7と推測できるわけか。
681 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 12:24:31 ] 月1火2水3木4金5土6日7 水+木=日 月1火2水3木4金5土6日0 水+木=日 (mod 7)
682 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 12:26:14 ] >>676 >if x >= 7 >x = x - 7 >end x >= 14 のとき誤動作するんですね わかります
683 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 17:38:46 ] >>682 最大が、日曜日(7)+日曜日(7)=14で、14-7=7だから日曜日になってOKなんじゃないの?
684 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 19:57:57 ] じゃあこっちがおかしいのか? x = x % 7
685 名前:デフォルトの名無しさん mailto:sage [2009/10/19(月) 20:00:08 ] >xを7で割った余りを求めるなら だから余りが7は無い罠w
686 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 04:51:13 ] こう? x = x % 7 + 1
687 名前:デフォルトの名無しさん mailto:sage [2009/10/20(火) 05:09:30 ] 小学生かお前は
688 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 16:31:13 ] 問題の定義が微妙なんだよね。例から推測するしかない。
689 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 16:47:58 ] まー良くも悪くも特に細かいこと考えてない問題なんだとは思う どれ書いてもマルはもらえる程度の課題なはず 本当に「曜日の計算」をしたいわけじゃないんだろう
690 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 17:22:19 ] これならいいんじゃない? x = (x-1) % 7 + 1
691 名前:デフォルトの名無しさん mailto:sage [2009/10/21(水) 17:54:30 ] 水曜 + 木曜 = 日曜 (水 + 木) * 10 + (曜 + 曜) = 日 * 10 + 曜 曜 = 0 水 + 木 = 日
692 名前:デフォルトの名無しさん [2009/10/23(金) 17:26:05 ] [1] 授業単元:プログラミング初歩 [2] 問題文(含コード&リンク): ?正の整数 n の約数の総和を求めるメソッド (関数) を,繰り返し(while,for)と再帰で書きなさい. ?繰り返しにより計算する関数を sigma_i(n),再帰により最計算する関数を sigma_r(n, m) とすること. 再帰の場合には,正の整数 k の約数の和を求めるときには sigma_r(k, k) で実行するものとする. [3] 環境 OS: Windows [4] 期限: 30日 [5] 習ったのは条件分岐、繰り返し、再帰です。 ちんぷんかんぷんです。よろしくお願いします。
693 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 17:33:29 ] 久しぶりの完全丸投げ
694 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 17:46:30 ] 再帰ってまだ理解できてないオレ あれ、なんで同じなのに違ってくるんだろう?
695 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:08:38 ] >>694 1に3足したら4だろ 4に3足したら7だろ 7に3足したら10だろ 3を足すという処理は同じなのに答が違うわけだが、何か疑問を差し挟む余地あるか?
696 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:09:24 ] >>694 引数は呼び出すごとに違ってるぞ
697 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:41:37 ] >>692 これでどうだ。 def sigma_i(n) r = 0 i = n while i > 0 if n % i == 0 r = r + i end i = i -1 end r end def sigma_r(n, m) if m > 0 if n % m == 0 m + sigma_r(n ,m - 1) else sigma_r(n, m - 1) end else 0 end end p sigma_i(4) p sigma_i(10) p sigma_r(4, 4) p sigma_r(10, 10)
698 名前:デフォルトの名無しさん mailto:sage [2009/10/23(金) 18:47:04 ] >>696 だから>>694 が同じだと思っているのは、実は違う呼び出しだということ。
699 名前:FXIlNJFCxDAwble mailto:2g53fl0.@gmail.com [2009/10/23(金) 21:51:08 ] Hey 911,You're article is great. ,
700 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 01:37:11 ] >>697 ありがとうございました!助かりました。
701 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 19:20:15 ] rubyプログラム書いているのですが、 頭で流れを作ってそのままプログラムを書いていると 同じような処理を繰り返し使っているのですが、 完成まで持って行ってから 流れを見直して、クラスかと化して まとめていけばいいんでしょうか? それとも設計書などを考えてから書いた方がいいんでしょうか? それとも他に何かいい方法ありますか? プログラム書いていてなんかもっちゃりしていて 歯がゆいんですが・・・
702 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 19:49:52 ] 初心者スレ的に回答 >>701 いきなりクラスを作るのは敷居が高いですが、メソッドを作ることは躊躇しないでください そのために必要なのは、 入力 → [なにか処理機構] → 出力 という考え方です 「この入力をどうにかするとこういう結果が得られる」という部分を小さめに作ります そして、入力をメソッドの引数に、処理機構を小さなメソッドに、出力をメソッドの返り値にします ローカル変数2 = メソッドA(ローカル引数1, 固定の文字列とか) ローカル変数3 = メソッドB(ローカル引数2) のような書き方の連打になりますが、とりあえずはそれで構いません インスタンス変数はとりあえず完成ギリギリまで使わないでください ローカル変数と違ってメソッド定義を飛び越えて自由に値のやり取りができますが、おおむね即破綻します 完成させてから構成変更だと思考的にもしんどいので、 「とりあえず途中経過だけでも表示」というレベルで区切るとよござんす
703 名前:デフォルトの名無しさん mailto:sage [2009/10/25(日) 19:55:09 ] >>701 自分の書こうとしているプログラムと似たプログラムを探して ソースを読んでみるといいんじゃまいか また対処しようとしている問題は既に誰かが解決しているかもしれない そういった問題に対する解決レシピを集めたのがデザパタなので 興味があるなら読んでみるといいかもしれない てかなぜ宿題スレ
704 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 04:20:06 ] B列に1万近くの数値があり、そこから特定の範囲(例えば100〜101など)に適した数値を 指定したセルに抽出し、複数ある場合はそのしたに並べて抽出するようなプログラムを作りたいのですが、 どのようにしたらよいでしょうか? Excel2003です
705 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:16:22 ] まず、Excell2003の仕様を教えてくれ。
706 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 21:52:01 ] スレチ ヒント:VBA
707 名前:デフォルトの名無しさん [2009/11/09(月) 22:30:17 ] excel => csv csvをrubyで色々いじる ruby.csv => excel とすればいいんじゃね?
708 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 22:33:33 ] >>705-707 ttp://www.google.com/search?q=%22B%E5%88%97%E3%81%AB%EF%BC%91%E4%B8%87%E8%BF%91%E3%81%8F%E3%81%AE%E6%95%B0%E5%80%A4%E3%81%8C%E3%81%82%E3%82%8A%22&hl=ja&lr=lang_ja&safe=off&num=50&filter=0
709 名前:デフォルトの名無しさん mailto:sage [2009/11/09(月) 23:26:38 ] >>704 ttp://jp.rubyist.net/magazine/?0004-Win32OLE
710 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 05:16:15 ] てかマルチかと
711 名前:デフォルトの名無しさん [2009/11/10(火) 10:05:37 ] Linuxのカーネルを読む事の素晴らしさについて教えてください。 ファイルシステムやプロセススケジューラ、ネットワーク、モジュールレベルで教えてください。
712 名前:デフォルトの名無しさん mailto:sage [2009/11/10(火) 10:19:06 ] スレチ
713 名前:デフォルトの名無しさん [2009/11/11(水) 00:40:23 ] シーザー暗号を解くプログラムを作り,以下の暗号文を解きな さい. Hwduytlwfumd nx ymj uwfhynhj fsi xyzid tk mninsl nsktwrfynts. Ns rtijws ynrjx, hwduytlwfumd nx htsxnijwji f gwfshm tk gtym rfymjrfynhx fsi htruzyjw xhnjshj, fsi nx fkknqnfyji hqtxjqd bnym nsktwrfynts ymjtwd, htruzyjw xjhzwnyd, fsi jslnsjjwnsl. Hwduytlwfumd nx zxji ns fuuqnhfyntsx uwjxjsy ns yjhmstqtlnhfqqd fiafshji xthnjynjx; jcfruqjx nshqzij ymj xjhzwnyd tk FYR hfwix, htruzyjw ufxxbtwix, fsijqjhywtsnh htrrjwhj, bmnhm fqq ijujsi ts hwduytlwfumd. 暗号を解く関数は problem2 とし,関数 problem2 の引数を暗 号の文字列とする.(例: def problem2(str)) よろしくお願いします。 [1] 授業単元:プログラミングRuby [3] 環境 [3.1] OS: WindowsXP [3.2] バージョン:Ruby-186-27 [3.3] 言語: (Ruby/JRuby/IronRubyどちらでも可 等) [4] 期限: 20日
714 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 01:13:27 ] def problem2(s, o): for c in s: print chr((ord(c) + o - ord('a')) % 26 + ord('a')),
715 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 01:45:20 ] >>713 アルゴリズムが指定されているはず あらかじめシフト数が与えられているのか、 それともまさか頻度分析とかで解くのか
716 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 02:21:15 ] >>715 一応、授業の参照ページはここなのですが・・・ www.aoni.waseda.jp/ichiji/2009/second-term/ruby-06-1.html
717 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 10:31:37 ] >>716 昨日出たばっかりなんだから、ひとまず自力でやってみろよ。 これだから先生勉強しろって怒るんだぞ
718 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 10:46:29 ] 山のように、練習(予備)問題が提示されてるのにこれだものなぁ
719 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 11:53:57 ] >>717-718 勉強の意欲のない学生に何を言ってもムダ。 勉強をしに大学に入っているわけじゃないんだから。 我々は粛々と解答していればいい。 俺はまだ初心者だから回答できないけど。
720 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 20:05:39 ] # 最頻出の文字を発見する(これが元々 e だと考えられる) def find_char(str) h = Hash.new(0) str.gsub(/[^a-zA-Z]/, "").downcase.split("").inject(h) {|a,b| a[b] += 1 a }.sort {|a,b| -a[1] <=> -b[1] }[0][0] end # 英字をn文字シフトする # 英字でない文字はそのまま返す def shift_char(c, n) case c when /[a-z]/ ((c[0] - ?a + n + 26) % 26 + ?a).chr when /[A-Z]/ ((c[0] - ?A + n + 26) % 26 + ?A).chr else c end end def problem2(str) result = "" shift_num = -(find_char(str)[0] - ?e) str.each_byte do |x| result << shift_char(x.chr, shift_num) end result end
721 名前:デフォルトの名無しさん mailto:sage [2009/11/11(水) 22:15:30 ] 26足さなくてもいいんじゃない?
722 名前:デフォルトの名無しさん [2009/11/11(水) 22:28:03 ] >>720 str = "Hwduytlwfumd nx ymj uwfhynhj fsi xyzid tk mninsl nsktwrfynts. Ns rtijws ynrjx, hwduytlwfumd nx htsxnijwji f gwfshm tk gtym rfymjrfynhx fsi htruzyjw xhnjshj, fsi nx fkknqnfyji hqtxjqd bnym nsktwrfynts ymjtwd, htruzyjw xjhzwnyd, fsi jslnsjjwnsl. Hwduytlwfumd nx zxji ns fuuqnhfyntsx uwjxjsy ns yjhmstqtlnhfqqd fiafshji xthnjynjx; jcfruqjx nshqzij ymj xjhzwnyd tk FYR hfwix, htruzyjw ufxxbtwix, fsijqjhywtsnh htrrjwhj, bmnhm fqq ijujsi ts hwduytlwfumd." 26.times do |i| puts "i = #{i}" tmp = "" str.each_byte do |c| ss = "" << c if ss.downcase =~ /[abcdefghijklmnopqrstuvwxyz]/ # $(B%"%k%U%!%Y%C%H$J$i(B if ss == ss.downcase # $(B>.J8;z(B tmp << ((c - 97 + i) % 26) + 97 else # $(BBgJ8;z(B tmp << ((c - 65 + i) % 26) + 65 end else tmp << c end end puts tmp end
723 名前:713 mailto:sage [2009/11/11(水) 22:48:09 ] ありがとうございました。
724 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 08:32:07 ] >>717-718 勉強の意欲のない学生に何を言ってもムダ。 勉強をしに大学に入っているわけじゃないんだから。 我々は粛々と解答していればいい。 俺はまだ質問者だから回答できないけど。
725 名前:デフォルトの名無しさん [2009/11/12(木) 22:32:47 ] >>723 先生は課題点を上げたいからあんなにヒントをくれてるんだぞ お前さんが丸投げをしたことを先生が知ったら、先生怒るぞ 人の答えを丸写しして、出来ましたと言うより 下手なりに考えて駄目だった方が、先生嬉しいと思うぞ
726 名前:デフォルトの名無しさん mailto:sage [2009/11/12(木) 23:32:35 ] 世の中が結果ばかり求める風潮だからこうなる それもこれも理系離れが原因
727 名前:デフォルトの名無しさん [2009/11/21(土) 02:15:18 ] _,,..r'''""~~`''ー-.、 ,,.r,:-‐'''"""~~`ヽ、:;:;:\ r"r ゝ、:;:ヽ r‐-、 ,...,, |;;;;| ,,.-‐-:、 ヾ;:;ゝ :i! i! |: : i! ヾ| r'"~~` :;: ::;",,-‐‐- `r'^! ! i!. | ;| l| ''"~~ 、 i' | イェ〜イ i! ヽ | | | ,.:'" 、ヽ、 !,ノ ゝ `-! :| i! .:;: '~~ー~~'" ゙ヾ : : ::| >>713 見てるー? r'"~`ヾ、 i! i! ,,-ェェI二エフフ : : :::ノ~|`T ,.ゝ、 r'""`ヽ、i! `:、 ー - '" :: : :/ ,/ 単位取れたー? !、 `ヽ、ー、 ヽ‐''"`ヾ、.....,,,,_,,,,.-‐'",..-'" | \ i:" ) | ~`'''ー---―''"~
728 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 06:16:45 ] >>726 もともと理系は徴兵逃れっていう相場だったのだが。
729 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 07:59:45 ] イミフ
730 名前:デフォルトの名無しさん [2009/11/21(土) 11:29:11 ] >>716 先生日に日に厳しくなってるワロタwwww
731 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 11:35:43 ] シーザー暗号って最終的には解読できてるかは人間でなきゃ判断できないんだから ひとつシフトして目視を25回やったらいいんじゃないの?
732 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 12:05:48 ] まともに構文解析できるかどうかで判定する方法とかないわけではないけど、 題意としては、頻度調査で最頻文字=eと仮定すればよい、ということのようだ。
733 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 12:07:27 ] 英語なら is や the が存在する時点で成功候補に残せばいいだけだけど(せいぜい4個程度に絞れるはず)、 下手に日本語ローマ字表記とかだと厳しいな
734 名前:デフォルトの名無しさん mailto:sage [2009/11/21(土) 12:12:15 ] 「黄金虫」は解読シーン以外はオマケだよな。
735 名前:731 mailto:sage [2009/11/21(土) 12:27:27 ] なるほどなあ 単語に区切って各単語が辞書に含まれてないか探すとかなら機械に任せられるね なんか珠玉のプログラミングを思い出した
736 名前:デフォルトの名無しさん [2009/11/22(日) 23:47:01 ] 質問です。以下の問題において、def char_code(str)の(str)に(”abc”)と入力すると、resultが["a","b","c"]と返ってきます。答えはこれでよいのでしょうか?(これでは、コンピュータ内部でどう表現されているかがよくわからないと思うのですが…) [1] 授業単元:プログラミング初歩 [2] 問題文(含コード&リンク): 文字列はどう表現されているか? def char_code(str) result = Array.new # 配列 result を作成 for i in 0..str.length-1 # 文字列の長さ分繰り返す result[i] = str[i] # 文字列のi+1番目の文字を result の第i要素に入れる end result # result を返す end 1. 文字列 "abcdefghijklmnopqrstuvwxyz" がコンピュータ内部でどう表現されているか確認しなさい [3] 環境 OS: Windows [3.1] OS: Windows [4] 期限: ASAP [5] その他の制限: irbを使っています。
737 名前:デフォルトの名無しさん [2009/11/22(日) 23:48:16 ] #736と同じものです! 同じく def char_code(str)に関しての追加の質問をさせてください。 for i in 0..str.length-1 に関してなのですが、基本の形は授業でfor式は for i in n..m と習いました。 この形に対し、mはstr.length-1となっていますが、 これは、配列 str[0] からstr[length-1]の範囲を示しているのでしょうか? よろしくお願いします!
738 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:49:02 ] Ruby 1.9でやってる?
739 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:50:36 ] >>738 そうだな 課題は Ruby1.8.6 か Ruby1.8.7 向けなのに、こいつのインストールした実行環境が Ruby1.9.1 なのだろう Ruby1.8.7 をインストールして課題やれ
740 名前:デフォルトの名無しさん mailto:sage [2009/11/22(日) 23:55:35 ] >>737 String クラスのオブジェクトの [] メソッド、実質上は「 文字列[x] 」 は、 文字列の x バイト目のASCII コードを整数で返す …Ruby 1.8.6 や Ruby1.8.7 ではな。 課題の意図を汲んで Ruby 1.8.7 で課題を実行すると irb> def char_code(str) result = Array.new # 配列 result を作成 for i in 0..str.length-1 # 文字列の長さ分繰り返す result[i] = str[i] # 文字列のi+1番目の文字を result の第i要素に入れる end result # result を返す end irb> p char_code("abc") [97, 98, 99] と、文字 a の ASCII コード 97 と b の ASCII コード 98 と c の ASCII コード 99 の配列が返る。 「そうかー文字そのものではなくなんか文字に対応した数字で表されてるのかー」と納得するのが多分正解。
741 名前:デフォルトの名無しさん [2009/11/23(月) 00:06:19 ] 質問。以下の問題において、shift_string(string, n) に shift_string("abc",1)と入力すると、rubyが何も応答してくれなくなります。 この式の(string, n) の中身の正しい入力方法を教えていただきたく。 [1] 授業単元:プログラミング初歩 [2] 問題文(含コード&リンク): def shift_string(str,n) for i in 0..str.length-1 str[i] = str[i] + n # 文字列を配列と見なして文字コードを変更 end str end 「問題」 * irb で適当な文字列を string に代入し,shift_string(string, n) を実行してみよう.ただし,n は適当な整数とする. * shift_string(string, n) の実行後に string がどう変わったか確認しよう. [3] 環境 OS: Windows [3.1] OS: Windows [4] 期限: [5] その他の制限:
742 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:11:18 ] 1.9で数字にする方法は?
743 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:15:37 ] あるけど、今回の宿題の本質・出題意図から外れるので、 素直に1.8.7をインストールしてください。
744 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 00:16:24 ] >>741 shift_string("abc",1) だと()が日本語文字なので irb が落ちた 問題文のコードには問題を感じない ちなみに Ruby 1.9.1 だと当たり前だが + メソッドのあたりでエラーが出て動かないよ 1.9.1 で動作させるのは難しいから素直に Ruby 1.8.7 あたりをインストールのが吉
745 名前:デフォルトの名無しさん [2009/11/23(月) 02:59:14 ] 皆さま、ありがとうございます!#736です。 Ruby1.8.7で実行したら問題解決しました!すっきりです! ついでに教えてもらいたいのですが…以下の二つの問題の答えを教えていただけないでしょうか。とくに二つ目! 前回風邪で休んだのにメールで聞いたら先生がキレてて教えてくれませんでした…。 [1] 授業単元:プログラミング初歩 [2] 問題文(含コード&リンク): ・文字列を,a ならば z,b ならば y,c ならば x のように,小文字も大文字もアルファベットの逆順の出現文字に置き換えるプログラムを作りなさい. ・文字列が与えられたとき,アルファベットを大文字,小文字を区別せずに出現頻度順に小文字で並べた文字列を返すプログラムを作りなさい. [3] 環境 OS: Windows [4] 期限: [5] その他の制限: irbで!
746 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 11:10:02 ] >>745 > ・文字列が与えられたとき,アルファベットを大文字,小文字を区別せずに出現頻度順に小文字で並べた文字列を返すプログラムを作りなさい. >>720 を参考に。
747 名前:デフォルトの名無しさん mailto:sage [2009/11/23(月) 12:31:09 ] >>745 作ってみたけど、どうかな? 課題1 alphabet = ('a'..'z').to_a lloop do print "a〜zのアルファベット:" input = gets.chomp break if input == %{} if /^[a-z]$/ =~ input puts alphabet.reverse[ alphabet.index(input) ] end end 課題2 sentences = <<EOS I love Ruby. Do you? Do you like coffee? I'd rather like tea. What do you do. I am a neet. Say "You're a smart guy". No way. EOS sentences.scan(/[a-z']+/i).inject( Hash.new(0) ){|cnt, word| cnt[word.downcase] +=1; cnt}.sort{|a, b| [b[1], a[0]] <=> [a[1], b[0]] }.each{|arr| printf "%-8s %-2d回\n", arr[0], arr[1]}
748 名前:デフォルトの名無しさん mailto:sage [2009/11/24(火) 12:22:54 ] >>745 ,747 大文字、文字列にも対応版 h = {} alphabet = ("a".."z").to_a alphabet.each_with_index{|v,i|h[v] = alphabet[-1 - i]} alphabet = ("A".."Z").to_a alphabet.each_with_index{|v,i|h[v] = alphabet[-1 - i]} loop do print "a〜zの文字列:" input = gets.chomp break if input == %{} p input.split("").map{|x| h[x] || x }.join end
749 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 00:25:53 ] String#tr
750 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 02:07:57 ] >>745 2ch などを含むインターネット,本からの丸写しはカンニングと見なし厳しい態度で臨みます. 最悪の場合には,今学期の履修全科目の単位を失う事になります.悪質な場合には停学処分です! ttp://www.aoni.waseda.jp/ichiji/2009/second-term/ruby-lecture-plan.html
751 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 06:46:34 ] 2chのコピペはともかく だれが書いても本の丸写しとほとんど変わらないコードになるレベルのプログラムで そんなこと言われてもw
752 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 07:54:01 ] >>751 お前大学行ったことないだろ
753 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 09:26:18 ] >>749 'z'-'a'は不可。
754 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 09:30:04 ] >>751 > だれが書いても本の丸写しとほとんど変わらないコードになるレベルのプログラム これすら出来ない大学が多いのもまた事実だな。
755 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 09:50:12 ] 下手をすると、「2ch などを含むインターネット,本からの丸写し」すらまともにできないw
756 名前:デフォルトの名無しさん [2009/11/25(水) 12:37:02 ] >>745 HP見た限り先生2ch見てるみたいだから、絶対特定されてるだろww
757 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 12:45:39 ] というか授業でやってない書き方をした時点でばれる 小学校の宿題に高校の知識を持ち出して回答したようなものだ 小学生はそれが高校で習うようなことだとは気づかない 宿題を採点する先生だけがわかる そんな感じ
758 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 13:21:38 ] まぁただの脅しだろうな まともな学校なら問題の作り方を工夫するだろ >>757 のような罠を仕込むかも知れないし 学生番号を使って問題に可塑性を持たせるとか
759 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 13:37:20 ] 先生「これ宿題ね」 生徒「わかんねー、2ちゃんで聞こう」 後日 生徒「やってきました」 先生「それ、オレが2ちゃんで与えたインチキ解答だよ」
760 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 13:40:15 ] わざと突っ込み所満載の解答書いたり 素人っぽい書き方しないといけないから 先生もたいへんなんだぞ
761 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 19:26:10 ] ご両親は >>713 のために命を削って働いて 決して安くない授業料を捻出しているのに、 >>713 ときたら……。 しかも、赤い文字で「悪質な場合には停学処分です.」とまで 書かれたりして……。
762 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 19:45:37 ] 国立は安いっすよ
763 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 19:47:18 ] # あまりに勉強しないので宿題を出しました.来週の授業までに必ずやってくること.(11月10日) 宿題,問題6.2をやってきて発表した3人 (1A061306,1B070806,1H070619) にはリポート点を50点加点します. 今後も今日のような演習を何度かやり,発表してくれた人には加点します. その代わりにリポートの課題を難しくします. 勉強しない人はプログラミングの授業を取るべきではありません. (11月17日) いまどきのゆとりは酷いもんだな 教官の魂の叫びが聞こえるw
764 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 19:53:35 ] 課題が基礎ばかりだから最近の携帯やPCに目が肥えたゆとりにとってはつまらなさすぎるんだろう 興味の引くゲーム作成なんかを課題で出して具体的な問題解決の道筋を作るために それぞれの課題があるんだということを教えるのを目的にすべき (大学が専門学校化しても漏れは知らん)
765 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 20:04:34 ] >>764 お前大学行ったことないだろ
766 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 20:10:53 ] ゲームじゃなくてもプログラムを作れるくらいの甲斐性が大学生には求められる 授業ネタがゲームじゃないから投げ出というのなら無理して大学にこなくてよし 毎年ゲーム理論の講義で見られるネタを使いまわす必要もあんめえ
767 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 20:40:02 ] 「ゲーム理論」と「ゲーム」はかなり違う気がする。
768 名前:デフォルトの名無しさん mailto:sage [2009/11/25(水) 23:13:25 ] ここに毎回書き込んでるのって1Aの人じゃないの? 1Fの人まだ提出していないみたいだし とりあえず、3人カンニングおめでとう
769 名前:デフォルトの名無しさん [2009/11/25(水) 23:29:09 ] >>768 もうちょっと話を聞かせてよ 今回の暗号の課題は3人が同じ回答を提出したの? それは2chに書かれた回答だったの?それともほかの場所に書かれた回答? 先生はなぜ今回のが2chだと知った? 暗号文で検索すると見つかったから? 2chをさかのぼってログチェックするって先生言ってる?
770 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 02:28:18 ] 俺とか勉強したくて必須でない選択科目もいっぱい取ったなー。 最近では、大学にもぐりこんで、講義を聞きにいこうかと思ってる。
771 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 03:19:02 ] まともな学校なり先生だったらバレるね 疑わしき場合は呼び出しされて 口頭でプログラムの内容を説明させたりなんてこともある だからここで宿題やってもらう人は回答を丸写しするんじゃなく 咀嚼した上で改変して出すぐらいのつもりでやるべき だったら最初から自分でやれって話だけど
772 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 08:36:19 ] ちなみに、変数名を別のものに変えたぐらいだと、 プログラムの構造を、可視化したり類似度をチェックするツールを使ってれば、 簡単に見切られるよ。 学会発表で見たことあるw
773 名前:デフォルトの名無しさん mailto:sage [2009/11/26(木) 09:09:32 ] むかし bit で課題プログラムのコピー検出法の記事を読んだことがあるなー。
774 名前:デフォルトの名無しさん mailto:sage [2009/11/27(金) 01:34:31 ] __,,/ _, ----`ヽ :. :. / _ ___ 、\ / / i \ \\ :. :. ,'./ i ヽ:. ヽ:.:.. ヽ.ヽ ,'/ / .ハ ヽ ヽ:.:.:.:. ヽ::.. ヽヽ :. :. |i .i i .i / ヽ ト 、 \、:.:.:. ',:.',:.:.lヽ} |i .i l :N_, -弋 \弌弋ナ:}:.:} :. |i∧ ', :{ ,ィjモト \ イjミトイイV :. な… .| :メヽ.', `ozZ} izN。ハ::{ なんなんだよもん? :. | :ヾ_! ゝ "゙゙ ' `゙ ハ.:', :. ここ、どこだよもん? | :.:_イ .:.ヽ. (二フ , イ :.:.:!:.ヽ なんであたし :. / rィイ | :.:.ヽ: >r/`<ノ .:.::.}ヽ、\:. 貼られたんだよもん? / ∧l;l ! :.:.:.://{二 ̄ .} ..:..::リ//ハ.:\ :. / .{. ',ヾ、ヽi .:.:.{ /(^` |.:.:.:.//: : :.}: . ヽ.:. / / ) ヽ ヾ、ヽ:.ハ ヤ{ ∧/.-‐'": : |:.:. i ', ./ .,イ .:..} : :\ヾレ'ハ ∧__ノノハヾ、 : : : l:.:.: .ハ ', { /| .:.:ハ : : :i Y {ヾ`Yヽニン'ノ}: : } : : : :/:.:.:/ }:.} V | .:.:/:.:|_,ィ' ̄ ヽ三{ `ー-ノ : イ : : :/:.:i.:{ リ ヽ:.:{、.:.V : : ヘ : : {: : :/:.::∧| ヽ! )人 : : :人 : : : / \! :. " ヽ : : : : :/イ{ :.ノ: : : :.\ :. :. \__///: :\______/: : : : : : : ヽ / //: : :|;|: : : : : : i: : : __: : : : ', :. / 、 {;{ |;| . : i/. : : : : : :| / `Y;{. . . .|;|. : : : /i: : : : : : : : :l
775 名前:デフォルトの名無しさん [2009/12/05(土) 17:20:38 ] age
776 名前:デフォルトの名無しさん [2009/12/09(水) 11:48:56 ] コピーがコピーになっていないのですがコピーするにはどうすればいいですか 具体的には a = Object.new b = a b.x = 100 b.y = 200 とかするとbだけでなくaの値も変わってしまいます。
777 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 11:54:23 ] a = Object.new b = a は、コピーではないので、コピーにはなりません。 b = a.dup で、望む結果になるかもしれませんし、ならないかもしれません。 (b.x は複製されても、b.c.x は複製されてないかもしれない)
778 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 12:11:24 ] >>776 変数はオブジェクトについたラベルです ラベル名 → オブジェクトID というような対応表を Ruby が管理していて、 該当ラベルの変数が呼ばれたときにはその表の対応を参照して該当オブジェクトが使われます 変数というハコが入れ物オブジェクトとして存在するわけではありません b = a は 「aという変数名で参照されるオブジェクトにbという変数名のラベルを1個(追加で)貼る」 という以上の意味はないです a という変数名も、 b という変数名も、元の(今回は Object.new で作った)オブジェクトを指します オブジェクトの複製は>>777 の言うように dup や clone で行いますが、 実際にどのように複製されるかはクラスが自分で決めています 一般的には、オブジェクトの明示的な複製をする機会は少ないです たいていは通常の参照でなんとかなるからです
779 名前:776 [2009/12/09(水) 12:46:13 ] dupとclone を試しました。やっぱりコピーできません。 a = Object.new b = a.clone b.x = 100 b.y = 200 でもaの値も変わってしまいます。 どうすれば???
780 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 13:01:24 ] > 実際にどのように複製されるかはクラスが自分で決めています >>779 つまり君は嘘をついている a は Ruby の Object クラスのオブジェクトではないだろ(Object には x= メソッドも y= メソッドもない) ここに書き込むときに名前を勝手に置き換えているか、自分で Object クラスを拡張している >>778 も言っているが、普通はオブジェクトの複製行為は必要ない 複製のときの動作を自分で作ることもできるが、スレの範疇を明らかに逸脱している その「コピー」で本当は何したいのかを言ったほうがたぶんいろんな意味で早い
781 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 13:08:06 ] >>780 >その「コピー」で本当は何したいのかを言ったほうがたぶんいろんな意味で早い んだなす というか自作クラスのオブジェクトの複製とか寒気がする 極力やりたくないしやって欲しくないし対応したくもねえ
782 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 13:56:16 ] >>781 これ書き加えるだけじゃないの? def クラス名 attr_access :x, :y def dup o = super() o.x, o.y = @x, @y return o end end
783 名前:デフォルトの名無しさん [2009/12/09(水) 21:35:26 ] > つまり君は嘘をついている この台詞でオウムの村井がサリンの製造方法を知っていることを指摘する発言 〜〜を知っていると言うことはあなたはサリンの製造方法を知っていると言うことだ っていう発言を思い出した
784 名前:デフォルトの名無しさん mailto:sage [2009/12/09(水) 21:47:26 ] そんな下らないことを書くためにスレを上げたのか
785 名前:776 [2009/12/10(木) 18:16:19 ] できた。俺って天才かも。 def deep_copy Marshal.load(Marshal.dump(self)) end Objectはすいません適当に書きました。 本当はBoneです。
786 名前:デフォルトの名無しさん mailto:sage [2009/12/10(木) 18:59:50 ] >>785 常套手段だね。万能ではないが。 class Bone def initialize @a = Hash.new{} end def deep_copy Marshal.load(Marshal.dump(self)) end end a = Bone.new() a,dc #=> TypeError: can't dump hash with default proc
787 名前:uy ◆e6.oHu1j.o mailto:sage [2009/12/10(木) 23:55:34 ] class O attr_accessor :x attr_accessor :y end a = O.new b = a.clone b.x = 100 b.y = 200 p a.x p a.y p b.x p b.y 配列と構造体とクラスとかはデフォルトでCでいうポインタみたいになってる .cloneで、値渡しになる
788 名前:uy ◆e6.oHu1j.o mailto:sage [2009/12/11(金) 00:53:20 ] やべぇ、過去レスまともに読んでなかった なんだこの流れ
789 名前:デフォルトの名無しさん [2009/12/19(土) 09:48:26 ] Sengoku.new "Takeda"=>"Shingen", "Uesugi"=> "Kenshin" これ何でエラーになるのでしょうか
790 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 09:57:26 ] 色々言いたいことはあるがとりあえずスレタイ嫁
791 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 10:01:04 ] 「これ何でエラー」って何ですか(素 どんな粗悪な授業を受けてるのかは知らないけど、Rubyの引数括弧は基本省略しない パースに失敗したときの修正に逆にめんどくさいからだ Sengoku.new("Takeda"=>"Shingen", "Uesugi"=> "Kenshin") あるいはそもそもハッシュであるので Sengoku.new({"Takeda"=>"Shingen", "Uesugi"=> "Kenshin"})
792 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 10:09:17 ] すいませんでした。
793 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 14:38:43 ] 単純にメソッドを実行して終わり、なら省略しても良いが メソッドを実行し、戻り値を得るのなら省略はやめとけ 解らんなら括弧付けとけ
794 名前:デフォルトの名無しさん mailto:sage [2009/12/19(土) 20:18:04 ] 括弧省略はDSL風に使うとか、メソッドチェーンするとき用
795 名前:デフォルトの名無しさん mailto:sage [2009/12/24(木) 12:33:32 ] 慣習的に省略するメソッドもある pとかputsとか
796 名前:デフォルトの名無しさん mailto:sage [2010/01/09(土) 17:28:20 ] 俺は戻り値を使うか捨てるかで書き分ける p、puts は戻り値を捨てるから括弧は書かない
797 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 13:26:40 ] 質問です! 文字列を受け取ってスペースと記号を削除した文字列を返すメソッドを作りたいんですが どうすればいいでしょうか? ちなみに条件はgsubメソッドをつかうこと 記号は全角も半角も含む(","とか"。"とか"?"とか"?"とか) どなたかお願いします
798 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 13:43:20 ] str.gsub(/[#{Regexp.quote('記号だと思うもの')}]/s){''} '記号だと思うもの' には記号をそのまま書く ただし半角の ' を書きたい場合には2文字で \' と書く //s の s は str がWindowsのShift_JISな文字列のときで、sかuかeあたりを書かないと絶対動作しない # Shift_JISの文字列 str から !?!?\'" .,、。 の11文字を取り除いたものを返す str.gsub(/[#{Regexp.quote(' !?!?\'" .,、。')}]/s){''}
799 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 14:35:37 ] >>798 ちゃんと動作しました! 早急なレスありがとうございます
800 名前:デフォルトの名無しさん mailto:sage [2010/01/20(水) 14:48:21 ] ていうかちゃんとRubyのバージョンを書こうね 特に正規表現のエンジンがRuby1.8系と1.9系では違うから。
801 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:01:09 ] 1.9のはおにぐるまっていうんだよね? 1.8のにも名前があるの?
802 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:02:26 ] ないです というか1.9で外部の鬼車を正規表現エンジンとして取り込んだから名前がもともとついてただけ 普通は特定の内部システムに名前がついていることはない 鬼車はRuby以外でも利用可能
803 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:14:33 ] 古い regex.[ch] の先頭のあたりによると、 /* Extended regular expression matching and search library. Copyright (C) 1993, 94, 95, 96, 97, 98 Free Software Foundation, Inc. /* Definitions for data structures and routines for the regular expression library, version 0.12. Copyright (C) 1985,89,90,91,92,93,95,96,97,98 Free Software Foundation, Inc. という素性のエンジン。Emacs の一部だっけ?
804 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 19:18:07 ] Emacsの改造
805 名前:デフォルトの名無しさん mailto:sage [2010/01/28(木) 20:21:45 ] いわゆるGNU regexpって呼ばれてた気がする
806 名前:デフォルトの名無しさん [2010/02/03(水) 06:57:34 ] Ruby on Rails 3.0 Release Notes guides.rails.info/3_0_release_notes.html
807 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:13:02 ] [1] 授業単元: RoR + DB [2] 問題文(含コード&リンク):Ruby on Rails + MySQL のアプリ作成 [3] 環境 [3.1] OS:Win 7 [3.2] バージョン: Ruby 1.8.6、Rails 2.0.2 [3.3] 言語: Ruby On Rails [4] 期限: 10年2月28日 [5] その他の制限: gem install mysql web画面で表示されます !!! The bundled mysql.rb driver has been removed from Rails 2.2. Please install the mysql gem and try again: gem install gem install mysql を実行しても解決できません いったいどうしたらよいでしょうか???
808 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:23:41 ] gem install mysql -- --with-mysql-config=mysql_configの絶対パス
809 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 21:24:41 ] Windowsでどうやればいいのかまでは知らない たぶんmysql_configが動かないはず
810 名前:デフォルトの名無しさん mailto:sage [2010/02/11(木) 22:51:19 ] 丸投げだったら、仕様だけで十分だよ。 質問ならよそへ
811 名前:デフォルトの名無しさん mailto:sage [2010/02/13(土) 20:56:41 ] >>807 Rails 2.0.2 じゃなくて Rails 2.2 を使ってるのが問題なんじゃ…
812 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 02:16:51 ] Windowsで `exeplorer.exe dir` を実行すると、dirによってうまくdirが開かれる場合と 無関係にc:/users/***(myname)/documentsが 開かれる場合があります。コマンドプロンプトでは正常に動作しているのですが・・・。
813 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 07:21:57 ] 宿題そのものではない質問は質問スレへ ここは質問をするスレではない
814 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 07:48:53 ] >>812 再現する具体的な例を
815 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 07:51:02 ] >>813 全く正論だがこれくらいはすぱっと答えてあげてもよかろうに >>812 Windows のコマンドプロンプトでは正常に動作してるというのもそれたぶん再現間違ってるぞ コマンドプロンプトというか cmd.exe は引数に空白の入った文字列を指定するとそこで引数を区切る foo.exe C:\Program Files\Ruby19\lib は foo.exe に C:\Program という文字列と Files\Ruby19\lib という文字列の2つを送る 空白を含んだ文字列を一塊として解釈して欲しい場合はダブルクォートで括る foo.exe "C:\Program Files\Ruby19\lib" というのを Ruby の system で行うには、やっぱりダブルクォートで括る `exeplorer.exe "#{dir}"` Ruby あんまり関係ないな
816 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:07:04 ] windows 版の ruby ってなんでパスに / が使えないんだろ
817 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 08:14:48 ] 実用に問題のない範囲で使えるはずだが
818 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 11:41:39 ] windows版のrubygemsってスペース区切りのパスにインスコすると動かないの直ったの?
819 名前:デフォルトの名無しさん mailto:sage [2010/02/15(月) 23:05:28 ] >>812 です >>813 すみませんRubyの質問スレが見つからなかったので・・・ >>815 さきほどもう一度確認しました。 やはりコマンドプロンプトで explorer.exe c:\program files を実行するとc:\program filesが開かれますが、 rubyで `explorer.exe c:\program files` `explorer.exe "c:\program files"` を実行するといずれもc:\users\(myname)\documentsが開かれてしまいます・・・ スレ違い失礼しました。質問スレ探してきます。
820 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 00:36:28 ] c:\\program files
821 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 01:08:45 ] だから / にしとけとあれほど (ry
822 名前:デフォルトの名無しさん mailto:sage [2010/02/17(水) 06:55:50 ] >>820 解決しました。ありがとうございます。流されたかもしれないと思いつつ覗きにきてよかったです。 \\とすることで初めて\自体が表された、という風に解釈しましたが、間違っておりましたらご指摘のほどよろしくお願いいたします。
823 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 11:32:55 ] >>822 あってるよ
824 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 12:08:24 ] おかしいと思ったらまずその文字列を表示させてみるとこからやるべし
825 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 12:28:00 ] なんで MS はでぃれくとりの区切りに \ を使うようなアホなことしたん?
826 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 12:39:33 ] >>825 基本的にスラッシュを使おうとしたんだが、ディレクトリという概念が導入される前にあったシステムの デファクトスタンダードのコマンドのスイッチが / だったんだよ これを変えると操作性が変わってMS-DOS1が売れないことが懸念された だから / はコマンドラインスイッチ用にして、パス区切り文字としては / に似ているバックスラッシュを使うことにしたんだ 今でも cmd.exe のオプションスイッチは / だろ バックスラッシュが日本で円記号になってるのとかはそれとは別問題 というかスレ違いだ Rubyに関係ないことは他のスレでやってくれ
827 名前:デフォルトの名無しさん mailto:sage [2010/02/18(木) 12:47:24 ] CP/M w
828 名前:デフォルトの名無しさん mailto:sage [2010/02/20(土) 20:33:43 ] MS-DOS 2あたりだとconfig.sysにswitchar=-ってのがあって変えられたんだよな。 それを取ってくるファンクションコールがあったりしたんだけど、 ver3でなくなっちゃった。
829 名前:デフォルトの名無しさん mailto:sage [2010/02/22(月) 18:51:16 ] >>826 なるほどねぇ。
830 名前: ◆1zwh/1JASc mailto:sage [2010/03/01(月) 04:46:48 ] pc12.2ch.net/test/read.cgi/tech/1265467681/214 からこちらに来ました。 TwitterのStreamAPIを使ってcURLで書いてみたいのですが、上記スレの219のような感じ にはなったのですが、ずっと動かしてるとStackErrorとなってしまいます。 うまく動くように出来無いでしょうか? [1] 授業単元:TwitterStreamAPIを使ってのhttpリンク抜き出し [2] 問題文(含コード&リンク):(pc12.2ch.net/test/read.cgi/tech/1265467681/219 ) [3] 環境 [3.1] OS:Linux(Ubuntu9.10) [3.2] バージョン: Ruby 1.9.1 [3.3] 言語: Ruby [4] 期限: 宿題では無いので無期限で [5] その他の制限: Rubyを勉強しはじめて3ヶ月程度ですが、 C/PHP/Perlの下地はあります。 gemsのcURL利用でnet/httpは使わない方向でお願いしたいです。
831 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 07:14:09 ] > にはなったのですが、ずっと動かしてるとStackErrorとなってしまいます。 繰り返しが再帰になってるんじゃない?
832 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 07:24:50 ] ぱっと見ではbodyのあたりがなんか怖い
833 名前:デフォルトの名無しさん mailto:sage [2010/03/01(月) 10:33:35 ] 宿題でもないのに宿題スレにくるアホなんなの
834 名前: ◆1zwh/1JASc mailto:sage [2010/03/01(月) 19:19:37 ] >>831 どのあたりでしょうか? body.callのあたりでしょうか?(ここいまいち分かってないので) >>832 上の方と同じくですが result = body ? body.call(data) : data.length この辺でしょうか? >>833 向こうでこっち紹介されたようなので来てみたんですが・・・ gistと言うところで、コード再掲してみました。 インデントとかコッチの方が見やすそうなので。 gist.github.com/318228
835 名前:デフォルトの名無しさん mailto:sage [2010/03/02(火) 22:09:56 ] >>834 試してないけど $VERBOSE = nil 以降はこんな感じだと思う StackErrorになる理由はリファレンスマニュアルでも読んで自分で調べてくれ data = "" c.on_body {|d| data << d ; d.size } c.perform s = JSON.parse(data) user = s['user'] if user && user['lang'].include?('ja') links = s['text'].scan(/(https?:\/\/[-_.~a-zA-Z0-9;\/?:\@&=+\$,%#]+)/).flatten links.each {|link| p "url => #{link}" } end 場所としてはこっちのスレの方がいいので、解決しないなら移動して Ruby 初心者スレッド Part 34 pc12.2ch.net/test/read.cgi/tech/1264635554/
836 名前: ◆1zwh/1JASc mailto:sage [2010/03/02(火) 22:51:20 ] >>835 ありがとうございました。 そのロジックだと、データ受信中の解析が出来無いと思うのですが・・・ #StreamAPIなので、データ受信完了が無いのです。 ともあれ、初心者スレに行ってみます。
837 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 02:20:05 ] リファレンスマニュアル www.ruby-lang.org/ja/man/html を見ながら自力でがんばってみたが、できなかったので教えてください。 題:ファイルを一行ずつ読み込んでリンクを取り出す。 自力で作った分 1: #!/usr/bin/ruby 2: board_plist = "~/board.plist" 3: if test(?e, board_plist) { 4: site_list = [] 5: File.open(board_plist, 'r') {|f| 6: f.each {|buf| 7: if buf.sub!(/¥s*<string>http:¥/¥/(.+?)¥/.+?¥/<¥/string>/, '¥1') { 8: site_list << buf.chop 9: } 10: } 11: } 12: } 実行してみた結果 ./dame.rb:10: parse error 素質無さ過ぎなので、プログラマに成る夢は諦めますw
838 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 03:02:27 ] >>837 文法間違い × if 条件 { 処理 } ○ if 条件 [then] 処理 end リファレンスマニュアルの Rubyの文法>制御構造>条件分岐>if を参照
839 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 03:22:52 ] >>837 Rubyのifは 1. if 式 then 式 [elsif 式 then 式]* [else 式] end 2. then は `;' or 改行 で代用可 だよ
840 名前:デフォルトの名無しさん mailto:sage [2010/03/03(水) 03:44:04 ] 無事に動きましたありがとうございます。 {}でくくる制御とくくらない制御が混在するのは盲点でした。orz どうやら他の宿題も盛大にバグってて、parse errorでしたw
841 名前:デフォルトの名無しさん mailto:sage [2010/03/04(木) 14:52:01 ] ソースの可読性を高める為 括弧をくくらなくても動くように作っただけで 全部くくろうと思えばくくれるぞ
842 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 01:37:01 ] 括弧をなくした理由は読みやすさじゃなくて 書きやすさを追求したからだよ 括弧ある方が可読性高まる
843 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 07:32:04 ] Rubyの {} (または do end)は、それでくくった手続きのかたまりが、ほかのメソッドの中から (繰り返し)呼ばれる、というちょっと特殊なものだぞ。 これはくくってもくくらなくても、とかいうものではない。きちんと覚えないとダメ
844 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 14:15:50 ] 基本的にはくくればいいんだが、くくっちゃダメな条件があったり、くくらない習慣(pとか)のあるメソッドがあったりといったところなのかな。
845 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 14:21:27 ] ()の話と{}の話が混ざっている予感。
846 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 14:29:02 ] 宿題スレで質問すんなよ…
847 名前:デフォルトの名無しさん mailto:sage [2010/03/05(金) 15:07:41 ] x くくっちゃダメな条件 o くくるの省略しちゃダメな条件
848 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 02:34:35 ] 結局ifは{}は使えずにdo-endでくくらないと駄目ってことなんだろ。
849 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 07:51:53 ] if は {} でも do-end でもないぞ if-[then]-[else]-end だ
850 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 09:14:21 ] whileにdoを書いてもよいというのは、実は混乱の元ではないだろうか。
851 名前:デフォルトの名無しさん mailto:sage [2010/03/06(土) 10:38:31 ] 宿題スレで質問すんなよ…