diff options
| Commit | b5dadc58da0b69abf79da0df859271fc075ffd72 (patch) | |
|---|---|---|
| Author | 2022-10-18 19:01:44 +0300 | |
| Committer | 2022-10-18 19:01:44 +0300 | |
| Files | cc89151904ca6cf3dec8114c551a5beeceb46ae0 | |
| uni-projects-b5dadc58da0b69abf79da0df859271fc075ffd72.tar uni-projects-b5dadc58da0b69abf79da0df859271fc075ffd72.tar.gz uni-projects-b5dadc58da0b69abf79da0df859271fc075ffd72.zip | ||
| Parent | 77455b0af298c672d93d9248f41fc28b6a1e7b66 (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.rkt | 30 |
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)) |
