Initial data commit
This commit is contained in:
parent
72d218235f
commit
f23f22d71c
199087 changed files with 3378941 additions and 0 deletions
63
Task/Function-frequency/ACL2/function-frequency.acl2
Normal file
63
Task/Function-frequency/ACL2/function-frequency.acl2
Normal file
|
|
@ -0,0 +1,63 @@
|
|||
(in-package "ACL2")
|
||||
|
||||
(set-state-ok t)
|
||||
|
||||
(defun read-all-objects (limit channel state)
|
||||
(mv-let (eof obj state)
|
||||
(read-object channel state)
|
||||
(if (or eof (zp limit))
|
||||
(mv nil state)
|
||||
(mv-let (so-far state)
|
||||
(read-all-objects (- limit 1) channel state)
|
||||
(mv (cons obj so-far) state)))))
|
||||
|
||||
(defun list-starters (xs)
|
||||
(cond ((endp xs) nil)
|
||||
((consp (first xs))
|
||||
(append (if (symbolp (first (first xs)))
|
||||
(list (first (first xs)))
|
||||
nil)
|
||||
(list-starters (rest (first xs)))
|
||||
(list-starters (rest xs))))
|
||||
(t (list-starters (rest xs)))))
|
||||
|
||||
(defun invoked-functions (filename state)
|
||||
(mv-let (channel state)
|
||||
(open-input-channel filename :object state)
|
||||
(mv-let (code state)
|
||||
(read-all-objects 1000 channel state)
|
||||
(mv (list-starters code) state))))
|
||||
|
||||
(defun increment-for (key alist)
|
||||
(cond ((endp alist) (list (cons key 1)))
|
||||
((equal key (car (first alist)))
|
||||
(cons (cons key (1+ (cdr (first alist))))
|
||||
(rest alist)))
|
||||
(t (cons (first alist)
|
||||
(increment-for key (rest alist))))))
|
||||
|
||||
(defun symbol-freq-table (symbols)
|
||||
(if (endp symbols)
|
||||
nil
|
||||
(increment-for (first symbols)
|
||||
(symbol-freq-table (rest symbols)))))
|
||||
|
||||
(defun insert-freq-table (pair alist)
|
||||
(cond ((endp alist)
|
||||
(list pair))
|
||||
((> (cdr pair) (cdr (first alist)))
|
||||
(cons pair alist))
|
||||
(t (cons (first alist)
|
||||
(insert-freq-table pair (rest alist))))))
|
||||
|
||||
(defun isort-freq-table (alist)
|
||||
(if (endp alist)
|
||||
nil
|
||||
(insert-freq-table (first alist)
|
||||
(isort-freq-table (rest alist)))))
|
||||
|
||||
(defun main (state)
|
||||
(mv-let (fns state)
|
||||
(invoked-functions "function-freq.lisp" state)
|
||||
(mv (take 10 (isort-freq-table
|
||||
(symbol-freq-table fns))) state)))
|
||||
Loading…
Add table
Add a link
Reference in a new issue