(use scheme.list) (use gauche.generator) (define-syntax v~ (syntax-rules () [(_ v i) (vector-ref v i)] [(_ v i j ...) (v~ (vector-ref v i) j ...)])) (define-syntax v-update! (syntax-rules (v~) [(_ (v~ v i) f) (vector-set! v i (f (vector-ref v i)))] [(_ (v~ v i j ...) f) (v-update! (v~ (vector-ref v i) j ...) f)])) (define-syntax readm (syntax-rules (sym str list vec) [(_ list n t ...) (unfold (pa$ = n) (^_ (readm t ...)) (pa$ + 1) 0)] [(_ vec n t ...) (vector-tabulate n (^_ (readm t ...)))] [(_ sym) (read)] [(_ str) (symbol->string (read))])) (define (solve n s) (let1 vc (make-vector 26 0) (generator-for-each (^i (let1 j (- (char->integer (string-ref s i)) 65) (v-update! (v~ vc j) (pa$ + 1)))) (giota n)) (generator-for-each (^i (display (v~ vc i))) (giota 26)) (display #\newline))) (define (main args) (let* ([n (read)] [s (readm str)]) (solve n s)) 0)