楼主: newkid

[每日一题] PUZZLEUP 2015

[复制链接]
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
471#
发表于 2015-12-4 10:55 | 只看该作者
newkid 发表于 2015-12-3 23:38
你还怕走光?想太多了吧!这里除了你谁能看得懂M代码?
要是SQL简单还叫比赛吗?咱们从事的是SQL极限运动 ...

我记得这里有人懂M的,不过为了1万PB拼了,谁能先告诉我PB能买什么东西?

你们的题目没有提供规模小点时候的验证数据,等周末把这个给贴上来,好让大家有点方向

使用道具 举报

回复
论坛徽章:
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
472#
发表于 2015-12-4 11:13 | 只看该作者
lugionline 发表于 2015-12-4 10:55
我记得这里有人懂M的,不过为了1万PB拼了,谁能先告诉我PB能买什么东西?

你们的题目没有提供规模小点 ...

3*3已经最小,2*2,2*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
473#
发表于 2015-12-4 12:08 | 只看该作者
少一层,快一倍
with a as(select level-1 a,level-2 b from dual connect by level<=3),
e as(select a.a||b.a||c.a||d.a p,a.a b1,b.a b2,c.a b3,d.a b4,a.b s1,b.b s2,c.b s3,d.b s4
from a,a b,a c,a d
where regexp_count(a.a||b.a||c.a||d.a,'2')>regexp_count(a.a||b.a||c.a||d.a,'0')),
g as(select * from(select e.p||f.p p,e.b1||f.b1 b1,e.b2||f.b2 b2,e.b3||f.b3 b3,e.b4||f.b4 b4 ,
e.s1+f.s1 s1,
e.s2+f.s2 s2,
e.s3+f.s3 s3,
e.s4+f.s4 s4
from e,e f)
where  instr(b1||b2||b3||b4,'00') not in(1,3,5,7)) ,
j as (select * from
(select e.p||f.p p,e.b1||f.b1 b1,e.b2||f.b2 b2,e.b3||f.b3 b3,e.b4||f.b4 b4 ,
e.s1+f.s1 s1,
e.s2+f.s2 s2,
e.s3+f.s3 s3,
e.s4+f.s4 s4
from g e,g f)x
where s1>0 and s2>0 and s3>0 and s4>0)
select count(*) from j;
  COUNT(*)
----------
    294879

已用时间:  00: 00: 00.28

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
474#
发表于 2015-12-4 12:26 | 只看该作者
3*2 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
475#
发表于 2015-12-4 12:52 | 只看该作者
lugionline 发表于 2015-12-3 10:32
这题目也太弱了吧,直接上 M 代码

In[11]:= K = 4;

http://vdisk.weibo.com/s/uxS9xoXiz-TAs的版本
不算太快,花了几秒才出来

使用道具 举报

回复
论坛徽章:
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
476#
发表于 2015-12-4 12:59 | 只看该作者
mathematica教程(不完整文字版).pdf (1.47 MB, 下载次数: 3)

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
477#
发表于 2015-12-4 14:03 | 只看该作者
本帖最后由 lugionline 于 2015-12-4 18:59 编辑

不需要太快,你码这些SQL代码都不止几秒了,略作改进就可以更快

In[1]:= K = 4;
Timing@Length@Select[
   Tuples[Select[Tuples[{1, 0, -1}, K], Total[#] > 0 &], K],
   Length@Select[(Table[1, {K}].#), # <= 0 &] == 0 &]

Out[2]= {4.765625, 294879}

再改下,跑得更快了
In[1]:= K = 4;
R0 = Table[1, {K}];
Timing@Count[Map[
   Length[Select[R0.#, # <= 0 &]] &,
   Tuples[Select[Tuples[{1, 0, -1}, K], Total[#] > 0 &], K]], 0]

Out[3]= {0.531250, 294879}

使用道具 举报

回复
论坛徽章:
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
478#
发表于 2015-12-4 14:08 | 只看该作者
本帖最后由 〇〇 于 2015-12-4 14:09 编辑
lugionline 发表于 2015-12-4 14:03
不需要太快,你码这些SQL代码都不止几秒了,略作改进就可以更快

In[1]:= K = 4;
这个问题规模小,所以写sql的时间长,比如6*6会不会运行时间比写sql的时间长?
我的台式机
Out[10]= {8.844, 294879}
比如第2层>-2,第3层>-1,m怎么编

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
479#
发表于 2015-12-4 14:32 | 只看该作者
本帖最后由 lugionline 于 2015-12-4 14:39 编辑

M不擅长处理过程性描述,所以你最好不要这样想问题,你看我写了这么多代码用过For循环吗?

另外新版本的在很多地方都有改进,这段代码在我的RPi上都不需要这么久吧

In[13]:= Table[i - j, {i, 4}, {j, 4}]
(Total /@ %) - {-2, -1, 0, 1}

Out[13]= {{0, -1, -2, -3}, {1, 0, -1, -2}, {2, 1, 0, -1}, {3, 2, 1, 0}}

Out[14]= {-4, -1, 2, 5}

另外不要说6了,5也跑不出来啊,要算出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
480#
发表于 2015-12-4 14:39 | 只看该作者
lugionline 发表于 2015-12-4 14:32
M不擅长处理过程性描述,所以你最好不要这样想问题,你看我写了这么多代码用过For循环吗?

另外新版本的 ...

你用第几版的m?

使用道具 举报

回复

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

本版积分规则 发表回复

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