Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Языки программирования > Haskell
Перезагрузить страницу 4 дня до сдачи. Задачи по Haskell. Помогите!
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
babai babai вне форума
Новичок
 
Сообщений: 1
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 04.11.2012
Exclamation 4 дня до сдачи. Задачи по Haskell. Помогите! - 04.11.2012, 13:11

Привет всем. Помогите осилить Хаскель, буду ужасно благодарен. Нужно сдать 2 лабы, иначе летит вся учеба( 5 курс(

1 задача уже была рассмотрена.

1. isMinor - проверяет что её аргумент - младшая карта
2. sameSuit - проверяет, что переданные в неё карты одной мати
3. beats:: Card -> Card -> Bool - проверяет, что карта, переданная в качестве первого аргумента бьёт карту, являющуюся вторым аргументом
4. beats2 (аналогичная) - но принимает в качестве дополнительного аргумента козырную масть
5. beatsList - принимает в качестве аргументов список карт, карту и козырную масть и возвращающая список тех карт из списка, которые бьют указанную карту с учётом козырной масти
6. функция, по заданному списку карт возвращает список чисел, каждое из которых возможная сумма очков указанных карт, рассчитанных по правилам игры в 21 очко: младшие карты считаются по номиналу, валет дама и король за 10 очков, туз может рассматриваться как 1 и как 11 очков. Ф-я должна вернуть все возможные варианты

data Mast = Diamonds | Hearts | Clubs | Spades deriving (Eq, Ord, Show)

data Dostoinstvo = Two | Three | Four | Five | Six | Seven | Eight | Nine | Ten | Jack | Queen | King | Ace deriving (Eq, Ord, Show)

data Karta = Karta Dostoinstvo Mast deriving (Eq, Ord, Show)

isMinor :: Karta -> Bool
isMinor (Karta x y) = if (x==Jack)||(x==Queen)||(x==King)||(x==Ace) then False else True

beats :: Karta -> Karta -> Bool
beats (Karta x1 y1) (Karta x2 y2) = if (y1==y2)&&(x1>x2) then True else False

beats2 :: Mast -> Karta -> Karta -> Bool
beats2 y (Karta x1 y1) (Karta x2 y2) = if (((y1==y2)&&(x1>x2))||(((y1==y)||(y2==y))&&(x1>x2) )||((y1==y)&&(y2/=y))) then True else False

sameSuit :: [Karta] -> Bool
sameSuit (Karta f1 s1 : (Karta f2 s2 : xs)) = if (s1==s2) then sameSuit (Karta f2 s2 : xs) else False
sameSuit xs = if xs==[] then False else True

beatsList :: [Karta] -> Karta -> Mast -> [Karta]

beatsList cs card koz = go cs []

where go (x:xs) acc = go xs (if beats2 koz x card then x:acc else acc)

go [] acc = acc

ochki :: Dostoinstvo -> [Integer]
ochki Two = [2]
ochki Three = [3]
ochki Four = [4]
ochki Five = [5]
ochki Six = [6]
ochki Seven = [7]
ochki Eight = [8]
ochki Nine = [9]
ochki Ten = [10]
ochki Jack = [10]
ochki Queen = [10]
ochki King = [10]
ochki Ace = [1, 11]

points :: [Karta] -> [Integer]
points xs = let { nub (x:xs) acc = nub [x1 | x1 <- xs, x1/=x] (x:acc);
nub _ acc = acc }
in nub (rec' [] xs) []
where rec' rs [] = rs
rec' [] (Karta x _: xs) = rec' (ochki x) xs
rec' rs (Karta x _: xs) = rec' [r+a | a <- ochki x, r <- rs] xs

Первые 3 функции мне понятны. Кто нибудь объяснит в деталях как работают последние 3. Я знаю что означают знаки по отдельности, но вместе я не могу объяснить. Лучше с примером. Буду ужасно благодарен!!!Могу даже помочь wmr

и 2 задача. Решений я не нашел. Помогите решить и разобрать.

Функции для работы с типом List. Для введенного ранее типа
List определите следующие функции:
1) lengthList, возвращающую длину списка типа List.
2) nthList, возвращающую n-й элемент списка.
3) removeNegative, которая из списка целых (тип List Integer) удаляет отрицательные элементы.
4) fromList, преобразующую список типа List в обычный список.
5) toList, преобразующую обычный список в список типа List.
На Haskell.

Жду вашей помощи!!! спасибо!!
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Нарисовать столбиковую диаграмму по результатам сдачи экзамена по матану Proskurina Pascal 1 24.10.2012 16:57
Задачи на языке Haskell! gomon Haskell 2 21.01.2012 20:00
Помогите решить задачи по C++ pom-ivanov Вопросы начинающих программистов 0 20.12.2011 01:28
Помогите решить задачи........ 77799 Assembler 2 09.11.2011 00:03
Помогите с решением задачи S3nek Prolog 5 21.10.2011 12:45
Помогите решить задачи imported_Гарик Prolog 0 28.05.2011 14:46
SWI-prolog Задачи. Помогите Nuklonium Prolog 9 18.05.2011 11:02
Очень нужна помощь. До сдачи одна неделю. Помогите пожалуйста. Мирзали Pascal 2 14.05.2011 10:59
Помогите с решением задачи! dezkeed Prolog 2 06.10.2010 01:01
Помогите решить задачи Gros Prolog 1 27.12.2009 18:55
Помогите решить задачи Vovchik4417 Prolog 0 11.12.2009 17:56
Помогите решить задачи SH@DOW Юмор 12 18.09.2006 16:10



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов