![]() ![]() sr step right, mirror of step left (not used above).sl step left, the last sigil in the above image.cr club right, the sixth sigil above, a club facing right.cl club left, the forth sigil above, a club facing left.b stick, the third sigil above, the long stick.a podest, the first sigil in the above screen shot.Where the first two arguments define the size of the frame, and the rest are codes for sigil types: To generate the SMT2 code, I used a Perl script, which is very quickly hacked together. When generating these equations one has to be careful not to include rotated sigils that stick out of the frame, though.Īlthough the above might not be the optimal encoding, the given assertions suffice to check for SAT and produce a model, which allows me to solve the riddles. In the same way, when rotated right, we needĪll these options have to be disjunctively connected, in SMT code for the case where the anchor lies at (4,2). So for example for the top-most sigil in the above photo, I choose the anchor point to be the center, and if that was in, I need to assume that for the upright position for each tile in the frame and each sigil, put the anchor of the sigil on the tile, and express the 4 directions of rotation.choose for each sigil form an anchor point.Of course the most important part are the defining equations for the various sigils. Or in SMT code for a 6×6 frame and the first sigil: (assert (or x_1_1_n x_1_2_n. This can be done easily by assuming that for each sigil, at least one of the tiles is assigned to it: ![]() Since all sigils together exactly fill the frame, this is enough. The better idea was to say that every sigil was used at least once. But with 8×8 or so frames, the number of combinations simply explodes to above several million, which brings my harddrive size and z3 to an end. So if a sigil occupies 4 tiles, then every combination of 5 tiles needs to evaluate to false. First I thought I want to express that every sigil is used exactly once by excluding that for one sigil there are more fields assigned to it then the sigil contains parts. This can be achieved by asserting for each tile and each pair of different sigil (numbers), that not both of the two hold: In the SMT2 code it would look like (assert (or x_i_j_1 x_i_j_2. Let us go through them one by one: Every field has at least on sigil on it
0 Comments
Leave a Reply. |
AuthorWrite something about yourself. No need to be fancy, just an overview. ArchivesCategories |