Snackfish
Jump to navigation
Jump to search
- This article is not detailed enough and needs to be expanded. Please help us by adding some more information.
Snackfish is SNACBIT based, and uses commands in Deadfish.
Commands
| Command | Description |
|---|---|
i
|
Increment the current snack, wrapping around at the edges |
d
|
Decrement the current snack, wrapping around at the edges |
s
|
Square the number associated with the current snack, wrapping around at the edges |
o
|
Output the current snack |
Interpreter
An implementation of Snackfish in Common Lisp shall be produced:
(declaim (type (simple-array simple-string (11)) +SNACBIT-STATES+))
(defparameter +SNACBIT-STATES+
(make-array 11
:element-type 'string
:initial-contents
'("Peanut butter cracker"
"Cosmic brownie"
"Cheezit"
"Cheeto"
"Dorito"
"Tortilla chip"
"Cheese cracker"
"Potato chip"
"Applesauce"
"Peanut butter cup"
"Pickle")))
(defun normalize-state-number (state-number)
(declare (type integer state-number))
(the (integer 1 11)
(+ 1 (mod (- state-number 1) 11))))
(defun interpret-Snackfish (&optional (initial-code "" initial-code-supplied-p))
"Launches the Snackfish interpreter, contingently processing the INITIAL-CODE, if supplied, and repeatedly querying the user for a command sequence until a completely empty line is issued, consequently returning NIL."
(declare (type string initial-code))
(declare (type T initial-code-supplied-p))
(loop
with state-number of-type (integer 1 11) = 1
for first-cycle-p of-type boolean = T then NIL
for commands of-type string
= (if (and first-cycle-p initial-code-supplied-p)
initial-code
(progn
(format T "~&>> ")
(read-line *standard-input* NIL "")))
while (plusp (length commands))
do
(loop for token of-type character across commands do
(case token
(#\i (setf state-number (normalize-state-number (1+ state-number))))
(#\d (setf state-number (normalize-state-number (1- state-number))))
(#\s (setf state-number (normalize-state-number (* state-number state-number))))
(#\o (print (aref +SNACBIT-STATES+ (1- state-number))))
(otherwise (terpri))))))
Here is also an interpreter in Python by User:None1:
snacklist=['Peanut butter cracker', 'Cosmic brownie', 'Cheezit', 'Cheeto', 'Dorito', 'Tortilla chip', 'Cheese cracker', 'Potato chip', 'Applesauce', 'Peanut butter cup', 'Pickle']
import sys
code=sys.stdin.read()
x=0
for i in code:
if i=='i':
x=(x+1)%11
if i=='d':
x=(x-1)%11
if i=='s':
x=(x*x)%11
if i=='o':
print(snacklist[x])