如何遍历方案球拍中的对列表
How to loop through a list of pairs in scheme racket
所以我有这个对,我想遍历所有对并取其数字和符号进行比较。我需要检查数字是否在 (1-7) 之间或者它是 J Q K。符号需要始终为 H S D C,所以我需要检查它。
我知道如何使用 cons staments 进行检查,但我找不到遍历所有对并提取第一个和第二个值的方法。
(define n '(1 2 3 4 5 6 7 "J" "Q" "K"))
(define s '( #\H #\S #\C #\D))
(define (deck)
(apply append
(map (lambda (x)
(map (lambda (y) (cons x y))
s))
n))
)
(deck)
#((1 . #\H)
(1 . #\S)
(1 . #\C)
(1 . #\D)
(2 . #\H)
(2 . #\S)
(2 . #\C)
(2 . #\D)
(3 . #\H)
(3 . #\S)
(3 . #\C)
(3 . #\D)
(4 . #\H)
(4 . #\S)
(4 . #\C)
(4 . #\D)
(5 . #\H)
(5 . #\S)
(5 . #\C)
(5 . #\D)
(6 . #\H)
(6 . #\S)
(6 . #\C)
(6 . #\D)
(7 . #\H)
(7 . #\S)
(7 . #\C)
(7 . #\D)
("J" . #\H)
("J" . #\S)
("J" . #\C)
("J" . #\D)
("Q" . #\H)
("Q" . #\S)
("Q" . #\C)
("Q" . #\D)
("K" . #\H)
("K" . #\S)
("K" . #\C)
("K" . #\D))
#
最有希望的解决方案是(filter)
the list by applying (member)
到每个列表元素的(cdr)
来测试它是否是花色的成员。如果需要,您也可以对面部执行相同的操作,一次完成这两项操作是微不足道的。这应该有效:
(define faces '(1 2 3 4 5 6 7 "J" "Q" "K"))
(define suits '( #\H #\S #\C #\D))
(define (deck)
(apply append
(map (lambda (x)
(map (lambda (y) (cons x y))
suits))
faces)))
(define original-deck (deck))
(define (sanitize-deck d)
(filter (lambda (ls)
(and (member (car ls) faces)
(member (cdr ls) suits)))
d))
其中 sanitize-deck
的输出是最终所需的输出。
所以我有这个对,我想遍历所有对并取其数字和符号进行比较。我需要检查数字是否在 (1-7) 之间或者它是 J Q K。符号需要始终为 H S D C,所以我需要检查它。 我知道如何使用 cons staments 进行检查,但我找不到遍历所有对并提取第一个和第二个值的方法。
(define n '(1 2 3 4 5 6 7 "J" "Q" "K"))
(define s '( #\H #\S #\C #\D))
(define (deck)
(apply append
(map (lambda (x)
(map (lambda (y) (cons x y))
s))
n))
)
(deck)
#((1 . #\H)
(1 . #\S)
(1 . #\C)
(1 . #\D)
(2 . #\H)
(2 . #\S)
(2 . #\C)
(2 . #\D)
(3 . #\H)
(3 . #\S)
(3 . #\C)
(3 . #\D)
(4 . #\H)
(4 . #\S)
(4 . #\C)
(4 . #\D)
(5 . #\H)
(5 . #\S)
(5 . #\C)
(5 . #\D)
(6 . #\H)
(6 . #\S)
(6 . #\C)
(6 . #\D)
(7 . #\H)
(7 . #\S)
(7 . #\C)
(7 . #\D)
("J" . #\H)
("J" . #\S)
("J" . #\C)
("J" . #\D)
("Q" . #\H)
("Q" . #\S)
("Q" . #\C)
("Q" . #\D)
("K" . #\H)
("K" . #\S)
("K" . #\C)
("K" . #\D))
#
最有希望的解决方案是(filter)
the list by applying (member)
到每个列表元素的(cdr)
来测试它是否是花色的成员。如果需要,您也可以对面部执行相同的操作,一次完成这两项操作是微不足道的。这应该有效:
(define faces '(1 2 3 4 5 6 7 "J" "Q" "K"))
(define suits '( #\H #\S #\C #\D))
(define (deck)
(apply append
(map (lambda (x)
(map (lambda (y) (cons x y))
suits))
faces)))
(define original-deck (deck))
(define (sanitize-deck d)
(filter (lambda (ls)
(and (member (car ls) faces)
(member (cdr ls) suits)))
d))
其中 sanitize-deck
的输出是最终所需的输出。