Hallo Besucher, der Thread wurde 27k mal aufgerufen und enthält 135 Antworten

letzter Beitrag von detlef am

ASM-Compo #6: Ideensammlung

  • Ich wollte eine Umfrage aus MJ's Liste machen, aber es gehen nur 20 moegliche Bulletpoints.
    Da mussten wir uns einschranken. Komplexe/Aufwendige Sachen werden rausfliegen. Es soll ja auch ein Normalo in absehbarer Zeit was fertigstellen koennen und hoffentlich wie die letzten Compos im Bereich des Moeglichen evt. auch fuer ASM Anfaenger liegen.

  • Noch eine Idee: Magisches Quadrat auf den Text Screen in dezimal poken in 20x20 Feldern mit max zweistelligen Zahlen pro Feld.


    Diagonal-, Längs- und Quersummen müssen identisch sein.


    Das geht in Basic und Assembler und ist kein zu großes Ding, aber eine schöne kleine Kopfnuss.


    In Asm die Kürze des Codes und in Basic die Schnelligkeit über Ti.

  • Gibt nicht normalerweise der Gewinner der letzten ASM Compo das Thema vor?

    Ja, eigentlich schon. IIRC hat das leider die letzten 1-2 Mal nicht so geklappt.

  • Ich habe folgende Idee für eine Aufgabe:
    Stringvergleich mit Wildcards.


    Stellt euch vor Ihr möchtet eine Liste an Dateinameneinträgen filtern bzw. ihr möchtet nach Dateinameneinträgen suchen.
    Ein Dateinameneintrag hat den Aufbau: <Dateiname>.<Dateiendung><nullbyte>


    Der Suchstring kann
    - einen oder mehrer Platzhalter '?' für ein Zeichen beinhalten
    - max. 1 Wildcard-Zeichen '*' für den Dateinamen beinhalten
    - max. 1 Wildcard-Zeichen '*' für die Dateiendung beinhalten
    - kann max. 1 Trennzeichen '.' für die Markierung der Trennung zwischen Dateiname und Dateiendung beinhalten.


    Nach dem Wildcard-Zeichen soll kein Matching im Dateinamen oder in der Dateiendung mehr erfolgen, d.h. es markiert, falls es verwendet wird, die letzter Stelle des Dateinamens oder der Dateiendung im Suchstring.


    Die Funktion, die geschrieben werden soll, soll also
    - zwei nullbyte-terminierte Strings (einen Suchstring und einen Dateinameneintrag) miteinander vergleichen und zurückgeben, ob die Strings unter Berücksichtigung der Wildcards im Suchstring "gleich" sind oder nicht.
    - Es dürfen keine Kernal- oder Basicfunktionen verwendet werden.
    - Die Funktion soll möglichst klein sein.


    ------
    Man könnte die Aufgabe schwieriger gestalten:
    - Die Zeropage soll unter keinen Umständen verwendet werden, d.h. weder direkt, noch indexiert.


    oder einfacher:
    - Man könnte den Stringvergleich auf einfache Strings ohne Trennzeichen reduzieren, d.h. ein Suchstring kann einen oder mehrere Platzhalter '?' und max. ein Wildcard-Zeichen '*' enthalten.


    (((Ein Grundgerüst habe ich noch nicht, aber ich stelle mir das so vor, dass die Funktion auf zwei feste Zeiger im Speicher (, je nach Schwierigkeit der Aufgabe nicht zwangsläufig in der Zeropage!, ) mit den Startadressen der zu vergleichenden Strings zurückgreifen kann.)))


    Was haltet ihr von der Idee?

  • Grundgerüst (645 Bytes .prg ohne Vergleichsfunktion) im "Compodictator"-Style:
    (Wer möchte kann es natürlich verbessern.)


    f64-asmcompo6-main.asm


    Ich hoffe Ihr findet gefallen an der Idee/ dem Vorschlag.
    Als Deadline wähle ich mal selbst So., den 5.8.2018 um 23:59 Uhr, d.h. in 2 Wochen.
    Ich hoffe Ihr (bzw. jemand) macht mit.
    Fragen oder Unklarheiten könnt Ihr natürlich noch stellen.

  • Dann mache einen Vorschlag:4 Wochen bis zum 12.08.2018 23:59 Uhr oder länger ?

    Danke, das finde zeitlich ich fairer gegenüber Anfängern, die halt nicht so mal schnell ASM aus dem Ärmel schütteln.

  • Nur zur Info, als kurzen Zwischenstand bzw. als Messlatte oder Ansporn für eine noch unoptimierte COMPARE_STRING-Routine für die einfachste Form, d.h.
    - einfacher Stringvergleich mit mehreren möglichen Platzhaltern '?' und max. einem Wildcard-Zeichen '*', ohne Trennzeichen und mit Zeropage-index-nutzung in 35 Bytes.


    Der Suchstring lautet
    !text "G??FARB*",0


    und liefert als Ergebnis
    "G1 FARBDEMO.PRG"
    "G4 FARBDEMO.PRG"


    (((Der Code ist überhaupt nicht optimiert.)))
    Edit: jetzt sind es 32 Bytes für die einfachste Form.

  • Oh, das ist irgendwie total an mir vorbeigegangen. Ich glaube ein eigener Thread wäre ganz gut gewesen, um es ein bisschen sichtbarer zu machen. Obwohl, bei der Hitze hätte ich eh nix zusammengekriegt 8) ...