楼主: 〇〇

[每日一题] puzzleup 2020 11月开始

[复制链接]
论坛徽章:
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
81#
发表于 2020-12-18 00:14 | 只看该作者
5 次 ?

使用道具 举报

回复
论坛徽章:
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
82#
发表于 2020-12-18 09:39 来自手机 | 只看该作者
我凑出来的方法是四次,有没有大神能少于四次?

使用道具 举报

回复
论坛徽章:
24
2010年世界杯参赛球队:韩国
日期:2009-12-20 20:11:33天枰座
日期:2015-07-18 17:23:54托尼托尼·乔巴
日期:2017-01-25 09:38:19秀才
日期:2017-03-02 10:30:14秀才
日期:2017-03-02 10:30:35秀才
日期:2017-06-29 10:16:48技术图书徽章
日期:2017-07-11 09:10:26乌索普
日期:2023-01-05 23:01:5220周年集字徽章-年	
日期:2021-05-27 09:37:50蒙奇·D·路飞
日期:2022-10-27 21:49:38
83#
发表于 2020-12-18 13:12 | 只看该作者
看不懂题,这个和运气有关, 第一次拿四枚, 两边各放两枚,结果一样重,那么这四个都是真的,然后拿这四个放左边,再拿四个放右边,如果右边有假的,那么就不平衡,右边高就是假轻,否则就是重。 两次就结束了。

使用道具 举报

回复
论坛徽章:
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
84#
发表于 2020-12-18 22:22 | 只看该作者
dhhb 发表于 2020-12-18 13:12
看不懂题,这个和运气有关, 第一次拿四枚, 两边各放两枚,结果一样重,那么这四个都是真的,然后拿这四个 ...

不是这样的,是要你设计一种策略,根据上一次结果决定下一次要怎么称,这种策略保证你在任何情况下都能够在N次之内找出答案。

你上题的代码怎么没有贴出来?

使用道具 举报

回复
论坛徽章:
24
2010年世界杯参赛球队:韩国
日期:2009-12-20 20:11:33天枰座
日期:2015-07-18 17:23:54托尼托尼·乔巴
日期:2017-01-25 09:38:19秀才
日期:2017-03-02 10:30:14秀才
日期:2017-03-02 10:30:35秀才
日期:2017-06-29 10:16:48技术图书徽章
日期:2017-07-11 09:10:26乌索普
日期:2023-01-05 23:01:5220周年集字徽章-年	
日期:2021-05-27 09:37:50蒙奇·D·路飞
日期:2022-10-27 21:49:38
85#
发表于 2020-12-19 15:54 | 只看该作者
newkid 发表于 2020-12-13 21:09
我答案和你一样,你的代码是怎么写的?等有空来验证一下猫猫的写法。

计算某个点是否在多边形内,我没有用oracle,我直接调用的shapely包,类似oracle的spatial吧。 然后105个正方形的点集合都有了,再对这105个集合两两做intersection, 就出结果了。 数据量不大,几秒就有了,数据量多了就不行了。 大神用的什么方法?

使用道具 举报

回复
论坛徽章:
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
86#
发表于 2020-12-19 18:49 | 只看该作者
newkid 发表于 2020-12-13 23:13
你用4x4 验证一下你的代码,应该有20种画法。

后面不忙了再试试

使用道具 举报

回复
论坛徽章:
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
87#
发表于 2020-12-19 21:08 | 只看该作者
上一题我的写法:


with d as (
select x,y,power(2,row_number() over(order by x,y)) id
  from (select level-1 x from dual connect by level<=6)   
      ,(select level-1 y from dual connect by level<=6)     
)
,s as (
select * from (
select d1.id+d2.id+d3.id+d4.id as id
      ,d1.x x1,d1.y y1
      ,d2.x x2,d2.y y2
      ,d3.x x3,d3.y y3
      ,d4.x x4,d4.y y4
      ,row_number() over(partition by d1.id+d2.id+d3.id+d4.id order by d1.id) rn
  from d d1,d d2,d d3,d d4
where (d1.x<>d2.x or d1.y<>d2.y)
      and d2.y-d1.y=d3.x-d2.x
      and d2.x-d1.x=-(d3.y-d2.y)
      and d3.y-d2.y=d4.x-d3.x
      and d3.x-d2.x=-(d4.y-d3.y)
      and d4.y-d3.y=d1.x-d4.x
      and d4.x-d3.x=-(d1.y-d4.y)
      ) t
where rn=1
)
,a as ( ---- 正方形包含了哪些点
select s.id,sum(d.id) b
from s,d
where ((x2 - x1) * (y - y1) - (x - x1) * (y2 - y1))
     *((x4 - x3) * (y - y3) - (x - x3) * (y4 - y3)) >=0
     AND ((x3 - x2) * (y - y2) - (x - x2) * (y3 - y2))
     *((x1 - x4) * (y - y4) - (x - x4) * (y1 - y4)) >=0
group by s.id
)
select count(*)
  from a a1,a a2
where a1.id<a2.id
       and bitand(a1.b,a2.b)=0
;


  COUNT(*)
----------
      1256


https://www.cnblogs.com/fangsmile/p/9306510.htm

判断点是否在一个矩形内
方帅
判断是否在矩形内:

只需要判断该点是否在上下两条边和左右两条边之间就行。

判断一个点是否在两条线段之间夹着就转化成,判断一个点是否在某条线段的一边上,就可以利用叉乘的方向性,来判断夹角是否超过了180度 如下图



只要判断(AB X AE ) * (CDX CE)  >= 0 就说明E在AB,CD中间夹着,同理计算另两边DA和BC就可以了。

最后就是只需要判断

(AB X AE ) * (CD X CE)  >= 0 && (DA X DE ) * (BC X BE) >= 0 。

参考代码:

复制代码
1     // 计算 |p1 p2| X |p1 p|
2     function GetCross(p1: Point, p2: Point, p: Point) {
3         return (p2.x - p1.x) * (p.y - p1.y) - (p.x - p1.x) * (p2.y - p1.y);
4     }
5     //判断点p是否在p1p2p3p4的正方形内
6     function IsPointInMatrix(p1: Point, p2: Point, p3: Point, p4: Point, p: Point) {
7         let isPointIn = GetCross(p1, p2, p) * GetCross(p3, p4, p) >= 0 && GetCross(p2, p3, p) * GetCross(p4, p1, p) >= 0;
8         return isPointIn;
9     }
复制代码

使用道具 举报

回复
论坛徽章:
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
88#
发表于 2020-12-23 21:39 | 只看该作者
#8 UNIQUE NUMBERS

Using each of the digits from 1 to 6 once, you are going to make six-digit numbers. Any three adjacent digits used in one number, can’t be used samely in another number.

How many different numbers can be obtained according to this rule?

Example:
If you have the number 123456, then you can’t have a number containing 123, 234, 345 or 456.


你用从1到6的每一个数字各一次构成六位数。在一个数字中使用过的任何三个相邻的数字,不能在另一个数字中使用。

根据这个规则,可以得到多少个不同的数字?

例子:
如果你有个数字是123456,那么你就不能有一个包含123,234,345或者456的数字

使用道具 举报

回复
论坛徽章:
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
89#
发表于 2020-12-23 21:40 | 只看该作者
第七题我的方法:

把16个硬币分四个一组,天平一边一组,称两次。可能结果:两次都不平衡;或者其中一次平衡        
前两次都不平衡: 说明其中一组有两个假 币,另外一组有一个
  第三次:把前两次较重的那两组取出来比较。可能结果:平衡或不平衡
          平衡:说明假 币较轻;不平衡:假 币较重。这条路径是三次

前两次只有一次平衡:为方便讨论把不平衡那次的8个称为ABCD和EFGH, 平衡的8个称为IJKL和MNOP
  可以推断平衡的这两组IJKL和MNOP,要么8个全是真币,要么两边各含有一枚假 币。
  第三次:拿出平衡的一组IJKL两两分开,让IJ和KL比较,可能结果:平衡或不平衡
          平衡:说明IJKL全是真币,MNOP也全是真币
                第四次:把IJKL四个真币和ABCD比较,
                        如果平衡,则三个假 币全在EFGH那组,并且轻重已知
                        如果不平衡,则ABCD中有假 币,并且轻重已知
                        这条路径是四次。
          不平衡:说明IJKL和MNOP两边各有一个假 币,而ABCDEFGH中只有一个假 币。
                第四次:把IJKL四个真币和ABCD比较,
                        如果平衡:说明IJKL中有一个假 币,ABCD中也有一个假 币,EFGH全是真的,根据以前的结果可知假 币的轻重
                        如果不平衡,则ABCD全是真币,也可知假 币的轻重。
                        这条路径也是四次。
         
综上所述总共需要四次。

使用道具 举报

回复
论坛徽章:
24
2010年世界杯参赛球队:韩国
日期:2009-12-20 20:11:33天枰座
日期:2015-07-18 17:23:54托尼托尼·乔巴
日期:2017-01-25 09:38:19秀才
日期:2017-03-02 10:30:14秀才
日期:2017-03-02 10:30:35秀才
日期:2017-06-29 10:16:48技术图书徽章
日期:2017-07-11 09:10:26乌索普
日期:2023-01-05 23:01:5220周年集字徽章-年	
日期:2021-05-27 09:37:50蒙奇·D·路飞
日期:2022-10-27 21:49:38
90#
发表于 2020-12-24 20:45 | 只看该作者
本帖最后由 dhhb 于 2020-12-24 20:56 编辑
newkid 发表于 2020-12-23 21:39
#8 UNIQUE NUMBERS Using each of the digits from 1 to 6 once, you are going to make six-digit numbers ...

6个. 6! 纯枚举.根据每次选择数字,排除不符合规则的, 一个可能的结果:
1, 2, 3, 4, 5, 6
1, 2, 4, 3, 5, 6
1, 2, 5, 3, 4, 6
1, 3, 4, 2, 5, 6
1, 3, 5, 2, 4, 6
1, 4, 5, 2, 3, 6

使用道具 举报

回复

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

本版积分规则 发表回复

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