From 0f69e0cddb727aaf88a04831cd0cce2231030ad2 Mon Sep 17 00:00:00 2001 From: Boris Verkhovskiy Date: Fri, 19 Apr 2024 03:45:39 -0700 Subject: brainfuck -> bf part 2 --- cs-cz/bf.html.markdown | 87 +++++++++++++++++++++++++++++++++++++++ cs-cz/brainfuck.html.markdown | 87 --------------------------------------- de-de/bf-de.html.markdown | 89 ++++++++++++++++++++++++++++++++++++++++ de-de/brainfuck-de.html.markdown | 89 ---------------------------------------- sv-se/bf-sv.html.markdown | 86 ++++++++++++++++++++++++++++++++++++++ sv-se/brainfuck-sv.html.markdown | 86 -------------------------------------- 6 files changed, 262 insertions(+), 262 deletions(-) create mode 100644 cs-cz/bf.html.markdown delete mode 100644 cs-cz/brainfuck.html.markdown create mode 100644 de-de/bf-de.html.markdown delete mode 100644 de-de/brainfuck-de.html.markdown create mode 100644 sv-se/bf-sv.html.markdown delete mode 100644 sv-se/brainfuck-sv.html.markdown diff --git a/cs-cz/bf.html.markdown b/cs-cz/bf.html.markdown new file mode 100644 index 00000000..8d451964 --- /dev/null +++ b/cs-cz/bf.html.markdown @@ -0,0 +1,87 @@ +--- +language: bf +contributors: + - ["Prajit Ramachandran", "http://prajitr.github.io/"] + - ["Mathias Bynens", "http://mathiasbynens.be/"] +translators: + - ["Vojta Svoboda", "https://github.com/vojtasvoboda/"] +filename: learnbrainfuck-cz.bf +lang: cs-cz +--- + +Brainfuck (psaný bez kapitálek s vyjímkou začátku věty) je extrémně minimální +Turingovsky kompletní (ekvivalentní) programovací jazyk a má pouze 8 příkazů. + +Můžete si ho vyzkoušet přímo v prohlížeči s [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/). + +``` +Jakýkoliv znak mimo "><+-.,[]" (bez uvozovek) je ignorován. + +Brainfuck je reprezentován jako pole, které má 30.000 buněk s počátkem v nule +a datovým ukazatelem na aktuální buňce. + +Můžeme využít těchto osm příkazů: ++ : Přičte k aktuální buňce jedničku. +- : Odečte od aktuální buňky jedničku. +> : Posune datový ukazatel na další buňku, která je napravo. +< : Posune datový ukazatel na předchozí buňku, která je nalevo. +. : Vytiskne ASCII hodnotu aktuální buňky (například 65 = 'A'). +, : Načte jeden znak do aktuální buňky. +[ : Pokud je hodnota aktuální buňky nulová, přeskočí na buňku odpovídající ] . + Jinak skočí na další instrukci. +] : Pokud je hodnota aktuální buňky nulova, přeskočí na další instrukci. + Jinak skočí zpět na instrukci odpovídající [ . + +[ a ] tak tvoří 'while' smyčku a tyto symboly musí tak být v páru. + +Pojďme se mrknout na některé brainfuck programy. + +++++++ [ > ++++++++++ < - ] > +++++ . + +Tento program vypíše písmeno 'A' (v ASCII je to číslo 65). Nejdříve navýší +buňku #1 na hodnotu 6. Buňka #1 bude použita pro smyčku. Potom program vstoupí +do smyčky ([) a sníží hodnotu buňky #1 o jedničku. Ve smyčce zvýší hodnotu +buňky #2 desetkrát, vrátí ze zpět na buňku #1 a sníží její hodnotu o jedničku. +Toto se stane šestkrát (je potřeba šestkrát snížit hodnotu buňky #1, aby byla +nulová a program přeskočil na konec cyklu označený znakem ]. + +Na konci smyčky, kdy jsme na buňce #1 (která má hodnotu 0), tak má buňka #2 +hodnotu 60. Přesuneme se na buňku #2 a pětkrát zvýšíme její hodnotu o jedničku +na hodnotu 65. Na konci vypíšeme hodnotu buňky #2 - 65, což je v ASCII znak 'A' +na terminálu. + + +, [ > + < - ] > . + +Tento program přečte znak z uživatelského vstupu a zkopíruje ho do buňky #1. +Poté začne smyčka - přesun na buňku #2, zvýšení hodnoty buňky #2 o jedničku, +přesun zpět na buňku #1 a snížení její hodnoty o jedničku. Takto smyčka pokračuje +do té doby, než je buňka #1 nulová a buňka #2 nabyde původní hodnotu buňky #1. +Protože jsme na buňce #1, přesuneme se na buňku #2 a vytiskneme její hodnotu +v ASCII. + +Je dobré vědět, že mezery jsou v programu uvedené pouze z důvodu čitelnosti. +Program je možné klidně zapsat i takto: + +,[>+<-]>. + + +Nyní se podívejte na tento program a zkuste zjistit co dělá: + +,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> + +Tento program vezme dvě čísla ze vstupu a vynásobí je. + +Program nejdříve načte dvě vstupní hodnoty. Poté začíná smyčka řízená hodnotou +v buňce #1 - přesun na buňku #2 a start druhé vnořené smyčky, která je řízená +hodnotou v buňce #2 a zvyšuje hodnotu v buňce #3. Nicméně je zde problém +kdy na konci vnitřní smyčky je v buňce #2 nula a smyčka by tak znovu +napokračovala. Vyřešíme to tak, že zvyšujeme o jedničku i buňku #4 a její +hodnotu poté překopírujeme do buňky #2. Na konci programu je v buňce #3 +výsledek. +``` + +A to je brainbuck. Zase tak složitý není, co? Zkuste si nyní napsat nějaký +vlastní brainfuck program a nebo interpretr v jiném jazyce, což není zase +tak složité, ale pokud jste opravdový masochista, zkuste si naprogramovat +interpretr jazyka brainfuck v jazyce... brainfuck :) diff --git a/cs-cz/brainfuck.html.markdown b/cs-cz/brainfuck.html.markdown deleted file mode 100644 index 8d451964..00000000 --- a/cs-cz/brainfuck.html.markdown +++ /dev/null @@ -1,87 +0,0 @@ ---- -language: bf -contributors: - - ["Prajit Ramachandran", "http://prajitr.github.io/"] - - ["Mathias Bynens", "http://mathiasbynens.be/"] -translators: - - ["Vojta Svoboda", "https://github.com/vojtasvoboda/"] -filename: learnbrainfuck-cz.bf -lang: cs-cz ---- - -Brainfuck (psaný bez kapitálek s vyjímkou začátku věty) je extrémně minimální -Turingovsky kompletní (ekvivalentní) programovací jazyk a má pouze 8 příkazů. - -Můžete si ho vyzkoušet přímo v prohlížeči s [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/). - -``` -Jakýkoliv znak mimo "><+-.,[]" (bez uvozovek) je ignorován. - -Brainfuck je reprezentován jako pole, které má 30.000 buněk s počátkem v nule -a datovým ukazatelem na aktuální buňce. - -Můžeme využít těchto osm příkazů: -+ : Přičte k aktuální buňce jedničku. -- : Odečte od aktuální buňky jedničku. -> : Posune datový ukazatel na další buňku, která je napravo. -< : Posune datový ukazatel na předchozí buňku, která je nalevo. -. : Vytiskne ASCII hodnotu aktuální buňky (například 65 = 'A'). -, : Načte jeden znak do aktuální buňky. -[ : Pokud je hodnota aktuální buňky nulová, přeskočí na buňku odpovídající ] . - Jinak skočí na další instrukci. -] : Pokud je hodnota aktuální buňky nulova, přeskočí na další instrukci. - Jinak skočí zpět na instrukci odpovídající [ . - -[ a ] tak tvoří 'while' smyčku a tyto symboly musí tak být v páru. - -Pojďme se mrknout na některé brainfuck programy. - -++++++ [ > ++++++++++ < - ] > +++++ . - -Tento program vypíše písmeno 'A' (v ASCII je to číslo 65). Nejdříve navýší -buňku #1 na hodnotu 6. Buňka #1 bude použita pro smyčku. Potom program vstoupí -do smyčky ([) a sníží hodnotu buňky #1 o jedničku. Ve smyčce zvýší hodnotu -buňky #2 desetkrát, vrátí ze zpět na buňku #1 a sníží její hodnotu o jedničku. -Toto se stane šestkrát (je potřeba šestkrát snížit hodnotu buňky #1, aby byla -nulová a program přeskočil na konec cyklu označený znakem ]. - -Na konci smyčky, kdy jsme na buňce #1 (která má hodnotu 0), tak má buňka #2 -hodnotu 60. Přesuneme se na buňku #2 a pětkrát zvýšíme její hodnotu o jedničku -na hodnotu 65. Na konci vypíšeme hodnotu buňky #2 - 65, což je v ASCII znak 'A' -na terminálu. - - -, [ > + < - ] > . - -Tento program přečte znak z uživatelského vstupu a zkopíruje ho do buňky #1. -Poté začne smyčka - přesun na buňku #2, zvýšení hodnoty buňky #2 o jedničku, -přesun zpět na buňku #1 a snížení její hodnoty o jedničku. Takto smyčka pokračuje -do té doby, než je buňka #1 nulová a buňka #2 nabyde původní hodnotu buňky #1. -Protože jsme na buňce #1, přesuneme se na buňku #2 a vytiskneme její hodnotu -v ASCII. - -Je dobré vědět, že mezery jsou v programu uvedené pouze z důvodu čitelnosti. -Program je možné klidně zapsat i takto: - -,[>+<-]>. - - -Nyní se podívejte na tento program a zkuste zjistit co dělá: - -,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> - -Tento program vezme dvě čísla ze vstupu a vynásobí je. - -Program nejdříve načte dvě vstupní hodnoty. Poté začíná smyčka řízená hodnotou -v buňce #1 - přesun na buňku #2 a start druhé vnořené smyčky, která je řízená -hodnotou v buňce #2 a zvyšuje hodnotu v buňce #3. Nicméně je zde problém -kdy na konci vnitřní smyčky je v buňce #2 nula a smyčka by tak znovu -napokračovala. Vyřešíme to tak, že zvyšujeme o jedničku i buňku #4 a její -hodnotu poté překopírujeme do buňky #2. Na konci programu je v buňce #3 -výsledek. -``` - -A to je brainbuck. Zase tak složitý není, co? Zkuste si nyní napsat nějaký -vlastní brainfuck program a nebo interpretr v jiném jazyce, což není zase -tak složité, ale pokud jste opravdový masochista, zkuste si naprogramovat -interpretr jazyka brainfuck v jazyce... brainfuck :) diff --git a/de-de/bf-de.html.markdown b/de-de/bf-de.html.markdown new file mode 100644 index 00000000..09f01cd2 --- /dev/null +++ b/de-de/bf-de.html.markdown @@ -0,0 +1,89 @@ +--- +language: bf +contributors: + - ["Prajit Ramachandran", "http://prajitr.github.io/"] + - ["Mathias Bynens", "http://mathiasbynens.be/"] +translators: + - ["urfuchs", "https://github.com/urfuchs"] +filename: brainfuck-de.bf +lang: de-de + +--- + +Brainfuck ist eine extrem minimalistische Turing-vollständige Programmiersprache +mit lediglich 8 Befehlen. + +Mit dem [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/) kann +Brainfuck im Browser ausprobiert werden. + +``` +Alle Zeichen außer "><+-.,[]" (ohne die Klammern) werden ignoriert. + +Brainfuck besteht aus einem Array mit unendlich vielen Elementen, die alle mit Null initalisiert +sind und einem Datenzeiger auf das aktuelle Element. + +Es gibt acht Befehle: ++ : Erhöht den Wert an der aktuellen Stelle um Eins. +- : Verringert den Wert an der aktuellen Stelle um Eins. +> : Bewegt den Zeiger um eine Stelle weiter. +< : Bewegt den Zeiger um eine Stelle zurück. +. : Gibt den Wert der aktuellen Zelle als ASCII Wert aus (z.B. 65 = 'A'). +, : Liest ein einzelnes Zeichen von der Standardeingabe und speichert dessen ASCII Wert in der aktuellen Zelle. +[ : Wenn der Wert des aktuellen Elements Null ist, bewege des Zeiger hinter den + zugehörigen ]-Befehl. + Ansonsten, bewege den Zeiger ein Element weiter. +] : Wenn der Wert des aktuellen Elements Null ist, bewege des Zeiger um eine Stelle + weiter. + Ansonsten, bewege den Zeiger hinter den zugehörigen [-Befehl. + +[ und ] bilden eine while-Schleife. Offensichtlich müssen sie paarweise vorkommen. + +Schauen wir uns einige grundlegende Programme an. + +++++++ [ > ++++++++++ < - ] > +++++ . + +Dieses Programm gibt den Buchstaben 'A' aus. Zunächst erhöht es den Wert der 1. Zelle auf 6. +Diese erste Zelle wird für die Schleife verwendet. Danach beginnt das Programm +die Schleife ([) und geht vor zu Zelle #2. Es erhöht den Zellwert inkrementell 10 Mal, geht dann zurück +zu Zelle #1, und verringert Zelle #1. Diese Schleife wird 6 Mal durchlaufen (nach 6 +Durchläufen ist der Wert der Zelle #1 auf 0 reduziert, dadurch wird die Schleife abgebrochen +und das Programm hinter dem korrespondierenden ] fortgesetzt). + +An dieser Stelle befinden wir uns an Zelle #1, die jetzt den Wert 0 hat, während Zelle #2 +den Wert 60 hat. Wir gehen vor zu Zelle #2, inkrementieren 5 Mal, bis zum Wert 65, +und geben dann den Wert der Zelle #2 aus. 65 ist ein 'A' im ASCII Zeichensatz, +daher wird 'A' am Terminal ausgegeben.. + + +, [ > + < - ] > . + +Dieses Programm liest ein Zeichen von der Benutzereingabe und schreibt dessen Wert +in Zelle #1. Danach beginnt eine Schleife. Rücke vor auf Zelle #2, erhöhe den Wert der Zelle #2, +gehe zurück auf Zelle #1, verringere den Wert der Zelle #1. Dies geht solange bis +Zelle #1 den Wert 0 und Zelle #2 den alten Wert aus #1 hat. Da wir am Ende der Schleife +bie Zelle #1 sind, gehe vor zu Zelle #2 und gibt denb Wert als ASCII Zeichen aus. + +Beachte biite, dass die Leerzeichen nur aus Gründen der Lesbarkeit geschrieben werden. +Man könnte genauso schreiben: + +,[>+<-]>. + +Versuche herauszufinden, was dieses Programm macht: + +,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> + +Dieses Programm nimmt zwei Zahlen als Eingabe und multipliziert sie. + +Im Wesentlichen liest es zunächst zwei Werte ein. Dann beginnt die äußere Schleife +mit Zelle #1 als Zähler. Danach geht das Programm zu Zelle #2 vor und startet die innere Schleife +mit Zelle #2 als Zähler. Diese zählt Zelle #3 hoch. Es gibt jedoch ein Problem: +Am Ende der inneren Schleife hat Zelle #2 den Wert Null. Daher würde die innere +Schleife beim nächsten Durchgang nicht mehr funktionieren. Daher wird auch Zelle #4 +erhöht und anschließend in Zelle #2 zurückkopiert. +Am Ende steht in Zelle #3 das Ergebnis. +``` + +Das ist Brainfuck. Nicht so schwierig, oder? Zum Spaß kannst du dein eigenes Brainfuck +Programm schreiben oder du schreibst einen Brainfuck Interpreter in einer anderen +Programmiersprache. Der Interpreter lässt sich ziemlich einfach implementieren. +Falls du Masochist bist, kannst du auch versuchen, einen Brainfuck Interpreter in Brainfuck zu implementieren. diff --git a/de-de/brainfuck-de.html.markdown b/de-de/brainfuck-de.html.markdown deleted file mode 100644 index 09f01cd2..00000000 --- a/de-de/brainfuck-de.html.markdown +++ /dev/null @@ -1,89 +0,0 @@ ---- -language: bf -contributors: - - ["Prajit Ramachandran", "http://prajitr.github.io/"] - - ["Mathias Bynens", "http://mathiasbynens.be/"] -translators: - - ["urfuchs", "https://github.com/urfuchs"] -filename: brainfuck-de.bf -lang: de-de - ---- - -Brainfuck ist eine extrem minimalistische Turing-vollständige Programmiersprache -mit lediglich 8 Befehlen. - -Mit dem [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/) kann -Brainfuck im Browser ausprobiert werden. - -``` -Alle Zeichen außer "><+-.,[]" (ohne die Klammern) werden ignoriert. - -Brainfuck besteht aus einem Array mit unendlich vielen Elementen, die alle mit Null initalisiert -sind und einem Datenzeiger auf das aktuelle Element. - -Es gibt acht Befehle: -+ : Erhöht den Wert an der aktuellen Stelle um Eins. -- : Verringert den Wert an der aktuellen Stelle um Eins. -> : Bewegt den Zeiger um eine Stelle weiter. -< : Bewegt den Zeiger um eine Stelle zurück. -. : Gibt den Wert der aktuellen Zelle als ASCII Wert aus (z.B. 65 = 'A'). -, : Liest ein einzelnes Zeichen von der Standardeingabe und speichert dessen ASCII Wert in der aktuellen Zelle. -[ : Wenn der Wert des aktuellen Elements Null ist, bewege des Zeiger hinter den - zugehörigen ]-Befehl. - Ansonsten, bewege den Zeiger ein Element weiter. -] : Wenn der Wert des aktuellen Elements Null ist, bewege des Zeiger um eine Stelle - weiter. - Ansonsten, bewege den Zeiger hinter den zugehörigen [-Befehl. - -[ und ] bilden eine while-Schleife. Offensichtlich müssen sie paarweise vorkommen. - -Schauen wir uns einige grundlegende Programme an. - -++++++ [ > ++++++++++ < - ] > +++++ . - -Dieses Programm gibt den Buchstaben 'A' aus. Zunächst erhöht es den Wert der 1. Zelle auf 6. -Diese erste Zelle wird für die Schleife verwendet. Danach beginnt das Programm -die Schleife ([) und geht vor zu Zelle #2. Es erhöht den Zellwert inkrementell 10 Mal, geht dann zurück -zu Zelle #1, und verringert Zelle #1. Diese Schleife wird 6 Mal durchlaufen (nach 6 -Durchläufen ist der Wert der Zelle #1 auf 0 reduziert, dadurch wird die Schleife abgebrochen -und das Programm hinter dem korrespondierenden ] fortgesetzt). - -An dieser Stelle befinden wir uns an Zelle #1, die jetzt den Wert 0 hat, während Zelle #2 -den Wert 60 hat. Wir gehen vor zu Zelle #2, inkrementieren 5 Mal, bis zum Wert 65, -und geben dann den Wert der Zelle #2 aus. 65 ist ein 'A' im ASCII Zeichensatz, -daher wird 'A' am Terminal ausgegeben.. - - -, [ > + < - ] > . - -Dieses Programm liest ein Zeichen von der Benutzereingabe und schreibt dessen Wert -in Zelle #1. Danach beginnt eine Schleife. Rücke vor auf Zelle #2, erhöhe den Wert der Zelle #2, -gehe zurück auf Zelle #1, verringere den Wert der Zelle #1. Dies geht solange bis -Zelle #1 den Wert 0 und Zelle #2 den alten Wert aus #1 hat. Da wir am Ende der Schleife -bie Zelle #1 sind, gehe vor zu Zelle #2 und gibt denb Wert als ASCII Zeichen aus. - -Beachte biite, dass die Leerzeichen nur aus Gründen der Lesbarkeit geschrieben werden. -Man könnte genauso schreiben: - -,[>+<-]>. - -Versuche herauszufinden, was dieses Programm macht: - -,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> - -Dieses Programm nimmt zwei Zahlen als Eingabe und multipliziert sie. - -Im Wesentlichen liest es zunächst zwei Werte ein. Dann beginnt die äußere Schleife -mit Zelle #1 als Zähler. Danach geht das Programm zu Zelle #2 vor und startet die innere Schleife -mit Zelle #2 als Zähler. Diese zählt Zelle #3 hoch. Es gibt jedoch ein Problem: -Am Ende der inneren Schleife hat Zelle #2 den Wert Null. Daher würde die innere -Schleife beim nächsten Durchgang nicht mehr funktionieren. Daher wird auch Zelle #4 -erhöht und anschließend in Zelle #2 zurückkopiert. -Am Ende steht in Zelle #3 das Ergebnis. -``` - -Das ist Brainfuck. Nicht so schwierig, oder? Zum Spaß kannst du dein eigenes Brainfuck -Programm schreiben oder du schreibst einen Brainfuck Interpreter in einer anderen -Programmiersprache. Der Interpreter lässt sich ziemlich einfach implementieren. -Falls du Masochist bist, kannst du auch versuchen, einen Brainfuck Interpreter in Brainfuck zu implementieren. diff --git a/sv-se/bf-sv.html.markdown b/sv-se/bf-sv.html.markdown new file mode 100644 index 00000000..b96c1839 --- /dev/null +++ b/sv-se/bf-sv.html.markdown @@ -0,0 +1,86 @@ +--- +language: bf +filename: brainfuck-sv.bf +contributors: + - ["Prajit Ramachandran", "http://prajitr.github.io/"] + - ["Mathias Bynens", "http://mathiasbynens.be/"] +translators: + - ["Richard Lindberg", "https://github.com/Lidenburg"] +lang: sv-se +--- + +Brainfuck (ej versaliserat förutom vid ny mening) är ett extremt +minimalistiskt Turing-komplett programmeringsspråk med endast 8 kommandon. + +Du kan testa brainfuck i din webbläsare via [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/). + +``` +Alla karaktärer förutom "><+-.,[]" (inte inkluderat citattecken) ignoreras. + +Brainfuck är representerat av ett fält med 30 000 celler initialiserade till +noll och en data pekare som pekar på den valda cellen. + +Det finns åtta kommandon: ++ : Ökar värdet av den valda cellen med ett. +- : Minskar värdet av den valda cellen med ett. +> : Flyttar data pekaren till nästa cell (cellen till höger). +< : Flyttar data pekaren till förra cellen (cellen till vänster). +. : Skriver ut ASCII värdet av den valda cellen (t.ex. 65 = 'A'). +, : Läser in en karaktär till den valda cellen. +[ : Om värdet vid den valda cellen är noll, hoppa till matchande ]. + Annars fortsätts till nästa instruktion. +] : Om värdet vid den valda cellen är noll, fortsätt till nästa instruktion. + Annars, gå tillbaka till matchande ]. + +[ och ] formar en while loop. + +Nedan är ett exempel på ett simpelt brainfuck program. + +++++++ [ > ++++++++++ < - ] > +++++ . + +Programmet skriver ut bokstaven 'A'. Först ökar den värdet av cell #1 till 6. +Cell #1 kommer att användas för att loopa. Sen börjar den loopen (vid '[') och +flyttar till cell #2. Den ökar värdet av cell #2 10 gånger, går tillbaka till +cell #1 och minskar den med 1. Den gör det här 6 gånger (så många iterationer +det tar för cell #1 att bli noll). + +Nu är programmet på cell #1, vilket har ett värde av 0 och cell #2 har värdet 60. +Programmet flyttar pekaren till cell #2 och ökar värdet med 5, vilket leder till +att cell #2 har ett värde av 65 (vilket är bokstaven 'A' i ASCII), sedan skriver +den ut cell #2 och bokstaven 'A' skrivs ut till skärmen. + + +, [ > + < - ] > . + +Det här programmet läser en karaktär från användaren och kopierar karaktären +till cell #1. Sedan startas en loop. Pekaren flyttas till cell #2, värder ökas +med ett, pekaren flyttas tillbaka till cell #1 och minskar värdet med ett. +Det här fortsätter tills cell #1 innehåller noll och cell #2 innehåller det +värde som cell #1 innehöll från början. Eftersom att programmet vid slutet av +loopen är på cell #1 flyttas pekaren till cell #2 och sedan skriver den ut +värdet av cell #2 i ASCII. + +Värt att komma ihåg är att programmet ovan kan skrivas utan mellanslag också: + +,[>+<-]>. + + +Försök och lista ut vad det här programmet gör: + +,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> + +Programmet tar två nummer som indata, och multiplicerar dem. + +Kärnan av det är att den först läser in två tal/bokstäver. Sedan startar +den yttre loopen som beror på cell #1. Sedan går den vidare till cell #2 och +startar den innre loopen som beror på cell #2 och ökar cell #3. Men det uppstår +ett problem: Vid slutet av den innre loopen är cell #2 noll. Vilket betyder att +den inre loopen inte kommer att fungera tills nästa gång. För att lösa det här +problemet ökas också cell #4 som sedan kopieras till cell #2. +Sedan är resultatet i cell #3. +``` + +Och det är brainfuck. Inte så svårt va? För skojs skull kan du skriva dina egna +brainfuck program, eller skriva en egen brainfuck interpretator i ett annat +språk. interpretatorn är ganska simpel att implementera, men om man är en +masochist, testa att skriva en brainfuck interpretator… i brainfuck. diff --git a/sv-se/brainfuck-sv.html.markdown b/sv-se/brainfuck-sv.html.markdown deleted file mode 100644 index b96c1839..00000000 --- a/sv-se/brainfuck-sv.html.markdown +++ /dev/null @@ -1,86 +0,0 @@ ---- -language: bf -filename: brainfuck-sv.bf -contributors: - - ["Prajit Ramachandran", "http://prajitr.github.io/"] - - ["Mathias Bynens", "http://mathiasbynens.be/"] -translators: - - ["Richard Lindberg", "https://github.com/Lidenburg"] -lang: sv-se ---- - -Brainfuck (ej versaliserat förutom vid ny mening) är ett extremt -minimalistiskt Turing-komplett programmeringsspråk med endast 8 kommandon. - -Du kan testa brainfuck i din webbläsare via [brainfuck-visualizer](http://fatiherikli.github.io/brainfuck-visualizer/). - -``` -Alla karaktärer förutom "><+-.,[]" (inte inkluderat citattecken) ignoreras. - -Brainfuck är representerat av ett fält med 30 000 celler initialiserade till -noll och en data pekare som pekar på den valda cellen. - -Det finns åtta kommandon: -+ : Ökar värdet av den valda cellen med ett. -- : Minskar värdet av den valda cellen med ett. -> : Flyttar data pekaren till nästa cell (cellen till höger). -< : Flyttar data pekaren till förra cellen (cellen till vänster). -. : Skriver ut ASCII värdet av den valda cellen (t.ex. 65 = 'A'). -, : Läser in en karaktär till den valda cellen. -[ : Om värdet vid den valda cellen är noll, hoppa till matchande ]. - Annars fortsätts till nästa instruktion. -] : Om värdet vid den valda cellen är noll, fortsätt till nästa instruktion. - Annars, gå tillbaka till matchande ]. - -[ och ] formar en while loop. - -Nedan är ett exempel på ett simpelt brainfuck program. - -++++++ [ > ++++++++++ < - ] > +++++ . - -Programmet skriver ut bokstaven 'A'. Först ökar den värdet av cell #1 till 6. -Cell #1 kommer att användas för att loopa. Sen börjar den loopen (vid '[') och -flyttar till cell #2. Den ökar värdet av cell #2 10 gånger, går tillbaka till -cell #1 och minskar den med 1. Den gör det här 6 gånger (så många iterationer -det tar för cell #1 att bli noll). - -Nu är programmet på cell #1, vilket har ett värde av 0 och cell #2 har värdet 60. -Programmet flyttar pekaren till cell #2 och ökar värdet med 5, vilket leder till -att cell #2 har ett värde av 65 (vilket är bokstaven 'A' i ASCII), sedan skriver -den ut cell #2 och bokstaven 'A' skrivs ut till skärmen. - - -, [ > + < - ] > . - -Det här programmet läser en karaktär från användaren och kopierar karaktären -till cell #1. Sedan startas en loop. Pekaren flyttas till cell #2, värder ökas -med ett, pekaren flyttas tillbaka till cell #1 och minskar värdet med ett. -Det här fortsätter tills cell #1 innehåller noll och cell #2 innehåller det -värde som cell #1 innehöll från början. Eftersom att programmet vid slutet av -loopen är på cell #1 flyttas pekaren till cell #2 och sedan skriver den ut -värdet av cell #2 i ASCII. - -Värt att komma ihåg är att programmet ovan kan skrivas utan mellanslag också: - -,[>+<-]>. - - -Försök och lista ut vad det här programmet gör: - -,>,< [ > [ >+ >+ << -] >> [- << + >>] <<< -] >> - -Programmet tar två nummer som indata, och multiplicerar dem. - -Kärnan av det är att den först läser in två tal/bokstäver. Sedan startar -den yttre loopen som beror på cell #1. Sedan går den vidare till cell #2 och -startar den innre loopen som beror på cell #2 och ökar cell #3. Men det uppstår -ett problem: Vid slutet av den innre loopen är cell #2 noll. Vilket betyder att -den inre loopen inte kommer att fungera tills nästa gång. För att lösa det här -problemet ökas också cell #4 som sedan kopieras till cell #2. -Sedan är resultatet i cell #3. -``` - -Och det är brainfuck. Inte så svårt va? För skojs skull kan du skriva dina egna -brainfuck program, eller skriva en egen brainfuck interpretator i ett annat -språk. interpretatorn är ganska simpel att implementera, men om man är en -masochist, testa att skriva en brainfuck interpretator… i brainfuck. -- cgit v1.2.3