- Commit
- 6460f6000205d7e2be2d872b1a5b1bb2cb65f932
- Parent
- 4b1e1f1d839e88520beb84a69850002e96fa7402
- Author
- Pablo Emilio Escobar Gaviria <pablo-escobar@riseup.net>
- Date
Fixed small errors
An exercise on polyglossy: the same problem solved on multiple languages
Fixed small errors
3 files changed, 10 insertions, 15 deletions
Status | File Name | N° Changes | Insertions | Deletions |
Modified | c/main.c | 7 | 2 | 5 |
Modified | script.js | 2 | 1 | 1 |
Modified | script.rkt | 16 | 7 | 9 |
diff --git a/c/main.c b/c/main.c @@ -20,7 +20,7 @@ // Let S: N -> N be the sum of the digits of a positive integer. // For all A and B in N, S(A + B) = S(A) + S(B) - 9k, where k is an integer. -int sum_digits(unsigned n) +int sum_digits(unsigned int n) { int parc = n; int sum = 0; @@ -47,14 +47,11 @@ int counterexempl(int max, int *sums_cache) int main(int argc, char *argv[]) { - if (argc > 2) + if (argc > 1) { unsigned int max = strtoul(argv[1], NULL, 10); if (!max) return INVALID_INPUT; - unsigned int n_threads = strtoul(argv[2], NULL, 10); - if (!n_threads) return INVALID_INPUT; - // Create the sums cache int *sums_cache = malloc(sizeof(int) * (2 * max + 1)); for (int i = 0; i <= 2 * max + 1; i++)
diff --git a/script.js b/script.js @@ -15,7 +15,7 @@ function sumDigits(n) { } function getSums(max) { - return Array.from({length: 2 * max + 1}, (_, i) => sumDigits(i)); + return Array.from({length: 2 * max}, (_, i) => sumDigits(i)); } export function counterexempl(max) {
diff --git a/script.rkt b/script.rkt @@ -10,20 +10,18 @@ ;; Returns `#t` if a counterexemple was found between `0` and `m`. ;; Otherwise returns `#f`. (define (counterexempl? m) + (define (test a b sums-cache) + (let ([sum (lambda (n) (vector-ref sums-cache n))]) + (zero? (remainder (- (sum (+ a b)) (sum a) (sum b)) 9)))) + (define (iter a sums-cache) + (stream-fold (lambda (acc b) (and acc (test a b sums-cache))) + #t + (in-range a))) (let ([sums-cache (get-sums m)]) (not (stream-fold (lambda (acc a) (and acc (iter a sums-cache))) #t (in-range m))))) -(define (iter a sums-cache) - (stream-fold (lambda (acc b) (and acc (test a b sums-cache))) - #t - (in-range a))) - -(define (test a b sums-cache) - (let ([sum (lambda (n) (vector-ref sums-cache n))]) - (zero? (remainder (- (sum (+ a b)) (sum a) (sum b)) 9)))) - (define (sum-digits n) (define (sum-digits-tail n acc) (if (zero? n)