Aktionen

Beatnik: Unterschied zwischen den Versionen

Aus exmediawiki

Zeile 36: Zeile 36:
  
 
==Stack==
 
==Stack==
  ein stack ist hierbei ein Speicher der Nummern zur späteren Nutzung für uns speichert...
+
see: https://en.wikipedia.org/wiki/Stack-oriented_programming
 +
 
 +
 
 +
  ein stack ist ein Stapel/Speicher der Nummern zur späteren Nutzung für uns speichert...
  
 
  zahlen können dem stack hinzugefügt werden < <code>Push</code>
 
  zahlen können dem stack hinzugefügt werden < <code>Push</code>

Version vom 19. September 2020, 14:31 Uhr

In 2000, Cliff Biffle created Beatnik.

Beatnik is a stack-based language that consists only of English words. Every word is assigned a numerical score that it would get in a game of Scrabble. (Scrabble enthusiasts, drop your pitchforks, there may be some words that go against the official Scrabble rules.) Then, the value of the score determines the function.


Beatnik is a simple stack-oriented esoteric programming language, by Cliff L. Biffle. A beatnik program consists of any sequence of English words; each word is assigned the score you would get for it in a Scrabble game. The value of the score determines what function is performed. Functions include pushing the score of the next word onto the stack, testing the stack and skipping forward or backward in the program and other stack operations.


The interpreter reads the words in the poem, ignoring punctuation and whitespace and newlines; some functions are one word, other functions have an argument (they are two-word functions). Two-word functions are described below in the form "5,n". This means both the word whose value is 5 and the next word (whose value is 'n') are read.



Scrabble Character 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 ---


Stack

see: https://en.wikipedia.org/wiki/Stack-oriented_programming


ein stack ist ein Stapel/Speicher der Nummern zur späteren Nutzung für uns speichert...
zahlen können dem stack hinzugefügt werden < Push
zahlen können vom Stack weggenommen werden < Pop


....Beatnik interpretiert Zahlen von 0-255.

Commands

Score Pseudo-Code Description German Translation
<5 NOOP Does nothing. The Beatnik Interpreter may mock you for your poor scoring, at its discretion. Tut nichts. Der Beatnik-Dolmetscher kann Sie nach eigenem Ermessen wegen Ihrer schlechten Punktzahl verspotten.
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. Schiebe den Wert des nächsten Wortes in den Stack.
6 pop() Pops the top number off the stack and discards it. Lösche (Pop) die oberste Zahl vom Stapel.
7 push(pop()+pop()) Adds the top two values on the stack together Addiert die obersten zwei Werte miteinander. Nimmt (Pop) die 2 dann vom Stapel und legt (Push) das Ergebnis dann oben auf den Stapel
8 push(input()) Input a character from the user and push its value on the stack. Waits for a keypress. Wartet auf UserEingabe eines Zeichens und legt (Push) diese dann oben auf den Stapel
9 print(pop()) Pop a number off the stack and output the corresponding ASCII character to the screen. Nimmt den obersten Wert vom Stapel und gibt dann den dazugehörigen ASCII-Wert aus.
10 push(pop()-pop()) Pop two numbers from the stack, subtract the first one popped from the second one popped, and push the result. Nehme die obersten 2 zahlen vom stack und subtrahiere die erste von der zweiten. Das Ergebnis wird zurück in den Stack gelegt.
11 a = pop(); b = pop(); push(a); push(b) Swap the top two values on the stack. Die obersten 2 Zahlen miteinander vertauschen
12 a = pop(); push(a); push(a) Duplicate the top value and pushes the value on top of the stack. Den obersten Wert kopieren und mit oben auf den Stapel legen.
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.) Nimmt (Pop) den obersten Wert vom Stapel und ermittel die Punktzahl des nächsten Wortes. Wenn die oberste Zahl eine 0 ist, dann nimm sie (Pop) vom Stabel. Gehe zum nächsten Wert in deinem Satz und zähle diesen Wert (beginnend am Wert selbst) dann nach vorne.
14,n if(top()!=0) jump(+n) Same as above, except skip if the value on the stack isn't zero. Nimmt (Pop) den obersten Wert vom Stapel und ermittel die Punktzahl des nächsten Wortes. Wenn die oberste Zahl keine 0 ist, dann nimm sie (Pop) vom Stabel. Gehe zum nächsten Wert in deinem Satz und zähle diesen Wert (beginnend am Wert selbst) dann nach vorne.
15,n if(top()==0) jump(-n) Skip back n words, if the value on the stack is zero. Wenn die oberste Zahl eine 0 ist, dann nehme sie (Pop) vom Stabel. Gehe zum nächsten Wert in deinem Satz und zähle diesen Wert (beginnend am Wert selbst) dann zurück.
16 if(top()!=0) jump(-n) Skip back if it's not zero. Wenn die oberste Zahl keine 0 ist, dann nehme sie (Pop) vom Stabel. Gehe zum nächsten Wert in deinem Satz und zähle diesen Wert (beginnend am Wert selbst) dann zurück.
17 exit() Stop the program. Das Programm enden
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. Tut nix
>23 Generates "Beatnik applause" for the programmer. Beatnik-Applaus für den Programmierer
  • Jeder andere Scrabble-Wert, der als Befehl interpretiert wird, ist ein No-Op.
  • Beachte, dass die Befehle, die den Werten 5, 13, 14, 15 und 16 entsprechen, jeweils ein zusätzliches Wort einlesen, den Wortwewrt als Parameter verwenden und ihn dann überspringen.
  • Ein Wert von weniger als 5 kann dazu führen, dass der Dolmetscher Dich wegen Deiner schlechten Scrabble-Fähigkeiten verspottet.
  • Bei einem Wert über 23 erhältst Du einen "Beatnik-Applaus".


Legende
Pseudo-code Meaning
NOOP Do nothing
pop() remove the value off the top of the stack, and return it
push(x) place x on the stack
print(x) print the character x
input() read a character from the user. Blocks until character is read.
; separates multiple statements. They are run in order.
if(expression) statement if and only if the expression is true, execute the statement
jump(x) move the reading location forward or backwards by x words.

Code-Example > Hello World!

Soars, larkspurs, rains.
Indistinctness.
Mario snarl (nurses, natures, rules...) sensuously retries goal.
Agribusinesses' costs par lain ropes (mopes) autos' cores.
Tuner ambitiousness.
Flit.
Dour entombment.
Legals' saner kinking lapse.
Nests glint.
Dread, tied futures, dourer usual tumor grunts alter atonal
  garb tries shouldered coins.
Taste a vast lustiness.
Stile stuns gad subgroup gram lanes.
Draftee insurer road: cuckold blunt, strut sunnier.
Rely enure pantheism: arty gain groups (genies, pan) titters, tattles, nears.
Bluffer tapes?  Idle diatom stooge!
Feted antes anklets ague?  Remit goiter gout!
Doubtless teared toed alohas will dull gangs' aerials' tails' sluices;
Gusset ends!  Gawkier halo!

Enter abstruse rested loser beer guy louts.
Curtain roams lasso weir lupus stunt.
Truant bears animate talon.  Entire torte originally timer.
Redo stilt gobs.

Utter centaurs;
Urgent stars;
Usurers (dilute);
Noses;
Bones;
Brig sonar graders;
Utensil silts;
Lazies.
Fret arson veterinary rows.

Atlas grunted: "Pates, slues, sulfuric manor liaising tines,
  trailers, rep... unfair!  Instant snots!"

Sled rested until eatery fail.
Ergs fortitude
  Indent spotter
Euros enter egg.
Curious tenures.
Torus cutlasses.
Sarong torso earns cruel lags it reeled.

Engineer: "Erase handbag -- unite ratification!"

oaring oaten donkeys unsold, surer rapid saltest tags
BUTTERED TIBIA LUGS REWIRING TOILETS
anion festers raring edit epilogues.
DIRGE ROTOR.
linnet oaring.
GORE BOOTIES.
Ironed goon lists tallest sublets --
Riots,
Raucous onset.

Ignobly, runners' diet anguishes sunrise loner.
Erode mob, slier switcher!
Loaners stilt drudge pearl atoll, risking hats' ends.

Rebind sitters.

Toga epistles -- crud lard.  (Pager purse dons souls.)

glob title a curio hired rites shed suds lade grease strut arctic revs toad
unless idlers rind stilt region land GERMICIDES SULTANA GUTS gill siting leans
nice spurs
tests gloves
roused asp

Holes!  Moles!  (Sores!)
Hygienists!  Scars!  (Asses!)
Smells spell rares.

Cubs instant sing in parse goodies.
Rosin.  Unhelpful sisal acres.  Slope told.
MALENESS PASTA LAB.  "Infirmary vine," rang illiterates (beans).
Rosin sours, insults truss abalones, nailed rules, helical atlases.
Dear remodeling stings mar rents.
Sunless shiner orb (silly idol.)
Clarity disses senna.
Vagabonds sauted; sloes performed gelds.
Alter post radial lip sectioning gums.
Saint Towellings.
Larger aeons telephone stolid char, pal!
Boats Dean forsook, rosters, tunas, terrariums -- united, traced.
Nude pagoda careens.

notes/links

https://tio.run/#beatnik

 * https://jaxenter.com/esoteric-languages-146286.html
 * https://tomassetti.me/discovering-arcane-world-esoteric-programming-languages/

scrabble-werte finden