Skip to content

Latest commit

 

History

57 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

* Boggle Solver in J

See the [[./etude.org][Jtude]] file for some simple boggle-related calculations.

** reading and querying word lists

#+begin_src J :session :exports both
WL =: ' ' ,.~^:2 (_1{.a.),~];._2@(1!:1)@<
NL =: ''$~0,{: $ PF=: WL'collins-prefixes.txt'[EX=: WL'collins-words.txt'
L =: {:@$ - +/"1@(' '&=)
W =: (-:"1 EX {~ EX&I.) @: (NL&,)
P =: (-:"1 PF {~ PF&I.) @: (NL&,)
#+end_src

** graphs for boards & expansions for paths

#+begin_src J :session :exports both
G =: [: <@-.&_1"1 @ |: [: ;"_1 (<:3 3#:4-.~i.9) |.!._1 i.
A =: [ ,"_ 0/ [ -.~ ] {::~ {:@:[
#+end_src

** handling Qs

#+begin_src J :session :exports both
QU =: ('U'(1+[:I.'QQ'E.])}(#~1+'Q'&=)) ^: ('Q'&e.)
Q =: (QU :. (#~ [: -. _1 |. 'QU'&E.))"1
#+end_src

** the search

#+begin_src J :session :exports both
E =: {{ ([: (#~ P @: Q @ ({&u)) [: ; <@(A&v)"1) ^: (0<#) &. > }}
S =: {{ (,y) E (G$y) ^: a: <,.i.#,y }}
B =: {{ (\: L) /:~ (#~ W) ~. Q ; ({&(,y)) &.> S y }}
#+end_src

** generating boards

#+begin_src J :session :exports both
BW =: Q (#~ 10 < L) EX
SC =: 0 0 0 1 1 2 3 5 8 13 {~ 8 <. #
RW =: {{try. (({~ ?@#) @ A&(G x)) ^: (<:y) ? */ x catch. x RW y end.}}
RB =: 4 : 0
  assert. (#y=.Q^:_1 y) <: n=.*/x
  x $ toupper (y,a.{~65+?(n-#y)$26) ((p-.~i.n),~p=.x RW #y)} n $ y
)
RL =: {{ y RB > ({~ ?@#) BW }}
#+end_src

** z defs

#+begin_src J :session :exports both
shake_z_ =: RL_joggle_
board_z_ =: RB_joggle_
boggle_z_ =: B_joggle_
score_z_ =: SC_joggle_
#+end_src

About

Boggle solver in J

Topics

Resources

Stars

4 stars

Watchers

2 watching

Forks

Releases

Packages

Contributors

Languages