aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAbigail <abigail@abigail.be>2021-11-02 18:07:08 +0100
committerAbigail <abigail@abigail.be>2021-11-02 18:07:08 +0100
commit83c00ce954933e83073e4205e492201455209abe (patch)
tree32337416a5f3de92f41bb99b96ee064ab1453d00
parent75d8c0ad0b6724039e865e1d6e61630575ada351 (diff)
downloadperlweeklychallenge-club-83c00ce954933e83073e4205e492201455209abe.tar.gz
perlweeklychallenge-club-83c00ce954933e83073e4205e492201455209abe.tar.bz2
perlweeklychallenge-club-83c00ce954933e83073e4205e492201455209abe.zip
Scheme solutions for week 137
-rw-r--r--challenge-137/abigail/scheme/ch-1.scm33
-rw-r--r--challenge-137/abigail/scheme/ch-2.scm35
2 files changed, 68 insertions, 0 deletions
diff --git a/challenge-137/abigail/scheme/ch-1.scm b/challenge-137/abigail/scheme/ch-1.scm
new file mode 100644
index 0000000000..8d37395619
--- /dev/null
+++ b/challenge-137/abigail/scheme/ch-1.scm
@@ -0,0 +1,33 @@
+;;;
+;;; See ../README.md
+;;;
+
+;;;
+;;; Run as: guile --no-auto-compile ch-1.scm
+;;;
+
+(use-modules (ice-9 format))
+
+(define start-years (list 1600 2000))
+(define long-year-offsets (list
+ 004 009 015 020 026 032 037 043 048 054 060 065 071 076 082
+ 088 093 099 105 111 116 122 128 133 139 144 150
+ 156 161 167 172 178 184 189 195 201 207 212 218
+ 224 229 235 240 246 252 257 263 268 274 280 285 291 296
+ 303 308 314 320 325 331 336 342 348 353 359 364 370
+ 376 381 387 392 398
+))
+
+(define (check-year start-year offset)
+ (define year (+ start-year offset))
+ (if (and (<= 1900 year) (<= year 2100))
+ (format #t "~d~%" year)))
+
+
+(for-each
+ (lambda (start-year)
+ (for-each
+ (lambda (offset)
+ (check-year start-year offset))
+ long-year-offsets))
+ start-years)
diff --git a/challenge-137/abigail/scheme/ch-2.scm b/challenge-137/abigail/scheme/ch-2.scm
new file mode 100644
index 0000000000..dc17dee619
--- /dev/null
+++ b/challenge-137/abigail/scheme/ch-2.scm
@@ -0,0 +1,35 @@
+;;;
+;;; See ../README.md
+;;;
+
+;;;
+;;; Run as: guile --no-auto-compile ch-2.scm
+;;;
+
+(use-modules (ice-9 format))
+
+(define (reverse num)
+ (define rev 0)
+ (while (> num 0)
+ (set! rev (* rev 10))
+ (set! rev (+ rev (modulo num 10)))
+ (set! num (truncate (/ num 10)))
+ )
+ rev
+)
+
+(define (ly n)
+ (cond ((>= n 10000000) 1)
+ ((= n (reverse n)) 0)
+ (else (ly (+ n (reverse n))))))
+
+
+(define (main)
+ (define num (read))
+ (if (not (eof-object? num))
+ (begin
+ (format #t "~d~%" (ly num))
+ (main))))
+
+
+(main)