123
返回列表 发新帖
楼主: newkid

[精华] 2012感恩节最短源代码比赛newkid代码解析

[复制链接]
论坛徽章:
91
秀才
日期:2015-11-02 11:24:03秀才
日期:2017-12-12 10:00:50秀才
日期:2017-09-18 17:34:47秀才
日期:2017-09-18 17:02:592017金鸡报晓
日期:2017-02-08 14:09:132017金鸡报晓
日期:2017-01-10 15:39:05秀才
日期:2016-12-21 16:55:07ITPUB15周年纪念
日期:2016-10-06 10:54:102016猴年福章
日期:2016-02-23 09:58:342016猴年福章
日期:2016-02-18 09:31:30
21#
发表于 2012-12-7 15:01 | 只看该作者
膜拜一下,给力啊。

使用道具 举报

回复
论坛徽章:
0
22#
发表于 2012-12-8 10:23 | 只看该作者
真心的说 很不错!

使用道具 举报

回复
论坛徽章:
5
2009日食纪念
日期:2009-07-22 09:30:002010新春纪念徽章
日期:2010-03-01 11:19:062011新春纪念徽章
日期:2011-02-18 11:43:33ITPUB十周年纪念徽章
日期:2011-11-01 16:24:042013年新春福章
日期:2013-02-25 14:51:24
23#
发表于 2012-12-10 22:18 | 只看该作者
牛!很牛!相当牛!真的很牛。。。

使用道具 举报

回复
论坛徽章:
1
2010新春纪念徽章
日期:2010-03-01 11:07:27
24#
发表于 2012-12-20 16:11 | 只看该作者
学习了

使用道具 举报

回复
论坛徽章:
520
奥运会纪念徽章:垒球
日期:2008-09-15 01:28:12生肖徽章2007版:鸡
日期:2008-11-17 23:40:58生肖徽章2007版:马
日期:2008-11-18 05:09:48数据库板块每日发贴之星
日期:2008-11-29 01:01:02数据库板块每日发贴之星
日期:2008-12-05 01:01:03生肖徽章2007版:虎
日期:2008-12-10 07:47:462009新春纪念徽章
日期:2009-01-04 14:52:28数据库板块每日发贴之星
日期:2009-02-08 01:01:03生肖徽章2007版:蛇
日期:2009-03-09 22:18:532009日食纪念
日期:2009-07-22 09:30:00
25#
 楼主| 发表于 2013-1-18 04:23 | 只看该作者
今天闲着无聊,学习xqmei把自己的SQL进行了一番反人类的包装,
用#取代SELECT, $取代FROM, %取代DUAL UNION, ^取代WHERE,!取代GROUP BY

CREATE OR REPLACE PACKAGE BODY FIVESQUARESHAPE
AS

PROCEDURE
o
  (p
     CHAR)
AS
  C
  SYS_REFCURSOR;
  R
  LONG;
  S
  LONG;
BEGIN
  S:='WITH
      c
      AS
      (#
              TRUNC((LEVEL-1)/5)
                                 X
              ,MOD(LEVEL-1,5)
                                 Y
              ,POWER(2,25-LEVEL)
                                 i
              ,LEVEL
                                 n
        $
              DUAL
       CONNECT
            BY
            LEVEL<=25
      )
      ,d
      AS
      (
      #
            c.i
                 j
            ,d.i
                 k
            ,c.n
        $
             c,c
                 d
       ^ ABS(c.X-d.X)+ABS(c.Y-d.Y)=1
       )
      ,t(c,s,m)
      AS
      (
      #
             1,i,n
      $
           C
      UNION
      ALL
      #
             c+1,s+j,m+n
        $ t,d
       ^
             BITAND(s,j)=0
             AND
             BITAND(s,k)>0
             AND
             c<5
      )
      ,s
      AS
          (#
            DISTINCT
            s,m,''''
                     q
            $
                 t
            ^
                  c=5)
      ,a
      AS
      (#
              *
         $
              s
        ^
              NOT
              EXISTS
                     (#
                             1
                        $ s
                               v,c
                        ^
                              i>1
                              AND
                              s=s.s*i))'
||NVL(p,  
       ',r
       AS
       (
       #
              0
                 v
              ,1
                 d
              ,0
                 e
              ,0
                 f
               ,1
                 g
         $
              %
       #
              1,-1,0,0,1
         $
              %
       #
              2,1,0,0,-1
         $
              %
       # 3,-1,0,0,-1
         $
              %
       #
              4,0,-1,-1,0
         $
              %
       #
              5,0,1,1,0
         $
              %
       #
              6,0,1,-1,0
          $
               %
       #
               7,0,-1,1,0
           $
                DUAL         
       )
       ,ba
       AS
       (
       #
              s,m,COUNT(*)
                           q
         $
              (#
                      MAX(h)
                             KEEP(DENSE_RANK
                                  FIRST
                                  ORDER
                                  BY
                                  n)
                                  s
                     ,MIN(n)
                             m
                  $
                        (#
                                s
                                ,SUM(i)
                                        h
                                ,SUM(n)
                                        n
                          $
                                (#
                                       s,v
                                      ,x-MIN(x)
                                         OVER(PARTITION
                                                     BY
                                                     s,v)
                                                     u
                                      ,y-MIN(y)
                                         OVER(PARTITION
                                                     BY
                                                     s,v)
                                                     w
                                  $ (#
                                               a.s,v,x*d+y*e
                                                           x
                                                     ,x*f+y*g
                                                           y
                                         $
                                              a,c,r
                                        ^
                                              BITAND(s,i)>0
                                       )
                                )
                               ,c
                        ^
                              u=x
                              AND
                              w=y
                        !
                              s,v
                       )
                !
                      s
              )
        !
              s,m
       )')
  ||Q'{#
         RPAD(DECODE(x,0,m||' '||q,' '),16)||LISTAGG(DECODE(SIGN(BITAND(S,i)),1,'■','□'))
         WITHIN
         GROUP
         (ORDER
             BY
             Y)
    $
    }'||NVL(p,'b')||'a,c
   !
   s,m,x,q
   ORDER
   BY
   m,-s,x';

   OPEN
        C
        FOR
        REPLACE(REPLACE(REPLACE(REPLACE(REPLACE(S,'#','SELECT'),'$','FROM'),'%','DUAL UNION'),'^','WHERE'),'!','GROUP BY');
   LOOP
      FETCH
      C
      INTO
      R;
      EXIT
      WHEN
      C%NOTFOUND;
      dbms_output.put_line(R);
   END
   LOOP;
END;


procedure
output_allshapes AS
BEGIN

O(' ');

END;

procedure
output_allbaseshapes
AS
BEGIN

O('');
  
END;

END;
/

现在的代码长度:
WITH NOCRLF AS (SELECT RTRIM(TEXT,CHR(10)||CHR(13)) NOCRLFTEXT FROM USER_SOURCE WHERE NAME='FIVESQUARESHAPE' AND TYPE IN ('PACKAGE', 'PACKAGE BODY')),
NOSPTB AS (SELECT RTRIM(LTRIM(NOCRLFTEXT,CHR(9)||CHR(32)),CHR(9)||CHR(32)) TRIMTEXT FROM NOCRLF)
SELECT SUM(LENGTHB(TRIMTEXT)) FROM NOSPTB;

SUM(LENGTHB(TRIMTEXT))
----------------------
                  1273

使用道具 举报

回复
论坛徽章:
548
生肖徽章2007版:猴
日期:2008-05-16 11:28:59生肖徽章2007版:马
日期:2008-10-08 17:01:01SQL大赛参与纪念
日期:2011-04-13 12:08:17授权会员
日期:2011-06-17 16:14:53ITPUB元老
日期:2011-06-21 11:47:01ITPUB官方微博粉丝徽章
日期:2011-07-01 09:45:27ITPUB十周年纪念徽章
日期:2011-09-27 16:30:472012新春纪念徽章
日期:2012-01-04 11:51:222012新春纪念徽章
日期:2020-11-30 22:13:24海蓝宝石
日期:2012-02-20 19:24:27
26#
发表于 2013-1-18 13:28 | 只看该作者
newkid 发表于 2013-1-18 04:23
今天闲着无聊,学习xqmei把自己的SQL进行了一番反人类的包装,
用#取代SELECT, $取代FROM, %取代DUAL UNIO ...

  的确是反人类!

使用道具 举报

回复

您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

TOP技术积分榜 社区积分榜 徽章 团队 统计 知识索引树 积分竞拍 文本模式 帮助
  ITPUB首页 | ITPUB论坛 | 数据库技术 | 企业信息化 | 开发技术 | 微软技术 | 软件工程与项目管理 | IBM技术园地 | 行业纵向讨论 | IT招聘 | IT文档
  ChinaUnix | ChinaUnix博客 | ChinaUnix论坛
CopyRight 1999-2011 itpub.net All Right Reserved. 北京盛拓优讯信息技术有限公司版权所有 联系我们 未成年人举报专区 
京ICP备16024965号-8  北京市公安局海淀分局网监中心备案编号:11010802021510 广播电视节目制作经营许可证:编号(京)字第1149号
  
快速回复 返回顶部 返回列表