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


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