Sortieren Sie Daten auf einem Stapel
In diesem Projekt werden Sie Daten auf einem Stapel mit einer begrenzten Reihe von Anweisungen sortieren, wobei Sie die niedrigstmögliche Anzahl von Aktionen verwenden. Um erfolgreich zu sein, müssen Sie verschiedene Arten von Algorithmen manipulieren und die am besten geeignete Lösung (von vielen) für eine optimierte Datensortierung auswählen. Version: 6 .
Sie können den Betreff lesen: push_swap.pdf
Sortieren Sie eine zufällige Liste von Ganzzahlen mit der geringsten Anzahl von Bewegungen, 2 Stapeln und einer begrenzten Operationsmenge.
Sie beginnen mit zwei leeren Stapeln: a und b . Sie erhalten eine zufällige Liste von Ganzzahlen über Befehlszeilenargumente.
Nur diese Bewegungen sind erlaubt:
sa : Tauschen Sie A - Tauschen Sie die ersten 2 Elemente oben im Stapel a aus. Tun Sie nichts, wenn es nur eine oder keine Elemente gibt).sb : Tauschen Sie B - Tauschen Sie die ersten 2 Elemente auf Stapel b. Tun Sie nichts, wenn es nur eine oder keine Elemente gibt).ss : sa und sb gleichzeitig.pa : Drücken Sie A - Nehmen Sie das erste Element oben in B und legen Sie es oben auf A. Tun Sie nichts, wenn B leer ist.pb : Push B - Nehmen Sie das erste Element oben auf A und legen Sie es oben auf B. Tun Sie nichts, wenn a leer ist.ra : Drehen Sie A - Verschieben Sie alle Elemente von Stapel A durch 1. Das erste Element wird zum letzten.rb : Drehen Sie B - Verschieben Sie alle Elemente von Stapel B um 1. Das erste Element wird zum letzten.rr : ra und rb gleichzeitig.rra : Umgekehrt drehen A - Verschieben Sie alle Elemente von Stapel A durch 1. Das letzte Element wird zum ersten.rrb : Umgekehrter drehen B - Verschieben Sie alle Elemente von Stapel B um 1. Das letzte Element wird zum ersten.rrr : rra und rrb gleichzeitig. Am Ende muss Stack B leer leer und alle Ganzzahlen müssen in Stack A sein und in aufsteigender Reihenfolge sortiert.
Erstellen Sie zwei Programme: checker und push_swap .
Das checker -Programm liest eine zufällige Liste von Ganzzahlen aus dem Stdin, speichert sie und prüft, ob sie sortiert sind.
Das push_swap -Programm berechnet die Bewegungen, um die Ganzzahlen zu sortieren - drücken, knallten, tauschen und zwischen Stapel A und Stapel B rotieren - und zeigt diese Anweisungen auf dem STDOut an.
Sie können push_swap in checker einteilen, und checker überprüfen, dass die Anweisungen von push_swap erfolgreich waren.
Beide Programme müssen Eingaben für Fehler, einschließlich leerer Zeichenfolgen, keine Parameter, nicht numerischen Parameter, Duplikate und ungültigen/nicht existierenden Anweisungen, zwingend analysieren.
Push_Swap muss der 42 -Norm entsprechen.
Die Verwendung normaler libc -Funktionen ist streng verboten. Die Schüler dürfen jedoch verwenden: write , read , malloc , free , exit . Es darf keine Speicherlecks haben. Fehler müssen sorgfältig behandelt werden.
In keiner Weise kann es auf unerwartete Weise beenden (Segmentierungsfehler, Busfehler, doppeltfrei usw.).
Alle Fehler wie: falsche Befehle, Erlaubnis zu Dateien und usw. müssen behandelt werden.
Tester