i like frog

From Esolang
Jump to navigation Jump to search
i like frog
Designed by Asher I (user ns)
Appeared in 2020
Memory system tape-based
Dimensions one-dimensional
Computational class Turing complete
Reference implementation Unimplemented
Influenced by Boolfuck
File extension(s) .frg


Note that i like frog is typically lowercased except, often, at the start of a sentence.

I like frog was invented by User:Apollyon094 in 2020, as a joke on an image seen here.

I like frog is a set of 16 commands (including the newline as a command to end a command) based on the following syntax to have them executed. Line breaks end commands and their parameters.

Each line/command is started with one of 3 categories of commands, being "i ", "like " or "frog "

The following categories and their commands are as below:

i (if called without "like" or "frog", go to cell number X where X was the value underneath the pointer before it moved):

   like: Go forward X cells where X = the parameters. If no parameters, move forward one.
   frog: Go backwards X cells where X = the parameters. If no parameters, move backwards one.

like (if called without i or frog, output all cells written to):

   i: Insert X in binary into cells to the right of the pointer where X = parameters. If no parameters, take input from console.
   frog: Output X where X = parameters. If no parameters, output bit under pointer.

frog (if called without i or like, invert base-16 command under IP and go to instruction number X where X is the value under the data pointer.)

   i: Go forward X instructions if bit = 0 where X = parameters. If no parameters, rotate data bits by 4 left, rotate command bits by 2 left and go forward 1 instruction.
   like: Go back X instructions if bit = 0 where X = parameters. If no parameters, rotate data bits by 4 right, rotate command bits by 2 right and go back 1 instruction.

I like frog is Turing-Complete since it can compile to Boolfuck as well as Nanofuck and execute infinite loops

UPDATE: Parameters are now bitwise. You can choose from "i, like (and) frog" in this order. You can only pick from 2 since the last word (i, like, frog) cannot be used again. Therefore you have 2 choices which, in order, can be equivalent to 1s and 0s. The parameters are also read as bytes (padding 8). I don't think endianness is a problem here.

If you wrote an interpreter, please post it here. I'm bad at programming and can't figure out how to skip back and forward instructions.

Examples

Hello, World!

This program prints out the words Hello World!:

like frog i frog i like frog i like i like i frog like frog i like frog i frog i frog like i frog like i like i frog like i frog like frog i like i frog like i frog like frog like i like frog i frog like i like i like frog i like i like i like frog i frog i frog like frog i frog like i frog like frog like i frog like frog i like frog i like frog like i frog like i like i frog like i like frog i like i like frog i like i like frog


Infinite loop

This program executes an infinite loop:

frog like i

What this does it it goes back an instruction, which there is no instruction before it, so it goes to the last instruction which is it.