Введите два списка, сопоставьте содержимое друг с другом - PullRequest
0 голосов
/ 18 сентября 2018

Я пытаюсь создать функцию в OCaml с помощью сигнатуры этого метода:

let generate_deck (suits : suit list) (ranks : rank list) : card list = 

Костюм, ранг и карта определены следующим образом:

type suit = Clubs | Spades | Hearts | Diamonds

type rank =  Six | Seven | Eight | Nine | Ten |
             Jack | Queen | King | Ace

type card = rank * suit

Функция должна затемвернуть список, в котором каждая масть соединена со всеми возможными рангами.Я знаю, что для этого нужно использовать сопоставление с образцом, но я действительно не понимаю, как это сделать.

1 Ответ

0 голосов
/ 18 сентября 2018

Сначала напишите функцию rank list -> suit -> card list для генерации полной масти, затем map для всех мастей и concat.

type suit = Clubs | Spades | Hearts | Diamonds

type rank =  Six | Seven | Eight | Nine | Ten |
             Jack | Queen | King | Ace

type card = rank * suit

let generate_suit ranks suit =
    List.map (fun rank -> suit, rank) ranks;;

let generate_deck suits ranks =
    List.concat (List.map (generate_suit ranks) suits);;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...