Worthwhile task shaving: Difference between revisions

(julia example)
Line 287:
1 DAY | 8 MONTHS 8 WEEKS 5 DAYS
</pre>
 
=={{header|Yabasic}}==
{{trans|Phix}}
<lang Yabasic>// Rosetta Code problem: http://rosettacode.org/wiki/Worthwhile_task_shaving
// by Galileo, 02/2022
 
SEC = 1 : MINU = 60 : HOUR = 60 * MINU
DAY = 8 * HOUR : WEEK = 5 * DAY : MONTH = 4 * WEEK : YEAR = 12 * MONTH // (as 48 weeks/omit holidays)
dim shavings$(1) : ls = token("1, 5, 30, MINU, 5 * MINU, 30 * MINU, HOUR, 6 * HOUR, DAY", shavings$(), ",")
dim frequencies$(1) : lf = token("50, DAY, 5, DAY, 1, DAY, 1, WEEK, 1, MONTH, 1, YEAR", frequencies$(), ",")
dim roundto$(1) : lr = token("SEC, MINU, HOUR, DAY, WEEK, MONTH, YEAR", roundto$(), ",")
dim ts$(1) : lt = token("sec, min, hour, day, week, month, year", ts$(), ",")
 
sub format$(line$, n)
return right$(" " + line$, n)
end sub
 
sub duration$(a)
local es$, rdx, t
for rdx = 1 to lr
t = int(a/eval(roundto$(rdx)))
if rdx > 1 and t < 1 break
es$ = str$(t) + " " + ts$(rdx) : if t > 1 es$ = es$ + "s" : es$ = es$
next
return es$
end sub
 
print " 50/day 5/day daily weekly monthly yearly\n"
 
for s = 1 to ls
si = eval(shavings$(s))
line$ = format$(duration$(si), 10) + " "
for f = 1 to lf step 2
per = eval(frequencies$(f)) : slot = eval(frequencies$(f + 1))
if si * per > slot then
line$ = line$ + format$("n/a", 10) + " "
else
shaving = (5 * YEAR / slot * per) * si
line$ = line$ + format$(duration$(shaving), 10) + " "
end if
next
print line$
next</lang>
{{out}}
<pre> 50/day 5/day daily weekly monthly yearly
 
1 sec 2 days 1 hour 20 mins 4 mins 1 min 5 secs
5 secs 2 weeks 1 day 1 hour 20 mins 5 mins 25 secs
30 secs 3 months 1 week 1 day 2 hours 30 mins 2 mins
1 min 6 months 2 weeks 2 days 4 hours 1 hour 5 mins
5 mins 2 years 3 months 2 weeks 2 days 5 hours 25 mins
30 mins n/a 1 year 3 months 3 weeks 3 days 2 hours
1 hour n/a 3 years 7 months 1 month 1 week 5 hours
6 hours n/a n/a 3 years 9 months 2 months 3 days
1 day n/a n/a 5 years 1 year 3 months 1 week
---Program done, press RETURN---</pre>
672

edits