Форум программистов, компьютерный форум, киберфорум
Haskell
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/18: Рейтинг темы: голосов - 18, средняя оценка - 4.50
0 / 0 / 0
Регистрация: 18.02.2016
Сообщений: 2

Разработать тип данных Prop, представляющий утверждения заданного вида

20.03.2016, 00:38. Показов 3435. Ответов 1
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Помогите пожалуйста.

Утверждением будем называть логическую формулу, имеющую одну из следующих форм:

• p & q

• p | q

• ~p

где p и q — утверждения. Например, утверждениями являются следующие формулы:

• x

• x | y

• x & (x | ~y)

Разработайте тип данных Prop, представляющий утверждения такого вида. Определите следующие функции:

1) vars :: Prop -> [String], которая возвращает список

имен переменных (без повторений), встречающихся в утверждениях.

2) Пусть задан список имен переменных

и их значений типа Bool, например

[("x",True),("y",False)]. Определите функцию

truthValue :: Prop -> [(String,Bool)] -> Bool

которая определяет, верно ли утверждение, если переменные имеют заданные списком значения.

3) Определите функцию tautology :: Prop -> Bool, которая возвращает True, если утверждение верно при любых значениях переменных, встречающихся в нем (например, это выполняется для утверждения (x | ~x)).
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
20.03.2016, 00:38
Ответы с готовыми решениями:

Разработайте тип данных Prop, представляющий утверждения такого вида
Помогите пожалуйста с заданиям,очень надо. Разработайте тип данных Prop, представляющий утверждения та- кого вида. Определите...

Утверждения Prop
Утверждением будем называть логическую формулу, имеющую одну из следующих форм: имя переменной (строка) p & q p | q ~p где p...

Разработайте тип данных Prop
Утверждением будем называть логическую формулу, имеющую од- ну из следующих форм: • имя переменной (строка) • p & q • p | q •...

1
Модератор
 Аватар для Curry
5158 / 3482 / 536
Регистрация: 01.06.2013
Сообщений: 7,543
Записей в блоге: 9
20.03.2016, 10:02
Haskell
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
import Data.List
 
data Prop = C Bool
          | V String
          | And Prop Prop
          | Or Prop Prop 
          | Not  Prop
          deriving Show
 
vars :: Prop -> [String]
vars (C _) = []
vars (V n) = [n]
vars (And p0 p1) = vars p0 `union` vars p1
vars (Or  p0 p1) = vars p0 `union` vars p1
vars (Not p0)    = vars p0
 
truthValue :: Prop -> [(String,Bool)] -> Bool
truthValue prop v = go prop
    where go (C b) = b
          go (V n) = case lookup n v of
                        (Just r) -> r
                        _ -> error $ "truthValue : variable " ++ n ++ " not found"
          go (And p0 p1) = go p0 && go p1
          go (Or  p0 p1) = go p0 || go p1
          go (Not p0) = not $ go p0
 
mkVs :: [String] -> [[(String,Bool)]] 
mkVs = foldl (\ vs x -> concatMap (\ v -> [(x, b) : v | b <- [False, True]]) vs) [[]] 
          
tautology :: Prop -> Bool
tautology prop = all (truthValue prop) $ mkVs $ vars prop
 
main :: IO ()
main = do
    let p =  And (Or (Not $ V "y") (C False)) (V "x")
    print $ vars p  
    print $ mkVs $ vars p  
    print $ truthValue p [("x",True),("y",False)]
    print $ truthValue p [("x",True),("y",True)]
    print $ tautology p
    print $ tautology $ Or (V "x") (Not (V "x"))
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
20.03.2016, 10:02
Помогаю со студенческими работами здесь

Разработайте тип данных Prop
В общем существует такая задача: Утверждением будем называть логическую формулу, имеющую одну из следующих форм: • имя переменной...

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

Определить тип данных, представляющий информацию об иерархии классов
Здравствуйте! Суть задачи: Определить тип данных, представляющий информацию об иерархии классов. Описать следующие функции: 1)...

Разработать программу определения вида четырехугольника, заданного координатами вершин на плоскости
Разработать программу определения вида четырехугольника, заданного координатами вершин на плоскости: квадрат, прямоугольник,...

Разработать приложение в среде Lasarus для проверки решений задач заданного вида
Разработать приложение в среде Lasarus для проверки решений задач следующего вида: Петя записал IP-адрес школьного сервера на листке...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
Установка Qt-версии Lazarus IDE в Debian Trixie Xfce
volvo 10.02.2026
В общем, достали меня глюки IDE Лазаруса, собранной с использованием набора виджетов Gtk2 (конкретно: если набирать текст в редакторе и вызвать подсказку через Ctrl+Space, то после закрытия окошка. . .
SDL3 для Web (WebAssembly): Работа со звуком через SDL3_mixer
8Observer8 08.02.2026
Содержание блога Пошагово создадим проект для загрузки звукового файла и воспроизведения звука с помощью библиотеки SDL3_mixer. Звук будет воспроизводиться по клику мышки по холсту на Desktop и по. . .
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru