# Python 3, 55 bytes [(Cracked)](http://codegolf.stackexchange.com/a/112677/32353)

PCRE / Python / Golang flavor.

 def [triangles=(1,SNAKE)]{27}:print[]SNAKE(--:>or[]{48}

*(Be reminded that [Full match is required](http://codegolf.stackexchange.com/a/112472/32353). Assume `^` and `$` when testing.)*

Sample output:

 [1, 2, 3, 4]
 [8, 7, 6, 5]
 [9, 10, 11, 12]
 [16, 15, 14, 13]

----

Original solution:

 def r(N,S=1,A=1,K=range,E=list):print(E(K(S,S+N))[::A])or(S+N>N*N)or(r(N,S+N,-A,K,E))

Should have trimmed 4 bytes :p