Mailman

From Esolang
Jump to navigation Jump to search

This language is about mail; the program runs until all houses have been delivered to. It was created by User:Xanman12321 and User:Andrew3335 in 2019, based on a Google Docs idea.


Documentation

Lines are just paths.

-, /, |, and \: Paths.

<, >, v, and ^: Forks: if this side of the road has any houses with mail to be sent (“deliveries”), go there first. If neither do, stop the program. If both have equally close

deliveries, choose randomly (CHK)


Houses act like functions.

House "Action" Equivalent
House A Recieves mail and puts it in the post office immediately. PUSH
House B Recieves mail, adds a stamp, and gives it back. INC
House C Recieves mail, tears off a stamp, and gives it back. DEC
House D Doesn’t recieve mail, advises you go get some more mail. POP
House E Recieves mail, opens the package. OUT
House F Your own house; go grab a package. INP
House G Slaps the package out of your hands and gives you an empty one. SET 0

There are also extra symbols.

Symbol "Action" Equivalent
0 Makes you drop your package; pass by houses without interacting until you get a new one. Set pointer value to nil, house functions temporarily disabled.
1-9 Add that number to your package. (or sets it to your package if you have none) Adds number to pointer value, sets if value is nil.
M The mailman. Starts with an empty package. The starting point of the IP..
! If you’re holding an empty package, you realize your mistake and move back to the start. Move to M if 0.


Examples

Print “HI”:

M99999999E1E

Infinite loop:

MG!

Truth machine:

[to be programmed]