Skip to content

Instantly share code, notes, and snippets.

@Mozk0
Mozk0 / !description.txt
Last active December 22, 2015 04:38
クロッシング問題をそれぞれHaskell, D, C++で書いた。全てマージソートでマージ中に転倒数を数えていくアルゴリズム。 crossing.hs : vectorを使って高速化 200ms crossing2.hs : listのみを使った 1200ms crossing.d : 130ms crossing.c++ : 80ms
クロッシング問題をそれぞれHaskell, D, C++で書いた。全てマージソートでマージ中に転倒数を数えていくアルゴリズム。
crossing.hs : 200ms vectorを使って高速化
crossing2.hs : 1200ms listのみを使った
crossing.d : 130ms
crossing.c++ : 80ms
@Mozk0
Mozk0 / format.hs
Created January 23, 2012 07:32
統合TVのネタバレスーパーを生成する。
import System.Environment (getArgs)
import Control.Monad (mapM_)
import Data.Functor ((<$>))
import Data.String.Utils (replace) -- missingH
import System.IO.UTF8 (putStrLn, readFile) -- utf8-string
import Prelude hiding (putStrLn, readFile)
main :: IO ()
main = main' =<< getArgs
@Mozk0
Mozk0 / Lazy.hs
Created November 23, 2011 06:52
Lazy encoding / decoding of [a] using Data.Binary in Haskell
{-# LANGUAGE FlexibleInstances #-}
--
-- head $ decode $ encode [1..] -- : infinite loop
-- head $ runLazily $ decode $ encode $ Lazily [1..] -- : 1
--
module Data.Binary.Lazy (
Lazily(..),
) where
@Mozk0
Mozk0 / rbtree.lisp
Created December 16, 2010 15:40
Red Black Tree for Common Lisp.
;; The following implementation of rb-tree is based on http://www.cs.kent.ac.uk/people/staff/smk/redblack/.
(defun change-to-black (tree)
(pattern-match tree
((:pattern (_ . rest) :variable rest :ignore _) `(:B . ,rest))
(:otherwise nil)))
(defun rb-insert (tree obj cmp)
(change-to-black (rb-insert% tree obj cmp)))
(DEFPARAMETER *TESTS* NIL)
(DEFMACRO EXAMPLE (EXPR _ EXPECT &KEY (TEST '#'EQUALP))
(DECLARE (IGNORE _))
(WITH-GENSYM (RESULT)
`(LET ((,RESULT ,EXPR))
(IF (FUNCALL ,TEST ,RESULT ',EXPECT)
(FORMAT T "OK: ~a => ~a~%" ',EXPR ,RESULT)
(FORMAT T "NG: ~a => ~a, expected ~a~%" ',EXPR ,RESULT ',EXPECT)))))
(DEFPARAMETER *TESTS* NIL)
(DEFMACRO EXAMPLE (EXPR _ EXPECT &KEY (TEST '#'EQUALP))
(DECLARE (IGNORE _))
(WITH-GENSYM (RESULT)
`(LET ((,RESULT ,EXPR))
(IF (FUNCALL ,TEST ,RESULT ',EXPECT)
(FORMAT T "OK: ~a => ~a~%" ',EXPR ,RESULT)
(FORMAT T "NG: ~a => ~a, expected ~a~%" ',EXPR ,RESULT ',EXPECT)))))
(PROCLAIM '(OPTIMIZE (SPEED 3) (SAFETY 0) (DEBUG 0)))
(DEFUN FACT1 (X)
"factorial, using DO"
(DECLARE (FIXNUM X))
(DO ((FACT-N 1 (THE FIXNUM (* FACT-N N)))
(N 1 (1+ N)))
((> N X) FACT-N)
(DECLARE (FIXNUM FACT-N N))))
(PROCLAIM '(OPTIMIZE (SPEED 3) (SAFETY 0) (DEBUG 0)))
(DEFUN FACT1 (X)
"factorial, using DO"
(DECLARE (FIXNUM X))
(DO ((FACT-N 1 (THE FIXNUM (* FACT-N N)))
(N 1 (1+ N)))
((> N X) FACT-N)
(DECLARE (FIXNUM FACT-N N))))
require(fork)
require(gtools)
#
# socket listen
# ゾンビをたくさんつくります。
server.start <- function(port = 3333) {
server.pid <<-
fork(function() {
p1 <- page(a("p02"),
cmd.img(hist(rnorm(20)), "rnorm20"),
cmd(summary(rnorm(10))))
p02 <- page(a("p20"),
"タイトル",
"environment")
p20 <- page(a("p21"),
"自己紹介",