Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- use v6;
- my @a = 10, 5, 7, 6, 1;
- # my @a = 10;
- # my @a = [];
- # First approach
- my @result;
- for @a.reverse.rotor(2 => -1) -> ($a, $b) {
- FIRST @result.push($a);
- state $drop = 0;
- $drop += ($b + 1 - $a) max 0;
- @result.push($b - $drop);
- };
- say @result ?? @result.reverse !! @a.List;
- # Second approach
- my @diffs = [\+] @a.reverse.rotor(2 => -1).map: -> ($a, $b) { ($b + 1 - $a) max 0 };
- say !@diffs ?? @a.List !! (@a.reverse Z- (0, |@diffs)).reverse;
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement