魔術師をめざして

魔術師を目指して、相場・数学・プログラム言語を研究しています。

#9999 解答

 

#9999 問題
-------------------------------------------------
1から、1000まの整数のリストがある。並びは、順不同。

このリストを nums とする。
このリストの要素を小さい数から大きい数へと順序正しく並び替えよ。

また、数値、数字、文字列など、順序の定義可能なデータ型すべての並べ替えが可能な、汎用の関数「sort」を作れ。
-------------------------------------------------

#999 解答
-------------------------------------------------
--sort関数の定義
quick Sort Function powered by Haskell

sort =
sort x:xs = sort smaller ++ [x] ++ sort larger
where
smaller = [a| a <- xs, a <= x]
larger = [b| b <- xs, b > x]

--numsの並べ替え

sortedNums = sort nums --sort関数一発で解決
-------------------------------------------------
説明:
sort関数は、順序構造(Ord)があ型のリストなら、どんなデータ型であっても汎用的に使える。例えば、文字列のリストとか。
本題は、ハスケルの強力さと汎用性、それに、美しさが分かる例である。