blob: d079063a3a36d425dff432fa19b70c365a6117d0 (
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
|
(module markov
(make-table-from-file
guess-sentence
generate-next-word
join-verses
seed-from-entropy)
(import scheme (chicken base) srfi-69
(chicken format)
(chicken random))
(define (seed-from-entropy)
(set-pseudo-random-seed! (random-bytes)))
(define (join-verses* lst str book chapter verse)
(if (null? lst)
str
(let* ((cur (car lst))
(first-character (if (= (string-length cur) 0)
#f
(string-ref cur 0)))
(rest (cdr lst)))
(cond
((not (char? first-character)) (join-verses* rest str
book chapter verse))
((equal? cur "startofbook")
(join-verses* rest (sprintf "~A~%~%~%" str) (+ book 1) 1 1))
((equal? cur "startofchapter")
(join-verses* rest (sprintf "~A~%~%" str) book (+ 1 chapter) 1))
((equal? cur "startofverse")
(join-verses* rest (sprintf "~A~%~A:~A:~A"
str book chapter verse)
book chapter (+ 1 verse)))
((or (char-alphabetic? first-character)
(char-numeric? first-character))
(join-verses* rest (string-append str " " cur)
book chapter verse))
(else (join-verses* rest (string-append str cur)
book chapter verse))))))
(define (join-verses lst)
(string-append (join-verses* lst "THE BOOK OF MARKOV" 1 0 1)
"\n"))
(include "markov.impl.scm"))
|