Skip to content

Instantly share code, notes, and snippets.

@swuecho
Created August 7, 2012 01:57
Show Gist options
  • Select an option

  • Save swuecho/3280665 to your computer and use it in GitHub Desktop.

Select an option

Save swuecho/3280665 to your computer and use it in GitHub Desktop.
class Minstack {
has @.stack;
has @.min;
}
multi push(Minstack $mstack, $item) {
push $mstack.stack, $item;
if $mstack.min==0 or $mstack.min[*-1] > $item {
push $mstack.min, $item;
}
}
multi pop(Minstack $mstack) {
my $item=pop $mstack.stack;
if $item == $mstack.min[*-1] {
pop $mstack.min;
}
return $item;
}
multi min(Minstack $mstack) {
$mstack.min[*-1];
}
my $min=Minstack.new;
push $min, 5;
push $min, 3;
push $min, 10;
push $min, 2;
say(pop $min); # 2
say(min $min); # 3
say(pop $min); # 10
say(min $min); # 3
say(pop $min); # 3
say(min $min); # 5
say(pop $min); # 5
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment