We are currently working on new rules for what content should and shouldn't be allowed on this website, and are looking for feedback! See Esolang:2026 topicality proposal to view and give feedback on the current draft.
Multi-machine
A Multi-machine is an extremely simple program type invented bt User:A to check decision, looping, addition, subtraction, termination, input, and output in a simpler way compared to Truth-machine.
Concept
Rules:
- Never use a for loop.
The process, expressed in pseudocode, constitutes:
a ← input integer, where a ∈ ℤ b ← input integer, where b ∈ ℤ ∧ b ≥ 0 c ← 0, where c ∈ ℤ while b ≠ 0 do print c c ← c + a b ← b - 1 end while print c terminate program
Variants
In languages without input capabilities, the input should be placed somewhere in the code or in the memory. In languages without output capabilities, the result should be saved in the memory, or even somewhere in the code.
Implementations
An exemplary implementation in Common Lisp resolves to this:
(let ((a (parse-integer (read-line)))
(b (parse-integer (read-line)))
(c 0))
(declare (type (integer * *) a))
(declare (type (integer 0 *) b))
(declare (type (integer * *) c))
(loop until (zerop b) do
(format T "~&~d" c)
(incf c a)
(decf b 1))
(format T "~&~d" c))
See also
- Mirror-machine, a conceptually similar type of program
- Truth-machine, a conceptually similar type of program which employs infinite loops