JOI2008予選 問題3@Perl(13)

なんかPerlで書いてみたくなった。

凄く読みづらいコードだが、変数名は比較的簡単なので、Perlにまつわるバッドノウハウを知っていればすぐ読める。

しかし、PerlのRange Operator(".."のこと)は、全開区間なんだね。Pythonみたいに半開区間のほうが便利なのに。

#!/usr/bin/perl
$n=<>;
for (1..$n*2) {
	$cards[$_]=2;
}
for (1..$n) {
	$cards[<>]=1;
}
$cards[$n*2+1]=0;
$player=1;
@points=(0,$n,$n);
$min=1;
while($points[1] and $points[2]) {
	for($min..$n*2+1) {
		if($cards[$_]==$player) {
			$min=$_;
			$cards[$_]=-1;
			$points[$player]--;
			last;
		} elsif($cards[$_]==0) {
			$min=1;
			last;
		}
	}
	$player=3-$player;
}
print "$points[2]\n$points[1]\n";