Zip penalties:
| Location | Penalty |
|---|---|
| Quickman ceiling zip | DQ |
| Quickman boss cooridor zip | DQ |
| Heat Rando exclusive zip | DQ |
| Heat ceiling corridor zip | DQ |
| Dog Scrolls | DQ |
| Good Wood | DQ |
| {- cabal: | |
| build-depends: base | |
| build-depends: transformers | |
| ghc-options: -threaded | |
| -} | |
| import Control.Concurrent (myThreadId, threadDelay, forkOS) | |
| import Control.Monad (forever, void) | |
| import Control.Monad.IO.Class (liftIO) |
| module Main where | |
| -- | We're using Cont directly from transformers package | |
| import Control.Monad.Trans.Cont | |
| import Control.Monad.Trans.Writer | |
| import Control.Monad.Trans.Class (lift) | |
| -- | We're going to be doing a lot of 'print'ing from inside 'ContT' | |
| -- so let's give ourselves a conviennt way to do it. | |
| cPrint = lift . putStrLn |
| {-# language FlexibleInstances #-} | |
| {-# language TypeFamilies #-} | |
| {-# language FlexibleContexts #-} | |
| module Main where | |
| import Streamly | |
| import qualified Streamly.Prelude as S | |
| import Control.Applicative | |
| import Control.Monad.Logic | |
| import Data.Foldable |
Zip penalties:
| Location | Penalty |
|---|---|
| Quickman ceiling zip | DQ |
| Quickman boss cooridor zip | DQ |
| Heat Rando exclusive zip | DQ |
| Heat ceiling corridor zip | DQ |
| Dog Scrolls | DQ |
| Good Wood | DQ |
| 2019-05-25T14:15:48 default - Warning: QMetaObject::connectSlotsByName: No matching signal for on_pushButton_clicked() (:0, ) | |
| 2019-05-25T14:15:48 default - Warning: QLayout: Attempting to add QLayout "" to USB2SnesStatut "usb2snesStatut", which already has a layout (:0, ) | |
| 2019-05-25T14:15:48 default - Warning: QLayout: Attempting to add QLayout "" to SNESClassicStatut "snesclassicStatut", which already has a layout (:0, ) | |
| 2019-05-25T14:15:48 ConsoleSwitcher - Debug: Mode is "USB2Snes" (:0, ) | |
| 2019-05-25T14:15:49 MainUI - Debug: Savestate2snes "0.4.2" (:0, ) | |
| 2019-05-25T14:15:49 MainUI - Debug: Mode changed 0 (:0, ) | |
| 2019-05-25T14:15:49 MainUI - Debug: Loading games (:0, ) | |
| 2019-05-25T14:15:49 HandleStuff - Debug: Loading games 1 (:0, ) | |
| 2019-05-25T14:15:49 HandleStuff - Debug: "Super Metroid" (:0, ) | |
| 2019-05-25T14:15:49 MainUI - Debug: LastGameLoaded was : "Super Metroid" (:0, ) |
| local function print_nmi() | |
| -- 10: give it a few frames to warm up, why not? | |
| if emu.framecount() == 10 then | |
| -- TODO: use gui.text(0, 0, foo) instead of print(foo) | |
| print("" .. (memory.readbyteunsigned(0xfffa) + memory.readbyteunsigned(0xfffb)*256)) | |
| end | |
| end | |
| emu.registerbefore(print_nmi) | |
| -- load it with: |
| -- This is a direct copy&paste from Bird's Pearls of Functional Algorithm Design | |
| import Data.List (transpose) | |
| trimult xss yss = zipWith (map . dp) xss (submats (transpose yss)) | |
| submats :: [[a]] -> [[[a]]] | |
| submats [[x ]] = [[[x ]]] | |
| submats xss = xss : submats (map tail (tail xss)) | |
| dp xs ys = sum (zipWith (*) xs ys) |
| { | |
| {-# OPTIONS -w #-} | |
| module CoreLexer | |
| ( Alex(..) | |
| , AlexPosn(..) | |
| , Token(..) | |
| , alexMonadScan | |
| , runAlex | |
| , alexGetInput | |
| ) where |
| module Utils where | |
| import Data.Map (Map) | |
| import qualified Data.Map as M | |
| data Heap a = Heap | |
| { hNumObjs :: Int | |
| , hUnused :: [Addr] | |
| , hMap :: Map Addr a | |
| } |
| module Data.ZipWith where | |
| import Prelude hiding (zipWith, succ) | |
| infixl 5 << | |
| (<<) :: [a -> b] -> [a] -> [b] | |
| (f:fs) << (a:as) = f a : (fs << as) | |
| _ << _ = [] | |
| succ :: ([b] -> c) -> [a -> b] -> [a] -> c |