Skip to content

Instantly share code, notes, and snippets.

@sjdonado
Created December 14, 2019 22:10
Show Gist options
  • Save sjdonado/e9f8fd205f899558956550ee15380c72 to your computer and use it in GitHub Desktop.
Save sjdonado/e9f8fd205f899558956550ee15380c72 to your computer and use it in GitHub Desktop.
Print a square matrix in snake pattern
puts "n:"
n = gets.to_i
matrix = Array.new(n){Array.new(n, 0)}
def snake(n, matrix, i, j, num)
if num == n * n
matrix[i][j] = num
return num
end
matrix[i][j] = num
if (i == 0 || i == n - 1) && j % 2 != 0
if j < n - 1
return snake(n, matrix, i, j + 1, num + 1)
else
return snake(n, matrix, i + 1, j, num + 1)
end
end
if (j == 0 || j == n - 1) && i % 2 == 0
return snake(n, matrix, i + 1, j, num + 1)
end
if (i + j) % 2 == 0
return snake(n, matrix, i + 1, j - 1, num + 1)
else
return snake(n, matrix, i - 1, j + 1, num + 1)
end
end
snake(n, matrix, 0, 0, 1)
for i in 0...n
for j in 0...n
print "#{ matrix[i][j]} #{matrix[i][j].to_s.split('').length > 1 ? " ": " "}"
end
print "\n"
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment