小编Sah*_*een的帖子

因子的阶乘因子

如何有效地计算数的阶乘的阶乘.
示例:对于3 =>(3!)!=(6)!= 720
蛮力方式是简单地使用简单的for循环调用阶乘两次,但可以做得更好.

for(i=1;i<=n;i++) 
   fact=fact*i; 
Run Code Online (Sandbox Code Playgroud)

编辑:需要结果为((n!)!)MOD 10 ^ m,其中m是一个整数,0 <= m <= 19

algorithm math factorial

2
推荐指数
1
解决办法
1115
查看次数

为什么在SQL查询中使用UDF会导致笛卡尔积?

我看到了Databricks-Question并且不明白

  1. 为什么使用UDF导致笛卡尔积而不是完全外连接?显然,笛卡尔积将比完整外连接(联接是一个例子)更多行,这是潜在的性能损失.
  2. Databricks-Question中给出的示例中,是否有任何强制外部连接超过笛卡尔积的方法?

在这里引用Databricks-Question:

我有一个Spark Streaming应用程序,它使用SQLContext在流数据上执行SQL语句.当我在Scala中注册自定义UDF时,流应用程序的性能显着下降.详情如下:

声明1:

Select col1, col2 from table1 as t1 join table2 as t2 on t1.foo = t2.bar

声明2:

Select col1, col2 from table1 as t1 join table2 as t2 on equals(t1.foo,t2.bar)

我使用SQLContext注册自定义UDF,如下所示:

sqlc.udf.register("equals", (s1: String, s2:String) => s1 == s2)

在相同的输入和Spark配置上,与Statement1相比,Statement2的性能明显更差(接近100倍).

sql apache-spark apache-spark-sql

1
推荐指数
1
解决办法
1052
查看次数

如何在具有隐式参数的函数上调用Private

如何为这些类调用XYZ.doSomething方法:

XYZ.scala

object XYZ {

  private def doSomething(i : Int)(implicit s: String): String {
    s + i.toString
  }
}
Run Code Online (Sandbox Code Playgroud)

XYZTest.scala

class XYZTest extends FunSpec with PrivateMethodTester {
  describe("SomeTest") {
    it("Can't find a private method named: doSomething :( ") {
      implicit lazy val someStr: String = "sahil"
      val doSomething = PrivateMethod[String]('doSomething)
      val myStr = XYZ invokePrivate doSomething(1)
      assert(myStr == "sahil1")
    }
  }
  describe("SomeTest") {
    it("This doesn't even compile :( ") {
      val doSomething = PrivateMethod[String]('doSomething)
      val myStr = XYZ invokePrivate doSomething(1)("sahil") …
Run Code Online (Sandbox Code Playgroud)

scala

1
推荐指数
1
解决办法
430
查看次数

从scala字符串中提取标记的快速方法

鉴于其具有键 - 值对的集合(具有类型键 - 值对的顺序不固定,键 - 值对的数目不固定的)一阶字符串:

val s = "key1: val1, key2: (val2.1, val2.2, val2.3), key3: (), key4: val4"
Run Code Online (Sandbox Code Playgroud)

我需要把它们拉成一个不可变的地图,如:

Map("key1" -> "val1",
  "key2" -> "(val2.1, val2.2, val2.3)",
  "key3" -> "()",
  "key4" -> "val4")
Run Code Online (Sandbox Code Playgroud)

我试过这个:

val kvMap = s.split(", ").map(_.split(": ")).map(t => t(0) -> t(1)).toMap
Run Code Online (Sandbox Code Playgroud)

但这失败了,因为在括号中和键值对之间使用了相同的分隔符(逗号).

我可以使用迭代使用堆栈但是想要避免这种情况.

我也尝试写一个正则表达式,可以帮助我做到这一点,但可以使它只适用于1对:

scala>  val MyPattern = "([^=]*):(.*)".r
Pattern: scala.util.matching.Regex = ([^=]*):(.*)
                           ^
scala> val MyPattern(k, v) = "key: value"
k: String = key
v: String = " value"
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种功能性的方法来完成这项操作.

regex string scala

1
推荐指数
1
解决办法
177
查看次数

使用srand()生成随机数

我写了这个函数:

int getRandomNumber(int min,int max)
{
    srand(time(NULL));
    return rand()%(max-min+1);
}
Run Code Online (Sandbox Code Playgroud)

并称之为:

 int x=getRandomNumber(0,2);
 int y=getRandomNumber(0,2);
Run Code Online (Sandbox Code Playgroud)

但我总是得到相同的x和y值,即x = y总是.
怎么解决?

c c++

0
推荐指数
1
解决办法
259
查看次数

标签 统计

scala ×2

algorithm ×1

apache-spark ×1

apache-spark-sql ×1

c ×1

c++ ×1

factorial ×1

math ×1

regex ×1

sql ×1

string ×1