小编Nik*_* B.的帖子

Ruby方法调用层次结构

本文的启发下,我正在使用Ruby方法调用层次结构并注意到一些奇怪的东西.

鉴于:

class B
  def foo  
    "- Instance method defined by B"
  end  

  def method_missing(method)
    puts "- method_missing (#{method}) on b. Redirecting to b.foo\n"
    foo
  end
end

b = B.new

def b.foo  
  "- Method defined directly on an instance of B\n" + super  
end

def b.method_missing(method)
  "- method_missing (#{method}) on b. Calling super\n" + super
end

puts "Calling 'bar' on b of type #{b.class}:"
puts b.bar
Run Code Online (Sandbox Code Playgroud)

运行它给出:

Calling 'bar' on b of type B:
- method_missing (bar) on …
Run Code Online (Sandbox Code Playgroud)

ruby

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

如何评估以模数为模的指数塔

我想找到一个快速算法来评估如下的表达式,其中P是素数.

A ^ B ^ C ^ D ^ E mod P
Run Code Online (Sandbox Code Playgroud)

例:

(9 ^ (3 ^ (15 ^ (3 ^ 15)))) mod 65537 = 16134
Run Code Online (Sandbox Code Playgroud)

问题是中间结果可能会变得太大而无法处理.

language-agnostic algorithm math

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

非恒定大小的数组:为什么这甚至可以工作?

#include <iostream>
using namespace std;

int main(){
    int n;
    cout<<"Enter the size :";
    cin>>n;
    int array[n];  // I've worked some outputs and it works 
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

这是某种动态分配吗?
为什么它甚至没有给'n'作为"const"的错误?

此外,写入cout << array[n+5];不会导致编译时或运行时错误.

我正在使用Dev-C++.

c++ memory arrays compiler-errors dynamic

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

复制书籍UVa在线评判动态编程解决方案

我可以使用二进制搜索方法解决复制书籍问题,因为它易于实现.但我刚刚开始解决动态编程问题,我想知道问题的动态编程解决方案

在书籍印刷术发明之前,制作一本书的副本非常困难.所有的内容都必须由所谓的划线员手工重写.划线员得到了一本书,几个月后他完成了复印件.其中一位最着名的抄写员生活在15世纪,他的名字是Xaverius Endricus Remius Ontius Xendrianus(Xerox).无论如何,这项工作非常烦人和无聊.加快速度的唯一方法就是雇佣更多的抄写员.

曾几何时,有一个剧院合奏,想要演奏着名的古董悲剧.当然,这些剧本的剧本分为许多书,演员需要更多的副本.所以他们聘请了许多抄写员来复制这些书.想象一下,你有m本书(编号为1,2,......,m)可能有不同数量的页面(p_1,p_2,...,p_m),你想要制作每本书的一个副本.你的任务是将这些书分为k文士,k <= m.每本书只能分配给一个抄写员,每个抄写员必须获得连续的书籍序列.这意味着,存在越来越多的数字0 = b_0 <b_1 <b_2,... <b_ {k-1} <= b_k = m $,这样我的抄写员就可以得到一系列数字1 + 1和bi.制作所有书籍的副本所需的时间由分配最多作品的抄写员决定.因此,我们的目标是最小化分配给单个划线器的最大页数.您的任务是找到最佳分配.

对于二进制搜索,我正在执行以下操作.

 Low =1 and High = Sum of pages of all books

 Run Binary search

 For Mid(Max pages assigned to a scribe), assign books greedily such that no scribe gets page more than MAX

 If scribes remain without work it means actual value is less than MID, if Books remain …
Run Code Online (Sandbox Code Playgroud)

algorithm dynamic-programming

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

Ruby中的XML解析

我正在使用REXML Ruby解析器来解析XML文件.但是在64位带有64位Ruby的AIX盒子上,我收到以下错误:

REXML::ParseException: #<REXML::ParseException: #<RegexpError: Stack overflow in 
regexp matcher: 
/^<((?>(?:[\w:][\-\w\d.]*:)?[\w:][\-\w\d.]*))\s*((?>\s+(?:[\w:][\-\w\d.]*:)?[\w:][\-\w\d.]*\s*=\s*(["']).*?\3)*)\s*(\/)?>/mu>
Run Code Online (Sandbox Code Playgroud)

对此的要求是这样的:

REXML::Document.new(File.open(actual_file_name, "r"))
Run Code Online (Sandbox Code Playgroud)

有没有人知道如何解决这个问题?

ruby ruby-on-rails rexml xml-parsing

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

排名列表的后缀

x对数组/列表中的元素进行排序只是为了找出数组/列表中严格小于x的元素数量.

因此,对列表进行排名只是获取列表中所有元素的排名.

例如,rank [51, 38, 29, 51, 63, 38] = [3, 1, 0, 3, 5, 1]即有3个小于51的元素,等等.

可以在O(NlogN)中对列表进行排名.基本上,我们可以在记住每个元素的原始索引的同时对列表进行排序,然后查看每个元素之前的数量.


这里的问题是如何对列表的后缀进行排名O(NlogN)

对列表的后缀进行排名意味着:

列表[3; 1; 2],等级[[3; 1; 2]; [1; 2]; [2]]

请注意,元素可能不明确.


编辑

我们不需要打印出所有后缀的所有元素.你可以想象我们只需要打印一个列表/数组,其中每个元素都是后缀的等级.

例如,rank suffix_of_ [3; 1; 2] = rank [[3; 1; 2]; [1; 2]; [2]] = [2; 0; 1],你只需打印出[2; 0; 1].


编辑2

让我解释一下所有后缀是什么,这意味着在这里更清楚地排序/排序所有后缀.

假设我们有一个数组/列表[e1; e2; e3; e4; e5].

那么[e1; e2; e3; e4; e5]的所有后缀都是:

[e1; e2; e3; e4; e5]
[e2; e3; …

algorithm time-complexity

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

带有`itertools.combinations`的子集总和

我在python中有一个整数列表,可以这样说:

weight = [7, 5, 3, 2, 9, 1]
Run Code Online (Sandbox Code Playgroud)

我应该如何使用itertools.combinations查找这些整数存在的所有可能的总和子集。这样我就得到了(带有3个整数的所需输出的示例-weight = [7,5,3]:

sums = [ [7], [7+5], [7+3], [7+5+3], [5], [5+3], [3] ]
Run Code Online (Sandbox Code Playgroud)

与这些重量相关联,我还有另一个名为“行李箱”的数组,它是一个列表的列表,其中包含行李箱名称及其对应重量的格式:

luggages = [["samsonite", 7], ["Berkin", 5], ["Catelli", 3] .....]
Run Code Online (Sandbox Code Playgroud)

我以这种方式创建了一个称为权重的数组。

weight = numpy.array([c[1] for c in luggages]) 
Run Code Online (Sandbox Code Playgroud)

我可以这样做,因为需要行李名。我试图以这种方式使用itertools.combinations(根据建议):

comb = [combinations(weight, i) for i in range(len(luggages))]
Run Code Online (Sandbox Code Playgroud)

我的目标:鉴于max_weight = 23满足每个子集总和等于23 KG的条件的每个子集的所有组合的千克,打印出我可以带去旅行的所有可能的行李名子集。用简单的话来说,我必须打印出一张清单,上面列出行李的名称,如果将它们的重量相加,它们将max_weight = 23完全相同。注意:行李在每个子集中只能选择一次,但它们可以出现在尽可能多的子集中。同样,每个子集中的项目数量无关紧要:可以是1个行李箱,2、3 ...,只要它们的总和等于23。

python algorithm recursion

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

米勒拉宾Primality测试准确性

我知道Miller-Rabin素性测试是概率性的.但是我想将它用于编程任务,不会留下任何错误.

如果输入数字是64位整数(即long long在C中),我们可以假设它是非常高的概率吗?

c algorithm primes cryptography primality-test

4
推荐指数
3
解决办法
5606
查看次数

使用给定数量2的表达式的唯一值

给定2的个数,通过构建最多给定数量2的表达式可以形成多少个唯一值,包括加法或乘法.

例如,如果n = 2,我们可以形成2个不同的值:

2 + 2 = 4
2 * 2 = 4
2     = 2
Run Code Online (Sandbox Code Playgroud)

对于n = 3,我们可以形成4个不同的值(2,4,6和8):

2 * 2 * 2 = 8
2 * 2 + 2 = 6
2 + 2 * 2 = 6
2 + 2 + 2 = 6
2 * 2     = 4
2 + 2     = 4
2         = 2
Run Code Online (Sandbox Code Playgroud)

我想知道任何n,不同可能值的数量.

我尝试了所有可能的组合并将它们添加到哈希映射中,但随着n的增加,comibnations呈指数级增长,因此暴力无效.我需要另一种计算方法或广义数学公式.

可以使用动态编程解决,因为我看到许多子问题被重复使用.

algorithm combinations dynamic-programming

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

使用Akka Actors处理多个TCP连接

我正在尝试使用akka actor 设置一个简单的TCP服务器,这应该允许多个客户端同时连接.我将问题简化为以下简单程序:

package actorfail
import akka.actor._, akka.io._, akka.util._
import scala.collection.mutable._
import java.net._

case class Foo()

class ConnHandler(conn: ActorRef) extends Actor {
  def receive = {
    case Foo() => conn ! Tcp.Write(ByteString("foo\n"))
  }
}

class Server(conns: ArrayBuffer[ActorRef]) extends Actor {
  import context.system
  println("Listing on 127.0.0.1:9191")
  IO(Tcp) ! Tcp.Bind(self, new InetSocketAddress("127.0.0.1", 9191))
  def receive = {
    case Tcp.Connected(remote, local) =>
      val handler = context.actorOf(Props(new ConnHandler(sender)))
      sender ! Tcp.Register(handler)
      conns.append(handler)
  }
}

object Main {
  def main(args: Array[String]) {
    implicit val …
Run Code Online (Sandbox Code Playgroud)

tcp scala actor akka

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