Skip to content

Instantly share code, notes, and snippets.

@nfunato
nfunato / tofu.lisp
Created December 10, 2012 07:46
The "Retro" Tofu Shop Game in Iscandar
;;; -*- Mode: Lisp -*-
;;; The Tofu Shop Game in Iscandar
;;; Copyright (C) 1978-2012 by Nobuhide Tsuda
;;; (see also http://vivi.dyndns.org/tofu/tofu.html)
;;;
;;; Revision History:
;;; 1978 Design & Implemented by Nobuhide Tuda (ntsuda at beam.ne.jp),
;;; as a sort of business strategy simulation game, assuming
;;; MC6800(1MHz) and RAM 4-32K bytes w/o secondary storage
#!/usr/local/bin/sbcl --script
;; The exercise in http://d.hatena.ne.jp/eel3/20151102/1446476928
;; https://github.com/mrkkrp/unix-opts/blob/master/example/example.lisp
(load "unix-opts") ; or (ql:quickload "unix-opts")
;;-------------------------------------------------------------------
;; Essential processing
;; Similar to the following Haskell expression, but in somewhat eager:
@nfunato
nfunato / google CL style guide in JP
Last active December 10, 2015 16:38
Google Common Lisp Style Guide (a translation in Japanese)
Note:
The original document is a section of CLOS in "Google Common Lisp Style Guid",
http://google-styleguide.googlecode.com/svn/trunk/lispguide.xml (v1.17)
This translation is based on a Japanese translation
http://google-common-lisp-style-guide-ja.cddddr.org/?showone=CLOS#CLOS
as of 2013/01/05 23:00 JST
CC-By 3.0 License
@nfunato
nfunato / forth-web-pages.html
Last active December 12, 2015 02:38
Some Forth pages to go
<!DOCTYPE html public "-//W3C//DTD HTML 4.01 Transitional//EN">
<html lang="ja" dir="ltr">
<html>
<head>
<meta charset="UTF-8">
<title>
Some Forth pages to go
</title>
</head>
<body>
@nfunato
nfunato / _contents
Last active December 21, 2015 04:09
Handy implementations of famous macros for Common Lisp (and-let, destructure-case)
with-gensyms, once-only (with-gensyms.lisp -- from Practical Common Lisp by Peter Seibel)
destructure-case (destructure-case.lisp)
and-let* (and-let.lisp)
@nfunato
nfunato / Memo.hs
Last active December 22, 2015 14:08
{-# LANGUAGE FlexibleInstances #-}
-- ==================================================================
-- Memo module
-- the code from http://www.sampou.org/cgi-bin/haskell.cgi?Memoise
-- with non-essential patches by @nfunato on 2013-09-07
--
module Memo
(
@nfunato
nfunato / csv-parser.hs
Last active December 23, 2015 16:09
an exercise of Text.ParserCombinators.ReadP
-- CSV file parser (as an exercise of Text.ParserCombinators.ReadP)
-- 2013-09-21 @nfunato
import Text.ParserCombinators.ReadP
import Control.Applicative ((<$>), (<*>), (<*), (*>))
-- NOTE:
-- The code here is baesd on d.hatena.ne.jp/kazu-yamamoto/20100104/1262597082
-- which shows code for Parsec2, not ReadP
-- BUGS:
@nfunato
nfunato / sudoku.hs
Last active December 24, 2015 05:39
{-- Just a porting from http://norvig.com/sudoku.html, Dec 2011 by @nfunato --}
import Data.List ((\\), delete, nub, null)
import Data.Map ((!))
import qualified Data.Map as M -- Map, adjust, fold, fromList, toList
import Control.Exception (assert)
import Text.Printf (printf)
import Data.Maybe (mapMaybe)
import Control.Monad (foldM, msum)
type Square = (Char,Char)
@nfunato
nfunato / p17.hs
Created October 3, 2013 22:19
project euler problem 17
p17 = p17' [1..1000]
p17' = sum . map (length . filter(`notElem` " -") . itoa)
itoa i
| i < 0 = "minus " ++ itoa (-i)
| i < 20 = smalls i
| i < 100 = f (quotRem i 10) tens "-" smalls
| i < 1000 = f (quotRem i 100) ((++" hundred").smalls) " and " itoa
| i ==1000 = "one thousand"
| otherwise = error "unsupported range"
-- O(n) revTake and revDrop using list-numeral alike Church-numeral
-- (from Richard O'Keefe's post to haskell-cafe, i.e.
-- http://www.haskell.org/pipermail/haskell-cafe/2010-September/083905.html)
-- | l |
-- +----------------+-----+
-- | l-n (_:m) n |
revTake n xs = drop' (drop n xs) xs
where drop' (_:m) (_:xs) = drop' m xs