CoffeeLang
Jump to navigation
Jump to search
CoffeeLang An Esoteric Two-Cup Coffee-Themed Stack Language Invented by Harshil Thakur, June 2025
Introduction
- BeanLang is an esoteric programming language inspired by the ritual of late-night coding fueled by coffee. Its core model consists of two unbounded stacks, imaginatively called Cup 1 and Cup 2, which mirror the idea of a double-shot coffee machine—brewing separate data “shots” side by side. Each instruction in the language is named after a coffee drink or ingredient, turning otherwise mundane stack operations into playful puns. By juggling two cups of data instead of a single stack, BeanLang makes complex pointer gymnastics unnecessary and keeps your logic as fresh as your next espresso.
Commands
- BeanLang’s 14 commands fall into five conceptual categories. In every command name, a suffix of ₁ or ₂ targets Cup 1 or Cup 2; otherwise the command naturally involves both cups.
Stack Manipulation
- Espresso₁/₂ pushes the integer 1 onto the top of Cup 1 or Cup 2, respectively, providing your basic “coffee shot” of data.
- Cappuccino₁/₂ duplicates the topmost value in the chosen cup, so you can reuse a shot without consuming it.
- Ristretto₁/₂ pops and discards the top value from Cup 1 or Cup 2, acting as a quick clean-up of unwanted beans.
Arithmetic Operations
- Americano pops one value from Cup 1 and one from Cup 2, sums them, and pushes the result back into Cup 1—ideal for both addition and (when Cup 2 holds 1) for subtraction.
- LatteMacchiato pops one value from each cup, multiplies them, and pushes the product into Cup 2, enabling more advanced numeric routines.
Input/Output
- Mocha₁/₂ pops the top value from the specified cup and prints it as the corresponding Unicode character.
- Cortado₁/₂ pops the top value and prints its decimal digits, making it the go-to for numeric output.
- Drip₁/₂ reads one integer from standard input and pushes it onto Cup 1 or Cup 2, respectively, for interactive programs.
Control Flow
- Milk₁/₂ pops the top value x from the chosen cup; if x equals 0, it skips the very next instruction, providing a simple zero-check.
- Sugar <label> performs an unconditional jump to the label `#<label>:` anywhere in the program.
- <label>: defines a jump target for Sugar, marking positions for loops and branches.
Cross-Cup Transfers
- Pour transfers the top bean from one cup to the other (pop one cup → push into its partner), enabling you to shuffle values between the two stacks without arithmetic.
- Foam swaps the top values of Cup 1 and Cup 2 in a single instruction, handy for reordering two adjacent data cells.
Computational Class
- BeanLang is Turing-complete, meaning it can simulate any Turing machine. A direct mapping to Brainfuck (BF) illustrates this completeness:
- “+” / “–” (cell increments/decrements):
- In BF, `+` increments the current tape cell. In BeanLang, you push 1 into Cup 1 via Espresso₁ and then run Americano (with Cup 2 holding 1) to add 1. To subtract, simply interpret Cup 2 = 1 as a negative decrement, or swap signage by keeping Cup 2 = −1.
- “>” / “<” (move tape head):
- Treat Cup 1’s top as the current BF cell. To move right, Pour that value into Cup 2, then Pour or Foam from Cup 2 back into Cup 1 the next saved cell. Reverse this sequence to move left, effectively shuttling your tape head.
- “.” / “,” (I/O):
- BF’s `.` outputs a character; BeanLang’s Mocha₁ does the same. BF’s `,` reads a byte; BeanLang’s Drip₁ reads an integer into Cup 1.
- “[” / “]” (loops):
- BF loops while the current cell ≠ 0. BeanLang implements a `while (Cup1 ≠ 0)` loop with:
#loop: Milk1 # pop top; if zero, skip next Sugar end # jump to end …loop body… Sugar loop # unconditional jump back #end:
Example Programs
Hello World
This program pushes each ASCII code for “Hello, World!\n” into Cup 1 and uses Mocha₁ to print:
HOT // Build Cup2 = 1 for all subsequent Americano operations Espresso2 // Cup2 = [1]
// “H” (72) Espresso1 // Cup1 = [1], Cup2 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64] Espresso1 // Cup1 = [1,64] Americano // Cup1 = [65] Espresso1 // Cup1 = [1,65] Americano // Cup1 = [66] Espresso1 // Cup1 = [1,66] Americano // Cup1 = [67] Espresso1 // Cup1 = [1,67] Americano // Cup1 = [68] Espresso1 // Cup1 = [1,68] Americano // Cup1 = [69] Espresso1 // Cup1 = [1,69] Americano // Cup1 = [70] Espresso1 // Cup1 = [1,70] Americano // Cup1 = [71] Espresso1 // Cup1 = [1,71] Americano // Cup1 = [72] Mocha1 // prints “H”
// “e” (101) // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 64 by doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64], Cup2 = []
// Now increment from 64 to 101 (37 steps): Espresso1; Americano; Espresso2 // 65 Espresso1; Americano; Espresso2 // 66 Espresso1; Americano; Espresso2 // 67 Espresso1; Americano; Espresso2 // 68 Espresso1; Americano; Espresso2 // 69 Espresso1; Americano; Espresso2 // 70 Espresso1; Americano; Espresso2 // 71 Espresso1; Americano; Espresso2 // 72 Espresso1; Americano; Espresso2 // 73 Espresso1; Americano; Espresso2 // 74 Espresso1; Americano; Espresso2 // 75 Espresso1; Americano; Espresso2 // 76 Espresso1; Americano; Espresso2 // 77 Espresso1; Americano; Espresso2 // 78 Espresso1; Americano; Espresso2 // 79 Espresso1; Americano; Espresso2 // 80 Espresso1; Americano; Espresso2 // 81 Espresso1; Americano; Espresso2 // 82 Espresso1; Americano; Espresso2 // 83 Espresso1; Americano; Espresso2 // 84 Espresso1; Americano; Espresso2 // 85 Espresso1; Americano; Espresso2 // 86 Espresso1; Americano; Espresso2 // 87 Espresso1; Americano; Espresso2 // 88 Espresso1; Americano; Espresso2 // 89 Espresso1; Americano; Espresso2 // 90 Espresso1; Americano; Espresso2 // 91 Espresso1; Americano; Espresso2 // 92 Espresso1; Americano; Espresso2 // 93 Espresso1; Americano; Espresso2 // 94 Espresso1; Americano; Espresso2 // 95 Espresso1; Americano; Espresso2 // 96 Espresso1; Americano; Espresso2 // 97 Espresso1; Americano; Espresso2 // 98 Espresso1; Americano; Espresso2 // 99 Espresso1; Americano; Espresso2 // 100 Espresso1; Americano; Espresso2 // 101 Mocha1 // pop & print ASCII 101 → “e” // Print l // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 64 by doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64], Cup2 = []
// Now increment from 64 to 108 (44 times): // Espresso1; Americano; Espresso2 Espresso1 Americano Espresso2 // 65 Espresso1 Americano Espresso2 // 66 Espresso1 Americano Espresso2 // 67 Espresso1 Americano Espresso2 // 68 Espresso1 Americano Espresso2 // 69 Espresso1 Americano Espresso2 // 70 Espresso1 Americano Espresso2 // 71 Espresso1 Americano Espresso2 // 72 Espresso1 Americano Espresso2 // 73 Espresso1 Americano Espresso2 // 74 Espresso1 Americano Espresso2 // 75 Espresso1 Americano Espresso2 // 76 Espresso1 Americano Espresso2 // 77 Espresso1 Americano Espresso2 // 78 Espresso1 Americano Espresso2 // 79 Espresso1 Americano Espresso2 // 80 Espresso1 Americano Espresso2 // 81 Espresso1 Americano Espresso2 // 82 Espresso1 Americano Espresso2 // 83 Espresso1 Americano Espresso2 // 84 Espresso1 Americano Espresso2 // 85 Espresso1 Americano Espresso2 // 86 Espresso1 Americano Espresso2 // 87 Espresso1 Americano Espresso2 // 88 Espresso1 Americano Espresso2 // 89 Espresso1 Americano Espresso2 // 90 Espresso1 Americano Espresso2 // 91 Espresso1 Americano Espresso2 // 92 Espresso1 Americano Espresso2 // 93 Espresso1 Americano Espresso2 // 94 Espresso1 Americano Espresso2 // 95 Espresso1 Americano Espresso2 // 96 Espresso1 Americano Espresso2 // 97 Espresso1 Americano Espresso2 // 98 Espresso1 Americano Espresso2 // 99 Espresso1 Americano Espresso2 // 100 Espresso1 Americano Espresso2 // 101 Espresso1 Americano Espresso2 // 102 Espresso1 Americano Espresso2 // 103 Espresso1 Americano Espresso2 // 104 Espresso1 Americano Espresso2 // 105 Espresso1 Americano Espresso2 // 106 Espresso1 Americano Espresso2 // 107 Espresso1 Americano Espresso2 // 108 Mocha1 // pop & print ASCII 108 → “l” // Print l // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 64 by doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64], Cup2 = []
// Now increment from 64 to 108 (44 times): // Espresso1; Americano; Espresso2 Espresso1 Americano Espresso2 // 65 Espresso1 Americano Espresso2 // 66 Espresso1 Americano Espresso2 // 67 Espresso1 Americano Espresso2 // 68 Espresso1 Americano Espresso2 // 69 Espresso1 Americano Espresso2 // 70 Espresso1 Americano Espresso2 // 71 Espresso1 Americano Espresso2 // 72 Espresso1 Americano Espresso2 // 73 Espresso1 Americano Espresso2 // 74 Espresso1 Americano Espresso2 // 75 Espresso1 Americano Espresso2 // 76 Espresso1 Americano Espresso2 // 77 Espresso1 Americano Espresso2 // 78 Espresso1 Americano Espresso2 // 79 Espresso1 Americano Espresso2 // 80 Espresso1 Americano Espresso2 // 81 Espresso1 Americano Espresso2 // 82 Espresso1 Americano Espresso2 // 83 Espresso1 Americano Espresso2 // 84 Espresso1 Americano Espresso2 // 85 Espresso1 Americano Espresso2 // 86 Espresso1 Americano Espresso2 // 87 Espresso1 Americano Espresso2 // 88 Espresso1 Americano Espresso2 // 89 Espresso1 Americano Espresso2 // 90 Espresso1 Americano Espresso2 // 91 Espresso1 Americano Espresso2 // 92 Espresso1 Americano Espresso2 // 93 Espresso1 Americano Espresso2 // 94 Espresso1 Americano Espresso2 // 95 Espresso1 Americano Espresso2 // 96 Espresso1 Americano Espresso2 // 97 Espresso1 Americano Espresso2 // 98 Espresso1 Americano Espresso2 // 99 Espresso1 Americano Espresso2 // 100 Espresso1 Americano Espresso2 // 101 Espresso1 Americano Espresso2 // 102 Espresso1 Americano Espresso2 // 103 Espresso1 Americano Espresso2 // 104 Espresso1 Americano Espresso2 // 105 Espresso1 Americano Espresso2 // 106 Espresso1 Americano Espresso2 // 107 Espresso1 Americano Espresso2 // 108 Mocha1 // pop & print ASCII 108 → “l”
// print o // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 64 by doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64], Cup2 = []
// Now increment from 64 to 111 (47 steps): // Espresso1; Americano; Espresso2 Espresso1; Americano; Espresso2 // 65 Espresso1; Americano; Espresso2 // 66 Espresso1; Americano; Espresso2 // 67 Espresso1; Americano; Espresso2 // 68 Espresso1; Americano; Espresso2 // 69 Espresso1; Americano; Espresso2 // 70 Espresso1; Americano; Espresso2 // 71 Espresso1; Americano; Espresso2 // 72 Espresso1; Americano; Espresso2 // 73 Espresso1; Americano; Espresso2 // 74 Espresso1; Americano; Espresso2 // 75 Espresso1; Americano; Espresso2 // 76 Espresso1; Americano; Espresso2 // 77 Espresso1; Americano; Espresso2 // 78 Espresso1; Americano; Espresso2 // 79 Espresso1; Americano; Espresso2 // 80 Espresso1; Americano; Espresso2 // 81 Espresso1; Americano; Espresso2 // 82 Espresso1; Americano; Espresso2 // 83 Espresso1; Americano; Espresso2 // 84 Espresso1; Americano; Espresso2 // 85 Espresso1; Americano; Espresso2 // 86 Espresso1; Americano; Espresso2 // 87 Espresso1; Americano; Espresso2 // 88 Espresso1; Americano; Espresso2 // 89 Espresso1; Americano; Espresso2 // 90 Espresso1; Americano; Espresso2 // 91 Espresso1; Americano; Espresso2 // 92 Espresso1; Americano; Espresso2 // 93 Espresso1; Americano; Espresso2 // 94 Espresso1; Americano; Espresso2 // 95 Espresso1; Americano; Espresso2 // 96 Espresso1; Americano; Espresso2 // 97 Espresso1; Americano; Espresso2 // 98 Espresso1; Americano; Espresso2 // 99 Espresso1; Americano; Espresso2 // 100 Espresso1; Americano; Espresso2 // 101 Espresso1; Americano; Espresso2 // 102 Espresso1; Americano; Espresso2 // 103 Espresso1; Americano; Espresso2 // 104 Espresso1; Americano; Espresso2 // 105 Espresso1; Americano; Espresso2 // 106 Espresso1; Americano; Espresso2 // 107 Espresso1; Americano; Espresso2 // 108 Espresso1; Americano; Espresso2 // 109 Espresso1; Americano; Espresso2 // 110 Espresso1; Americano; Espresso2 // 111
Mocha1 // pop & print ASCII 111 → “o” // print one space // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 32 via doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = []
Mocha1 // pop & print ASCII 32 → “ ” // print W // Prepare Cup2 = 1 for all increments Espresso2 // Cup2 = [1]
// Start Cup1 at 1 Espresso1 // Cup1 = [1]
// Increment Cup1 by 1 until it reaches 87 (ASCII for ‘W’) Espresso2; Americano // 2 Espresso2; Americano // 3 Espresso2; Americano // 4 Espresso2; Americano // 5 Espresso2; Americano // 6 Espresso2; Americano // 7 Espresso2; Americano // 8 Espresso2; Americano // 9 Espresso2; Americano // 10 Espresso2; Americano // 11 Espresso2; Americano // 12 Espresso2; Americano // 13 Espresso2; Americano // 14 Espresso2; Americano // 15 Espresso2; Americano // 16 Espresso2; Americano // 17 Espresso2; Americano // 18 Espresso2; Americano // 19 Espresso2; Americano // 20 Espresso2; Americano // 21 Espresso2; Americano // 22 Espresso2; Americano // 23 Espresso2; Americano // 24 Espresso2; Americano // 25 Espresso2; Americano // 26 Espresso2; Americano // 27 Espresso2; Americano // 28 Espresso2; Americano // 29 Espresso2; Americano // 30 Espresso2; Americano // 31 Espresso2; Americano // 32 Espresso2; Americano // 33 Espresso2; Americano // 34 Espresso2; Americano // 35 Espresso2; Americano // 36 Espresso2; Americano // 37 Espresso2; Americano // 38 Espresso2; Americano // 39 Espresso2; Americano // 40 Espresso2; Americano // 41 Espresso2; Americano // 42 Espresso2; Americano // 43 Espresso2; Americano // 44 Espresso2; Americano // 45 Espresso2; Americano // 46 Espresso2; Americano // 47 Espresso2; Americano // 48 Espresso2; Americano // 49 Espresso2; Americano // 50 Espresso2; Americano // 51 Espresso2; Americano // 52 Espresso2; Americano // 53 Espresso2; Americano // 54 Espresso2; Americano // 55 Espresso2; Americano // 56 Espresso2; Americano // 57 Espresso2; Americano // 58 Espresso2; Americano // 59 Espresso2; Americano // 60 Espresso2; Americano // 61 Espresso2; Americano // 62 Espresso2; Americano // 63 Espresso2; Americano // 64 Espresso2; Americano // 65 Espresso2; Americano // 66 Espresso2; Americano // 67 Espresso2; Americano // 68 Espresso2; Americano // 69 Espresso2; Americano // 70 Espresso2; Americano // 71 Espresso2; Americano // 72 Espresso2; Americano // 73 Espresso2; Americano // 74 Espresso2; Americano // 75 Espresso2; Americano // 76 Espresso2; Americano // 77 Espresso2; Americano // 78 Espresso2; Americano // 79 Espresso2; Americano // 80 Espresso2; Americano // 81 Espresso2; Americano // 82 Espresso2; Americano // 83 Espresso2; Americano // 84 Espresso2; Americano // 85 Espresso2; Americano // 86 Espresso2; Americano // 87
Mocha1 // pop & print ASCII 87 → “W”
// print o // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 64 by doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64], Cup2 = []
// Now increment from 64 to 111 (47 steps): // Espresso1; Americano; Espresso2 Espresso1; Americano; Espresso2 // 65 Espresso1; Americano; Espresso2 // 66 Espresso1; Americano; Espresso2 // 67 Espresso1; Americano; Espresso2 // 68 Espresso1; Americano; Espresso2 // 69 Espresso1; Americano; Espresso2 // 70 Espresso1; Americano; Espresso2 // 71 Espresso1; Americano; Espresso2 // 72 Espresso1; Americano; Espresso2 // 73 Espresso1; Americano; Espresso2 // 74 Espresso1; Americano; Espresso2 // 75 Espresso1; Americano; Espresso2 // 76 Espresso1; Americano; Espresso2 // 77 Espresso1; Americano; Espresso2 // 78 Espresso1; Americano; Espresso2 // 79 Espresso1; Americano; Espresso2 // 80 Espresso1; Americano; Espresso2 // 81 Espresso1; Americano; Espresso2 // 82 Espresso1; Americano; Espresso2 // 83 Espresso1; Americano; Espresso2 // 84 Espresso1; Americano; Espresso2 // 85 Espresso1; Americano; Espresso2 // 86 Espresso1; Americano; Espresso2 // 87 Espresso1; Americano; Espresso2 // 88 Espresso1; Americano; Espresso2 // 89 Espresso1; Americano; Espresso2 // 90 Espresso1; Americano; Espresso2 // 91 Espresso1; Americano; Espresso2 // 92 Espresso1; Americano; Espresso2 // 93 Espresso1; Americano; Espresso2 // 94 Espresso1; Americano; Espresso2 // 95 Espresso1; Americano; Espresso2 // 96 Espresso1; Americano; Espresso2 // 97 Espresso1; Americano; Espresso2 // 98 Espresso1; Americano; Espresso2 // 99 Espresso1; Americano; Espresso2 // 100 Espresso1; Americano; Espresso2 // 101 Espresso1; Americano; Espresso2 // 102 Espresso1; Americano; Espresso2 // 103 Espresso1; Americano; Espresso2 // 104 Espresso1; Americano; Espresso2 // 105 Espresso1; Americano; Espresso2 // 106 Espresso1; Americano; Espresso2 // 107 Espresso1; Americano; Espresso2 // 108 Espresso1; Americano; Espresso2 // 109 Espresso1; Americano; Espresso2 // 110 Espresso1; Americano; Espresso2 // 111
Mocha1 // pop & print ASCII 111 → “o” // Prepare Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Start Cup1 at 1 (ASCII 1) Espresso1 // Cup1 = [1]
// Increment Cup1 by 1 until it reaches 114 (ASCII for ‘r’): Espresso2; Americano // Cup1 = [2] Espresso2; Americano // Cup1 = [3] Espresso2; Americano // Cup1 = [4] Espresso2; Americano // Cup1 = [5] Espresso2; Americano // Cup1 = [6] Espresso2; Americano // Cup1 = [7] Espresso2; Americano // Cup1 = [8] Espresso2; Americano // Cup1 = [9] Espresso2; Americano // Cup1 = [10] Espresso2; Americano // Cup1 = [11] Espresso2; Americano // Cup1 = [12] Espresso2; Americano // Cup1 = [13] Espresso2; Americano // Cup1 = [14] Espresso2; Americano // Cup1 = [15] Espresso2; Americano // Cup1 = [16] Espresso2; Americano // Cup1 = [17] Espresso2; Americano // Cup1 = [18] Espresso2; Americano // Cup1 = [19] Espresso2; Americano // Cup1 = [20] Espresso2; Americano // Cup1 = [21] Espresso2; Americano // Cup1 = [22] Espresso2; Americano // Cup1 = [23] Espresso2; Americano // Cup1 = [24] Espresso2; Americano // Cup1 = [25] Espresso2; Americano // Cup1 = [26] Espresso2; Americano // Cup1 = [27] Espresso2; Americano // Cup1 = [28] Espresso2; Americano // Cup1 = [29] Espresso2; Americano // Cup1 = [30] Espresso2; Americano // Cup1 = [31] Espresso2; Americano // Cup1 = [32] Espresso2; Americano // Cup1 = [33] Espresso2; Americano // Cup1 = [34] Espresso2; Americano // Cup1 = [35] Espresso2; Americano // Cup1 = [36] Espresso2; Americano // Cup1 = [37] Espresso2; Americano // Cup1 = [38] Espresso2; Americano // Cup1 = [39] Espresso2; Americano // Cup1 = [40] Espresso2; Americano // Cup1 = [41] Espresso2; Americano // Cup1 = [42] Espresso2; Americano // Cup1 = [43] Espresso2; Americano // Cup1 = [44] Espresso2; Americano // Cup1 = [45] Espresso2; Americano // Cup1 = [46] Espresso2; Americano // Cup1 = [47] Espresso2; Americano // Cup1 = [48] Espresso2; Americano // Cup1 = [49] Espresso2; Americano // Cup1 = [50] Espresso2; Americano // Cup1 = [51] Espresso2; Americano // Cup1 = [52] Espresso2; Americano // Cup1 = [53] Espresso2; Americano // Cup1 = [54] Espresso2; Americano // Cup1 = [55] Espresso2; Americano // Cup1 = [56] Espresso2; Americano // Cup1 = [57] Espresso2; Americano // Cup1 = [58] Espresso2; Americano // Cup1 = [59] Espresso2; Americano // Cup1 = [60] Espresso2; Americano // Cup1 = [61] Espresso2; Americano // Cup1 = [62] Espresso2; Americano // Cup1 = [63] Espresso2; Americano // Cup1 = [64] Espresso2; Americano // Cup1 = [65] Espresso2; Americano // Cup1 = [66] Espresso2; Americano // Cup1 = [67] Espresso2; Americano // Cup1 = [68] Espresso2; Americano // Cup1 = [69] Espresso2; Americano // Cup1 = [70] Espresso2; Americano // Cup1 = [71] Espresso2; Americano // Cup1 = [72] Espresso2; Americano // Cup1 = [73] Espresso2; Americano // Cup1 = [74] Espresso2; Americano // Cup1 = [75] Espresso2; Americano // Cup1 = [76] Espresso2; Americano // Cup1 = [77] Espresso2; Americano // Cup1 = [78] Espresso2; Americano // Cup1 = [79] Espresso2; Americano // Cup1 = [80] Espresso2; Americano // Cup1 = [81] Espresso2; Americano // Cup1 = [82] Espresso2; Americano // Cup1 = [83] Espresso2; Americano // Cup1 = [84] Espresso2; Americano // Cup1 = [85] Espresso2; Americano // Cup1 = [86] Espresso2; Americano // Cup1 = [87] Espresso2; Americano // Cup1 = [88] Espresso2; Americano // Cup1 = [89] Espresso2; Americano // Cup1 = [90] Espresso2; Americano // Cup1 = [91] Espresso2; Americano // Cup1 = [92] Espresso2; Americano // Cup1 = [93] Espresso2; Americano // Cup1 = [94] Espresso2; Americano // Cup1 = [95] Espresso2; Americano // Cup1 = [96] Espresso2; Americano // Cup1 = [97] Espresso2; Americano // Cup1 = [98] Espresso2; Americano // Cup1 = [99] Espresso2; Americano // Cup1 = [100] Espresso2; Americano // Cup1 = [101] Espresso2; Americano // Cup1 = [102] Espresso2; Americano // Cup1 = [103] Espresso2; Americano // Cup1 = [104] Espresso2; Americano // Cup1 = [105] Espresso2; Americano // Cup1 = [106] Espresso2; Americano // Cup1 = [107] Espresso2; Americano // Cup1 = [108] Espresso2; Americano // Cup1 = [109] Espresso2; Americano // Cup1 = [110] Espresso2; Americano // Cup1 = [111] Espresso2; Americano // Cup1 = [112] Espresso2; Americano // Cup1 = [113] Espresso2; Americano // Cup1 = [114]
Mocha1 // pop & print ASCII 114 → “r”
// Print l // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 64 by doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64], Cup2 = []
// Now increment from 64 to 108 (44 times): // Espresso1; Americano; Espresso2 Espresso1 Americano Espresso2 // 65 Espresso1 Americano Espresso2 // 66 Espresso1 Americano Espresso2 // 67 Espresso1 Americano Espresso2 // 68 Espresso1 Americano Espresso2 // 69 Espresso1 Americano Espresso2 // 70 Espresso1 Americano Espresso2 // 71 Espresso1 Americano Espresso2 // 72 Espresso1 Americano Espresso2 // 73 Espresso1 Americano Espresso2 // 74 Espresso1 Americano Espresso2 // 75 Espresso1 Americano Espresso2 // 76 Espresso1 Americano Espresso2 // 77 Espresso1 Americano Espresso2 // 78 Espresso1 Americano Espresso2 // 79 Espresso1 Americano Espresso2 // 80 Espresso1 Americano Espresso2 // 81 Espresso1 Americano Espresso2 // 82 Espresso1 Americano Espresso2 // 83 Espresso1 Americano Espresso2 // 84 Espresso1 Americano Espresso2 // 85 Espresso1 Americano Espresso2 // 86 Espresso1 Americano Espresso2 // 87 Espresso1 Americano Espresso2 // 88 Espresso1 Americano Espresso2 // 89 Espresso1 Americano Espresso2 // 90 Espresso1 Americano Espresso2 // 91 Espresso1 Americano Espresso2 // 92 Espresso1 Americano Espresso2 // 93 Espresso1 Americano Espresso2 // 94 Espresso1 Americano Espresso2 // 95 Espresso1 Americano Espresso2 // 96 Espresso1 Americano Espresso2 // 97 Espresso1 Americano Espresso2 // 98 Espresso1 Americano Espresso2 // 99 Espresso1 Americano Espresso2 // 100 Espresso1 Americano Espresso2 // 101 Espresso1 Americano Espresso2 // 102 Espresso1 Americano Espresso2 // 103 Espresso1 Americano Espresso2 // 104 Espresso1 Americano Espresso2 // 105 Espresso1 Americano Espresso2 // 106 Espresso1 Americano Espresso2 // 107 Espresso1 Americano Espresso2 // 108 Mocha1 // pop & print ASCII 108 → “l” // print d // Prepare Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 64 by doubling: Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = [] Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [32,32] Americano // Cup1 = [64], Cup2 = []
// Now increment from 64 to 100 (36 steps): Espresso1; Americano; Espresso2 // 65 Espresso1; Americano; Espresso2 // 66 Espresso1; Americano; Espresso2 // 67 Espresso1; Americano; Espresso2 // 68 Espresso1; Americano; Espresso2 // 69 Espresso1; Americano; Espresso2 // 70 Espresso1; Americano; Espresso2 // 71 Espresso1; Americano; Espresso2 // 72 Espresso1; Americano; Espresso2 // 73 Espresso1; Americano; Espresso2 // 74 Espresso1; Americano; Espresso2 // 75 Espresso1; Americano; Espresso2 // 76 Espresso1; Americano; Espresso2 // 77 Espresso1; Americano; Espresso2 // 78 Espresso1; Americano; Espresso2 // 79 Espresso1; Americano; Espresso2 // 80 Espresso1; Americano; Espresso2 // 81 Espresso1; Americano; Espresso2 // 82 Espresso1; Americano; Espresso2 // 83 Espresso1; Americano; Espresso2 // 84 Espresso1; Americano; Espresso2 // 85 Espresso1; Americano; Espresso2 // 86 Espresso1; Americano; Espresso2 // 87 Espresso1; Americano; Espresso2 // 88 Espresso1; Americano; Espresso2 // 89 Espresso1; Americano; Espresso2 // 90 Espresso1; Americano; Espresso2 // 91 Espresso1; Americano; Espresso2 // 92 Espresso1; Americano; Espresso2 // 93 Espresso1; Americano; Espresso2 // 94 Espresso1; Americano; Espresso2 // 95 Espresso1; Americano; Espresso2 // 96 Espresso1; Americano; Espresso2 // 97 Espresso1; Americano; Espresso2 // 98 Espresso1; Americano; Espresso2 // 99 Espresso1; Americano; Espresso2 // 100
Mocha1 // pop & print ASCII 100 → “d”
// print ! // Ensure Cup2 = 1 for every Americano Espresso2 // Cup2 = [1]
// Build 2 Espresso1 // Cup1 = [1] Americano // Cup1 = [2], Cup2 = []
// Build 4 Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [2,2] Americano // Cup1 = [4], Cup2 = []
// Build 8 Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [4,4] Americano // Cup1 = [8], Cup2 = []
// Build 16 Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [8,8] Americano // Cup1 = [16], Cup2 = []
// Build 32 Espresso2 // Cup2 = [1] Cappuccino1 // Cup1 = [16,16] Americano // Cup1 = [32], Cup2 = []
// Increment to 33 Espresso2 // Cup2 = [1] Espresso1 // Cup1 = [1,32] Americano // Cup1 = [33]
Mocha1 // pop & print ASCII 33 → “!” COOL
Countdown Timer
This program counts down from 5 to 1, printing each number, then terminates:
HOT // Build Cup2 = 1 Espresso2 // Cup2=[1] // Build Cup1 = 5 by iteratively adding 1 via Americano Espresso1 // Cup1=[1], Cup2=[1] Americano // Cup1=[2], Cup2=[] Espresso2 // Cup2=[1] Espresso1 // Cup1=[1,2], Cup2=[1] Americano // Cup1=[3], Cup2=[] // …repeat until Cup1=[5]… loop: Cortado1 // Pop & print current Cup1 value Americano // Pop both; push (Cup1−Cup2) → decrement Milk1 // Pop new Cup1; if zero, skip next Sugar end // Exit when Cup1 hits 0 Sugar loop // Otherwise, repeat #end: COOL // End of program