参与的童鞋请耐心等待结果,现在还差一位评委没有评完。 参与奖可以开始站短我衣服的颜色和尺码,我先给大家准备出来~尺码:L XL XXL等;图片见325楼~
盛拓传媒是中国领先的互联网传媒集团,以传媒和互联网的力量,帮助消费者提高生活品质和工作效率是其使命。盛拓传媒拥有两家IT领域专业垂直网站(IT168、泡泡网PCPOP),在全国各个主要城市均设有分支机构,覆盖国内几乎所有的目标人群,拥有无可比拟的影响力和传播力,是中国最具价值的互联网专业传媒航母。
2011年ITPUB社区主办了第1届“盛拓传媒杯”SQL数据库编程大赛,2013举办了第2届,活动受到了广大社区会员的支持和热情参与,很多人依然记得之前热闹的场景,应广大会员要求,今年继续组织SQL数据库编程大赛。欢迎各路高手各显神通!!
具体奖项和礼品说明如下:
一等奖-TOP1:500元京东礼品卡,2016中国数据库技术大会门票一张、并授予“ITPUB SQL数据库编程大师”的称号,奖励专属徽章以标识身份;
二等奖-TOP2-3:300元京东礼品卡,2016中国数据库技术大会门票一张、并授予“ITPUB SQL数据库编程大师”的称号,奖励专属徽章以标识身份;
三等奖-TOP4-6:200元京东礼品卡,2016中国数据库技术大会门票一张、并授予“ITPUB SQL数据库编程大师”的称号,奖励专属徽章以标识身份;
四等奖-TOP7-10:100元京东礼品卡,2016中国数据库技术大会门票一张、并授予“ITPUB SQL数据库编程大师”的称号,奖励专属徽章以标识身份;
参与奖:每位参与的会员均可获赠IT168纪念连帽衫一件、所有参与的会员均可得到一枚参与徽章。
现在开始第3届“盛拓传媒杯”SQL大赛答题,答题时间为:2015年11月30日-2015年12月14日24:00结束,共2周,请大家在此时间内答题。
题目:井字棋 两个玩家,一个打圈(O),一个打叉(X),轮流在3乘3的井字格上打自己的符号,最先以任意一行、一列或对角线连成一线则为胜。规定X先手。 一个终局棋谱(MOVES)指的是从开始下子到一方获胜或者下完9个子出现平局,从头到尾的下子情况。一方获胜后,本局即终止。不得提前认输。 格子从上到下,从左到右,依次编号1-9 MOVES的第一位表示第一子位置,第二位表示第二子位置,......如果一方获胜,MOVES的长度有可能<9。 局面(BOARD)表示棋盘上呈现的局面,也是按照从上到下,从左到右排列。用X和0填入相应的格子。减号“-” 表示空位。 这里有个棋局: 表示出来是: MOVES=3175968, BOARD=O-X-OOXXX, WINNER=X
比赛环境及功能要求: 在oracle 数据库10g及以上版本上成功运行,SQL中尽量避免使用12c的带有PL/SQL函数的WITH子查询。在WITH中使用了PL/SQL函数的答案将被扣10分。若要使用字符串拼接,应当使用listagg函数,不得使用wm_concat未公开函数。 若没有oracle 数据库测试环境,可以从此链接下载:
第一题(100分):求出所有可能终局棋谱和相应的局面,插入如下的表中: CREATE TABLE TICTACTOE (MOVES VARCHAR2(9) PRIMARY KEY,BOARDVARCHAR2(9),WINNER VARCHAR2(1)); 格式要求: 首先CREATE 上述TICTACTOE表。然后用一个能直接放在“insert into TICTACTOE ”后面成功运行的SQL查询语句,一次性插入所有满足标准的棋谱和相应的局面、胜者(WINNER=X或O或D,其中D表示平局)
注意:本题要求生成所有可能的终局棋谱,只要符合规则即可,哪怕其中有些走法可能看起来很愚蠢,也得包含进去。还没下完的棋谱不要列入。 如果两个终局的局面(BOARD)相同,但是其下子顺序(MOVES)不同,则视为不同棋谱,两个都必须出现在结果中。 如果两个棋谱的MOVES不同,但是其终局局面(BOARD)经过旋转、翻转后重合,仍然被视为不同棋谱,两个都必须出现在结果中。
第二题(100分):给定一个局面,假定该局面一定为有效(不会出现一方比另一方多两子的情况,或者两方都有三子连线的情况),用SQL判断出哪一方有必胜策略,以及获胜方最多再下几子必定会获胜。比如输入:V_BOARD='X-0------' 则输出'X3',表示WINNER=X,下子数=3,因为不管对手怎么走,X最多再下3子一定获胜。(不计入O再下的子数) 如果O方有失误,也有可能X再下两子就取胜的;X方也有可能下错而输掉,但这些都不在本题考虑范围,假定双方都是完美棋手,即双方都尽可能取胜,不能取胜则尽可能求和,不能求和则尽可能多下几子。 如果给定的局面中一方已经获胜,则输出获胜方符号和子数0,例如输入:V_BOARD='OXX—XOOX', 则输出'X0' 如果不存在必胜策略(比如一个空局:V_BOARD='---------'),则输出'D'。 输出中都不含单引号。 格式要求: 首先在sqlplus中声明变量var v_BOARDvarchar2(9),再对变量赋值(如:exec :v_BOARD:='X-O------')。然后用一个包含变量v_BOARD的查询语句,返回对应此棋局的结果字符串(X数字,或O数字,或D表示平局)
附加题(10分): m,n,k游戏是指两个对手在m*n的棋盘上轮流下子,谁先在纵、横、四十五度斜线上连续取得k个子就获胜的一种游戏,井字棋游戏其实就是3,3,3的一种特例。五子棋则为15,15,5游戏。 上述第二题中,如果SQL能够适用于m,n,k大于等于3的情况,则可获得10分的附加分。
活动评委:newkid, dingjun123 ,〇〇 参赛规则: 每个参赛者在题目的跟帖中以附件方式贴出自己的源代码,并将阅读权限设为11~100之间的数值,答案贴出后不允许编辑帖子。编辑过的帖子做无效处理。需要修改答案请发表新的回复,并以同样的方式上传新的答案。 附件名称以SQL3(ID)(题号).txt来命名,例如 SQL3(newkid)(1).txt则为newkid第一题的答案,通过rar压缩加密,推荐采取select sys_guid() from dual的方式产生密码,答题者需要在截止时间前将密码以论坛PM给论坛助理丸喵喵。两题的答案可以放在同一个压缩文件中,也可以分开提交。
活动流程: 1、发布本期活动题目及答题时间范围,大家可以在此期间根据以上参与规则上传自己的参赛程序文档。 2、结束答题,进入评审阶段,评审将在10天内对所有参赛程序进行评审,并给予点评。 3、公布评审结果及部分作品点评。 评审规则: 1、由ITPUB论坛助理丸喵喵下载参赛者附件并解压后隐去参赛者ID,将各参赛文档重编序号发布给评委。 2、所有评委独立对运行出正确答案的程序打分,把相应分数告知论坛助理。论坛助理取平均数为该答案最后得分。 评审依据: 1.用一句SQL实现,通俗易通,可读性(20分)(禁止在代码中包含参赛者ID、昵称等可能标识参赛者身份的信息) 2.解决问题的思路(20分) 3.解决问题的正确性和完善程度(40分) 4.性能(20分) 具体标准可能根据赛题进行适当调整。 特别声明: 评委需严格保守题目秘密,禁止外泄。禁止评委及同一会员用多个马甲同时参与此次活动,禁止其他一切有违比赛公平的事项。违者一经查实,将取消相关奖励以及比赛参与资格。
参与人员公布如下:共计27人参与
|