From b20cfd7b0d8d00dc111cfcddab96dc0fa79dd6e9 Mon Sep 17 00:00:00 2001 From: Justin Lin Date: Sat, 27 Feb 2021 20:04:47 +0800 Subject: [PATCH] add shuffle --- src/util/shuffle.scad | 11 +++++++++++ 1 file changed, 11 insertions(+) create mode 100644 src/util/shuffle.scad diff --git a/src/util/shuffle.scad b/src/util/shuffle.scad new file mode 100644 index 00000000..7361b9e6 --- /dev/null +++ b/src/util/shuffle.scad @@ -0,0 +1,11 @@ +use ; + +function shuffle(lt, seed) = + let( + leng = len(lt), + indices = [for(i = is_undef(seed) ? rands(0, leng, leng) : rands(0, leng, leng, seed)) floor(i)] + ) + _shuffle(lt, indices, leng); + +function _shuffle(lt, indices, leng, i = 0) = + i == leng ? lt : _shuffle(swap(lt, i, indices[i]), indices, leng, i + 1); \ No newline at end of file