From Esolang
Jump to navigation Jump to search

(or circle) is an esolang that only accepts the characters ○, ◯, and °. Created by User:AnotherUser05.

Command Description
Generates a random value between 0 to 255.
Increase a value by the value generated from the most recent .
° Print the value.

Examples

This prints a random value.

○◯°

This is not a "Hello World!" program.

○◯○◯○◯○◯○◯°○◯○◯○◯○◯○◯○◯○◯○◯○◯○◯○◯°○◯○◯○◯○◯○◯○◯○◯○◯°°○◯○◯○◯○◯°○◯○◯○◯○◯○◯○◯○◯○◯°

This prints 0.

°

Generates a 16-digit key, by User:Infinitehexagon

○◯°○◯○◯°○◯°○◯○◯°○◯°○◯○◯°○◯°○◯○◯°○◯°○◯○◯°○◯°○◯○◯°○◯°○◯○◯°○◯°○◯○◯°

Uses

This language is useless, cause it can't output any character.

So why did the author do this?!

Honesly, I have no idea.

Implementation

An attempted implementation in Common Lisp shall be produced below. Please note that Unicode support constitutes an implementation-dependent aspect in Common Lisp. The interpreter at hand has been developed and tested with Steel Bank Common Lisp (SBCL) version 1.1.4 as part of the Lisp Cabinet 0.3.5 bundle.

(defun interpret-○ (code &aux (register 0) (last-random-value 0))
  "Interprets the piece of ○ source CODE and returns no value."
  (declare (type string          code))
  (declare (type (integer 0 *)   register))
  (declare (type (integer 0 255) last-random-value))
  (setf *random-state* (make-random-state T))
  (loop for token of-type character across code do
    (case token
      (#\○       (setf last-random-value (random 256)))
      (#\◯      (incf register last-random-value))
      (#\°       (format T "~d " register))
      (otherwise NIL)))
  (values))