AGSPL
Jump to navigation
Jump to search
AGSPL is a stack-based esoteric programming language created by Xi-816. It's inspired by Golfscript, APL and others.
Commands
Operation | Operands | Description |
---|---|---|
0-9
|
none | Push the number to the stack |
+
|
int, int | Add two numbers |
array, int | Append int to array | |
array, string | Append string to array | |
array, function | Map | |
array, array | Concatenate | |
string, int | Increment ASCII/Unicode value n times | |
-
|
int, int | Subtract two numbers |
string, int | Delete n symbols from end | |
array, int | Pop and discard n elements from array | |
*
|
int, int | Multiply two numbers |
string, int | Duplicate string n times | |
string and string | Duplicate every symbol in string 1 n times, where n is length of second string | |
/
|
int, int | Divide two numbers, |
array, int | Separate array by chunks with n elements | |
_
|
int | Negate (n * -1) |
array | Create a range (including last number) | |
%
|
int, int | Modulo (remainder) |
array | Delete all duplicates | |
<
|
int, int | Less than |
array, array | Bitmask less than | |
>
|
int, int | Greater than |
array, array | Bitmask greater than | |
=
|
any, any | Equal |
""
|
none | Unicode String |
''
|
none | ASCII String |
[]
|
none | Array |
{}
|
none | Function |
.
|
none | Output as a number (or string, array) |
,
|
none | Output as a Unicode/ASCII character |
~
|
none | Number input |
@
|
none | String input |
!
|
int | Factorial |
function | Call the function | |
$
|
none | Duplicate the top value in the stack |
&
|
none | Pop the top value from the stack |
^
|
none | Swap the top two values in the stack |
`
|
none | Reverse the stack |
:
|
none | Store value from stack to the variable |
;
|
none | Get value from variable to the stack |
?
|
function, function | If the value in top after calling first function is not 0, then call second function |
#
|
function, function | While the value in top stack after calling first function is not 0, call second function |
×
|
array | Sum of all elements |
int, int | Power function | |
÷
|
int and int | Random number between those numbers |
array | Random element from array | |
v
|
block, int | Repeat the block n times |
f
|
block, array | For loop |
Programs
Cat program:
@.
Factorial:
~!.
Truth-machine:
~$.{$}{.}#
99 Bottles Of Beer:
99:b {;b 2>} { & ;b ." bottles of beer on the wall,".10, ;b ." bottles of beer!".10, "Take one down, and pass it around,".10, ;b 1-$:b . " bottles of beer on the wall!".10$,, }# "2 bottles of beer on the wall,".10, "2 bottles of beer!".10, "Take one down, and pass it around,".10, "1 bottle of beer on the wall!".10$,, "1 bottle of beer on the wall,".10, "1 bottle of beer!".10, "Take one down, and pass it around,".10, "No more bottles of beer on the wall!".10$,, "No more bottles of beer on the wall,".10, "No more bottles of beer!".10, "Go to the store, and buy some more,".10, "99 bottles of beer on the wall!".
Nope interpreter:
"Nope.".
Number guessing game:
"Input a number: ".~:n 0:g { ;n "Guess: ".~$:g ¬neq } { & {;n ;g <}{"Lower!".10,}? {;n ;g >}{"Higher!".10,}? }# "You Win!".
Collatz Conjecture:
~:n {;n 1¬neq } {& {;n 2%0=}{&;n 2/:n}? {;n 2%1=}{&;n 3*1+:n}? ;n ¬round :n ;n .32, }#