Just do IT

思うは招く

Ruby基礎100本ノック

Procの参考問題 Ruby基礎#28

お題 次のような動作をするメソッドmy_collectを定義せよ a = [1,2,3,4,5] a.collect { |item| item * 2 } 条件 Procを使うこと 引数としてeachメソッドを持つオブジェクトを受け取り、各要素をブロックで処理する 回答 def my_collect(obj, &block) ary = […

テキストファイルのエンコーディングを変換して出力 Ruby基礎#27

お題 Shift_JISで「こんにちは」と書かれたテキストファイルを作り、そのテキストファイルを読み込んでUTF-8で出力するスクリプトを作れ。 「たのしいRuby 第6版 P.426」より 回答 File.write("bar.txt", "こんにちは", encoding: "Shift_JIS") text = File.…

文字列を異なるエンコーディングに変えて連結して返す Ruby基礎#26

お題 EUC-JPの文字列と、Shift-JISの文字列を連結してUTF-8の文字列を返すメソッドを定義せよ。 回答 str_euc = "マッスル".encode("EUC-JP") str_sjis = "北村".encode("Shift_JIS") def to_utf8(str_euc, str_sjis) str_euc.encode("UTF-8") + str_sjis.en…

Rubyのライブラリの名前だけを取り出す Ruby基礎#25

お題 変数$:にはRubyが利用するライブラリが置かれているディレクトリの名前が配列の形で格納されている この変数を使い、RUbyが利用できるライブラリのファイル名を順に出力せよ 「たのしいRuby 第6版 P.410」より 回答 (カンニングしてしまった...) $:.e…

テキストファイルからデータを読み込み、いろんな処理をして書き込む Ruby基礎#24

お題 テキストファイルからデータを読み込み、次の条件に従って上書きをするスクリプトを作成せよ。 ファイル中の行を逆順に並べ替える ファイル中の最初の1行だけ残して他は削除 ファイル中の最後の1行だけ残して他は削除 回答 # ファイル中の行を逆順に並…

lsコマンドの結果を自作wcコマンドでカウント Ruby基礎#23

やりたいこと ターミナルのls -lコマンドの結果を自分で作ったwcコマンドにかけて行数・単語数・容量を表示させたい。 つまり以下の処理をしたい。 ls -l | wc コード # 標準入力を受け取る input = $stdin.read # 行数を取得 def load_lines(str) str.count…

Ruby基礎問題100本ノック#22 テキストの行数・単語数・文字数を数える

お題 テキストファイルからデータを読み込んで、次の数を数える処理を行うスクリプトを作成せよ。 行数 単語数 文字数 サンプルテキストファイル foo.txt 山田孝之 鬼束ちひろ マッスル北村 arnold schwarzenegger 回答 # ファイルの文字列を読み込む str = …

Ruby基礎問題100本ノック#21 正規表現と文字列とcapitalize

お題 アルファベットとハイフンからなる文字列を与えられると、ハイフンで区切られた部分をcapitalizeするようなメソッドword_capitalizeを定義せよ。 引用:「たのしいRuby 第6版」P.364より 回答 def word_capitalize(str) ary = str.split(/\-/) ary.map(…

Ruby基礎問題100本ノック#20 gsubメソッドを使う

お題 「正規表現は難しい!なんて難しいんだ!」という文字列を、gsubメソッドを使って「正規表現は簡単だ!なんて簡単なんだ!」という文字列に直せ。 引用:「たのしいRuby 第6版」P.364より 回答 str = "正規表現は難しい!なんて難しいんだ!" str.gsub(…

Ruby基礎問題100本ノック#19 正規表現1

お題 電子メールアドレス「ローカルパート@ドメイン名」の文字列から、ローカルパートを$1、ドメイン名を$2として取得する正規表現を作れ。 引用:「たのしいRuby 第6版」P.364より 回答 email = "test@domain.com" email.scan(/(\w+)@(\w+\.\w+)/) do |m| p…

Ruby基礎問題100本ノック#18 文字列をハッシュに入れる

お題 空白、タブ、改行で区切られた以下の文字列を、ハッシュに変換するメソッドstr_to_hashを定義せよ。 # こんな文字列を ”blue 青 white 白\nred 赤” # こんなふうにしてくれよぉ => {"blue"=>"青", "white"=>"白", "red"=>"赤"} なお、空白、タブ、改行…

Ruby基礎問題100本ノック#17 ハッシュの定義、eachメソッドを使う

お題 (1)曜日を表す英語と、日本語との対応を表すハッシュwdayを定義せよ (2)ハッシュのメソッドを使い、ハッシュwdayのペアの数を数えよ (3)eachメソッドと(1)のハッシュwdayを使って、以下のような文字列を出力せよ 「sunday」は日曜日のことです。 「mond…

Ruby基礎問題100本ノック#16 文字列をいじる

お題 (1) "Ruby is an object oriented programming language"という文字列に含まれる各単語を要素とする配列を作れ (1)の配列をアルファベット順にソートせよ (2)の配列を大文字と小文字の区別をせずにアルファベット順にソートせよ (1)の文字列の各文字(…

Ruby基礎問題100本ノック#15 複数の配列に並行してアクセスする

お題 数値からなる配列num1とnum2にたいして、それらの個々の要素を足し合わせた要素からなる配列を返すメソッドsum_arrayを定義せよ こんな感じの結果にせよ。 p sum_array([1, 2, 3],[4, 6, 8]) => [5, 8, 11] (たのしいRubyに収録されている例題です) …

Ruby基礎問題100本ノック#14 条件に合った配列の複数の要素を取り出す

お題 1〜100の整数を含む配列aryから、1〜10、11〜20、21〜30、というように10個の要素を含む配列を10個取り出せ 回答 ary = (1..100).to_a result = [] 10.times do |i| result << ary[i*10, 10] end 説明 (1..100).to_aで「1〜100」の整数を格納した配列が…

Ruby基礎問題100本ノック#13 配列の要素に変更を加える

お題 1〜100までの整数が昇順に並ぶ配列aryを作れ 配列aryの各要素を100倍した配列ary2を作れ 回答 ary = (1..100).to_a ary2 = ary.map { |n| n * 100 } 説明 前回と似たような感じの問題。 k-koh.hatenablog.com mapメソッドにブロックを渡し、配列の各要…

Ruby基礎問題100本ノック#12 整数が昇順に並ぶ配列を作る

お題 1~100までの整数が昇順に並ぶ配列aを作れ a[0]は1、a[99]は100とする 回答 def make_ary(ary) 1.upto(100) { |n| ary.push(n) } end ary = [] make_ary(ary) p ary 説明 1.upto(100)で「1から100まで繰り返す」という意味になる。 ブロックの中でary.pu…

Ruby基礎問題100本ノック#11 サイコロを作る

お題 (1)サイコロを降って出た目を返すメソッドdiceを定義せよ サイコロには1〜6の数字がある (もちろん)サイコロなのでランダムに値が返る (2)10個のサイコロを振って出た目の合計を返すメソッドdice10も定義せよ 回答 (1)の回答 def dice(ary) puts ary.…

Ruby基礎問題100本ノック#10 ファイルの単語数を取得する

お題 以下のファイルの単語数を取得せよ wcコマンドを使い単語数が合っているかチェックすること wcコマンドのカウント方法に合わせる sample.rb sample sample sample sample sample 回答 file = 'sample.rb' file_words = File.read(file).split.size p fi…

Ruby基礎問題100本ノック#9 ファイルの容量(バイト数)を取得する

お題 下記のファイルの容量(バイト数)を求めよ できたらwcコマンドを使い容量が合っているかチェックすること sample.rb sample sample sample sample sample 回答 file = 'sample.rb' p File::Stat.new(file).size => 34 wcコマンドの-cオプションを使い…

Ruby基礎問題100本ノック#8 華氏を摂氏に変換し、1度から100度まで温度を出力

お題 「Ruby基礎問題100本ノック#4 摂氏温度を華氏温度に変換する」とは逆に、華氏を摂氏に変換するメソッドfahr_to_celsを定義せよ 摂氏1度から摂氏100度まで1度きざみに華氏温度との対応を出力すること 回答 def fahr_to_cels(fahr) (fahr - 32) / 1.8 end…

Ruby基礎問題100本ノック#7 Optionparserを使って条件分岐してメソッドを使う

お題 ターミナルから-a,-l,-r,-alrのオプションを引き取り、それぞれのオプションで条件分岐をしてメソッドを設定せよ メソッドはputs '適当な文字列'でOK -alrに関しては-ralや-lraなどのように順番を変えても同じメソッドが動作すること 回答 require 'opt…

Ruby基礎問題100本ノック#6 ファイルの行数を取得する

お題 次のファイルの行数を取得せよ。 test test test test test ファイル名test_file.rb (ファイル場所は実行ファイルと同一ディレクトリにあるものとする) 回答 str = File.read("./test_file.rb") p str.lines.count 説明 ファイルの内容を取得する方法…

Ruby基礎問題100本ノック#5 配列の各数字に対応する文字列をハッシュから取り出す

お題 とある配列の、後ろから1〜3番目の数字それぞれに対応する文字列を、用意されたハッシュから取り出して連結で表示せよ。 例えば、["1", "2", "3", "4", "5", "6"]といった配列があり、次のようなハッシュがあったとする。 hash = { "0" => "---", "1" =…

Ruby基礎問題100本ノック#4 摂氏温度を華氏温度に変換する

お題 摂氏温度を華氏温度に変換するcels_to_fahrメソッドを定義せよ。 回答 華氏と摂氏を変換する公式は次のとおり。 華氏 = 摂氏 × 9 ÷ 5 + 32 つまりこのままコードにすればいいだけ。 def cels_to_fahr(cels) cels * 9 / 5 + 32 end 実行してみると cel…

Ruby基礎問題100本ノック#3 文字列の各文字を数える

前回に引き続き、今度は単語ではなく文字の個数を数えてみる。 Ruby基礎問題100本ノック#2 文字列から単語をカウントしてハッシュで表現する - ゴリラよりオランウータン派 お題:文字列の各文字数を数えてハッシュで表現せよ 問題:文字列no pain no gainの…

Ruby基礎問題100本ノック#2 文字列から単語数をカウントしてハッシュで表現する

お題:文字列に出現する単語数を数えてみよう 問題:文字列no pain no gainに出てくる単語の個数を数えて、ハッシュで表現しよう 問題については以下の記事を参考にした。 qiita.com 回答 string = 'no pain no gain' hash = Hash.new(0) string.split(' ').…

Ruby基礎問題100本ノック#1 特定の文字をカウントする

何をするか 今日から、Rubyの基礎問題を解いていくことにした。 目的:プログラミング脳を鍛えるため 目的はこちら。 プログラミング脳を鍛える 自分でロジックを組む力 詰まったときの思考的な対処法を身につける メンタル的なバランスをとる きっかけは、…