小编lur*_*ker的帖子

偶数和奇数列表

我正在尝试实现一个将列表分成两个列表的Prolog程序.第一个将包含偶数位置的数字,第二个包含数字是奇数位置.

例如:even_odd([1,2,4,7,5],Even,Odd).将导致Even=[2,7].Odd=[1,4,5].

我找到了比谷歌搜索问题更优雅的解决方案,但是我想在我的代码中找到问题所在(可能是操作员滥用)因为我真的认为我对Prolog操作符的理解非常差(特别是在算术比较中) .谷歌搜索只会使情况变得更糟,每个网站都有完全不同的解释.

我的代码:

even_odd([], [], []).
even_odd([H|T], Even, Odd) :-
    length([H|T], X),
    X mod 2 is 0,
    append(Even1, H, Even),
    even_odd(T, Even1, Odd).
even_odd([H|T], Even, Odd) :-
    length([H|T], X),
    X mod 2 is 1,
    append(Odd1, H, Odd),
    even_odd(T,Even,Odd1).
Run Code Online (Sandbox Code Playgroud)

我试过跟踪,我知道问题在于X mod 2 is 1或者0,它们都不是真的.如果我有一个三个元素的列表并且改变X is 3它的条件是完全没问题的,但是这个部门似乎搞得一团糟,所以任何想法?

list prolog

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

在Shell脚本中递归查找目录并重命名

我正在编写一个简单的 Shell 脚本,以便在 Linux 机器上运行,我将:

1) 在主目录中查找特定的子目录。这些子目录具有非常具体的命名约定(见下文),并且它们始终位于主目录下方最大深度 2 处。

2) 将这些子目录重命名为其原始名称的一部分。

例如,子目录命名为:

andrew-11111
andrew-11112
andrew-11113
andrew-11114
Run Code Online (Sandbox Code Playgroud)

到达这些子目录的路径如下所示:

myphotos/sailing/photos/andrew-1111
myphotos/sailing/photos/andrew-1112
myphotos/biking/photos/andrew-1113
myphotos/hiking/photos/andrew-1114
Run Code Online (Sandbox Code Playgroud)

我想从每个子目录中取出“andrew-”:

myphotos/sailing/photos/1111
myphotos/sailing/photos/1112
myphotos/biking/photos/1113
myphotos/hiking/photos/1114
Run Code Online (Sandbox Code Playgroud)

我已经“找到”了子目录并列出了它们。我还了解如何在命令行中复制和重命名。但以我的 shell 脚本知识水平将其组合起来花费的时间远远超出了我的承受能力。只是免责声明,我非常愿意学习,并且已经编写了一些 shell 脚本,但对此仍然陌生。非常感谢任何帮助或示例!

linux bash shell

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

第四:如何创建一个单词来编译其他单词直到找到某个分隔符?

我使用 Forth(即Swapforth)通过 I2C配置某些硬件。我有一句话:

i2c1-send ( reg-address byte -- )
Run Code Online (Sandbox Code Playgroud)

将一个字节写入某个芯片的特定内部寄存器。初始化序列很长,因此由于内存消耗,如下实现它是不可行的。

: i2c1-init
   $1201 $10 i2c1-send
   $2130 $43 i2c1-send
   [...]
   $0231 $43 i2c1-send
;
Run Code Online (Sandbox Code Playgroud)

我创建了一个实现,该实现创建了一个结构,该结构包含第一个单元格中的序列长度和下一个单元格中的三个字节。(请注意,i2c1-send 只是一个占位符,允许您在没有我的硬件的情况下对其进行测试)。

: i2c1-send ( reg_addr byte -- )
  \ It is just a placeholder to show what will be written in HW
  swap
  ." addr=" hex . ." val=" . decimal CR
;    

: i2c1: ( "<spaces>name" -- )
  create here $326e9 0 ,
  does> dup cell+ swap 
  @ 0 do 
    dup …
Run Code Online (Sandbox Code Playgroud)

forth

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

如何从浮点输入中删除逗号?

我有一个领域 -

:Revenue
Run Code Online (Sandbox Code Playgroud)

并且它应该接受像10,000.00这样的值,但如果我输入这样的值,它将存储10到数据库而不是10000.00

在我保存之前,我该怎么办才能删除逗号?

我试图在网上找到一些解决方案但由于我发现它们不完整而无法实现它们.如果有人可以帮助我,我会非常感激.

**我现在面临的问题是,只要我输入值rails就可以将字符串转换为浮点值,然后才能运行gsub函数,就像我在调用gsub之前输入50,000.00将其转换为float 50.0一样,有没有在rails调用字符串的to_f方法上的方法.

ruby ruby-on-rails ruby-on-rails-3

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

在德尔福将摄氏温度转换为华氏温度和反之亦然

我正在学习德尔福,由于某些原因,他们使用这种旧语言,但无论如何.我需要构建一个转换Celsius和Fahrenheit的Weather应用程序.

用户必须输入7天天气但这个例子我只想弄清第1天

所以我首先创建单选按钮来选择Celsius和Fahrenheit,然后如果他们选择Celsius我必须将Celsius转换为Fahrenheit并且如果他们选择Fahrenheit我必须将其转换为Celsius.

所以这是我的代码:

 var
   Celsius, Fahrenheit, Day1 : Double;

 begin
   Day1 := fedDay1;
   Celsius := (Day1 - 32)*5/9;
   Fahrenheit := Day1 * 9/5 + 32;

   if radCelsius.checked then
     lblConvertDay1.Caption := FloatToStrF(Fahrenheit, ffFixed, 15, 2);
   else
     lblConvertDay1.Caption := FloatToStr(Celsius, ffFixed, 15, 2);
   end;
Run Code Online (Sandbox Code Playgroud)

它在fedDay1上给出了一个错误.这是一个浮动旋转编辑

请帮忙

delphi

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

Prolog 变量在条件子句中看不到

我正在 Prolog 中进行一个项目,我偶然发现了一个问题:

假设我正在处理一个列表[H|T]

    function1(H,T),
    check(H,T,Result),
    Result= 'Yes' -> 
        Stuff
        ;

         function2(H,T,NT),
                     Stuff2...

    )
    ; 
    Stuff3.
Run Code Online (Sandbox Code Playgroud)

我的问题是,条件子句中的HT变量似乎不可见(它们被视为新变量)。我的问题是:如何让它们可见?

debugging prolog

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

计算lisp中前n个数的总和

(defun sum(n)
  (cond
    ((= n 0) 0)
    ((= n 1) 1)
    (T (+ n sum (- n 1)))))
Run Code Online (Sandbox Code Playgroud)

如果我调用(sum 4)它应该显示10但它给我一个错误:变量SUM没有值

lisp common-lisp

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

在Ruby中生成一个带有n位数的随机字符串(开头的0除外)

有人可以教我如何生成一个n位数的随机字符串.

例如:n = 3,myString ="001"或"002"或......"999"(开头的数字0除外)

p/s:我使用的是Ruby 1.8.7

ruby ruby-on-rails

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

用户输入的Lisp make-array长度不正确

我正在尝试将用户输入矩阵加载到clisp中的数组:

(defvar *rows* (read))
(defvar *columns* (read))
(defvar *matrix* (read-line))
(setq m1 (make-array (list *rows* *columns*) :initial-contents *matrix*))
Run Code Online (Sandbox Code Playgroud)

输入示例:

2
3
((1 2 3) (4 5 6))
Run Code Online (Sandbox Code Playgroud)

我收到一个错误:

*** - MAKE-ARRAY: "((1 2 3) (4 5 6))" is of incorrect length
Run Code Online (Sandbox Code Playgroud)

但是,如果我在代码中手动输入:

(setq m1 (make-array '(2 3) :initial-contents '((1 2 3) (4 5 6))))
Run Code Online (Sandbox Code Playgroud)

它运作正常,我错过了什么?

arrays common-lisp matrix

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

Python 中 re.compile(r"[\w']+") 的含义

我是 python 新手,正在尝试处理大数据代码,但无法理解表达式re.compile(r"[\w']+") 的含义。有人对此有任何想法吗?

这是我使用的代码。

from mrjob.job import MRJob
import re

WORD_REGEXP = re.compile(r"[\w']+")

class MRWordFrequencyCount(MRJob):

    def mapper(self, _, line):
        words = WORD_REGEXP.findall(line)
        for word in words:
            yield word.lower(), 1

    def reducer(self, key, values):
        yield key, sum(values)


if __name__ == '__main__':
    MRWordFrequencyCount.run()
Run Code Online (Sandbox Code Playgroud)

python mapreduce bigdata python-2.7

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