Skip to content

Instantly share code, notes, and snippets.

@rightfold
Last active August 29, 2015 14:15
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save rightfold/25dbf34cb276c21d0753 to your computer and use it in GitHub Desktop.
Save rightfold/25dbf34cb276c21d0753 to your computer and use it in GitHub Desktop.
package Queue::Geminiphobic;
use Modern::Perl;
use Set::Scalar;
sub new {
my ($class, @elements) = @_;
bless { elements => \@elements, had => Set::Scalar->new() }, $class;
}
sub enqueue {
my ($self, @values) = @_;
foreach my $value (@values) {
unless ($self->{had}->has($value)) {
$self->{had}->insert($value);
push @{$self->{elements}}, $value;
}
}
}
sub dequeue {
shift @{shift->{elements}};
}
sub is_empty {
!@{shift->{elements}};
}
1;
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment