Brainfuck

Język programowania składający się z zaledwie ośmiu instrukcji,
a można w nim zapisać wszystko - no może prawie wszystko ;-)

Language that provides only eight instructions,
but you can write anything with them - well almost anything ;-)

  Polski   PL
  English   EN
Wersja na Androida Android version

Biblioteka programów

Library

W bibliotece można znaleźć nasze programy, a także te które uznaliśmy za ciekawsze. Jeśli znalazłeś lub napisałeś aplikację w brainfuck'u twoim zdaniem wartą uwagi, podeślij ją nam na e-mail promyk@doleczek.pl. Kto wie jak wielu osobom jeszcze się spodoba.

In the library you can find our programs as well as those which we found interesting. If you have created or found some code written in Brainfuck which you think is worth seeing, send it to us at promyk@doleczek.pl. Who knows how many others will like it too.

Proste i edukacyjne

Simple and educational

Ambitniejsza opcja

More advanced

API

Strona którą masz przed sobą posiada wbudowane API, które pozwala na przekazywanie kodu programu do uruchomienia w adresie URL. W ten sposób, jeśli posiadasz stronę, blog lub inne miejsce w internecie gdzie publikujesz swój kod napisany w Brainfuck'u, możesz także umieścić link który pozwoli go wykonać.

This page has internal API, that allows to run code provided in the URL. This way, if you have your own page, blog or other place in internet where you publish your Brainfuck code, you can add link to run your code.

Ogólna postać adresu to:

http://bf.doleczek.pl? [run:] [nazwa_programu] <kod_programu>

General URL structure:

http://bf.doleczek.pl? [run:] [program_name] <program_code>

run:
opcjonalne
Dodanie tego prefiksu spowoduje że program po załadowaniu zostanie od razu wykonany.
run:
optional
Adding this prefix will occure by runing code instantly.
nazwa_programu
opcjonalne
Nazwa nie może zawierać żadnego ze znaków które są instrukcjami. Czyli nie może zawierać symboli: + - , . [ ] < >.
program_name
optional
Name cannot contain Brainfuck istructions: + - , . [ ] < >.
kod_programu
obowiązkowe
kod programu w Brainfuck'u
program_code
mandatory
Brainfuck program code

Przykłady

Example

http://bf.doleczek.pl?Hello World++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

Powyższy link otworzy stronę z załadowanym kodem. Zakładka będzie się nazywała "Hello World".

The example above will open page with code. Tab with code will be named "Hello World".

http://bf.doleczek.pl?run:Hello World++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.

Powyższy link otworzy stronę z załadowanym kodem. Zakładka będzie się nazywała "Hello World". Dodatkowo program zostanie uruchomiony.

The example above will open page with code. Tab with code will be named "Hello World". Additionaly code will be executed.

O projekcie

About the project

Trudno zdecydować czy Brainfuck jest bardziej intrygująco ciekawy, czy rozkosznie zagmatwany. Nie mniej jednak warty uwagi. Więcej na jego temat można znaleźć na Wikipedii.

Brainfuck is a very tricky language with some interesting properties, that make it noteworthy. You can find more about it at Wikipedia.

Wartościowym i inspirującym materiałem są algorytmy zawarte na esolangs - gorąco polecamy.

You can also find some very useful tricks and solutions at esolangs.org.

Skróty klawiszowe - pozwalające na wykonywanie pewnych czynności szybciej:

  • CTRL + N - nowy program;
  • CTRL + ENTER - uruchomienie programu z aktualnej zakładki;
  • CTRL + P - pauza - wstrzymanie programu na chwilę;
  • CTRL + X - zamknięcie terminalu z aktualnej zakładki;
  • CTRL + S - zapisz aktualną zakładkę;
  • CTRL + D - zaawansowane - podgląd pamięci i rejestrów;
  • CTRL + Left - przejście na zakładkę po lewej;
  • CTRL + Right - przejście na zakładkę po prawej;
  • CTRL + Z - wysyła znak o wartości zero (często oznacza się w ten sposób koniec łańcucha znaków).

Keyboard shortcut - you can do some things quicker:

  • CTRL + N - new program;
  • CTRL + ENTER - run program in the active tab;
  • CTRL + P - pause program;
  • CTRL + X - closing terminal within the active tab;
  • CTRL + S - save code from the active tab;
  • CTRL + D - advanced view of memory and registers;
  • CTRL + Left - go to the previous tab;
  • CTRL + Right - go to the next tab;
  • CTRL + Z - sends zero char to the program (some programs use it as a sign: end of string).

Projekt powstał jako próba sił w starciu z kilkoma technologiami, technikami i bibliotekami, którego efekty możecie oglądać.

  • Bootstrap - część wizualna;
  • jQuery - mechanika strony;
  • wielowątkowość - nawet najdłuższe programy w Brainfuck'u nie zwieszają strony, gdyż są dzielone i zarządzane w mniejszych częsciach;
  • AJAX - doładowywanie programów z biblioteki;
  • wersje językowe - szybka zmiana bez przeładowywania strony;
  • debug mode - istnieje możliwość podglądu pamięci i rejestrów wirtualnej maszyny Brainfuck'a;
  • drag'n'drop - możliwość przeciągania i upuszczania plików z kodem na stronie co owocuje ich otwarciem;
  • download - pobieranie plików źródłowych z poziomu strony (opcja w menu plików);
  • resize - automatycznie rozszerzające się okna z tekstem;
  • UTF-8 - wsparcie dla kodowania znaków UTF-8;
  • Open graph - dodatkowe metatagi opisujące stronę;
  • CSS3 background pattern - ciekawe zastosowanie CSS3;
  • API - pozwala zewnętrznym stronom na korzystanie z dobrodziejstw tego projektu;
  • Inteligentne usuwanie komentarzy - także z niewykonywanych pętli;
  • uglifyJS - kod JavaScriptu został skrócony i zoptymalizowany.

Utilized libraries, solutions and implemented capabilities:

  • Bootstrap - visual part;
  • jQuery - engine;
  • AJAX - dynamic loading from the library;
  • CSS3 background pattern - light and interesting;
  • debug mode - advanced options for developers;
  • drag'n'drop - drag and drop a file with the Brainfuck code over this page to open it;
  • resize - dynamic resizing of windows with code;
  • UTF-8 - support for UTF-8 encoding;
  • API - runs code from other pages;
  • Smart comments removal - additionaly removes loops that will be never executed;
  • uglifyJS - JavaScript optimisation.

Jeśli uważasz ten projekt za wartościowy - udostępnij informację o nim :-)

If you find this project interesting - Share it! :-)

Inne projekty

Other projects

http://www.chess.doleczek.pl/

Ciekawy wariant szachów pozwlający na przechodzenie w widok 3D w trakcie gry. Realizacja w oparciu o CSS3.

Next chess app with some interesting features that makes playing chess more fun.

http://www.malbolge.doleczek.pl/

Adaptacja niniejszej strony, tak by obsługiwała język Malbolge, który czyni niełatwą sztukę programowania jeszcze trudniejszą.

Adaptation of this application tu support Malbolge language.

Zobacz więcej naszych projektów!

See more of our projects!

http://promyk.doleczek.pl/

Swój udział w projekcie mają:

People involved:

Iwa Idziejczak
Jan Doleczek
Jarosław Doleczek
© PROMYK