1 名前:RUBY [05/01/24 22:17:37 ] 私は、ある大学の1年生です。今、情報処理の講義でRUBYを習っています。 その講義で、期末テストとして課題が出たのですが、プログラミング初心者の私には 全然歯が立ちません。締め切りは1/31です。プロも皆さんには簡単な 問題かもしれませんがどうか教えてください。 課題は以下の通りです。
47 名前:デフォルトの名無しさん [05/01/29 03:07:57 ] >>43 「アルファベット」でした。すいません。
48 名前:デフォルトの名無しさん mailto:sage [05/01/29 03:30:15 ] >>43 タグはどうすんの? web上の英文て対象はHTMLを含むんだよね。 <p>baka</p> なんてHTMLが送られてきたら、pは2回、bakaは1回てカウントするの? それともpは無視?
49 名前:デフォルトの名無しさん mailto:sage [05/01/29 03:32:16 ] あ、ごめん、文字ね。
50 名前:デフォルトの名無しさん mailto:sage [05/01/29 04:16:34 ] >>43 作ってみたよー require 'open-uri' TARGET_URI = 'www.gnu.org/ ' class CharCounter NON_WORD_CHAR = 'OTHER' def initialize @buf = Hash.new{|h, k| h[k] = Hash.new(0)} @before_char = NON_WORD_CHAR end # def def push(s) s.gsub(/[\r\n]+/, '').split(//).each do |c| c.downcase! c = NON_WORD_CHAR if c !~ /[a-zA-Z]/ @buf[@before_char][c] += 1 @before_char = c end end # def def sorted_each @buf.keys.sort.each do |k| yield k, @buf[k] end end # def end # class # 続く
51 名前:デフォルトの名無しさん mailto:sage [05/01/29 04:17:19 ] # 続き ALPHABETS = %w(a b c d e f g h i j k l m n o p q r s t u v w x y z) ALPHABETS.push(CharCounter::NON_WORD_CHAR) def print_html(counter, uri) puts "<html><head><title>#{uri}</title></head><body><table border=1><tr><td> </td>" ALPHABETS.each do |c| puts "<th>#{c}</th>" end puts '</tr>' counter.sorted_each do |prechar, freq| puts "<tr><th>#{prechar}</th>" ALPHABETS.each do |c| puts "<td>#{freq[c]}</td>" end puts "</tr>" end puts "</table></body></html>" end # def def main(uri) counter = CharCounter.new open(uri) do |f| f.each_line {|line| counter.push(line) } end print_html(counter, uri) end # def main(TARGET_URI)
52 名前:デフォルトの名無しさん [05/01/29 04:41:19 ] こんなに長いプログラムを本当にありがとうございました。あと一つ質問が あるんですけれども、このプログラムで作ったHTMLの表はどこで見られるの ですか?
53 名前:デフォルトの名無しさん mailto:sage [05/01/29 04:58:48 ] >>52 標準出力に出してる。だからなんかファイルにリダイレクトしてwebブラウザで開け。 例えば、vaka.rbとかいうファイルにスクリプトを書いてコマンドラインから、 ruby vaka.rb > baka.html とかやればbaka.htmlができるからそれをブラウザで開くといい。 あ、あとRubyは1.8系が前提っすから、その辺よろしく。
54 名前:デフォルトの名無しさん [05/01/29 05:13:42 ] 確認できました!夜遅くまでいろいろとすいませんでした。これで何とか単 位ももらえそうです。本当にありがとうございました!!
55 名前:デフォルトの名無しさん mailto:sage [05/01/29 12:48:19 ] お前北大だろ
56 名前:デフォルトの名無しさん mailto:sage [05/01/29 12:49:26 ] これで済むと思うよな。
57 名前:デフォルトの名無しさん [05/01/29 12:55:09 ] >>56 ?? う、うん。思うよ。
58 名前:RUBY [05/01/31 23:19:34 ] こんばんは、RUBYです。 今日、期末課題を提出しました。あれから、図書などを調べてプログラミングしてみました。 プログラムを完成させることはできなかったので、あまり良い成績はとれそうもありませんが、 一応、形にはなっていると思うので、それなりの評価はあるでしょう。 今日まで、掲示板を見ることができませんでしたが、課題の解答を沢山の人が作ってくれて 本当にありがとうございました。 今回の課題を作成しているうちにプログラミングに興味を持ったので、 休み中に何かに挑戦してみたいと思っているのですが、どんな言語から始めたらよいか、 どんな言語が将来役に立つか、プログラミング初心者が初めに読んだ方がよい図書は何か などアドバイスがあったら教えてください。
59 名前:デフォルトの名無しさん mailto:sage [05/01/31 23:22:59 ] 最低
60 名前:デフォルトの名無しさん mailto:sage [05/02/01 04:19:28 ] >>58 Rubyでいいじゃん そんなにRuby使うの嫌か?
61 名前:デフォルトの名無しさん mailto:sage [05/02/01 06:16:31 ] ま、Schemeでもやっとけ。
62 名前:デフォルトの名無しさん mailto:sage [05/02/01 13:43:25 ] お前のやったことはカンニングだぞ 白血病で氏ね
63 名前:デフォルトの名無しさん mailto:sage [05/02/01 15:18:51 ] >>58 > 一応、形にはなっていると思うので、それなりの評価はあるでしょう。 なんで? カンニングは評価くれんでしょ。
64 名前:デフォルトの名無しさん mailto:sage [05/02/02 04:53:06 ] [1] 授業単元: RUBY [2] 問題文はwww.edu.ics.saitama-u.ac.jp/~hira/ex04p/prog04ef.b.html にあります。 [3] 環境 OS:UNIX 言語:RUBY [4] 期限:2005年2月29日14:00まで よろしくお願いします。
65 名前:デフォルトの名無しさん mailto:sage [05/02/02 06:40:10 ] >>64 向こうで解こうとしてた者なんだが、これCじゃなかったの? いや質問者が同一人物とは限らんのだが…
66 名前:デフォルトの名無しさん mailto:sage [05/02/02 07:44:36 ] >>65 Cの課題だと思う コンテスト ttp://www.edu.ics.saitama-u.ac.jp/~hira/ex04p/prog04en.b.html == ■ 乱入者部門 * 履修者以外でも, もし乱入者がいれば (私も含めて) * 「〆切後に改良したから試したい」「C 以外の言語で参加したい」も, こちらで * 言語は, 端末室の UNIX 環境で使えることが条件 * 履修者・乱入者それぞれのチャンピオンで, 最終戦
67 名前:デフォルトの名無しさん mailto:sage [05/02/03 06:37:06 ] >>66 ふむ。あと1ヶ月ほどあるのね。しかも乱入も可か。 乱入してみるかなw
68 名前:RUBY [05/02/04 03:22:20 ] >>62 は?見てねーつってんだろ?あ? パソコンばっかり見てるヒッキー&ブサイク男ちゃん ドライアイで氏ね
69 名前:デフォルトの名無しさん mailto:sage [05/02/04 10:18:49 ] >>1 ?
70 名前:デフォルトの名無しさん mailto:sage [05/02/06 14:55:20 ] >>62 不謹慎すぎて笑えない
71 名前:デフォルトの名無しさん mailto:sage [05/02/07 22:19:33 ] ここは初心者に優しくないインターネットですね >>58 > 休み中に何かに挑戦してみたい 好みにもよるが、BASIC・C言語・Rubyのいずれかから入るのが良いと思われる。 入門図書は、図書館があるなら自分で探せ。図書館がなければ おすすめはC言語なら「C言語プログラミングレッスン」、Rubyなら「たのしいRuby」。 www.hyuki.com/lc/ www.amazon.co.jp/exec/obidos/ASIN/4797314087/249-5597810-1058710 ちなみに、将来役に立つ言語は何か?という問いには「将来次第」としか答えようがない。 とりあえず何にでも手を出しとけ。
72 名前:デフォルトの名無しさん mailto:sage [05/02/08 00:03:45 ] www.amazon.co.jp/exec/obidos/ASIN/4797314087/
73 名前:デフォルトの名無しさん mailto:sage [05/02/08 02:23:02 ] >>71 ユーザビリティ的にはC#(+IDE)かJava(+Eclipse)かPythonかRubyでFAだろう。 入門用と考えると以下は満たして欲しい。 1.参考書 2.ライブラリが豊富 3.IDE(特にコンパイラなら必須) 4.GC Cは悪くないけど、もはやGCが無い言語は入門用としては遺物ではなかろうか。 ゴージャスなIDE付きでタダで使える実装は無いし。 Basicは発展性がなさ過ぎるというかVBA弄ってて泣きそうになったのでやめとけ。 参考書さえあるならAirみたいなオブジェクト指向でない手続き型のスクリプト言語が 習得がもっとも容易であると思われる。しかしそのような言語はあまり聞かない。
74 名前:デフォルトの名無しさん mailto:sage [05/02/08 02:32:45 ] >2.ライブラリが豊富 Rubyは失格だな。なにやるにしてもネットのどこかから拾ってくればできなくもないって奴ばっかだし。
75 名前:デフォルトの名無しさん mailto:sage [05/02/08 02:33:09 ] 入門用ならIDE無い方が良いと思うよ
76 名前:デフォルトの名無しさん mailto:sage [05/02/08 02:35:45 ] >>73 HSP
77 名前:デフォルトの名無しさん mailto:sage [05/02/09 01:37:25 ] >>76 HSPもいいのかも知れないなあ、と一瞬思ったけどgotoを使うのが基本の言語はダメだろ。 関数定義はないし構造体も無いのは無理。
78 名前:デフォルトの名無しさん mailto:sage [05/02/09 12:36:48 ] 関数定義はあるんじゃなかったっけ
79 名前:デフォルトの名無しさん mailto:sage [05/02/09 13:01:07 ] 目的しかないやっつけHSPと目的のないオナニー言語Ruby
80 名前:デフォルトの名無しさん mailto:sage [05/02/09 13:15:10 ] Rubyに目的が無いんだったらJavaにもCにも無いと思われ
81 名前:デフォルトの名無しさん mailto:sage [05/02/09 13:51:44 ] >>79 目的がないのではなく、多目的なのでは?
82 名前:デフォルトの名無しさん mailto:age [05/02/09 18:14:33 ] もなさんRubyをどのような目的で使ってますかー?
83 名前:デフォルトの名無しさん mailto:sage [05/02/09 20:05:17 ] CGIスクリプトとテキスト処理 あとはApolloを使ってGUIアプリケーションとか
84 名前:デフォルトの名無しさん [05/02/09 21:37:05 ] 無知蒙昧な2ちゃんねらにRubyのよさを知らしめるために日夜勉強しています。
85 名前:デフォルトの名無しさん mailto:sage [05/02/09 22:24:35 ] >>84 Rubyを使うことが目的なのか?あふぉか?
86 名前:デフォルトの名無しさん [05/02/22 21:23:13 ] [1]授業単元:Ruby [2]問題文:オセロを作れ [3]環境 [3.1]OS: [3.2]コンパイラ: [3.3]言語:Ruby [4]期限:23日昼 [5]その他の制限:CPU対戦は不要
87 名前:デフォルトの名無しさん [05/03/02 12:45:21 ] age
88 名前:デフォルトの名無しさん mailto:sage [2005/06/20(月) 02:25:44 ] [1] byte code化 [2] M17N [3] native thread対応
89 名前:デフォルトの名無しさん [2005/07/17(日) 16:31:23 ] 問題文自動生成システムを作りたいんだけど。。 熟語辞書の中から熟語をランダムに選択して、その語彙を含む問題文をコーパスから拾ってきて生成するシステム。 ちょっと手がつかないです(*_*)
90 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 16:48:40 ] 大学の講座にRubyがあるのですか。
91 名前:デフォルトの名無しさん mailto:sage [2005/07/17(日) 22:33:49 ] 幸せな大学だなぁ。うちはPrologだったぞ。
92 名前:デフォルトの名無しさん mailto:sage [2005/07/21(木) 12:12:27 ] Rubyももう十年ですから、大学講座に取り上げられて不思議は ありませんね。
93 名前:デフォルトの名無しさん mailto:sage [2005/08/14(日) 08:22:48 ] (1) test/ruby/test_lambda.rbのsyntax errorを直せ。 (20点)
94 名前:デフォルトの名無しさん mailto:sage [2005/08/17(水) 08:01:08 ] まだなんかヘンな気がするな…
95 名前:デフォルトの名無しさん [2005/09/18(日) 19:13:13 ] age
96 名前:デフォルトの名無しさん [2005/10/12(水) 00:31:12 ] 学籍番号 名前 点数 の順に書かれているファイルを読み込んで、平均点と学籍番号順に並べ替えて表示するプログラムを作れといわれました。
97 名前:デフォルトの名無しさん mailto:sage [2005/10/13(木) 01:07:08 ] data = File.read(ファイル名).split(/\n/) puts data.inject(0){|a,b| a+b.split[2].to_i} puts data.sort_by{|a|a.split[0].to_i}
98 名前:デフォルトの名無しさん [2005/10/19(水) 09:08:52 ] これだと平均じゃなくて合計じゃないですか?
99 名前:デフォルトの名無しさん mailto:sage [2005/10/20(木) 01:00:36 ] そうか。なら2行目は、 puts data.inject(0){|a,b| a+b.split[2].to_i} / data.length.to_f といったところか。
100 名前:ハーピィ mailto:sage [2005/10/20(木) 01:06:07 ] E・∇・ヨノシ <100ゲット♫
101 名前:デフォルトの名無しさん [2005/10/22(土) 21:44:51 ] クラスNumericに引数なしのメソッドinteger?を再定義して 例えばp 5.0.integer?ならtrue、p 5.01.integer? はfalse と整数を判別して出力するのを作れといわれました。 ほんの数行で出来るらしいのですがよろしくお願いします。
102 名前:デフォルトの名無しさん mailto:sage [2005/10/23(日) 20:07:47 ] Integer と Float で定義すりゃいいんじゃない?
103 名前:デフォルトの名無しさん mailto:sage [2005/10/23(日) 20:47:56 ] こんな感じ?"ほんの数行"かどうかは分かりませんが。 "判別する"というのを条件文で実装する必要はないんですよね? > class Integer > def integer? > return true > end > end > > class Float > def integer? > return false > end > end
104 名前:デフォルトの名無しさん mailto:sage [2005/10/28(金) 11:17:45 ] >102-103 それって 5.0.integer? が false になるし。 class Numeric; def my_int?; self.ceil == self; end; end てところだろう。本質的には一行。 ちなみに Ruby にもとからある integer? は、 Numeric が常に偽を返し、 Integer でオーバーロードして常に真を返すようにしている。つまり103と同 じようなものになっている。
105 名前:デフォルトの名無しさん mailto:sage [2005/11/12(土) 20:10:44 ] 誰か簡単な宿題を出してくれよ
106 名前:デフォルトの名無しさん [2005/11/21(月) 21:15:42 ] こんばんは、今日Rubyを学んでいる授業で課題を出されたのですが 完成しなくて困っています。 自分はプログラムではRubyが始めて学ぶ言語であり、 プログラミングに関しては全くの初心者です。 ↓の詰まっているところに答えて頂けるとありがたいです。 魔方陣をHTMLの表形式で出力 各行、各列の和もその表の中に納める←ここが出来ません… 原文が長いので先に結果 21 39 8 33 2 27 45 175 30 6 24 49 18 36 12 175 46 15 40 9 34 3 28 175 13 31 7 25 43 19 37 175 22 47 16 41 10 35 4 175 38 14 32 1 26 44 20 175 5 23 48 17 42 11 29 175 175 175 175 175 175 175 175 Completed(0) そして… f.print "<table border=1>\n"とf.print "</table>"の間で四苦八苦です。 175の和の列を表に納めたいのですが、やり方が分かりません・・・。 教えていただければ幸いですm(_ _)m
107 名前:原文 [2005/11/21(月) 21:16:55 ] n=7 a=Array.new for i in 1..n a[i]=Array.new end for m in 0..n-1 for k in 0..n-1 i=(k+m)*2+(n+1)/2+2 j=k-m+(3*n+1)/2 a[(i-1)%n+1][(j-1)%n+1]=n*m+k+1 end end f=open('g:\kadai.html',"w")
108 名前:原文続き [2005/11/21(月) 21:17:48 ] f.print "<table border=1>\n" for i in 1..n f.print "<tr>\n" x=0 for j in 1..n printf "%4d",a[i][j] f.print "<td>",a[i][j],"</td>\n" x+=a[i][j] end printf "%4d\n",x end for j in 1..n x=0 for i in 1..n x+=a[i][j] end printf "%4d",x f.print "</tr>\n" end print "\n" f.print "</table>" f.close
109 名前:デフォルトの名無しさん mailto:sage [2005/11/21(月) 23:24:14 ] # 足し算の結果もresultに入ってるなら以下のようにやるのが楽かなー puts '<table>' result.each{|row| puts '<tr>' row.each{|cell| puts "<td>#{cell}</td>" } puts '</tr>' } puts '</table>'
110 名前:デフォルトの名無しさん mailto:sage [2005/11/21(月) 23:34:17 ] # >>107-108 のを活かすならこんな感じ。 # 動作確認はしてないので悪しからず御了承を。 File.open("result.html"){|f| f.puts '<table border="1">' a.each{|row| f.puts '<tr>' sum = 0 row.each{|cell| sum += cell f.puts "<td>#{cell}</td>" } f.puts "<td>#{sum}</td>" f.puts "</tr>" } f.puts "</table>" } # 変数名はとりあえず意味のわかるように単語で付けた方がいいよ。 # アルファベット一文字の変数名はかなり読みにくいので。
111 名前:106 [2005/11/22(火) 00:42:43 ] >>109-110 ご親切にありがとうございましたm(_ _)m とっても参考になりました。 最初、手続きオブジェクトというものを知らなかったために 書いてあることが分かりませんでしたが、授業の教科書の先読んで 理解出来たように思います。 変数名を単語でというのは、 お二方のrowやcellと書いてある部分の事ですよね? 伝える時はそう書くのですね。 勉強になりました(^^;A
112 名前:デフォルトの名無しさん [2005/11/28(月) 22:02:26 ] >>106 と同じ…(略) 自分もrubyが良く分かっていなくて参考書を買って1からやり直している途中です。 ですが課題の締め切りに間に合わなそうなのでどなたかお願いしますm(__)m 下のプログラムでa-zすべてのアルファベットの頻度を調べなければならないのですが、 for c in "a" .. "z" do end を最初、最後に入れ、bをcに変えても正しくされないのですがどこがおかしいのでしょうか。 t = File.read( "test.txt" ) u = t.split(//) # tを文字に分解 w = t.split # tを単語に分解 # 文全体にに文字B又はbが含まれる頻度 countc = 0 for x in u do countc += 1 if x =~ /b/i end # 単語の先頭に文字B又はbが含まれる頻度 countw = 0 for x in w do countw += 1 if x[0,1] =~ /b/i end
113 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 22:45:12 ] 何はともあれおまえの言っていることがそもそもわけわからん。なにをどう試したんだ。
114 名前:デフォルトの名無しさん mailto:sage [2005/11/28(月) 22:49:27 ] アフォには聞いてませんから
115 名前:デフォルトの名無しさん [2005/11/28(月) 23:14:55 ] >>112 です。 t = File.read( "test.txt" ) u = t.split(//) # tを文字に分解 w = t.split # tを単語に分解 for c in "a" .."z" do # 文全体にに文字B又はbが含まれる頻度 countc = 0 for x in u do countc += 1 if x =~ /b/i end # 単語の先頭に文字B又はbが含まれる頻度 countw = 0 for x in w do countw += 1 if x[0,1] =~ /b/i end # 出力する printf "B又はbが本文に含まれる頻度は%4d回、単語の先頭に含まれる頻度は、%4d回でした。\n" ,c.upcase, countc , countw end …としたんですがエラーが出てしまいます。。
116 名前:113 mailto:sage [2005/11/28(月) 23:25:24 ] んじゃ説明すると、 全てのアルファベットの頻度を調べなければならないのだから、結果を保持す るのに52個の配列を用意する必要がある。ふつうは26要素の配列かハッシュを 2つ使うだろう(112の例で、文字用と単語用の2つの変数を用いたように)。 マッチするのに必要な正規表現は、112ではベタ書きしているが、これもa-zの それぞれで書換えなければならないだろう。 当然、a-zで「カウントアップする変数」と「マッチさせるための正規表現」 をそれぞれ切り替えるように適切に繰り返しをしなければならないだろう。 このどれもやっていないようだから「何をやってるかわからん」と思ったんだが、まあいいや。
117 名前:113 mailto:sage [2005/11/28(月) 23:31:51 ] おっと入れ違った。 115はそもそも、 for c in "a" .. "z" do に対応する end がないので実行で きない。 115の方針を貫く場合、結果を保持する変数は2つで良いままの可能性が高い。 しかし相変わらず b の数しか数えてないのだから、このままでは結果が正し く表示されない。正規表現をそれぞれで(cに依存するかたちで)書き換える必 要がある。 それから結果の出力では「Bまたはb」がべた書きだから printf がヘン。%表 記の箇所と引数の数が一致してないよ。 ……というところかな。
118 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 09:29:36 ] 答えてやりたいが今から大学だ
119 名前:504 [2005/11/29(火) 21:37:25 ] printfが良く分かっていないのですが、 t = File.read( "test.txt" ) u = t.split(//) # tを文字に分解 w = t.split # tを単語に分解 for c in "a" .."z" do # 文全体 countc = 0 for x in u do countc += 1 if x =~ /c/i end # 単語の先頭 countw = 0 for x in w do countw += 1 if x[0,1] =~ /c/i end # 出力する printf "%4d又は%4dが本文に含まれる頻度は%4d回、単語の先頭に含まれる頻度は、%4d回でした。\n" , c , c.upcase, countc , countw end でもおかしいですよね(^_^;)
120 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 22:45:43 ] cとかc.upcaseは文字列なんだから%sを使え まぁしかし Ruby では埋め込み式を使う方が一般的な気はするけど
121 名前:504 [2005/11/29(火) 22:59:05 ] エラー出ませんでした! しかし全部0回でした(笑) 勉強しなおしてきますm(__)m
122 名前:デフォルトの名無しさん mailto:sage [2005/11/29(火) 23:11:04 ] あーだからさ、/c/i が「cという一文字に(大文字小文字は気にせず)一致する」 正規表現なわけだよな? /b/i なら「bという〜」。そこのところはいいか。 今の君のコードは26回、毎回「c」だけカウントしているわけだ。それじゃ意味がない。 1回目は「a」、2回目は「b」、3回目は「c」……26回目は「z」になるように、しないといけない。 どうやってそれを実現するかはさすがに自分で考えてくれい。やり方はいろい ろあるけど、何が授業内容に則した方法なのかまではオレは知らん。
123 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 02:17:24 ] プログラミングの入り口でループで躓いて諦めるひとを何人も見てきた
124 名前:504 [2005/11/30(水) 22:10:36 ] cは変数で、その変数cに"a"から"z"までを代入してることにはならないんですか?orz
125 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 22:54:11 ] だってたとえば112の元々のコードだったら /b/i は「bという変数の中身」じゃ なくて「bという文字にマッチする正規表現」じゃん。その判断をどうやって するわけ? たとえばだ、「bという変数が存在したらその中身、存在しなかったらbという その文字」と動くとしようか。すると、ちょっと変更するだけでプログラムの 挙動がえらい変わって大変なことになるし、たとえばbという変数が存在する ときに「bという文字にマッチする正規表現」をどう書いたらいいかわからな いじゃん。 そういう不都合があるから、ただそのまま変数名を書いてもそれを変数名とは 認識しないわけ。 で、正規表現に変数の値を埋め込むにはそれなりの書き方をしないといけない。 もしくは正規表現をやめるかだな。 教科書か何かを読み直してよく考えろ。 たとえば for x in u の x はどういうデータで何を調べればいい?とかな。
126 名前:デフォルトの名無しさん mailto:sage [2005/11/30(水) 22:54:21 ] 同時に並列動作を望むなら ベクトルコンピュータ使ひ給へ
127 名前:504 [2005/12/01(木) 01:28:05 ] 正規表現を使わない方法で出来ましたm(__)m ホントすみませんでした(^^;)
128 名前:デフォルトの名無しさん mailto:sage [2005/12/05(月) 20:21:40 ] 北大の課題ばかりのスレだなぁ
129 名前:デフォルトの名無しさん [2005/12/19(月) 16:44:49 ] 誰かこのプログラムに注釈付けていただけませんか。何が起きてるか全くわかんないです。 def boyer_moore_search(text, pattern) printf("text.length = %d, pattern.length = %d\n", \ text.length, pattern.length) skip = Array.new for k in 0 ... 256 do skip[k] = pattern.length end for k in 0 ... pattern.length do skip[pattern[k]] = pattern.length - k - 1 end #続く
130 名前:129 [2005/12/19(月) 16:45:19 ] i = pattern.length - 1 while i < text.length do j = pattern.length - 1 while text[i] == pattern[j] do printf("a: i = %d, j = %d\n", i, j) if j == 0 then return i else i = i - 1 j = j - 1 end end if skip[text[i]] > pattern.length - j then i = i + skip[text[i]] printf("b: i = %d, j = %d\n", i, j) else i = i + pattern.length - j printf("c: i = %d, j = %d\n", i, j) end end return -1 end printf("Match position = %d\n", \ boyer_moore_search("irohanihoheto","ohe"))
131 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 03:42:30 ] >boyer_moore_search この名前から何か連想できないならアルゴリズムの教科書でも一から読み直した方が・・・
132 名前:デフォルトの名無しさん [2005/12/20(火) 11:37:17 ] Rubyじゃないけど、こことか参考になるかも ttp://www2.starcat.ne.jp/~fussy/algo/algo7-4.htm Ruby で説明しているところは自分でググって。
133 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 19:02:32 ] つーヵこのスレって存在自体おかしくね? RUBYで宿題?ナニソレ。 >私は、ある大学の1年生です。今、情報処理の講義でRUBYを習っています。 こんな学校ほんとに存在するのか? いきなりRUBY教えるって、その講師は真性のアホじゃないのか?
134 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 20:11:38 ] はいはいわろすわろす
135 名前:デフォルトの名無しさん mailto:sage [2005/12/20(火) 21:21:51 ] Rubyだと何でアホなの? 自分はFORTRANだったけど。
136 名前:デフォルトの名無しさん mailto:sage [2005/12/22(木) 01:57:20 ] >>128 に本当っぽいことが書いてある…と言ってみるw
137 名前:デフォルトの名無しさん mailto:sage [2005/12/22(木) 20:53:07 ] 北大ってどんなところなの?
138 名前:デフォルトの名無しさん mailto:sage [2005/12/22(木) 21:36:03 ] 北のほうにある
139 名前:デフォルトの名無しさん [2006/01/10(火) 21:50:54 ] お願いします 問題 次の足し算を満足する0〜9の相異なる数 A,E,G,L,M,N,O,P,R (但し、A,L,Oはゼロではない) の組を求めよ(答えは三通り) APPLE +) LEMON ---------- ORANGE 1.O=1 2.N=0 3.L=2から8 また、G=L+1で桁上がりはない 4.P=2,3,4,6,7,8 でM=10-P PもMもL,Gに等しくない 5.Eは2から9でL,G,P,Mに等しくない 6.P+E+1が10以上のとき A=P+E+1-10 A+L+1 が10未満ではダメ R=A+1-10 P+E+1が10未満のとき A=P+E+1 A+Lが10未満ではダメ R=A+L-10 7.AはO,N,L,G,P,M,Eに等しくない 8.RはO,N,L,G,P,M,E,Aに等しくない
140 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 21:55:55 ] アミノ酸配列と円周率が楽だからそんなのやめなさい
141 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:30:13 ] >>139 できた。結局、なにがわからんの? 楽して書きたいとかなら、地道にひとつずつ条件を書いていくしかないと思われ。 o = 1 n = 0 a_t = 1..9 e_t = 0..9 g_t = 0..9 l_t = 1..9 m_t = 0..9 p_t = 0..9 r_t = 0..9 def different_all?(key, array) return array.all?{|v| v != key} end
142 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:32:00 ] count = 0 a_t.each{|a| e_t.each{|e| next unless different_all?(e, [a, o, n]) g_t.each{|g| next unless different_all?(g, [e, a, o, n]) l_t.each{|l| next unless different_all?(l, [g, e, a, o, n]) next if l + 1 > 10 next unless g == l + 1 p_t.each{|p| next unless different_all?(p, [l, g, e, a, o, n]) m_t.each{|m| next unless different_all?(m, [p, l, g, e, a, o, n]) next unless m == 10 - p r_t.each{|r| next unless different_all?(r, [m, p, l, g, e, a, o, n]) apple = 10000 * a + 1000 * p + 100 * p + 10 * l + e lemon = 10000 * l + 1000 * e + 100 * m + 10 * o + n orange = 100000 * o + 10000 * r + 1000 * a + 100 * n + 10 * g + e
143 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:34:47 ] if orange == ( apple + lemon ) count += 1 puts 'A = ' + a.to_s puts 'E = ' + e.to_s puts 'G = ' + g.to_s puts 'L = ' + l.to_s puts 'M = ' + m.to_s puts 'N = ' + n.to_s puts 'O = ' + o.to_s puts 'P = ' + p.to_s puts 'R = ' + r.to_s puts '-----' end } } } } } } } puts count
144 名前:デフォルトの名無しさん mailto:sage [2006/01/10(火) 23:36:52 ] いんでんとなんかはてきとうに直してくれ。
145 名前:デフォルトの名無しさん mailto:sage [2006/01/11(水) 20:33:59 ] ありがとうございます 何がわからないというか、何もかもわからなくて
146 名前:デフォルトの名無しさん [2006/01/12(木) 12:22:33 ] 階乗を求めるプログラムを教えてください
147 名前:デフォルトの名無しさん mailto:sage [2006/01/12(木) 20:39:37 ] >>146 死ねマルチ result = 1;(1..5).each{|i| result *= i}; p result