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.