<?xml version='1.0' encoding='UTF-8'?><?xml-stylesheet href="http://www.blogger.com/styles/atom.css" type="text/css"?><feed xmlns='http://www.w3.org/2005/Atom' xmlns:openSearch='http://a9.com/-/spec/opensearchrss/1.0/' xmlns:georss='http://www.georss.org/georss'><id>tag:blogger.com,1999:blog-19301055</id><updated>2009-10-13T22:56:28.591+03:00</updated><title type='text'>EnErGy[CSDX] Blog</title><subtitle type='html'>truth is out of there</subtitle><link rel='http://schemas.google.com/g/2005#feed' type='application/atom+xml' href='http://energyblog.blogspot.com/feeds/posts/default'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19301055/posts/default'/><link rel='alternate' type='text/html' href='http://energyblog.blogspot.com/'/><link rel='hub' href='http://pubsubhubbub.appspot.com/'/><author><name>EnErGy[CSDX]</name><uri>http://www.blogger.com/profile/01217432111321323317</uri><email>noreply@blogger.com</email></author><generator version='7.00' uri='http://www.blogger.com'>Blogger</generator><openSearch:totalResults>2</openSearch:totalResults><openSearch:startIndex>1</openSearch:startIndex><openSearch:itemsPerPage>25</openSearch:itemsPerPage><entry><id>tag:blogger.com,1999:blog-19301055.post-114551488308079673</id><published>2006-04-20T09:13:00.000+03:00</published><updated>2006-05-15T09:45:10.626+03:00</updated><title type='text'>Рисуем диаграмы реляционной базы</title><content type='html'>Дампим базу в файл&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;pg_dump -s base &gt;dump.sql&lt;br /&gt;&lt;/pre&gt;далее ниже приведенным скриптом генерим .dot файл для graphviz&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;from pyparsing import Literal, CaselessLiteral, Word, delimitedList         ,Optional, Combine, Group, alphas, nums, alphanums, Forward         ,oneOf, sglQuotedString, OneOrMore, ZeroOrMore, CharsNotIn         ,Suppress&lt;br /&gt;&lt;br /&gt;parenthesis = Forward()        &lt;br /&gt;&lt;br /&gt;parenthesis &lt;&lt;= "(" + ZeroOrMore(CharsNotIn("()") | parenthesis)  + ")"&lt;br /&gt;&lt;br /&gt;field_def = OneOrMore(Word(alphanums+"_\"':-") | parenthesis)&lt;br /&gt;&lt;br /&gt;def field_act(s,loc,tok):&lt;br /&gt;    return ("&lt;"+tok[0]+"&gt; " + " ".join(tok)).replace("\"","\\\"")&lt;br /&gt;    &lt;br /&gt;field_def.setParseAction(field_act)&lt;br /&gt;&lt;br /&gt;field_list_def =  field_def + ZeroOrMore(Suppress(",") + field_def)&lt;br /&gt;&lt;br /&gt;def field_list_act(s,loc,tok):&lt;br /&gt;    return " | ".join(tok)&lt;br /&gt;    &lt;br /&gt;field_list_def.setParseAction(field_list_act)&lt;br /&gt;&lt;br /&gt;create_table_def = Literal("CREATE")+"TABLE"+Word(alphas).setResultsName("tableName")+"("+field_list_def.setResultsName("fields")+")"+";"&lt;br /&gt;&lt;br /&gt;def create_table_act(s,loc,tok):&lt;br /&gt;    return """"%(tableName)s" [\n\t label="&lt;%(tableName)s&gt; %(tableName)s | %(fields)s"\n\t shape="record"\n];""" % tok&lt;br /&gt;&lt;br /&gt;create_table_def.setParseAction(create_table_act)&lt;br /&gt;&lt;br /&gt;add_fkey_def=Literal("ALTER")+"TABLE"+"ONLY" + Word(alphanums+"_").setResultsName("tableName") + "ADD"     + "CONSTRAINT" + Word(alphanums+"_") + "FOREIGN"+"KEY"+"("+Word(alphanums+"_").setResultsName("keyName")+")"     +"REFERENCES"+Word(alphanums+"_").setResultsName("fkTable")+"("+Word(alphanums+"_").setResultsName("fkCol")+")"+";"&lt;br /&gt;    &lt;br /&gt;def add_fkey_act(s,loc,tok):&lt;br /&gt;    return """ "%(tableName)s":%(keyName)s -&gt; "%(fkTable)s":%(fkCol)s """ % tok&lt;br /&gt;&lt;br /&gt;add_fkey_def.setParseAction(add_fkey_act)&lt;br /&gt;&lt;br /&gt;other_statement_def = ( OneOrMore(CharsNotIn(";") )  + ";")&lt;br /&gt;&lt;br /&gt;def other_statement_act(s,loc,tok):&lt;br /&gt;    return ""&lt;br /&gt;    &lt;br /&gt;other_statement_def.setParseAction(other_statement_act)&lt;br /&gt;&lt;br /&gt;comment_def = "--" + ZeroOrMore(CharsNotIn("\n"))&lt;br /&gt;&lt;br /&gt;comment_def.setParseAction(other_statement_act)&lt;br /&gt;&lt;br /&gt;statement_def =  comment_def | create_table_def | add_fkey_def | other_statement_def&lt;br /&gt;&lt;br /&gt;defs =  OneOrMore(statement_def)&lt;br /&gt;&lt;br /&gt;print """digraph g { graph [ rankdir = "LR" ]; """&lt;br /&gt;&lt;br /&gt;for i in defs.parseFile("dump.sql"):&lt;br /&gt;    if i!="":&lt;br /&gt;        print i&lt;br /&gt;print "}"&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;на выходе имеем файлик&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;python sql_dia.py|dot -Tpng &gt; sql_dia.png&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;&lt;a onblur="try {parent.deselectBloggerImageGracefully();} catch(e) {}" href="http://photos1.blogger.com/blogger/8041/1907/1600/sql.png"&gt;&lt;img style="cursor: pointer;" src="http://photos1.blogger.com/blogger/8041/1907/320/sql.jpg" alt="" border="0" /&gt;&lt;/a&gt;&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19301055-114551488308079673?l=energyblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://energyblog.blogspot.com/feeds/114551488308079673/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19301055&amp;postID=114551488308079673' title='2 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19301055/posts/default/114551488308079673'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19301055/posts/default/114551488308079673'/><link rel='alternate' type='text/html' href='http://energyblog.blogspot.com/2006/04/blog-post_20.html' title='Рисуем диаграмы реляционной базы'/><author><name>EnErGy [CSDX]</name><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>2</thr:total></entry><entry><id>tag:blogger.com,1999:blog-19301055.post-113326201210445361</id><published>2005-11-29T12:59:00.001+02:00</published><updated>2009-10-13T22:11:07.392+03:00</updated><title type='text'>Задача про скобки</title><content type='html'>Задача: в выражении раставить скобки таким образом чтоб результирующие выражение было максимальным&lt;br /&gt;&lt;br /&gt;Решение: Посути нужно найти порядок в котором будет вычеслятся выражение, всего же число вариантов равно n! где n число операций в выражении&lt;br /&gt;набросок решения&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;#!/usr/bin/python&lt;br /&gt;&lt;br /&gt;def solve(d,o,v):&lt;br /&gt;   if len(o)==0:&lt;br /&gt;       print "%s = %s" % (d[0],v[0])&lt;br /&gt;   for i in range(len(o)):&lt;br /&gt;       if o[i]=="*":&lt;br /&gt;           nv = v[:i] + ( v[i]*v[i+1],) + v[i+2:]&lt;br /&gt;       elif o[i]=="+":&lt;br /&gt;           nv = v[:i] + ( v[i]+v[i+1],) + v[i+2:]&lt;br /&gt;       elif o[i]=="/":&lt;br /&gt;           nv = v[:i] + ( v[i]/v[i+1],) + v[i+2:]&lt;br /&gt;       elif o[i]=="-":&lt;br /&gt;           nv = v[:i] + ( v[i]-v[i+1],) + v[i+2:]&lt;br /&gt;&lt;br /&gt;       solve(d[:i]+("(%s%s%s)" % (d[i],o[i],d[i+1]),)+d[i+2:],o[:i]+o[i+1:],nv)&lt;br /&gt;&lt;br /&gt;digits=(1,2,3,4)&lt;br /&gt;opps=("+","*","+")&lt;br /&gt;solve(digits,opps,digits)&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;вывод:&lt;br /&gt;&lt;pre&gt;&lt;br /&gt;(((1+2)*3)+4) = 13&lt;br /&gt;((1+2)*(3+4)) = 21&lt;br /&gt;((1+(2*3))+4) = 11&lt;br /&gt;(1+((2*3)+4)) = 11&lt;br /&gt;((1+2)*(3+4)) = 21&lt;br /&gt;(1+(2*(3+4))) = 15&lt;br /&gt;&lt;/pre&gt;&lt;br /&gt;осталось только выбрать из них максимальный вариант&lt;div class="blogger-post-footer"&gt;&lt;img width='1' height='1' src='https://blogger.googleusercontent.com/tracker/19301055-113326201210445361?l=energyblog.blogspot.com'/&gt;&lt;/div&gt;</content><link rel='replies' type='application/atom+xml' href='http://energyblog.blogspot.com/feeds/113326201210445361/comments/default' title='Дописати коментарі'/><link rel='replies' type='text/html' href='https://www.blogger.com/comment.g?blogID=19301055&amp;postID=113326201210445361' title='0 коментарі(в)'/><link rel='edit' type='application/atom+xml' href='http://www.blogger.com/feeds/19301055/posts/default/113326201210445361'/><link rel='self' type='application/atom+xml' href='http://www.blogger.com/feeds/19301055/posts/default/113326201210445361'/><link rel='alternate' type='text/html' href='http://energyblog.blogspot.com/2005/11/blog-post.html' title='Задача про скобки'/><author><name>EnErGy [CSDX]</name><email>noreply@blogger.com</email></author><thr:total xmlns:thr='http://purl.org/syndication/thread/1.0'>0</thr:total></entry></feed>