Add chapter 2 selection sort solution
This commit is contained in:
6
02_selection_sort/Purescript/README.md
Normal file
6
02_selection_sort/Purescript/README.md
Normal file
@@ -0,0 +1,6 @@
|
||||
# Getting Started
|
||||
1. Install `spago` and `purescript` through `yarn` or `npm` (e.g. `yarn global add spago` and `yarn global add purescript`)
|
||||
2. Run file through `spago run --watch --main <module-name>` (e.g. `spago run --watch --main GrokkingAlgos.SelectionSort`)
|
||||
|
||||
# Main Repo
|
||||
- https://github.com/seanyu4296/grokking-algo-in-purs
|
||||
46
02_selection_sort/Purescript/SelectionSort.purs
Normal file
46
02_selection_sort/Purescript/SelectionSort.purs
Normal file
@@ -0,0 +1,46 @@
|
||||
module GrokkingAlgos.SelectionSort where
|
||||
|
||||
import Prelude
|
||||
|
||||
import Data.Foldable (minimum)
|
||||
import Data.List (List(..), delete, (:))
|
||||
import Data.Maybe (Maybe(..), fromJust)
|
||||
import Effect (Effect)
|
||||
import Effect.Class.Console (logShow)
|
||||
import Partial.Unsafe (unsafePartial)
|
||||
|
||||
-- PARTIAL
|
||||
selectionsort :: List Int -> List Int
|
||||
selectionsort Nil = Nil
|
||||
|
||||
selectionsort l = minVal : (selectionsort rest)
|
||||
where
|
||||
minVal :: Int
|
||||
minVal = unsafePartial $ fromJust $ minimum l
|
||||
|
||||
rest :: List Int
|
||||
rest = delete minVal l
|
||||
|
||||
-- TOTAL
|
||||
selectionsort' :: List Int -> Maybe (List Int)
|
||||
selectionsort' Nil = Just $ Nil
|
||||
|
||||
selectionsort' l = do
|
||||
mval <- minimum l
|
||||
let
|
||||
rest = delete mval l
|
||||
restSort <- selectionsort' rest
|
||||
pure $ mval : restSort
|
||||
|
||||
--
|
||||
main :: Effect Unit
|
||||
main = do
|
||||
logShow $ selectionsort $ 1 : 2 : 3 : 5 : 4 : Nil
|
||||
logShow $ selectionsort' $ 1 : 2 : 3 : 5 : 4 : Nil
|
||||
|
||||
|
||||
{-
|
||||
-- | Notes
|
||||
-- | Array (Reading (O(1))) (Insertion (O(n)))
|
||||
-- | Linked List (Reading - O(n)) (Insertion - O(1)) -- Constants in Big O????
|
||||
-}
|
||||
128
02_selection_sort/Purescript/packages.dhall
Normal file
128
02_selection_sort/Purescript/packages.dhall
Normal file
@@ -0,0 +1,128 @@
|
||||
{-
|
||||
Welcome to your new Dhall package-set!
|
||||
|
||||
Below are instructions for how to edit this file for most use
|
||||
cases, so that you don't need to know Dhall to use it.
|
||||
|
||||
## Warning: Don't Move This Top-Level Comment!
|
||||
|
||||
Due to how `dhall format` currently works, this comment's
|
||||
instructions cannot appear near corresponding sections below
|
||||
because `dhall format` will delete the comment. However,
|
||||
it will not delete a top-level comment like this one.
|
||||
|
||||
## Use Cases
|
||||
|
||||
Most will want to do one or both of these options:
|
||||
1. Override/Patch a package's dependency
|
||||
2. Add a package not already in the default package set
|
||||
|
||||
This file will continue to work whether you use one or both options.
|
||||
Instructions for each option are explained below.
|
||||
|
||||
### Overriding/Patching a package
|
||||
|
||||
Purpose:
|
||||
- Change a package's dependency to a newer/older release than the
|
||||
default package set's release
|
||||
- Use your own modified version of some dependency that may
|
||||
include new API, changed API, removed API by
|
||||
using your custom git repo of the library rather than
|
||||
the package set's repo
|
||||
|
||||
Syntax:
|
||||
Replace the overrides' "{=}" (an empty record) with the following idea
|
||||
The "//" or "⫽" means "merge these two records and
|
||||
when they have the same value, use the one on the right:"
|
||||
-------------------------------
|
||||
let override =
|
||||
{ packageName =
|
||||
upstream.packageName // { updateEntity1 = "new value", updateEntity2 = "new value" }
|
||||
, packageName =
|
||||
upstream.packageName // { version = "v4.0.0" }
|
||||
, packageName =
|
||||
upstream.packageName // { repo = "https://www.example.com/path/to/new/repo.git" }
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let overrides =
|
||||
{ halogen =
|
||||
upstream.halogen // { version = "master" }
|
||||
, halogen-vdom =
|
||||
upstream.halogen-vdom // { version = "v4.0.0" }
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
### Additions
|
||||
|
||||
Purpose:
|
||||
- Add packages that aren't already included in the default package set
|
||||
|
||||
Syntax:
|
||||
Replace the additions' "{=}" (an empty record) with the following idea:
|
||||
-------------------------------
|
||||
let additions =
|
||||
{ package-name =
|
||||
{ dependencies =
|
||||
[ "dependency1"
|
||||
, "dependency2"
|
||||
]
|
||||
, repo =
|
||||
"https://example.com/path/to/git/repo.git"
|
||||
, version =
|
||||
"tag ('v4.0.0') or branch ('master')"
|
||||
}
|
||||
, package-name =
|
||||
{ dependencies =
|
||||
[ "dependency1"
|
||||
, "dependency2"
|
||||
]
|
||||
, repo =
|
||||
"https://example.com/path/to/git/repo.git"
|
||||
, version =
|
||||
"tag ('v4.0.0') or branch ('master')"
|
||||
}
|
||||
, etc.
|
||||
}
|
||||
-------------------------------
|
||||
|
||||
Example:
|
||||
-------------------------------
|
||||
let additions =
|
||||
{ benchotron =
|
||||
{ dependencies =
|
||||
[ "arrays"
|
||||
, "exists"
|
||||
, "profunctor"
|
||||
, "strings"
|
||||
, "quickcheck"
|
||||
, "lcg"
|
||||
, "transformers"
|
||||
, "foldable-traversable"
|
||||
, "exceptions"
|
||||
, "node-fs"
|
||||
, "node-buffer"
|
||||
, "node-readline"
|
||||
, "datetime"
|
||||
, "now"
|
||||
]
|
||||
, repo =
|
||||
"https://github.com/hdgarrood/purescript-benchotron.git"
|
||||
, version =
|
||||
"v7.0.0"
|
||||
}
|
||||
}
|
||||
-------------------------------
|
||||
-}
|
||||
|
||||
|
||||
let upstream =
|
||||
https://github.com/purescript/package-sets/releases/download/psc-0.13.8-20200724/packages.dhall sha256:bb941d30820a49345a0e88937094d2b9983d939c9fd3a46969b85ce44953d7d9
|
||||
|
||||
let overrides = {=}
|
||||
|
||||
let additions = {=}
|
||||
|
||||
in upstream // overrides // additions
|
||||
9
02_selection_sort/Purescript/spago.dhall
Normal file
9
02_selection_sort/Purescript/spago.dhall
Normal file
@@ -0,0 +1,9 @@
|
||||
{-
|
||||
Welcome to a Spago project!
|
||||
You can edit this file as you like.
|
||||
-}
|
||||
{ name = "my-project"
|
||||
, dependencies = [ "console", "effect", "psci-support", "arrays", "debug", "lists", "ordered-collections", "strings"]
|
||||
, packages = ./packages.dhall
|
||||
, sources = [ "src/**/*.purs", "test/**/*.purs" ]
|
||||
}
|
||||
Reference in New Issue
Block a user