楼主: newkid

[每日一题] PUZZLEUP 2017

[复制链接]
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
261#
发表于 2017-11-28 08:23 | 只看该作者
还有其它的吗?


使用道具 举报

回复
论坛徽章:
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
262#
 楼主| 发表于 2017-11-28 11:07 | 只看该作者

我疏忽了,最后变形完毕,忘记两个三角形再交换位置了。确实是25种。


with c as ( ---- 9个点及其坐标
select x,y,row_number() OVER(ORDER BY x,y) cid
  from (select level x from dual connect by level<=3)
      ,(select level y from dual connect by level<=3)
)
,m as ( ----- 两两的点构成的线段, 两个端点命名为A和B
select c1.x A_x,c1.y A_y,c2.x B_x,c2.y B_y
      ,c1.cid||c2.cid mid
  from c c1,c c2
WHERE c1.cid<c2.cid
)
,crossing AS ( ----- 所有交叉的成对线段
SELECT m1.mid cr1,m2.mid cr2
  FROM m m1,
       (SELECT mid,A_x C_x,A_y C_y,B_x D_x,B_y D_y FROM m) m2 ---- 第一个线段AB,第二个线段改名CD, 方便套用算法
WHERE m1.mid<>m2.mid
       AND ((C_x-A_x)*(D_y-A_y)-(D_x-A_x)*(C_y-A_y))*((C_x-B_x)*(D_y-B_y)-(D_x-B_x)*(C_y-B_y))<=0
       AND ((A_x-C_x)*(B_y-C_y)-(B_x-C_x)*(A_y-C_y))*((A_x-D_x)*(B_y-D_y)-(B_x-D_x)*(A_y-D_y))<=0
)
,tr AS ( ---- 所有三角形及其三条边
SELECT c1.cid||c2.cid||c3.cid as tid
      ,c1.cid||c2.cid mid1
      ,c1.cid||c3.cid mid2
      ,c2.cid||c3.cid mid3
  FROM c c1,c c2,c c3
WHERE c1.cid<c2.cid
       AND c2.cid<c3.cid
       AND (c2.y-c1.y)*(c3.x-c1.x)<>(c3.y-c1.y)*(c2.x-c1.x)
)
,trm AS ( ---- 每个三角形拆成三行,一条边一行
SELECT tid,DECODE(n,1,mid1,2,mid2,3,mid3) mid
  FROM tr,(SELECT LEVEL n FROM DUAL CONNECT BY LEVEL<=3)
)
,ctrm AS (---所有交叉或触碰的成对三角形
SELECT DISTINCT trm1.tid tid1,trm2.tid tid2
  FROM trm trm1,trm trm2,crossing
WHERE trm1.tid<trm2.tid
       AND trm1.mid=crossing.cr1
       AND trm2.mid=crossing.cr2
)
,p as (
SELECT tr1.tid||tr2.tid s
  FROM tr tr1,tr tr2         
WHERE tr1.tid<tr2.tid
MINUS
SELECT tid1||tid2 FROM ctrm
)
,p2 as (
SELECT s
      ,SUBSTR(s2,1,1) c1
      ,SUBSTR(s2,2,1) c2
      ,SUBSTR(s2,3,1) c3
      ,SUBSTR(s2,4,1) c4
      ,SUBSTR(s2,5,1) c5
      ,SUBSTR(s2,6,1) c6
FROM (
SELECT s,TRANSLATE(s,'123456789',tpl) s2
FROM p
    ,(SELECT '123456789' tpl FROM DUAL
     UNION ALL SELECT '321654987' FROM DUAL
     UNION ALL SELECT '789456123' FROM DUAL
     UNION ALL SELECT '987654321' FROM DUAL
     UNION ALL SELECT '147258369' FROM DUAL
     UNION ALL SELECT '963852741' FROM DUAL
     UNION ALL SELECT '741852963' FROM DUAL
     UNION ALL SELECT '369258147' FROM DUAL
     )
)
)
SELECT DISTINCT MIN(s4)
  FROM (
SELECT s,decode(n,1,s3,substr(s3,4)||substr(s3,1,3)) s4
  FROM (
SELECT s
      ,LEAST(c1,c2,c3)||DECODE(LEAST(c1,c2,c3),c1,LEAST(c2,c3),C2,LEAST(c1,c3),LEAST(c1,c2))||GREATEST(c1,c2,c3)
     ||LEAST(c4,c5,c6)||DECODE(LEAST(c4,c5,c6),c4,LEAST(c5,c6),C5,LEAST(c4,c6),LEAST(c4,c5))||GREATEST(c4,c5,c6) s3
  FROM p2
   )
  ,(select 1 n from dual union all select 2 from dual) -----两个三角形再交换位置
)
GROUP BY s
;

MIN(S4)
----------------------
125368
125479
125489
127358
124368
124568
124569
125389
127568
126479
124356
126489
124389
124359
124358
127389
125679
124367
125678
124689
126459
126458
127359
124379
126579

25 rows selected.

使用道具 举报

回复
论坛徽章:
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
263#
 楼主| 发表于 2017-11-30 01:32 | 只看该作者
#17 FIVE BALLS

Five identical looking balls weigh 1, 2, 3, 4 and 5 grams. You want to find weight of each ball using a digital scale with a single pan by always measuring total weight of 3 balls.

At least how many times you need to measure, in order to guarantee finding the weights of every ball?

五个球外观完全相同,重量为1,2,3,4和5克。你想用找出每个球的重量,用的是一个带有单个托盘的数字天平,每次总是测量3个球的总重量。

至少需要多少次测量才能保证找出每个球的重量?

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
264#
发表于 2017-11-30 08:13 | 只看该作者
newkid 发表于 2017-11-30 01:32
#17 FIVE BALLS

Five identical looking balls weigh 1, 2, 3, 4 and 5 grams. You want to find weight ...

先找出1,以后把1和其他放一起,平衡就能知道哪个是另一个+1

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
265#
发表于 2017-11-30 08:30 | 只看该作者
〇〇 发表于 2017-11-30 08:13
先找出1,以后把1和其他放一起,平衡就能知道哪个是另一个+1

最多4次,找出1,方法,每次1边1只,轻的留下
1+a球vsb球,如果平衡(a,b)in (2,3),(3,4),(4,5)

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
266#
发表于 2017-11-30 09:41 | 只看该作者
在1的基础上,找2,需要3次,再找3需要2次,再找4需要1次,10次可以全找出,现在看能否少

使用道具 举报

回复
论坛徽章:
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
267#
发表于 2017-11-30 09:46 | 只看该作者
〇〇 发表于 2017-11-30 08:30
最多4次,找出1,方法,每次1边1只,轻的留下
1+a球vsb球,如果平衡(a,b)in (2,3),(3,4),(4,5)

已知 x1 + x2 + x3 + x4 + x5 = 15, 要解开方程,显然还得 4个方程才够啊( 下面随便列一下)

       x1 + x2 + x3                 = a,

               x2 + x3  + x4        = b,

                      x3  + x4   + x5 = c,

      x1           + x3           + x5 =d

使用道具 举报

回复
论坛徽章:
407
紫蛋头
日期:2012-05-21 10:19:41迷宫蛋
日期:2012-06-06 16:02:49奥运会纪念徽章:足球
日期:2012-06-29 15:30:06奥运会纪念徽章:排球
日期:2012-07-10 21:24:24鲜花蛋
日期:2012-07-16 15:24:59奥运会纪念徽章:拳击
日期:2012-08-07 10:54:50奥运会纪念徽章:羽毛球
日期:2012-08-21 15:55:33奥运会纪念徽章:蹦床
日期:2012-08-21 21:09:51奥运会纪念徽章:篮球
日期:2012-08-24 10:29:11奥运会纪念徽章:体操
日期:2012-09-07 16:40:00
268#
发表于 2017-11-30 09:51 | 只看该作者
〇〇 发表于 2017-11-30 09:41
在1的基础上,找2,需要3次,再找3需要2次,再找4需要1次,10次可以全找出,现在看能否少

这就是纯基于比较的冒泡排序算法,要少,还要利用数字之间相等关系

使用道具 举报

回复
论坛徽章:
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
269#
 楼主| 发表于 2017-11-30 10:27 | 只看该作者
〇〇 发表于 2017-11-30 08:30
最多4次,找出1,方法,每次1边1只,轻的留下
1+a球vsb球,如果平衡(a,b)in (2,3),(3,4),(4,5)

你这“1边1只"什么意思?
这是个单托盘数字天平,就是能告诉你总克数的,不是两边比大小。
但是有限制一定要三个一起称。
我能证明四次一定能找出来,但是不知道是不是最少。

使用道具 举报

回复
求职 : 数据库开发
论坛徽章:
24
秀才
日期:2017-08-11 15:38:46秀才
日期:2018-01-02 15:17:54秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22秀才
日期:2018-01-02 15:18:22技术图书徽章
日期:2018-01-02 15:18:30秀才
日期:2018-03-01 10:05:18秀才
日期:2018-05-22 15:21:20
270#
发表于 2017-11-30 10:40 | 只看该作者
我觉得3次

使用道具 举报

回复

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

本版积分规则 发表回复

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