Skip to content

Instantly share code, notes, and snippets.

@leafac
Created December 30, 2020 08:45
Show Gist options
  • Save leafac/5efb7a385cb9ac9f4f0a405a4b4fc7f4 to your computer and use it in GitHub Desktop.
Save leafac/5efb7a385cb9ac9f4f0a405a4b4fc7f4 to your computer and use it in GitHub Desktop.
#lang racket
(require redex)
(define-term initial-board [[· · ◼︎ ◼︎ ◼︎ · ·]
[· · ◼︎ ◼︎ ◼︎ · ·]
[◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎]
[◼︎ ◼︎ ◼︎ ◻︎ ◼︎ ◼︎ ◼︎]
[◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎]
[· · ◼︎ ◼︎ ◼︎ · ·]
[· · ◼︎ ◼︎ ◼︎ · ·]])
(define-language peg-solitaire
[board ::=
[[position position position position position position position]
[position position position position position position position]
[position position position position position position position]
[position position position position position position position]
[position position position position position position position]
[position position position position position position position]
[position position position position position position position]]]
[position ::= ◻︎ ◼︎ ·])
#;(redex-match peg-solitaire board (term initial-board))
(define play (reduction-relation peg-solitaire
#:domain board
#:codomain board
(--> [any_1 ...
[any_3 ... ◼︎ ◼︎ ◻︎ any_4 ...]
any_2 ...]
[any_1 ...
[any_3 ... ◻︎ ◻︎ ◼︎ any_4 ...]
any_2 ...]
→)
(--> [any_1 ...
[any_3 ... ◻︎ ◼︎ ◼︎ any_4 ...]
any_2 ...]
[any_1 ...
[any_3 ... ◼︎ ◻︎ ◻︎ any_4 ...]
any_2 ...]
←)
(--> [any_1 ...
[any_3 ..._9 ◼︎ any_4 ...]
[any_5 ..._9 ◼︎ any_6 ...]
[any_7 ..._9 ◻︎ any_8 ...]
any_2 ...]
[any_1 ...
[any_3 ... ◻︎ any_4 ...]
[any_5 ... ◻︎ any_6 ...]
[any_7 ... ◼︎ any_8 ...]
any_2 ...]
↓)
(--> [any_1 ...
[any_3 ..._9 ◻︎ any_4 ...]
[any_5 ..._9 ◼︎ any_6 ...]
[any_7 ..._9 ◼︎ any_8 ...]
any_2 ...]
[any_1 ...
[any_3 ... ◼︎ any_4 ...]
[any_5 ... ◻︎ any_6 ...]
[any_7 ... ◻︎ any_8 ...]
any_2 ...]
↑)))
#;(apply-reduction-relation play (term initial-board))
#;(apply-reduction-relation play (term ((· · ◼︎ ◼︎ ◼︎ · ·)
(· · ◼︎ ◼︎ ◼︎ · ·)
(◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎)
(◼︎ ◼︎ ◼︎ ◻︎ ◻︎ ◻︎ ◼︎)
(◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎ ◼︎)
(· · ◼︎ ◼︎ ◼︎ · ·)
(· · ◼︎ ◼︎ ◼︎ · ·))))
#;(traces play (term initial-board))
(stepper play (term initial-board))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment