This commit is contained in:
Rikuoh Tsujitani 2024-03-17 23:28:50 +09:00
parent dc906b0ca5
commit de6463a825
Signed by: riq0h
GPG key ID: 010F09DEA298C717
3 changed files with 26 additions and 31 deletions

View file

@ -27,4 +27,17 @@ do endの代わりに{}でブロックをくくることもできる:僕が最
112ページまで 112ページまで
## 3/17 ## 3/17
numbers.select {|n| n.even?} : このようにselectメソッドを使うと条件を満たした配列のみを作成できる。この例では偶数のみの配列が生成される
numbers.find : findメソッドは戻り値が真になった最初の値のみを返す
numbers.sum : 名前通り配列の要素を合計できる。文字列でも使える('')単純な連結ならjoinメソッドの方が楽だがsumは文字列の加工に優れる
&:メソッド名でシンプルに書けるブロックパラメータが1つ、ブロックの中のメソッドに引数がない、メソッドを1回呼び出す以外の処理がない、といった条件をすべて満たすと [1,2,3,4,5,6].select{|n| n.odd?}を[1,2,3,4,5,6,].select{&:odd?}のように簡潔に書ける。演算子を使っている場合は不可能
(1..5)←これはRangeという名前のオブジェクトだったただのそういう感じの簡略記法かと思っていた。点が三つだと5は含まれなくなる
(1..5).to_aで値が連続する配列を作ることができるこれ””””答え””””だ。こういうものがあるといいと思ってた
RBG変換器の実装を通じてこれたぶんもっと短くなる方法ありそうだな……と思っていたらすぐ下でsumを使った記法が書かれていた。ぜひものにしたい

34
main.rb
View file

@ -1,33 +1,5 @@
def fizz_buzz(n) def to_hex(r, g, b)
if n % 15 == 0 [r, g, b].sum('#') do |n|
'FizzBuzz' n.to_s(16).rjust(2, '0')
elsif n % 3 == 0
'Fizz'
elsif n % 5 == 0
'Buzz'
else
n.to_s
end end
end end
require 'minitest/autorun'
class FizzBuzzTest < Minitest::Test
def test_fizz_buzz
assert_equal '1', fizz_buzz(1)
assert_equal '2', fizz_buzz(2)
assert_equal 'Fizz', fizz_buzz(3)
assert_equal '4', fizz_buzz(4)
assert_equal 'Buzz', fizz_buzz(5)
assert_equal 'Fizz', fizz_buzz(6)
assert_equal 'Fizz Buzz', fizz_buzz(15)
end
end
# puts fizz_buzz(1)
# puts fizz_buzz(2)
# puts fizz_buzz(3)
# puts fizz_buzz(4)
# puts fizz_buzz(5)
# puts fizz_buzz(6)
# puts fizz_buzz(15)

10
main_test.rb Normal file
View file

@ -0,0 +1,10 @@
require 'minitest/autorun'
require_relative 'main'
class RdbTest < Minitest::Test
def test_to_hex
assert_equal '#000000', to_hex(0, 0, 0)
assert_equal '#ffffff', to_hex(255, 255, 255)
assert_equal '#043c78', to_hex(4, 60, 120)
end
end