blob: f72f87c535ae28d9eb35d3702836ee5a216e5d51 (
plain) (
blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
|
#lang racket
(require math/number-theory) ; Само ползвам prime?
;;; Задача 1
(define (primes-prod x)
(define (calc current max prod)
(cond [(> current max) prod]
[(prime? current) (calc (add1 current) max (* prod current))]
[else (calc (add1 current) max prod)]))
(calc 2 (sqrt x) 1))
;; Примери
(primes-prod 12) ; → 6
(primes-prod 49) ; → 210
(primes-prod 1200) ; → 200560490130#lang racket
;;; Задача 2
(define (shuffle-merge xs ys)
(define (calc left right result)
(cond [(or (null? left) (null? right)) (append result left right)]
[else (calc (cdr left) (cdr right) (append result (list (car left) (car right))))]))
(calc xs ys '()))
;; Примери
(shuffle-merge '(1) '()) ; → '(1)
(shuffle-merge '(3 4 5) '(2)) ; → '(3 2 4 5)
(shuffle-merge '(3 4 5) '(9 2)) ; → '(3 9 4 2 5)
(shuffle-merge '(3 2 8) '(5 6 1 9 11)) ; → '(3 5 2 6 8 1 9 11)#lang racket
;;; Задача 3
(define (sum> l1 l2)
(cond [(null? l1) #t]
[(null? l2) #f]
[else (> (+ (car l1) (cdr l1)) (+ (car l2) (cdr l2)))]))
(define (g-l-sum limit)
(define (calc x y)
(cond [(or (> (gcd x y) limit) (> (lcm x y) limit)) '()]
[(= (+ (gcd x y) (lcm x y)) limit) (cons x y)]
;; Кодът тук избира най-малката възможна точкова двойка
[else (define left (calc (add1 x) y))
(define right (calc x (add1 y)))
(cond [(sum> right left) left]
[else right])]))
(calc 1 1))
;; Примери
(g-l-sum 2) ; → '(1 . 1)
(g-l-sum 14) ; → '(6 . 4)#lang racket
;;; Задача 4
(define (steps-bm xss)
(define (calc xss rowi)
;; Резултат = редове разстояние + колони разстояние
(cond [(member 1 (car xss)) (+ (abs (- 3 rowi))
(abs (- 2 (index-of (car xss) 1))))]
[else (calc (cdr xss) (add1 rowi))]))
(calc xss 1))
;; Примери
(steps-bm '((0 0 0 0 0)
(0 0 0 0 1)
(0 0 0 0 0)
(0 0 0 0 0)
(0 0 0 0 0)) ) ; → 3
(steps-bm '((0 0 0 0 0)
(0 0 0 0 0)
(0 1 0 0 0)
(0 0 0 0 0)
(0 0 0 0 0)) ) ; → 1
(steps-bm '((0 0 0 0 0)
(0 0 0 0 0)
(0 0 1 0 0)
(0 0 0 0 0)
(0 0 0 0 0)) ) ; → 0
(steps-bm '((0 0 0 0 0)
(0 0 0 0 0)
(0 0 0 0 0)
(0 0 0 0 0)
(0 0 0 0 1)) ) ; → 4
|