beatnik interpreter
Project description
Beatnik
This python package contains functions for stack-based esoteric programming language: Beatnik
Description
Beatink is a stack-based esoteric programming language created by Cliff L. Biffle. This package contains each ACTION functions by the rules of beatnik, and build a stack to calculate the resulted output from the given text.
Scrabble letter values --- ABCDEFGHIJKLMNOPQRSTUVWXYZ --- 1: A---E---I--L-NO--RSTU----- 2: ---D--G------------------- 3: -BC---------M--P---------- 4: -----F-H-------------VW-Y- 5: ----------K--------------- 6: -------------------------- 7: -------------------------- 8: ---------J-------------X-- 9: -------------------------- 10: ----------------Q--------Z --- ABCDEFGHIJKLMNOPQRSTUVWXYZ ---
Action list
The following table describes the meaning of the ACTIONS (see above).
Score | Pseudo-Code | Description |
---|---|---|
<5 | NOOP | Does nothing. The Beatnik Interpreter may mock you for your poor scoring, at its discretion. |
5 n | push(n) | Finds the score of the next word and push it onto the stack. the actual word with 5 is then skipped. |
6 | pop(n) | Pops the top number off the stack and discards it. |
7 | push(pop()+pop()) | Adds the top two values on the stack together |
8 | push(input()) | Input a character from the user and push its value on the stack. Waits for a keypress. |
9 | print(pop()) | Pop a number off the stack and output the corresponding ASCII character to the screen. |
10 | push(pop()-pop()) | Pop two numbers from the stack, subtract the first one popped from the second one popped, and push the result. |
11 | a = pop(); b = pop(); push(a); push(b) | Swap the top two values on the stack. |
12 | a = pop(); push(a); push(a) | Duplicate the top value and pushes the value on top of the stack. |
13 n | if(top()==0) jump(+n) | Pop a number from the stack, and figure out the score of the next word. If the number from the stack is zero, skip ahead by n words, where n is the score of the next word. (The skipping is actually n+1 words, because the word scored to give us n is also skipped.) |
14 n | if(top()!=0) jump(+n) | Same as above, except skip if the value on the stack isn't zero. |
15 | if(top()==0) jump(-n) | Skip back n words, if the value on the stack is zero. |
16 | if(top()!=0) jump(-n) | Skip back if it's not zero. |
17 | exit() | Stop the program. |
18-23 | NOOP | Does nothing. However, the score is high enough that the Beatnik Interpreter will not mock you, unless it's had a really bad day. |
>23 | Generates "Beatnik applause" for the programmer. |
Installation
The Blend Modes package can be installed through pip:
pip install beatnik
Import
from beatnik import beatnik_simple
from beatnik import beatnik_stack
Use the example file beatnik_interact
Simple usage of this library
text = "this is a line of text"
beatnik.beatnik_simple(text,debug=True)
Step-by-step
preprocess text
text = "this is a line of text"
words = beatnik.preprocess(text)
scrabbling word
VALUE = []
for i in word:
value = beatnik.scrabble(i)
VALUE.append(value)
words
are list of words that before scrabble
running stack machine
beatnik.stack(words,VALUE,debug=False)
License
The Beatnik package is distributed under the MIT License (MIT). Please also take note of the licenses of the dependencies.
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
File details
Details for the file beatnik-1.0.tar.gz
.
File metadata
- Download URL: beatnik-1.0.tar.gz
- Upload date:
- Size: 5.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.7.4
File hashes
Algorithm | Hash digest | |
---|---|---|
SHA256 | 63add26bf0df584e35b30da9c30b9788cd345aad2634a593decd235b78db15af |
|
MD5 | 8bd49665e8d772f7c1586e83778d7bb1 |
|
BLAKE2b-256 | 0d92be9af39d795a88d961f7730fb4502b45c9c2cdcb9f91d6208f386269514c |