; two easy tasks
(define range
(case-lambda
((stop) (range 0 stop (if (negative? stop) -1 1)))
((start stop) (range start stop (if (< start stop) 1 -1)))
((start stop step)
(let ((le? (if (negative? step) >= <=)))
(let loop ((x start) (xs (list)))
(if (le? stop x) (reverse xs)
(loop (+ x step) (cons x xs))))))
(else (error 'range "too many arguments"))))
(display (filter
(lambda (n)
(and (zero? (modulo n 13))
(zero? (modulo n 17))))
(range 500)))
(newline)
(define (f n)
(let* ((m (+ #e1e9 7)) (n (modulo n m)))
(modulo (* n (+ n 1) 1/2) m)))
(display (f 1234567)) (newline)
OyB0d28gZWFzeSB0YXNrcwoKKGRlZmluZSByYW5nZQogIChjYXNlLWxhbWJkYQogICAgKChzdG9wKSAocmFuZ2UgMCBzdG9wIChpZiAobmVnYXRpdmU/IHN0b3ApIC0xIDEpKSkKICAgICgoc3RhcnQgc3RvcCkgKHJhbmdlIHN0YXJ0IHN0b3AgKGlmICg8IHN0YXJ0IHN0b3ApIDEgLTEpKSkKICAgICgoc3RhcnQgc3RvcCBzdGVwKQogICAgICAobGV0ICgobGU/IChpZiAobmVnYXRpdmU/IHN0ZXApID49IDw9KSkpCiAgICAgICAgKGxldCBsb29wICgoeCBzdGFydCkgKHhzIChsaXN0KSkpCiAgICAgICAgICAoaWYgKGxlPyBzdG9wIHgpIChyZXZlcnNlIHhzKQogICAgICAgICAgICAobG9vcCAoKyB4IHN0ZXApIChjb25zIHggeHMpKSkpKSkKICAgIChlbHNlIChlcnJvciAncmFuZ2UgInRvbyBtYW55IGFyZ3VtZW50cyIpKSkpCgooZGlzcGxheSAoZmlsdGVyCiAgICAobGFtYmRhIChuKQogICAgICAoYW5kICh6ZXJvPyAobW9kdWxvIG4gMTMpKQogICAgICAgICAgICh6ZXJvPyAobW9kdWxvIG4gMTcpKSkpCiAgICAocmFuZ2UgNTAwKSkpCihuZXdsaW5lKQoKKGRlZmluZSAoZiBuKQogIChsZXQqICgobSAoKyAjZTFlOSA3KSkgKG4gKG1vZHVsbyBuIG0pKSkKICAgIChtb2R1bG8gKCogbiAoKyBuIDEpIDEvMikgbSkpKQoKKGRpc3BsYXkgKGYgMTIzNDU2NykpIChuZXdsaW5lKQ==