楼主: newkid

PUZZLEUP 2014

[复制链接]
论坛徽章:
41
生肖徽章:鼠
日期:2013-12-06 14:15:45生肖徽章:牛
日期:2013-12-06 14:15:45生肖徽章:虎
日期:2013-12-06 14:15:45生肖徽章:兔
日期:2013-12-06 14:15:45生肖徽章:龙
日期:2013-12-06 14:15:45生肖徽章:蛇
日期:2013-12-06 14:15:45生肖徽章:马
日期:2013-12-06 14:15:45生肖徽章:羊
日期:2013-12-06 14:15:45生肖徽章:猴
日期:2013-12-06 14:15:45生肖徽章:鸡
日期:2013-12-06 14:15:45
11#
发表于 2014-7-31 19:57 | 只看该作者

WITH T AS (SELECT CHR(64+LEVEL) C FROM DUAL CONNECT BY LEVEL <= 2)
    ,T1 AS (SELECT REPLACE(SYS_CONNECT_BY_PATH(C,','),',') S
            FROM T
            WHERE LEVEL = 3
            CONNECT BY LEVEL <= 3 )
    ,T2 AS (SELECT REPLACE(SYS_CONNECT_BY_PATH(S,','),',') STR  -- 8*3=24之内的所有文本
            FROM T1
            WHERE LEVEL = 8
            CONNECT BY NOCYCLE  LEVEL <= 8
            AND T1.S <> PRIOR T1.S  -- 包含了所有8个代码
            )
    ,T3 AS (
            SELECT T2.STR , SUBSTR(T2.STR,1,INSTR(T2.STR,'ABA')-1) SUB_STR
            FROM   T2
            WHERE  REGEXP_COUNT(T2.STR,'A') = REGEXP_COUNT(T2.STR,'B') -- A和B的个数一样多
           )
  ,T4 AS (
          SELECT STR , SUB_STR
          FROM (
                SELECT T3.STR
                       ,SUBSTR(T3.STR,LEVEL,3) SUB_STR
                FROM   T3
                CONNECT BY LEVEL <= LENGTH(T3.SUB_STR)
                AND  T3.STR = PRIOR T3.STR
                AND  PRIOR DBMS_RANDOM.value() IS NOT NULL
                )
          GROUP BY STR , SUB_STR  -- 去掉重复 SUB_STR
        )
SELECT SUB_STR
       ,COUNT(*) CNT
FROM T4
GROUP BY SUB_STR
ORDER BY 2 DESC ;

SUB_STR             CNT
------------ ----------
AAB               27000
BBA               25752
BAA               20350
BAB               20160
ABB               19968
BBB               17856
AAA               17508
ABA                5040

使用道具 举报

回复
论坛徽章:
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
12#
 楼主| 发表于 2014-7-31 21:33 | 只看该作者
udfrog 发表于 2014-7-31 15:14
with t as (
select chr(level+64) c from dual connect by rownum0 and (instr(r1.v, r2.v)0 and (instr( ...

你只看了十位的?
好像没有“8种代码在文本中全部出现”这个条件。

使用道具 举报

回复
论坛徽章:
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
13#
 楼主| 发表于 2014-7-31 21:36 | 只看该作者
peter1166 发表于 2014-7-31 19:57
WITH T AS (SELECT CHR(64+LEVEL) C FROM DUAL CONNECT BY LEVEL

你的T2是用三位代码拼起来的,但是代码之间完全可以共享,比如 AAAB, 前三位是AAA,后三位是AAB

使用道具 举报

回复
论坛徽章:
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
14#
 楼主| 发表于 2014-7-31 21:38 | 只看该作者
asamiya310 发表于 2014-7-31 18:11
按照newid的想法我试了一下,不知道对不对,心里没底
WITH L AS (
SELECT 'A' V FROM DUAL

和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
15#
 楼主| 发表于 2014-7-31 21:40 | 只看该作者
2009532140 发表于 2014-7-31 08:26
想问一句,为什么不是搜索第一个ABA 前面文本中第一个出现的 三字母代码?

不明白你要问什么?你所谓的“第一个出现”是楼下说的substr(text,1,3)?
只要先出现就行了,不一定第一个出现。

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
16#
发表于 2014-7-31 21:40 | 只看该作者
newkid 发表于 2014-7-31 21:33
你只看了十位的?
好像没有“8种代码在文本中全部出现”这个条件。

“8种代码在文本中全部出现”这个条件是什么意思?

使用道具 举报

回复
论坛徽章:
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
17#
 楼主| 发表于 2014-7-31 21:48 | 只看该作者
udfrog 发表于 2014-7-31 21:40
“8种代码在文本中全部出现”这个条件是什么意思?

就是一个TEXT包含所有八种代码,比如BABBBAAABA

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
18#
发表于 2014-7-31 21:53 | 只看该作者
newkid 发表于 2014-7-31 21:48
就是一个TEXT包含所有八种代码,比如BABBBAAABA

哦,但是这个条件不必(不该?)出现啊。
以10位为例,1024种可能是均等的,不该要求什么出现什么不出现啊

使用道具 举报

回复
论坛徽章:
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
19#
 楼主| 发表于 2014-7-31 21:58 | 只看该作者
题目第二个条件不是要求了吗?如果说的不是在同一个文本中出现,那么等于废话,所以这个条件是要求“同时”包括所有代码。

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
20#
发表于 2014-7-31 22:11 | 只看该作者
newkid 发表于 2014-7-31 21:58
题目第二个条件不是要求了吗?如果说的不是在同一个文本中出现,那么等于废话,所以这个条件是要求“同时” ...

我瞎了

使用道具 举报

回复

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

本版积分规则 发表回复

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