push swap(第1ステップ-課題概要)

2194 ワード

課題の説明


  • 整数値、2つのスタック、および2つのスタックを処理するための命令のセットを提供する.

  • ここでは、指定されたコマンドを使用して、入力された整数パラメータを効率的にソートするプログラムを作成します.
  • 課題目標または原因


  • ソートアルゴリズムの作成はエンコーダの一生の中で常に最も重要な意義を持っている.

  • 効率的なアルゴリズム構想を実現するために複雑さを考慮し,どのコードがより良いかを考慮した.

  • 接続リストと再帰関数を使用すると、ポインタとコードの範囲内のアクションフローがわかります.
  • タスク・ルール


  • aとbという2つのスタックからなる.

  • ソートは次の状態から開始します.
  • aは、重複しない負数または譲受数を含む.
  • bは空です.

  • ターゲットはスタックaの昇順で数字をソートすることである.

  • そのため、以下のような連想ができる.(コマンドセット)
  • sa(sb)[swapa(b)]:交換スタックa(b)の一番上の2つの要素の位置.
  • ss(saとsb):saとsbを同時に実行します.
  • pa(pb)[push a(b)]:スタックb(a)から最上位の要素を取得し、スタックa(b)の上部に入れる.スタックb(a)が空であれば、何も実行しない.
  • ra(rb)[rotata(b)]:スタックa(b)のすべての要素をインデックスにアップグレードします.->要素は上部から下部に移動する
  • .
  • rr(raとrb):raとrbを同時に実行します.
  • rra(b)[逆回転a(b)]:スタックa(b)内のすべての要素を1つのインデックスに下げます.->一番下の要素を上に移動します.
  • rrr(rraおよびrrb):rraおよびrrbを同時に実行します.

  • push swapというプログラムを書く必要があります.
  • プログラムは、スタックaに入る値を整数リストにフォーマットし、パラメータとして受信する.
  • 最初の因子はスタックの塔となる.
    1 2 3 4 5と入力すると、1はスタックのタワー、5はベースになります.
  • コマンドは「n」にのみ区別されます(オン).
  • プログラムの目的は、スタックをできるだけ少ない命令セットでソートすることである.(評価では、
  • がプログラム内のコマンド数を許容最大オペランドと比較している)
  • エラーの場合(入力パラメータが重複している場合、入力パラメータが整数範囲を超えています.一部のパラメータが整数でない場合)、標準エラーに「Errorn」を出力する必要があります.
  • $> ./push_swap 2 1 3 6 5 8
    sa
    pb
    pb
    pb
    sa
    pa
    pa
    pa
    $> ./push_swap 0 one 2 3
    Error
    $>

  • < bonus part >
  • checkerというプログラムを作成する必要があります.
  • このプログラムは、整数リスト形式のスタックaをパラメータとする.
  • 最初の因子はスタックの塔になります.
  • パラメータが指定されていない場合、checkerプログラムは終了し、画面に何も印刷されません.
  • checkerは、標準で読み出しコマンドを入力します.
  • 各コマンドは「n」の後に表示されます.
  • コマンドを読むと、checkerはパラメータとしてのスタック上で実行されます.
  • コマンドの実行後、スタックaがソートされ、スタックbが空の場合、チェックプログラムは「OKn」を標準出力に出力します.
    そうでなければ「KOn」を標準出力に出力します.
  • エラーが発生した場合(パラメータが整数でない場合、パラメータが整数範囲を超えています.入力パラメータに重複がある場合、コマンドが存在しない場合)、標準エラーに出力されます.
  • $> ./checker 3 2 1 0
    rra
    pb
    sa
    rra
    pa
    OK
    $> ./checker 3 2 1 0
    sa
    rra
    pb
    KO
    $> ./checker 3 2 one 0
    Error
    $>