Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Functional Programming
diff options
context:
space:
mode:
Commit1ee27f4f99bab9879917168b000e00ce3f7a15ff (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-10-17 16:48:32 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-10-17 16:48:32 +0300
Files1d214d9daacdbde0f1a65621a11e8c364535fbff /Year 2/Functional Programming
uni-projects-1ee27f4f99bab9879917168b000e00ce3f7a15ff.tar
uni-projects-1ee27f4f99bab9879917168b000e00ce3f7a15ff.tar.gz
uni-projects-1ee27f4f99bab9879917168b000e00ce3f7a15ff.zip
Parentb15153220d2b69a55914e359d42c88bb8ef2a662 (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.rkt35
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))))