コード中の文字の頻度分析
出題者です。 こちらで用意していた回答は awk を使ったものでした。一応解説すると、組み込み変数FSを空にし、1行単位の文字毎に連想配列に格納しています。
1 2 3 4 5 6 7 8 9 | # 1文字版
BEGIN { FS="" }
{ for (i=1; i<=NF; i++) ht[$i]++}
END { for (c in ht) print ht[c],c }
# 3文字版
BEGIN { FS="" }
{ for (i=1; i<=NF-2; i++) { ht[$i$(i+1)$(i+2)]++}}
END { for (c in ht) print ht[c],c }
|
Posted feedbacks - Python
httplib.pyを解析させました。
spaceが多いのはインデントのせいでしょう。
辞書いいです。
[nori@Asama]~/Desktop/study/python/code% python count.py /usr/lib64/python2.4/httplib.py
{'\n': 1370, ' ': 14394, '"': 262, '(': 385, '*': 15, ',': 317, '.': 707, '0': 131, '2': 46, '4': 36, '6': 16, '8': 6, ':': 337, '<': 12, '>': 23, 'B': 22, 'D': 55, 'F': 52, 'H': 93, 'L': 78, 'N': 210, 'P': 112, 'R': 148, 'T': 313, 'V': 13, 'X': 25, 'Z': 4, '\\': 22, '`': 5, 'b': 215, 'd': 859, 'f': 1013, 'h': 761, 'j': 24, 'l': 1444, 'n': 1682, 'p': 606, 'r': 1429, 't': 1968, 'v': 182, 'x': 68, 'z': 26, '|': 19, '~': 1, '!': 12, '#': 224, '%': 18, "'": 220, ')': 390, '+': 21, '-': 127, '/': 39, '1': 110, '3': 18, '5': 20, '7': 6, '9': 19, ';': 8, '=': 440, '?': 8, 'A': 84, 'C': 109, 'E': 195, 'G': 16, 'I': 106, 'K': 17, 'M': 31, 'O': 104, 'Q': 22, 'S': 163, 'U': 64, 'W': 23, 'Y': 12, '[': 53, ']': 54, '_': 615, 'a': 1247, 'c': 809, 'e': 3748, 'g': 253, 'i': 1345, 'k': 254, 'm': 324, 'o': 1443, 'q': 60, 's': 2200, 'u': 579, 'w': 206, 'y': 169, '{': 5, '}': 5}
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | import sys
fn = sys.argv[1]
if not fn:
sys.exit(1)
hist = dict()
f = file(fn)
buf = f.read(1000)
while buf:
for ch in buf:
count = hist.get(ch, 0)
count +=1
hist.update({ch:count})
buf = f.read(1000)
print hist
|





crane
#6382()
Rating0/0=0.00
プログラムコード中の文字の頻度は言語によって相当にばらつきがあると思います。ある言語はピリオドが頻出するとか、別の言語はカッコの頻出頻度が高い、とか。そこで、
(その言語で書かれた「典型的な」プログラムコード、といえるようなものがあると良いのですが・・)
簡単すぎるという方は、複数文字にしてみたり単語の頻度にしてみてください。
参考;Wikipedia 頻度分析
http://ja.wikipedia.org/wiki/%E9%A0%BB%E5%BA%A6%E5%88%86%E6%9E%90
1 reply [ reply ]