|
28 | 28 | "out_range.ops": "The fourth number seems to describe how to check if the value is outside the range.$(li)0: val < min or max < val$(li)1: val <= min or max < val$(li)2: val < min or max <= val$(li)3: val <= min or max <= val" |
29 | 29 | }, |
30 | 30 | nocon: { |
31 | | - intro: "Sometimes, I want operate on two iotas after comparing them, but it gets rather annoying to have to execute $(l:patterns/stackmanip#hexcasting:2dup)$(action)Dioscuri Gambit/$ every time I do.", |
32 | | - name: "Comparison Gambit", |
33 | | - detail: "With some experimentation, I have found that prepending a comparison with a clockwise triangle will cause the two inputs to not be consumed.", |
| 31 | + intro: "Sometimes, I want operate on iotas after using them for logic operations, but it gets rather annoying to have to copy them every time I do. All this copying also places a heavy burden on Nature, especially with large iotas like lists where $(l:casting/mishaps)$(thing)stack size can be a concern/$.", |
| 32 | + name: "Retention Gambit", |
| 33 | + detail: "With some experimentation, I have found that prepending certain logic operations with a clockwise triangle will cause the inputs to not be consumed.", |
34 | 34 | }, |
35 | 35 | vec_literals: { |
36 | 36 | intro: "Interestingly, attaching the tail of any Vector Reflection to the start of $(l:patterns/numbers)$(action)Number Reflection/$ makes it return a vector.", |
|
63 | 63 | approach: "Moves the first value closer to the second by the given amount. Will not overshoot.", |
64 | 64 | angle_dist: "Returns the shortest angular distance between two angles in radians.", |
65 | 65 | angle_approach: { |
66 | | - "": "Turns the first angle towards the second by the given number of radians, picking whichever direction is shorter." |
| 66 | + "": "Turns the first angle towards the second by the given number of radians, picking whichever direction is shorter.", |
67 | 67 | examples: "(To make it easier to read, these examples are written in degrees instead of radians.)$(p)For example:$(li)90, 135, 10 \u2192 100 (start at 90, turn 10 degrees towards 135)$(li)10, 270, 30 \u2192 340 (start at 10, turn 30 degrees towards 270)$(li)300, 90, 90 \u2192 30 (start at 300, turn 90 degrees towards 90)$(li)20, 60, 180 \u2192 60 (start at 20, turn 180 degrees towards 60, stop at 60)", |
68 | 68 | } |
69 | 69 | }, |
|
99 | 99 | }, |
100 | 100 | sets: { |
101 | 101 | intro: "A hash set contains elements in an unordered fashion, and cannot contain duplicates. Excellent for keeping track of whether or not something exists.<br>Due to a magical process known as '$(thing)hashing/$', access is reduced to nearly O(1), relaxing the burden on Nature.", |
| 102 | + tolerance: "However, '$(thing)hashing/$' seems to have a different, albeit minor, burden on Nature. Numbers and vectors lose precision in the process of getting inserted into a set, becoming rounded to 4 decimals. This seems to be related to $(l:patterns/logic#hexcasting:equals)$(thing)how Nature considers $(action)equality/$.", |
102 | 103 | empty_num_set: "Push an empty set that can hold numbers to the top of the stack.", |
| 104 | + last_n_num_set: "Remove $(italic)num/$ numbers from the top of the stack, then add them to a number set at the top of the stack.", |
103 | 105 | empty_vec_set: "Push an empty set that can hold vectors to the top of the stack.", |
| 106 | + last_n_vec_set: "Remove $(italic)num/$ vectors from the top of the stack, then add them to a vec set at the top of the stack.", |
104 | 107 | empty_entity_set: "Push an empty set that can hold entities to the top of the stack.", |
| 108 | + last_n_entity_set: "Remove $(italic)num/$ entities from the top of the stack, then add them to an entity set at the top of the stack.", |
105 | 109 | insert: { |
106 | 110 | name: "Insertion Distillation", |
107 | | - "": "Remove the top of the stack, then add it to the set at the top of the stack." |
| 111 | + "": "Remove the iota at the top of the stack, then add it to the set. The iota's type must match the set's type." |
108 | 112 | }, |
109 | | - insert_ret: "Remove the top of the stack, then add it to the set at the top of the stack. Return True if it wasn't already in the set, otherwise return False.", |
| 113 | + insert_ret: "Remove the iota at the top of the stack, then add it to the set. Return True if it wasn't already in the set, otherwise return False. The iota's type must match the set's type.", |
110 | 114 | remove: { |
111 | 115 | name: "Removal Distillation", |
112 | | - "": "Remove the top of the stack, then remove it from the set at the top of the stack." |
| 116 | + "": "Remove the iota from top of the stack, then remove it set. The iota's type must match the set's type." |
113 | 117 | }, |
114 | | - remove_ret: "Remove the top of the stack, then remove it from the set at the top of the stack. Return True if it was previously in the set, otherwise return False.", |
115 | | - last_n_set: "Remove $(italic)num/$ elements from the stack, then add them to a set at the top of the stack.", |
116 | | - splat_set: "Remove the set at the top of the stack, then push its contents to the stack. The order is up to Nature's whims.", |
| 118 | + remove_ret: "Remove the iota from top of the stack, then remove it set. Return True if it was previously in the set, otherwise return False. The iota's type must match the set's type.", |
117 | 119 | find: { |
118 | 120 | name: "Locator's Gambit", |
119 | | - "": "Remove the top of the stack, then return True if the set at the top of the stack contains it, otherwise return False." |
| 121 | + "": "Remove the iota top of the stack, then return True if the set contains that iota, otherwise return False. The iota's type must match the set's type." |
120 | 122 | }, |
121 | | - add: "Remove the set at the top of the stack, then add all its elements to the set at the top of the stack.", |
122 | | - sub: "Remove the set at the top of the stack, then remove all its elements from the set at the top of the stack.", |
123 | | - and: "Takes the intersection of two sets. The new set will only contain elements that were present in both of the previous sets.", |
124 | | - xor: "Takes the exclusive disjunction of two sets. The new set will only contain elements that were present in only one of the two sets.", |
| 123 | + add: "Remove the set at the top of the stack, then add all its elements to the set at the top of the stack. The two sets must be of matching type.", |
| 124 | + sub: "Remove the set at the top of the stack, then remove all its elements from the set at the top of the stack. The two sets must be of matching type.", |
| 125 | + and: "Takes the intersection of two sets. The new set will only contain elements that were present in both of the previous sets. The two sets must be of matching type.", |
| 126 | + xor: "Takes the exclusive disjunction of two sets. The new set will only contain elements that were present in only one of the two sets. The two sets must be of matching type.", |
125 | 127 | abs: "Remove the set at the top of the stack, then push the number of elements in the set to the stack.", |
126 | | - list_to_set: "Converts the list at the top of the stack to a set.", |
127 | | - set_to_list: "Converts the set at the top of the stack to a list. The order is up to Nature's whims." |
| 128 | + set_to_list: "Converts the set at the top of the stack to a list. The order is up to Nature's whims.", |
| 129 | + splat_set: "Remove the set at the top of the stack, then push its contents to the stack. The order is up to Nature's whims.", |
128 | 130 | }, |
129 | 131 | meta: { |
130 | | - true_halt: "Forcibly halts a $(thing)Hex/$ like $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ if the iota at the top of the stack is $(l:patterns/logic#hexcasting:bool_coerce)$(action)considered True by Nature/$.", |
131 | | - false_halt: "Forcibly halts a $(thing)Hex/$ like $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ if the iota at the top of the stack is $(l:patterns/logic#hexcasting:bool_coerce)$(action)considered False by Nature/$." |
| 132 | + true_halt: "Forcibly halts a $(thing)Hex/$ like $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ if the iota at the top of the stack is $(l:patterns/logic#hexcasting:bool_coerce)$(thing)considered $(action)True $(thing)by Nature/$.", |
| 133 | + false_halt: "Forcibly halts a $(thing)Hex/$ like $(l:patterns/meta#hexcasting:halt)$(action)Charon's Gambit/$ if the iota at the top of the stack is $(l:patterns/logic#hexcasting:bool_coerce)$(thing)considered $(action)False $(thing)by Nature/$.", |
| 134 | + true_eval: "Casts a pattern or list of patterns like $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$ if the next iota from the top of the stack is $(l:patterns/logic#hexcasting:bool_coerce)$(thing)considered $(action)True $(thing)by Nature/$.", |
| 135 | + false_eval: "Casts a pattern or list of patterns like $(l:patterns/meta#hexcasting:eval)$(action)Hermes' Gambit/$ if the next iota from the top of the stack is $(l:patterns/logic#hexcasting:bool_coerce)$(thing)considered $(action)False $(thing)by Nature/$.", |
| 136 | + index_for_each: "Casts like $(l:patterns/meta#hexcasting:for_each)$(action)Thoth's Gambit/$, however the new stack for each element additionally has the index of that element added to the top." |
132 | 137 | } |
133 | 138 | } |
134 | 139 | }, |
|
174 | 179 | cons_about_z: "Roll Purification", |
175 | 180 |
|
176 | 181 | "nocon/": { |
177 | | - greater: "Comparison Gambit: Maximus", |
178 | | - less: "Comparison Gambit: Minimus", |
179 | | - greater_eq: "Comparison Gambit: Maximus II", |
180 | | - less_eq: "Comparison Gambit: Minimus II", |
181 | | - eq: "Comparison Gambit: Equality", |
182 | | - neq: "Comparison Gambit: Inequality", |
183 | | - len_eq: "Comparison Gambit: Length Equality", |
184 | | - len_neq: "Comparison Gambit: Length Inequality", |
| 182 | + bool_coerce: "Retention Gambit: Augur's", |
| 183 | + greater: "Retention Gambit: Maximus", |
| 184 | + less: "Retention Gambit: Minimus", |
| 185 | + greater_eq: "Retention Gambit: Maximus II", |
| 186 | + less_eq: "Retention Gambit: Minimus II", |
| 187 | + eq: "Retention Gambit: Equality", |
| 188 | + neq: "Retention Gambit: Inequality", |
| 189 | + len_eq: "Retention Gambit: Length Equality", |
| 190 | + len_neq: "Retention Gambit: Length Inequality", |
185 | 191 | }, |
186 | 192 |
|
187 | 193 | split_list: "Separation Gambit", |
|
192 | 198 | swindle_list: "Swindler's Distillation", |
193 | 199 | scronglwfijspoivjqwofklcrvewb: "Shuffling Purification", |
194 | 200 |
|
195 | | - empty_set: "Vacant Reflection: Set", |
196 | | - last_n_set: "Bucket's Gambit", |
| 201 | + empty_num_set: "Vacant Reflection: Number Set", |
| 202 | + empty_vec_set: "Vacant Reflection: Vector Set", |
| 203 | + empty_entity_set: "Vacant Reflection: Entity Set", |
| 204 | + last_n_num_set: "Bucketing Gambit: Numbers", |
| 205 | + last_n_vec_set: "Bucketing Gambit: Vectors", |
| 206 | + last_n_entity_set: "Bucketing Gambit: Entities", |
197 | 207 | splat_set: "Spilling Disintegration", |
198 | 208 | set_insert_ret: "Insertion Gambit", |
199 | 209 | set_remove_ret: "Removal Gambit", |
200 | 210 | list_to_set: "Disordering Purification", |
201 | 211 | set_to_list: "Ordering Purification", |
202 | 212 |
|
203 | 213 | true_halt: "Acheron's Gambit", |
204 | | - false_halt: "Styx's Gambit" |
| 214 | + false_halt: "Styx's Gambit", |
| 215 | + true_eval: "Helios' Gambit", |
| 216 | + false_eval: "Selene's Gambit", |
| 217 | + index_for_each: "Djehuty's Gambit" |
205 | 218 | }, |
206 | 219 |
|
207 | 220 | "book.hextrapats:": { |
|
219 | 232 | decrement: "Decrementation Purif.", |
220 | 233 |
|
221 | 234 | "nocon/": { |
222 | | - greater: "Comp. Gambit: Maximus", |
223 | | - less: "Comp. Gambit: Minimus", |
| 235 | + bool_coerce: "Ret. Gambit: Augur's", |
| 236 | + greater: "Ret. Gambit: Maximus", |
| 237 | + less: "Ret. Gambit: Minimus", |
224 | 238 | greater_eq: "Comp. Gambit: Maximus II", |
225 | | - less_eq: "Comp. Gambit: Minimus II", |
226 | | - eq: "Comp. Gambit: Equality", |
227 | | - neq: "Comp. Gambit: Inequality", |
228 | | - len_eq: "Comp. Gambit: Len. Eq.", |
229 | | - len_neq: "Comp. Gambit: Len. Ineq." |
230 | | - } |
| 239 | + less_eq: "Ret. Gambit: Minimus II", |
| 240 | + eq: "Ret. Gambit: Equality", |
| 241 | + neq: "Ret. Gambit: Inequality", |
| 242 | + len_eq: "Ret. Gambit: Len. Eq.", |
| 243 | + len_neq: "Ret. Gambit: Len. Ineq." |
| 244 | + }, |
| 245 | + |
| 246 | + empty_num_set: "Vacant Refl.: Num. Set", |
| 247 | + empty_vec_set: "Vacant Refl.: Vec. Set", |
| 248 | + empty_entity_set: "Vacant Refl.: Ent. Set", |
| 249 | + last_n_num_set: "Bucketing Gamb.: Nums", |
| 250 | + last_n_vec_set: "Bucketing Gamb.: Vecs", |
| 251 | + last_n_entity_set: "Bucketing Gamb.: Ents" |
231 | 252 | } |
232 | 253 | }, |
233 | 254 | "special.hextrapats:": { |
|
241 | 262 | num_set: { |
242 | 263 | "": "Set (Nums)", |
243 | 264 | desc: "a number set" |
| 265 | + }, |
| 266 | + vec_set: { |
| 267 | + "": "Set (Vectors)", |
| 268 | + desc: "a vector set" |
| 269 | + }, |
| 270 | + entity_set: { |
| 271 | + "": "Set (Entities)", |
| 272 | + desc: "an entity set" |
244 | 273 | } |
245 | 274 | }, |
246 | 275 | mishap: { |
247 | 276 | invalid_value: { |
248 | 277 | class: { |
249 | | - num_set: "a set" |
| 278 | + any_set: "any set", |
| 279 | + num_set: "a number set", |
| 280 | + vec_set: "a vector set", |
| 281 | + entity_set: "an entity set" |
250 | 282 | }, |
251 | 283 | "hextrapats:": { |
252 | 284 | opposite_vecs: "vector not facing opposite to the start direction (%s)", |
|
0 commit comments