Skip to content

Instantly share code, notes, and snippets.

View msakai's full-sized avatar

Masahiro Sakai msakai

View GitHub Profile
@msakai
msakai / svm2lp.hs
Last active August 29, 2015 14:26
Convert libsvm format files to LP files
import Control.Monad
import qualified Data.Foldable as F
import Data.Default.Class
import Data.List.Split
import Data.Maybe
import Data.IntMap (IntMap)
import qualified Data.IntMap as IntMap
import Data.Map (Map)
import qualified Data.Map as Map
import qualified ToySolver.Data.MIP as MIP
@msakai
msakai / PatternSynonymExample.hs
Created August 16, 2015 02:32
An example usage of pattern synonyms
{-# LANGUAGE PatternSynonyms, ViewPatterns #-}
type Var = Int
type Monomial k = (k, [Var])
newtype Polynomial k = Polynomial [Monomial k]
pattern Var x = Polynomial [(1, [x])]
pattern Const k <- (asConst -> Just k) where
Const 0 = Polynomial []
@msakai
msakai / fakecoin.als
Created January 13, 2011 00:29
贋金パズルのAlloyモデル
// 失敗版
sig Coin {}
abstract sig State {
  candidates : set Coin,
}
sig Branch extends State {
  left, right : set Coin, 
  eq, lt, gt : State
@msakai
msakai / FourierMotzkin.hs
Created January 18, 2011 23:42
Naïve implementation of Fourier-Motzkin Variable Elimination
{-# OPTIONS_GHC -Wall #-}
-----------------------------------------------------------------------------
-- |
-- Module : FourierMotzkin
-- Copyright : (c) Masahiro Sakai 2011
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : provisional
-- Portability : portable
@msakai
msakai / Simplex.hs
Created January 24, 2011 16:25
Naïve implementation of Simplex method
{-# LANGUAGE ScopedTypeVariables #-}
{-# OPTIONS_GHC -Wall #-}
-----------------------------------------------------------------------------
-- |
-- Module : Simplex
-- Copyright : (c) Masahiro Sakai 2011
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : provisional
@msakai
msakai / Cooper.hs
Created January 27, 2011 17:04
Naïve implementation of Cooper's algorithm
{-# OPTIONS_GHC -Wall #-}
-----------------------------------------------------------------------------
-- |
-- Module : Cooper
-- Copyright : (c) Masahiro Sakai 2011
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : provisional
-- Portability : portable
@msakai
msakai / LPFile.hs
Created February 24, 2011 17:37
A CPLEX lp format parser library
{-# OPTIONS_GHC -Wall -fno-warn-unused-do-bind #-}
-----------------------------------------------------------------------------
-- |
-- Module : LPFile
-- Copyright : (c) Masahiro Sakai 2011
-- License : BSD-style
--
-- Maintainer : masahiro.sakai@gmail.com
-- Stability : provisional
-- Portability : portable
type S = ((Int,Int),(Int,Int),(Int,Int))
guess :: S -> S
guess ((a1,a2),(b1,b2),(c1,c2)) =
case (a1+b1) `compare` (b2+c1) of
EQ ->
if b1 < b2
then ((100,99),(99,100),(99,100))
else ((99,100),(100,99),(100,99))
LT ->
class SATSolver
def initialize
@cnt = 0
@ok = true
@clauses = []
@model = Hash.new
@watches = Hash.new
end
@msakai
msakai / TuplingExample.hs
Created March 25, 2011 14:36
タプル化の簡単な例
module TuplingExample where
import Prelude hiding (even, odd)
even :: Int -> Bool
even n = if n==0 then True else odd (n-1)
odd :: Int -> Bool
odd n = if n==0 then False else even (n-1)