Ruby

-4

うーんわからない。 ある任意の数が入力されたとき、 I=1 V=5 X=10 L=50 C=100 D=500 M=1000 Mから順に割ってゆき、割り切れるようにすればよいことはわかる。たとえばnumberが900の場合 DCCCC desune. お、たとえばnum=120とかnum=84 … こうかな。 def roma…

ローマ数字問題-3

http://d.hatena.ne.jp/tomomii+programming/20101221/p1 def roman_num num=0 num=gets.chomp.to_i M=num/1000 D=num%1000/500 C=num%1000%500%/100 L=num%1000%500%100%/50 X=num%1000%500%100%50%/10 V=num%1000%500%100%50%10%/5 I=num%1000%500%100%50%…

ローマ数字問題-2

http://d.hatena.ne.jp/tomomii+programming/20101219/p1 ex. I=1 V=5 X=10 L=50 C=100 D=500 M=1000 放課後充実諸々サボりがち。寝る寸前に考えたの書き留めておく。 メモ def roman_num (roman_num のメソッドを作る) num= 0 (numberは1-3000の数字。だけ…

ローマ数字問題

「初めてのプログラミング」p.87 練習問題より 初期の頃のローマ数字には減算則はありませんでした。つまり「IX」で9を表したりせず素直に大きい数の次に小さい数を順に記述して「VIIII」というように書いていました。さて、1から3000の間の整数を入力してそ…

つづき2

http://d.hatena.ne.jp/tomomii+programming/20101212/p1 http://d.hatena.ne.jp/tomomii+programming/20101213/p1 (たのしいRuby, p.26参照) if e[0,1]=='n' を通過した人数の初期値を決める 初期値は0でおk(何人通過したか分かんない場合は0で置く) 変…

つづき3

http://d.hatena.ne.jp/tomomii+programming/20101214/p1 staffs =['nanto_vi', 'motemen', 'suzak', 'r_kurain', 'nyanto_vi'] num=0 staffs.each do |e| if e[0,1]=='n' puts e num=num+1 end end puts num dktkr!!!!!!! moomin:ProgrammingRuby tomomi$ r…

うるう年を数える問題ができないので、さらにシンプルなコードでリトライします。 こちらを改造して「n」で始まる名前が何人いるかを出したい。 staffs = ['nanto_vi','motemen','suzak','r_kurain','nyanto_vi'] staffs.each do |e| if e[0,1] == 'n' puts …

再帰とループ

再帰とループの概念の違いがわからない。どなたか教えてもらえませんか。

うるう年-2

http://d.hatena.ne.jp/tomomii+programming/20101209/p2 うるう年の問題を改造。指定したはじめと終わりの年の間にいくつうるう年があるかを調べてみましょ。 実行 要素を抽出 >select 要素数を取得 >size/length 組み立てか順番がダメみたいで苦戦中 その1…

配列とイテレータ的なにか

以下はどちらも同じ意味をあらわしています。 前者はなんとか自分でも書けそう。 ※お名前お借りしてますすみません。 staffs = ['nanto_vi','motemen','suzak','r_kurain','nanto_vi'] staffs.each do |e| puts e end staffs = ['nanto_vi','motemen','suzak…

配列とイテレータ的なにか2

http://d.hatena.ne.jp/tomomii+programming/20101210/p1 この内容を改造し, 名前が「n」で始まる人を上げてみましょう。 ※お名前お借りしてますすみません。 staffs = ['nanto_vi','motemen','suzak','r_kurain','nyanto_vi'] staffs.each do |e| if e == '…

http://doc.okkez.net/186/view/class/String http://doc.okkez.net/186/view/library/_builtin http://doc.okkez.net/

http://kurain.g.hatena.ne.jp/r_kurain/ 理解力の乏しい自分に根気よく丁寧にご教示 お付き合いくださってありがとうございます大感謝 >くらいんさん, すざくさん

うるう年

開始と終わりの年を聞いて、その間にあるすべてのうるう年を(開始と終わりの年がうるう年ならそれも含めて)表示するプログラムを書いてみましょう うるう年は4で割り切れる数です 100で割り切れる数はうるう年ではなく(1800や1900のように) 100で割り切れ…

局所変数, 返り値

何回でも同じことをやる。 局所変数 ニュアンスなんとなく理解した def triple_this num num_times3 = num*3 puts num.to_s + 'の3倍は' +num_times3.to_s end triple_this 33 moomin:ProgrammingRuby tomomi$ ruby variable.rb 33の3倍は99 返り値 わからな…

再帰 (recursion)

同じことを何度も繰り返したいときにはループを使い、問題の小さい部分が全体の問題に似ているときに再帰を使います。例えば階乗の計算です。 def factorial num if num < 0 return #負の数の階乗計算不可能 end if num <= 1 1 else num*factorial(num-1) en…

返り値

読んだ > メソッドの戻り値 呼ばれた時に値を返すメソッドとして例えば以下のようなものがありますね gets : キーボードで入力した文字列をメソッドに返す +, -等:数に対する演算を数字で返す メソッドが値を返すこと(上述のようにメソッドを呼んだコードへ…

返り値2

def smile (number_of_smiles = 1) puts 'ニヤリ' * number_of_smiles 'hello Ruby' end x = smile 3 puts x.capitalize + 'how are you?' puts x + '.' メソッドの返り値はたいていメソッドの中で最後に評価した式です。単純に『最後の行』とか『最後の式』…

今後参考になるかもしれないので貼っておく。ここ数日頭が回らないので続きの変数学習は脳が復活してから。 RubyStudyRoom おおおお Ruby コーデイング規約 ほう。 プログラミングする時に暗黙の了解としてこういうルールがあるから気をつけるとイイよといっ…

局所変数2

以下の2つのプログラミングは書き方が異なるが結果は同じ。 その1 参考書にある書き方 def double_this num num_times2 = num*2 puts num.to_s + 'の2倍は ' +num_times2.to_s end double_this 44 その2 おーーーー素敵だ。こちらの方がしっくり理解できる。…

局所変数3

def double_this num num_times_2 = num*2 puts num.to_s + 'の2倍は ' +num_times_2.to_s end double_this 44 puts num_times_2.to_s 最終行 "puts num_times_2.to_s"についてerrorが出ますね。 moomin:programmingRuby tomomi$ ruby method.rb 44の2倍は 8…

メソッド引数 参考URL

# 以下は難しいのでまだ理解しなくて全然OKです *3 書き方だと引数は引数展開されます。 http://www.ruby-lang.org/ja/man/html/_A5E1A5BDA5C3A5C9B8C6A4D3BDD0A4B7.html の "最後の引数の直前に * がついている場合、その引数の値が展開されて 渡されます" …

メソッド引数2

def smile number_of_smiles puts 'ニヤリ' * number_of_smiles end smile *3 puts 'ニコリ' smile *3 の書き方は、tomomii さんが意図しないメソッドの呼び出しになってしまってます。 この方法で書くと、後に意図しないエラーで悩まされる事になると思いま…

メソッド引数 >デフォルト引数

def smile number_of_smiles puts 'ニヤリ' * number_of_smiles end smile *3 puts 'ニコリ' # 下行は引数がないためエラーとなる smile なお、引数が与えられなかった場合一回だけニコリを表示したければ、 デフォルト引数というのを定義できます。 def smi…

局所変数 (local variable)

次のプログラムには2つの変数があります。 def double_this num num_times2 = num *2 puts num.to_s + 'の2倍は ' +num_times2.to_s end double_this 44 実行結果 moomin:programmingRuby tomomi$ ruby method.rb 44の2倍は 88 うー教科書に掲載されている例…

メソッド引数(ひきすう)

メソッドには2種類ありますね 1つのオブジェクトに対し単独で用いられるもの gets, to_i, to_s, reverseやcapitalizeなど 引数(prameter)を取ってオブジェクトがそのメソッドをどのように実行するか指定する必要があるもの +, -, puts, defなど 先にやったs…

メソッドの作り方

複数の材料を使ってプログラミングするスキルを身につけないまま次ステップに進むのは忍びない。空手に例えるなら基本の姿勢や立ち方を知らないまま覚えたての型を演武するイメージ。キレも美しさもスピードもない。しかし進むことにします。 コードの繰り返…

配列メソッド>練習4

つづき 好きな数だけ単語の入力をしてもらい(1行に1単語と入力が続き 最後は空行でEnterのみとする)それをアルファベット順に並び替えて出力するようなプログラムを書いてみましょう。 空行でEnterを押した時つねにプログラムが終了するかなどのテストもおこ…

配列メソッド>練習3

引き続きトライ。 好きな数だけ単語の入力をしてもらい(1行に1単語と入力が続き 最後は空行でEnterのみとする)それをアルファベット順に並び替えて出力するようなプログラムを書いてみましょう。 空行でEnterを押した時つねにプログラムが終了するかなどのテ…

配列メソッド>練習2

挫折うぅぅ。5時間くらいかけて考えた気がするが解けませんでした。むつかしい。 好きな数だけ単語の入力をしてもらい(1行に1単語と入力が続き 最後は空行でEnterのみとする)それをアルファベット順に並び替えて出力するようなプログラムを書いてみましょう…