diff options
[FP/HW1] Solved first exercise and did half of second
1 files changed, 35 insertions, 0 deletions
| -rw-r--r-- | Year 2/Functional Programming/hw1.rkt | 35 |
diff --git a/Year 2/Functional Programming/hw1.rkt b/Year 2/Functional Programming/hw1.rkt new file mode 100644 index 0000000..056df23 --- /dev/null +++ b/Year 2/Functional Programming/hw1.rkt @@ -0,0 +1,35 @@ +#lang racket + +;;; Задача 1 + +(define (sum-digits n) + (if (= n 0) + 0 + (+ (sum-digits (quotient n 10)) (remainder n 10)))) + +(define (count-specials k a b) + (if (or (<= k 0) (> a b)) + 0 + (+ + (count-specials k (add1 a) b) + (if (and (= (remainder a k) 0) (= (remainder (sum-digits a) k) 0)) + 1 + 0)))) + +;;; Задача 2 + +(define (swap-last2-digits n) + (+ (* (quotient n 100) 100) (* (remainder n 10) 10) (quotient (remainder n 100) 10))) + +(define (rotate-left n) + (if (< n 9) + n + (swap-last2-digits (+ (* (rotate-left (quotient n 10)) 10) (remainder n 10))))) + +(define (pow10 n) + (if (= n 0) + 1 + (* 10 (pow10 (sub1 n))))) + +(define (rotate-left-preserved n d) + (rotate-left (remainder n (pow10 d)))) |
