git @ Cat's Eye Technologies Troupe / 62ed137
Initial import of specification of Troupe. Cat's Eye Technologies 10 years ago
1 changed file(s) with 197 addition(s) and 0 deletion(s). Raw diff Collapse all Expand all
0 Troupe
1 ======
3 Troupe is an esolang designed by Chris Pressey on June 25, 2012, in Winnipeg,
4 Canada.
6 The name of this esolang is **Troupe** in the UK and Canada and Australia,
7 but in the USA, where they drop the "u" in words where it follows an "o", its
8 name is **Trope**.
10 Part I. Hedgehogs
11 -----------------
13 We have a troupe of hedgehogs. Each has a position, a colour (in the USA:
14 color), a possible hedgehog to its left, and a possible hedgehog to its
15 right. In this troupe, there is only one hedgehog which has no hedgehog to
16 its left, and only one hedgehog which has no hedgehog to its right, and the
17 following is true: for each hedgehog X, if Y is the hedgehog to X's right
18 (resp. left), then X is the hedgehog to Y's left (resp. right). (i.e. the
19 hedgehogs are in a line formation.)
21 For some hedgehog X, the hedgehog to X's left and the hedgehog to X's right
22 are the *neighbours* (in the USA: *neighbors*) of X.
24 We may say that a hedgehog is "one of the hedgehogs to the left" (resp.
25 "right") of some other hedgehog; the meaning of this should be evident -- it
26 is just the transitive closure of "to its left" (resp. right).
28 All hedgehogs share a fixed speed at which they move (when they move), and a
29 fixed radius. Also, the troupe consists of a finite number of hedgehogs at
30 all times, and their colours come from a finite set of possible colours that
31 can be distinguished from one another. (And that there is one distinguished
32 "default" colour, which we will arbitrarily call "white".)
34 In the troupe, at any given time, there is either exactly one *leader*
35 hedgehog, or exactly one *leader-elect* hedgehog; never both and never
36 neither.
38 The leader hedgehog, when it exists, has a velocity. It moves through space
39 with this velocity, changing its position. All other hedgehogs in the troupe
40 try to "follow" it, which means the following:
42 Each hedgehog moves to minimize the distance between it and one of its
43 neighbours (up to a certain point: if the distance between it and its
44 neighbour is less than three times the hedgehog radius, it does not bother
45 to move at all.)
47 The neighbour it moves toward is the hedgehog on its left (resp. right), if
48 the leader is one of the hedgehogs to the left (resp. right).
50 Part II. Faery Rings
51 --------------------
53 We also have a set of faery rings. Each ring has a fixed position, radius,
54 inner colour, and outer colour; it optionally has a signpost, a unit vector
55 pointing in any direction; and it optionally has an orientation, which is
56 either clockwise or counterclockwise.
58 Faery rings may not intersect each other *except* if both rings have
59 precisely the same position and radius *and* if they have different outer
60 colours. (They may have the same inner colour.)
62 When a leader hedgehog intersects a faery ring (i.e. when the distance
63 between the hedgehog is less than the sum of the hedgehog radius and the
64 particular ring's radius), and if the outer colour of the faery ring is the
65 same as the colour of the leader hedgehog, the following things happen, in
66 this order:
68 * The faery ring, and all faery rings which intersect it, become temporarily
69 inactive, in that intersection with a hedgehog does not set off this same
70 sequence of events until it becomes active again.
72 * The leader hedgehog's colour is changed to the inner colour of the faery
73 ring.
75 * If the faery ring has a counterclockwise (resp. clockwise) orientation,
76 then the hedgehog to the leader hedgehog's left (resp. right) becomes
77 the leader-elect hedgehog.
79 (If there *is* no hedgehog to the left (resp. right) of the leader
80 hedgehog, then one pops into existence, at the same position as the
81 leader hedgehog, and with a white colouring; and it becomes the
82 leader-elect hedgehog.)
84 When the set of hedgehogs has a leader-elect, the leader-elect moves to
85 minimize its distance to the faery ring that made it leader-elect, and
86 all other hedgehogs follow the leader-elect, as described above.
88 Once the leader-elect hedgehog intersects the faery ring which made it
89 the leader-elect (which it will eventually, as it moves to minimize the
90 distance), it becomes the leader hedgehog.
92 * If the faery ring has a signpost, the leader hedgehog is given a velocity
93 in accordance with the direction of the signpost.
95 * Once the leader hedgehog no longer intersects the faery ring, the faery
96 ring, and all rings that it intersects, become active once again.
98 Part III. Hills
99 ---------------
101 There are also any number of hills, each with a fixed position and radius.
102 These serve as goals; when the leader hedgehog reaches a goal hill, the
103 troupe's quest is over, and they are free to break formation and nibble on
104 clover or whatever it is that hedgehogs do for fun.
106 Part IV. Computational Class
107 ----------------------------
109 The system outlined above should be Turing-complete, as it maps quite
110 readily to the definition of a Turing machine.
112 The line of hedgehogs serves as the tape, with their colours being symbols on
113 the tape, and the leader being the tape head.
115 The faery rings implement state transition rules, or rather, the parts of
116 transition rules that say "If the symbol on the tape is..." (which in our
117 system translates to "If the leader hedgehog is coloured...") Overlapped
118 faery rings of all possible colours make for a traditional transition rule.
120 The state itself is encoded by the leader's position and velocity and which
121 faery ring they're headed toward next. As long as the faery rings are
122 arranged appropriately, we can guarantee that, when the leader hedgehog
123 leaves a faery ring, possibly with a new velocity, it is bound to intersect
124 another faery ring eventually. An example of an appropriate arrangement is:
126 * The signpost in each faery ring points in a cardinal direction.
128 * All faery rings have the same radius.
130 * For each faery ring, there is another faery ring which shares at least
131 one of its coordinates.
133 Finally, the hills serve as halt states.
135 Part V. Extras
136 --------------
138 We can certainly allow for the presence of elements in this world which
139 either do not affect the property of being Turing-complete, or if they do,
140 are not required to be present in any particular instance of the world.
142 ### Rest Areas ###
144 A rest area has a fixed position and radius.
146 If the leader hedgehog enters a rest area, it does not move until no
147 hedgehog in the troupe is impelled to move (i.e. until all hedgehogs are
148 within three times the hedgehog-radius of another hedgehog.) This allows
149 the troupe to "catch up" with the leader.
151 Part VI. Discussion
152 -------------------
154 This system is, of course, crying out to be implemented with a visual
155 animation of the hedgehogs moving around, possibly in a Java applet, or
156 in an HTML5 canvas with Javascript.
158 We have not specified the dimensionality of the space in which these things
159 exist; certainly, two dimensions would be a reasonable restriction,
160 especially for an animated visual implementation.
162 The system probably continues to be Turing-complete in one dimension, but
163 I have not convinced myself of that. One of the things that allows this
164 (if it is true) is that hedgehogs are happily allowed to pass right through
165 other hedgehogs as if they didn't exist. If this was not true, then a one-
166 dimensional realization of this world is probably not Turing-complete.
168 In two dimensions, however, even if hedgehogs are not allowed to pass
169 through each other, the system is still Turing-complete (cf. Beturing),
170 although we might have to add one proviso. Since, in order to really be
171 Turing-complete, the troupe of hedgehogs needs to be able to grow without
172 bound, it might become intractably large. When the leader hedgehog is not
173 able to make progress because of some other hedgehog in its way, it should
174 act as if it entered a rest area. Also, we may require some "jitter" be
175 introduced in follower hedgehog movements, lest they get stuck.
177 We may want to go further, and allow the space itself to expand whenever a
178 hedgehog is added to the troupe -- so long as all the relative directions
179 between things are preserved, this should not affect the outcome.
181 (The idea for this system came to me sort of all at once when I was thinking
182 about Beturing, specifically that Beturing doesn't address the tape at all
183 in its concerns about wire-crossing. I mean, don't we have to communicate
184 to the tape somehow, and might not those lines of communicate cross other
185 lines of communication? Then I thought, well, it can assume that the tape
186 is *inside* the state pointer somehow. And the rest followed more-or-less
187 naturally.)
189 We have not specified, either, whether this system should be implemented with
190 a discrete simulation or a continuous simulation. Actually, either should
191 work, I think; and a continuous simulation would be somewhat interesting, if
192 only for the fact that most language interpreters are discrete. A continuous
193 simulation would use real numbers to measure both duration and distance, and
194 real analysis techniques to discover the evolution of the system. Motion of
195 the hedgehogs would be genuinely continuous except for the points where their
196 velocities change due to one hedgehog approaching another too closely, etc.