Brainfuck 2D

Hier kann alles mögliche diskutiert werden. Themen zu Purebasic sind hier erwünscht.
Flames und Spam kommen ungefragt in den Mülleimer.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Na das kann ja heiter werden. Das würde sogar mich mal interessieren.
Benutzeravatar
Rob
Shadow Admin
Beiträge: 258
Registriert: 26.08.2004 01:39
Kontaktdaten:

Beitrag von Rob »

> Das würde sogar mich mal interessieren.

Eigene Sprache oder BF2D-Optimierung?

Eigene Sprache ist auch eine gute Idee, doch braucht man dafür wieder viel mehr Wissen und Interesse an der Sache. Soviele Mitglieder haben wir hier auch nicht und nur wenige, die sich eigene Sprachen ausdenken. Mal sehn, vielleicht danach.

Ich lade das englische Forum dann auch wieder ein, wird bestimmt lustig :)
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
orange-blue
Beiträge: 556
Registriert: 04.09.2004 22:23
Kontaktdaten:

Beitrag von orange-blue »

yeah bin mal gespannt auf die Ergebnisse.
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Na, Rob?

Was ist jetzt? Schon was überlegt?

Ich warte schon die ganze Zeit auf einen neuen Wettbewerb. :mrgreen:
Benutzeravatar
Rob
Shadow Admin
Beiträge: 258
Registriert: 26.08.2004 01:39
Kontaktdaten:

Beitrag von Rob »

Morgen oder Freitag Nacht.
Build a man a fire and he's warm for a day. Set a man on fire and he's warm for the rest of his life
Benutzeravatar
AndyX
Beiträge: 1272
Registriert: 17.12.2004 20:10
Wohnort: Niederösterreich
Kontaktdaten:

Beitrag von AndyX »

OMG :o :o :o :o :shock: :shock:

Das ist echt krank!!! :o

Geht schon die Sprache lern ich :lol: :lol: :lol: :mrgreen:

Mfg,
AndyX
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Hier ist übrigens noch mein kleiner BrainFuck-Interpreter. Hab ich eben mal auf die Schnelle gecodet. Er benutzt keine Arrays, sondern LinkedLists, die man dafür wunderbar verwenden kann. Somit sind auch Pointer kleiner als Null und über mehreren tausend möglich bis eben der Speicher voll ist. Außerdem können Schleifen soweit verschachtelt sein wie sie wollen. Es klappt immer. Zumindest bis der Speicher voll ist. :D
Hier gibt es ein paar Codes zu finden.

Aber hier ist erstmal der Code:

Code: Alles auswählen

NewList BF_Buffer.l()
NewList BF_Loop.l()

Procedure.l BF_Compile(*Text.BYTE)
  Protected a.l, b.s
  OpenConsole()
  
  AddElement(BF_Buffer())
  AddElement(BF_Loop()) 
  
  While *Text\b
    Select *Text\b & $FF
      Case '+' : If BF_Buffer() < 255 : BF_Buffer() + 1 : EndIf
      Case '-' : If BF_Buffer() > 0   : BF_Buffer() - 1 : EndIf
      Case '['
        AddElement(BF_Loop()) : BF_Loop() = *Text
        If BF_Buffer() = 0 : a = 0 : Repeat
          Select *Text\b : Case 0 : Break 2 : Case '[' : a + 1 : Case ']' : a - 1 : If a = 0 : Break : EndIf : EndSelect
          *Text + 1 : ForEver : DeleteElement(BF_Loop())
        EndIf
      Case ']' : If BF_Buffer() = 0 : DeleteElement(BF_Loop()) : Else : *Text = BF_Loop() : EndIf
      Case '<' : If PreviousElement(BF_Buffer()) = 0 : InsertElement(BF_Buffer()) : EndIf
      Case '>' : If NextElement(BF_Buffer()) = 0 : AddElement(BF_Buffer()) : EndIf
      Case '.' : Print(Chr(BF_Buffer()))
      Case ',' : Repeat : b = Left(Inkey(), 1) : Delay(10) : Until b <> "" : a = Asc(b) : If a = 13 : a = 10 : PrintN("") : Else : Print(b) : EndIf : BF_Buffer() = a
    EndSelect
    *Text + 1
  Wend
  PrintN("")
  Print("Interpreter Ende - Druecken sie eine beliebige Taste zum Fortsetzen...")
  While Inkey() = "" : Delay(10) : Wend
  CloseConsole()
  ProcedureReturn #True
EndProcedure

BF.s = GetClipboardText()
BF_Compile(@BF)
Was?? Ihr findet den Code unübersichtlich?? Naja, ich wollte eben etwas Platz sparen. :mrgreen:

Primzahl-Test gefälligst?
Benutzeravatar
NicTheQuick
Ein Admin
Beiträge: 8809
Registriert: 29.08.2004 20:20
Computerausstattung: Ryzen 7 5800X, 64 GB DDR4-3200
Ubuntu 24.04.2 LTS
GeForce RTX 3080 Ti
Wohnort: Saarbrücken

Beitrag von NicTheQuick »

Wo gibt es denn noch andere in PureBasic geschriebene Brainfuck-Interpreter?
Benutzeravatar
Danilo
-= Anfänger =-
Beiträge: 2284
Registriert: 29.08.2004 03:07

Beitrag von Danilo »

NicTheQuick hat geschrieben:Wo gibt es denn noch andere in PureBasic geschriebene Brainfuck-Interpreter?
Such mal im alten Forum/Archiv nach "Brainfuck", da ist einiges drin.

Meiner ist da: Danilos kleiner Brainfuck-Interpreter ;)
cya,
...Danilo
"Ein Genie besteht zu 10% aus Inspiration und zu 90% aus Transpiration" - Max Planck
Antworten