+my $want = shift @ARGV;
+my ($wknife,$wparts) = $want =~ m/^(\d)([a-z]+)$/ or die;
+
+sub want ($) {
+ my ($colournum) = @_;
+ my $knife = ($colournum-1) % 3;
+ return 0 unless $knife == $wknife;
+ my $part = $part_order[ floor(($colournum-1) / 3) ];
+ die "huh colour $colournum?" unless defined $part;
+ return 0 unless $part =~ m/[$wparts]/o;
+ return 1;