Решение на Втора задача от Божидар Горов

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

Към профила на Божидар Горов

Резултати

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

Код

def generate_board(dimensions)
(0..dimensions[:width] - 1).to_a.product((0..dimensions[:height] - 1).to_a)
end
def generate_next_step(snake, direction)
[snake[-1][0] + direction[0], snake[-1][1] + direction[1]]
end
def grow(snake, direction)
snake + [generate_next_step(snake, direction)]
end
def move(snake, direction)
grow(snake, direction)[1..-1]
end
def new_food(food, snake, dimensions)
available = generate_board(dimensions) - food - snake
available[rand(0..available.count - 1)]
end
def obstacle_ahead?(snake, direction, dimensions)
next_step = generate_next_step(snake, direction)
board = generate_board(dimensions)
not (board.include?(next_step) and !snake.include?(next_step))
end
def danger?(snake, direction, dimensions)
one_step = obstacle_ahead?(snake, direction, dimensions)
two_steps = obstacle_ahead?(move(snake, direction), direction, dimensions)
one_step or two_steps
end

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

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

Finished in 0.01579 seconds
20 examples, 0 failures

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

Божидар обнови решението на 17.10.2015 22:40 (преди над 9 години)

+def generate_board(dimensions)
+ (0..dimensions[:width] - 1).to_a.product((0..dimensions[:height] - 1).to_a)
+end
+
+def generate_next_step(snake, direction)
+ [snake[-1][0] + direction[0], snake[-1][1] + direction[1]]
+end
+
+def grow(snake, direction)
+ snake + [generate_next_step(snake, direction)]
+end
+
+def move(snake, direction)
+ grow(snake, direction)[1..-1]
+end
+
+def new_food(food, snake, dimensions)
+ available = generate_board(dimensions) - food - snake
+
+ available[rand(0..available.count - 1)]
+end
+
+def obstacle_ahead?(snake, direction, dimensions)
+ next_step = generate_next_step(snake, direction)
+ board = generate_board(dimensions)
+
+ not (board.include?(next_step) and !snake.include?(next_step))
+end
+
+def danger?(snake, direction, dimensions)
+ one_step = obstacle_ahead?(snake, direction, dimensions)
+ two_steps = obstacle_ahead?(move(snake, direction), direction, dimensions)
+
+ one_step or two_steps
+end

Божидар обнови решението на 18.10.2015 11:51 (преди над 9 години)

def generate_board(dimensions)
- (0..dimensions[:width] - 1).to_a.product((0..dimensions[:height] - 1).to_a)
+ (0..dimensions[:width] - 1).to_a.product((0..dimensions[:height] - 1).to_a)
end
def generate_next_step(snake, direction)
- [snake[-1][0] + direction[0], snake[-1][1] + direction[1]]
+ [snake[-1][0] + direction[0], snake[-1][1] + direction[1]]
end
def grow(snake, direction)
- snake + [generate_next_step(snake, direction)]
+ snake + [generate_next_step(snake, direction)]
end
def move(snake, direction)
- grow(snake, direction)[1..-1]
+ grow(snake, direction)[1..-1]
end
def new_food(food, snake, dimensions)
available = generate_board(dimensions) - food - snake
available[rand(0..available.count - 1)]
end
def obstacle_ahead?(snake, direction, dimensions)
- next_step = generate_next_step(snake, direction)
- board = generate_board(dimensions)
+ next_step = generate_next_step(snake, direction)
+ board = generate_board(dimensions)
- not (board.include?(next_step) and !snake.include?(next_step))
+ not (board.include?(next_step) and !snake.include?(next_step))
end
def danger?(snake, direction, dimensions)
- one_step = obstacle_ahead?(snake, direction, dimensions)
- two_steps = obstacle_ahead?(move(snake, direction), direction, dimensions)
+ one_step = obstacle_ahead?(snake, direction, dimensions)
+ two_steps = obstacle_ahead?(move(snake, direction), direction, dimensions)
- one_step or two_steps
+ one_step or two_steps
end