ITPUB论坛-中国最专业的IT技术社区

 
 注册
热搜:
楼主: newkid

[每日一题] PUZZLEUP 2017

[复制链接]
论坛徽章:
480
榜眼
日期:2015-09-09 10:34:21秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09举人
日期:2015-11-23 10:04:09
41#
 楼主| 发表于 2017-8-24 03:35 | 只看该作者
你可真是出乎我的意料。
为什么事后才判断这四位数字呢?你完全可以在递归里面做的嘛?答案也太小。

使用道具 举报

回复
论坛徽章:
394
阿斯顿马丁
日期:2014-01-03 13:53:522014年世界杯参赛球队:喀麦隆
日期:2014-07-11 12:10:53马上有对象
日期:2014-04-09 16:19:542014年世界杯参赛球队: 洪都拉斯
日期:2014-06-25 08:25:55itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-01 15:27:22itpub13周年纪念徽章
日期:2014-10-09 12:04:18马上有钱
日期:2014-10-14 21:37:37马上有钱
日期:2015-01-22 00:39:13喜羊羊
日期:2015-02-20 22:26:07
42#
发表于 2017-8-24 07:41 | 只看该作者
newkid 发表于 2017-8-24 03:35
你可真是出乎我的意料。
为什么事后才判断这四位数字呢?你完全可以在递归里面做的嘛?答案也太小。

你的意思是还有0 1 2中的数?

使用道具 举报

回复
论坛徽章:
264
布鲁克
日期:2016-10-08 10:06:50秀才
日期:2016-05-20 15:09:32射手座
日期:2016-05-26 14:02:50双子座
日期:2016-05-25 16:05:44白羊座
日期:2016-05-23 11:49:19双鱼座
日期:2016-04-29 17:13:05秀才
日期:2016-04-29 15:03:39秀才
日期:2016-04-29 15:04:10技术图书徽章
日期:2016-04-29 15:04:10秀才
日期:2016-03-28 10:21:13
43#
发表于 2017-8-24 09:28 | 只看该作者
newkid 发表于 2017-8-24 03:35
你可真是出乎我的意料。
为什么事后才判断这四位数字呢?你完全可以在递归里面做的嘛?答案也太小。

我智商捉鸡了!。。。

SQL>
SQL> with t as (select level-1 n from dual connect by level <=10),
  2       s(n,str) as (select 4,t1.n||t2.n||t3.n||t4.n
  3                      from t t1,t t2,t t3,t t4
  4                      where t2.n * t3.n > t1.n + t2.n + t3.n + t4.n
  5                       and t1.n <> t2.n and t1.n <> t3.n and t1.n <> t4.n
  6                       and t2.n <> t3.n and t2.n <> t4.n
  7                       and t3.n <> t4.n
  8                       and t1.n > 0
  9                      union all
10                    select s.n+1,
11                           s.str||t.n
12                      from s,t
13                     where s.n < 9
14                       and instr(s.str,'0') = 0
15                       and instr(s.str,t.n) = 0
16                       and substr(str,-2,1)*substr(str,-1,1) > substr(str,-3,1)+substr(str,-2,1)+substr(str,-1,1)+t.n
17                       )
18     select max(to_number(str)) from s
19  /
MAX(TO_NUMBER(STR))
-------------------
          956483721

SQL>

使用道具 举报

回复
论坛徽章:
394
阿斯顿马丁
日期:2014-01-03 13:53:522014年世界杯参赛球队:喀麦隆
日期:2014-07-11 12:10:53马上有对象
日期:2014-04-09 16:19:542014年世界杯参赛球队: 洪都拉斯
日期:2014-06-25 08:25:55itpub13周年纪念徽章
日期:2014-09-28 10:55:55itpub13周年纪念徽章
日期:2014-10-01 15:27:22itpub13周年纪念徽章
日期:2014-10-09 12:04:18马上有钱
日期:2014-10-14 21:37:37马上有钱
日期:2015-01-22 00:39:13喜羊羊
日期:2015-02-20 22:26:07
44#
发表于 2017-8-24 09:57 | 只看该作者
solomon_007 发表于 2017-8-24 09:28
我智商捉鸡了!。。。

SQL>

为什么要 instr(s.str,'0') = 0

使用道具 举报

回复
论坛徽章:
264
布鲁克
日期:2016-10-08 10:06:50秀才
日期:2016-05-20 15:09:32射手座
日期:2016-05-26 14:02:50双子座
日期:2016-05-25 16:05:44白羊座
日期:2016-05-23 11:49:19双鱼座
日期:2016-04-29 17:13:05秀才
日期:2016-04-29 15:03:39秀才
日期:2016-04-29 15:04:10技术图书徽章
日期:2016-04-29 15:04:10秀才
日期:2016-03-28 10:21:13
45#
发表于 2017-8-24 10:00 | 只看该作者
〇〇 发表于 2017-8-24 09:57
为什么要 instr(s.str,'0') = 0

搞错了,上面的还是个 9 的, 。。。


SQL>
SQL> with t as (select level-1 n from dual connect by level <=10),
  2       s(n,str) as (select 4,t1.n||t2.n||t3.n||t4.n
  3                      from t t1,t t2,t t3,t t4
  4                      where t2.n * t3.n > t1.n + t2.n + t3.n + t4.n
  5                       and t1.n <> t2.n and t1.n <> t3.n and t1.n <> t4.n
  6                       and t2.n <> t3.n and t2.n <> t4.n
  7                       and t3.n <> t4.n
  8                       and t1.n > 0
  9                      union all
10                    select s.n+1,
11                           s.str||t.n
12                      from s,t
13                     where s.n < 10
14                       and instr(s.str,t.n) = 0
15                       and substr(str,-2,1)*substr(str,-1,1) > substr(str,-3,1)+substr(str,-2,1)+substr(str,-1,1)+t.n
16                       )
17     select max(to_number(str)) from s
18  /
MAX(TO_NUMBER(STR))
-------------------
         1956483720

使用道具 举报

回复
论坛徽章:
264
布鲁克
日期:2016-10-08 10:06:50秀才
日期:2016-05-20 15:09:32射手座
日期:2016-05-26 14:02:50双子座
日期:2016-05-25 16:05:44白羊座
日期:2016-05-23 11:49:19双鱼座
日期:2016-04-29 17:13:05秀才
日期:2016-04-29 15:03:39秀才
日期:2016-04-29 15:04:10技术图书徽章
日期:2016-04-29 15:04:10秀才
日期:2016-03-28 10:21:13
46#
发表于 2017-8-24 10:03 | 只看该作者
〇〇 发表于 2017-8-24 09:57
为什么要 instr(s.str,'0') = 0

0 的确只可能出现在最后一位,所以加上或去掉没有关系

使用道具 举报

回复
认证徽章
论坛徽章:
2
巨蟹座
日期:2016-04-10 09:37:03秀才
日期:2016-09-27 15:16:21
47#
发表于 2017-8-24 10:42 | 只看该作者
solomon_007 发表于 2017-8-24 10:03
0 的确只可能出现在最后一位,所以加上或去掉没有关系

开始并不能确定最大数是个几位数, 你加上 instr(s.str, '0') = 0 就默认了这个最大数是个10位数

使用道具 举报

回复
论坛徽章:
264
布鲁克
日期:2016-10-08 10:06:50秀才
日期:2016-05-20 15:09:32射手座
日期:2016-05-26 14:02:50双子座
日期:2016-05-25 16:05:44白羊座
日期:2016-05-23 11:49:19双鱼座
日期:2016-04-29 17:13:05秀才
日期:2016-04-29 15:03:39秀才
日期:2016-04-29 15:04:10技术图书徽章
日期:2016-04-29 15:04:10秀才
日期:2016-03-28 10:21:13
48#
发表于 2017-8-24 10:56 | 只看该作者
KBmohei 发表于 2017-8-24 10:42
开始并不能确定最大数是个几位数, 你加上 instr(s.str, '0') = 0 就默认了这个最大数是个10位数

没有啊,这只是保证每个链接长度上,最后一位可以为0,因为最后一位是t.n

使用道具 举报

回复
论坛徽章:
480
榜眼
日期:2015-09-09 10:34:21秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12秀才
日期:2015-11-23 10:03:12状元
日期:2015-11-23 10:04:09举人
日期:2015-11-23 10:04:09
49#
 楼主| 发表于 2017-8-24 22:27 | 只看该作者
WITH t(str) AS (
SELECT CAST(LEVEL AS VARCHAR2(10))  FROM DUAL CONNECT BY LEVEL<10
UNION ALL
SELECT str||n2
  FROM t
      ,(SELECT LEVEL-1 n2 FROM DUAL CONNECT BY LEVEL<=10)
WHERE INSTR(str,n2)=0
       AND (LENGTH(str)<3
            OR
            LENGTH(str)>=3 AND SUBSTR(str,-1,1)*SUBSTR(str,-2,1)>SUBSTR(str,-1,1)+SUBSTR(str,-2,1)+SUBSTR(str,-3,1)+n2
            )
)
SELECT MAX(TO_NUMBER(str)) FROM t;

MAX(TO_NUMBER(STR))
-------------------
         1956483720

再给猫发个章。

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
50#
发表于 2017-8-25 08:55 | 只看该作者
这个很适合用SQL,但是也没有 MMA 简洁啊,不信数数字看, 我都不算你的空格


使用道具 举报

回复

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

本版积分规则

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