All Projects → aaronjanse → Asciidots

aaronjanse / Asciidots

Licence: agpl-3.0
Esolang inspired by ASCII art

Programming Languages

python
139335 projects - #7 most used programming language
python3
1442 projects

Labels

Projects that are alternatives of or similar to Asciidots

Asciimg
An ascii image generator written in Java.
Stars: ✭ 402 (-57.46%)
Mutual labels:  ascii-art
Diagram
CLI app to convert ASCII arts into hand drawn diagrams.
Stars: ✭ 642 (-32.06%)
Mutual labels:  ascii-art
Ascii Generator
ASCII generator (image to text, image to image, video to video)
Stars: ✭ 939 (-0.63%)
Mutual labels:  ascii-art
Bkasciiimage
Convert UIImage to ASCII art
Stars: ✭ 421 (-55.45%)
Mutual labels:  ascii-art
Mapscii
🗺 MapSCII is a Braille & ASCII world map renderer for your console - enter => telnet mapscii.me <= on Mac (brew install telnet) and Linux, connect with PuTTY on Windows
Stars: ✭ 5,886 (+522.86%)
Mutual labels:  ascii-art
Pyfiglet
An implementation of figlet written in Python
Stars: ✭ 785 (-16.93%)
Mutual labels:  ascii-art
Figlet Fonts
my collection of figlet / toilet ascii art fonts
Stars: ✭ 393 (-58.41%)
Mutual labels:  ascii-art
Ascii canvas
ASCII canvas for drawing in console
Stars: ✭ 11 (-98.84%)
Mutual labels:  ascii-art
Ascii art
Real-Time ASCII Art Rendering Library
Stars: ✭ 599 (-36.61%)
Mutual labels:  ascii-art
Logorain Ascii Art
Logorain-ASCII-Art: A simple Image to ASCII Art converter
Stars: ✭ 24 (-97.46%)
Mutual labels:  ascii-art
Ascii Art
A Node.js library for ansi codes, figlet fonts, ascii art and other ASCII graphics
Stars: ✭ 437 (-53.76%)
Mutual labels:  ascii-art
Image2ascii
🌁 Convert image to ASCII
Stars: ✭ 504 (-46.67%)
Mutual labels:  ascii-art
Christmas Tree
ASCII christmas-tree with animations for 256 colored terminals
Stars: ✭ 23 (-97.57%)
Mutual labels:  ascii-art
Stonks
Stonks is a terminal based stock visualizer and tracker that displays realtime stocks in graph format in a terminal. See how fast your stonks will crash.
Stars: ✭ 405 (-57.14%)
Mutual labels:  ascii-art
Noodel
A programming language designed around supporting ASCII animation based code golfing challenges.
Stars: ✭ 8 (-99.15%)
Mutual labels:  ascii-art
Boxes
Command line ASCII boxes unlimited!
Stars: ✭ 398 (-57.88%)
Mutual labels:  ascii-art
Cfonts
Sexy fonts for the console
Stars: ✭ 789 (-16.51%)
Mutual labels:  ascii-art
Ascii clock
Python script that prints out a clock in ASCII art style to the console
Stars: ✭ 15 (-98.41%)
Mutual labels:  ascii-art
Wego
weather app for the terminal
Stars: ✭ 6,918 (+632.06%)
Mutual labels:  ascii-art
Figlet4go
A port of figlet to golang
Stars: ✭ 23 (-97.57%)
Mutual labels:  ascii-art

AsciiDots - Esoteric Language

The esolang inspired by ascii art

                   _ _ _____        _       
    /\            (_|_)  __ \      | |      
   /  \   ___  ___ _ _| |  | | ___ | |_ ___
  / /\ \ / __|/ __| | | |  | |/ _ \| __/ __|
 / ____ \\__ \ (__| | | |__| | (_) | |_\__ \
/_/    \_\___/\___|_|_|_____/ \___/ \__|___/

codebeat badge Join the chat at https://gitter.im/asciidots/Lobby

Featured on Hacker News, Motherboard (slashdot comments), and i-programmer.

AsciiDots is an esoteric programming language based on ascii art. In this language, dots, represented by periods (.), travel down ascii art paths and undergo operations.

AsciiDots being run in debug mode

Table of Contents

Samples

Hello world:

 .-$"Hello, World!"

Quine:

 ($'.-#40-$_a#-#36-$_a#-#39-$_a#)

Counter:

     /1#-.
     |
   /-+-$#\
   | |   |
  [+]<1#-*
   |     |
   \--<--/
      |
      0
      #
      |
      .

Semi-compact factorial calculator:

 /---------*--~-$#-&
 | /--;---\| [!]-\
 | *------++--*#1/
 | | /1#\ ||
[*]*{-}-*~<+*?#-.
 *-------+-</
 \-#0----/

Code-golfed counter (15 bytes) by @ddorn:

/.*$#-\
\{+}1#/

Installing

Note: asciidots is available online via Try it Online (tio.run) and the Interactive Demo (ajanse.me).

Using pip (recommended):

pip install asciidots

Using Docker Hub (recommended):

Run sample program from this repo:

docker run -ti --rm aaronduino/asciidots samples/hello_world.dots

Run local file test.dots:

docker run -ti --rm -v $PWD:/data aaronduino/asciidots /data/test.dots

Using Local Dockerfile:

Build the image:

docker build -t asciidots ./docker

Run sample program from this repo:

docker run -ti --rm asciidots samples/hello_world.dots

Run local file test.dots:

docker run -ti --rm -v $PWD:/data asciidots /data/test.dots

From source:

git clone https://github.com/aaronduino/asciidots
pip install -r requirements.txt
# and only if on windows:
python -m pip install windows-curses

Run it from source using:

python __main__.py [arguments]

or alias it to asciidots using:

# on Ubuntu, replace `.bash_profile` with `.bashrc`
echo "alias asciidots='python $(pwd)/__main__.py'" >> ~/.bash_profile
source ~/.bash_profile

Using the Interpreter

The interpreter for this language is the __main__.py file. It can be run from the terminal using the python command. The first argument is the dots file that you wish the interpreter to run.

Here's an example of running the counter sample program (the working directory is the dots repo folder):

$ asciidots ./samples/counter.dots

Here is the list of available flags:

-t [ticks]        Run the program for a specified number of ticks (Default to 0: no limit)

-o [output-limit] Run the program for a specified number of outputs (Default to 0: no limit)

-s                Run without printing ANYTHING to the console. Useful for benchmarking

-d                Run the program in debug mode. It shows the program and highlights the dots with red. Press enter to step the program once.

Some extra flags when debugging:
-a [delay]        Step the program automatically, using the specified delay in seconds. Decimal numbers are permitted, and so is 0.

-w                Run the program without using ncurses. This can fix problems related to Windows.

-l [line-count]   When not in compatibility mode, reserve the specified number of the lines for displaying the program

This is how one might debug the program found at samples/counter.dots for 300 ticks, while running it automatically with a delay of 0.05 seconds per tick:

$ asciidots samples/counter.dots -t 300 -d -a 0.05

Program Syntax

The documentation has been moved to its own page

More Examples

Hello, World!

.-$"Hello, World!"


Test if two input values are equal:

       /-$"Equal"
       |
.-#?-*-~-$"Not equal"
     | |
     \[=]
       |
       ?
       #
       |
       .


Counter:
     /1#-.
     |
   /-+-$#\
   | |   |
  [+]<1#-*
   |     |
   \--<--/
      |
      0
      #
      |
      .


Fibonacci Sequence Calculator:
/--#$--\
|      |
>-*>{+}/
| \+-/
1  |
#  1
|  #
|  |
.  .


Find prime numbers:

%$T

        .
        |
        #
        3
        |
        @
        1
        |
/--*--*-<--\
|  |  |   /+----\
|  #  |   [email protected]~-\
|  2  | /->~*{%}/ |
|  |  | 1  |\-+---/
|  |  | @  ^\ |
\-{+}-+-*  01 |
      | |  ## |
      | v--*+-/
      | |  ||
    /-* |  *+--\
    | T |  ||  |
    # $ # /~/  |
    0 # 1 */   |
    | | | |    |
    \->-+-~----<-#$-2#-.
        \-/


 /--------\
 T        |
 *--------~
 |        |
 \-*[email protected][=]
   |      |
   \--#1--/


And a game!

/-""$-.
|
\--$"Pick a number between 1 and 255 (inclusive)"\
/------------------------------------------------/
\--$"I will correctly guess that number after no more than 8 tries"\
/---------------------------------------------------------------""$/
\--$"After each of my guesses, respond with: "\
/---------------------------------------------/
\--$"     '2' if I guess too high,"\
/----------------------------------/
\--$"     '1' if I guess too low,"\
/---------------------------------/
\--$"  or '0' if I guess correctly"\
/----------------------------------/
|
|                             /->-\
|         /--------------\ /-[-]| |
#         |           /#1\-~--+[+]|
6         |          /*-{-}*  | | |
4  /2#\   |     /----~-----+--+-+-+-#7-$a_#-$"I won! Good game!"-&
|/{/}-*---*     *----/     |/-~-/ |
||    |/--+-----+------\   \+-/   |
\>----~#  #     \-?#-*-+----/     |
      |1  1  /$""-$#-/ |          |
      \/  |  ~---------*----------<-821#-.
          \--/

Creative Commons License
This work is licensed under a Creative Commons Attribution-ShareAlike 4.0 International License.

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].