We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.

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.