BEFUNGE – Wikipedia
Artykuł w Wikipedii, Free L’Encyclopéi.
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
> 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 |
Recent Comments