(define (rotate-right mx) (let loop ([ls mx] [rs (make-list (length (car mx)) '())]) (cond [(null? ls) rs] [else (loop (cdr ls) (map (lambda (x y) (cons x y)) (car ls) rs))]))) (define (rotate-pict mx r) (cond [(= r 90) (rotate-right mx)] [(= r 180) (rotate-right (rotate-right mx))] [(= r 270) (rotate-right (rotate-right (rotate-right mx)))] [else mx])) (define (enlarge-print mx k) (for-each (lambda (rl) (let ([s (list->string (concatenate (map (lambda (x) (make-list k x)) rl)))]) (dotimes (k) (print s))) ) mx)) (define (read-pict h) (let loop ([n h] [ls '()]) (cond [(zero? n) (reverse ls)] [else (loop (- n 1) (cons (string->list (read-line)) ls))]))) (define (main args) (let* ([r (read)] [k (read)] [h (read)] [w (read-line)] [pl (read-pict h)]) (enlarge-print (rotate-pict pl r) k)) 0)