BEFUNGE – Wikipedia

before-content-x4

Artykuł w Wikipedii, Free L’Encyclopéi.

after-content-x4

Pobiec jest egzotycznym odruchowym językiem programowania z baterią. Różni się od języków konwencjonalnych faktem, że jest ułożony na dwukierunkową siatkę. Instrukcje „strzałki” kierują przepływ sterowania w lewo, w prawo, u góry, dolne i pętle są budowane przez wysyłanie przepływu sterowania w cyklu.

Język został stworzony przez Chrisa Presseya w 1993 r P Umożliwia kod automodingu. Jednak wiele kompilatorów zostało napisanych później. Istnieje również pewna liczba rozszerzeń do oryginalnych specyfikacji „BEFUNGE-93”, w tym Funege-98, która rozszerza koncepcję na dowolną liczbę wymiarów i może być wielokrotne, z wieloma licznikami komputerowymi działającymi jednocześnie na tej samej przestrzeni. Rozszerzenia i warianty Befunge nazywane są „zabawnymi” lub po prostu zabawnymi.

Specyfikacje BeFune-93 ograniczają każdy ważny program do siatki 80 instrukcji poziomo przy 25 instrukcjach w pionie. Wszelkie wykonanie programu przekraczające te granice znajduje się po drugiej stronie siatki. W ten sposób program BEFUNGE jest topologicznie równoważny Torusowi. Jako program BeFune-93 może mieć tylko jedną baterię, a jej tabela przechowywania jest ograniczona, język BeFune-93 jest, w przeciwieństwie do większości języków, bez uzupełniania Turinga. Specyfikacje FUNEGE-98 zapewniają zakończenie Turinga poprzez usunięcie ograniczenia wielkości programów. Zamiast podłączyć krawędzie po obu stronach, Funige-98 sprawia, że ​​licznik porządkowy podąża za modelem nazywany ” Lahey-Space W odniesieniu do jego twórcy, Chris Lahey. W tym modelu siatka zachowuje się jak wykończony rozmiar w porównaniu z jego składaniem, jednocześnie pozwalając na rozszerzenie nieskończenie.

Technika używania strzałek do zmiany przepływu sterowania jest pokazana w poniższym programie generatora liczb losowych. Instrukcja ? Wyślij licznik porządkowy w losowym kierunku.

itp. <<<<
    2
    ^ v <
 V1 3v4
    ^^
>>?>?> 5^
    v v
 v9 7v6
    V V <
    8
 . >> ^
^< 

„Hello World!” "Klasyczny

after-content-x4
> v
v ,,,,, „Hello” <
> 48*, v
v ,,,,,, „World!” <
> 25*,@ 

Bardziej idiomatyczna wersja „Hello World!” »Pobiec (przy użyciu 0gnirts)

0 "! Dlrow, olleh">:#, _@ 

Nie zapomnij o „0” na początku kodu, aby wydostać się z pętli indukowanej przez „_” i „https://fr.wikipedia.org/wiki/#”.
W przypadku, gdy wartość 0 nie jest obecna, aw przypadku portalu interpretera BEFUNGE w C na przykład ryzyko segmentacji
istnieć. Oczywiście wyraźniej jest wyjść z pętli, kwestia czytelności (nawet jeśli trudno ją ją zatrzymać
Pobiec.)

0-9 Układa ten numer na baterii
+ Dodatek: DEPIL A I B , potem układają A + B
- Odejmowanie: depile A I B , potem układają B - A
* Mnożenie: depile A I B , potem układają A * B
/ Pełny podział: depil A I B , a następnie układa całą część B / A . I A jest zero, pyta użytkownika pożądany wynik.
% Moduł: Dépile A I B , a następnie układa resztę całego podziału B / A . I A jest zero, pyta użytkownika pożądany wynik.
! Nielogiczne: wartość depile A. Jeśli jest zero, stos 1; W przeciwnym razie stosuje 0.
`` Większy niż: depile A I B , a następnie układa 1, jeśli B > A , jeśli nie 0.
> Poruszaj się w prawo
< Przesunąć się w lewo
^ Górny
W Padnij
? Przesuwa się do losowego kierunku
_ Defil wartość; Przejdź w prawo, jeśli wartość = 0, po lewej stronie inaczej
|. Defil wartość; poruszaj się u dołu, jeśli wartość = 0, powyżej inaczej
" Rozpocznij tryb łańcucha znaków: układa każdą wartość ASCII do następnej "
: Zduplikuj wartość u góry baterii
Zamienia dwie wartości u góry baterii
$ Depiluje wartość
. Defil wartość i plakat
W DEPIL A WARTOŚCI I PLAKTY JAKO JAKIE ZDARZENIE ASCII
# Trampolina: skocz następną komórkę
P DEPIL I W X I W , następnie zmienia znaki na pozycję ( X W I ) w programie w charakterze, którego kod ASCII jest W
G DEPIL I I X , a następnie układa wartość ASCII znaku znajdującego się w tej pozycji w programie
I Pyta użytkownika i układa go o liczbę
~ Poproś o postać od użytkownika i układa swój kod ASCII
@ Uzupełnij program

after-content-x4