Skip to content

Instantly share code, notes, and snippets.

@sohamb1390
Created April 9, 2019 03:12
Show Gist options
  • Save sohamb1390/60f8c9dfb9fa21a1d312124551eb5692 to your computer and use it in GitHub Desktop.
Save sohamb1390/60f8c9dfb9fa21a1d312124551eb5692 to your computer and use it in GitHub Desktop.
Given a 4*4 matrix. Print the Matrix in Spiral Order
func sprialForm(of matrix: inout [[Int]]) -> [Int] {
let currentIndex = 0
var pritableArray: [Int] = []
while currentIndex < matrix.count - 1 {
// ---------> Right elements
for item in matrix[currentIndex] {
pritableArray.append(item)
}
print("reduced matrix: \(matrix)")
// Remove first row elements
matrix.remove(at: currentIndex)
// ----------> Down Elements
for (topIndex, element) in matrix.enumerated() {
var internalElement = element
for (index, item) in internalElement.enumerated() {
if index == internalElement.endIndex - 1 {
pritableArray.append(item)
// Remove last element one by one
internalElement.remove(at: index)
matrix[topIndex] = internalElement
}
}
}
print("reduced matrix: \(matrix)")
// ---------> left Elements
if let lastElement = matrix.last {
for item in lastElement.reversed() {
pritableArray.append(item)
}
matrix.remove(at: matrix.endIndex - 1)
}
// print(pritableArray)
// ---------> Top Elements
for (index, item) in matrix.enumerated().reversed() {
var subItem = item
for (subIndex, element) in subItem.enumerated() {
if subIndex == subItem.startIndex {
pritableArray.append(element)
// Remove Elements
subItem.remove(at: subIndex)
matrix[index] = subItem
break
}
}
}
print("reduced matrix: \(matrix)")
}
return pritableArray
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment