Skip to content

Instantly share code, notes, and snippets.

@barelyknown
Created November 4, 2012 13:40
Show Gist options
  • Save barelyknown/4011968 to your computer and use it in GitHub Desktop.
Save barelyknown/4011968 to your computer and use it in GitHub Desktop.
Calculate All Moves For A Word in Letterpress Board
# requires a board_tiles method that returns an array of objects that respond to the letter method
def board_tiles_by_letter
by_letter = {}
('A'..'Z').each { |letter| by_letter[letter] = [] }
board_tiles.each { |board_tile| by_letter[board_tile.letter] << board_tile }
by_letter
end
def every_play(word)
word_letters = word.chars.to_a
with_duplicates = board_tiles_by_letter[word_letters.shift].product(*word_letters.map { |letter| board_tiles_by_letter[letter] })
with_duplicates.select { |play| play.uniq.count == play.count }
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment