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

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

Към профила на Мария Османлиева

Резултати

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

Код

def move(snake, direction)
new_snake = snake.clone
new_snake.shift
new_snake << [new_snake.last,direction].transpose.map {|a| a.inject(:+)}
new_snake
end
def grow(snake, direction)
new_snake = snake.clone
new_snake <<[new_snake.last,direction].transpose.map {|a| a.inject(:+)}
new_snake
end
def new_food(food, snake, dimensions)
new_width = [*0 .. (dimensions[:width] - 1)]
new_height = [*0 .. (dimensions[:height] - 1)]
space = new_width.product(new_height).collect { |x, y| [x, y] }
full = food | snake
blank_space = space - full
blank_space.shift
end
def obstacle_ahead?(snake, direction, dimensions)
next_step = [snake.last, direction].transpose.map { |a| a.inject(:+) }
(snake.include? next_step) or (next_step[0] ==
dimensions[:width]) or (next_step[1] == dimensions[:height])
end
def danger?(snake, direction, dimensions)
obstacle_ahead?(snake, direction, dimensions) or obstacle_ahead?(snake,
([direction, direction].transpose.map { |a| a.inject(:+)} ), dimensions)
end

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

.F..................

Failures:

  1) #move moves one-position-sized snake
     Failure/Error: expect(move([[2, 2]], [-1, 0])).to eq([[1, 2]])
     TypeError:
       no implicit conversion of nil into Array
     # /tmp/d20151026-15631-vf7grz/solution.rb:4:in `transpose'
     # /tmp/d20151026-15631-vf7grz/solution.rb:4:in `move'
     # /tmp/d20151026-15631-vf7grz/spec.rb:12:in `block (2 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (3 levels) in <top (required)>'
     # ./lib/language/ruby/run_with_timeout.rb:5:in `block (2 levels) in <top (required)>'

Finished in 0.01796 seconds
20 examples, 1 failure

Failed examples:

rspec /tmp/d20151026-15631-vf7grz/spec.rb:11 # #move moves one-position-sized snake

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

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

+def move(snake, direction)
+ new_snake = snake.clone
+ new_snake.shift
+ new_snake << [new_snake.last,direction].transpose.map {|a| a.inject(:+)}
+ new_snake
+end
+
+def grow(snake, direction)
+ new_snake = snake.clone
+ new_snake <<[new_snake.last,direction].transpose.map {|a| a.inject(:+)}
+ new_snake
+end
+
+def new_food(food, snake, dimensions)
+ new_width = [*0 .. (dimensions[:width] - 1)]
+ new_height = [*0 .. (dimensions[:height] - 1)]
+ space = new_width.product(new_height).collect { |x, y| [x, y] }
+ full = food | snake
+ blank_space = space - full
+ blank_space.shift
+end
+
+def obstacle_ahead?(snake, direction, dimensions)
+ next_step = [snake.last, direction].transpose.map { |a| a.inject(:+) }
+ (snake.include? next_step) or (next_step[0] ==
+ dimensions[:width]) or (next_step[1] == dimensions[:height])
+end
+
+def danger?(snake, direction, dimensions)
+ obstacle_ahead?(snake, direction, dimensions) or obstacle_ahead?(snake,
+ ([direction, direction].transpose.map { |a| a.inject(:+)} ), dimensions)
+end