go-sort - 課題

プロジェクト概要

go-sort は、様々なソートアルゴリズムを実装し、それらの特性を理解する課題です。push_swap に相当する Go 版として、スタック操作とアルゴリズム最適化を学びます。

提出ファイル

go-sort/
├── go.mod
├── sort.go           # ソートアルゴリズム
├── stack.go          # スタック実装
├── operations.go     # スタック操作
└── sort_test.go      # テスト

マンダトリー要件

スタック操作

// スタック A と B に対する操作
func (s *Stacks) Sa()   // スタックAの先頭2要素を交換
func (s *Stacks) Sb()   // スタックBの先頭2要素を交換
func (s *Stacks) Ss()   // SaとSbを同時実行
func (s *Stacks) Pa()   // スタックBの先頭をAにプッシュ
func (s *Stacks) Pb()   // スタックAの先頭をBにプッシュ
func (s *Stacks) Ra()   // スタックAを上にローテート
func (s *Stacks) Rb()   // スタックBを上にローテート
func (s *Stacks) Rr()   // RaとRbを同時実行
func (s *Stacks) Rra()  // スタックAを下にローテート
func (s *Stacks) Rrb()  // スタックBを下にローテート
func (s *Stacks) Rrr()  // RraとRrbを同時実行

ソート関数

// Sort は整数スライスをソートし、操作列を返す
func Sort(numbers []int) []string

制約

要素数 目標操作数
3 3以下
5 12以下
100 700以下
500 5500以下

ボーナス要件

  • チェッカープログラムの実装
  • 可視化ツール
  • 禁止事項

  • sort パッケージの使用禁止
  • 外部ライブラリの使用禁止