楼主: 〇〇

[SQL] puzzleup 2016

[复制链接]
论坛徽章:
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
31#
 楼主| 发表于 2016-8-4 07:40 | 只看该作者
newkid 发表于 2016-8-3 22:44
第一题附加题的SQL,

https://segmentfault.com网站不错

使用道具 举报

回复
论坛徽章:
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
32#
 楼主| 发表于 2016-8-4 08:05 | 只看该作者
solomon_007 发表于 2016-8-4 00:13
NEWKID 大神,膜拜啊

第二题:

怎么算的,P是什么意思?

使用道具 举报

回复
论坛徽章:
8
玉兔
日期:2015-11-16 10:18:00铁扇公主
日期:2015-10-27 21:47:42九尾狐狸
日期:2015-12-11 22:31:15
33#
发表于 2016-8-4 10:11 | 只看该作者
的确是9



使用道具 举报

回复
论坛徽章:
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
34#
 楼主| 发表于 2016-8-4 10:58 | 只看该作者

加菲猫真聪明

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
35#
发表于 2016-8-4 15:36 | 只看该作者
第一题都撸出血了,懵圈了。scala
import scala.math._
import scala.collection.mutable.Set

object test5 {
  def main(args: Array[String]) {
    def notCross(p1: (Int, Int, Int), p2: (Int, Int, Int), p3: (Int, Int, Int), p4: (Int, Int, Int)) = {
      if ((p2._2 - p1._2) * (p4._1 - p3._1) - (p2._1 - p1._1) * (p4._2 - p3._2) == 0)
        true
      else {
        val x1 = min(p1._1, p2._1)
        val x2 = max(p1._1, p2._1)
        val x3 = min(p3._1, p4._1)
        val x4 = max(p3._1, p4._1)
        val x = ((p2._1 - p1._1) * (p4._1 * p3._2 - p3._1 * p4._2) + (p4._1 - p3._1) * (p1._1 * p2._2 - p2._1 * p1._2)) / ((p2._2 - p1._2) * (p4._1 - p3._1) - (p2._1 - p1._1) * (p4._2 - p3._2))
        if (x > x2 || x < x1 || x > x4 || x < x3)
          true
        else
          false
      }
    }

    def notStraight(p1: (Int, Int, Int), p2: (Int, Int, Int), p3: (Int, Int, Int)) = {
      if ((p1._1 + p2._1 == p3._1 * 2 && p1._2 + p2._2 == p3._2 * 2) || (p1._1 + p3._1 == p2._1 * 2 && p1._2 + p3._2 == p2._2 * 2) || (p2._1 + p3._1 == p1._1 * 2 && p2._2 + p3._2 == p1._2 * 2))
        false
      else
        true
    }

    def translate(s: String, s_src: String, s_tgt: String): String = {
      var s1 = ""
      s.foreach(c => s1 += (if (s_src.indexOf(c) >= 0) s_tgt.charAt(s_src.indexOf(c)) else c))
      s1
    }

    def naiveShape(s: String): String = s(0) match {
      case '3' => translate(s, "369258147", "123456789")
      case '7' => translate(s, "741852963", "123456789")
      case '9' => translate(s, "987654321", "123456789")
      case _ => s
    }

    def rotate(s: String): String = {
      val ss = Set(s, s.substring(0, 1) + s(4) + s(3) + s(2) + s(1))
      for (i <- 0 to 4) {
        ss.foreach(s =>
          if (s.substring(i, 5).matches("^[1379].*")) {
            ss += naiveShape(s.substring(i, 5) + s.substring(0, i))
            ss += translate(naiveShape(s.substring(i, 5) + s.substring(0, i)), "236478", "478236")
          }
        )
      }
      ss.min
    }

    val v0 = (0, 0, 1)
    var r = Set.empty[String]
    val p = Set((10, 1, 2), (20, 2, 3), (-1, 10, 4), (9, 11, 5), (19, 12, 6), (-2, 20, 7), (8, 21, 8), (18, 22, 9))
    for (v1 <- p)
      for (v2 <- p - v1 if notStraight(v2, v1, v0))
        for (v3 <- p - v1 - v2 if notCross(v3, v2, v0, v1) && notStraight(v3, v2, v1))
          for (v4 <- p - v1 - v2 - v3)
            if (notCross(v3, v4, v0, v1) && notCross(v3, v4, v2, v1) && notCross(v0, v4, v2, v1) && notCross(v0, v4, v2, v3) && notStraight(v4, v3, v2) && notStraight(v0, v4, v3)) {
              r += rotate(List(v0._3, v1._3, v2._3, v3._3, v4._3).mkString)
            }
    println(r.size)
    println(r)
  }
}


22
Set(12685, 12694, 13597, 12597, 12687, 13567, 12598, 13568, 12567, 12657, 12568, 12658, 12697, 12957, 12675, 12594, 12538, 12958, 15268, 12975, 12945, 12684)

Process finished with exit code 0
再加上一个2开头的共23个

使用道具 举报

回复
论坛徽章:
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
36#
 楼主| 发表于 2016-8-4 15:39 | 只看该作者
udfrog 发表于 2016-8-4 15:36
第一题都撸出血了,懵圈了。scala
import scala.math._
import scala.collection.mutable.Set

2开头为什么要单算

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
37#
发表于 2016-8-4 19:52 | 只看该作者
第二题的公式为:
p=1-(100-n)*..*(102-2*n)/(100*..*(102-n))
据说当n>9时,p>0.5?倒也还没去算,4和5的结果和加菲的数据完全一样
感觉自己一年不如一年了,高中数学精编a组题的水平,想了一下午才绕出来。。

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
38#
发表于 2016-8-4 19:53 | 只看该作者
〇〇 发表于 2016-8-4 15:39
2开头为什么要单算

之前以为能省事,后来发现没什么分别,也懒得改了。。。

使用道具 举报

回复
论坛徽章:
94
生肖徽章2007版:牛
日期:2012-08-02 22:43:00紫蛋头
日期:2012-12-08 09:43:38鲜花蛋
日期:2012-11-17 12:02:07鲜花蛋
日期:2013-02-05 21:53:34复活蛋
日期:2012-11-17 12:02:07SQL极客
日期:2013-12-09 14:13:35SQL数据库编程大师
日期:2013-12-06 13:59:43SQL大赛参与纪念
日期:2013-12-06 14:10:50ITPUB季度 技术新星
日期:2012-11-27 10:16:10最佳人气徽章
日期:2013-03-19 17:24:25
39#
发表于 2016-8-4 19:56 | 只看该作者
不过还好,在路上思考问题的能力还没丧失,最后在地铁上想出来的公式。搞定了小牛蛙赶紧过来验证下

使用道具 举报

回复
论坛徽章:
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
40#
 楼主| 发表于 2016-8-4 20:38 | 只看该作者
udfrog 发表于 2016-8-4 19:52
第二题的公式为:
p=1-(100-n)*..*(102-2*n)/(100*..*(102-n))
据说当n>9时,p>0.5?倒也还没去算,4和5 ...

我更笨,都看不懂你的公式,加个注释

使用道具 举报

回复

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

本版积分规则 发表回复

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