1章古き良き時代――アセンブリ言語Good Old Times

制約

  • 非常に小さいメモリ。処理するデータや生成されるデータより数桁小さい。
  • 識別子を使用しない。つまり変数名やタグ付きアドレスは利用できず、メモリはアドレスでのみ指定可能。

プログラム

  1 #!/usr/bin/env python
  2 import sys, os
  3
  4 # 「2次記憶」としての中間ファイルを扱うユーティリティ関数
  5 def touchopen(filename, *args, **kwargs):
  6     try:
  7         os.remove(filename)
  8     except OSError:
  9         pass
 10     open(filename, "a").close() # ファイルをtouchする
 11     return open(filename, *args, **kwargs)
 12
 13 # メモリ制約として、1024セル以下とすること
 14 data = []
 15 # 利点:
 16 # ストップワードはわずか556文字、行はすべて80文字未満なので、これらを
 17 # 利用して問題を単純化できる。入力を1行ずつ処理しながら、ストップワード
 18 # をメモリに読み込む。この2つの前提が成り立たない場合は、アルゴリズムを
 19 # 大幅に変更する必要がある。
 20
 21 # 全体戦略:
 22 # (前半)入力ファイルを読み、単語数を数える。2次記憶(ファイル)に ...

Get プログラミング文体練習 ―Pythonで学ぶ40のプログラミングスタイル now with the O’Reilly learning platform.

O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.