RosettaCodeData/Task/Letter-frequency/Zkl/letter-frequency.zkl

17 lines
532 B
Plaintext

fcn ccnt(textInBitBucket){
letters:=["a".."z"].pump(List().write,0); // array of 26 zeros
textInBitBucket.howza(0).pump(Void,'wrap(c){ // pump text as ints
if(97<=c<=122) c-=97;
else if(65<=c<=90) c-=65;
else return(Void.Skip);
letters[c]+=1
});
sum:=letters.sum(); println(sum," letters");
letters.enumerate().pump(List,'wrap([(c,n)]){
"%s(%d:%d%)".fmt((c+65).toChar(),n,n*100/sum)})
.concat(",").println();
}
ccnt(Data(0,Int,"This is a test"));
ccnt(File("dict.txt").read());