I have a table with 13 entries, but based on a variable (values -1, 0, 1) I would want to return from items 1-11, 2-12, or 3-13 respectively. So the variable value would essentially tell the generator to ignore some entries from the head or tail of the list. Is there a way to accomplish this in Perchance?
There are a couple of ways... One is using odds to prevent/allow items from being selected.
But, thinking about this a different way, you can make groups with the name -1, 0, and 1, and grab a group by name--with your variable.
Each item and group/list is a property of its parent:
parent
child1
child2
You can grab child1 by using the code parent.child1. But also if you have a variable prop_name with the value "child1" you can use that to grab a property of that name using the code parent[prop_name]. Even if the variable's value is a number like -1, 0, or 1, you can use it the same way.
First, we select the val, and then base the range from it. Since it is from 1-11, etc, we can have the base to be 2-12, then add (subtract) the modifier to have 1-11 for -1, 2-12 for 0, and 3-13 for +1, by having a min and max variables:
Then, to create a 'dynamic' range, we use JavaScript's Template Literals, to create a dynamic Perchance Shorthand List:
random = [`{${min}-${max}}`]
Essentially, the template literal would be evaluated first, so if we have min as 3 and max as 13, then it would be {3-13}, and then Perchance would evaluate that into a random number between that range.
We can now then use that value to select the item from our list, in which we can do in many ways:
Via .selectAll[index-1] since the arrays are accessed with zero-start indexing.
Via Dynamic Odds (What is on the demo generator)
For the dynamic odds, we can just add them directly on the entry list:
entries
a ^[x == 1]
b ^[x == 2]
c ^[x == 3]
d ^[x == 4]
e ^[x == 5]
f ^[x == 6]
g ^[x == 7]
h ^[x == 8]
i ^[x == 9]
j ^[x == 10]
k ^[x == 11]
l ^[x == 12]
m ^[x == 13]
Thanks for these solutions - clearly I have a lot to learn about Perchance, and some of these techniques will be helpful with some things I want to do in the future. I just discovered Perchance within the last week and really finding it useful for some tools for gaming.
I came up with this solution after posting the question - I created a "showhead" and "showtail" variable and set them to 0 or 1 based on my input field value, then tagged just the first and last list entries with "conditional odds" based on that value - like