Doing Perchance.org things…

Links

  • 37 Posts
  • 345 Comments
Joined 1 year ago
cake
Cake day: June 21st, 2023

help-circle







  • If I understand correctly, you have something like:

    val
      -1
      0
      1
    
    entries
      a
      b
      c
      d
      e
      f
      g
      h
      i
      j
      k
      l
      m
    

    Then based on the val, you would have to select: (a) if val = -1, only from a to k, (b) from b to l, © from c to m.

    Here is my solution: https://perchance.org/8horj02y80

    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:

    modOut
      Modifier: [mod = val.selectOne] | Min: [min = 2 + mod] | Max: [max = 12 + mod]
    

    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.
    entryOut
      Selection: [x = random.evaluateItem] | Entry: [entries.selectAll[x-1].upperCase]
    
    • 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]
    

    where x is selected before selecting the entry:

    entryOut
      Selection: [x = random.evaluateItem] | Entry: [entries.upperCase]
    






  • Hello, you can check the changes here: https://perchance.org/vgs5qtexr3

    First, you don’t need to have multiple layers per color. You can just have one layer, on the generator its called base, then under it, is the images per color, then you can use Perchance’s dynamic odds to select the correct image.

    output
      [x = base.evaluateItem] [imageLayerCombiner(data)] ^[clicked == "lion"] // selects the base, then uses it for the selections.
    
    data
      ...
      layers
        ...
        base // base layer
          filter = [baseFilters.evaluateItem]
          https://i.imgur.com/B6nOqdc.png^[x == 'blank'] //blank
          https://i.imgur.com/4sFFKFS.png^[x == 'brownpinkBase']
          https://i.imgur.com/xxCVLzl.png^[x == 'redBase']
          https://i.imgur.com/IstBWcB.png^[x == 'blueBase']
          https://i.imgur.com/JIPN8jR.png^[x == 'lavendarBase']
          https://i.imgur.com/ZFlZfFp.png^[x == 'gingerBase']
          https://i.imgur.com/fpAEPbi.png^[x == 'goldBase']
    ...
    base // a separate list to select the base.
      blank
      redBase
      blueBase
      brownpinkBase
      lavendarBase
      gingerBase
      goldBase
    
    baseFilters // List of filter per base, selected with the dynamic odds.
      hue-rotate({0-40}deg) saturate({0-100}%) brightness({50-150}%)^[x == 'brownpinkBase']
      hue-rotate({0-10}deg) saturate({50-120}%) brightness({50-150}%)^[x == 'redBase']
      hue-rotate({0-35}deg) saturate({50-120}%) brightness({50-130}%)^[x == 'blueBase']
      hue-rotate({0-50}deg) saturate({50-120}%) brightness({50-130}%)^[x == 'lavendarBase']
      hue-rotate({0-20}deg) saturate({50-100}%) brightness({50-100}%)^[x == 'gingerBase']
      hue-rotate({0-10}deg) saturate({50-120}%) brightness({50-110}%)^[x == 'goldBase']