Programming in Beatnik

In this Notebook you can tokenize your text, compute its scrabble values and interpret it as Beatnik Code.

1. set variables (strings)

read your text into the machine and output again in the same way with the print command.

# paste your text in between the apostrophes ''' YOUR TEXT '''

text = '''
Man sagt, dass alle Übersetzungen nur für den Leser sind. Werke dienen nur der Hörerschaft. Oder? Kunstwerk: Übel. Wenn Dasein erste Dichterische ist, dann Leben genug für eines schlechte. Scheint grade genug: translate. Denn unentbehrlich, denn vertauschbar. Selbe, Gemeinten, selbe mit Kunstwerke ohne einander. Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue also Gottes sinn frage. bis hinreichend Leser erwägen, tongue teilt apodiktisch. Bild scheint einem Original. Oder sagt man, Übersetzer sollten mit Sinn überdies Übel Dasein, denn Grund gibt Gewissen genug unter Rücksicht dessen beiden. Bis hinreichend Leser erwägen, Bild gilt Übermittlung. Leben enthalten Leben oder sie Leben voraus. Erste entsprechend allen wirklich allen Kunstwerk weil sehr besteht genug, sagt man nirgends daher. Einer Augenblick unter Symphonie oder man will tongue Gewissen. Dasein bis fruchtbar gilt, die. Sollten Dasein translate. Allen sind Leser hinreichend genug. Werke stellen keinem genug, dass nur nicht Kunst. Bis hinreichend Leser erwägen, tongue teilt apodiktisch. Bild scheint einem Original. Einer Rücksicht seine Aussage Grade besteht. In der Bild forderte Bild Form. Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue, also Gottes sinn frage. Man sagt, dass alle Übersetzungen nur für den Leser sind. Genug, denn gegenüber gibt es eines: Dichtung. tongue teilt doppelsinnig, tongue teilt mutter tongue, macht übel oder grundsätzlich nicht. translate.
'''
print("\033[1m" + 'Text: ' + "\033[0m", text)
Text:  
Man sagt, dass alle Übersetzungen nur für den Leser sind. Werke dienen nur der Hörerschaft. Oder? Kunstwerk: Übel. Wenn Dasein erste Dichterische ist, dann Leben genug für eines schlechte. Scheint grade genug: translate. Denn unentbehrlich, denn vertauschbar. Selbe, Gemeinten, selbe mit Kunstwerke ohne einander. Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue also Gottes sinn frage. bis hinreichend Leser erwägen, tongue teilt apodiktisch. Bild scheint einem Original. Oder sagt man, Übersetzer sollten mit Sinn überdies Übel Dasein, denn Grund gibt Gewissen genug unter Rücksicht dessen beiden. Bis hinreichend Leser erwägen, Bild gilt Übermittlung. Leben enthalten Leben oder sie Leben voraus. Erste entsprechend allen wirklich allen Kunstwerk weil sehr besteht genug, sagt man nirgends daher. Einer Augenblick unter Symphonie oder man will tongue Gewissen. Dasein bis fruchtbar gilt, die. Sollten Dasein translate. Allen sind Leser hinreichend genug. Werke stellen keinem genug, dass nur nicht Kunst. Bis hinreichend Leser erwägen, tongue teilt apodiktisch. Bild scheint einem Original. Einer Rücksicht seine Aussage Grade besteht. In der Bild forderte Bild Form. Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue, also Gottes sinn frage. Man sagt, dass alle Übersetzungen nur für den Leser sind. Genug, denn gegenüber gibt es eines: Dichtung. tongue teilt doppelsinnig, tongue teilt mutter tongue, macht übel oder grundsätzlich nicht. translate.

2. replace Umlaute

import re
text=text.replace("ä","ae").replace("Ä","Ae").replace("ö","oe").replace("Ö","oe").replace("ü","ue").replace("Ü","ue")
print(text)
Man sagt, dass alle uebersetzungen nur fuer den Leser sind. Werke dienen nur der Hoererschaft. Oder? Kunstwerk: uebel. Wenn Dasein erste Dichterische ist, dann Leben genug fuer eines schlechte. Scheint grade genug: translate. Denn unentbehrlich, denn vertauschbar. Selbe, Gemeinten, selbe mit Kunstwerke ohne einander. Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue also Gottes sinn frage. bis hinreichend Leser erwaegen, tongue teilt apodiktisch. Bild scheint einem Original. Oder sagt man, uebersetzer sollten mit Sinn ueberdies uebel Dasein, denn Grund gibt Gewissen genug unter Ruecksicht dessen beiden. Bis hinreichend Leser erwaegen, Bild gilt uebermittlung. Leben enthalten Leben oder sie Leben voraus. Erste entsprechend allen wirklich allen Kunstwerk weil sehr besteht genug, sagt man nirgends daher. Einer Augenblick unter Symphonie oder man will tongue Gewissen. Dasein bis fruchtbar gilt, die. Sollten Dasein translate. Allen sind Leser hinreichend genug. Werke stellen keinem genug, dass nur nicht Kunst. Bis hinreichend Leser erwaegen, tongue teilt apodiktisch. Bild scheint einem Original. Einer Ruecksicht seine Aussage Grade besteht. In der Bild forderte Bild Form. Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue, also Gottes sinn frage. Man sagt, dass alle uebersetzungen nur fuer den Leser sind. Genug, denn gegenueber gibt es eines: Dichtung. tongue teilt doppelsinnig, tongue teilt mutter tongue, macht uebel oder grundsaetzlich nicht. translate.

3. remove punctations and digits

# Our dictionary (https://en.wikipedia.org/wiki/Associative_array) SCRABBLE in part 6. 
# contains only alphabetical characters, so we will remove all digits and punctuations.

remove_digits = str.maketrans('', '', '0123456789')
text = text.translate(remove_digits)

# import necessary library
import re
textt = re.sub(r'[^\w\s]','',text)
print("\033[1m" + 'Text without punctations: ' + "\033[0m", textt)
Text without punctations:  
Man sagt dass alle uebersetzungen nur fuer den Leser sind Werke dienen nur der Hoererschaft Oder Kunstwerk uebel Wenn Dasein erste Dichterische ist dann Leben genug fuer eines schlechte Scheint grade genug translate Denn unentbehrlich denn vertauschbar Selbe Gemeinten selbe mit Kunstwerke ohne einander Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue also Gottes sinn frage bis hinreichend Leser erwaegen tongue teilt apodiktisch Bild scheint einem Original Oder sagt man uebersetzer sollten mit Sinn ueberdies uebel Dasein denn Grund gibt Gewissen genug unter Ruecksicht dessen beiden Bis hinreichend Leser erwaegen Bild gilt uebermittlung Leben enthalten Leben oder sie Leben voraus Erste entsprechend allen wirklich allen Kunstwerk weil sehr besteht genug sagt man nirgends daher Einer Augenblick unter Symphonie oder man will tongue Gewissen Dasein bis fruchtbar gilt die Sollten Dasein translate Allen sind Leser hinreichend genug Werke stellen keinem genug dass nur nicht Kunst Bis hinreichend Leser erwaegen tongue teilt apodiktisch Bild scheint einem Original Einer Ruecksicht seine Aussage Grade besteht In der Bild forderte Bild Form Leser hinreichend bis wesentliche Dasein besteht bis geheimnisvolle tongue also Gottes sinn frage Man sagt dass alle uebersetzungen nur fuer den Leser sind Genug denn gegenueber gibt es eines Dichtung tongue teilt doppelsinnig tongue teilt mutter tongue macht uebel oder grundsaetzlich nicht translate

4. tokenize it!

words = textt.split()
print("\033[1m" + 'Tokenized Text: ' + "\033[0m", words)
Tokenized Text:  ['Man', 'sagt', 'dass', 'alle', 'uebersetzungen', 'nur', 'fuer', 'den', 'Leser', 'sind', 'Werke', 'dienen', 'nur', 'der', 'Hoererschaft', 'Oder', 'Kunstwerk', 'uebel', 'Wenn', 'Dasein', 'erste', 'Dichterische', 'ist', 'dann', 'Leben', 'genug', 'fuer', 'eines', 'schlechte', 'Scheint', 'grade', 'genug', 'translate', 'Denn', 'unentbehrlich', 'denn', 'vertauschbar', 'Selbe', 'Gemeinten', 'selbe', 'mit', 'Kunstwerke', 'ohne', 'einander', 'Leser', 'hinreichend', 'bis', 'wesentliche', 'Dasein', 'besteht', 'bis', 'geheimnisvolle', 'tongue', 'also', 'Gottes', 'sinn', 'frage', 'bis', 'hinreichend', 'Leser', 'erwaegen', 'tongue', 'teilt', 'apodiktisch', 'Bild', 'scheint', 'einem', 'Original', 'Oder', 'sagt', 'man', 'uebersetzer', 'sollten', 'mit', 'Sinn', 'ueberdies', 'uebel', 'Dasein', 'denn', 'Grund', 'gibt', 'Gewissen', 'genug', 'unter', 'Ruecksicht', 'dessen', 'beiden', 'Bis', 'hinreichend', 'Leser', 'erwaegen', 'Bild', 'gilt', 'uebermittlung', 'Leben', 'enthalten', 'Leben', 'oder', 'sie', 'Leben', 'voraus', 'Erste', 'entsprechend', 'allen', 'wirklich', 'allen', 'Kunstwerk', 'weil', 'sehr', 'besteht', 'genug', 'sagt', 'man', 'nirgends', 'daher', 'Einer', 'Augenblick', 'unter', 'Symphonie', 'oder', 'man', 'will', 'tongue', 'Gewissen', 'Dasein', 'bis', 'fruchtbar', 'gilt', 'die', 'Sollten', 'Dasein', 'translate', 'Allen', 'sind', 'Leser', 'hinreichend', 'genug', 'Werke', 'stellen', 'keinem', 'genug', 'dass', 'nur', 'nicht', 'Kunst', 'Bis', 'hinreichend', 'Leser', 'erwaegen', 'tongue', 'teilt', 'apodiktisch', 'Bild', 'scheint', 'einem', 'Original', 'Einer', 'Ruecksicht', 'seine', 'Aussage', 'Grade', 'besteht', 'In', 'der', 'Bild', 'forderte', 'Bild', 'Form', 'Leser', 'hinreichend', 'bis', 'wesentliche', 'Dasein', 'besteht', 'bis', 'geheimnisvolle', 'tongue', 'also', 'Gottes', 'sinn', 'frage', 'Man', 'sagt', 'dass', 'alle', 'uebersetzungen', 'nur', 'fuer', 'den', 'Leser', 'sind', 'Genug', 'denn', 'gegenueber', 'gibt', 'es', 'eines', 'Dichtung', 'tongue', 'teilt', 'doppelsinnig', 'tongue', 'teilt', 'mutter', 'tongue', 'macht', 'uebel', 'oder', 'grundsaetzlich', 'nicht', 'translate']

5. set scrabble + beatnik-function dictionaries

SCRABBLE = {
    'A': 1,
    'B': 3,
    'C': 3,
    'D': 2,
    'E': 1,
    'F': 4,
    'G': 2,
    'H': 4,
    'I': 1,
    'J': 8,
    'K': 5,
    'L': 1,
    'M': 3,
    'N': 1,
    'O': 1,
    'P': 3,
    'Q': 10,
    'R': 1,
    'S': 1,
    'T': 1,
    'U': 1,
    'V': 4,
    'W': 4,
    'X': 8,
    'Y': 4,
    'Z': 10
}

ACTION = {
    5: 'PUSH',
    6: 'DISCARD',
    7: 'ADD',
    8: 'INPUT',
    9: 'OUTPUT',
    10: 'SUBTRACT',
    11: 'SWAP',
    12: 'DUP',
    13: 'SKIP_AHEAD_ZERO',
    14: 'SKIP_AHEAD_NONZERO',
    15: 'SKIP_BACK_ZERO',
    16: 'SKIP_BACK_NONZERO',
    17: 'STOP',
}

# counting-function...
def scrabble(word):
    acc = 0
    for c in word.upper():
        # check if c exists in scrabble (otherwise we'll get an error)
        if c in SCRABBLE:
            acc += SCRABBLE[c]
    return acc

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.

7. beatnik interpreter

Thanks @Ting!

The function beatnik() below executes the program (your text) which is defined in the VALUE above.

def PUSH(index):
    #exception for ArrayIndexOutOfBoundary
    index+=1 
    if(index < len(VALUE)):
        stack.append(VALUE[index]%256)
    return index
def DISCARD(index):
    if(len(stack) > 0):
        stack.pop()
    return index
def ADD(index):
    #add only when there are more than two elements
    if(len(stack)>=2):
        a = stack.pop()
        b = stack.pop()
        stack.append(a+b)
    return index
def INPUT(index):
    stack.append(scrabble(input("input your own word:")))
    return index
def OUTPUT(index):
    output_ = ''
    #output only when there are at least 1 element
    if(len(stack)>0):
        output_ = chr(abs(stack.pop()%256))
    return index, output_
def SUBTRACT(index):
    #subtract only when there are more than two elements
    if(len(stack)>=2):
        a = stack.pop()
        b = stack.pop()
        stack.append(b-a)
    return index
def SWAP(index):
    #swap only when there are more than two elements
    if(len(stack)>=2):
        a = stack.pop()
        b = stack.pop()
        stack.append(a)
        stack.append(b)
    return index
def DUP(index):
    #duplicate only when there are at least 1 element
    if(len(stack)>=1):
        a = stack.pop()
        stack.append(a)
        stack.append(a)
    return index
def SKIP_AHEAD_ZERO(index):
    a = None
    if(len(stack)!=0):
        a = stack.pop()
    
    index += 1
    #exception for ArrayIndexOutOfBoundary
    if(index < len(VALUE)):
        dist = VALUE[index]
    else:
        dist = 0
    
    if(a == 0):
        return index + dist
    else:
        return index
def SKIP_AHEAD_NONZERO(index):
    a = None
    if(len(stack)!=0):
        a = stack.pop()
        
    index+=1
    #exception for ArrayIndexOutOfBoundary
    if(index < len(VALUE)):
        dist = VALUE[index]
    else:
        dist = 0
    
    if(a != 0):
        return index + dist
    else:
        return index
def SKIP_BACK_ZERO(index):
    a = None
    if(len(stack)!=0):
        a = stack.pop()
    
    #exception for ArrayIndexOutOfBoundary
    if(index+1 < len(VALUE)):
        dist = VALUE[index+1]
    else:
        dist = 0
    
    if(a == 0):
        return index - dist
    else:
        return index
def SKIP_BACK_NONZERO(index):
    a = None
    if(len(stack)!=0):
        a = stack.pop()
    
    #exception for ArrayIndexOutOfBoundary
    if(index+1 < len(VALUE)):
        dist = VALUE[index+1]
    else:
        dist = 0
    
    if(a != 0):
        return index - dist
    else:
        return index
def STOP(index):
    return len(VALUE)

            
def beatnik(debug=False):
    index, index_for_print = 0, 0 
    length = len(VALUE)
    
    while(index < length):
        output = '' 
        n = VALUE[index]
        
        #printing debug line
        if(debug):
            print('{:<4} {:<18} {:>2} >> \033[1m{:<18}\033[0m'.format(index_for_print,words[index_for_print],VALUE[index_for_print],ACTION.get(n, 'NOP')),end='')
       
        if(n>=5 and n<= 17):        
                if(n==5):
                    index = PUSH(index)
                    if(debug):
                        print('\n{:<4} {:<18} {:>2} >> {:<18}'.format(index,words[index],VALUE[index],"Value Pushed"),end='')
                if(n==6):
                    index = DISCARD(index)
                if(n==7):
                    index = ADD(index)
                if(n==8):
                    index = INPUT(index)
                if(n==9):
                    index, output = OUTPUT(index)
                if(n==10):
                    index = SUBTRACT(index)
                if(n==11):
                    index = SWAP(index)
                if(n==12):
                    index = DUP(index)
                if(n==13):
                    index = SKIP_AHEAD_ZERO(index)
                    if(index_for_print!=index-1 and debug):
                        for i in range(index_for_print+1,index+1):
                            if(i >= length):
                                break
                            print('\n{:<4} {:<18} {:>2} >> {:<18}'.format(i,words[i],VALUE[i],"Value Skipped"),end='')
                if(n==14):
                    index = SKIP_AHEAD_NONZERO(index)
                    if(index_for_print!=index-1 and debug):
                        for i in range(index_for_print+1,index+1):
                            if(i >= length):
                                break
                            print('\n{:<4} {:<18} {:>2} >> {:<18}'.format(i,words[i],VALUE[i],"Value Skipped"),end='')
                if(n==15):
                    index = SKIP_BACK_ZERO(index)
                    if(index_for_print!=index and debug):
                        for i in reversed(range(index,index_for_print)):
                            if(i < 0):
                                break
                            print('\n{:<4} {:<18} {:>2} >> {:<18}'.format(i,words[i],VALUE[i],"Value Skipped"),end='')
                if(n==16):
                    index = SKIP_BACK_NONZERO(index)
                    if(index_for_print!=index and debug):
                        for i in reversed(range(index,index_for_print)):
                            if(i < 0):
                                break
                            print('\n{:<4} {:<18} {:>2} >> {:<18}'.format(i,words[i],VALUE[i],"Value Skipped"),end='')

                if(n==17):
                    index = STOP(index)   
                #moving to next index
                index += 1
        else:
            #non
            index += 1

        #save last index    
        index_for_print = index
       
        if(debug):
            print(" >> ",stack)
        
        # check if we have an output (9), then print it
        if output != '' and debug:
            print("\033[1moutput: \033[0m" + output + "\n")
        else:
            print(output, end='')
    print()

8. run interpreter

#create dynamic stack                
stack = []

print('output of your text:\n')
#execute

### debug execution
### delete or add a "#" below to print all the process### 
beatnik(True)

# normal execution
beatnik()
output of your text:

0    Man                 5 >> PUSH              
1    sagt                5 >> Value Pushed       >>  [5]
2    dass                5 >> PUSH              
3    alle                4 >> Value Pushed       >>  [5, 4]
4    uebersetzungen     26 >> NOP                >>  [5, 4]
5    nur                 3 >> NOP                >>  [5, 4]
6    fuer                7 >> ADD                >>  [9]
7    den                 4 >> NOP                >>  [9]
8    Leser               5 >> PUSH              
9    sind                5 >> Value Pushed       >>  [9, 5]
10   Werke              12 >> DUP                >>  [9, 5, 5]
11   dienen              7 >> ADD                >>  [9, 10]
12   nur                 3 >> NOP                >>  [9, 10]
13   der                 4 >> NOP                >>  [9, 10]
14   Hoererschaft       23 >> NOP                >>  [9, 10]
15   Oder                5 >> PUSH              
16   Kunstwerk          20 >> Value Pushed       >>  [9, 10, 20]
17   uebel               7 >> ADD                >>  [9, 30]
18   Wenn                7 >> ADD                >>  [39]
19   Dasein              7 >> ADD                >>  [39]
20   erste               5 >> PUSH              
21   Dichterische       23 >> Value Pushed       >>  [39, 23]
22   ist                 3 >> NOP                >>  [39, 23]
23   dann                5 >> PUSH              
24   Leben               7 >> Value Pushed       >>  [39, 23, 7]
25   genug               7 >> ADD                >>  [39, 30]
26   fuer                7 >> ADD                >>  [69]
27   eines               5 >> PUSH              
28   schlechte          19 >> Value Pushed       >>  [69, 19]
29   Scheint            12 >> DUP                >>  [69, 19, 19]
30   grade               7 >> ADD                >>  [69, 38]
31   genug               7 >> ADD                >>  [107]
32   translate           9 >> OUTPUT             >>  []
output: k

33   Denn                5 >> PUSH              
34   unentbehrlich      23 >> Value Pushed       >>  [23]
35   denn                5 >> PUSH              
36   vertauschbar       22 >> Value Pushed       >>  [23, 22]
37   Selbe               7 >> ADD                >>  [45]
38   Gemeinten          12 >> DUP                >>  [45, 45]
39   selbe               7 >> ADD                >>  [90]
40   mit                 5 >> PUSH              
41   Kunstwerke         21 >> Value Pushed       >>  [90, 21]
42   ohne                7 >> ADD                >>  [111]
43   einander            9 >> OUTPUT             >>  []
output: o

44   Leser               5 >> PUSH              
45   hinreichend        20 >> Value Pushed       >>  [20]
46   bis                 5 >> PUSH              
47   wesentliche        19 >> Value Pushed       >>  [20, 19]
48   Dasein              7 >> ADD                >>  [39]
49   besteht            12 >> DUP                >>  [39, 39]
50   bis                 5 >> PUSH              
51   geheimnisvolle     23 >> Value Pushed       >>  [39, 39, 23]
52   tongue              7 >> ADD                >>  [39, 62]
53   also                4 >> NOP                >>  [39, 62]
54   Gottes              7 >> ADD                >>  [101]
55   sinn                4 >> NOP                >>  [101]
56   frage               9 >> OUTPUT             >>  []
output: e

57   bis                 5 >> PUSH              
58   hinreichend        20 >> Value Pushed       >>  [20]
59   Leser               5 >> PUSH              
60   erwaegen           12 >> Value Pushed       >>  [20, 12]
61   tongue              7 >> ADD                >>  [32]
62   teilt               5 >> PUSH              
63   apodiktisch        23 >> Value Pushed       >>  [32, 23]
64   Bild                7 >> ADD                >>  [55]
65   scheint            12 >> DUP                >>  [55, 55]
66   einem               7 >> ADD                >>  [110]
67   Original            9 >> OUTPUT             >>  []
output: n

68   Oder                5 >> PUSH              
69   sagt                5 >> Value Pushed       >>  [5]
70   man                 5 >> PUSH              
71   uebersetzer        22 >> Value Pushed       >>  [5, 22]
72   sollten             7 >> ADD                >>  [27]
73   mit                 5 >> PUSH              
74   Sinn                4 >> Value Pushed       >>  [27, 4]
75   ueberdies          12 >> DUP                >>  [27, 4, 4]
76   uebel               7 >> ADD                >>  [27, 8]
77   Dasein              7 >> ADD                >>  [35]
78   denn                5 >> PUSH              
79   Grund               7 >> Value Pushed       >>  [35, 7]
80   gibt                7 >> ADD                >>  [42]
81   Gewissen           12 >> DUP                >>  [42, 42]
82   genug               7 >> ADD                >>  [84]
83   unter               5 >> PUSH              
84   Ruecksicht         21 >> Value Pushed       >>  [84, 21]
85   dessen              7 >> ADD                >>  [105]
86   beiden              9 >> OUTPUT             >>  []
output: i

87   Bis                 5 >> PUSH              
88   hinreichend        20 >> Value Pushed       >>  [20]
89   Leser               5 >> PUSH              
90   erwaegen           12 >> Value Pushed       >>  [20, 12]
91   Bild                7 >> ADD                >>  [32]
92   gilt                5 >> PUSH              
93   uebermittlung      18 >> Value Pushed       >>  [32, 18]
94   Leben               7 >> ADD                >>  [50]
95   enthalten          12 >> DUP                >>  [50, 50]
96   Leben               7 >> ADD                >>  [100]
97   oder                5 >> PUSH              
98   sie                 3 >> Value Pushed       >>  [100, 3]
99   Leben               7 >> ADD                >>  [103]
100  voraus              9 >> OUTPUT             >>  []
output: g

101  Erste               5 >> PUSH              
102  entsprechend       20 >> Value Pushed       >>  [20]
103  allen               5 >> PUSH              
104  wirklich           20 >> Value Pushed       >>  [20, 20]
105  allen               5 >> PUSH              
106  Kunstwerk          20 >> Value Pushed       >>  [20, 20, 20]
107  weil                7 >> ADD                >>  [20, 40]
108  sehr                7 >> ADD                >>  [60]
109  besteht            12 >> DUP                >>  [60, 60]
110  genug               7 >> ADD                >>  [120]
111  sagt                5 >> PUSH              
112  man                 5 >> Value Pushed       >>  [120, 5]
113  nirgends           10 >> SUBTRACT           >>  [115]
114  daher               9 >> OUTPUT             >>  []
output: s

115  Einer               5 >> PUSH              
116  Augenblick         19 >> Value Pushed       >>  [19]
117  unter               5 >> PUSH              
118  Symphonie          19 >> Value Pushed       >>  [19, 19]
119  oder                5 >> PUSH              
120  man                 5 >> Value Pushed       >>  [19, 19, 5]
121  will                7 >> ADD                >>  [19, 24]
122  tongue              7 >> ADD                >>  [43]
123  Gewissen           12 >> DUP                >>  [43, 43]
124  Dasein              7 >> ADD                >>  [86]
125  bis                 5 >> PUSH              
126  fruchtbar          19 >> Value Pushed       >>  [86, 19]
127  gilt                5 >> PUSH              
128  die                 4 >> Value Pushed       >>  [86, 19, 4]
129  Sollten             7 >> ADD                >>  [86, 23]
130  Dasein              7 >> ADD                >>  [109]
131  translate           9 >> OUTPUT             >>  []
output: m

132  Allen               5 >> PUSH              
133  sind                5 >> Value Pushed       >>  [5]
134  Leser               5 >> PUSH              
135  hinreichend        20 >> Value Pushed       >>  [5, 20]
136  genug               7 >> ADD                >>  [25]
137  Werke              12 >> DUP                >>  [25, 25]
138  stellen             7 >> ADD                >>  [50]
139  keinem             12 >> DUP                >>  [50, 50]
140  genug               7 >> ADD                >>  [100]
141  dass                5 >> PUSH              
142  nur                 3 >> Value Pushed       >>  [100, 3]
143  nicht              10 >> SUBTRACT           >>  [97]
144  Kunst               9 >> OUTPUT             >>  []
output: a

145  Bis                 5 >> PUSH              
146  hinreichend        20 >> Value Pushed       >>  [20]
147  Leser               5 >> PUSH              
148  erwaegen           12 >> Value Pushed       >>  [20, 12]
149  tongue              7 >> ADD                >>  [32]
150  teilt               5 >> PUSH              
151  apodiktisch        23 >> Value Pushed       >>  [32, 23]
152  Bild                7 >> ADD                >>  [55]
153  scheint            12 >> DUP                >>  [55, 55]
154  einem               7 >> ADD                >>  [110]
155  Original            9 >> OUTPUT             >>  []
output: n

156  Einer               5 >> PUSH              
157  Ruecksicht         21 >> Value Pushed       >>  [21]
158  seine               5 >> PUSH              
159  Aussage             8 >> Value Pushed       >>  [21, 8]
160  Grade               7 >> ADD                >>  [29]
161  besteht            12 >> DUP                >>  [29, 29]
162  In                  2 >> NOP                >>  [29, 29]
163  der                 4 >> NOP                >>  [29, 29]
164  Bild                7 >> ADD                >>  [58]
165  forderte           12 >> DUP                >>  [58, 58]
166  Bild                7 >> ADD                >>  [116]
167  Form                9 >> OUTPUT             >>  []
output: t

168  Leser               5 >> PUSH              
169  hinreichend        20 >> Value Pushed       >>  [20]
170  bis                 5 >> PUSH              
171  wesentliche        19 >> Value Pushed       >>  [20, 19]
172  Dasein              7 >> ADD                >>  [39]
173  besteht            12 >> DUP                >>  [39, 39]
174  bis                 5 >> PUSH              
175  geheimnisvolle     23 >> Value Pushed       >>  [39, 39, 23]
176  tongue              7 >> ADD                >>  [39, 62]
177  also                4 >> NOP                >>  [39, 62]
178  Gottes              7 >> ADD                >>  [101]
179  sinn                4 >> NOP                >>  [101]
180  frage               9 >> OUTPUT             >>  []
output: e

181  Man                 5 >> PUSH              
182  sagt                5 >> Value Pushed       >>  [5]
183  dass                5 >> PUSH              
184  alle                4 >> Value Pushed       >>  [5, 4]
185  uebersetzungen     26 >> NOP                >>  [5, 4]
186  nur                 3 >> NOP                >>  [5, 4]
187  fuer                7 >> ADD                >>  [9]
188  den                 4 >> NOP                >>  [9]
189  Leser               5 >> PUSH              
190  sind                5 >> Value Pushed       >>  [9, 5]
191  Genug               7 >> ADD                >>  [14]
192  denn                5 >> PUSH              
193  gegenueber         14 >> Value Pushed       >>  [14, 14]
194  gibt                7 >> ADD                >>  [28]
195  es                  2 >> NOP                >>  [28]
196  eines               5 >> PUSH              
197  Dichtung           15 >> Value Pushed       >>  [28, 15]
198  tongue              7 >> ADD                >>  [43]
199  teilt               5 >> PUSH              
200  doppelsinnig       18 >> Value Pushed       >>  [43, 18]
201  tongue              7 >> ADD                >>  [61]
202  teilt               5 >> PUSH              
203  mutter              8 >> Value Pushed       >>  [61, 8]
204  tongue              7 >> ADD                >>  [69]
205  macht              12 >> DUP                >>  [69, 69]
206  uebel               7 >> ADD                >>  [138]
207  oder                5 >> PUSH              
208  grundsaetzlich     30 >> Value Pushed       >>  [138, 30]
209  nicht              10 >> SUBTRACT           >>  [108]
210  translate           9 >> OUTPUT             >>  []
output: l


koenigsmantel

9. appendix

''' Helper function to convert a target string into target ascii values. '''

target = 'Hello World!'
target_ascii = []
for i in range(len(target)):
    target_ascii.append(ord(target[i]))
    print(target[i], ' = ', target_ascii[i])    
H  =  72
e  =  101
l  =  108
l  =  108
o  =  111
   =  32
W  =  87
o  =  111
r  =  114
l  =  108
d  =  100
!  =  33

example of a jump (with skip)

example of a jump