aoc2015

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

Day08.pm (1031B) - raw


      1 package Day08;
      2 
      3 use strict;
      4 use warnings;
      5 use v5.32;
      6 
      7 use Exporter qw( import );
      8 our @EXPORT = qw( part1 part2 );
      9 
     10 sub part1 {
     11     my $string             = shift;
     12     $string                =~ s/^"//; # remove beginning quote
     13     $string                =~ s/"$//; # remove trailing quote
     14     my $backslash          = qr/\\\\/;
     15     my $double_quote       = qr/\\\"/;
     16     my $ascii              = qr/\\x[0-9a-f]{2}/;
     17     my $backslash_count    = () = $string =~ m/$backslash/g;
     18     my $double_quote_count = () = $string =~ m/$double_quote/g;
     19     my $ascii_count        = () = $string =~ m/$ascii/gi;
     20     my $string_characters  = 2 + length $string;
     21     my $memory_characters  = $string_characters - 2 - $backslash_count
     22                             - $double_quote_count - (3 * $ascii_count);
     23     
     24     return $string_characters - $memory_characters;
     25 }
     26 
     27 sub part2 {
     28     my $string = shift;
     29     my $length = length $string;
     30     $string    =~ s|\\|\\\\|g;
     31     $string    =~ s|"|\\"|g;
     32     return ( length $string ) + 2 - $length; 
     33 }
     34 
     35 1;