Skip to content

Instantly share code, notes, and snippets.

@technohippy
Created August 8, 2012 03:58
Show Gist options
  • Save technohippy/3291926 to your computer and use it in GitHub Desktop.
Save technohippy/3291926 to your computer and use it in GitHub Desktop.
FizzとBuzzだけで書く_.rb系の言語
def __script__(src)
code = []
src = src.unpack("C*").map {|c| c.ord.to_s(6).rjust(3, "0").chars.to_a }
src.flatten(1).map {|n| n.to_i(6) + 1 }.each do |n|
code.empty? || code.last.size + n + 1 >= 60 ? code << "" : code.last << " "
code.last << "_" * n
end
code.map! {|s| s.gsub(/_/, 'Fizz').gsub(/ /, 'Buzz')}
([%q(require "fizzbuzz")] + code).join("\n")
end
$code, $fragment = [], []
def method_missing(mhd, *x)
if x.empty?
$code.concat($fragment.reverse)
$fragment.clear
end
$fragment << (mhd.to_s.size - 1).to_s
end
class Object
def self.const_missing(name)
code = name.to_s.gsub(/Fizz/, '_').gsub(/Buzz/, ' ')
eval code
end
end
at_exit do
$code.concat($fragment.reverse)
eval($code.join.scan(/.../).map {|c| c.to_i(6) }.pack("C*"))
end
@technohippy
Copy link
Author

ほぼ https://github.com/mame/_ からのコピペ

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment