2016-10-18 38 views
1

私はこのシンプルなものですが、この言語ではとても新しく、問題があります。 2つのリストが与えられた場合、どのリストが「より大きい」かを決定する関数を作成する最良の方法は何でしょうか。例えばOcamlの2つのリストを比較してください

:[1:2:3]及び[1:3:2]を返す[1:3:2]

これらのリストは、同じ長さである必要はありません:[1: 2]と[1:2:3]は[1:2:3]を返します。

ありがとうございます。 maxがあなたのためにこれを行います

+0

起動方法はあまりありません。これを行った:http://caml.inria.fr/pub/docs/manual-ocaml/libref/List.html –

+1

それから私はあなたにヒントを与えます。どちらがもっと大きくなるべきですか?[1; 3] '、または' [1; 2; 3] '?後者の場合は、最初にリストの長さを比較する必要があります。その場合、要素ごとにそれらを比較します。また、間違った実装から始めることもできます。実際に、ここに投稿して人々がデバッグを手助けできるようにすることができます。 – Yawar

+0

OK、別のヒント:上記の両方の部分を行うための組み込み関数が、リンク先のドキュメントにあります。最初の部分については、おそらくあなたは私が意味する機能を知っているでしょう。 2番目の部分については、「リストスキャン」セクションを参照してください。 – Yawar

答えて

3

事前に定義された機能:もちろん

# max [1;2;3] [1;3;2];; 
- : int list = [1; 3; 2] 
# max [1;2] [1;2;3];; 
- : int list = [1; 2; 3] 

は、それはあなたが「大規模」によって何を意味するかに依存します。 OCamlのビルトイン比較はlexicographic orderを使用します。他の注文を使いたいのであれば、実際に自分の関数を書く必要があります。

また、練習用に独自の関数を最初から書きたいと思うかもしれません。その場合、OCamlでリストを使う良い方法は、再帰を使うことです。再帰のいくつかのパターンを試してみてください。(まだ助けが必要な場合は)あなたの質問を更新して、あなたが試したことを示してください。

関連する問題