1) push_swap - subject



Mandatory part


1.プログラム名


push_swap

2. Makefile


必須

3.グローバル変数


禁止する

4.Libftの使用


かもしれません.

5.0ポイント処理


Segmentation fault, bus error, double free, memory leaks

6.外部関数


write, read, malloc, free, exit

7.説明


このゲームはaとbという2つのスタックから構成されています.
  • ゲームは以下の状態から始まります.
    -aは、重複しない負数または譲受数を含む.
    -bは空です.
  • ターゲットは、スタックaの数を昇順に並べ替えることである.
  • 8.必要な演算命令


  • sa:swapa-スタックaの一番上の2つの要素(または最初の面要素と2番目の要素)を位置を交換します.

  • sb:swap b-スタックbの一番上の2つの要素(または1番目と2番目の要素)を位置を交換します.

  • ss:saとsbを同時に実行します.

  • pa:push a-スタックbから最上位(タワー)の要素を取得し、スタックaの最上位(タワー)に入れる.スタックbは空で、何もしません.

  • pb:push b-スタックaから最上位(タワー)の要素を取得し、スタックbの最上位(タワー)に入れる.スタックaは空で、何もしません.

  • ra:rotate a-スタックaのすべての要素を1つ上にインデックスします.最初のエレメント(タワー)が最後のエレメント(データム)になります.

  • rb:rotate b-スタックbのすべての要素をインデックスに上げます.最初のエレメント(タワー)が最後のエレメント(データム)になります.

  • rr:raとrbは同時に動作します.

  • rra:reverse rotate a-スタックaのすべての要素がインデックスを下げます.最後の要素(データム)が最初の要素(タワー)になります.

  • rrb:bスタックb内のすべての要素を逆回転してインデックスを1つ下げます.最後の要素(データム)が最初の要素(タワー)になります.

  • rrr:rraとrrbを同時に実行します.
  • -------------------------------------------------------------------------------
    Init a and b:
    2
    1
    3
    6
    5
    8
    _ _
    a b
    -------------------------------------------------------------------------------
    Exec sa:
    1
    2
    3
    6
    5
    8
    _ _
    a b
    -------------------------------------------------------------------------------
    Exec pb pb pb:
    6 3
    5 2
    8 1
    _ _
    a b
    -------------------------------------------------------------------------------
    Exec ra rb (equiv. to rr):
    5 2
    8 1
    6 3
    _ _
    a b
    -------------------------------------------------------------------------------
    Exec rra rrb (equiv. to rrr):
    6 3
    5 2
    8 1
    _ _
    a b
    -------------------------------------------------------------------------------
    Exec sa:
    5 3
    6 2
    8 1
    _ _
    a b
    -------------------------------------------------------------------------------
    Exec pa pa pa:
    1
    2
    3
    5
    6
    8
    _ _
    a b
    -------------------------------------------------------------------------------

    10.「push swap」プログラム


  • push swapというプログラムを書く必要があります.このプログラムは、スタックaに入る値を整数リストにフォーマットし、パラメータ形式で受信する.最初の因子はスタックの塔になります(注意順序).

  • プログラムは、スタックaをソートするためにできるだけ少ないコマンドリストを出力しなければならない.

  • コマンドは「n」のみに分けてください.

  • ターゲットは、可能な限り少ない命令セットでスタックをソートすることです.評価中に、プログラムからエクスポートされたコマンドの数を、許容される最大タスク数と比較します.プログラムが大きすぎるリストやリストが正しくソートされていない場合は、スコアを取得できません.

  • エラーの場合は、エラーと改行(「エラーn」)を標準エラーに出力します.エラーには、整数ではないパラメータ、整数範囲を超えているパラメータ、または重複しているパラメータの例があります.

  • push swap運転結果
    $> ./push_swap 2 1 3 6 5 8
    sa
    pb
    pb
    pb
    sa
    pa
    pa
    pa
    $> ./push_swap 0 one 2 3
    Error
    $>
    インスペクタを使用する場合
    $>ARG="4 67 3 87 23"; ./push_swap $ARG | wc -l
    6
    $>ARG="4 67 3 87 23"; ./push_swap $ARG | ./checker_OS $ARG
    OK
    $>