[表示 : 全て 最新50 1-99 101- 201- 301- 401- 501- 601- 2chのread.cgiへ]
Update time : 04/20 05:16 / Filesize : 173 KB / Number-of Response : 653
[このスレッドの書き込みを削除する]
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧] [類似スレッド一覧]


↑キャッシュ検索、類似スレ動作を修正しました、ご迷惑をお掛けしました

RUBYの宿題教えてください。



1 名前:RUBY [05/01/24 22:17:37 ]
私は、ある大学の1年生です。今、情報処理の講義でRUBYを習っています。
その講義で、期末テストとして課題が出たのですが、プログラミング初心者の私には
全然歯が立ちません。締め切りは1/31です。プロも皆さんには簡単な
問題かもしれませんがどうか教えてください。
課題は以下の通りです。


403 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 06:46:39 ]
>>402
ソートしないでという条件をつけさしてください。


404 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 07:06:05 ]
temp = ""
ARGF.each_line do |line|
puts line if not line == temp
temp = line
end

405 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 10:51:00 ]
>>403
print readlines.uniq!

406 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 11:37:44 ]
uniqって、重複なかったら、nilが帰ってくるんだけど orz

407 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 11:40:35 ]
print readlines.uniq

で、いけますね。

408 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:12:44 ]
puts ARGF.map.uniq
意味もなく最短を狙ってみる。

409 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 12:40:15 ]
CodeGolfかよw

410 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 16:53:55 ]
>>408
ARGFは$<で代用可能。ついでにそのおかげで空白も除去できる。
puts$<.map.uniq

411 名前:デフォルトの名無しさん mailto:sage [2006/10/22(日) 22:46:08 ]
>>410
> ついでにそのおかげで空白も除去できる。
将来もずっとそうかわからんぞ。
namespaceの話もあるからな。




412 名前:デフォルトの名無しさん mailto:sage [2006/10/23(月) 20:20:24 ]
>411
それを言ったら Ruby なんて教祖の暴走がある限り
ほぼ全ての仕様が将来もずっとそうか分からんぞ。

413 名前:デフォルトの名無しさん mailto:sage [2006/10/24(火) 14:38:13 ]
俺はいつもこんな感じ。適宜digest使ったり。

h = []
ARGF.each_line do |line|
puts line if h[$_.sum] =|| 0
end

414 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 02:02:20 ]
そりゃsyntax errorだと思うが。

if h[line.sum] ||= 0
だとしても常に真だし。

415 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 14:52:15 ]
質問です。

行列A Matrix[[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 1], [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0]]と
行列B Matrix[[0, 0, 0, 1], [0, 1, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0]]
について、同一座標の数値ごとに論理和をとって行列Cを返すプログラムを教えてください。

この場合行列Cは、Matrix[[0, 0, 0, 0], [0, 1, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0]]
になります。

よろしくお願いします。


416 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 15:53:48 ]
論理和とったら
[[1, 1, 0, 1], [0, 1, 0, 0], [0, 1, 0, 1], [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0]]
にならないか?

a = [[1, 1, 0, 0], [0, 1, 0, 0], [0, 1, 0, 1], [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0]]
b = [[0, 0, 0, 1], [0, 1, 0, 0], [0, 1, 0, 0], [0, 0, 0, 1], [0, 0, 1, 0], [1, 0, 0, 0]]
i = -1
puts a.map{|x| x.map{|y| i+=1; y | b.flatten[i]; }}.inspect


417 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 16:03:33 ]
>>416
ありがとうございます。
論理和というか、両方1のときは1、それ以外は0になる形です。

418 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 16:25:42 ]
それは、論理積じゃねーの。

419 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 16:37:23 ]
うむ

420 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 18:22:22 ]
すいません。その通りです。
論理積でお願いします。

421 名前:416 mailto:sage [2006/10/25(水) 18:54:17 ]
あとは自分で考えろよ



422 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 19:59:41 ]
いっぱいある縦棒のどれかをアンパサンドに変えればいいんでないの?

423 名前:デフォルトの名無しさん mailto:sage [2006/10/25(水) 20:14:23 ]
puts a.map{|x| x.map{|y| i+=1; y | b.fアンパサンドatten[i]; }}.inspect

こうですか? わかりません!

424 名前:415 mailto:sage [2006/10/25(水) 21:20:16 ]
おかげさまでできました。
>>416さんをはじめ、このスレのみなさん本当にありがとうございました。

425 名前:デフォルトの名無しさん [2006/12/16(土) 19:10:09 ]
Code Golf はここでよいですよね?

数字を与えられて、それを1から配列数までを網羅した配列を短く書く方法はないですか?
例: 9 -> [1, 2, 3, 4, 5, 6, 7, 8, 9]


a = []; 9.times{|i| a += [(i + 1)]}; p a
かな?

426 名前:デフォルトの名無しさん [2006/12/16(土) 19:10:59 ]
a = []; 9.times{|i| a << i + 1}; p a

427 名前:デフォルトの名無しさん [2006/12/16(土) 19:12:56 ]
あ、これでいいのか・・・
p Array.new(9){|i| i + 1}

428 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 20:08:27 ]
(1..9).to_a

429 名前:デフォルトの名無しさん mailto:sage [2006/12/16(土) 20:10:02 ]
(1..9).map
このほうが短いな

430 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 00:55:11 ]
Range#to_aが真っ先に思いつくのが普通だよな。

431 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 01:19:25 ]
[*1..9]



432 名前:デフォルトの名無しさん [2006/12/17(日) 07:24:23 ]
>>428-429
マジスカ((((*´ー`)

>>431
これ、知らんかった!
!説明plz
マニュアルに書いてある?

433 名前:デフォルトの名無しさん mailto:sage [2006/12/17(日) 10:04:55 ]
>>432
「2.8 *がついた引数は何ですか」

434 名前:デフォルトの名無しさん [2006/12/17(日) 11:43:34 ]
>>433
www.ruby-lang.org/ja/man/index.cgi?cmd=view;name=FAQ::%CA%D1%BF%F4%A1%A2%C4%EA%BF%F4%A1%A2%B0%FA%BF%F4#a2.2e8.20.2a.a4.ac.a4.c4.a4.a4.a4.bf.b0.fa.bf.f4.a4.cf.b2.bf.a4.c7.a4.b9.a4.ab
これか・・・。

引数以外にもつけられるんだ

435 名前:デフォルトの名無しさん mailto:sage [2006/12/19(火) 23:18:17 ]
>>429
1.9ではEnumerable::Enumeratorが返る。


436 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 18:32:40 ]
>>435
将来もずっとそうかわからんぞ。

437 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 22:37:07 ]
>>436
いままでで切り捨てられたものの例を挙げてみてくれないか?


438 名前:デフォルトの名無しさん mailto:sage [2006/12/20(水) 22:51:18 ]
なんでなんで

439 名前:デフォルトの名無しさん mailto:sage [2006/12/21(木) 09:51:30 ]
警告出るのはあったな

440 名前:デフォルトの名無しさん [2006/12/25(月) 18:15:30 ]
<panda>kuma</panda>という文字列を<panda>kum<a></panda>としたいのですが、
gsub('a','<a>')とすると当然ながら<p<a>nd<a>>kum<a></p<a>nd<a>>となってしまいます。

<>の中のaを回避して置換するよい方法ありませんか?

441 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 19:59:15 ]
<kuma>panda</kuma>

<kuma>p<a>nd<a></kuma>

こう?




442 名前:デフォルトの名無しさん mailto:sage [2006/12/25(月) 21:23:23 ]
"<panda>kuma</panda>".scan(/(<.*?>|[^<]+)/).map{|s,*| if /^</ !~ s then s.gsub(/a/, "<a>") else s end }.join
=> "<panda>kum<a></panda>"
"<kuma>panda</kuma>".scan(/(<.*?>|[^<]+)/).map{|s,*| if /^</ !~ s then s.gsub(/a/, "<a>") else s end }.join
=> "<kuma>p<a>nd<a></kuma>"


443 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 08:38:57 ]
  |s,*|
これ↑をすると、配列がはずれて文字列だけになるんだ。
何故?

444 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 09:50:48 ]
Ruby では、ブロック引数に値を渡すときの操作は実質的には(多重)代入と同じ。
|s, a| と書くのは、 |s, a| = each_elementのように値が入るのと等価になっている。

また、
a, *b = [1, 2, 3]

とすればaに1、bに[2,3]が入るという規則を思い出すと、今回のケースでは、
「多重代入で最初のものだけを得たい」というケースであるから、
|s, *dummy| と書けば s に最初の要素が、 dummy に残りの配列が手に入る
ことになる。

でも今回は dummy は使わないから省きたい。で、こういう要求にこたえて最
近のRubyでは*パートの変数名を省略できるようになっている。つまり、
a, * = [1, 2, 3]
と書くと a に1が入るという操作になる。

というわけで、ブロック引数に |s, *| と書くと、 s に最初の要素が入ることになる。

ちなみに ,* が省かれるとふつうの代入と区別できないため、sには配列が入る。


……なんだけど実際には * はなくても良いのを思い出した。
カンマがあれば良いので |s,| で良かったです。すまん。


445 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 12:27:10 ]
>>444
丁寧な説明、サンクス。
なるほど、配列の第1要素のみ利用するってこってですね。

446 名前:デフォルトの名無しさん mailto:sage [2006/12/26(火) 21:05:25 ]
car?

447 名前:デフォルトの名無しさん mailto:sage [2007/01/05(金) 13:35:21 ]
>446
lispのcar関数とはまた別モノだろ

448 名前:デフォルトの名無しさん [2007/01/11(木) 20:52:38 ]
C言語で、値の入れ替えは、以下のように書くことができるようですが、
rubyでもっと短くかけないですか?
a=(a^=b,b^=a,a^b);

449 名前:デフォルトの名無しさん mailto:sage [2007/01/11(木) 20:59:26 ]
>>448
a, b = b, a

Cでもいまどきそんなの使うやついねーよ

450 名前:デフォルトの名無しさん [2007/01/11(木) 22:47:27 ]
>>449
多値使うのかー。

> Cでもいまどきそんなの使うやついねーよ
そうなのかw

451 名前:デフォルトの名無しさん [2007/01/12(金) 14:47:00 ]
自分もできない課題があって困ってるんだが・・・。
りんご本からいくつか課題出されて、その中の

テキスト65ページ 「耳の遠いおばあちゃん」に取り組みなさい。
耳の遠いおばあちゃんのプログラムを書いてみましょう。
おばあちゃんに何を言っても(何をタイプしても)、叫ばない限り(つまり、すべて大文字でタイプしない限り)、
 は?! もっと大きな声で話しておくれ、坊や!
と返事をします。もし叫んだときは、彼女はあなたの言葉を聞いて(少なくとも聞いた気がして)、
 いやー、1938年以来ないねー!
と大声で返事します。
プログラムに真実味を持たせるため、1930から1950のランダムな数字で毎回違う年を叫ぶようにしましょう。
あなたは、BYEと叫ぶまでおばあちゃんとの会話から逃れられません。
う年を叫ぶようにしましょう。
あなたは、BYEと叫ぶまでおばあちゃんとの会話から逃れられません。

とかいうの。



452 名前:デフォルトの名無しさん mailto:sage [2007/01/12(金) 20:30:26 ]
>>451
ぐぐれば解答例あるよ。

453 名前:デフォルトの名無しさん [2007/01/12(金) 22:54:56 ]
初心者の過去スレ人多すぎで見れない…
どこをググれば??

454 名前:デフォルトの名無しさん mailto:sage [2007/01/13(土) 11:11:22 ]
Google以外どこをぐぐるんですか?

loop do
  str = STDIN.gets
  if str.upcase == str
    if 'BYE' == str
      break
    else
      # そうかい。1953年以来ないね〜。
    end
  else
      # はぁあああああ!!!?なんだってぇえぇぇぇぇぇぇーーーーー!!!!
  end
end

動かしてないけど大体こんな感じでしょう。
ちゃんと手を動かしながら本読んでれば出来るハズなんだけどなぁ

455 名前:デフォルトの名無しさん [2007/01/14(日) 00:45:45 ]
ぐぐっても解答例が探せなかったorz
そのプログラムも動いてくれなかったです。

乱数のとこで引っかかったりwhileで引っかかったりで前に進みません。

456 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 01:35:46 ]
454は答えそのものじゃなくて基本的なアプローチ部分のコード例だよ。残りを埋めなきゃ答えにはならん。
それすら見てもわからんのか……。

ところでmixiで質問してるのと同じ人?


457 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 02:23:57 ]
>>455
何がどうダメなのか説明しないと誰もアドバイスできませんよ。
プログラムを動かそうとしたらエラーが出るなら、
そのエラーメッセージとソースコードをコピペする。

「エスパー募集中ですか?」って言われちゃいますよ?


458 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 03:11:56 ]
つーか自分で作って詰まれ
どうせ他人の見ても何がどうなってるのかわからんのだろ

確かにこのスレは宿題丸投げも可だが、あまり身勝手におイタしてると
「完全に動作するがコードが面妖で提出不可」なプログラムだけ回答に出されて放置されたりするぞ

459 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 03:27:05 ]
「ここまでは書けたけどあとはさっぱりです」とか素直に見せられたほうが答返ってくるよな。

460 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 09:55:57 ]
そして誰かが3行程度で作ってしまう。

461 名前:デフォルトの名無しさん [2007/01/14(日) 11:25:50 ]
CodeGolf形式で聞けば答えてくれるぞ



462 名前:デフォルトの名無しさん mailto:sage [2007/01/14(日) 22:24:50 ]
俺なら70byteで解く

463 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 14:23:44 ]
人工無能を作るスレがあるからそっちで聞け


464 名前:デフォルトの名無しさん mailto:sage [2007/01/15(月) 22:27:13 ]
関係ない他のスレに迷惑かけちゃいかんよ

465 名前:939 [2007/01/19(金) 23:12:14 ]
ヒープを配列で実装しろという問題とヒープソートの作り方を教えてください

466 名前:デフォルトの名無しさん mailto:sage [2007/01/20(土) 04:09:57 ]
www.geocities.jp/ky_webid/algorithm/022.html

467 名前:デフォルトの名無しさん [2007/01/24(水) 16:36:01 ]
0点の紙が1枚、1点の紙が2枚、4点の紙が1枚入っている箱がある。
この箱から1枚引いて箱に戻すのを6回繰り返したとき、合計点数のとりうる値を求めるプログラムを書け。

この問題の解法を教えてください。よろしくお願いします。



468 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 19:05:18 ]
>>467
算数の問題が解けないのか、解けるけどRubyに書き直せないのかどっちだ?
# 前者のような気はするけど。


469 名前:デフォルトの名無しさん [2007/01/24(水) 20:53:01 ]
>>468
後者です。
場合わけなどを効率よくプログラミングにおとすにはどうしたよいかわかりません。

470 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 21:42:44 ]
なるほど。アルゴリズムは考え付いたわけね。
じゃ、日本語で良いのでそのアルゴリズムを書いてみて。
それをコード化してあげる。



471 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:00:26 ]
>>467
少年よ、再帰を抱け!

def sum(n,s,k)
ls = [0,1,4]
if n == 0 then
print k,"\t","sum=",s,"\n"
else
for i in 0..2
sum(n-1,s+ls[i],k+[i])
end
end
end

sum(6,0,[])




472 名前:デフォルトの名無しさん [2007/01/24(水) 22:00:33 ]
>>470
計算問題として解くなら手計算でゴリ押しできるのですがうまいアルゴリズムが思いつかなくて。
とりあえず0,1,4からなる6個の数字をすべての場合を網羅するように作成して現れる合計値をすべて記録すれば答えはでるんですが、それだと面倒なので質問しました。


473 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:07:57 ]
トリッキーなコード
   ↓

474 名前:デフォルトの名無しさん [2007/01/24(水) 22:12:02 ]
>>471
ありがとうございます。
こんなに短くできるんですね。

475 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:19:38 ]
>>473
動的計画法を使う典型問題だね。
b = [0]
6.times{b=[0,1,4].inject(b){|c,y|c + b.map{|x|x+y}}.sort.uniq}
puts b

476 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:24:06 ]
inject([])の間違いだた。まぁ今回はたまたまうまく動くけど。

477 名前:デフォルトの名無しさん mailto:sage [2007/01/24(水) 22:33:39 ]
おりゃ
puts (0...6).inject([0]){|b,_|[0,1,4].map{|y|b.map{|x|x+y}}.flatten.sort.uniq}


478 名前:デフォルトの名無しさん [2007/01/24(水) 23:08:30 ]
ありがとうございます。この問題の回答としては>>475->>477さんのほうが良いですね。


479 名前:デフォルトの名無しさん [2007/01/28(日) 11:47:43 ]
codegolf的に、配列を圧縮する方法ってないでしょうか。

a = [123, 567, 23, 456, 34, 12]


文字列か何かであらわせないかと。
base64でも使うのかな?

480 名前:デフォルトの名無しさん [2007/01/28(日) 12:16:22 ]
d=[777,666,555,444,333,222,111,0,123,456,789,12,45,67,89,10]
require 'base64'
require 'zlib'
p d
p pk = d.pack("S*")
p z = Zlib::Deflate.deflate(pk)
p b64 = Base64.encode64(z)

p unb64 = Base64.decode64(b64)
p Zlib::Inflate.inflate(unb64)
p ud = unb64.unpack("S*")

puts "d==ud = "+ (d==ud).to_s
puts "b64.length=" + b64.length.to_s

やってみたのですが、
元に戻らない・・・

481 名前:デフォルトの名無しさん [2007/01/28(日) 12:29:24 ]
ミスってた、

d=[777,666,555,444,333,222,111,0,123,456,789,12,45,67,89,10]
require 'base64'
require 'zlib'
p d
p pk = d.pack("S*")
p z = Zlib::Deflate.deflate(pk)
p b64 = Base64.encode64(z)

p unb64 = Base64.decode64(b64)
p unz = Zlib::Inflate.inflate(unb64)
p ud = unz.unpack("S*")

puts "d==ud = "+ (d==ud).to_s
puts b64.length.to_s + " -> " + ud.length.to_s





482 名前:デフォルトの名無しさん [2007/01/28(日) 12:30:00 ]
>>481
でいけますね。解決です。

483 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 21:35:53 ]
本スレのほうから誘導されましたので、こちらで質問させていただきます。
pc10.2ch.net/test/read.cgi/tech/1164885714/548-557

(したいこと)
Arrayの要素の組合せを全て作った Arrayを返す。

(サンプル)
仮に combinations というメソッド名として
[].combinations => []
[1].combinations => [[[1]]]
[1,2].combinations => [
 [[1],[2]], # 1個ずつの組み合わせ
 [[1,2]],  # 2個ずつの組み合わせ
]
[1,2,3].combinations => [
 [[1],[2],[3]], # 1個ずつの組み合わせ
 [[1,2],[3]],  # 2個ずつの組み合わせ
 [[1],[2,3]],  # 2個ずつの組み合わせ
 [[1,2,3]],   # 3個ずつの組み合わせ
]
[1,2,3,4].combinations => [
 [[1],[2],[3],[4]], # 1個ずつの組み合わせ
 [[1,2],[3],[4]],  # 2個ずつの組み合わせ
 [[1],[2,3],[4]],  # 2個ずつの組み合わせ
 [[1],[2],[3,4]],  # 2個ずつの組み合わせ
 [[1,2],[3,4]],   # 2個ずつの組み合わせ
 [[1,2,3],[4]],   # 3個ずつの組み合わせ
 [[1],[2,3,4]],   # 3個ずつの組み合わせ
 [[1,2,3,4]],    # 4個ずつの組み合わせ
]
実装は、メソッドの再帰を行うんだろうとはなんとなく分かるんですが、それ以上は進まず。

484 名前:デフォルトの名無しさん mailto:sage [2007/01/28(日) 22:31:59 ]
ttp://blade.nagaokaut.ac.jp/cgi-bin/vframe.rb/ruby/ruby-list/42665?42609-42821

485 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 22:30:44 ]
>>181
class Array
def srt
case size
when 0,1
self
else
f,*t = self
t.select{|v| v <= f}.srt + [f] + t.select{|v| v > f}.srt
end
end
end

nums = (0..9).map{rand(100)}
p nums
p nums.srt

486 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 22:30:46 ]
10個の任意の数字を昇順(小さい数から大きい数)に並び替えるプログラムを作成しなさい

注意事項及びヒント:

sortメソッドは使用しないこと
配列を使用した方が並び替え易いと思います

487 名前:デフォルトの名無しさん mailto:sage [2007/02/04(日) 22:38:08 ]
>>486
OK、sortメソッドは使わないぜ。
a=[1,4,3,5,3,10,3,5,3,5]
$><<a.sort_by{|x|x}.join(" ")

488 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:21:52 ]
>>487
>>486が初心者スレで返された答えとかぶってるw


489 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 21:52:49 ]
>>486
適当にクイックソートを書いてみた

def qsort(array)
return array unless array.size > 1
left = []
right = []
mid_idx = array.size / 2
mid = array[mid_idx]
array.delete_at(mid_idx)

until array.empty?
n = array.shift
if n < mid
left.push(n)
else
right.push(n)
end
end

qsort(left).push(mid).concat(qsort(right))
end


で、書いておいてなんだが
いくら初心者だろーが力任せ、単純なソート法なら自力で思いつくだろ



490 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 22:15:48 ]
俺も適当にクイックソート書いてみた。
def qsort(array)
  return array unless array.size > 1
  mid = array.delete_at array.size/2
  array = array.partition{|x|x<mid}
  qsort(array[0]).push(mid).concat(qsort(array[1]))
end
飽きたから超適当。もういいや、こんなんで

491 名前:デフォルトの名無しさん mailto:sage [2007/02/05(月) 23:36:50 ]
>489-490
おまえらさあ、こういうのをそのままコピペして提出するアホがいたらどうすんだよ。
これを受け取ってどう評価するか悩む教師の身にもなってみてくれ、まじで。




492 名前:デフォルトの名無しさん mailto:sage [2007/02/06(火) 00:03:32 ]
教授、乙

493 名前:486 [2007/02/06(火) 01:32:00 ]
レスどうも、コピペしてませんからご安心を。確認しただけです。
全く違うソートになりましたが。

494 名前:デフォルトの名無しさん [2007/02/14(水) 16:21:00 ]
端末に現在時刻を 1 秒おきに表示しスクロールするプログラム.
実行中にキーボードの 1 が押されるとそれ以降は文字色を赤で,
また,2 が押されるとそれ以降は文字色を青で表示する.
0 が押されると数字を入力するようプロンプトを表示し,
時刻の表示間隔を入力された数字の秒数に変更する.
Ctrl+C で終了する.

お願いします.

495 名前:デフォルトの名無しさん mailto:sage [2007/02/14(水) 19:12:53 ]
じゃあ半分だけ。

loop do
puts Time.now
sleep 1
end

496 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 01:28:32 ]
それで半分は言いすぎw

497 名前:デフォルトの名無しさん [2007/02/15(木) 03:17:40 ]
どうでもいいけど、宿題で聞くヤツって何でこう、突っ放しなんだろうな。
お前本当に、答えてほしのかとww

もっとこう、答えたくて答えたくてたまらないように、仕向けないといけないと思うんだけど。
・・・まあ、だから、2ch聞いてるんだろうけど。

ちなみん、おれが、2ch聞いたのはほとんど答えてもらってる。

498 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 04:41:13 ]
このスレももう500になるのか
とりあえずフォーマットくらいは用意すべきだろうね

499 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 10:09:25 ]
>>494>>495
ありがとうございます.
核の部分はそうなると思いますが,
そこは問題を説明するために設定した部分で,
本当に聞きたいのはユーザとの対話部分なんです.
引き続きお願いします.

自分なりには curses を使って書いてみたんですが,
getstr がどうもうまく動かないので,
こちらで質問してみました.

500 名前:デフォルトの名無しさん mailto:sage [2007/02/15(木) 16:39:31 ]
>>499
試行中なんだが、getstrだとエンターまでを入力として期待するのでよくないはず。
getchを使おう。
今のリファレンスには書いてないがncursesの現行のAPIはほとんどwrapされてるようす。
あとは拡張ライブラリのソース見れって感じだ。

正直言って宿題としてはあんまりよくないな。
ncursesそのまま使うのはめんどう。
まあ、むしろCursesに皮を被せる設計の勉強なのかもしれんが。

501 名前:デフォルトの名無しさん [2007/02/20(火) 17:54:13 ]
>>500
とのことなので,getstr 相当のものを getch で書いてみたのですが,
どっちにしても getch で入力待ち状態のときに Ctrl-C が効きませんでした.
ruby のソースを開いてみると ext/curses にサンプルがあったので,
ruby mouse.rb をしてみたのですが,
これでもクリック待ちのときに Ctrl-C で終了できませんでした.
これが,ruby の curses の仕様なんでしょうか?
Ctrl-C を押したらいつでも終了するのがマナー
だと思っていたのですが…



502 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 21:01:01 ]
>501
ちなみに、環境何?

503 名前:デフォルトの名無しさん mailto:sage [2007/02/20(火) 21:11:33 ]
>>502
ruby 1.8.5/screen 4.00/zsh 4.3.2/ck 2.0.26
で coLinux 0.7.1 上の Gentoo と Cygwin とを使っています.






[ 続きを読む ] / [ 携帯版 ]

前100 次100 最新50 [ このスレをブックマーク! 携帯に送る ] 2chのread.cgiへ
[+板 最近立ったスレ&熱いスレ一覧 : +板 最近立ったスレ/記者別一覧]( ´∀`)<173KB

read.cgi ver5.27 [feat.BBS2 +1.6] / e.0.2 (02/09/03) / eucaly.net products.
担当:undef