[表示 : 全て 最新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です。プロも皆さんには簡単な
問題かもしれませんがどうか教えてください。
課題は以下の通りです。


548 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:39:50 ]
>(コンセプト段階では意味があったんだが今考えると意図不明

このセリフどっかで聞いたことあるなぁ
Matzが良く使うよなぁ


549 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 18:54:46 ]
>>548
その台詞、仕事で使わせてもらう ( ・`ω・´)ノ

550 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:09:23 ]
#!/usr/bin/ruby
require 'date' # >>545-546 のを改悪
require 'enumerator'
class Date
  def to_a
    (Date.new(self.year,self.month,1)..Date.new(self.year,self.month,-1)).to_a
  end
  def calender(wide = true)
    width = wide ? 3 : 2
    cal = "#{MONTHNAMES[self.month]} #{self.year if wide}".center((width+1)*7) << "\n"
    cal << ABBR_DAYNAMES.map{|n| n[0..width-1]}.join(' ') << "\n"
    cal << ' ' * (width+1) * Date.new(self.year, self.month, 1).wday
    self.to_a.each do |d|
      cal << d.day.to_s.rjust(width) << ' ' << (d.wday == 6 ? "\n" : "")
    end; cal
  end
  def calender_yearly
    cals = (1..12).map do |month|
      a = Date.new(self.year, month, 1).calender(false).split(/\n/)
      a[7] ||= ''; a
    end
    ret = "#{self.year.to_s.center(63)}\n\n"
    cals.each_slice(3) do |a|
      ret << a.transpose.map{|b|b.map{|c|c.ljust(22)}.to_s}.join("\n") << "\n"
    end; ret
  end
end
case ARGV.size
  when 0; puts Date.today.calender
  when 1; puts Date.new(ARGV[0].to_i, 1, 1).calender_yearly
  when 2; puts Date.new(ARGV[1].to_i, ARGV[0].to_i, 1).calender
end

551 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 19:37:37 ]
>>550
きゃー短い

…やっぱこれ行列か
やっぱこれ行列だよな…
行列操作でMatrixしか思いつかなくてA4の紙にでっかい図書いて茹で上がって諦めたよ

Rangeオブジェクトは昇順の数字限定のいけ好かない奴だと思ってたのでこれからはなにやら便利に使うよ
enumeratorはなんて読むかもわかんないくらいなのでこれからがんばってべんきょうするよ



case文は書き慣れた感じがしてやらしいよ

552 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 20:07:10 ]
あらら2009年のを表示させると死ぬな。
a[6] ||= ''; a[7] ||= ''; a にすりゃいいけど、ここ汚くて嫌い。

553 名前:デフォルトの名無しさん mailto:sage [2007/04/25(水) 21:00:02 ]
どうやったらこういうの書けるようになるの?

554 名前:デフォルトの名無しさん mailto:sage [2007/04/26(木) 19:17:28 ]
>>553
どうやって日本語覚えた?


555 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 03:33:05 ]
555

556 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 11:27:17 ]
日本語書けるからといって小説が書けるようになるわけでもなく



557 名前:デフォルトの名無しさん mailto:sage [2007/04/27(金) 12:09:35 ]
でも小説を書くために日本語の勉強って大事。
つ 国語

558 名前:デフォルトの名無しさん mailto:sage [2007/05/01(火) 16:56:17 ]
お題カモン

559 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 06:52:06 ]
きょうは八十八夜ですが任意の年月日を入力してそれが年初から何日目かを求めるプログラムを作りなさい
ただしDateは使わないこと


560 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 09:31:02 ]
def dates(y,m,d)
((Time.local(y,m,d) - Time.local(y)) / (3600*24) + 1).to_i
end

どうでもいいけど八十八夜ってのは年初からの日数じゃないぞ。

dates(2007,5,2) # => 122


561 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 09:39:58 ]
旧暦の年初だろ
そんなことも知らないのか

562 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:24:20 ]
つーか「5」月な時点で30*4=120日くらいは最低過ぎてるんじゃないかと思えて欲しい

563 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 11:32:54 ]
ここで旧暦ライブラリの出番

564 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 12:00:56 ]
122 - 88 = 34 = 2/3 = 節分
うまく出来てるな


565 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 20:44:10 ]
>561
旧正月でもないぞ。

立春から数えて八十八日目。節分もまぁ似たようなものだが。


566 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:28:28 ]
ついでに 二百十日 = 9/1 も確認してみました
dates(2007,9,1) # => 244




567 名前:デフォルトの名無しさん mailto:sage [2007/05/02(水) 21:43:41 ]
立春の予測の厳密な計算ってスタンドアロンではできないんじゃなかったっけ
できたとしても、なんていうかRubyの練習にはならないと思う

568 名前:デフォルトの名無しさん mailto:sage [2007/05/03(木) 23:07:14 ]
>>567
>できたとしても、なんていうかRubyの練習にはならないと思う
適当なサイトにアクセスして日付を取ってくるとかはどうだ?

569 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 02:07:21 ]
まあお代考えた香具師が馬鹿だったということで、次のお代ドーゾ。

570 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 12:34:35 ]
マウスの位置はどうしたら分かりますか?

571 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 12:45:20 ]
基本的にはそんなもんわからん

何かウィンドウシステムのようなもん使ってるならそれ併記しろ
あとなにかRuby/Tkとかのアプリケーション上での話ならそれもきちんと書け

572 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 13:06:16 ]
FreeBSDでコンソールしか使ってないのですが
なんか文字と同じサイズで四角いマウスカーソル
らしきものが出て来て動くんです


573 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 13:09:27 ]
それ宿題じゃないだろ

574 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 13:11:53 ]
っていうか>>570の続きが>>572なんじゃないよな…

575 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 13:24:01 ]
ttp://freebsd4-jman.kandk.co.jp/8/moused.8.html
ttp://freebsd4-jman.kandk.co.jp/1/vidcontrol.1.html


576 名前:デフォルトの名無しさん mailto:sage [2007/05/04(金) 22:20:22 ]
>>570
机の横に落ちてるだろ。ちゃんと探せよ。



577 名前:デフォルトの名無しさん mailto:sage [2007/05/05(土) 11:55:34 ]
マウスパッドの上にありました

578 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:32:25 ]
1から100までの数をプリントするプログラムを書け。
ただし3の倍数のときは数の代わりに「Fizz」と、5の倍数のときは「Buzz」とプリントし、
3と5両方の倍数の場合には「FizzBuzz」とプリントすること。

579 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 16:39:04 ]
※ただし55byte以内でなければならない
と付け加えないとつまらんな

580 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 17:17:03 ]
Rubyで書いたら怒られると思う

581 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 20:58:45 ]
これか?
www.aoky.net/articles/jeff_atwood/why_cant_programmers_program.htm


582 名前:デフォルトの名無しさん mailto:sage [2007/05/08(火) 22:10:41 ]
やべえ、
おれ再帰つかったことねぇや

583 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 00:35:12 ]
使えるということと使わなければならないということは全く別物
必要なければ使わなくていい
使えないのは問題


584 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 01:06:50 ]
再帰は使わない人は一生自前で使わないからなあ
きちんと概念学んで理解すると時々使うようになると思う

585 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 02:14:09 ]
「累乗のプログラムを作るときに出てきた累乗専用の何か」以上の理解がない俺に
誰か再帰の便利なとこ教えてくれ

586 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 02:18:41 ]
Haskellとか使うと嫌でも分かるよ。
というか再帰こそ自然で直観的なものだと思えるようになる。



587 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 02:28:01 ]
今から再帰で目覚めるためだけにlisp始めれ、というよりは若干やさしいか?




そうでもないか

588 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 02:59:41 ]
教科書の再帰関数は見かけ無駄な動作しかしないからな
フツーの言語で説明されても「こんなんループで書いたほうが早いってはい終了」と思って
即忘れてしまうのは無理もないと思う

589 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 05:48:31 ]
ヒルベルトとか

590 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 08:59:39 ]
クイックソートとかマージソートは再帰で書くと思うが。


591 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 09:03:17 ]
>>588
Rubyスクリプトだとfact(n)を書くのに
(1..n).each do |i| 以下略
とか
1.upto(n) do |i| 以下略
とか
そういう便利な繰り返しが真っ先に出てきちゃうからな
いや、Rubyに限ったことじゃないけど

592 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 12:42:17 ]
>>578のそもそもは「面接官の前で紙に該当のコード書け」という問題だからなあ
2分もあれば書けるだろうとか言われてるし

モニタの前でコーヒーとか飲みながらキーボードをパチパチやって答える問題ではない

593 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 13:11:19 ]
実務でクイックソートとかマージソート使う場面あるか?
まずほとんどの場面で、
単純なソートで大丈夫だぜ

594 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 13:43:51 ]
というか、普通はライブラリを使うだろ。

595 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 13:54:24 ]
「クイックソート自力で実装しました」とか言ったら普通はグーで殴られるよな

ソートの実装はそれこそ勉強用だ
絶対に自力で経験しないといけないが、絶対に実地で使ってはイカン(趣味でもな)

596 名前:デフォルトの名無しさん mailto:sage [2007/05/09(水) 14:31:45 ]
Rubyみたいな言語での再帰の日常利用はある日天啓のごとくひらめくもんだと思う
ただし、たいがいはコードが美しくなるだけであって動作速度は普通に書くよりも遅い
ただでさえワンテンポ遅いRubyが再帰でさらに遅くなるのでトレードオフの見極めに注意

込み入ったプログラムでは使うと便利なこともあるけれど、初心者には無理かも



597 名前:デフォルトの名無しさん mailto:sage [2007/05/10(木) 11:26:26 ]
再帰的処理は練習しないと肝心の「再帰処理で考えれば万事うまくいく」とこで再帰の使用をひらめかないから、
自作の速度クリティカルじゃないスクリプトでどんどん使って慣れておいたほうがいいぞ。

598 名前:デフォルトの名無しさん [2007/05/12(土) 12:44:58 ]
(1..100).each{|i|if i%3==0&&i%5==0 then s="FizzBuzz" elsif i%3==0 then s="Fizz" elsif i%5==0 then s="Buzz" else s = i end; puts s}

130bytes orz

599 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 13:55:39 ]
ラーメンタイマー作ってー
ramen.rb 180
ってやると残り時間を秒単位でカウントしていって
時間過ぎたら今度は経過時間を表示していくようなやつ

600 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 15:22:30 ]
# Windowsではベルは鳴らない(なんで?)。マイナス引数秒までカウントする
# バックスペース文字の連打で描画領域を確保するのは横着なので真似しないこと
time = Integer(ARGV[0])
$stdout.sync = true
time.downto(time*-1) do |t|
print "\a\a" if t < 1
print t.to_s.rjust(4)
sleep 1
print "\b\b\b\b \b\b\b\b"
end


601 名前:デフォルトの名無しさん mailto:sage [2007/05/12(土) 16:08:51 ]
# 遠くから見て残り時間がわからなくて寂しかったので修正
# 5秒につき * が1個減ります
time = Integer(ARGV[0])
$stdout.sync=true
0.upto(time) do |i|
(print i / 60; next) if i % 60 == 0
(print '*') if i % 5 == 0
end
time.downto(time*-1) do |t|
print "\a" if t < 0
print "\b \b" if t % 5 == 0 && t >= 0
sleep 1
end


602 名前:デフォルトの名無しさん [2007/05/12(土) 16:25:52 ]
>>598
更新履歴兼雑記 - FizzBuzz アゲイン 15:51
d.hatena.ne.jp/shinichiro_h/20070509#1178693484

1.upto(?d){|n|puts ["Fizz#{s=[:Buzz][n%5]}"][n%3]||s||n}
1.upto(?d){|n|s=[:Buzz][n%5];puts n%3<1?"Fizz#{s}":s||n}
1.upto(?d){|n|n%3<1&&s=:Fizz;puts n%5<1?"#{s}Buzz":s||n}
1.upto(?d){|n|puts ["Fizz%s"%s=[:Buzz][n%5]][n%3]||s||n}



603 名前:デフォルトの名無しさん [2007/05/17(木) 20:58:14 ]
FizzBuzzの問題で不思議に思うこと。
いろんな言語で書いてあるのをみてみると
ふりわけするのにこういうパターン(ケース型?)がすごく多い。
if n % 15 == 0 then
puts "FizzBuzz"
elsif n % 3 == 0 then
puts "Fizz"
elsif n % 5 == 0 then
puts "Buzz"
else
puts n
end

15を先に調べるとなにかいいことある?
式の評価回数がふえるだけのような気がするんだけど。
ふつうにifの入れ子では駄目なのかなあ。

あ、短くする競争のものは、なんでもやってください。
そうじゃないものの話ね。


604 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 21:01:06 ]
改行の出力

605 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 21:26:13 ]
>>603
「3の倍数の場合」「5の倍数の場合」「3の倍数でもあり、5の倍数でもある場合」
のみっつのケースを特別視しないといけないから、素直にコードに落とすと
そうなるんじゃないか?

606 名前:sage [2007/05/17(木) 21:43:12 ]
私はこっちの方が素直だと思う。

if n % 3 == 0 then
if n % 5 == 0 then
puts "FizzBuzz"
else
puts "Fizz"
end
else
if n % 5 == 0 then
puts "Buzz"
else
puts n
end
end




607 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 22:13:42 ]
めんどいな

>>603
コードによってthen以下の処理内容は違うから一概には言えない
ただ、たとえば3や5を先にすると、15で割り切れるはずの30が先に3や5の処理に入ることがある
短くしたいとか奇を衒おうとかいうコードの場合、そういうのに対する余分な迂回処理は避けたいんだろう
だから分岐の時点で15を先に持ってくると

608 名前:デフォルトの名無しさん mailto:sage [2007/05/17(木) 23:17:02 ]
>>606
n % 5 == 0 という条件式が繰り返されているので、仕様変更に弱い。

TABLE = [nil, "Fizz", "Buzz", "FizzBuzz"]
index = 0
index += 1 if n % 3 == 0
index += 2 if n % 5 == 0
word = TABLE[index]
puts word ? word : n


609 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 00:44:30 ]
仕様変更なんて起こらないだろ

そんなこと言ったら再利用に便利なようにメソッド化しモジュール化すべきだと言うぞ俺は

610 名前:デフォルトの名無しさん [2007/05/18(金) 01:19:00 ]
では、関数型っぽく(lisperっぽく?)

p (1..100).to_a.map {|i|
  if i % 15 == 0 then "FizzBuzz"
  elsif i % 3 == 0 then "Fizz"
  elsif i % 5 == 0 then "Buzz"
  else i
  end
}


611 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 02:21:25 ]
うーん。仕様変更に弱いですか。

実際、どれぐらい式の評価回数が違うか数えてみると
1から100の数字の場合、3でも5でも割り切れる場合が7個
3で割り切れる場合が27個、5で割り切れる場合が13個
それ以外が53個、ケース型の式の評価回数は、
7*1+27*2+(13+53)*3=259回
入れ子型の場合、2*100=200回
ケース型はデータによって変動するわけですが、
最良の場合は100回、最悪で300回。


612 名前:デフォルトの名無しさん mailto:sage [2007/05/18(金) 10:10:49 ]
pc11.2ch.net/test/read.cgi/prog/1178626960/90


613 名前:デフォルトの名無しさん mailto:sage [2007/05/19(土) 17:39:56 ]
これはどうでしょう・・・

1.upto(100) {|i|
s = ""
s << 'Fizz' if i % 3 == 0
s << 'Buzz' if i % 5 == 0
s << i.to_s if s == ""
puts s
}


614 名前:デフォルトの名無しさん mailto:sage [2007/05/20(日) 00:25:39 ]
拡張すると、1-100の各数に対して素因数を全て書き出せ、という問題に

615 名前:デフォルトの名無しさん [2007/05/20(日) 08:31:31 ]
Fizz-Buzz問題
pc11.2ch.net/test/read.cgi/prog/1178626960/

616 名前:デフォルトの名無しさん [2007/05/21(月) 11:40:06 ]
無職さんの答え
(1..100).each{ |n|
  s = n.to_s
  s='Fizz' if n % 3 == 0
  s='Buzz' if n % 5 == 0
  s='FizzBuzz' if n % 15 == 0
  puts s
}



617 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 12:33:07 ]
そういうときはせめて elsif 使おうぜ
別に何かトリッキーな短くしようという書き方してるわけでもないだろ
今のままだと n が 15のとき

s #=> "15"
s #=> "Fizz"
s #=> "Buzz"
s #=> "FizzBuzz"

と 4回切り替わってるぞ

(1..100).each do |n|
if n % 15 == 0 then
s = 'FizzBuzz'
elsif n % 3 == 0 then
s = 'Fizz'
elsif n % 5 == 0 then
s = 'Buzz'
else
s = n.to_s
end
puts s
end

んで「 nが何回も評価されててうぜえ」と感じるなら case 文とか
そして、もしも「こんなん1から100まで入った配列をFizzやBuzz入りの配列に変換すりゃいいんだろ」と思えるのなら

618 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 12:58:33 ]
こんなん考えた

class Fixnum
def fizzbuzz
(ret = "#{["Fizz"][self % 3]}#{["Buzz"][self % 5]}").empty? and ret = to_s
ret
end
end

1.upto(100){|n|
puts n.fizzbuzz
}


619 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 13:05:48 ]
>>617
>>618を使うなら

puts (1..100).to_a.map{|i| i.fizzbuzz}

ってとこか?
どこぞで不評だったputsの特別機能(配列は改行つきで表示)がこんなとこでなにやら便利に

620 名前:デフォルトの名無しさん [2007/05/21(月) 13:07:42 ]
>>617
切り替わるとやばいかな。のちのち値を追いかけるときやばくなるとかですか。
理由をもうちっと教えてください。

621 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 13:41:35 ]
単にムダでイヤとかそういうスタイル上の理由じゃね

str = String.new
str = "hoge"

と同じような無駄(1行目で作られたStringオブジェクトは2行目で破棄される)
何か「まずい」ことがおきることはないはずだよ

622 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:10:10 ]
>>619
map使うならto_aは不要。

623 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:39:59 ]
なにげにEnumerableインクルードしてるからな

624 名前:デフォルトの名無しさん mailto:sage [2007/05/21(月) 16:52:02 ]
まだやってんの蚊
お前ら人生の効率をもう少し重視したほうがいい

625 名前:デフォルトの名無しさん mailto:sage [2007/05/22(火) 04:48:05 ]
3の倍数でFizz、5の倍数でBuzz、7の倍数でFuzz、11の倍数で……

626 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 16:35:08 ]
puts "1"
puts "2"
puts "Fizz"
 ・
 ・
 ・


じゃダメなのか?













と基本的なボケをしてみる。



627 名前:デフォルトの名無しさん mailto:sage [2007/05/24(木) 19:04:31 ]
赤点ぎりぎりで合格!

628 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 01:00:12 ]
こんなのはやっぱり反則?
FizzBuzz.rb
1.upto(?d){|i|puts""==(a=$0[i*i%3*4-11..-4--i**4%5])?i:a}

629 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 18:03:52 ]
ruby初心者の俺が15の倍数をチェックしないバージョンを書いてみた

def FizzBuzz(x)
 r = "Fizz" if x % 3 == 0
 r = (r||"") + "Buzz" if x % 5 ==0
 return r || x
end

1.upto(100) {|x| puts FizzBuzz(x)}

630 名前:デフォルトの名無しさん [2007/05/28(月) 18:41:31 ]
>>628
うちだと、nil nil nil nil ...にしかならなかった

631 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:42:07 ]
ファイル名をFizzBuzz.rbにしてください。

632 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 21:50:44 ]
ファイル作るの面倒だったのでirbで無理矢理動かした。

>> $0 = 'FizzBuzz.rb'
>> 1.upto(?d){|i|puts""==(a=$0[i*i%3*4-11..-4--i**4%5])?i:a}

動作確認には十分。

633 名前:デフォルトの名無しさん mailto:sage [2007/05/28(月) 22:09:33 ]
普通に、"FizzBuzz"[i*i%3*4-8..-1--i**4%5] でよさそうなもんだが。

634 名前:デフォルトの名無しさん mailto:sage [2007/05/29(火) 20:36:53 ]
書き換えるのが面倒だったの

635 名前:デフォルトの名無しさん [2007/05/30(水) 17:02:25 ]
>>629-634
そういうことかww
やっときづいた

636 名前:デフォルトの名無しさん [2007/06/06(水) 15:42:44 ]
a = [1, 2, 0, 3, 4, 5]

配列の一番後ろを得たいときは、
 a.last
だよな?

後ろから2番目、3番目を得たいときは、どうするんだ?
 a[a.size - 2]
しかない?
 a.last(2)
は違うし・・・



637 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 15:49:18 ]
irb> a = [1, 2, 3, 4, 5]
=> [1, 2, 3, 4, 5]
irb> a[-2]
=> 4


638 名前:デフォルトの名無しさん mailto:sage [2007/06/06(水) 15:59:27 ]
-1がlast
last一つ前は-2

639 名前:デフォルトの名無しさん [2007/06/06(水) 16:03:16 ]
>>637-638
インデックス、マイナスにできたのか。しらなかた

reverseしてから、アクセスとかやってた。
サンクスでう。


640 名前:デフォルトの名無しさん [2007/06/11(月) 02:35:33 ]
stringをarrayにする簡単な方法はないですか?
やりたいことは、arrayにして、sortしたいのですが・・・

s.to_aは行ごとだし・・・


641 名前:デフォルトの名無しさん [2007/06/11(月) 02:38:56 ]
srand
s = "hogemoge"
a = []; s.each_byte {|l| a << l.chr}
pp a.sort_by{ rand }.to_s

実際書いてみると、以外に短かかったw


642 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 03:43:29 ]
s.split(//).each

643 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 07:53:28 ]
確かに str.split(//e) が妥当だ(e は str の文字コード)
1文字ずつぶった切って配列にしてるんだなと読み下してもくれるし

644 名前:デフォルトの名無しさん mailto:sage [2007/06/11(月) 16:10:21 ]
s.scan(/./)
s.split(//)
同じ長さだったか。

645 名前:デフォルトの名無しさん mailto:sage [2007/07/08(日) 19:59:06 ]
パスカルの3角形を印字するプログラムを
作りたいのだが以下のプログラムで作るにはどうしたらいいのでしょうか?
教えてください。

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]ごとに配列を作る
# そして、印字
for i in (0..a.length-1) do
for j in (0..a[i].length-1) do
print( " ", a[i][j] )
end
print( "\n" )
end

646 名前:デフォルトの名無しさん [2007/07/09(月) 06:58:16 ]
マルチ乙



647 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 08:18:09 ]
そんな事よりカレーの話しようぜ

648 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 14:54:25 ]
宿題スレ行け→マルチ乙
これはひどい

649 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:07:04 ]
回答してはいけないという空気?

650 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:25:33 ]
いや、いいんじゃない?
マルチと誤解されないためには、前スレに移動する由を書いとけばいい

651 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 16:39:33 ]
それこそ「宿題スレのほうがいい」というアドバイスを受けたからこっち来たんだろ
移動した旨は移動時に既にあっちに書いてあるし、イジられる以上の非難を受ける謂れは無いと思われ

652 名前:デフォルトの名無しさん mailto:sage [2007/07/09(月) 18:09:50 ]
じゃ、とりあえず。いろいろ宿題の中身無視してるけ、どこんな感じで。

class Array
  def next_pascal
    next_pascal = Array.new

    next_pascal << self[0]

    self[0..-2].each_index do |i|
      next_pascal << self[i] + self[i + 1]
    end

    next_pascal << self[-1]
  end
end

p = [1]

10.times do
  puts p.join(' ')
  p = p.next_pascal
end






[ 新着レスの取得/表示 (agate) ] / [ 携帯版 ]

前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