見出し画像

セグフォとの戦い


現在42 Tokyoでの課題である「push_swap」という課題に取り組んでいる。

どんな課題かというと、アルゴリズムを使って与えられた数列を小さい順に並べ替えるというものだ。

(実際はもう少し複雑な課題なのだが、簡単にいうと並べ替えの問題だ)

かれこれ40時間ほど費やしたのだが、とても苦戦している。

どこに困っているかというと、メモリー管理とアルゴリズムの実装だ。

メモリーの管理は、セグメーテンションフォールト(通称セグフォ)と戦っている。

セグフォとは、プログラム中で本来はアクセスしてはいけないメモリー領域(セグメント)にアクセスした場合に出されるエラーで、オペレーティングシステムのメモリー保護機能により検出されるものだ。

デバッガーを使って問題箇所を探り、修正しているが、次から次へと別の問題がでてきている。

アルゴリズムの実装も難しい。

とりあえず6個の数字までは並べ替えができるようになったが、それ以上の数字の並べ替えはもう少し時間がかかりそうだ。

アルゴリズムはクイックソートを使おうとしているが、実際にコードに落とすのが難しい。

一つのアルゴリズム、例えばクイックソートでも色々な実装の仕方があり、ネットや、他の人のコードから学びつつ、コードに落としこもうとしているが、なかなかうまく行かない。

ちなみに、色々なアルゴリズムが存在するが、アルゴリズムを選ぶのに参考になったのが下記サイトで、12種類のアルゴリズムをヴィジュアライズしているので、わかりやすい。

あと、ランダムな数字を指定した数だけつくるにはこのサイトが便利だ。


今週中にはこの課題を終わらせたい。


匿名のコメ・質問はmondまで👍 https://mond.how/ja/hovinci_jp