Data update
This commit is contained in:
parent
5150844a7d
commit
4bb20c9b71
7735 changed files with 38060 additions and 199180 deletions
|
|
@ -1,66 +0,0 @@
|
|||
with Ada.Text_Io;
|
||||
with Ada.Command_Line;
|
||||
with Ada.Numerics.Elementary_Functions;
|
||||
|
||||
procedure Entropy is
|
||||
use Ada.Text_Io;
|
||||
|
||||
type Hist_Type is array (Character) of Natural;
|
||||
|
||||
function Log_2 (V : Float) return Float is
|
||||
use Ada.Numerics.Elementary_Functions;
|
||||
begin
|
||||
return Log (V) / Log (2.0);
|
||||
end Log_2;
|
||||
|
||||
procedure Read_File (Name : String; Hist : out Hist_Type) is
|
||||
File : File_Type;
|
||||
Char : Character;
|
||||
begin
|
||||
Hist := (others => 0);
|
||||
Open (File, In_File, Name);
|
||||
while not End_Of_File (File) loop
|
||||
Get (File, Char);
|
||||
Hist (Char) := Hist (Char) + 1;
|
||||
end loop;
|
||||
Close (File);
|
||||
end Read_File;
|
||||
|
||||
function Length_Of (Hist : Hist_Type) return Natural is
|
||||
Sum : Natural := 0;
|
||||
begin
|
||||
for V of Hist loop
|
||||
Sum := Sum + V;
|
||||
end loop;
|
||||
return Sum;
|
||||
end Length_Of;
|
||||
|
||||
function Entropy_Of (Hist : Hist_Type) return Float is
|
||||
Length : constant Float := Float (Length_Of (Hist));
|
||||
Sum : Float := 0.0;
|
||||
begin
|
||||
for V of Hist loop
|
||||
if V > 0 then
|
||||
Sum := Sum + Float (V) / Length * Log_2 (Float (V) / Length);
|
||||
end if;
|
||||
end loop;
|
||||
return -Sum;
|
||||
end Entropy_Of;
|
||||
|
||||
package Float_Io is new Ada.Text_Io.Float_Io (Float);
|
||||
Name : constant String := Ada.Command_Line.Argument (1);
|
||||
Hist : Hist_Type;
|
||||
Entr : Float;
|
||||
begin
|
||||
Float_Io.Default_Exp := 0;
|
||||
Float_Io.Default_Aft := 6;
|
||||
|
||||
Read_File (Name, Hist);
|
||||
Entr := Entropy_Of (Hist);
|
||||
|
||||
Put ("Entropy of '");
|
||||
Put (Name);
|
||||
Put ("' is ");
|
||||
Float_Io.Put (Entr);
|
||||
New_Line;
|
||||
end Entropy;
|
||||
|
|
@ -1,46 +0,0 @@
|
|||
(entropy
|
||||
(vl-prin1-to-string
|
||||
(eval
|
||||
(defun-q entropy (str / log2 eCalc strList len ent cnt n new end cPrev)
|
||||
(defun log2 (x)
|
||||
(if (> x 0)
|
||||
(/ (log x) (log 2.0))
|
||||
)
|
||||
)
|
||||
(defun eCalc (cnt len / p)
|
||||
(setq p (/ (float cnt) len))
|
||||
(* p (log2 p))
|
||||
)
|
||||
(setq
|
||||
strList (acad_strlsort (mapcar 'chr (vl-string->list str)))
|
||||
len (length strList)
|
||||
ent 0.0
|
||||
cnt 0
|
||||
n 0
|
||||
)
|
||||
(foreach c strList
|
||||
(setq
|
||||
n (1+ n)
|
||||
new (and cPrev (not (eq c cPrev)))
|
||||
end (= n len)
|
||||
)
|
||||
(if (or new end)
|
||||
(setq
|
||||
cnt (if (and end (not new)) (1+ cnt) cnt)
|
||||
ent (+ ent (eCalc cnt len))
|
||||
cnt 0
|
||||
)
|
||||
)
|
||||
(if (and new end)
|
||||
(setq ent (+ ent (eCalc 1 len)))
|
||||
)
|
||||
(setq
|
||||
cnt (1+ cnt)
|
||||
cPrev c
|
||||
)
|
||||
)
|
||||
(* -1 ent)
|
||||
)
|
||||
)
|
||||
)
|
||||
)
|
||||
|
|
@ -1,20 +0,0 @@
|
|||
(defun shannon-entropy (input)
|
||||
(let ((freq-table (make-hash-table))
|
||||
(entropy 0)
|
||||
(length (+ (length input) 0.0)))
|
||||
(mapcar (lambda (x)
|
||||
(puthash x
|
||||
(+ 1 (gethash x freq-table 0))
|
||||
freq-table))
|
||||
input)
|
||||
(maphash (lambda (k v)
|
||||
(set 'entropy (+ entropy
|
||||
(* (/ v length)
|
||||
(log (/ v length) 2)))))
|
||||
freq-table)
|
||||
(- entropy)))
|
||||
|
||||
(defun narcissist ()
|
||||
(shannon-entropy (with-temp-buffer
|
||||
(insert-file-contents "U:/rosetta/narcissist.el")
|
||||
(buffer-string))))
|
||||
|
|
@ -1,2 +0,0 @@
|
|||
(narcissist)
|
||||
4.5129548515535785
|
||||
|
|
@ -1,26 +1,24 @@
|
|||
(notonline)-->
|
||||
<span style="color: #008080;">without</span> <span style="color: #008080;">js</span> <span style="color: #000080;font-style:italic;">-- command_line, file i/o</span>
|
||||
<span style="color: #008080;">function</span> <span style="color: #000000;">entropy</span><span style="color: #0000FF;">(</span><span style="color: #004080;">sequence</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #004080;">sequence</span> <span style="color: #000000;">symbols</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{},</span>
|
||||
<span style="color: #000000;">counts</span> <span style="color: #0000FF;">=</span> <span style="color: #0000FF;">{}</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">N</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">s</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #000000;">N</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">object</span> <span style="color: #000000;">si</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">s</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]</span>
|
||||
<span style="color: #004080;">integer</span> <span style="color: #000000;">k</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">find</span><span style="color: #0000FF;">(</span><span style="color: #000000;">si</span><span style="color: #0000FF;">,</span><span style="color: #000000;">symbols</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">if</span> <span style="color: #000000;">k</span><span style="color: #0000FF;">=</span><span style="color: #000000;">0</span> <span style="color: #008080;">then</span>
|
||||
<span style="color: #000000;">symbols</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">symbols</span><span style="color: #0000FF;">,</span><span style="color: #000000;">si</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #000000;">counts</span> <span style="color: #0000FF;">=</span> <span style="color: #7060A8;">append</span><span style="color: #0000FF;">(</span><span style="color: #000000;">counts</span><span style="color: #0000FF;">,</span><span style="color: #000000;">1</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">else</span>
|
||||
<span style="color: #000000;">counts</span><span style="color: #0000FF;">[</span><span style="color: #000000;">k</span><span style="color: #0000FF;">]</span> <span style="color: #0000FF;">+=</span> <span style="color: #000000;">1</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">if</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">H</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">0</span>
|
||||
<span style="color: #008080;">for</span> <span style="color: #000000;">i</span><span style="color: #0000FF;">=</span><span style="color: #000000;">1</span> <span style="color: #008080;">to</span> <span style="color: #7060A8;">length</span><span style="color: #0000FF;">(</span><span style="color: #000000;">counts</span><span style="color: #0000FF;">)</span> <span style="color: #008080;">do</span>
|
||||
<span style="color: #004080;">atom</span> <span style="color: #000000;">ci</span> <span style="color: #0000FF;">=</span> <span style="color: #000000;">counts</span><span style="color: #0000FF;">[</span><span style="color: #000000;">i</span><span style="color: #0000FF;">]/</span><span style="color: #000000;">N</span>
|
||||
<span style="color: #000000;">H</span> <span style="color: #0000FF;">-=</span> <span style="color: #000000;">ci</span><span style="color: #0000FF;">*</span><span style="color: #7060A8;">log2</span><span style="color: #0000FF;">(</span><span style="color: #000000;">ci</span><span style="color: #0000FF;">)</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">for</span>
|
||||
<span style="color: #008080;">return</span> <span style="color: #000000;">H</span>
|
||||
<span style="color: #008080;">end</span> <span style="color: #008080;">function</span>
|
||||
without js -- command_line, file i/o
|
||||
function entropy(sequence s)
|
||||
sequence symbols = {},
|
||||
counts = {}
|
||||
integer N = length(s)
|
||||
for i=1 to N do
|
||||
object si = s[i]
|
||||
integer k = find(si,symbols)
|
||||
if k=0 then
|
||||
symbols = append(symbols,si)
|
||||
counts = append(counts,1)
|
||||
else
|
||||
counts[k] += 1
|
||||
end if
|
||||
end for
|
||||
atom H = 0
|
||||
for i=1 to length(counts) do
|
||||
atom ci = counts[i]/N
|
||||
H -= ci*log2(ci)
|
||||
end for
|
||||
return H
|
||||
end function
|
||||
|
||||
<span style="color: #0000FF;">?</span><span style="color: #000000;">entropy</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">get_text</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">open</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">substitute</span><span style="color: #0000FF;">(</span><span style="color: #7060A8;">command_line</span><span style="color: #0000FF;">()[</span><span style="color: #000000;">2</span><span style="color: #0000FF;">],</span><span style="color: #008000;">".exe"</span><span style="color: #0000FF;">,</span><span style="color: #008000;">".exw"</span><span style="color: #0000FF;">)),</span><span style="color: #008000;">"rb"</span><span style="color: #0000FF;">))</span>
|
||||
<!--
|
||||
?entropy(get_text(open(substitute(command_line()[2],".exe",".exw")),"rb"))
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue