Oof!

From Esolang
Jump to navigation Jump to search

The esoteric programming language Oof! (not to be confused with Oof) was invented by User:Zzo38 in May 2006. It is a bit similar to Black, and to the game Black Box.

The program structure is a 2-D box, the characters are spaces or non-space symbols. The program pointer is at the unique non-space symbol that is moving. When it moves outside the boundary (such that it can't possibly touch anything else) then the program terminates. The program starts by moving the $ (there can be only one in the program) toward the right.

Rules:

  • When a moving symbol bumps into a non-space with a different symbol, it stops, and the other symbol starts moving in the same direction.
  • When a moving symbol hits a non-space that matches, it pushes the latter (and anything behind it if there are multiple non-spaces in a row) one space in the direction moved, then reverses its own direction.
  • When there are non-matching non-spaces next to it like in Black Box, the moving symbol deflects, see below. (Matching symbols don't affect it)

Deflection:

    *    *
....      ...... bounces off
   .     *
   .
deflects

Special symbols:

  • The symbols ^ _ < > are special symbols. If they move, they turn into the symbol corresponding to the direction they are moving in.
  • The symbols = and | are pullers, = horizontally, and | vertically. (In any other respect they are just like other symbols.) A symbol moving away horizontally from an adjacent =, pulls with it the latter and all non-spaces connected to it. Similarly with |, except vertically. But , A puller of either way, when bumping into another puller (either kind), it immediately reverses and pulls it along with it.