Bij spoorhekcodering (of zigzagcodering) worden de letters van een gegeven tekst eerst diagonaal naar beneden uitgeschreven op opeenvolgende "sporen" van een denkbeeldig hek. Nadat het onderste spoor bereikt wordt, gaat het uitschrijven van de letters diagonaal naar boven verder. De tekst wordt opnieuw diagonaal naar beneden uitgeschreven van zodra het bovenste spoor bereikt wordt. Deze procedure herhaalt zich totdat alle letters van de tekst uitgeschreven zijn.

Als we bijvoorbeeld op vier sporen de tekst

And now for something completely different.

uitschrijven, dan krijgen we

A#####w#####s#####i#####m#####l#####f#####.
#n###o# ### #o###h#n###o#p###e#y###f#e###t#
##d#n###f#r###m#t###g#c###l#t### #i###r#n##
### #####o#####e##### #####e#####d#####e###

De gecodeerde tekst wordt gevormd door de letters per spoor van links naar rechts achter elkaar te zetten, en dit vanaf het bovenste spoor tot het onderste spoor. De gecodeerde boodschap voor de bovenstaande voorbeeldtekst leest dan als

Awsimlf.no  ohnopeyfetdnfrmtgclt irn oe ede

Opgave

Voorbeeld

>>> codeer('And now for something completely different.', 1)
'And now for something completely different.'
>>> codeer('And now for something completely different.', 2)
'Adnwfrsmtigcmltl ifrn.n o o oehn opeeydfeet'
>>> codeer('And now for something completely different.', 3)
'Anfstgmt fnn o o oehn opeeydfeetdwrmicllir.'
>>> codeer('And now for something completely different.', 4)
'Awsimlf.no  ohnopeyfetdnfrmtgclt irn oe ede'
>>> codeer('And now for something completely different.', 5)
'Aftm nn oehopydetdwrmicllir. o on eefensgtf'

>>> decodeer('And now for something completely different.', 1)
'And now for something completely different.'
>>> decodeer('Adnwfrsmtigcmltl ifrn.n o o oehn opeeydfeet', 2)
'And now for something completely different.'
>>> decodeer('Anfstgmt fnn o o oehn opeeydfeetdwrmicllir.', 3)
'And now for something completely different.'
>>> decodeer('Awsimlf.no  ohnopeyfetdnfrmtgclt irn oe ede', 4)
'And now for something completely different.'
>>> decodeer('Aftm nn oehopydetdwrmicllir. o on eefensgtf', 5)
'And now for something completely different.'