Skip to content

Instantly share code, notes, and snippets.

@sphynx
sphynx / serial.c
Last active December 18, 2018 23:21
Example of functions inside global structures, emulating "Serial" from Arduino language.
#include <stdio.h>
#include <stdlib.h>
typedef void (*func) (const char *);
struct module {
func print;
func println;
};
;; Packages.
(require 'package)
(add-to-list 'package-archives
(cons "melpa-stable" "http://stable.melpa.org/packages/") t)
(package-initialize)
(add-to-list 'load-path "~/elisp") ;; for saving some custom code.
;; Save customizations in a separate file.
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
;; Packages.
(require 'package)
(add-to-list 'package-archives
(cons "melpa-stable" "http://stable.melpa.org/packages/") t)
(package-initialize)
(add-to-list 'load-path "~/elisp") ;; for saving some custom code.
;; Save customizations in a separate file.
(setq custom-file (expand-file-name "custom.el" user-emacs-directory))
@sphynx
sphynx / KnightTour.hs
Last active August 29, 2015 14:24
Knight Tour at Haskell Hoodlums
module Main where
import Data.Array
import Data.List
import Data.Ord
import Text.Printf
type Coord = (Int, Int)
type Size = (Int, Int)
@sphynx
sphynx / gist:4aab07d3e8417f790ea0
Created March 26, 2015 21:38
Solver for probabilistic coupons problem
import Data.Ratio
main :: IO ()
main = print $ result 5
result :: Integer -> Rational
result size = abs $ sum
[ fromIntegral mult * infTailSum size d
| (mult, d) <- coeffs size
]
import Control.Monad
import System.Random
import Data.List
size :: Int
size = 3
steps :: Int
steps = 10000
module Q where
data Quarter = NE | NW | SE | SW deriving Show
type Vector = (Float, Float)
quarter :: Vector -> Vector -> Quarter
quarter look target = detect $ angle look - angle target
detect :: Float -> Quarter
detect x
(define l_y1 :: int)
(define l_y2 :: int)
(define l_y3 :: int)
(define l_x1 :: int)
(define l_x2 :: int)
(define l_x3 :: int)
(define l_x4 :: int)
(assert (<= l_x1 3))
(assert (>= l_x1 0))
@sphynx
sphynx / gist:878631
Created March 20, 2011 20:11
Haskell solution to Project Euler #14 (now with IOUArray, earlier with State)
module Main where
import Data.List (maximumBy)
import Data.Word (Word64)
import Data.Array.IO (IOUArray, newArray, readArray, writeArray, unsafeFreeze)
import Data.Array.Unboxed (UArray)
import Data.Array.IArray (assocs)
import Control.Monad (forM_)
type Cache = IOUArray Word64 Word64
@sphynx
sphynx / gist:841213
Created February 23, 2011 21:22
Primes test
primes :: [Integer]
primes = sieve [2..]
where
sieve (p:xs) = p : sieve [x | x <- xs, x `mod` p > 0]
main = print $ primes !! 10000
-- compile with `ghc --make primes.hs`, then run run run :)