Untitled

Run Settings
LanguagePerl
Language Version
Run Command
#!/usr/bin/env perl use v5.38; sub PriorityTaskScheduler(@raw_jobs) { my ($time, %wait, %bag) = 0; my @jobs = map { my %h; @h{qw(title submit duration priority)} = split(',', $_); \%h } @raw_jobs; @jobs = sort { $a->{submit} <=> $b->{submit} || $b->{priority} <=> $a->{priority} } @jobs; while (my $job = shift(@jobs)) { $time = $job->{submit} if $time < $job->{submit}; $wait{$job->{priority}} += $time > $job->{submit} ? $time - $job->{submit} : 0; $bag{$job->{priority}}++; $time += $job->{duration}; @jobs = sort { ($a->{submit} > $time) <=> ($b->{submit} > $time) || $b->{priority} <=> $a->{priority} || $a->{submit} <=> $b->{submit} } @jobs; } map { sprintf "Priority-%s: %d", $_, $wait{$_} / $bag{$_} } reverse sort keys %wait } my @data = ( "jobA,0,10,3\njobB,2,5,1\njobC,3,8,3\njobD,7,4,2\n", "jobB,2,5,1\njobA,0,10,3\njobC,3,8,3\njobD,7,4,2\njobE,20,4,3", "jobA,0,5,1\njobB,100,10,5\njobC,101,5,5", ); for my $test (@data) { my @jobs = split "\n", $test; say "[", join(", ", PriorityTaskScheduler(@jobs)), "]"; }
Editor Settings
Theme
Key bindings
Full width
Lines