```# A> I CAN HAS INTERVIEW?  I ARE ADVANCED PROGRAMMER.
#
# B> O HAI. U CAN HAS CALLCC?  GIMMEH FIZZBUZZ SOLUTION!

f_=b_=nil
callcc { |o|
loop do
o = callcc {|i|f_=i; o[:Fizz]}
2.times{o = callcc{|i|f_=i;o[]}}
end
}
callcc { |o,n|
loop do
o,n = callcc {|i|b_=i; o["#{n}Buzz"]}
4.times{o,n = callcc{|i|b_=i;o[n]}}
end
}
f = lambda{callcc{|i|f_[i]}}
b = lambda{|n|callcc{|i|b_[i,n]}}
1.upto(100){|i|puts b[f[]]||i}

# B> KTHX. U CAN HAS THREADS?

a = nil
f = Thread.new { loop { sleep 3; print :Fizz; a = nil } }
b = Thread.new { sleep 0.2; loop { sleep 5; print :Buzz; a = nil } }
sleep 0.5
1.upto(100) {|i| a=i; sleep 1; puts "#{a}"}

# B> LOL. UR CODE IS TEH SLOW
#
# A> I MADE U ONE WITH SEMAPHORE BUT I EATED IT.
#
# B> U CAN HAS INJECT?

a='_//_/_//_/_'.gsub('_','Fizz').split('/')
b='/_///_//_'.gsub('_','Buzz').split('/')

class Array
def roll
self.push(self.shift).last
end
end

(1..101).select{|n|(n%5)*(n%3)>0}.inject(0){|r,n|
puts "#{a.roll}#{b.roll}" while n>r+=1
puts n if n<99
r
}

# B> I SEE WHAT YOU DID THERE
#
# A> WHAT YOU SAY !!
#
# B> U CAN HAS INJECT, RLY? NOT ALL SIDE EFFECTZ?

(1..100).inject("x"){|p,n|
p.sub(/^((?:(?:x[^x]*){3})*)\$/,'\1Fizz').
sub(/^((?:(?:x[^x]*){5})*)\$/,'\1Buzz').
sub(/x\$/,"x#{n}") + 'x'
}.sub(/^x/,'').gsub(/x/,"\n").display

# B> KTHXBYE
#
# A> I CAN HAS PHONE CALL? PLZ?

--
s=%q(  Daniel Martin -- martin / snowplow.org
puts "s=%q(#{s})",s.to_a.last       )
puts "s=%q(#{s})",s.to_a.last

```