Naturally, this is not a knitting puzzle at all, but a purl--excuse me, perl puzzle. The directions, expanded and broken into chunks for clarity, are in knitting.txt. The key :
<tab> : kkpkpk
<newline> : kppkkk
<space> : ppkkkk
! : ppkkpk
" : kkkkkk
# : pkpkkp
$ : kpkkkk
% : kkpkpp
' : ppkpkk
( : kkpppp
) : pkpppk
+ : pkpkkk
, : kkkkpp
- : pkkkpp
/ : kpppkp
0 : pkkppk
1 : kkpkkk
2 : kpkpkk
3 : kppkpp
4 : kppppk
5 : kkpppk
6 : pkppkk
7 : pkkkpk
8 : ppkkpp
9 : kkkpkk
; : kpkkpk
< : kkppkk
= : pkpkpp
> : kppppp
@ : kppkpk
[ : ppkppp
\ : pkkpkp
] : kkkppp
a : pkpkpk
b : pkppkp
c : pkpppp
d : pkkkkk
e : pppkpk
f : pppkpp
g : kpkppk
h : pkkpkk
i : kkkpkp
j : kkpkkp
k : ppkkkp
l : pppppp
m : kkppkp
n : kkkppk
o : pppkkp
p : pkkkkp
q : ppppkp
r : kkkkkp
s : pppppk
t : kpppkk
u : ppkpkp
v : pkkppp
w : kkkkpk
x : kppkkp
y : pppkkk
z : kpkkkp
{ : kpkppp
} : kpkkpp
~ : kpkpkp
Decrypted, the script reads:
#!/usr/bin/perl
my $input = shift;
my %combin = (0 => [21,19,5,29,20,8,9,19,29,19,3,18,9,16,20],
1 => [18],
2 => [17,4],
3 => [14,17,4],
4 => [3,20,28,0],
5 => [1,0,4,16,1],
6 => [14,22,9,1,7,16],
7 => [12,26,14,0,1,13,16],
8 => [2,10,25,24,20,19,4,25],
9 => [8,9,28,4,4,23,25,17,5],
10 => [5,4,5,14,23,5,27,0,7,27],
11 => [20,20,11,16,16,25,4,16,15,2,19],
12 => [22,6,9,1,0,17,0,15,26,0,9,9],
13 => [25,0,26,27,25,4,0,20,28,13,8,19,1],
14 => [1,7,23,7,22,6,28,28,20,16,7,16,15,6],
15 => [1,14,1,14,20,26,7,28,23,16,20,9,7,26,15],
16 => [5,13,10,10,20,3,3,9,18,7,4,12,20,11,28,12],
17 => [9,0,26,19,9,10,17,13,2,22,1,8,3,21,0,12,14],
18 => [7,1,12,1,23,4,1,22,14,9,17,28,25,7,27,23,10,11],
19 => [2,0,5,8,6,27,10,17,0,18,13,8,5,10,17,24,25,8,14],
20 => [1,8,27,19,17,21,7,18,28,19,21,5,9,11,8,25,14,8,15,17],
21 => [16,16,6,8,2,11,15,8,11,4,22,2,10,23,27,15,9,10,17,11,
25],
22 => [22,10,19,8,12,20,10,4,14,10,9,0,2,9,8,5,14,20,25,25,15,
14],
23 => [8,9,15,13,18,1,23,13,16,25,13,28,0,8,20,28,9,14,4,17,19,
21,16],
24 => [12,18,26,16,12,1,14,8,9,18,22,15,16,0,15,5,11,8,26,9,6,
14,26,18],
25 => [26,27,26,21,28,19,15,20,17,5,22,17,8,13,25,18,13,9,0,2,
27,20,9,19,4],
26 => [15,15,8,1,2,28,0,19,19,2,23,26,12,5,26,7,2,22,19,9,23,6,
26,0,13,2],
27 => [12,10,1,15,26,0,2,11,16,28,3,9,3,26,18,28,23,19,28,13,25,
0,2,10,23,0,12],
28 => [5,11,15,27,0,7,16,15,7,17,16,23,0,28,3,21,27,10,28,20,0,
15,23,0,19,0,7,2],
29 => [27,28,27,1,0,24,2,28,1,27,24,26,21,0,0,19,8,19,9,23,15,
12,9,10,0,16,2,10,2],
30 => [15,6,4,20,13,22,14,21,27,5,15,11,28,5,0,13,2,14,27,23,
20,13,0,18,16,18,6,9,0,7],
31 => [2,10,7,22,14,3,24,12,24,16,23,1,0,5,26,6,25,27,15,15,13,
5,11,18,28,1,11,1,7,19,7],
32 => [5,15,26,28,26,2,7,27,9,19,15,6,27,11,16,7,20,9,28,17,11,
16,4,8,14,28,11,20,24,24,17,20],
33 => [19,1,17,16,13,11,7,23,0,26,3,17,14,13,3,16,19,9,4,24,27,
3,25,14,1,22,26,22,13,16,14,0,13],
34 => [9,6,5,10,23,7,16,28,3,23,0,21,15,3,15,18,15,4,27,20,15,
18,20,0,27,11,6,9,23,27,9,1,25,24],
35 => [28,26,20,14,4,15,24,17,9,23,11,1,14,20,5,28,28,0,18,15,3,
11,5,13,20,26,11,24,15,3,23,20,15,18,19]);
$input = lc $input;
my @letters = split //, $input;
my $length = scalar @letters;
my @combin = @{$combin{$length}};
for (my $i = 0; $i < scalar @combin; $i++) {
for (my $j = 0; $combin[$i] - $j > 0; $j++) {
$letters[$i] = ' ' unless ($letters[$i]);
$letters[$i] =~ tr/abcdefghijklmnopqrstuvwxyz\-\'\ /bcdefghijklmnopqrstuvwxyz\-\'\ a/;
}
}
print uc join "", @letters;
print '
';
which, when run, gives the output USE THIS SCRIPT.
Backsolving note: if you reverse the script (i.e. replace each number in the "my $combin" structure with 29 - the number), you can run it on a list of X-Files episode titles. Doing so gets the following translations:
Eve = TEA Rush = OATH Theef = SHARE Unruhe = GUITAR Closure = TOASTER John Doe = HELSINKI Travelers = LIBRARIAN Mind's Eye = HEISENBERG Kitsunegari = TRICERATOPS Folie A Deux = MICHELANGELO Leonard Betts = PERPENDICULAR Jump The Shark = INSIGNIFICANCE Teso Dos Bichos = STRAIGHTFORWARD Fearful Symmetry = AUTHORITARIANISM Lord of the Flies = COUNTERPRODUCTIVE
Three of these episodes are from the same season as "Mind's Eye" (not counting "Mind's Eye" itself), so even knowing the season won't give teams a guarantee on backsolving.
Certain other episode titles translate as well:
Terms Of Endearment = REMEMBER PAY TARIFF First Person Shooter = EAT CHIPS WITH SALSA This is Not Happening = DUCK--DUCK---GRAYDUCK Post-Modern Prometheus = WE LOVE THE NIGHT LIFE Clyde Bruckman's Final Repose = EM-CEE STEPPIN' UP TO THE MIC How the Ghosts Stole Christmas = VISIGOTHIC HUN FRANKISH VANDAL Jose Chung's 'From Outer Space' = HELLO MISTER WILSON HOW ARE YOU Nothing Important Happened Today = I WILL B WAITING TIME AFTER TIME Musings of a Cigarette Smoking Man = DON'T CALL IN WRONG EPISODE TITLES Nothing Important Happened Today II = OR WE'LL SEND YOU SOME ANGRY AGENTS
Interested people can also read the last letters of these "answers."
[This is why we love Marc. --ed]