不適切な FizzBuzz / CodeIQ

CodeIQ で 不適切な FizzBuzz という課題がありました。
先日、その結果が発表されたようです。

不適切の、不適切による、不適切のための『FizzBuzz』結果発表!
https://codeiq.jp/magazine/2015/04/22840/

ここまでやるかという投稿がたくさんありますね…(笑)
そんな素敵な投稿に混じって…まさかの自分の投稿(by なおう)もありました(笑)

class Checker
  def initialize(msg, count)
    @msg = msg; @count = count; @alive = false
  end

  def process
   @alive &&= @num >= @count
   @num -= @num > @count ? @count : 0
   (@hit ||= @num == @count) ? @msg : ''
  end

  def setNum(num)
    @num = num; @alive = true; @hit = false
  end

  def alive?; @alive end
  def hit?; @hit end
  def destroy; @alive = false end
end

checkers = [Checker.new('Fizz', 3), Checker.new('Buzz', 5), Checker.new('FizzBuzz', 15)]
(1..100).each do |i|
  checkers.each {|c| c.setNum(i)}
  while checkers.any?(&:alive?); checkers.tap{|c| print c.map(&:process).join}.any?(&:hit?) && checkers.each(&:destroy) end
  checkers.none?(&:hit?) && print(i)
end

他の投稿が素敵すぎて恐れ多い感じですが、
乗ったのは純粋に嬉しいですね(`・ω・´)

 

Spread the love
  •  
  •  
  •  

コメント

タイトルとURLをコピーしました