diff options
| Commit | 1ee27f4f99bab9879917168b000e00ce3f7a15ff (patch) | |
|---|---|---|
| Author | 2022-10-17 16:48:32 +0300 | |
| Committer | 2022-10-17 16:48:32 +0300 | |
| Files | 1d214d9daacdbde0f1a65621a11e8c364535fbff | |
| uni-projects-1ee27f4f99bab9879917168b000e00ce3f7a15ff.tar uni-projects-1ee27f4f99bab9879917168b000e00ce3f7a15ff.tar.gz uni-projects-1ee27f4f99bab9879917168b000e00ce3f7a15ff.zip | ||
| Parent | b15153220d2b69a55914e359d42c88bb8ef2a662 (diff) | |
[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)))) |
