# ---
# jupyter:
#   jupytext:
#     text_representation:
#       extension: .jl
#       format_name: light
#       format_version: '1.5'
#       jupytext_version: 1.14.4
#   kernelspec:
#     display_name: Julia 1.3.0
#     language: julia
#     name: julia-1.3
# ---

# # Spiral Matrix
#
# Given the size, return a square matrix of numbers in spiral order.
#
# The matrix should be filled with natural numbers, starting from 1
# in the top-left corner, increasing in an inward, clockwise spiral order,
# like these examples:
#
# ###### Spiral matrix of size 3
#
# ```text
# 1 2 3
# 8 9 4
# 7 6 5
# ```
#
# ###### Spiral matrix of size 4
#
# ```text
#  1  2  3 4
# 12 13 14 5
# 11 16 15 6
# 10  9  8 7
# ```
#
# ## Source
#
# Reddit r/dailyprogrammer challenge #320 [Easy] Spiral Ascension. [https://www.reddit.com/r/dailyprogrammer/comments/6i60lr/20170619_challenge_320_easy_spiral_ascension/](https://www.reddit.com/r/dailyprogrammer/comments/6i60lr/20170619_challenge_320_easy_spiral_ascension/)
#
# ## Version compatibility
# This exercise has been tested on Julia versions >=1.0.
#
# ## Submitting Incomplete Solutions
# It's possible to submit an incomplete solution so you can see how others have completed the exercise.

# ## Your solution

# +
# submit
function spiral_matrix(n::Int)

end
# -

# ## Test suite

# +
using Test

# include("spiral-matrix.jl")


@testset "Different valid values" begin
    @testset "Empty spiral" begin
        @test spiral_matrix(0) == Matrix{Int}(undef,0,0)
    end
    @testset "Trivial spiral" begin
        @test spiral_matrix(1) == reshape([1],(1,1))
    end
    @testset "Spiral of size 2" begin
        @test spiral_matrix(2) == [1 2; 4 3]
    end
    @testset "Spiral of size 3" begin
        @test spiral_matrix(3) == [1 2 3; 8 9 4; 7 6 5]
    end
    @testset "Spiral of size 4" begin
        @test spiral_matrix(4) == [1 2 3 4; 12 13 14 5; 11 16 15 6; 10 9 8 7]
    end
    @testset "Spiral of size 5" begin
        @test spiral_matrix(5) == [1 2 3 4 5; 16 17 18 19 6; 15 24 25 20 7; 14 23 22 21 8; 13 12 11 10 9]
    end
end
# -

# ## Prepare submission
# To submit your exercise, you need to save your solution in a file called `spiral-matrix.jl` before using the CLI.
# You can either create it manually or use the following functions, which will automatically write every notebook cell that starts with `# submit` to the file `spiral-matrix.jl`.
#

# +
# using Pkg; Pkg.add("Exercism")
# using Exercism
# Exercism.create_submission("spiral-matrix")

StarcoderdataJupyterScriptsDedupFiltered