Seite 13 von 16

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 08:19
von Sirius-2337
631

Code: Alles auswählen

EnableExplicit
Global a,d,f,j,m,n,h.s,c.s=h,i.s
Macro U
h=Input()
EndMacro
Macro W
EndIf
EndMacro
OpenConsole()
Print("Filename (blank to use std in)...?")
U
If ReadFile(1,h)
Repeat
i+ReadString(1)
Until Eof(1)
Else
U
While h
i+h
U
Wend
W
h=i
While h
m+1
h=Mid(i,m,1)
n=FindString("+-<>.,[]",h)
If n
c+h
W
j-n/7*(n*2-15)
Wend
i="Uneven brackets"
If j=0
Dim k(d)
m=@c
While PeekA(m)
n=PeekA(m)-44
i=h
If n<2
k(f)-n
W
If n=0
If h=i
U
W
k(f)=Asc(h)
h=Mid(h,2)
W
If n>46
a=(k(f)XOr n/49)!1*(48-n)
j=a
While j
m+a
j-((PeekA(m)/23)!3-3)/3
Wend
ElseIf n>2
f+n-17
If f<0
i="Memory pointer out of range"
Break
W
d+1
ReDim k(d)
W
If n=2
Print(Chr(k(f)))
W
m+1
Wend
W
Print(i+RSet("Press ENTER to exit",22,#LF$))
U

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 10:24
von c4s
622

Code: Alles auswählen

EnableExplicit
Global a,f,j,m,n,h.s,c.s=h,i.s
Macro U
h=Input()
EndMacro
Macro W
EndIf
EndMacro
OpenConsole()
Print("Filename (blank to use std in)...?")
U
If ReadFile(1,h)
Repeat
i+ReadString(1)
Until Eof(1)
Else
U
While h
i+h
U
Wend
W
h=i
While h
m+1
h=Mid(i,m,1)
n=FindString("+-<>.,[]",h)
If n
c+h
W
j-n/7*(n*2-15)
Wend
i="Uneven brackets"
If j=0
Dim k(Len(c))
m=@c
While PeekA(m)
i=h
n=PeekA(m)-44
If n<2
k(f)-n
W
If n=0
If h=""
U
W
k(f)=Asc(h)
h=Mid(h,2)
W
If n>46
a=(k(f)XOr n/49)!1*(48-n)
j=a
While j
m+a
j-((PeekA(m)/23)!3-3)/3
Wend
ElseIf n>2
f+n-17
If f<0
i="Memory pointer out of range"
Break
W
W
If n=2
Print(Chr(k(f)))
W
m+1
Wend
W
Print(i+RSet("Press ENTER to exit",22,#LF$))
U
Edit: Fehler behoben?! http://www.purebasic.fr/german/viewtopi ... 58#p301358

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 10:45
von 7x7
c4s hat geschrieben:

Code: Alles auswählen

Dim k(Len(c))
:(

Das kannst du knicken, c4s! Da gibt es nämlich noch die Zeilen 46-51 ! :mrgreen:

Code: Alles auswählen

If h=i
U
W
k(f)=Asc(h)
h=Mid(h,2)
W
Aktuell ist also immer noch Sirius mit 631

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 10:52
von c4s
@7x7
Trotzdem wird doch kein größeres Array benötigt?! Bitte erklären. :o

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 11:06
von 7x7
c4s hat geschrieben:@7x7
Trotzdem wird doch kein größeres Array benötigt?! Bitte erklären. :o
Eigentlich...hast Recht! :mrgreen:

Hatte nämlich in einer früheren Phase auch schon mal diesen Gedanken, aber wieder verworfen aus o.g.Gründen. Hatte
aber nicht überrissen, dass der Brainfuck-Code davon gar nicht tangiert wird.

Also, wenn sonst niemand Einwände hat, passt's :D

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 11:22
von c4s
Edit:
Code entfernt, da nicht gültig (siehe 7x7).

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 11:34
von 7x7
:cry: Ich habe es befürchtet !!! Es ist eingetreten!

Dieses "i=h" in ehemals Zeile 40 ist ein BUG!! Weil es das ehemals "45 If h=i" ad absurdum führte. Es müsste eigentlich
lauten: "45 If h="": Hat nur keiner drauf geachtet, weil keiner ein "," im BF-Code setzt.

"i=h" gehört vor "38 While PeekA(m)" und natürlich die Abfrage "If h=i" wieder eingesetzt werden um die ordentliche Funktion zu gewährleisten.

Sorry c4s, dein code funktioniert so nicht!!

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 11:58
von helpy
STARGÅTE hat geschrieben:Ich stimme helpy zu.
Die letzte änderung ist auf jedenfall nicht gültig, da sie die Funktion des Programm eindeutig geändert hat.
Ich meinte nicht nur diese Änderung!
Schon viel früher (ab dem Beitrag http://purebasic.fr/german/viewtopic.ph ... 24#p301224) wurde bereits die Fehlerabfrage von OpenConsole() gekürzt!

Wenn schon solch ein Contest, dann sollte auch die komplette Funktionalität des Ausgangscodes erhalten bleiben ... auch alle Ausgaben und Fehlerabfragen!

Nur so kann z.B. ein Neueinsteiger den Original-Code nehmen, von Null beginnen und einen Beitrag zum Contest beitragen.
Aber so ist ein fairer Vergleich erst gar nicht möglich!

lg,
guido

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 12:02
von ts-soft
Muss nächstes mal alles genauer festgelegt werden. Hier ist es sowieso schon zu spät, selbst der Ausgangscode entspricht
nicht den Vorgaben, was die Richtigkeit ja sowieso addabsordum führt.

Re: Wäre es nicht mal wieder an der Zeit...

Verfasst: 19.04.2012 12:37
von c4s
@7x7
OK, ich hab den Code wieder entfernt. Hatte mich schon gefragt warum dort steht:

Code: Alles auswählen

i=h
if h=i
<)


Dann ist http://www.purebasic.fr/german/viewtopi ... 53#p301353 aktuell? Oder kann man sowieso alles in die Tonne treten? :(