diff options
| author | Drahflow <drahflow@gmx.de> | 2014-03-26 02:40:36 +0100 |
|---|---|---|
| committer | Drahflow <drahflow@gmx.de> | 2014-03-26 02:40:36 +0100 |
| commit | c7cca242d151618ca2598bcb84c8bf5d1b5165ef (patch) | |
| tree | d63947b084b69f3f9c24932b71956b710428e165 /elymas/lib | |
| parent | 87a65610118849c4180b39803a3494fbeb96f4c8 (diff) | |
Sorting routine
Diffstat (limited to 'elymas/lib')
| -rw-r--r-- | elymas/lib/map.ey | 2 | ||||
| -rw-r--r-- | elymas/lib/sort.ey | 25 |
2 files changed, 26 insertions, 1 deletions
diff --git a/elymas/lib/map.ey b/elymas/lib/map.ey index 5c5b0f0..fd8c384 100644 --- a/elymas/lib/map.ey +++ b/elymas/lib/map.ey @@ -1,5 +1,5 @@ < - { .v -01 . } "#*" defmd + { { .v -01 . }_ [ 0 ] [ 0 ] '' * } "#*" defmd { [ 0 ] } "#in" deffd { [ 0 ] } "#out" deffd { .v keys } "#dom" defmd diff --git a/elymas/lib/sort.ey b/elymas/lib/sort.ey new file mode 100644 index 0000000..163062a --- /dev/null +++ b/elymas/lib/sort.ey @@ -0,0 +1,25 @@ +{ _ /a deff dom /d deff + { ==e ==s + s e eq { [ s d ] } { + s e add 2 div ==m + s m mergeSort =*x 0 ==i + m 1 add e mergeSort =*y 0 ==j + [ + { i |x len lt j |y len lt and } { + i x a j y a lt { + i _ x -01 1 add =i + } { + j _ y -01 1 add =j + } ? * + } loop + { i |x len lt } { i _ x -01 1 add =i } loop + { j |y len lt } { j _ y -01 1 add =j } loop + ] + } ? * + } /mergeSort deffst + 0 |d len 1 sub mergeSort +} /order deffd + +{ _ order -01 { * }_ [ 0 ] [ 0 ] '' * } /sort deffd + +# vim: syn=elymas |
