Snack+

From Esolang
Jump to navigation Jump to search

Snack+ is SNACBIT based and a derivative of HQ9+

Command

Command Description
S Output the current snack
n Output the current snack
a Output the current snack
c Output the current snack
k Output the current snack
+ Increment the current snack, wrapping around at the upper edge

Examples

Sequential Printing

This program prints all states returns to the first one, which is again printed for endeictic purposes:

S+S+S+S+S+S+S+S+S+S+S+S+

Interpreter

An attempt of providing an interpreter in Common Lisp is offered:

(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 interpret-Snack+ (code)
  (declare (type string code))
  (loop
    with state-number of-type (integer 0 10) = 0
    for  token of-type character across code
    if (find token "Snack" :test #'char=) do
      (print (aref +SNACBIT-STATES+ state-number))
    else if (char= token #\+) do
      (setf state-number
        (mod (1+ state-number) 11))
    else do
      (error "Unrecognized character: ~s." token)))

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']
code=input()
x=0
for i in code:
    if i in "Snack":
        print(snacklist[x])
    if i=="+":
        x=(x+1)%11

And an interpreter in C++:

#include<string>
#include<iostream>
using namespace std;
string snacklist[]={"Peanut butter cracker", "Cosmic brownie", "Cheezit", "Cheeto", "Dorito", "Tortilla chip", "Cheese cracker", "Potato chip", "Applesauce", "Peanut butter cup", "Pickle"};
int main(){
	string code;
	getline(cin,code);
	int x=0;
	for(int i=0;i<code.size();i++){
		if(code[i]=='S'||i=='n'||i=='a'||i=='c'||i=='k'){
			cout<<snacklist[x]<<endl;
		}
		if(code[i]=='+'){
			x=(x+1)%11;
		}
	}
	return 0;
}