小编gur*_*ing的帖子

如何判断球拍的两组内容是否相同(不考虑顺序)?

我有一个作业问题,要求我告诉两组内容是否相等,而与顺序无关。

例如:(set-equal? (list 1 2 3) (list 3 2 1))是真的

到目前为止,我已经获得了此代码,

(define (set-equal? list1 list2)
  (cond
    [(and (empty? list1) (empty? list2)) true]
    [(and (cons? list1) (empty? list2)) false]
    [(and (empty? list1) (cons? list2)) false]
    [(and (cons? list1) (cons? list2))
      (if (member? (first list1) list2) 
          (set-equal? (rest list1) list2)
          (set-equal? (rest list1) list2))]))
Run Code Online (Sandbox Code Playgroud)

该代码显然不起作用,因为即使两个列表相等,递归也将导致列表1的(空),列表2仍具有数据,从而使最终输出为false。

我认为我应该这样处理:对照list2中的数据检查list1中的数据,如果有相等的数据,则将其从两个列表中删除。然后继续检查,直到两个列表都为空(为真)或一个列表为空且其中一个仍具有数据(输出为false)。问题是,我不知道该如何编码。

谁能给我一些有关解决此问题的提示?

recursion racket

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

将 Java Instant 格式化为“YYYYMMdd”会增加额外的一年吗?

这是漫长的一天,我的大脑很累,所以也许我完全错过了一些东西,但为什么当我运行这条线时,

System.out.println(
  DateTimeFormatter.ofPattern("YYYYMMdd")
    .withZone(ZoneId.of("UTC"))
    .format(Instant.parse("2020-12-31T08:00:00Z"))
  )
)
Run Code Online (Sandbox Code Playgroud)

我得到20211231而不是20201231?额外的一年从哪里来?

java datetime dateformatter

4
推荐指数
3
解决办法
8995
查看次数

Racket - 如何使用foldr来评估列表中的任何元素是否满足参数?

我的任务是编写一个名为的程序any?,需要输入一个列表和一个参数的过程,然后告诉你该列表中的任何元素是否满足该过程.

例如:(any? odd? (list 2 4 6 8))- >假

我需要在程序中使用foldr.

(define (any? procedure list1)
  (foldr (lambda (x y) (if (procedure x) true (any? procedure y))) false list1))
Run Code Online (Sandbox Code Playgroud)

这是我到目前为止所做的,但是当我运行该程序时,(any? odd? (list 2 4 6 8))我不断收到错误说"foldr:第三个参数必须是一个列表,给定为false".我认为这是因为空的基本情况变为布尔值false,然后替换为y,这是无效的,因为您需要一个列表来运行递归调用.

有人可以帮助我完成思考过程吗?

recursion fold racket

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

带/不带 TRUNCATE_EXISTING 的 StandardOpenOption.WRITE + StandardOpenOption.CREATE 之间的区别?

可能是一个简单的答案,但我尝试阅读有关 StandardOpenOption 的 javadoc 文档,但我仍然不清楚当我说时会发生什么

Files.write(..., ..., StandardOpenOption.WRITE, StandardOpenOption.CREATE); // Write A

根据一些本地测试,看起来如果文件已经存在,这仍然会覆盖该文件,那么上面和上面有什么区别

Files.write(..., ..., StandardOpenOption.WRITE, StandardOpenOption.TRUNCATE_EXISTING, StandardOpenOption.CREATE); // Write B?

此外,我有一个带有两个线程的程序,可以从写入的文件中读取/写入。当我使用 Write B 时,我有时会遇到竞争条件,其中一个线程创建了该文件,而另一个线程在第一个线程正在读取时覆盖该文件,并且出现异常。但是当我使用 Write A 时,我永远不会遇到这种竞争条件。几乎就像它会先锁定文件一样?有人可以解释幕后发生了什么吗?

java nio file java-io

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

标签 统计

java ×2

racket ×2

recursion ×2

dateformatter ×1

datetime ×1

file ×1

fold ×1

java-io ×1

nio ×1