Matrix erstellen unter bestimmten Kriterien

Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

  • Matrix erstellen unter bestimmten Kriterien

    Hallo @all,

    also ich hab folgendes Problem.

    ich habe einen String A: grllr
    und ein String Daten: 01001
    g:grade;l:links,r:links

    jetzt möchte ich anhand von string A eine Zeichnung erstellen, das funktioniert.
    sieht da in etwa so aus:
    _ * _
    *|_|*

    wenn man jetzt jede Linie mit den einzelnen daten beschriftet, dann sieht man, dass die zweite linie 1 ist und die 4te 0 und diese linien sind parallel zu einander, also gibt es eine anziehung zwischen 1 und 0 (plus udn minus)

    anhand von Grafik kann ich ja dies nicht rauslesen oder?
    also hab ich eine Matrix angelegt wo ich nach bestimmten kriterien die Daten reinspeichere...für den obigen beispiel wäre die matrix:

    xxxxx
    0xxx1
    x1x0x
    xx0xx

    so wie man sieht es klappt, da ist die 1 und 0 auch gegenüber..es gibt aber Fälle wo das nicht hinhauet z.B hier: glrrgrg
    es müsste eigentlich 2 anziehungen geben...laut matrix aber nur 1
    хххх0х
    ххх1х0
    хх0хх1
    ххх10х

    jetzt ist die Frage wie sollte man am besten vorgehen?

    also die Randbedinungen sind: es fängt immer mit g an und es darf nie eine geschlossene Fläche entstehen.

    ich habe bis jetzt so gemacht:
    wenn ich nach E schaue und l gehen will, dann i--,j++; wenn ich nach East schaue und r gehen will, dann i++,j++; usw...weil l oder r können unterschiedlich sein je nachdem in welche richtung ich schaue...
  • hm, kannst du den bisherigen Code posten.
    Ich verstehe nicht ganz wie du von String A auf deine Zeichnung kommst.
    Weder wenn ich A alleine sehe, noch wenn ich versuche das zu kombinieren
    0xg
    1xr
    0xl
    0xl
    1xr

    Haut alles nicht hin.. also bitte erläutere nochmal den ersten Schritt.
    So habe ich auch keine Idee wie du die zweite und vierte Linie bestimmst.
  • also erstmal String A der die glr folge hat, hat mit String B der 01 hat nichts zutun, also sie werden unabhängig von einander generiert.

    String B ist sozusagen die Eingabe vom Benutzer, er gibt irgendeine folge von 0und1
    nehmen wir an 0100101.
    So mein programm entwickelt eine Kombination von glr folge, damit 0 und 1 möglichst oft gegenüber (parallel) liegen.
    dabei kommt das hier raus bsp:

    glrrgrg

    wenn man es auf papier zeichnet hat man ja sowas:
    da wo a ist ist der STart punkt
    * *_
    A_| * |
    *_ _ |

    jetzt möchte ich überprüfen wiegut meine Kombination war...sprich wieviel treffer hat man. Also muss ich ja gucken wo 1 und 0 gegenüber lieber und parallel sind.

    das wäre hier an der zweiten stelle zu 4 ; Und die erste zu letzten.
    Wenn ich meine Matrix erstelle nach dem Schema hier:
    if (nextR == 'l') {
    if (alterichtungSchauen == 0) {
    i++;
    j--;
    } else if (alterichtungSchauen == 1) {
    i++;
    j++;
    } else if (alterichtungSchauen == 2) {
    i--;
    j++;
    } else if (alterichtungSchauen == 3) {
    i--;
    j--;
    }
    usw...

    also ich prüfe immer in welche richtung ich gucke, nachdem ich gegangen bin und kann somit sagen wann ist L hoch und wann ist L nach links..hängt ja immer damit ab ob ich nach osten gucke ober z.B nach norden. (stell dir vor du bist vor einer Kreuzung)

    das Problem ist jetzt..dass durch die l,r folge man zuviel in der spalte geht, als wenn man grade gehen will.
    dadurch hat man diese matrix mit fehler:
    ххххxx0х
    хххxx1х0
    xxxx0хх1
    хххxx10х

    da ist die letzte 1 nicht unter der ersten 0 und die haben auch keinen abstand zwischeneinander..(was eigentlich sein soll)

    ich hab mir überlegt ich füge dann nicht einzelnen 0,1 ein sonder immer doppelt...
    d.h. ich hätte dann so eine Matrix:
    xxxxxx00
    ххххx1xх0
    хххxx1хx0
    xxxx00хх1
    хххxxxхx1
    xxxx1111x

    jetzt habe ich genau was ich haben will ...
    es gibt jetzt wiederum fälle wo das nicht hinhaut...
    z.B wenn ich sowas mache:
    da ist dann oben falsch..sind nicht direkt übereinander...
    xxxx000000
    xxxxxxxxxx1
    xxxxxxxxxx1
    xxx00xxx11
    xxxx1xx0
    xxxx1xx0
    xxxx1xx0
    xxxx1xx0
    xxxxx11x

    z.B. wenn ich so mache...dann stimmt es am ende wieder nicht...
    xxxxxxx00
    ххххxx1xх0
    хххxxx1хx0
    xxxx00ххx1
    хххxxxxхx1
    xxxxx1111x

    hm..momentan sieht so aus, als ob es immer zu fehler kommt wenn man nach osten guckt und r oder links gehen will... dann sollte man nur zeile bewegen...sonst zeile und spalte...[/quote]
  • ja genau hast schon richtig verstanden.
    Im Prinzip gibt der benutzer eine Folge von 101010101 irgendeine....1 ist plus, 0 ist minus.

    ein teil des programms generiert(was ich noch nicht weiß, wie ich das machen soll)
    eine folge von glr für die Eingabe..und dann muss ich prüfen wie gut diese generierte folge glr war. das heißt gab es viele 1er gegenüber von 0 (parallel,nicht hintereinander) und dafür muss ich das ja in einem doppeltem array abspeichern(matrix) ...übrigens das hab ich glaub ich jetzt gelöst....ich mache einfach für g nicht um 1 erhöhen sondern um 2 stellen, momentan klappen alle beispiele..also ich hab noch keinen Fall gehabt wo zu fehlern kamm.

    Jetzt muss ich nur noch diese glr folge generieren :) wer evtl. ideen hat ....wäre cool wenn ihr die posten könntet :) (es darf kein geschlossener raum entschlossen)