Programming puzzles: processing lists!
|
06-18-2017, 03:23 PM
Post: #167
|
|||
|
|||
RE: Programming puzzles: processing lists!
(06-18-2017 02:28 PM)pier4r Wrote: @DavidM: is there any repository where one can download a "pre-release" of your library or one has to wait until you upload it here? I've attached the latest version. It wasn't until recently that I realized I was inadvertently spamming your challenge thread with these library diversions. The library was a direct result of working on the challenges, but in retrospect it seems off-topic enough to warrant a separate thread. Apologies to everyone! The release notes and command summaries are included below. Full command descriptions are included in the attached zip. Teaser: I've completed several of the pieces needed for DOPERM and DOCOMB commands, and the results so far seem to support continuing that effort. As an example, a test that generates all 5040 permutations of a 7-element list completes in about 125 seconds on a 50g. That's about 40 permutations/second just being dumped on the stack, which seems fast enough to consider using these methods to "feed" combinations/permutations to a user-supplied program. It's likely that any user-supplied program will be the most significant contributor to the overall performance, of course. But at least the underpinnings seem to be working well. Version 0.8.0d 2017-06-18 - Added new commands: LHDTL, LRLL, LRLLD, LSEQ, LSEQR - Changed LSPLT error condition: a sublist size argument that is greater than the actual list size no longer generates an error. In that situation, the full list will be returned as the first sublist. COMMAND SUMMARY LCLLT - collates a list of sublists LCNT - counts objects in a list LDDUP - removes duplicates from a list LDST - distributes list items into sublists (reciprocal of LCLLT) LEQ - checks list items to see if any do not match LGRP - replaces repeated elements with a single instance LHDTL - retrieves the first element in a list while leaving the rest on the stack LMRPT - repeats list contents as indicated by count LNDUP - creates a list by repeating an object as indicated by count LREPL - replaces list elements with a substitute object as indicated LRLL - rolls the list (equivalent to 1 LROT) LRLLD - "roll down" for the list (equivalent to -1 LROT) LROT - rotates list elements left or right as indicated by count LRPCT - list with LGRP elements and another list of the count of each element LSDIV - subdivides a list into <count> sublists LSEQ - creates a list of <count> integers LSEQR - creates a list of integers for the range specified LSHF - shuffles the contents of a list LSPLT - splits a list as indicated into two sublists LSUM - ΣLIST that also handles lists with 0 or 1 element LSWP - swaps the position of two list elements LXIL - explodes inner sublists into individual elements (non-recursive) LXILR - recursive version of LXIL S→NL - converts a string to a list of numbers NL→S - converts a list of numbers to a string S→SL - converts a string to a list of characters SL→S - converts a list of characters to a string |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 4 Guest(s)