Summary Files Commits Branches @commit @diff @stats
path: root / Year 2 / Functional Programming
diff options
context:
space:
mode:
Commitb5dadc58da0b69abf79da0df859271fc075ffd72 (patch)
Author
 Syndamia <kamen@syndamia.com>
2022-10-18 19:01:44 +0300
Committer
 Syndamia <kamen@syndamia.com>
2022-10-18 19:01:44 +0300
Filescc89151904ca6cf3dec8114c551a5beeceb46ae0 /Year 2/Functional Programming
uni-projects-b5dadc58da0b69abf79da0df859271fc075ffd72.tar
uni-projects-b5dadc58da0b69abf79da0df859271fc075ffd72.tar.gz
uni-projects-b5dadc58da0b69abf79da0df859271fc075ffd72.zip
Parent77455b0af298c672d93d9248f41fc28b6a1e7b66 (diff)
[FP/HW1] Finished second exercise, but it has bugs
1 files changed, 26 insertions, 4 deletions
-rw-r--r--Year 2/Functional Programming/hw1.rkt30
diff --git a/Year 2/Functional Programming/hw1.rkt b/Year 2/Functional Programming/hw1.rkt
index 056df23..3f78abd 100644
--- a/Year 2/Functional Programming/hw1.rkt
+++ b/Year 2/Functional Programming/hw1.rkt
@@ -19,17 +19,39 @@
;;; Задача 2
(define (swap-last2-digits n)
- (+ (* (quotient n 100) 100) (* (remainder n 10) 10) (quotient (remainder n 100) 10)))
+ (+ (* (quotient n 100) 100)
+ (* (remainder n 10) 10)
+ (quotient (remainder n 100) 10)))
(define (rotate-left n)
- (if (< n 9)
+ (if (<= n 9)
n
- (swap-last2-digits (+ (* (rotate-left (quotient n 10)) 10) (remainder n 10)))))
+ (swap-last2-digits (+ (* (rotate-left (quotient n 10)) 10)
+ (remainder n 10)))))
(define (pow10 n)
(if (= n 0)
1
(* 10 (pow10 (sub1 n)))))
+(define (numlen n)
+ (if (= n 0)
+ 0
+ (add1 (numlen (quotient n 10)))))
+
(define (rotate-left-preserved n d)
- (rotate-left (remainder n (pow10 d))))
+ (define pbl (pow10 (- (numlen n) d)))
+ (+ (* (quotient n pbl) pbl)
+ (if (< (remainder n pbl) pbl)
+ (* (rotate-left (remainder n pbl)) 10)
+ (rotate-left (remainder n pbl)))))
+
+(define (max-rot n)
+ (define nrlen (sub1 (numlen n)))
+ (define (helper i current biggest)
+ (if (>= i nrlen)
+ biggest
+ (helper (add1 i)
+ (rotate-left-preserved current (add1 i))
+ (if (> current biggest) current biggest))))
+ (helper 0 (rotate-left n) 0))