Елочка

Lepsik
Дата: 04.01.2015 00:59:45
Эхх… не удержался… сделал SQL параметрическую елочку на postgres 9.3.
height — высота, igr — вероятность игрушек, rost — угол наклона елки, fon — кол-во символов обрамления, penok — высота пенька елки.

                                                    DO $_$
                                            DECLARE param text := 
                             '20 height,0.2 igr,0.7 rost,5 fon,0.06 sneg,2 penok';
                                         tt text; pp text;xx text;zz 
                                              text;___ text;elka 
                                                   CONSTANT 
                                                   refcursor
                                                   :='elka';
                                                     BEGIN 
                                                 xx:= 'select';
                                               zz:='from' ;___:=
                                              '::text'; pp :=  $$
                                             WITH b as ($$ ||xx ||
                                            $$ 'tr' $$||___|| $$ a,
                                           'r' $$ || ___ || $$ b,'a' 
                                          $$ || ___ || $$ c , 'in' $$
                                         ||___|| $$ v), a as ($$||xx||
                                        $$ 's'||a||v || 'g' s,c||b||b||
                                       c||'y' a,'en' $$ ||___|| $$ e,'l'
                                      ||c $$||___||$$ l,b|| 'e' $$||___||
                                    $$ r,'ne' $$||___||$$ n, 'el' $$||___||
                                   $$ k,'e'||b $$||___||$$ d, 'to_'$$||___||
                                  $$ _,'e'||c $$||___|| $$ g,'ow' $$||___||$$ 
                                 w,'oup' $$||___||$$ p,'by' $$||___||$$ b,'nio'
                                $$||___||$$ i,'ig'||b rg, 'dom' $$||___|| $$ o,c
                               ||'s' $$||___||$$ z,'o'||b $$||___||$$ t,'ch' $$||
                             ___||$$ f,'p' $$||___||$$ h,'on' $$||___||$$ y,b||'o'
                             $$||___||$$ j,v, c||b||c c $$||zz||$$ b),d as ($$||xx||
                            $$' f'||j||'m ' $$||___||$$ f,'s'||k||'ect ' s,'sub'||s||
                           '(' u,' f'||t||' ' r,'::'||v||'t' $$||___||$$ i,'i,g'||e||d
                          ||'ate_s'||d||'ies(' g,a||'_'||_||s||'('||a||'_agg(' a,'c'||z
                         ||'e wh'||e||' ' w,'v'||d||'si'||y||'(),_,_-_))' v,' gr'||p||' '
                        ||b||' _' o,'ran'||o||'()' n,h||'i()' p,'th'||e t,k||'se' e,e||'d'
                       d,rg,y mm,f||'r(' c,'ne'$$||___||$$ sg,z z,'l'||e||'gth' l,'::'||r||
                      'al' q,''||h||'c' __,'u'||i||'n ' un,r||h||g||'t(' re,r||h||l||'ce('pl
                     ,'un'||n||'st('||a ua,'deg'||r||'es' de,t||'d'||d||' '||b y,'ov'||d||l||
                    'y(e '||h||l||'c'||v||'g'||' '||_||f||'ar(n'||w||'(),___)' ov, n||'w_y'||g
                   ||'r_t'||r||'e' ne,'hei'$$||___||$$||'ght'$$||___||$$ b,'p' ||c||'m' ar,'os'
                  $$||___||$$ rt,'eno'$$||___||$$ pk $$||zz||$$ a)$$||xx||$$ '),c '||z||'('||s||
                 '('||p||'/'||p||')'||i||' _,('||p||'*'||p||'*'||p||')'||i||' '||__||'),i '||z||'
                ('||s||'('||s||a||'c),'||u||v||f||'('||s||c||ua||'['||__||'+_+_,'||__||'+'||p||i||
               '+_+_,'||__||'+('||p||'+'||p||')'||i||'+_,('||__||'+'||__||q||'/(_+_)-'||p||')'||i||
              ','||__||'+_+'||__||'+_,'||__||'+'||__||'+'||__||'/(_+_)+(_+_)])) c) h) j, '||c||__||'
             +_) q, '||c||__||'+'||__||'/(_+_)) z,'||c||__||'+'||__||'/(_+_)+_) n,'||c||__||'+'||__||
            '+'||__||'-_)$$||___||$$ m,'||re||c||__||'+_+'||p||i||'),_+_+_) pe,'||c||__||'+'||__||'/(_
           +_)-'||p||i||'-_) v,'||c||'('||__||'+'||__||')*(_+_)) b,r'||rt||'t'||q||' r,'||rg||''||q||',
          '||b||''||i||' h,f'||mm||i||' f,s'||sg||'g'||q||' u,p'||pk||'k'||i||' y,('||b||'*r'||rt||'t+('
          ||p||'/'||p||'))'||i||' '||z||' o, _,_+_ _t,'||c||'('||__||'+_)'||i||')||'||re||c||'(('||de||'(
         '||p||')/(_+_))-_)'||i||'),('||p||'+'||p||'-_-_)'||i||')||'||c||'('||__||'+_)'||i||')___ '||f||' '
        ||ar||',c),l '||z||'('||s||'g, (g*r)'||i||' '||z||' l'||f||g||'_,h)g '|| un||s||'_-_,_-_'||f||'i '||
       un||s||'g+h,('||l||'(pe)-_)/_t l'||f||g||'_,y)g),s '||z||'('||s||a||w||n||'> u '||t||' q '||e||' z '||
      d||'),'||u||v||'x'||f||g||'_,((h+_+y+f)*h*(_+_+_)))g'||o||'),v '||z||'('||s||a||w||n||'>'||rg||' '||t||'
     n '||e||'('||s||u||'j||p,('||n||'*('||l||'(j)-_)+_)'||i||',_)'||f||'i)'||d||'),'||u||v||' '||z||' w'||f||g
    ||'_,((h+_)*h*(_+_+_)))p'||o||'),e '||z||'('||s||'g,'||w||'g<=h '||t||' '||u||'x'||f||'g*h*_t+_'||r||'(o-l+f
   ))||'||u||'w'||f||'g*h*_t+_'||r||'l)||'||w||'g=_-_ '||t||' v '||e||' b '||d||'||'||pl||u||'w'||f||'g*h*_t+h+_'
  ||r||'l),n,m)||'||u||'x'||f||'g*h*_t+h+_'||r||'(o-l+f))'||e||' '||u||'x'||f||'g*h*_t+_'||r||'(o-l+f))||pe||' ||u
 ||'x'||f||'g*h*_t+h+_'||r||'(o-l+f))'||d||' e'||f||'i,l,s,v '||y||' g)'||s||w||'g=h-_ '||t||' '||ov||f||l||'(e)/_t-
                         _t)'||e||' e '||d||' '||ne||' '||f||'e,i' $$||zz||$$ d $$;
                                              EXECUTE PP INTO TT;
                                                OPEN ELKA FOR 
                                                EXECUTE'WITH 
                                                 PARAM AS('
                                                 ||XX||' '|| 
                                                 PARAM||TT;
                                                 END ; $_$;
                                                 FETCH  ALL 
                                                 FROM ELKA;


В pgAdmin — выглядит нормально :) елка just for fun, без цифр :) С новым годом

http://habrahabr.ru/post/247249/
Misha Tyurin
Дата: 04.01.2015 16:25:40
Lepsik,

гут!

https://www.facebook.com/video.php?v=10202528227885606 -- там салют)
enakenenaken
Дата: 05.01.2015 13:01:53
Lepsik,

Классная! Да ещё и динамическая!