[Java] TuringMaschinen Band - wie umsetzen ?!

Dieses Thema im Forum "Programmierung & Entwicklung" wurde erstellt von J1Lock, 11. Januar 2012 .

Schlagworte:
Status des Themas:
Es sind keine weiteren Antworten möglich.
  1. 11. Januar 2012
    TuringMaschinen Band - wie umsetzen ?!

    Moin,

    ich brauch mal schnell eure Hilfe !

    Ich muss eine Turing-Maschine implementieren und brauch dafür ein unendlich langes Speicherband. (siehe Turingmaschine )

    Sprich ich muss ein Speicherband haben, und immer auf jeden index zu greifen können, auch wenn er noch nicht manuell initialisiert worden ist. (theoretisch unendlich, praktisch reicht auch im Bereich des Werte von INT)

    Wie kann ich das am besten implementieren ? Ne einfache LinkedList geht nicht, weil ich dann a) keine negativen indizes ansprechen kann und b) die Methode set() nur anwenden kann, wenn dort vorher schon etwas drinstand.
     
  2. 11. Januar 2012
    AW: TuringMaschinen Band - wie umsetzen ?!

    es gibt sowieso keine collections bei denen du negative indices ansprechen kannst.
    Ich hab schon richtgi verstanden, dass du eine Klasse Turingmaschine anlegen musst oder?

    Dann würde ich halt eine Collection für die negativen Indices(die auch positiv sind) anlegen und eine für die positiven. Und im parameter einer dieser Methoden z.b. getValue(index1) und wenns negativ ist nimmst die für negative werte und wenns positiv ist die für positive.
     
  3. 12. Januar 2012
    AW: TuringMaschinen Band - wie umsetzen ?!

    Jo, habs nun so ähnlich gemacht, mit zwei Listen und der aktuellen Lesekopfposition.

    Danke für den Denkanstoß !
    Spoiler
    Code:
    public static class Band {
     LinkedList<Character> bl = new LinkedList<Character>();
     LinkedList<Character> br = new LinkedList<Character>();
     
     char bn = 'b';
    
     public char read() {
     return bn;
     }
    
     public void write(char c) {
     bn = c;
     }
    
     public void moveR() {
     bl.addLast(bn);
     if (br.isEmpty())
     br.addFirst('b');
     bn = br.pollFirst();
     }
    
     public void moveL() {
     br.addFirst(bn);
     if (bl.isEmpty())
     bl.addLast('b');
     bn = bl.pollLast();
     }
     }
    
     
  4. Video Script

    Videos zum Themenbereich

    * gefundene Videos auf YouTube, anhand der Überschrift.