2011-02-18から1日間の記事一覧

地獄のFizzBuzz その 1

http://twitter.com/search?q=%23jigoku_no_fizzbuzz というわけで #include <stdio.h> static void fizzbuzz(int i, int n, char *s, int *flag) { if (i % n == 0) { printf("%s", s); *flag = 0; } } int main(void) { int i; for (i = 1; i < 100; ++i) { int fla</stdio.h>…

Ruby で。相互再帰に対応

まぁほとんどそのまま module LOOP_EX class Clusure # wrapper object attr_reader :func attr_reader :args def initialize f, v @func = f @args = v end end def loop_ex func private_name = (" " + func.to_s).to_sym # original method is callable b…

Python で

def tail(fun, *args): return (fun, args) def call_with_tco(fun, *args): esc = args[-1] c = (fun, args) while c[0] != esc: c = c[0](*c[1]) return c[0](*c[1]) def identity(x): return x def fact(n, acc, k): if n > 0: return tail(fact, n - 1, …

Ruby メタプログラミングで

Ruby メタプログラミングで末尾再帰をループに展開 module LOOP_EX class ObjectHolder # wrapper object attr_reader :value def initialize v @value = v end end def loop_ex func private_name = (" " + func.to_s).to_sym # original method is callabl…