2016-12
This commit is contained in:
parent
4bbacd7687
commit
d2312baf5b
59
2016/12/1.pl
Normal file
59
2016/12/1.pl
Normal file
@ -0,0 +1,59 @@
|
|||||||
|
use 5.20.0;
|
||||||
|
|
||||||
|
undef $/;
|
||||||
|
my $code = <>;
|
||||||
|
|
||||||
|
$code =~ s/\b([a-d])\b/\$$1/g;
|
||||||
|
|
||||||
|
$code =~ s/cpy (\S+) (\S+)/$2 = $1/g;
|
||||||
|
|
||||||
|
$code =~ s/inc (\S+)/$1++/g;
|
||||||
|
$code =~ s/dec (\S+)/$1--/g;
|
||||||
|
|
||||||
|
|
||||||
|
my $i = 1;
|
||||||
|
$code =
|
||||||
|
join "\n",
|
||||||
|
map { $_->[1] }
|
||||||
|
map {
|
||||||
|
$_->[1] =~ s/jnz (\S+) (\S+)/"if($1){ goto LINE_" . ( $_->[0] + $2 ) . "}"/e;
|
||||||
|
$_ }
|
||||||
|
map { $_->[1] = "LINE_" . $_->[0] . ': ' . $_->[1]; $_ }
|
||||||
|
map { [ $i++, $_ ] } grep { length } split /\n/, $code;
|
||||||
|
|
||||||
|
$code =~ s/$/;/mg;
|
||||||
|
|
||||||
|
my( $c, $d) = ( 1,0);
|
||||||
|
eval $code;
|
||||||
|
|
||||||
|
die $@ if $@;
|
||||||
|
|
||||||
|
say $a;
|
||||||
|
|
||||||
|
__END__
|
||||||
|
use Scalar::Util qw/ looks_like_number /;
|
||||||
|
|
||||||
|
my $i = 0;
|
||||||
|
my @instructions = map { "LINE_" . $i++ . ': ' . $_ } <>;
|
||||||
|
|
||||||
|
|
||||||
|
my %reg;
|
||||||
|
|
||||||
|
while ( my $c = $instructions[$i++] ) {
|
||||||
|
say $i;
|
||||||
|
use DDP;
|
||||||
|
p %reg;
|
||||||
|
if( $c =~ /cpy (\S+) (.)/ ) {
|
||||||
|
$reg{$2} = looks_like_number($1) ? $1 : $reg{$1};
|
||||||
|
}
|
||||||
|
elsif ( $c =~ /(inc|dec) (.)/ ) {
|
||||||
|
$reg{$2} += ($1 eq 'inc') ? 1 : -1;
|
||||||
|
}
|
||||||
|
elsif( $c =~ /jnz (.) (.*)/ ) {
|
||||||
|
$i += -1 + $2 if $reg{$1};
|
||||||
|
}
|
||||||
|
else { die }
|
||||||
|
my $x = <STDIN>;
|
||||||
|
}
|
||||||
|
|
||||||
|
say $reg{a};
|
23
2016/12/input.txt
Normal file
23
2016/12/input.txt
Normal file
@ -0,0 +1,23 @@
|
|||||||
|
cpy 1 a
|
||||||
|
cpy 1 b
|
||||||
|
cpy 26 d
|
||||||
|
jnz c 2
|
||||||
|
jnz 1 5
|
||||||
|
cpy 7 c
|
||||||
|
inc d
|
||||||
|
dec c
|
||||||
|
jnz c -2
|
||||||
|
cpy a c
|
||||||
|
inc a
|
||||||
|
dec b
|
||||||
|
jnz b -2
|
||||||
|
cpy c b
|
||||||
|
dec d
|
||||||
|
jnz d -6
|
||||||
|
cpy 19 c
|
||||||
|
cpy 11 d
|
||||||
|
inc a
|
||||||
|
dec d
|
||||||
|
jnz d -2
|
||||||
|
dec c
|
||||||
|
jnz c -5
|
Loading…
Reference in New Issue
Block a user