Ich hab mir noch nicht mal Zeit nehmen können, die Regeln anzuschauen.
Mache ich aber die Tage.
Du bist in Begriff, Forum64 zu verlassen, um auf die folgende Adresse weitergeleitet zu werden:
Bitte beachte, dass wir für den Inhalt der Zielseite nicht verantwortlich sind und unsere Datenschutzbestimmungen dort keine Anwendung finden.
letzter Beitrag von atomcode am
Ich hab mir noch nicht mal Zeit nehmen können, die Regeln anzuschauen.
Mache ich aber die Tage.
hm, dann probier ich auch mal. Scheint ja so viel Zeit nicht in Anspruch zu nehmen. Eine Frage vorher: Was wird als Ausgang vorausgesetzt, der Startbildschirm mit Einschaltmeldung?
Der Inhalt des Bildschirms, die Farben und das Muster sollen also komplett identisch sein.
Muss das Bild dauerhaft sichtbar bleiben, oder reicht es, wenn es einmal korrekt aufgebaut wurde und somit im Prinzip schon die Forderung erfüllt hat?
Ich muss allerdings zugeben, dass ich eine allgemeine Linienaufgabe, also eine zusammenhängende Linie zu zeichnen, von x1/y1 nach x2/y2 interessanter gefunden hätte.
Danke, aber da tut's nicht stehen, sondern nur das, was hier auch steht.
ZitatAlles anzeigenMake a BASIC programm that creates the image above 1:1
Same shape, colors, etc.
No additional characters, cursor, etc.
Use BASIC but do not include own assembler code
Make the size of the PRG file as small as possible
The best hand-in will be used per person
Ok, dann bin ich raus.
Müssen andere was dazu sagen.
Viel erfolg, und Spass bei dem Basic Wettbewerg.
Brotscheibe
Für alle die wie ich die letzte Stunde damit verbracht haben eine gewisse Logik herauszufinden wie man dieses X am geschicktesten ( oder überhaupt erst in Basic ) mit Inversen-Spaces auf den Screen bekommt der sollte sich unbedingt als Tip/Ansatz den Link zum Assembler Wettbewerb aus dem 1. Posting ansehen.
Implementiert man den dort stehenden Assembler Code in Basic V2, landet man bei 6 Zeilen Basic Code ( geht natürlich auch mit weniger Zeilen ) und unoptimiert bei 117 Bytes und das X ist auf dem Schirm.
Es gibt eine "Formel" um dieses X darzustellen.
Ich komme mir gerade etwas verarscht vor... sonst klicke ich auch immer jeden Link direkt an, nur heute nicht...
Ciao Dirk
Für alle die wie ich die letzte Stunde damit verbracht haben eine gewisse Logik herauszufinden wie man dieses X am geschicktesten ( oder überhaupt erst in Basic ) mit Inversen-Spaces auf den Screen bekommt der sollte sich unbedingt als Tip/Ansatz den Link zum Assembler Wettbewerb aus dem 1. Posting ansehen.
Ich habe den Link auch entdeckt, aber erst nachdem ich meine Lösung hatte. War auch ein wenig enttäuscht, dass da der (oder zumindest ein) Lösungsansatz schon vorgegeben war. Nun ja, immerhin gibt es trotzdem verschiedene Arten der Optimierung und wer weiss, vielleicht gibt es noch einen ganz andere Weg, das Kreuz zu erreichen. Bin jedenfalls gespannt auf die Lösungen.
So, bin auch bei 79 Bytes angekommen, scheint wohl eine magische Schwelle zu sein.
Man könnte aber auch einfach ein ?chr$(118) machen und sagen, dass man nicht nur den Code, sondern auch noch gleich das Bild selbst verkleinert hat.
Habe meine Lösung doch noch ein bisschen optimieren können auf...
77 Bytes (MD5 Hash: 206b0cf6032a363136044ea54102a455 )
Hab probiert, die Differenz zwischen den Linien zu alternieren (D=24-D), um mit nur einem POKE auszukommen. Funktioniert zwar, aber war 2 Bytes mehr.
Mache ich aber die Tage.
Prima. Freu mich drauf!
Es gibt eine "Formel" um dieses X darzustellen.
Ja, schlussendlich läuft alles auf eine Formel / einen Algorithmus hinaus.
Ok, dann bin ich raus.
Weil kein Assembler erlaubt ist? Einen Assembler-Wettbewerb gab es übrigens schon.
sonst klicke ich auch immer jeden Link direkt an, nur heute nicht...
Ziel wäre es ja an und für sich (aus meiner Sicht), selbst etwas zu entwickeln.
Zum Glück ist Assembler von BASIC was den Byte-Verbrauch betrifft, sehr weit entfernt.
Ein Assembler-Byte braucht in einer BASIC DATA Zeile im schlimmsten Fall mit Komma 4 Bytes (z.B. 255,). Das READ nicht mit eingerechnet
... War auch ein wenig enttäuscht, dass da der (oder zumindest ein) Lösungsansatz schon vorgegeben war.
Ja, das nimmt einerseits den Spaß, andererseits ist dann auch nicht mehr wirklich 100%ig die eigene Leistung...
hm, dann probier ich auch mal. Scheint ja so viel Zeit nicht in Anspruch zu nehmen. Eine Frage vorher: Was wird als Ausgang vorausgesetzt, der Startbildschirm mit Einschaltmeldung?
Genau! Alles andere müsste man ja sonst angeben.
Muss das Bild dauerhaft sichtbar bleiben, oder reicht es, wenn es einmal korrekt aufgebaut wurde und somit im Prinzip schon die Forderung erfüllt hat?
Dauerhaft. Guter Punkt...
Ich muss allerdings zugeben, dass ich eine allgemeine Linienaufgabe, also eine zusammenhängende Linie zu zeichnen, von x1/y1 nach x2/y2 interessanter gefunden hätte.
Mag wohl sein. Vielleicht macht ja noch jemand einen Wettbewerb für dieses Szenario.
Je allgemeiner die Aufgabe allerdings ist, desto schwieriger wird es sein, spezielle Lösungen zu kontrollieren, ob sie passend sind.
Ja, das nimmt einerseits den Spaß, andererseits ist dann auch nicht mehr wirklich 100%ig die eigene Leistung...
Und der Lerneffekt ist immens höher, wenn man den idealen Lösungsweg erst finden muss. Hatte zuerst auch den Ansatz über Print-Statements probiert aber dann relativ schnell gemerkt, dass man auf diese Byte-Grösse (<100) nur über einen Algorithmus kommen kann. Habe durch diese Challenge auch neue Erkenntnisse erhalten, was mir für einen nächsten Zehnzeiler-Wettbewerb zu Gute kommen könnte.
Ich habe eben festgestellt, dass die Bytes, die das "CBM prg Studio" anzeigt nicht identisch mit jenen von der Datei sind.
Die Datei ist um 4 Bytes größer, wobei man 3 davon abschneiden kann, wenn gewissen Bedingungen passen.
Welche Größe sollen wir nun nehmen?
Welche Größe habt ihr genommen?
Ich nahm die vom Studio, da es einfach zu handhaben war. Aber sie ist auch die kleinste.
Allerdings Dateigröße: 77 bytes
Die Datei ist um 4 Bytes größer,
Wahrscheinlich, weil auf Disk die Startadresse und die beiden $00-Bytes am Programmende mitzählen?
Arndt
Wahrscheinlich, weil auf Disk die Startadresse und die beiden $00-Bytes am Programmende mitzählen?
Ja, dem ist wohl so.
Weißt du zufällig, wofür dann die drittletzte Null ist? Könnte das Zeilenende sein, vermute ich.
Ladeadresse $01 $08 am Anfang und $00 $00 Next-Line-Pointer Terminator am Ende eines jeden BASIC-Programmes.
Einfach beim CBM prg Studio "Size"-Wert noch 4 Bytes dazurechnen, um auf die Filelänge zu kommen.
Damit bin ich also wieder bei 81 Bytes. Hatte mich mit meinen 77 Bytes leider auch auf die Angabe im CBM prg Studio gestützt.
Die drittletzte Null bestimmt das Ende einer BASIC-Zeile. Hier ist das schön beschrieben: https://www.c64-wiki.com/wiki/BASIC_token
Danke wizball6502, da wurde jetzt einiges zurecht gerückt.
Und ich bin nicht der einzige, der "reingefallen" ist.
Hat den jemand ohne "CBM prg Studio" gearbeitet?
Ich hatte einfach PETCAT genommen kurz
Bitte aber nicht als Compo-entry betrachten. Ich stecke zu tief in einer anderen compo mit baldiger Deadline um mich da numerisch ranzufriemeln
Wie habt ihr denn die md5sum genommen wenn nicht ueber das komplette PRG mit voller Laenge?
Wie habt ihr denn die md5sum genommen wenn nicht ueber das komplette PRG mit voller Laenge?
Zuerst hatte ich das Listing (also den Text) aus dem CBM prg Studio in eine x-beliebige MD5-Hash-Berechner-Web-Seite copy/pasted und daraus dann den MD5-Hash berechnen lassen.
Seit ich aber weiss, dass die Länge des PRG-FIles zählt bzw. Logiker dann darüber die Überprüfung macht, habe ich mein .prg File über diese Seite raufgeladen: http://onlinemd5.com/ .
Einfach mal nach "online md5 upload" gesucht und dann hat Google diese Seite ausgespuckt. Vertrauenswürdig? In diesem Fall war es mir egal
Die Filegrösse wird da übrigens auch gleich angezeigt.
Schlussendlich ist es aber egal. Der MD5 Hash dient lediglich dazu, nachträglich beweisen zu können, dass man zum Zeitpunkt des Einreichens, eine Lösung hatte, die diesem Hash entspricht.
Es gibt in diesem Fall also keinen Hash-Code der mit einer bestimmten Ideallösung vom Urheber des Wettbewerbs übereinstimmen muss.
Wichtig ist aber, dass man dieses erzeugte File zusammen mit dem Hash-Tag auf die Seite legt. Damit Logiker später einen erneuten MD5-Hash des erhaltenen Files (oder des Listings) machen und überprüfen kann, ob derselbe Hash-Tag dabei rauskommt.