#!/usr/bin/env gosh (define (read-input) (let ((n (read (open-input-string (read-line)))) (numbers (read (open-input-string (string-append "(" (read-line) ")"))))) (cons n numbers))) (define (sort lst) (define (filter p? lst acc) (if (null? lst) acc (if (p? (car lst)) (filter p? (cdr lst) (cons (car lst) acc)) (filter p? (cdr lst) acc)))) (if (null? lst) '() (append (sort (filter (lambda (x) (<= (car lst) x)) (cdr lst) '())) (list (car lst)) (sort (filter (lambda (x) (> (car lst) x)) (cdr lst) '()))))) (define (get-median lst) (let ((n (car lst)) (ns (sort (cdr lst)))) (if (even? n) (* 0.5 (+ (list-ref ns (/ n 2)) (list-ref ns (- (/ n 2) 1)))) (list-ref ns (div n 2))))) (display (get-median (read-input))) (newline)