Signals are used to transport "messages." In an ant colony, signals are the lowest-level teams. They form to carry out some activity, such as food gathering, which looks purposeful from the point of view of the colony, but meaningless from the point of view of individual ants. Signals can only form when a critical mass of components (such as ants) are present.
Symbols are levels at which meaning is present; in an ant colony, active symbols are teams of "sufficiently high level." Active symbols are distinct from passive symbols, which just sit around waiting to be processed. One can say "signals are to symbols as letters are to words." The key idea is that symbols trigger other symbols.
Conscious systems operate only on the levels of symbols; they can not see the lower levels, e.g., signals.
def two_to_the_three_to_the(n): return 2 ** (3 ** n)Technically, this really isn't the best answer. Hofstadter designed BlooP to express bounded-loop computation where the basic steps were extremely simple. BlooP doesn't have exponentiation, but we can do exponeniation by performing multiplication in loops. For this problem, the loops are indeed bounded. Here is a translation into Ruby that is much closer to the spirit of the original BlooP:
def two_to_the_three_to_the(n) b = 1 n.times do b = b * 3 end a = 1 b.times do a = a * 2 end return a end