1
基本上,給定的n,例如3,如何創建t與t'生成二進制值的所有組合
例如所有組合的值的列表。 n = 3時,(讓 - 布爾變量3)應返回((TTT),(TTF),...(FFF))
這是類似的質疑Function to return all combinations of n booleans?但實施方案
基本上,給定的n,例如3,如何創建t與t'生成二進制值的所有組合
例如所有組合的值的列表。 n = 3時,(讓 - 布爾變量3)應返回((TTT),(TTF),...(FFF))
這是類似的質疑Function to return all combinations of n booleans?但實施方案
不是最有效的:
(define (make-bools n)
(if (= n 0)
'()
(append (addhead 'T (make-bools (- n 1)))
(addhead 'F (make-bools (- n 1))))))
; Yield copy of l with h added on to head of each list in l
(define (addhead h l)
(if (null? l)
l
(cons (cons h (car l)) (addhead h (cdr l)))))
此作品在球拍:
#lang racket
(define (generate-binary-combinations n)
(if (zero? n)
'(())
(for*/list ((y (in-list (generate-binary-combinations (sub1 n))))
(x (in-list '(T F))))
(cons x y))))
(generate-binary-combinations 3)
> '((T T T) (F T T) (T F T) (F F T) (T T F) (F T F) (T F F) (F F F))
(generate-binary-combinations 0)
> '(())
作品雖然有一定的誤差。如果n = 0,則需要返回'(()),否則添加頭不能在'() – randomThought 2012-04-24 01:00:00
好點上工作,甚至對於(make-bools 0)也是合理的值。 – 2012-04-24 01:32:24