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パッケージの使用禁止- 外部ライブラリの使用禁止