aboutsummaryrefslogtreecommitdiff
path: root/challenge-145/abigail/scheme/ch-2.scm
blob: c1a13175935c54a4232b012ad057e1d39d09ada7 (plain)
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
;;;
;;; See ../README.md
;;;

;;;
;;; Run as: guile --no-auto-compile ch-2.scm
;;;

(use-modules (ice-9 rdelim))
(use-modules (ice-9 format))

(define (add-list list elem)
    (cond ((null? list) (cons* elem '()))
          ((string=? (car list) elem) list)
          (else (cons (car list) (add-list (cdr list) elem)))))

(define (show-list list)
    (cond ((null? list) (newline))
          (else 
              (format #t "~a " (car list))
              (show-list (cdr list)))))

(define (main)
    (define line (read-line))
    (define l)
    (define str)
    (define out '())
    (if (not (eof-object? line))
        (begin
            (set! l (string-length line))
            (do  ((i 0 (1+ i)))
                 ((>= i l))
                 (do  ((j i (1+ j)))
                      ((>= j l))
                      (begin
                          (set! str (substring line i (+ j 1)))
                          (if (string=? str (string-reverse str))
                              (begin
                                  (set! out (add-list out str))
                              )
                          )
                      )
                 )
            )
          ; (display out)(newline)
            (show-list out)
            (main)
        )
    )
)

(main)