小编nod*_*key的帖子

Lambda演算和教堂数字混乱

我正在努力理解lambda演算和教会数字的基础知识.我一直在做很多阅读和练习,但我似乎一直在试图看看一些功能是如何工作的.

我坚持的例子如下.也许有人可以解释我哪里出错了.

1号教堂的数字可以表示为:

?f. ?x. f x
Run Code Online (Sandbox Code Playgroud)

教会数字(m n)的取幂函数可以表示为:

?m. ?n. n m
Run Code Online (Sandbox Code Playgroud)

我想要做的就是通过将指数函数应用于1和1,我得到1,因为1 1 = 1.我这样做,所以我更好地理解这些函数是如何工作的.我的工作如下,每次都卡住了:

// Exp (1 1)
(?m. ?n. n m) (?f1. ?x1. f1 x1) (?f2. ?x2. f2 x2)
// Substitute for m
(?n. n (?f1. ?x1. f1 x1)) (?f2. ?x2. f2 x2)
// Substitute for n
(?f2. ?x2. f2 x2) (?f1. ?x1. f1 x1)
// Substitute for f2
(?x2. (?f1. ?x1. f1 x1) x2)
// Substitute for f1
?x2. (?x1. x2 x1)
Run Code Online (Sandbox Code Playgroud)

在那里我被卡住了.我失去了两个f …

function lambda-calculus

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

字符串模式匹配问题

想象一下,我们有一个包含子串'cat'和'dog'以及其他随机字符的长字符串,例如.

cat x dog cat x cat x dog x dog x cat x dog x cat
Run Code Online (Sandbox Code Playgroud)

这里'x'代表任何随机的字符序列(但不是'cat'或'dog').

我想要做的是找到除"狗"之外的所有字符后面的每个"猫",然后是"猫".我想在每种情况下删除第一个'cat'实例.

在这种情况下,我想删除括号[cat],因为在下一个'cat'之前没有'dog':

cat x dog [cat] x cat x dog x dog x cat x dog x cat
Run Code Online (Sandbox Code Playgroud)

最终得到:

cat x dog x cat x dog x dog x cat x dog x cat
Run Code Online (Sandbox Code Playgroud)

如何才能做到这一点?

我想以某种方式使用类似(N)(?=(n))的正则表达式作为VonC推荐 这里

(cat)(?=(.*cat))
Run Code Online (Sandbox Code Playgroud)

匹配字符串中的所有'cat'对.但是我仍然不确定如何使用它来移除每只在'cat'之前没有跟随'dog'的猫.


我正在处理的真正问题是Java.但我真的只是在寻找一般的伪代码/正则表达式解决方案.

regex string pattern-matching

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