baal #6708(2008/07/08 09:54 GMT) [ Scheme ] Rating0/0=0.00
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
(define make-char-counter (lambda () (let ((ls '())) (lambda (c) (if (char? c) (set! ls (let loop ((li ls) (flag #f) (ret '())) (if (pair? li) (if (char=? c (caar li)) (loop (cdr li) #t (cons (cons c (+ 1 (cdar li))) ret)) (loop (cdr li) flag (cons (car li) ret))) (if flag ret (cons (cons c 1) ret))))) ls))))) (define count-char (lambda (file) (call-with-input-file file (lambda (in) (let ((counter (make-char-counter))) (let loop ((c (read-char in))) (if (eof-object? c) (counter #f) (begin (counter c) (loop (read-char in)))))))))) (define main (lambda (args) (let* ((count (sort (count-char (cadr args)) (lambda (x y) (> (cdr x) (cdr y))))) (total (fold (lambda (p total) (+ (cdr p) total)) 0 count))) (for-each (lambda (p) (format #t "~s = ~d / ~d : ~d.~2,'0d %" (car p) (cdr p) total (inexact->exact (truncate (* (/ (cdr p) total) 100))) (remainder (inexact->exact (truncate (* (/ (cdr p) total) 10000))) 100)) (newline)) count)) 0))
Rating0/0=0.00-0+
[ reply ]
baal
#6708()
[
Scheme
]
Rating0/0=0.00
Gauche 付属の srfi-42.scm を分析してみました。
#\space = 11142 / 38818 : 28.70 %
#\e = 2396 / 38818 : 6.17 %
#\( = 1640 / 38818 : 4.22 %
#\) = 1634 / 38818 : 4.20 %
#\r = 1492 / 38818 : 3.84 %
#\t = 1419 / 38818 : 3.65 %
#\= = 1391 / 38818 : 3.58 %
#\a = 1284 / 38818 : 3.30 %
#\s = 1280 / 38818 : 3.29 %
#\i = 1194 / 38818 : 3.07 %
...
やっぱり括弧がちょっと多めかな。
Rating0/0=0.00-0+
[ reply ]