#Powershell, 23 Bytes#
Powershell, 23 Bytes
^.+?%.{42}%.{11}:.{35}$ Original Solution:
$n="$args";$script:r=0;$a=1..$n|%{$t=++$script:r..($script:r+=$n-1);if(!($_%2)){[Array]::Reverse($t)};,$t};$a|%{$_-join" "} Takes input as argument and outputs to stdout
Hopefully this regex is OK, I don't expect this being too difficult to crack, as I haven't obfuscated much of it, and the regex gives a good few starting points to fill in the gaps, there's one thing in the first segment which is very uncommon in code golf though, which may catch someone out, I think a non-greedy match is required there to make this a bit tougher.
First cops challenge anyway.
1..4 | % { "----$_----" ; .\snake-cops.ps1 $_ } ----1---- 1 ----2---- 1 2 4 3 ----3---- 1 2 3 6 5 4 7 8 9 ----4---- 1 2 3 4 8 7 6 5 9 10 11 12 16 15 14 13