[python] Pro volný čas - Algebrogram

Petr Přikryl prikryl na atlas.cz
Pondělí Duben 18 08:19:13 CEST 2011


Jen pro zajímavost, stejná věc se řeší v "Ponořme se do Pythonu 3" od Marka Pilgrima.
V českém překladu http://knihy.nic.cz/files/nic/edice/mark_pilgrim_dip3_ver3.pdf
je to na straně 175 a 176 (pojem algebrogram jsem neznal, takže jsem to přeložil
trochu otrocky).  

Úloha se formálně zapisuje jako boolovský výraz a využívá  se 
(trochu hodně nebezpečná) funkce eval():

JAN + DNES + NEVI + ZDA + SE + JEDE + JEDNA + JIZDA == ZNOVA

V angličině je to tady a dá se tam přímo stáhnout i pythonovský zdroják. Ale pozor
je to upraveno pro Python 3. 

Originální řešení od Raymonda Hettingera je tady (pro Python 2):
http://code.activestate.com/recipes/576615/

Hledá to ale jen první řešení (pak to zastaví, dalo by se to upravit). Možná to 
není nejefektivnější, ale řešení je zapsáno na pár řádcích. (Na mém průměrném 
počítači to první řešení "JAN DNES NEVI..." ukázalo asi za 10 sekund (varianta
pro Python 3).

(Taky to není upravené na česká písmena, ale to se dá jednoduše.)

Mějte se všichni fajn,
    Petr

______________________________________________________________
> "Tomix" napsal
> Datum: 15.04.2011 18:04
> Předmět: [python] Pro volný čas - Algebrogram

Zdravím, už dlouho se tu neřešil
nějaký kvíz, tak bych jeden měl:
>
>
http://nb.vse.cz/~fabry/hadanky-algebrogram.html
>
>
  JAN
>
 DNES
>
 NEVÍ
>
  ZDA
>
   SE
>
 JEDE
>
JEDNA
>
JÍZDA
>
-------
>
ZNOVA
>
>
Zajímalo by mě, jestli je v Pythonu možné napsat řešení, které
proběhne v rozumném čase.
>
Tak do hodiny.
>
Moje řešení se za několik hodin dostane cca do poloviny
potřebných cyklů. (amd1700+)
>
Stejný kód, přepsaný do C++ proběhne komplet za 20 minut.
>
>
Moje řešení v Pythonu:
>
http://codepad.org/wWPg3qQf
>
>
A v C++
>
http://codepad.org/fcy0MEmA
>
>
Příkad má 10 řešení.
>
>
--------------------------------------------------------------------------
>
Tady je ještě jeden, lehčí:
>
http://nb.vse.cz/~fabry/hadanky-algebrogram-prsi-prsi.html
>
>
PRŠÍ
>
PRŠÍ
>
 JEN
>
  SE
>
----
>
LEJE
>
>
(104 řešení)
>
>
-------
>
Tomix
>
>
>
>
 
>
>
>
>




_______________________________________________
>Python mailing list
>Python na py.cz
>http://www.py.cz/mailman/listinfo/python
>


Další informace o konferenci Python