Worthwhile task shaving: Difference between revisions

m
→‎{{header|Perl}}: column width adjustable
m (→‎{{header|Perl}}: improve on one-sided ternary)
m (→‎{{header|Perl}}: column width adjustable)
Line 20:
no warnings 'experimental::smartmatch';
 
use constant FWCW => '%-12s11s'; # set column width
 
my @shaved = <1 5 30 60 300 1800 3600 21600 86400>;
# ( scale --> seconds ) (minutes) ( scale --> hours )
my @shaved = map { 60 * $_ } 1/60, 1/12, 1/2, 1, 5, 30, map { 60 * $_ } 1, 6, 24;
my @columns = (' 1 Second', ' 5 Seconds', '30 Seconds', ' 1 Minute', ' 5 Minutes', '30 Minutes', ' 1 Hour', ' 6 Hours', ' 1 Day');
my $diy = 365.25;
my @freq = (50*(map { $diy, 5* $diy_ } 50, $diy5, $diy1, 1/7), 12, 1);
my $week = 7 * (my $day = 24 * (my $hour = 60 * (my $minute = 60)));
my $month = (my $year = $day * $diy) / 12;
my $mult = 5;
 
sub fmt { my($t, $interval) = @_; sprintf FWCW.' ', (sprintf '%2d', int $t) . ' ' . $interval . ($t > 1 and 's') }
 
say ' ' x 34 . 'How Often You Do the Task'; say '';
say sprintf FWCW.' | '.(' '.FWCW)x6, <Shaved-off 50/Day 5/Day Daily Weekly Monthly Yearly>; say '';
say '-' x 93;
 
for my $y (0..8) {
my $row = sprintf FWCW.' | ', $columns[$y];
for my $x (0..5) {
given ($freq[$x] * $shaved[$y] * $mult) {
Line 45 ⟶ 46:
when ($_ < 9*$week) { $row .= fmt $_/$week, "Week" }
when ($_ < $year ) { $row .= fmt $_/$month, "Month" }
default { $row .= ' ' . n/a sprintf CW, ' ' }
}
}
Line 52 ⟶ 53:
{{out}}
<pre> How Often You Do the Task
 
Shaved-off | 50/Day 5/Day Daily Weekly Monthly Yearly
---------------------------------------------------------------------------------------------
 
1 Second | 1 Days 2 Hours 30 Minutes 4 Minutes 1 Minute 5 Seconds
51 SecondsSecond | 51 Days 122 Hours 30 Minutes 2 Hours 4 Minutes 211 MinutesMinute 5 Minutes 25 Seconds
30 5 Seconds | 4 Weeks 35 Days 1512 Hours 2 Hours 3021 Minutes 5 2Minutes Minutes 25 Seconds
1 Minute 30 Seconds | 24 MonthsWeeks 63 Days 15 Hours 1 Days 42 Hours 30 Minutes 1 Hour 52 Minutes
51 MinutesMinute | 10 2 Months 6 4Days Weeks 61 Days 214 Hours 1 5Hour Hours 255 Minutes
30 5 Minutes | 10 Months n/a 4 Weeks 6 MonthsDays 5 Weeks21 Hours 5 DaysHours 25 1 Days 2 HoursMinutes
1 Hour 30 Minutes | n/a n/a6 Months 5 Weeks 2 Months 105 Days 21 Days 52 Hours
61 HoursHour | n/a n/a n/a 2 Months 10 Days 2 Months 2 WeeksDays 15 DaysHours
16 DayHours | | n/a n/a n/a 8 Months 2 Months 8 Weeks 2 Weeks 5 1 Days</pre>
1 Day | 8 Months 8 Weeks 5 Days</pre>
 
=={{header|Phix}}==
2,392

edits