楼主: newkid

[每日一题] 2022 PUZZLEUP

[复制链接]
论坛徽章:
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
71#
发表于 2022-11-27 11:47 | 只看该作者
〇〇 发表于 2022-11-27 10:53
不清楚是否任意一个筛选10个长方形条的4格组合都能作为起点,然后下一步用y/n来分支

等价的可以先排除,比如1 2 3 4和 2 3 4 5 和 1 6 11 16 。。。

使用道具 举报

回复
论坛徽章:
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
72#
发表于 2022-11-27 13:44 | 只看该作者
〇〇 发表于 2022-11-27 10:53
不清楚是否任意一个筛选10个长方形条的4格组合都能作为起点,然后下一步用y/n来分支

5轮结果.txt (6.8 KB, 下载次数: 11)

使用道具 举报

回复
论坛徽章:
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
73#
发表于 2022-11-27 19:48 | 只看该作者
posrgresql sql
with  b(n,s) as(values
(1,array[1,2,3,4]),
(2,array[2,3,4,5]),
(3,array[6,7,8,9]),
(4,array[7,8,9,10]),
(5,array[11,12,13,14]),
(6,array[12,13,14,15]),
(7,array[16,17,18,19]),
(8,array[17,18,19,20]),
(9,array[21,22,23,24]),
(10,array[22,23,24,25]),
(11,array[1,6,11,16]),
(12,array[6,11,16,21]),
(13,array[2,7,12,17]),
(14,array[7,12,17,22]),
(15,array[3,8,13,18]),
(16,array[8,13,18,23]),
(17,array[4,9,14,19]),
(18,array[9,14,19,24]),
(19,array[5,10,15,20]),
(20,array[10,15,20,25])
)
,
a as (select i from generate_series(1,25)t(i)),
t as(
select row_number()over()rn,array[a.i,b.i,c.i,d.i]q from a,a b,a c,a d
where a.i>b.i and b.i>c.i and c.i>d.i) ,   --select count(1) from t1
--t as (select t1.rn,unnest(q)i from t1),
r as(
select t.rn,count(t.q)cnt from t,b where b.s && t.q  group by t.rn
)
select t.* from r,t where cnt=10 and t.rn=r.rn limit 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
74#
 楼主| 发表于 2022-11-28 08:24 | 只看该作者
〇〇 发表于 2022-11-27 10:53
不清楚是否任意一个筛选10个长方形条的4格组合都能作为起点,然后下一步用y/n来分支

你应该写存储过程,循环把每一步的结果输送到下一步。我看你贴的结果是手工弄的而且没有把所有路径分支都走完。
既然答案这么容易找到,我怀疑任选一种满足二分的组合作为猜测都可以在五步出结果。可以暴力验证一下。

使用道具 举报

回复
论坛徽章:
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
75#
发表于 2022-11-28 17:02 | 只看该作者
用python写了一个,最后一步出不来
x=26
L=[{i,j,k,l} for i in range(1,x) for j in range(i+1,x) for k in range(j+1,x) for l in range(k+1,x)]

print(len(L))
'''
b=[(1,[1,2,3,4]),
(2,[2,3,4,5]),
(3,[6,7,8,9]),
(4,[7,8,9,10]),
(5,[11,12,13,14]),
(6,[12,13,14,15]),
(7,[16,17,18,19]),
(8,[17,18,19,20]),
(9,[21,22,23,24]),
(10,[22,23,24,25]),
(11,[1,6,11,16]),
(12,[6,11,16,21]),
(13,[2,7,12,17]),
(14,[7,12,17,22]),
(15,[3,8,13,18]),
(16,[8,13,18,23]),
(17,[4,9,14,19]),
(18,[9,14,19,24]),
(19,[5,10,15,20]),
(20,[10,15,20,25])]
'''
def find(b,n):
  a={}
  for i in L:
    cnt=0
    for j in b:
      if set(j[1]).intersection(i):cnt+=1
    if cnt==n:
      #print(i)
      a=i
      break
  return a


def guess(bar,four):
  return four.intersection(bar)

def party(b,four):
  return list(filter(lambda x:four.intersection(x[1]),b))


def partn(b,four):
  return list(filter(lambda x:not four.intersection(x[1]),b))

def lookfor(bar):
  four=find(b,10) #random start
  print('guess',four)
  if guess(bar,four):
    print('Y')
    four=find(party(b,four),5)
  else:
    four=find(partn(b,four),5)
    print('N')
   
lookfor({12,13,14,15})


def lookforw(bar):
four=find(b,10) #random start
n=10
b0=b
while n>0:
  n=int(n/2)
  print('guess',four)
  if guess(bar,four):
    print('Y')
    b0=party(b0,four);print(b0)
    four=find(b0,n)
  else:
    print('N')
    b0=partn(b0,four);print(b0)
    four=find(b0,n)


lookforw({12,13,14,15})

guess {1, 2, 13, 6}
Y
[(1, [1, 2, 3, 4]), (2, [2, 3, 4, 5]), (3, [6, 7, 8, 9]), (5, [11, 12, 13, 14]), (6, [12, 13, 14, 15]), (11, [1, 6, 11, 16]), (12, [6, 11, 16, 21]), (13, [2, 7, 12, 17]), (
), (16, [8, 13, 18, 23])]
guess {1, 2, 3, 4}
N
[(3, [6, 7, 8, 9]), (5, [11, 12, 13, 14]), (6, [12, 13, 14, 15]), (12, [6, 11, 16, 21]), (16, [8, 13, 18, 23])]
guess {1, 2, 3, 6}
N
[(5, [11, 12, 13, 14]), (6, [12, 13, 14, 15]), (16, [8, 13, 18, 23])]
guess {8, 1, 2, 3}
N
[(5, [11, 12, 13, 14]), (6, [12, 13, 14, 15])]

使用道具 举报

回复
论坛徽章:
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
76#
发表于 2022-11-28 17:07 | 只看该作者
最后一步猜,应该是如果b0[0][1]不对,就返回b0[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
77#
发表于 2022-11-28 17:44 | 只看该作者
〇〇 发表于 2022-11-28 17:07
最后一步猜,应该是如果b0[0][1]不对,就返回b0[1][1]


def lookforw(bar):
four=find(b,10) #random start
n=10
b0=b
while n>0:
  n=int(n/2)
  print('guess',four)
  if guess(bar,four):
    print('Y')
    b0=party(b0,four);print(b0)
    four=find(b0,n)
  else:
    print('N')
    b0=partn(b0,four);print(b0)
    four=find(b0,n)
#last step
if len(b0)==2:
  four=list(filter(lambda x:set(b0[0][1]).intersection(x) and not set(b0[1][1]).intersection(x) ,L) )[0]
  if guess(bar,four):
    print('Y->',b0[0][1])
  else:
    print('N->',b0[1][1])
  

lookforw({12,13,14,15})

使用道具 举报

回复
论坛徽章:
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
78#
发表于 2022-11-28 17:53 | 只看该作者
本帖最后由 〇〇 于 2022-11-28 18:02 编辑

20种长方形的猜测过程.txt (10.8 KB, 下载次数: 3) 都验证了,打印了需要最后一步的4个猜测数 20种长方形的猜测过程.txt (10.96 KB, 下载次数: 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
79#
发表于 2022-11-28 19:13 | 只看该作者
本帖最后由 〇〇 于 2022-11-28 19:17 编辑

所有的猜测都是选的第一个符合条件的4格,反正没有猜不出来的 list.py.txt (1.98 KB, 下载次数: 2)

使用道具 举报

回复
论坛徽章:
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
80#
发表于 2022-11-28 21:09 来自手机 | 只看该作者
把要猜的长方形改为任意4个格,也能用二分法吗

使用道具 举报

回复

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

本版积分规则 发表回复

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