arXiv · 1602.06426
A loopless and branchless $O(1)$ algorithm to generate the next Dyck word
Abstract
Let integer be any C/C++ unsigned integer type up to 64-bits long. Given a Dyck word the following code returns the next Dyck word of the same size, provided it exists. integer next_dyck_word(integer w) { integer const a = w & -w; integer const b = w + a; integer c = w ^ b; c = (c / a >> 2) + 1; c = ((c * c - 1) & 0xaaaaaaaaaaaaaaaa) | b; return c; }
Explore related subjects
Keep this discovery
Cassio Neri. 2016-02-20. A loopless and branchless $O(1)$ algorithm to generate the next Dyck word. https://arxiv.org/abs/1602.06426
Cite the original work for its findings. Save a collection to share your selection of sources.