見出し画像

コードゴルフを「写経」した

お疲れ様です。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))

次からは関数合成の部に入ります。まずは再帰みたいです。

それではまた!

無料のプログラミングクラブCoderDojoを運営するにあたり寄付を受け付けています。お金は会場費・Wifiの費用・教科書に使用します。