Skip to content

Instantly share code, notes, and snippets.

View fumieval's full-sized avatar
🐦
Birb

Fumiaki Kinoshita fumieval

🐦
Birb
View GitHub Profile
@fumieval
fumieval / gist:2868336
Created June 4, 2012 13:22
以下のプログラムの出力結果を答えよ。
# coding: utf-8
import itertools as I
def it():
yield 1
yield 0
yield 1
a, b, c = it(), I.islice(it(), 1, None), I.islice(it(), 2, None)
for i in I.imap(int.__add__, I.imap(int.__mul__, a, b), c):
↓正解↓
@fumieval
fumieval / gist:2888115
Created June 7, 2012 10:39
Pythonでメモ化再帰
class Memoize:
"""
Example usage:
>>> @Memoize
... def fib(n):
... if n <= 1:
... return n
... else:
... return fib(n - 1) + fib(n - 2)
>>> fib(300)
import itertools
class SingleMix(object):
def __init__(self, x): self._x = x
def __repr__(self): return "%s(%r)" % (self.__class__.__name__, self._x)
class InfixMix(object):
def __init__(self, left, right):
self._left = left
self._right = right
@fumieval
fumieval / mixin.py
Created June 14, 2012 13:34
__init__と__repr__を書く労力を低減するための混ぜ込みクラス
class once:
def __init__(self, f):
self.f = f
self.memo = {}
def __call__(self, *args):
if args in self.memo:
return self.memo[args]
else:
result = self.f(*args)
@fumieval
fumieval / gist:2944208
Created June 17, 2012 11:04
ふえぇ言語のインタプリタ(ver0.1)
{-
ふえぇ言語のインタプリタ(ver0.1)
構文:
ふ -> S
ぇ -> K
[F]え[G] -> [F][G]
[F]…[G] -> [G][F]
[F]、[G]は任意の式
-}
import Prelude
fibs = : 1 (: 1 (zipWith + fibs (tail fibs)))
main = putStr (unlines (map showInteger fibs))
data Token = Brace Int | Angle Int | Error | T String
transform :: [Token] -> [Int] -> [Token]
transform (Angle n:ts) (m:ms)
| m == n = T ";" : (transform ts (m:ms))
| n < m = T "}" : (transform (Angle n:ts) ms)
transform (Angle n:ts) ms = transform ts ms
transform (Brace n:ts) (m:ms) | n > m = T "{" : transform ts (n:m:ms)
transform (Brace n:ts) [] | n > 0 = T "{" : transform ts [n]
transform (Brace n:ts) ms = T "{" : T "}" : transform (Angle n:ts) ms
@fumieval
fumieval / HQ9FSIplus.hs
Created June 26, 2012 08:50
HQ9FSI+ interpreter
{- HQ9FSI+ interpreter -}
import Data.Char (toUpper)
import Control.Monad ((>=>))
import Data.List (intersperse)
import System.Environment (getArgs)
type Program = String -> (String, String)
step :: Char -- operation
-> String -- entire program
@fumieval
fumieval / build_quine.py
Created June 27, 2012 10:09
後輩にクワインを説明するためにCで作ったプログラム
import sys
data = open(sys.argv[1], "r").read()
print data.replace("$", chr(34) + data.replace("\n", "\\n") + chr(34)).strip("\n")