« Programspråket Icon och några Project Euler problem | Main | Constraint programming modeller i Gecode/R (Ruby interface till Gecode) »

januari 05, 2009

Isomorfa ord (Isomorphic Words) - programmet

2004 skrevs programmet Isomorphic words som söker efter isomorfa ord till ett givet källord. Programmet och begreppet "isomorfa ord" presenterades i Isomorfa ord (Isomorphic Words).

För ett tag sedan kom en förfrågan om källkoden till programmet, varpå en CLI (Command Line Interface)-version av webb-programmet skapades. Tänkte nu att programmet likaväl kunde komma till allmänhetens fromma.

isomorphic_words.py
Programmet isomorphic_words.py är ett Pythonprogram som gör i stort sett allting som CGI-programmet gör. Syntaxen är:

     python isomorphic_words.py word exact_match language

där argumenten har följande betydelse:

* word: ordet som ska isomorferas.
* exact_match: 0 eller 1 (default 1). Om det ska göras en exakt match eller inte. Se ovanstående länkar för betydelsen av detta.
* language: Språk, eller snarare ordlista. CLI-programmet stöder endast språk "eng" som är kopplat till ordlistan /usr/dict/words (standardplaceringen i Linux). Av copyright-skäl etc lämnas inte den svenska ordlistan ut.


Exempel
Här är en exempelkörning på "ordet" (snarare strukturen) abbab, dvs att första och fjärde bokstäverna ska vara samma, och andra, tredje och femte bokstäverna ska vara samma. Ordlistan är /usr/dict/words, dvs engelska ord.


     python isomorphic_words.py abbab

Med resultatet:


Word: abbab
Word structure of 'abbab': [0, 1, 1, 0, 1]
Exact isomorphism: yes
Language: english
Print mappings: yes

beebe
2 chars: "a" -> "b"
3 chars: "b" -> "e"

esses
2 chars: "a" -> "e"
3 chars: "b" -> "s"

poopo
2 chars: "a" -> "p"
3 chars: "b" -> "o"

taata
2 chars: "a" -> "t"
3 chars: "b" -> "a"


It was 4 isomorphics words to 'abbab', with exact isomorphism: yes


Not
Om programmet används får det gärna refereras till ovanstående program och/eller till undertecknad.

Posted by hakank at januari 5, 2009 11:00 FM Posted to Språk | Systemutveckling