aoc2015

Advent of Code 2015 solutions in Perl.
git clone git://git.samirparikh.com/aoc2015
Log | Files | Refs | README

day02.pl (966B) - raw


      1 #!/usr/local/bin/perl
      2 # day 2015-02
      3 
      4 use strict;
      5 use warnings;
      6 use v5.32;
      7 
      8 @ARGV = "input" unless @ARGV;
      9 
     10 chomp( my $input = do { local $/; <> } );
     11 
     12 use List::Util qw( min sum product );
     13 
     14 my @presents = split /\n/, $input;
     15 my ($total_wrapping_paper, $total_ribbon_length);
     16 
     17 foreach (@presents) {
     18     my @dimensions = split /x/, $_;
     19     my (@faces, @perimeters);
     20     $faces[0]              = $dimensions[0] * $dimensions[1];
     21     $faces[1]              = $dimensions[1] * $dimensions[2];
     22     $faces[2]              = $dimensions[0] * $dimensions[2];
     23     $perimeters[0]         = 2 * ($dimensions[0] + $dimensions[1]);
     24     $perimeters[1]         = 2 * ($dimensions[1] + $dimensions[2]);
     25     $perimeters[2]         = 2 * ($dimensions[0] + $dimensions[2]);
     26     $total_wrapping_paper += 2 * (sum @faces) + (min @faces);
     27     $total_ribbon_length  += (min @perimeters) + (product @dimensions);
     28 }
     29 
     30 say "part 1: ", $total_wrapping_paper;
     31 say "part 2: ", $total_ribbon_length;