# File scrabble.rb, line 290
  def try_letters_in_range rack, range, letter_word, letter_board, letter_neighbours
    return false if (range.last > SIZE) ||
      (range.first > 0 && letter_board.call(range.first - 1) != @empty_field) ||
      (range.last  < SIZE && letter_board.call(range.last) != @empty_field)

    rack = rack.clone
    uses_empty_field = overlaps = false

    for i in range
      letter_in_word = letter_word.call(i)
      letter_in_board = letter_board.call(i)

      if letter_in_board == @empty_field && rack.include?(letter_in_word)
        return false if letter_neighbours.call(i) != [@empty_field, @empty_field]
        uses_empty_field = true
        rack.delete_first letter_in_word
      elsif letter_in_board == letter_in_word
        overlaps = true
      else
        return false
      end
    end
    overlaps and uses_empty_field
  end