Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- #lang racket
- (define (add-level level content tree)
- (cond
- [(zero? level) (cons (list content) tree)]
- [else (cons (add-level (sub1 level) content (first tree))
- (rest tree))]))
- (define (flip-all tree)
- (cond
- [(list? tree) (map flip-all (reverse tree))]
- [else tree]))
- (define (compute)
- (let iter ([tree empty])
- (match (read-line)
- [(== eof) (flip-all tree)]
- [(pregexp #px"(\\**) (.*)" (list _ star content))
- (iter (add-level (sub1 (string-length star)) content tree))])))
- (module+ test
- (require rackunit)
- (parameterize
- ([current-input-port
- (open-input-string
- (string-append
- "* ความสามารถพิเศษ\n* รายวิชา\n** GAT\n** PAT1\n** PAT2\n"
- "** อื่น ๆ\n*** ไม่บอก\n*** บอกแล้ว\n** PAT50\n* จํานวนรับ"))])
- (check-equal? (compute)
- '(("ความสามารถพิเศษ")
- ("รายวิชา" ("GAT")
- ("PAT1")
- ("PAT2")
- ("อื่น ๆ" ("ไม่บอก") ("บอกแล้ว"))
- ("PAT50"))
- ("จํานวนรับ")))))
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement