#! /usr/bin/env raku unit sub MAIN (Int $limit where $limit > 1 = 100, :$verbose); my $prev-sum = 0; my $prev-inc = 0; my $prev-inx = 0; my @result; for 2 .. $limit -> $number { my @list = 1 .. $number; my $sum = bit-sum(@list); my $inc = $sum - $prev-sum; my $inx = $inc - $prev-inc; say ": bit-sum 1..{ $number.fmt("%3d") } -> { $sum.fmt("%3d") } -> { $inc.fmt("%3d") } -> { $inx.fmt("%3d") }" if $verbose; @result.push: $inx; $prev-sum = $sum; $prev-inc = $inc; $prev-inx = $inx; } put @result; sub bit-sum (*@numbers where @numbers.elems > 1 && all(@numbers) ~~ Int) { my $grand-total; for @numbers.combinations(2) -> $list { my $sum = bit-diff(|$list); $grand-total += $sum; } return $grand-total; sub bit-diff (Int $a, Int $b) { return ($a +^ $b).base(2).comb.sum; } }