Христина обнови решението на 16.10.2015 00:19 (преди над 9 години)
+def make_a_move(snake, direction)
+ [snake[-1], direction].transpose.map {|a| a.inject(:+)}
+end
+
+def move(snake, direction)
+ snake.drop(1) | [make_a_move(snake, direction)]
+end
+
+def grow(snake, direction)
+ snake | [make_a_move(snake, direction)]
+end
+
+def make_food(dimensions)
+ array = Array.new
+ array << rand(0...dimensions[:width]) << rand(0...dimensions[:height])
+end
+
+def new_food(food, snake, dimensions)
+ create_food = make_food(dimensions)
+ if food.include?(create_food) || snake.include?(create_food)
+ new_food(food, snake, dimensions)
+ else
+ create_food
+ end
+end
+
+def obstacle_ahead?(snake, direction, dimensions)
+ move = make_a_move(snake, direction)
+ if move[0] < 0 || move[0]>=10 || move[1] < 0 ||
+ move[1]>=10 || snake.include?(move)
+ true
+ else
+ false
+ end
+end
+
+def try_again
+ obstacle_ahead?(snake, direction.collect { |n| n*2 }, dimensions)
+end
+
+def danger?(snake, direction, dimensions)
+ if obstacle_ahead?(snake, direction, dimensions)
+ true
+ else
+ try_again
+ end
+end