aboutsummaryrefslogtreecommitdiff
path: root/challenge-018
diff options
context:
space:
mode:
authorSimon Proctor <simon.proctor@zpg.co.uk>2019-07-22 14:17:30 +0100
committerSimon Proctor <simon.proctor@zpg.co.uk>2019-07-22 14:17:30 +0100
commita517fd0485c34a5c8ad8575acefd11e910bd0763 (patch)
treedbba07a6d56d0d5349485f2743447b3c6acd47e2 /challenge-018
parent1d03bfdae1130bbf391661bbb7e3f6fd1917e6c3 (diff)
downloadperlweeklychallenge-club-a517fd0485c34a5c8ad8575acefd11e910bd0763.tar.gz
perlweeklychallenge-club-a517fd0485c34a5c8ad8575acefd11e910bd0763.tar.bz2
perlweeklychallenge-club-a517fd0485c34a5c8ad8575acefd11e910bd0763.zip
Update my queue to be iterable
Diffstat (limited to 'challenge-018')
-rw-r--r--challenge-018/simon-proctor/perl6/ch-2.p616
1 files changed, 11 insertions, 5 deletions
diff --git a/challenge-018/simon-proctor/perl6/ch-2.p6 b/challenge-018/simon-proctor/perl6/ch-2.p6
index 79c7161676..4b7858f317 100644
--- a/challenge-018/simon-proctor/perl6/ch-2.p6
+++ b/challenge-018/simon-proctor/perl6/ch-2.p6
@@ -16,7 +16,7 @@ role SingleQueue {
}
}
-role OrderedQueue {
+role OrderedQueue does Iterator does Iterable {
has SingleQueue %!queues;
@@ -50,19 +50,25 @@ role OrderedQueue {
}
return $value;
}
+
+ method pull-one() {
+ self.pull-highest-priority-element // IterationEnd;
+ }
+
+ method iterator() {
+ return self;
+ }
}
#| Given a file in csv format "priority,item" add all the items to the queue
#| then print them in the given order
sub MAIN( $file ) {
- my $queue = OrderedQueue.new();
+ my $queue := OrderedQueue.new();
for $file.IO.lines -> $line {
my ( $priority, $item ) = $line.split(",");
$queue.insert-with-priority( $item, $priority );
}
- while ! $queue.is-empty {
- $queue.pull-highest-priority-element().say;
- }
+ .say for $queue;
} \ No newline at end of file