|Message in compiled form|
The message consists of a long sequence of four basic symbols:
00010223300011022330001110223300011110223300011111022330001111110223300011111110 22330001111111102233000111111111022330001111111111022330001111111111102233000111 11111111102233000111111111111102233000111111111111110223300011111111111111102233 00011111111111111110223300011022330001110223300011111022330001111111022330001111 11111110223300011111111111110223300010223300011110223300011111111102233000111111 11111111110223301100100102233011001100110223301100111001110223301100111100111102 23301100111110011111022330110011111100111111022330110011111110011111110223301100...
|Message in graphical form|
This is a prettier way to view the message. This is
not the form in which the message would be transmitted,
just a more convenient form for a casual human reader to skim.|
(click for full message)
|Message in human-readable form|
This form of the message is close to the actual "source code"
of the message, and should be much easier to read (especially
if you are a programmer).|
Click here for complete message - warning, this is a very large document, you are probably better off looking at individual sections:
|Message as a single image|
This is just for fun. The entire image is embedded in a single image, with each pixel corresponding to one symbol in the message. The image reads diagonally, starting at the top left. It is handy for spotting phase changes in the message (e.g. the transition from using unary to binary, or - more importantly - bugs). Zeros are greenish, ones are reddish, parentheses (symbols 2 and 3) are different shades of blue.
Estimate of message entropy in compiled form: 25.3 kB.
There are bugs and rough edges in the message. Please be forgiving. It'll all get fixed in an instant of galactic time...
Structure of message:
The advantage of using a programming-code-like language is that the reader can play with hypothethicals at any time, and experiment with evaluating alternative statements that are not in the message.
The generated message currently consists of a sequence of 4 symbols.
number symbol meaning 0 . binary digit zero 1 : binary digit one 2 ( marks beginning of an expression 3 ) marks end of an expression
And two pseudo-symbols coded using the above:
sequence symbol meaning .() / opens an implicit paren, which will close at next paren (A B / C / D) is another way to write (A B (C (D))) This greatly simplifies complex expressions. (()) ; marks end of sentence
Numbers are encoded as binary digits between parentheses, e.g. (:::.) is 1110 base 2 which is 14 in decimal. A set of numbers between parentheses constitutes an expression. Expressions can be nested. Expressions followed by a semicolon should evaluate to be true, once the rules for evaluation have been introduced.
In the human-readable form of the message, decimal numbers can be used. There are converted to binary. Identifiers can also be used. Identifiers are mapped onto arbitrarily assigned numbers. In the message, there is nothing to distinguish identifiers from numbers. The actual language is carefully constructed so that this distinction is never necessary.
Here are the operations currently introduced in the message by example alone, rather than by definition.
I'm gradually reducing this set. There are some obvious redundancies that could be removed quite easily right now, but with a cost to comprehension.