codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
; longest increasing subsequence (define (deal deck) (let loop ((deck deck) (selip (list)) (piles (list))) (cond ((null? deck) piles) ; no more cards in deck ((null? piles) ; add card to new pile (loop (cdr deck) (list) (reverse (cons (list (car deck)) selip)))) ((< (car deck) (caar piles)) ; found correct pile (loop (cdr deck) (list) (append (reverse selip) (list (cons (car deck) (car piles))) (cdr piles)))) (else ; continue search for correct pile (loop deck (cons (car piles) selip) (cdr piles)))))) (display (deal '(4 2 9 1 3 6 7 8 5))) (newline) (define (make-new-pile deck selip) (list (car deck))) (define (lt? deck piles) (< (car deck) (caar piles))) (define (add-current-pile deck piles selip) (list (cons (car deck) (car piles)))) (define (deal deck) (let loop ((deck deck) (selip (list)) (piles (list))) (cond ((null? deck) piles) ; no more cards in deck ((null? piles) ; add card to new pile (loop (cdr deck) (list) (reverse (cons (make-new-pile deck selip) selip)))) ((lt? deck piles) ; found correct pile (loop (cdr deck) (list) (append (reverse selip) (add-current-pile deck piles selip) (cdr piles)))) (else ; continue search for correct pile (loop deck (cons (car piles) selip) (cdr piles)))))) (display (deal '(4 2 9 1 3 6 7 8 5))) (newline) (define (make-new-pile deck selip) (list (if (null? selip) (list (car deck)) (cons (car deck) selip)))) (define (lt? deck piles) (< (car deck) (caaar piles))) (define (add-current-pile deck piles selip) (list (if (null? selip) (cons (list (car deck)) (car piles)) (cons (cons (car deck) selip) (car piles))))) (display (deal '(4 2 9 1 3 6 7 8 5))) (newline) (define (lis deck) (let loop ((dealt (car (reverse (deal deck)))) (result (list))) (if (null? (cdar dealt)) (cons (caar dealt) result) (loop (cadar dealt) (cons (caar dealt) result))))) (display (lis '(4 2 9 1 3 6 7 8 5))) (newline) (display (lis '(3 2 6 4 5 1))) (newline) (display (lis '(0 8 4 12 2 10 6 14 1 9 5 13 3 11 7 15))) (newline)
Private
[
?
]
Run code
Submit