Sha256: a17681c16a27b46908ceb10a25caa8b740abdda25166cc143ca7f49e499d04a5
Contents?: true
Size: 1.29 KB
Versions: 68
Compression:
Stored size: 1.29 KB
Contents
exercise: AllYourBase version: 4 plan: 21 tests: |- for $c-data<cases>.values -> $case { sub call-convert-base { convert-base( bases => %(<from to> Z=> .<input><inputBase outputBase>), digits => .<input><digits>, ) given $case; } given $case { if .<expected><error> { throws-like {call-convert-base}, Exception, .<description>; } else { cmp-ok call-convert-base, ‘~~’, |.<expected description>; } } } unit: module example: |- sub convert-base ( :%bases! where all(.keys ~~ <from to>.Set, .values.all > 1), :@digits! where %bases<from> > .all ~~ UInt:D, --> Array[UInt:D] ) is export { from-decimal %bases<to>, to-decimal(%bases<from>, @digits); } sub to-decimal ($input-base, @input-digits) { my $elems = @input-digits.elems; $_ == 0 ?? $elems-- !! last for @input-digits; (loop (my $i = 0; $i < $elems; $i++) { @input-digits.reverse[$i] * $input-base ** $i; }).sum; } sub from-decimal ($output-base, $num is copy) { my UInt:D @output-digits; while $num >= $output-base { unshift @output-digits, $num % $output-base; $num div= $output-base; } @output-digits.unshift: $num; } stub: |- sub convert-base (:%bases!, :@digits!) is export { }
Version data entries
68 entries across 68 versions & 1 rubygems