Решение на Втора задача от Мария Рангелова

Обратно към всички решения

Към профила на Мария Рангелова

Резултати

  • 6 точки от тестове
  • 0 бонус точки
  • 6 точки общо
  • 20 успешни тест(а)
  • 0 неуспешни тест(а)

Код

def create_board(dimensions)
xs = (0...dimensions[:width]).to_a
ys = (0...dimensions[:height]).to_a
xs.product(ys)
end
def move_head(snake, direction)
head = snake.last
head.zip(direction).map { |x, y| x + y }
end
def new_food(food, snake, dimensions)
board = create_board(dimensions)
free_positions = board - food - snake
free_positions.sample
end
def move(snake, direction)
grow(snake, direction).drop(1)
end
def grow(snake, direction)
snake + [move_head(snake, direction)]
end
def obstacle_ahead?(snake, direction, dimensions)
board = create_board(dimensions)
next_head_position = move_head(snake, direction)
snake.include? next_head_position or !board.include? next_head_position
end
def danger?(snake, direction, dimensions)
obstacle_ahead?(snake, direction, dimensions) or
obstacle_ahead?(move(snake, direction), direction, dimensions)
end

Лог от изпълнението

....................

Finished in 0.01569 seconds
20 examples, 0 failures

История (1 версия и 2 коментара)

Мария обнови решението на 15.10.2015 22:23 (преди над 9 години)

+def create_board(dimensions)
+ xs = (0...dimensions[:width]).to_a
+ ys = (0...dimensions[:height]).to_a
+ xs.product(ys)
+end
+
+def move_head(snake, direction)
+ head = snake.last
+ head.zip(direction).map { |x, y| x + y }
+end
+
+def new_food(food, snake, dimensions)
+ board = create_board(dimensions)
+ free_positions = board - food - snake
+ free_positions.sample
+end
+
+def move(snake, direction)
+ grow(snake, direction).drop(1)
+end
+
+def grow(snake, direction)
+ snake + [move_head(snake, direction)]
+end
+
+def obstacle_ahead?(snake, direction, dimensions)
+ board = create_board(dimensions)
+ next_head_position = move_head(snake, direction)
+ snake.include? next_head_position or !board.include? next_head_position
+end
+
+def danger?(snake, direction, dimensions)
+ obstacle_ahead?(snake, direction, dimensions) or
+ obstacle_ahead?(move(snake, direction), direction, dimensions)
+end