Pick and Choose (Part N)
Hey, you remember this series, right? No? Oh that's probably because the last article was years ago. If you're interested, here's the previous articles...
Ahh, those heady days of 2018. I had big dreams. I had hoped my momentum for working on this module would eventually pick back up. I realised along the way that I'm sitting on some half-decent functions that no one can really use because I haven't published them. That changes today.
Today, I have published Math::Combinatorics to CPAN. It features the following functions
multicombinations(aka combinations with replacement)
variations(aka k-permutations of n)
Of those, only
derangements is not written in NQP. My skill with NQP is that of a amateur, so I may not have written the most efficient code. However the implementations written in NQP should at least be noticeably faster than most pure-Raku functions implementing the same algorithms.
I held off on publishing this module for so long because I wanted to polish it, provide more functions, and implement faster
.skip on things like permutations, where the n-th permutation in a sequence can be determined algorithmically.
In hindsight, it was silly not to publish sooner. It doesn't prevent me from working on those things, and encourages others to get involved too.
Sometimes in life, you have to pick and choose your battles.