Update all new Tasks
This commit is contained in:
parent
00a190b0a6
commit
91df62d461
5697 changed files with 93386 additions and 804 deletions
36
Task/Paraffins/Racket/paraffins.rkt
Normal file
36
Task/Paraffins/Racket/paraffins.rkt
Normal file
|
|
@ -0,0 +1,36 @@
|
|||
#lang racket
|
||||
|
||||
(define MAX_N 33)
|
||||
(define BRANCH 4)
|
||||
|
||||
(define rooted (make-vector MAX_N 0))
|
||||
(define unrooted (make-vector MAX_N 0))
|
||||
(for ([i 2]) (vector-set! rooted i 1) (vector-set! unrooted i 1))
|
||||
|
||||
(define (vector-inc! v i d) (vector-set! v i (+ d (vector-ref v i))))
|
||||
|
||||
(define (choose m k)
|
||||
(if (= k 1) m
|
||||
(for/fold ([r m]) ([i (in-range 1 k)]) (/ (* r (+ m i)) (add1 i)))))
|
||||
|
||||
(define (tree br n cnt sum l)
|
||||
(let/ec return
|
||||
(for ([b (in-range (add1 br) (add1 BRANCH))])
|
||||
(define s (+ sum (* (- b br) n)))
|
||||
(when (>= s MAX_N) (return))
|
||||
(define c (* (choose (vector-ref rooted n) (- b br)) cnt))
|
||||
(when (< (* l 2) s) (vector-inc! unrooted s c))
|
||||
(when (= b BRANCH) (return))
|
||||
(vector-inc! rooted s c)
|
||||
(for ([m (in-range (sub1 n) 0 -1)]) (tree b m c s l)))))
|
||||
|
||||
(define (bicenter s)
|
||||
(when (even? s)
|
||||
(vector-inc! unrooted s (* (vector-ref rooted (/ s 2))
|
||||
(add1 (vector-ref rooted (/ s 2)))
|
||||
1/2))))
|
||||
|
||||
(for ([n (in-range 1 MAX_N)])
|
||||
(tree 0 n 1 1 n)
|
||||
(bicenter n)
|
||||
(printf "~a: ~a\n" n (vector-ref unrooted n)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue