Jump to content

Letter frequency: Difference between revisions

Added solution for Action!
(Added solution for Action!)
Line 223:
(defun letter-freq (str)
(freq-table (coerce str 'list)))</lang>
 
=={{header|Action!}}==
{{libheader|Action! Tool Kit}}
<lang Action!>INCLUDE "D2:PRINTF.ACT" ;from the Action! Tool Kit
 
CARD ARRAY histogram(256)
 
PROC Clear()
INT i
 
FOR i=0 TO 255
DO histogram(i)=0 OD
RETURN
 
PROC ProcessLine(CHAR ARRAY line)
INT i
 
FOR i=1 TO line(0)
DO
histogram(line(i))==+1
OD
RETURN
 
PROC ProcessFile(CHAR ARRAY fname)
CHAR ARRAY line(255)
BYTE dev=[1]
 
Close(dev)
Open(dev,fname,4)
WHILE Eof(dev)=0
DO
InputSD(dev,line)
ProcessLine(line)
OD
Close(dev)
RETURN
 
PROC PrintResult()
INT i
CHAR ARRAY s(10)
 
FOR i=0 TO 255
DO
IF histogram(i) THEN
StrC(histogram(i),s)
PrintF(" %C:%-5S",i,s)
FI
OD
RETURN
 
PROC Main()
CHAR ARRAY fname="H6:LETTE_KJ.ACT"
BYTE LMARGIN=$52,old
 
old=LMARGIN
LMARGIN=0 ;remove left margin on the screen
 
Put(125) PutE() ;clear the screen
PrintF("Reading ""%S""...%E%E",fname)
ProcessFile(fname)
PrintResult()
 
LMARGIN=old ;restore left margin on the screen
RETURN</lang>
{{out}}
[https://gitlab.com/amarok8bit/action-rosetta-code/-/raw/master/images/Letter_frequency.png Screenshot from Atari 8-bit computer]
<pre>
Reading "H6:LETTE_KJ.ACT"...
 
:150 !:1 ":12 $:1 %:5
(:27 ):27 +:1 ,:8 -:1
.:5 0:7 1:5 2:7 4:1
5:10 6:2 ::3 ;:4 =:13
A:25 B:2 C:19 D:12 E:16
F:10 G:4 H:8 I:13 J:1
K:2 L:9 M:5 N:15 O:20
P:16 R:44 S:4 T:20 U:6
W:1 Y:8 [:1 ]:1 _:1
a:16 c:9 d:10 e:49 f:9
g:8 h:9 i:36 l:20 m:14
n:29 o:23 p:2 r:25 s:24
t:24 u:5 v:7
</pre>
 
=={{header|Ada}}==
Anonymous user
Cookies help us deliver our services. By using our services, you agree to our use of cookies.