]> www.fi.muni.cz Git - aoc.git/blobdiff - 2015/33.pl
Year 2015
[aoc.git] / 2015 / 33.pl
diff --git a/2015/33.pl b/2015/33.pl
new file mode 100755 (executable)
index 0000000..dbd504c
--- /dev/null
@@ -0,0 +1,29 @@
+#!/usr/bin/perl -w
+
+use v5.16;
+use strict;
+
+chomp (my @cont = sort { $a <=> $b } <>);
+
+my $count;
+sub walk {
+       my ($rem, $rest, $used) = @_;
+       if (!$rem) {
+               $count++;
+               say join(',', @$used);
+               return;
+       }
+       return if !@$rest || $rem < $rest->[0];
+       for my $i (0 .. $#$rest) {
+               my @nr = @$rest;
+               my @nu = @$used;
+               my (@a) = splice @nr, 0, $i+1;
+               my $n = $a[-1];
+               push @nu, $n;
+               walk($rem - $n, \@nr, \@nu) if $rem >= $n;
+       }
+}
+
+walk(150, \@cont, []);
+say $count;
+