Posts by __blackjack__

Registriere dich jetzt, um exklusive Vorteile zu genießen! Als registriertes Mitglied kannst du Inhalte herunterladen und profitierst von einem werbefreien Forum.
Mach mit und werde Teil unserer Community!

    Wenn man Rechenleistung hat, braucht man heute am Tag 6 nicht viel Nachdenken — das kann man einfach brutal auszählen, auch wenn es für Teil 2 ein paar Sekunden braucht auf meinem Bürorechner.


    Wenn man weniger leistungsfähige Hardware verwendet, *hust* VIC-20 *hust*, dann muss man ein bisschen Nachdenken welche Eigenschaften der Möglichen Versuche man ausnutzen kann um nicht tatsächlich alle durchrechnen zu müssen. Dabei kann eine Visualisierung der Werte aus dem Aufgabenbeispiel hilfreich sein, die man sich beispielsweise auf einem Epson-kompatiblen (9-)Nadeldrucker mit folgendem BASIC-Programm erstellen kann:

    Für Leute die aus irgendwelchen nicht wirklich nachvollziehbaren Gründen so etwas nicht zur Hand haben:

    AlexanderX Nee, da kommt zum überwiegenden Teil kein passender Code heraus. Das funktioniert bei Standardhausaufgaben und Minimalbeispielen die 100-tausendfach so ähnlich im Netz stehen. Nicht bei realen, individuellen Aufgaben. Da muss man so weit programmieren können um die Antworten bewerten und korrigieren zu können, dass man es einfach selber hätte schreiben können. Oder die Leute die das nicht können, schlagen dann mit so kaputtem Zeugs in Foren auf und wollen das von anderen geradegebogen bekommen.


    Franky07 Kannst Du bitte aufhören Bilder von Quelltext zu posten?


    fred0815 ``for zeile in datei:`` iteriert schon über die Datei. Wenn Du *in* der Schleife dann noch ein `readline()` machst, dann ”klaust” Du der Schleife jede zweite Zeile die nicht mehr zu `zeile` werden kann.


    Das mit dem Ausgabedatei jedes mal mit "a" öffnen ist nicht gut. Neben dem Aufwand, erweitert das auch bei jedem Lauf diese Datei, statt mit einer leeren Datei anzufangen.


    Kann eigentlich nur eine IP pro Zeile auftreten? Und *tritt* in *jeder* Zeile auch eine IP auf?

    Tag 4 in BASIC (Laufzeit 14 Minuten und 40 Sekunden):

    Tag 5 in Python war echt Programmierarbeit 🤓. Was man hier nicht sieht ist der ganze Code der für Teil 2 ersetzt wurde damit der für beide Teile funktioniert:

    Lösung für Tag 3 in Python, weil BASIC recht aufwändig war und ich da nicht mal mit Teil 1 fertig geworden bin (obwohl das machbar sein sollte):

    Tag 4 sollte in BASIC kein Problem sein. Teil 1 habe ich heute morgen schon gemacht. Teil 2 mache ich heute abend.

    keepfear Also das `EmaiMessage`-Objekt würde man wohl am besten in der Funktion erstellen deren Name so klingt als würde sie das tun. Objekte erstellen, befüllen, und danach leeren oder zurücksetzen ist ungewöhnlich, weil fehleranfällig.


    Zwei Funktionen nützen nichts solange das auf eine gemeinsam genutzte Hardware-Ressource zugreift: die Kamera (und dann die eine Datei die das erzeugt und liest).

    Also ich finde das ja massiv schräg wo dieses `EmailMessage`-Objekt erstellt wird. Das ist doch total unübersichtlich das über das Programm verteilt zu befüllen und dann wieder zu leeren, statt da einfach bei Bedarf ein frisches neues zu erstellen. `create_message()` würde sich da anbieten, denn dem Namen nach würde man genau *dort* erwarten, dass so ein Objekt auch tatsächlich *erstellt* wird.


    Was auch noch unsauber, beziehungsweise eigentlich wirklich fehlerhaft ist: `task()` wird aus zwei Threads aus aufgerufen. Wenn das mal gleichzeitig passiert — viel Spass.

    Die 3½ minütige Oldtimer-Fahrt von Tag 2:

    Brokenbalon Um noch auf die Frage im ersten Beitrag einzugehen: Ja, ROM-Inhalte wie ein BIOS ist Software, und da gibt es Urheberrechte. In diesem Bereich ist also vieles nicht legal was man da aus dem Netz herunterladen kann, man wird oft nur den Hinweis „such im Netz danach“ bei Anleitungen finden. Insbesondere wenn es bei Plattformen wie YouTube ist, wo man das Benutzerkonto verlieren kann wenn man Links auf illegale Inhalte postet. Zwar nicht gleich sofort beim ersten mal, aber warum das Risiko überhaupt erst eingehen. Und auf der anderen Seite findet man das allermeiste auch sehr leicht.

    framp Es ist nicht so sehr das BASIC was ich liebe, sondern diese Rechner und die Erfahrung. Das ist wie Oldtimer fahren, wo es ja sicher auch genug Leute gibt die nicht so wirklich verstehen wie man sich ein altes Auto ohne den heutigen Komfort antun kann.


    Das CBM BASIC V2 war meine erste Programmiersprache. Ich hatte den C64 zu Weihnachten bekommen und gleich an dem Abend das Handbuch durchgearbeitet, was zum Hauptteil aus einer Beschreibung von dem BASIC und vielen Beispielprogrammen besteht. Als ich durch war, wurde es draussen schon langsam wieder hell.


    Jetzt mit dem VIC-20, gleiche Programmiersprache, aber wegen der RAM-Einschränkung als zusätzliche Herausforderung. Und der ist ein kleines bisschen schneller als der C64.


    Einrückung wäre möglich, aber da das während der Ausführung jedes mal ”überlesen” werden muss, geht das auf die Laufzeit. Und natürlich auch auf den Speicherverbrauch. Bei den ersten beiden Puzzles noch kein Problem, aber wenn man anfängt Arrays zu benötigen können die 3½ KiB RAM schnell eng werden. Im Python-Forum gab es neulich mal einen Algorithmus um viele Nachkommastellen von der Euler'schen Zahl e zu berechnen, mit eigentlich 1.000 Stellen wo ich auf 350 Stellen runtergehen musste, weil das RAM nicht ausgereicht hätte die 1.000 in einem Integer-Array zu halten. Allerdings konnte ich das Programm so anpassen, das es die 1.000 Stellen direkt auf den Drucker ausgegeben hat. 😀


    Ausserdem hat man auf dem VIC-20 nur 23×22 Zeichen, da will man eigentlich keinen Platz mit Einrückung verschwenden, die man sowieso nicht wirklich sehen kann in dem kleinen Ausschnitt den man in das Programm hat. Das bringt nur ausgedruckt etwas, oder wenn man das auf Rechner exportiert, die mehr Zeichen auf den Bildschirm bringen können. Das könnte dann so aussehen (habe ich jetzt nur auf dem PC geändert und nicht laufen lassen):


    GOTO kann man auch verantwortlich(er) verwenden. Es gibt halt nur die FOR-Schleife und kein ELSE in CBM BASIC V2, also muss man sich zum Beispiel eine WHILE-Schleife die alle Zeilen verarbeitet mit IF und GOTO umschreiben. Das bleibt ja trotzdem noch ein strukturiertes Programm und wird damit nicht automatisch zu Spaghetti-Code. *Das* ist ja das was Dijkstra in dem Paper anprangert — Spaghetti-Code.


    Da ich neulich einen BBC Micro B in Aktion gesehen habe bin ich am überlegen ob ich mir im Laufe des nächsten Jahres so einen zulege. Die sind in 🇬🇧 recht verbreitet gewesen und dementsprechend gar nicht so teuer zu bekommen. Das BBC BASIC auf den Geräten ist auch aus den frühen 80ern, aber kein Microsoft-BASIC-Dialekt, sondern eine Eigenentwicklung. Das hat (einzeiliges) IF … THEN … ELSE, REPEAT … UNTIL, und benannte Prozeduren und Funktionen in denen man sogar lokale Variablen deklarieren kann. Und das BASIC hat einen Assembler eingebaut. Der Rechner ist so etwas wie der spirituelle Urgrossvater vom Raspi. Da haben sie auch das mit den A und B Modellen her. Der BBC MIcro A ist eine abgespecktere Variante vom B.

    Wie letztes Jahr versuche ich mein Glück wieder, wo möglich, mit einem VIC-20 (≈1 Mhz 6502 Prozessor, Grundausstattung von 3½ KiB Arbeitsspeicher für BASIC (Programm + Daten), furchtbar langsames Diskettenlaufwerk 🤓).


    Bei Tag 1 braucht der zweite Aufgabenteil viel Zeit. Teil 1wäre in 5½ Minuten durch, aber beide Teile zusammen brauchen 38 Minuten und 22 Sekunden für 1.000 Eingabezeilen, ≈22 KiB:

    Brokenbalon *Der* Emulator dafür ist wohl Citra, der hat aber recht heftige CPU Anforderungen. Und ich weiss nicht ob die OpenGL (ES) oder Vulcan-API-Versionen vom Emulator zu dem passen was der Raspi 4 bietet. Man müsste sich da auch selber mit der Kompilierung und dem testen herumschlagen — ich habe jedenfalls auf die Schnelle nichts fertiges gefunden.

    Brokenbalon Also das Linux an sich wird wohl von nichts in dem Ordner betroffen sein, aber die Frage ist was RetroPie aus diesem Verzeichnis braucht.


    Es wäre vielleicht grundsätzlich eine gute Idee die SD-Karte mal zu kopieren, bevor Du etwas löschst. Oder statt zu löschen was auf den noch freien Platz auf dem USB-Speicher verschieben.

    Die grössen wären ja auch interessant zu wissen gewesen. Aber grundsätzlich wäre es jetzt interessant was in /home so von was viel Platz verbraucht wird.


    Und/oder auch mal df eingeben und schauen ob /boot eventuell zu voll ist.