В категория Lisp Код

Обръщане на списък на Lisp. Reverse!

Функция за деструктивно обръщане на списък. От (1 2 3 4 5) => (5 4 3 2 1). (define (reverse1 l) (if (null? l) ‘() (append (reverse1 (cdr l)) (list (car l))) )) (define (reverse! l) (let ((l1 (reverse1 l))) (begin (set-cdr! l (cdr l1)) (set-car! l (car l1)) ) )) (define l (list 1 […]

Няма коментари

Число с нечетни цифри на Lisp

Тази функция взима число и връща друго създадено от нечетните цифри на 1-то. Или по-скоро преобразува число, като маха неговите четни цифри. На  123456 връща 135 (define (make_number n) (define (get-num num) (if (odd? num) num 0)) (cond ((= n 0) 0) (else (+ (get-num (remainder n 10)) (if (odd? (quotient (remainder n 100) 10)) […]

Няма коментари

Сума на четни цифри на Lisp

Ето и една функция на Lisp, за намиране на сумата от четните цифри на едно число. Или на 2245533, ще върне 2+2+4=8 (define (even-digits n) (define (get-num num) (if (even? num) num 0)) (cond ((= n 0) 0) (else (+ (get-num (remainder n 10)) (even-digits (quotient n 10)))))) (even-digits 2222333)

Няма коментари

Премахване на елемент от вложени списъци Lisp

remove_deep премахва елемент от списък, които може да има като елемент други списъци. Или от L = {1, 2, {3}, {4, 5, {6}}, 7}, може да премахнем всяко число с „remove_deep L x“. (define (remove_deep l x) (define (cons_helper a b) (if (= x a) b (cons a b))) (cond ((null? l) l) ((list? (car […]

Няма коментари

Ред на Фибоначи написан на Lisp

Реда на Фибоначи написан на Лисп (define (fib n) (cond ((= n 0) 0) ((= n 1) 1) (else (+ (fib (- n 1)) (fib (- n 2)))))) ;izpolzvane (fib 6) ;otgovor 8

Няма коментари