小编Jas*_*tol的帖子

LISP中两个位向量之间的距离

我在使用常见的lisp计算两个位向量之间的距离时遇到问题.

我是lisp的新手,这是我的人工智能家庭作业的最终作业问题,并且相信我遇到的问题是语法问题.

这是一个问题:

在由1和0的列表表示的相同长度的两个位向量之间写入递归函数DISTANCE.例如,

(距离'(1 0 1 1)'(0 1 0 1))

答案 - 3

如果向量长度不同,讨论必须做什么.

根据我的理解,两个位向量之间的距离只是对两个向量进行异或,然后向上计数1.

使用这个例子,我们将得到1011 ^ 0101 = 1110,它等于3.

假设这是计算距离的正确方法,那么我的问题是除了使这个递归之外还找到一种在lisp中进行异或的方法.

我如何获取两个列表并将它们放入我可以使用logxor (如此处所示)之类的格式中,然后在结果列表中计算1?

虽然尝试这样做(logxor '(1 0 1 1) '(0 1 0 1))告诉我'(1 0 1 1)不是一个整数所以它似乎logxor不适用于让我不知所措的列表.

您可以提供的任何帮助将不胜感激

谢谢!

common-lisp bitvector

2
推荐指数
1
解决办法
802
查看次数

MySQL函数向DATETIME添加一些工作日

我需要一个MySQL函数,它允许我通过一些工作日(星期一到星期五)和开始DATE或DATETIME(对我的实现无关紧要),并让它返回一个新的DATE或DATETIME,许多工作日在将来.

示例:SELECT AddWorkDays(10, "2013-09-01")返回"2013-09-16",假设"2013-09-01"是星期一.

同样:SELECT AddWorkDays(-10, "2013-09-16")返回"2013-09-01"

我发现这个函数用于MSSQL数据库(我认为)正是我需要的,除了它不在MySQL中.我尝试手动将其转换为MySQL语法并实现了这一点:

DROP FUNCTION IF EXISTS AddWorkDays;
DELIMITER $$
CREATE FUNCTION AddWorkDays
(
    WorkingDays INT,
    StartDate DATE
)
RETURNS DATE

BEGIN
    DECLARE Count INT;
    DECLARE i INT;
    DECLARE NewDate DATE;
    SET Count = 0;
    SET i = 0;

    WHILE (i < WorkingDays) DO
        BEGIN
            SET Count = Count + 1;
            SET i = i + 1;
            WHILE DAYOFWEEK(ADDDATE(StartDate, Count)) IN (1,7) DO
                BEGIN
                    SET Count = Count + …
Run Code Online (Sandbox Code Playgroud)

mysql sql sql-function

1
推荐指数
1
解决办法
7830
查看次数

标签 统计

bitvector ×1

common-lisp ×1

mysql ×1

sql ×1

sql-function ×1