1 名前: 【大吉】 mailto:sage [2009/01/01(木) 13:13:22 ] プログラミング言語Rubyについての、初心者向けスレです。質問・要望・雑談などどうぞ。 【Ruby1.9 は不安定な開発版であり初心者には全く向きません】 【最新安定版の Ruby1.8.7 の使用をお勧めします】 ※1.8.7 は1.8 と 1.9 の橋渡しをするためのリリースです。 1.9 の新機能の一部が利用可能なので初学者にお勧めです。 ※ただし十分安定しているとは言えないので プロダクション環境での利用にはお勧めしません。 関連スレやURLは>>2-8 あたりを見てください。Ruby on Railsの質問はRailsスレへ。 ■質問する人へ 質問する前に次の3つをすること。ここで回答を待つよりそのほうが早い。 ・モジュール名やエラーメッセージでググる ・マニュアルで引っかかったクラスの記述を探す www.ruby-lang.org/ja/man/ ・FAQを一応読む www.ruby-lang.org/ja/man/?cmd=view;name=Ruby+FAQ 質問には以下を書くこと。へたくそな質問は再提出を要求される。 ・詳しい内容(「動きません」「うまくできません」では回答しようがない) ・エラーメッセージ(自力で訳さずなるべくそのままで) ・実行環境(OS名、Rubyのバージョン(ruby -v でわかる)) ・最終的にやりたいこと(もっとよい方法がある場合が多いので) 回答してくれた人には「ありがとう」のひとことをいってあげて。 ■回答する人へ 相手は初心者、根気よく育てるつもりで。質問がへたくそなのも大目にみてあげる。 それができないならこないこと(だって初心者スレだもん)。 ・既出な質問やFAQは「XXXを読め」でいいので、叩かない&怖がらせない。 ・わけわかな質問にもエスパー発揮で。できれば質問の仕方を教えるぐらいで。 ・自信がない回答ならその旨表明すること。誤った回答は初心者じゃ見抜けない。
560 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:04:17 ] .wavとか.mp3とかの元データを変えずに、 再生中に特定の曲だけボリュームを上げたいってことか。
561 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:06:14 ] Windowsなら腐るほど該当アプリケーションあるけどな
562 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 18:21:32 ] >>560 >>561 その方は私の質問に便乗している方ですのでお間違いないように。 私の希望はあくまでも、ウィンドウやソフトから流れる音をミュート以上にリアルタイムで増幅する方法です。 >>555 >>557 そうですか..。 いや、SDLとかいうルビーのゲーム用ライブラリーで音楽が扱えていたことと、 パソコン上で再生された音や特定のウィンドウの音を録音できるフリーウェアがたくさんあったので、そんなに難しいことではないのかなと質問させていただきました。 ミュートの調整による増幅以上に増幅する方法をさがしているので。
563 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:10:47 ] 意味が分からない
564 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:25:49 ] >>562 他のフリーウェアがどうやってるのかは分からないが Ruby覚え立てでスパッと出来るほど簡単なものではない OSによってもやり方が違うし
565 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 19:52:49 ] ミュートの意味がおかしくね?
566 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 20:37:45 ] >>562 出来ないから諦めろ、て言われたら諦めてくれる?
567 名前:デフォルトの名無しさん [2009/01/18(日) 21:30:31 ] >>564 OSはウィンドウズです。 >Ruby覚え立てでスパッと出来るほど簡単なものではない そうですか?初心者向けと聞きましたが。 それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。 >>566 分かる人を待ちますよw
568 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:32:54 ] このスレは成りすましお断りですよ
569 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:44:28 ] >>567 初心者向けだと言ったやつに聞けばいいのでは? 特定のアプリを外部制御するならまだしも Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。
570 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:50:22 ] タスクトレイにある「音量」をいじればいいよ。 それと同等の操作ならRuby初心者でもできるだろうけど それ以上を求めるなら間違いなく待ちぼうけになる。
571 名前:デフォルトの名無しさん [2009/01/18(日) 21:54:19 ] >>569 >特定のアプリを外部制御するならまだしも >Windowsで再生してる音の波形から曲を判定し音量コントロールなんて俺はやりたくない。 pcに流れる音全体でもいいですよ(できれば個別にですが)。 ただリアルタイムで音量を増幅できれば。 それとフリーの録音かソフトが個別の音を録音できていることから考えると、 pc上に流れた全ての音がミックスされてスピーカーで流れているだけで、 スピーカーから流れる前段階のどこかで、個別の音声はプログラムで取得する方法があるような気がします。
572 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:21 ] よくわからないが,>>561 や>>567 を見ると煽りたくなる衝動に駆られる この気持ちどうしよう
573 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 21:56:27 ] だから、できるって ただし、Rubyは無関係 他のサウンドとOSの深いとこを触るドライバやライブラリを直接いじるしかない そのいじり方を学んでから、Rubyで通信する方法を聞きに来な
574 名前:デフォルトの名無しさん mailto:sage [2009/01/18(日) 22:05:26 ] >>567 >そうですか?初心者向けと聞きましたが。 Rubyは初心者向けかもしれんが お前がやろうとしていることは、確実に上級者向けどころか前人未踏に近い領域だ > それに分からないから(これから勉強するので)初心者質問スレに質問したのですが。 他の人も散々言ってるように、それは「Rubyの」初心者質問スレで解決できる質問じゃない 素直に諦めてくれ
575 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 03:00:31 ] >>567 できりょ。 ・Rubyをインストールする ・Vistaをインストールする ・タスクトレイから音量ミキサを開く ・アプリケーションごとの音量を調整する な?簡単だろ? ちなみに、Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。 そもそも、Win32をゴリゴリやるのは向かないだろ。 C#(.NET)とかC++の方がまだ向いてる。
576 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 04:25:20 ] >Win32のデバイスドラバとかWin32APIとか絡みそうなものはRubyと激しく相性が悪い。 mjsk kwsk
577 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 05:10:11 ] >・Rubyをインストールする >・Vistaをインストールする >・タスクトレイから音量ミキサを開く >・アプリケーションごとの音量を調整する これは上から順に見てワロタwww 上から順にしようとしたらできない事書いてあるし久々オモローwww
578 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 08:55:50 ] オモローって自分から使ってる人久しぶりに見た
579 名前:デフォルトの名無しさん [2009/01/19(月) 09:39:59 ] rubyのRPMを探しているのですが、見つかりません どこにありますか?
580 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 09:53:00 ] >>579 最新のものにこだわらなければ、 大抵のLinuxディストリなら標準で入ってるんじゃね? OSと、欲しいRubyのバージョンは何?
581 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:22:21 ] yum install ruby で入らないのか? 下手に探すより環境をしっかりさせろ。
582 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:23:09 ] yum じゃなければ apt-get
583 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 11:56:52 ] 1.8.6に1.8.7のinjectでのシンボルによる二項演算子指定を実現するのは以下でいいと思います? class Symbol def to_proc proc { |obj, *args| obj.__send__(self, *args) } end end module Enumerable alias _inject inject def inject(*init, &block) if not block begin return _inject(&init[0]) rescue return _inject(init[0], &init[1]) end end _inject(*init, &block) end end
584 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:14:58 ] emacs(meadow)でRuby書くときにこれこそ入れておけっていうelispありますか? ruby-modeとruby-electric位しかruby周辺は入れてません.
585 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 18:35:54 ] ハッシュってキーもバリューも日本語いけるんだな!ちとおらびっくりしたぞ!
586 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:16:48 ] 激しく実行環境依存で嵌まりそうだけどな。
587 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:24:07 ] 可搬性がなければならないプログラムを作らなければならない必要性というのは 現代のRuby用途では意外と低い
588 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 22:58:55 ] 自分んとこ(か、日本語が通ることが確定してる特定の環境)で使っておしまいというスクリプトのほうが多いな、確かに 外に出すんでなけりゃ日本語使ってもいいと思うけどね 日本語べったりになってるとアルファベットでどう書くか悩むことになるけど
589 名前:デフォルトの名無しさん mailto:sage [2009/01/19(月) 23:01:44 ] 形態素とか使ってたら日本語使った方が簡単そうだな
590 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:22:14 ] Ruby1.8.6です。REXMLのverは3.1.6です。 URLを与えたらそこから文書を抜き出してきて、それをyahooの形態素解析にかけるとXML形式でレスポンスが返るので それをREXMLで解析するプログラムを作ったのですが、 wikipedia(全体ではなく開けるものもある)やその他一部のページで、REXMLの解析中にParseExceptionエラーが起きてしまうのですが、 エラー文を見ても意味がよく分からなく、同じような症状?が出た方も中々いないようなのでお手上げです。 以下エラー文です。 #<REXML::ParseException: Declarations can only occur in the doctype declaration. Line: Position: Last 80 unconsumed characters: <!doctype html public "-//W3C//DTD HTML 4.01//EN" "www.w3.org/TR/html4/str>
591 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:32:17 ] 明らかにXMLじゃないじゃん、それ Yahooからの返事がXMLじゃないエラーか何かなんだと思うよ
592 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 00:35:52 ] !DOCTYPE宣言が二重になってるとかなんだろうな
593 名前:590 mailto:sage [2009/01/20(火) 01:51:53 ] >>591 エラーでしたら400等が表示されるはずなのですが、、 >>592 二重になるのってどこが問題なんですかね..
594 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:07:54 ] >>593 400等が表示って、ちゃんとHTTPレスポンスヘッダはチェックしてる?
595 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:09:06 ] しまった脊髄反射的なレスだった。 とりあえずREXMLに食わせるまえにファイル出力してみればいいよ。
596 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 02:33:58 ] エラーになるURL晒すのが早いと思うが
597 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 04:34:23 ] ネット系の問題に自分でデバックすら出来ないレベルか。なんか目的にたどり着くのは無理っぽい。 いつも使う必須のスクリプトが環境依存で引っ越して問題が出るのは良くある事。 まあその時に必要に迫られて書き直すと見通しよく成っていいプログラムに成る事は多いが。車輪の再生産気味だが。
598 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:11:08 ] リファクタリングが車輪の再生産って言われるとやる気なくします><
599 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 06:25:09 ] >>593 ステータスコードが200だからといって信頼していいわけじゃないぞ
600 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:21:46 ] ruby 1.8.6 WindowsXP SP3です。 実例ではないのですが、100までの数をカウントするプログラムに、 標準入力から入力された数字を現在の数字に足す機能を加えたいと思っています。 色々調べたところ、スレッドというものを使えばよいのかな、という結論に達したので 以下のようなプログラムを書いてみましたが、思うような動作をしてくれません。 どなたかお知恵を貸していただけないでしょうか? j = 1 t = Thread.new do while (j < 100) sleep 1 p j.to_s j += 1 end end while (j < 100) i = gets.chomp j += i.to_i end
601 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:41:42 ] これは・・・
602 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:45:58 ] 自然数k,p,q,m,nについて k=mp+nq(m>=0,n>=0)を満たす(m,n)の組の数をv(k)とするとき p=3, q=7, kが1から100までのときの結果vの一覧を出力したいです Rubyではどのように書いたらいいですか?
603 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:53:52 ] >>600 うちではうごいた
604 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:55:22 ] >>602 m=0あるいはn=0のとき自然数じゃなくなるけどいいの?
605 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:58:43 ] >>604 すみません間違えました x 自然数k,p,q,m,nについて o 自然数k,p,qについて あと、m,nは「0以上の整数」です よろしくおながいします
606 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 08:59:23 ] >>603 うちでは数の表示がgets.chompに邪魔されて、リターンを押すまで 数え上げるほうのスレッドの実行がとまっているみたいなんです。 環境はLinuxとかでしょうか?
607 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:09:14 ] >>606 cygwinです
608 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:10:44 ] >>602 p = 3 q = 7 (1..100).each do |k| v = 0 (0..(k/p)).each do |m| (0..((k-m*p)/q)).each do |n| if k == m*p + n*q v += 1 end end end print "v(#{k})=#{v}\n" end
609 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:20:36 ] >>607 ありがとうございます。 実際にこの処理を使用するプログラムでは拡張ライブラリ使用&exerbでexe化を 考えています。Cygwinでは正常にexe化できないようなのでmswin32でなんとかならないか もうちょっと調べてみます。
610 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:21:13 ] >>600 mswin32ではgetsがブロックする。
611 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:27:05 ] リファレンスのどっかにあったと思ってたんだけど、やっと見つけた。 www.ruby-lang.org/ja/man/html/trap_timeout.html
612 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:30:49 ] >>608 こうかな p = 3 q = 7 t = 0 u = 0 (1..100).each do |k| v = 0 (0..(k/p)).each do |m| if (k-m*p)%q == 0 v += 1 end end print "v(#{k})=#{v}\n" u += v if v > 0 t += 1 end end print "total #{t}, #{u}\n"
613 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 09:41:30 ] >>609 exerb+cygwinでexe化うまくいってるよ なんか変なライブラリくっつけてない?
614 名前:デフォルトの名無しさん [2009/01/20(火) 09:59:05 ] >>602 参考になるのかな ttp://d.hatena.ne.jp/octech/20080118
615 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:09:17 ] アンカミス >>600
616 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 10:34:43 ] >>614 ドンピシャです。ありがとうございます! >>610-611 なるほど、mswin32だと修正を待つしかない・・・のかな? と思ったけど回避策ってあるもんなんですね。引き出しを増やさなきゃ。 >>613 win32/sapi5を使っているのと、HDD容量に難があったのでCygwinは入れてませんでした。 2日前にHDDを注文したので届いたらCygwinでもやってみます。 レス下さった方々、ありがとうございました。
617 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:17:42 ] >>616 >なるほど、mswin32だと修正を待つしかない・・・のかな? バグじゃないから修正はされないんじゃないかな。 1.9では問題ないみたいだけど。
618 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:52:49 ] >>608 共通一次ですね
619 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 12:54:26 ] >>616 _kbhit入れたバージョンでも 一文字だけ入れてenterしないときって止まるよね
620 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:05:14 ] >>617 バグじゃないんですかね?ruby-list 36068ではバグみたいに言われてる気がするけども。 1.9では問題ないとは!バージョンあげようかなぁ。 >>619 止まりますね。でも、そのほうが便利な気がしないでもないです、私の場合。
621 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 13:51:52 ] >>614 の方法だとキー入力するまでひたすらビジーループなんだが
622 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 15:42:40 ] >>620 Windowsでselectがコンソールに対して効かないのは仕様だろう。 バグだと思うならMSに言ってみるのがいいんじゃないか。
623 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 19:56:56 ] >>621 そんなことないですよ
624 名前:デフォルトの名無しさん [2009/01/20(火) 22:05:16 ] h = {"direct"=>"5", :list=> {"6"=>"南西","7"=>"西","8"=>"北西","1"=>"北","2"=>"北東","3"=>"東","4"=>"南東","5"=>"南"}} 上のハッシュをh.ya2yaml すると direct: "5" ? !ruby/symbol list : ? "1" : 北 ? "2" : 北東 ? "3" : 東 ? "4" : 南東 ? "5" : 南 ? "6" : 南西 ? "7" : 西 ? "8" : 北西 となるのですが、’?’はどういう意味ですか。 そもそも "8":北西 という感じで出力されると思っていたのですが, 期待と違った結果でした。 ruby 1.8.6 (2008-03-03 patchlevel 114)
625 名前:デフォルトの名無しさん mailto:sage [2009/01/20(火) 22:48:19 ] 1.9っていつリリースされる予定なの?
626 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 01:17:39 ] RC2出てから
627 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:00:38 ] >>626 知らないなら答えきゃいいじゃん
628 名前:デフォルトの名無しさん [2009/01/21(水) 02:08:46 ] Japanese O.K.
629 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 02:09:29 ] RC2出たな
630 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:13:17 ] a=[1,1,1,2,2,3,4,5,5,5]の配列を b=a|aにしたら[1,2,3,4,5]となりますが、 1->3個,2->2個,3->1個,4->1個,5->3個のように どの要素が何個かぶっていたかというのはどのようにしたらいいでしょうか?
631 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:26:54 ] とりあえずは普通に数えればいい overlap = Array.new b.each do |bb| count = 0 a.each do |aa| count = count + 1 if aa == bb end overlap << [bb, count] end overlap.each do |i, n| puts "#{i} の重複は #{n} 個です" end めんどくさい人向け overlap = b.map{|e| [e, a.grep(e).size] }
632 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:27:07 ] h=Hash.new h.default=0 a.each do |i| h[i]+=1 end 俺も初心者に毛が生えた程度なので、より良いのがあれば指摘求む
633 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:28:53 ] def uniq_c(org) counts = {} org.uniq.each{|e| counts[e] = org.count(e) } counts end とか。#countがどっから入ったか怪しいけど。 こーいう要望は割と定番なのでRuby "uniq -c"とかでググるとよろし
634 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:32:36 ] 確認したらArray#countはRUBY_VERSION >= '1.8.7'だった。代わり org.count(e) -> org.select{|x| e == x }.size
635 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:40:38 ] 最初のが一番マシだな それ以降のはただのオナニー もしかしたら演算記号メソッドで何かどうにかすればなんかどうにかなると思ったかもしれないけど、 残念ながらそういうのは無い 2つの配列の関係を解析して返すメソッドというのはあっても面白そうだとは思うが、きっとおおむね無駄だ
636 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 03:53:14 ] >>631-634 ありがとございました 書き込んだ後,配列について調べてたらuniqっていうのがあるんですね. >>635 そうです.なにかメソッドがあるのかなと思ったのですが. 数え上げしていけばいいくらいなんで無駄になりますよね.
637 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:27:54 ] どこがオナニーなんだよ。数え上げる時は普通にHashを使うだろ つーか>>631 の最初のコードはズボラ過ぎる
638 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:38:19 ] a.inject(Hash.new{0}){|h,v| h[v] += 1 ; h }
639 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 05:54:27 ] >>632 が一番マシですね
640 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 06:12:44 ] 普通に考えれば>>632 だよな 少なくとも「最初のが一番マシ」はねーよw
641 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:10:58 ] ハッシュは順番が保存されないのがなー
642 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 09:22:00 ] この場合はたぶん順番必要ないよね
643 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:52:07 ] 正規表現を使って一致を見てるんだけど 正規表現のパターンの中に「図」っていう漢字をいれると warning: regexp has `}' without escape ってwarningでるんだけど何とかならないですか?
644 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 11:55:22 ] その漢字の文字エンコード(普通、そのスクリプトのファイルの文字エンコード)を正規表現に指定しろ っていうか、そのへんは解説なりなんなりでフォローがあったと思うんだが
645 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 12:04:10 ] >>643 ファイルのエンコードは何つかってる?
646 名前:643 mailto:sage [2009/01/21(水) 12:30:03 ] >>644-645 返事ありがとうございます。 /図/ ってやってるのでエンコードの指定は特に何にもやってないです Regexpクラスかなんかをつかってそのインスタンスにエンコードを指定するってことですか? ファイルはShift-Jisでやってます
647 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:00:30 ] require 'jcode' $KCODE = 'SJIS' でとりあえずいいんじゃないの
648 名前:643 mailto:sage [2009/01/21(水) 13:06:04 ] >>647 うまく行きました ありがとうございます
649 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:07:18 ] jcode厨がまだいたとは jcodeは正規表現には全く関与しない
650 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 13:39:33 ] >>643 -Kオプションについて調べるがよい
651 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:10:38 ] いちいち起動するたびに -K オプション付けなくちゃいけないの?
652 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:16:18 ] 1行目 #!ruby -Ks
653 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 14:29:03 ] >>652 i see.
654 名前:デフォルトの名無しさん [2009/01/21(水) 18:46:15 ] データが文字列の内容に数字をふったものを対象にして 数字でソートする場合どんな感じでやればいいでしょうか。 文字数字のままやると小さい数字が後にきたりして、ソートがおかしくなるのですが。
655 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:01:10 ] 全部同じ桁にする
656 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:02:29 ] sort メソッドの説明は気の利かない書き方をしてるからね あれはブロックの結果がどうなるかでソートされるんだ irb> puts ['30歳', '2歳', '10歳'].sort 10歳 2歳 30歳 irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳 irb> puts ['30歳', '2歳', '10歳'].sort_by{|a| a.scan(/\d+/)[0].to_i} 2歳 10歳 30歳
657 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:05:00 ] >>654 数字を振るというのが文字列と別枠なら hash = {3=>"c",2=>"b",1=>"a"} hash.sort.map{|v| v.last}
658 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:12:11 ] irb> ['30歳', '2歳', '10歳'].each{|a| puts a.scan(/\d+/)[0].to_i} 30歳 2歳 10歳
659 名前:デフォルトの名無しさん mailto:sage [2009/01/21(水) 19:25:19 ] >>658 あ、すまんね そこのへんだけ直前に書き換えたんだ 案の定間違ってるな irb> ['30歳', '2歳', '10歳'].each{|a| p a.scan(/\d+/)[0].to_i} 30 2 10 ってことで、ブロック内で数字部分を抜き出して整数にしてるんだということがわかってもらえればよかった それぞれの要素に対して「数字部分を抜き出して整数にしたもの」で比較してソートすれば、おそらくうまくいく
660 名前:デフォルトの名無しさん mailto:sage [2009/01/22(木) 01:31:38 ] >>600 とりあえずC#(.NET3.5)では int j = 1; Thread t = new Thread(new ThreadStart(() => { while (j < 100) { Thread.Sleep(1000); Console.WriteLine(j); j += 1; } })); t.Start(); while (j < 100) { String i = Console.ReadLine(); j += Convert.ToInt32(i); } これが動いたから、IronRubyなら動くかもよw