Treść
Algorytmy kompresji LZxx
bardziej rozbudowana funkcja assert korzystająca z dobrodziejstw preprocesora. Np.:
f = fopen(filename, 'w'); Assert(f != NULL, ("File %s not found", filename))
[en] Program converts a list of words saved in a text-file into format recognized by OO (tested in OO 1.0 and 1.1.1). It also converts a polish diacritical characters — simply define PL on compilation.
[pl] Program konwertuje listę słów (każde słowo w jednym wierszu) na słownik użytkownika dla programu OpenOffice; testowane na OO 1.0, 1.1. Słownik należy skopiować do katalogu {OO}/user/wordbook i ponownie uruchomić OO.
Użycie:
$ wordlist2userdic lista_słów openoffice.dic $ wordlist2userdic.awk < lista_słów > openoffice.dicKompilacja:
$ gcc wordlist2userdic.c -o wordlist2userdic $ gcc -DPL wordlist2userdic.c -o wordlist2userdic # polskie litery
See the repository
- demo (PIL): Sutherland-Hodgman.py
- demo (Tkinter): polyintersect-tkdemo.py [2006-12-05]
- algorytm: polyintersect.py [2006-12-05]
Funkcja grupuje kolejne elementy list, dla których funkcja value zwróci tę samą wartość.
>>> L = [1, 1, 1, 1, 2, 3, 3, 4, 4, 4, 4] >>> group_elements(L) [(1, [1, 1, 1, 1]), (2, [2]), (3, [3, 3]), (4, [4, 4, 4, 4])] >>> >>> L = ["aaa", "aab", "bba", "bab", "bca"] >>> group_elements(L, lambda x: x[0]) [('a', ['aaa', 'aab']), ('b', ['bba', 'bab', 'bca'])] >>>
Zwraca listę par (wspólny element, lista elementów).
Funkcję fields (z bodajże SML-a), która działa podobnie do split, ale zostawia na liście pola białych znaków można bardzo zgrabnie wyrazić za pomocą group_elements:
def fields(string, pred=lambda x: x.isspace()): tmp = group_elements(string, pred) return [(p, ”.join(cl)) for p, cl in tmp]
W pliku znajdują się dwie funkcje: find_file oraz find_all_files.
Funkcja find_file zwraca pierwszy plik, dla którego predykat pred jest prawdziwy, natomiast find_all_files zwraca listę wszystkich plików spełniających predykat. Funkcja pred przyjmuje dwa argumenty: nazwę bieżącego katalogu oraz nazwę pliku.
Funkcje wyszukują pliki w katalogu, bądź na liście katalogów.
Obie funkcje przechodzą katalogi wszerz; o tym czy katalog zostanie odwiedzony decyduje funkcja enterdir (domyślnie każdy katalog jest odwiedzany). Funkcja enterdir przyjmuje dwa argumenty: nazwę bieżącego katalogu oraz poziom w drzewie katalogów (liczony od zera).
Wyszukanie pliku nie uwzględniając rozmiaru liter:
filename = 'Text.TXT' def pred(p, f): return f.lower() == filename.lower() f = find_file(['.', '/home/'], pred)
Wyszukanie plików .py we wszystkich katalogach oprócz CVS, .svn i tmp:
def pred(p, f): return f.endswith('.py') def enterdir(p, l): return not p.endswith('/CVS') and \ not p.endswith('/.svn') and \ not p.endswith('/tmp') fl = find_all_files('.', pred, enterdir)
See the repository for more programs.
Demonstracja dwóch metod dodawania z nasyceniem pikseli 16bpp (metody 1: x86 i 3: MMX).
Program możne działać albo wsadowo i wówczas wykonuje wybraną procedurę n razy (profilowanie, pomiar wydajności) albo interaktywnie — ładuje wskazany obrazek PPM, wyświetla w oknie (X Window) i wykonuje dodawanie z nasyceniem. Do kompilacji dla X Window wymaga dodatkowo bibliotek loadppm oraz Xscr, źródło zawiera opis kompilacji.