2013-04-22 6 views
-3

У меня есть некоторые проблемы с функциями Ocaml.Функция списка Ocaml

Определить функцию all_odd, которая для данной матрицы в качестве параметра проверяет, все ли элементы являются нечетными.

val all_odd : int list list -> bool = <fun> 

Пример:

#let matrix1 = [[1; 2]; [3; 4]];; 
val matrix1 : int list list = [[1; 2]; [3; 4]] 

#all_odd matrix1;; 
- : bool = false; 
+5

Вы попробовали что-нибудь? Покажите нам, что у вас есть. –

+2

Вы должны попытаться задать вопрос. – ahdaniels

ответ

2

Вы можете решить эту проблему во многом способе, но лучший подход должен были бы декомпозитной проблемой в простые.

  • Шаг 1: Какая наименьшая проблема решить? Как проверить, является ли число нечетное

    x mod 2 != 0

  • Шаг 2: Как использовать его для целого списка номеров

    let isOdd list = List.for_all (fun x -> x mod 2 != 0) list

  • Шаг 3: Как использовать его для матрицы

let all_odd matrix = 
    let isOdd list = List.for_all (fun x -> x mod 2 != 0) list in 
    List.for_all isOdd matrix 

Имеет смысл?

+0

Откажитесь от использования оператора '! =', Используйте '<>', когда это не имеет значения. – lukstafi

+0

или 'let all_odd = List.for_all (List.for_all (fun x -> x mod 2! = 0))', если вы хотите быть кратким – newacct

+0

@newacct да, но это более читаемо, особенно. для начинающих –

Смежные вопросы