ruby命题逻辑,红宝石(代码片段)

author author     2023-01-14     396

关键词:

def checkcontainer(elem, container)
    for thing in container
        if thing == elem
            return true
        end
    end
    return false
end



class Proposition
    def initialize(statement)
        @statement = statement
        @prop = eval statement
    end
    def bool
        return @prop
    end
    def statement
        return @statement
    end
end

class Conjunction
    def initialize(*statements)
        @statelist = statements.collect|x| x
        @prop = true
        for elem in @statelist
            if (eval elem) == false
                @prop = false
            end
        end
    end
    def bool
        return @prop
    end
    def statement
        return @statelist
    end
end

class Disjunction
    def initialize(*statements)
        @statelist = statements.collect|x| x
        @prop = false
        for elem in @statelist
            if (eval elem)
                @prop = true
            end
        end
    end
    def bool
        return @prop
    end
    def statement
        return @statelist
    end
end

class Negation
    def initialize(statement)
        @statement = statement
        if (eval statement)
            @prop = false
        else
            @prop = true
        end
    end
    def bool
        return @prop
    end
    def statement
        return @statement
    end
end

class Implication
    def initialize(s1, s2)
        @s1 = s1
        @s2 = s2
        @statement = "If " + s1 + " then" + s2 + "."
        if (eval s2)
            @prop = true
        else
            @prop = false
        end
    end
    def bool
        return @prop
    end
    def statement
        return @statement
    end
    def checkconverse
        if (eval @s1)
            return true
        else
            return false
        end
    end
end

#Quantifiers

class Condition
    #must use x as a variable
    def initialize(term)
        @term = term
        @condition = lambda do |x|
            if (eval @term)
                return true
            else
                return false
            end
        end
    end
    def check(elem)
        return @condition.call(elem)
    end
end

class Condition2
    #must use x and y as variables, uses two variables
    def initialize(term)
        @term = term
        @condition = lambda do |x, y|
            if (eval @term)
                return true
            else
                return false
            end
        end
    end
    def check(elem1, elem2)
        return @condition.call(elem1, elem2)
    end
end
#universal quantifier
class Univ_quant
    def initialize(condition, container)
        @condition = condition
        @container = container
        @prop = true
        for elem in container
            if @condition.check(elem) == false
                @prop = false
            end
        end
    end
    def bool
        return @prop
    end
end
#existiential quantifier
class Exist_quant
    def initialize(condition, container)
        @condition = condition
        @container = container
        @prop = false
        for elem in container
            if @condition.check(elem)
                @prop = true
            end
        end
    end
    def bool
        return @prop
    end
end

def quant_sorter(condition, container, option=nil)
    false_bin = []
    true_bin = []
    for elem in container
        if condition.check(elem)
            true_bin << elem
        else
            false_bin << elem
        end
    end
    if option == 't'
        return true_bin
    else
        return false_bin
    end
end

def check_implication(prop1, prop2)
    if prop2.bool
        return true
    else
        return false
    end
end
#Equation statements

#summation

class Summation
    def initialize(term)
        @term = term
        @sum = lambda do |i|
            n = 0
            total = 0
            until n == i do
                total += (eval @term)
                n += 1
            end
            return total
        end
    end
    def sum(num)
        return @sum.call(num)
    end
end

ruby红宝石操场(代码片段)

查看详情

ruby红宝石产量(代码片段)

查看详情

ruby红宝石操场(代码片段)

查看详情

ruby红宝石尾巴(代码片段)

查看详情

ruby红宝石操场(代码片段)

查看详情

ruby红宝石操场(代码片段)

查看详情

ruby红宝石操场(代码片段)

查看详情

ruby红宝石句子(代码片段)

查看详情

ruby红宝石战士(代码片段)

查看详情

ruby错误的红宝石代码(代码片段)

查看详情

ruby红宝石redis(代码片段)

查看详情

ruby红宝石メモ(代码片段)

查看详情

ruby红宝石的翻译(代码片段)

查看详情

ruby红宝石,铁轨书籍(代码片段)

查看详情

ruby红宝石csv(代码片段)

查看详情

ruby红宝石团队树屋(代码片段)

查看详情

ruby红宝石paulcantrell关闭(代码片段)

查看详情

ruby红宝石控制台(代码片段)

查看详情