fizzbuzz書いてみた
FizzBuzzまったく書けない人がいるとか、じゃんけんの方がルール難しいしおかしいだろとかバカにしてたけど、一度も書いたことなかったので書いてみた
chatに残ってたログといっしょにコピペする
まず原型
#!/usr/bin/env ruby (1...100).each do |i| (puts 'FizzBuzz'; next) if i%15 == 0 (puts 'Fizz'; next) if i%3 == 0 (puts 'Buzz'; next) if i%5 == 0 puts i end
しゃお先生がいってたみたいに、if文のかわりに&&を使うか
#!/usr/bin/env ruby (1...100).each do |i| i%15==0 and (puts 'FizzBuzz'; next) i%3==0 and (puts 'Fizz'; next) i%5==0 and (puts 'Buzz'; next) puts i end
#!/usr/bin/env ruby (1...100).each do |i| (i%15==0)&&(puts 'FizzBuzz'; next) (i%3==0)&&(puts 'Fizz'; next) (i%5==0)&&(puts 'Buzz'; next) puts i end
#!/usr/bin/env ruby (1...100).each do |i| puts lambda{|i| (i%15==0)&&(return 'FizzBuzz') (i%3==0)&&(return 'Fizz') (i%5==0)&&(return 'Buzz') return i }.call(i) end
ここからどうしよう
returnを取れるようにしたい
いいかんじ・・
#!/usr/bin/env ruby (1...100).each do |i| puts lambda{|i| (i%15==0)&&('FizzBuzz')|| (i%3==0)&&('Fizz')|| (i%5==0)&&('Buzz')|| i }.call(i) end
かっこいらなかった
#!/usr/bin/env ruby (1...100).each do |i| puts lambda{|i| (i%15==0)&&'FizzBuzz'|| (i%3==0)&&'Fizz'|| (i%5==0)&&'Buzz'|| i }.call(i) end
つかーなんでlamba使ってるんだ
#!/usr/bin/env ruby (1...100).each do |i| puts ((i%15==0)&&'FizzBuzz'|| (i%3==0)&&'Fizz'|| (i%5==0)&&'Buzz'|| i) end
<1採用しました
#!/usr/bin/env ruby (1...100).each do |i| puts ((i%15<1)&&'FizzBuzz'|| (i%3<1)&&'Fizz'|| (i%5<1)&&'Buzz'|| i) end
#!/usr/bin/env ruby (1...100).each{|i| puts ((i%15<1)&&'FizzBuzz'|| (i%3<1)&&'Fizz'|| (i%5<1)&&'Buzz'|| i) }
doやめた
#!/usr/bin/env ruby p (1..100).map{|i| ((i%15<1)&&'FizzBuzz'|| (i%3<1)&&'Fizz'|| (i%5<1)&&'Buzz'|| i) }
15で割ってるのなんとかなんねーの
かっこけっこういらなかった
#!/usr/bin/env ruby p (1..100).map{|i| i%15<1&&'FizzBuzz'|| i%3<1&&'Fizz'|| i%5<1&&'Buzz'|| i }
文字をsymbolに変えても67文字か
このへんで30分たった
#!/usr/bin/env ruby p (1..100).map{|i| s=i%3<1&&'Fizz'||nil i%5<1&&"#{s}Buzz"|| s||i }
15の判定なくせた
63文字だ
#!/usr/bin/env ruby p (1..100).map{|i| s="#{i%3<1&&'Fizz'||nil}#{i%5<1&&"Buzz"||nil}" s.empty? ? i : s }
へんなのできた
emptyやめて空文字列と比較、3項演算もスペースが無駄
#!/usr/bin/env ruby p (1..100).map{|i| s=(i%3<1&&'Fizz'||'')+(i%5<1&&'Buzz'||'') s>''&&s||i }
67文字だ
いまのところ63文字が自己最高だった
ここまで来て60文字切っているのを見たらけっこういい線いってたことがわかった