Synced
Paradigm(s) | Imperative |
---|---|
Designed by | User:ZippyMagician |
Appeared in | 2020 |
Memory system | Arbitrarily-sized tape |
Computational class | Finite-state automaton |
Reference implementation | Implemented |
File extension(s) | .sync |
Synced is an esolang designed by User:ZippyMagician one day due to boredom.
Description of language
Synced is a synchronous language that runs every line of the program at the same time. Each operation on each line is performed in a tick, with the pointer for each moving after evaluation. Users can simulate a "do nothing for one tick" by putting in a space or ^
. Due to the nature of this language, programs will be very long. Each line of the program (henceforth referred to as an operator) stores a value, initialized at 0
. Every operator can interact with the values of other operators, through referencing them by use of a number marking the line. Once a line ends, the operator wraps around to the beginning of the line or the first ^
if there is one. Once every operator is halted, a program terminates.
Parameters, if needed, are inserted after the main command. These parameters do not take an extra tick to parse. Input can be taken as either a character or integer, and output can be given as a character, string, or integer if needed. The value of an operator can only be an integer, however.
Every print command will output a newline afterwards.
This language is not Turing Complete.
Syntax
Commands
Command code | Takes Parameter | Description |
---|---|---|
:
|
Yes | Print with no formatting |
;
|
Yes | Print ascii equivalent of the inputted integer |
.
|
Yes | Stores the argument into the current operator's value. If it is a character, it gets its ascii value |
+, -, /, *, %
|
Yes | Will perform their respected operation on the current operator's value and the referenced operator's value. For example, +1 will add the second line's operator's value to the current operator's value
|
|
|
No | Halts current operator |
~
|
No | If the operator's value is 0, continue. Otherwise, wrap around the line |
References
Character | Description |
---|---|
$
|
Does not do anything. Instead is used to reference the current operator's value |
%
|
Reference to next item in STDIN. It can take in a single letter or an integer |
@
|
Reference to the next item in STDIN. This command converts the next character to its ascii value |
Strings are denoted between quotation marks.
Programs
Here are a few programs in this esolang.
Hello World
:"Hello, World!"|
Cat program
.@;$~|
Truth-machine
.%^:$~|
Fibonacci Sequence
.1^:$+1 .0^+0:$
Factorial Calculator
.%^ -1 ~| .1| ^.0+3*0~+3:$| .1^*0 ~|