
コードゴルフを「写経」した
お疲れ様です。Y研究員です。一つの課題をいろいろな書き方で解決する、プログラミング文体練習を「写経」しています。
今日はできるだけ短く書くコードゴルフを「写経」しました。本の解説でもありましたが、行数を数えるのは簡単です。しかし、それだけでプログラムの優劣を判断するのは難しいです。
外部のライブラリを使うと短くかけますが、自分でどうにもならない問題になるかもしれません。逆に長く書くと、読むのに時間がかかるので、これまた管理が難しくなります。つまるところ、丁度いい長さってものがある、という事でしょう。
GitHubには何個か回答例がありました。Pythonでlistのsetとheapq.nlargestを使う例があったので「写経」しました。短いので打ち間違いもなく一発完動でした。
#!/usr/bin/env python
import heapq, re, sys
words = re.findall("[a-z]{2,}", open(sys.argv[1]).read().lower())
for w in heapq.nlargest(25, set(words) - set(open("./stop_words.txt").read().split(",")), words.count):
print(w, '-', words.count(w))
次からは関数合成の部に入ります。まずは再帰みたいです。
それではまた!
いいなと思ったら応援しよう!
