part1
This commit is contained in:
parent
df6a180b91
commit
72b8a71cae
51
18/1.pl
Normal file
51
18/1.pl
Normal file
@ -0,0 +1,51 @@
|
||||
use 5.20.0;
|
||||
|
||||
my @commands = <>;
|
||||
|
||||
my $i = 0;
|
||||
|
||||
my %reg;
|
||||
my $last_played;
|
||||
|
||||
use experimental qw/ signatures /;
|
||||
|
||||
sub valof($x) {
|
||||
my $y = $x =~ /\d/ ? $x : $reg{$x};
|
||||
die $_ if $y eq 'Inf';
|
||||
return $y;
|
||||
}
|
||||
|
||||
my $vr = qr/(-?\d+|.)/;
|
||||
|
||||
while() {
|
||||
$_ = $commands[$i++];
|
||||
warn $_ if /\bb\b/;
|
||||
if( /snd (.)/ ) {
|
||||
$last_played = valof($1);
|
||||
}
|
||||
elsif( /set (.) $vr/ ) {
|
||||
$reg{$1} = valof($2);
|
||||
}
|
||||
elsif( /add (.) $vr/ ) {
|
||||
$reg{$1} += valof($2);
|
||||
}
|
||||
elsif( /mul (.) $vr/ ) {
|
||||
$reg{$1} *= valof($2);
|
||||
}
|
||||
elsif( /mul (.) $vr/ ) {
|
||||
$reg{$1} *= valof($2);
|
||||
}
|
||||
elsif( /mod (.) $vr/ ) {
|
||||
$reg{$1} %= valof($2);
|
||||
}
|
||||
elsif( /jgz (.) $vr/ ) {
|
||||
next unless $reg{$1} > 0;
|
||||
$i += -1 + valof($2);
|
||||
}
|
||||
elsif( /rcv (.)/ ) {
|
||||
next unless $reg{$1};
|
||||
die $last_played;
|
||||
}
|
||||
else { die "wut? $_"; }
|
||||
|
||||
}
|
41
18/input.txt
Normal file
41
18/input.txt
Normal file
@ -0,0 +1,41 @@
|
||||
set i 31
|
||||
set a 1
|
||||
mul p 17
|
||||
jgz p p
|
||||
mul a 2
|
||||
add i -1
|
||||
jgz i -2
|
||||
add a -1
|
||||
set i 127
|
||||
set p 622
|
||||
mul p 8505
|
||||
mod p a
|
||||
mul p 129749
|
||||
add p 12345
|
||||
mod p a
|
||||
set b p
|
||||
mod b 10000
|
||||
snd b
|
||||
add i -1
|
||||
jgz i -9
|
||||
jgz a 3
|
||||
rcv b
|
||||
jgz b -1
|
||||
set f 0
|
||||
set i 126
|
||||
rcv a
|
||||
rcv b
|
||||
set p a
|
||||
mul p -1
|
||||
add p b
|
||||
jgz p 4
|
||||
snd a
|
||||
set a b
|
||||
jgz 1 3
|
||||
snd b
|
||||
set f 1
|
||||
add i -1
|
||||
jgz i -11
|
||||
snd a
|
||||
jgz f -16
|
||||
jgz a -19
|
Loading…
Reference in New Issue
Block a user