movegen

package
v0.0.1 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Feb 4, 2022 License: GPL-3.0 Imports: 5 Imported by: 0

Documentation

Overview

Package movegen contains all the move-generating functions. It makes heavy use of the GADDAG. Implementation notes: - Is the specification in the paper a bit buggy? Basically, if I assume an anchor is the leftmost tile of a word, the way the algorithm works, it will create words blindly. For example, if I have a word FIRE on the board, and I have the letter E on my rack, and I specify F as the anchor, it will create the word EF! (Ignoring the fact that IRE is on the board) You can see this by just stepping through the algorithm. It seems that anchors can only be on the rightmost tile of a word

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type GordonGenerator

type GordonGenerator struct {
	// contains filtered or unexported fields
}

GordonGenerator is the main move generation struct. It implements Steven A. Gordon's algorithm from his paper "A faster Scrabble Move Generation Algorithm"

func NewGordonGenerator

func NewGordonGenerator(gd *gaddag.SimpleGaddag, board *board.GameBoard,
	ld *alphabet.LetterDistribution) *GordonGenerator

NewGordonGenerator returns a Gordon move generator.

func (*GordonGenerator) GenAll

func (gen *GordonGenerator) GenAll(rack *alphabet.Rack, addExchange bool)

GenAll generates all moves on the board. It assumes anchors have already been updated, as well as cross-sets / cross-scores.

func (*GordonGenerator) Plays

func (gen *GordonGenerator) Plays() []*move.Move

Plays returns the generator's generated plays.

func (*GordonGenerator) SetSortingParameter

func (gen *GordonGenerator) SetSortingParameter(s SortBy)

SetSortingParameter tells the play sorter to sort by score, equity, or perhaps other things. This is useful for the endgame solver, which does not care about equity.

type MoveGenerator

type MoveGenerator interface {
	GenAll(rack *alphabet.Rack, addExchange bool)
	SetSortingParameter(s SortBy)
	Plays() []*move.Move
}

MoveGenerator is a generic interface for generating moves.

type SortBy

type SortBy int
const (
	SortByScore SortBy = iota
	SortByNone
)

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL