提取以前未遇到的数据对的数据。

huangapple go评论82阅读模式
英文:

Extracting data of pairs without the data that encountered before

问题

I don't want to translate the code part. However, I can provide a translation of the non-code portion of your text:

我有一些数据,其中包含一些配对数据。但是有些配对在之前已经遇到过。我不想再次提取相同的数据。例如,我有像这样的数据。

所以,如您所见,p3的第一个元素与p1相同。但是p0的第一个元素之前已经出现过。

首先,我首先像这样定义了所有的配对:

然后,我使用递归提取了所有的配对:

但是,我不想再次提取(2 3 1),因为我之前已经遇到过它。我该如何检测这一点?

英文:

I have a data which inside of some pairs. But some pairs go a pair that encountered before. I don't want to extract same data again. For example I have a data like this.

So, as you see p3's first item goes p1. However p0's first item has gone that element before.

First, I have defined all pairs first like this

  1. (define p2 (cons 2 3))
  2. (define p4 (cons 4 5))
  3. (define p1 (cons p2 1))
  4. (define p3 (cons p1 p4))
  5. (define p0 (cons p1 p3))

then I extracted all pairs by using recursion

  1. (define (extract pair)
  2. (if (pair? pair) (append (extract (car pair)) (extract (cdr pair))) (list pair)))

And I get the result of

  1. (2 3 1 2 3 1 4 5)

However, I don't want to extract (2 3 1) again because I have encountered before. How can I detect that?

答案1

得分: 0

请尝试使用(union x y)代替(append x y)

  1. (define (extract pair)
  2. (if (pair? pair)
  3. (union (extract (car pair)) (extract (cdr pair)))
  4. (list pair)))
  5. (define (union A B)
  6. (cond [(empty? A) B]
  7. [else
  8. (let ([C (union (rest A) B)])
  9. (cond [(member (first A) C) C]
  10. [else (cons (first A) C)]))]))
  11. (define p2 (cons 2 3))
  12. (define p4 (cons 4 5))
  13. (define p1 (cons p2 1))
  14. (define p3 (cons p1 p4))
  15. (define p0 (cons p1 p3))
  16. (extract p0)
英文:

Try to use (union x y) instead of (append x y):

  1. (define (extract pair)
  2. (if (pair? pair)
  3. (union (extract (car pair)) (extract (cdr pair)))
  4. (list pair)))
  5. (define (union A B)
  6. (cond [(empty? A) B]
  7. [else
  8. (let ([C (union (rest A) B)])
  9. (cond [(member (first A) C) C]
  10. [else (cons (first A) C)]))]))
  11. (define p2 (cons 2 3))
  12. (define p4 (cons 4 5))
  13. (define p1 (cons p2 1))
  14. (define p3 (cons p1 p4))
  15. (define p0 (cons p1 p3))
  16. (extract p0)

huangapple
  • 本文由 发表于 2023年5月17日 19:34:08
  • 转载请务必保留本文链接:https://go.coder-hub.com/76271646.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定