小编Dan*_*Dan的帖子

拼图:需要一个不允许排序和/或散列的"复杂"等价关系/分区的例子

从问题" 分区比排序更容易吗? ":

假设我有一个项目列表和它们的等价关系,并且比较两个项目需要恒定的时间.我想返回项目的分区,例如链接列表列表,每个列表包含所有等效项目.

这样做的一种方法是将等价扩展到项目的排序并对它们进行排序(使用排序算法); 那么所有等价物品都会相邻.

(请记住平等和等同之间的区别.)

显然,在设计排序算法时必须考虑等价关系.例如,如果等价关系是"同一年出生的人是等价的",则根据人名进行排序是不合适的.

  1. 您能否建议一种数据类型和等价关系,以便无法创建排序?

  2. 怎么样的数据类型和等价关系在那里可以创建这样的排序,但它是不是可以对将映射等价物品相同的散列值的数据类型定义的哈希函数.

(注意:如果非等价项映射到相同的散列值(碰撞),则可以 - 我不是要求解决碰撞问题 - 但另一方面,hashFunc(item) { return 1; }是作弊.)

我怀疑对于任何可以定义排序的数据类型/等价对,也可以定义合适的散列函数,并且它们将具有类似的算法复杂度.这个猜想的一个反例就是启发!

sorting puzzle algorithm partitioning

7
推荐指数
2
解决办法
733
查看次数

为什么mkdir -p在checkinstall调用的脚本中没有正常工作?

我正在尝试编译Quarter并使用checkinstall打包它.

如果我做标准./configure && make && sudo make install,事情就好了.

$ wget http://ftp.coin3d.org/coin/src/all/Quarter-1.0.0.tar.gz
$ tar xzf Quarter-1.0.0.tar.gz
$ cd Quarter-1.0.0
$ ./configure
$ make
$ sudo make install
Run Code Online (Sandbox Code Playgroud)

但是当我使用checkinstall时,它失败了mkdir -p,应该可以正常工作.它失败的方式正是如何-p没有给出选项那样.这是我正在使用的checkinstall命令行:

$ checkinstall -D -y --install=no --pkgname=libquarter --pkgversion=1.0.0 \
  --arch=i386 --pkglicense=GPL --maintainer=me@example.com --reset-uids=yes
Run Code Online (Sandbox Code Playgroud)

这是失败:

....
/bin/bash ../../../cfg/mkinstalldirs /usr/local/include/Quarter/devices
mkdir -p -- /usr/local/include/Quarter/devices
mkdir: cannot create directory `/usr/local/include/Quarter': No such file or directory
make[4]: *** [install-libdevicesincHEADERS] Error 1
....
Run Code Online (Sandbox Code Playgroud)

这是脚本的相关部分:

$ cat cfg/mkinstalldirs
....
case $dirmode …
Run Code Online (Sandbox Code Playgroud)

linux mkdir checkinstall

7
推荐指数
2
解决办法
4572
查看次数

复制SVN存储库

我在托管的SVN服务上有一个SVN repo,我需要转移到我们本地托管的SVN服务.主机提供了导出功能,我已经使用过了.但是如何获取导出的文件并将其导入新的存储库?

编辑

我尝试使用svnadmin加载,但收到一条错误消息:

% svnadmin load . < ~/ss2_14066_rev36
svnadmin: Malformed dumpfile header
Run Code Online (Sandbox Code Playgroud)

我正在导出的服务是http://beanstalkapp.com,他们的导出帮助页面说这个导出的文件可以重新导入到另一个svn服务器.这可能是服务器版本不匹配吗?

svn import export repository

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

源代码洞察,如Windows中的免费源代码浏览器和编辑器

任何人都可以建议我免费的源代码浏览器(c/c ++)和Windows中的编辑器,如源洞察?

windows source-insight

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

执行自己的代码的编程语言类的名称

你怎么称为可以执行自己的代码的编程语言(作为字符串文字传递)?我心中的设置类似于此(忘记片刻输入代码,结果等):

string eight = "5+3"
int result = run(eight)
Run Code Online (Sandbox Code Playgroud)

run关键字在哪里 这是一种反思性的编程语言吗?

programming-languages nomenclature

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

如何获取当前shell脚本的完整路径名?

有没有一种蛮力的方式来做到这一点?

#!/bin/ksh
THIS_SCRIPT=$(/usr/bin/readlink -f $(echo $0 | /bin/sed "s,^[^/],$PWD/&,"))
echo $THIS_SCRIPT
Run Code Online (Sandbox Code Playgroud)

我坚持使用,ksh但更喜欢也适用的解决方案bash(我认为这样做).

bash ksh pathname

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

什么语言有while-else类型的控制结构,它是如何工作的?

很久以前,我以为我看到了一个建议在C或C++中添加一个else子句forwhile循环......或类似的东西.我不记得它应该如何工作 - else如果循环正常退出而不是通过break语句,子句是否运行?

无论如何,这很难搜索,所以我想也许我可以在这里得到一些CW答案的各种语言.

哪些语言支持elseif语句之外添加子句?该条款的含义是什么?请回答一种语言.

language-features programming-languages for-loop if-statement

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

我可以信任ceil()结果的实际转换吗?

假设我有一些代码,例如:

float a, b = ...; // both positive
int s1 = ceil(sqrt(a/b));
int s2 = ceil(sqrt(a/b)) + 0.1;
Run Code Online (Sandbox Code Playgroud)

有可能s1 != s2吗?我担心的是什么时候a/b是一个完美的广场.例如,也许a=100.0b=4.0,然后输出ceil应该是5.00000,但如果相反,它是什么4.99999

类似的问题:是否有可能100.0/4.0评估说5.00001,然后ceil将其四舍五入6.00000

我宁愿在整数数学中做这个,但sqrt有点螺丝计划.

编辑:关于如何更好地实现这一点的建议也将受到赞赏!该ab值是整数值,所以实际的代码更像是:ceil(sqrt(float(a)/b))

编辑:基于levis501的答案,我想我会这样做:

float a, b = ...; // both positive
int s = sqrt(a/b);
while (s*s*b < a) ++s;
Run Code Online (Sandbox Code Playgroud)

谢谢你们!

c c++ floating-point floating-accuracy ceil

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

从fread()失败中恢复的好方法是什么?

如果对fread()的调用返回0并且ferror()指示错误(相对于EOF),是否可以重试读取或是否更好地关闭并重新打开文件?

我无法完全重新开始 - 输入文件已被部分处理,无法撤消(比如我一次写出一个块到套接字,并且由于现有协议,没有办法告诉远程端,"没关系,我需要重新开始").

我可以fclose()和fopen()文件,fseek()超过已经处理过的数据,并从那里继续fread() - 但这是必要的吗?

c c++ error-handling recovery fread

3
推荐指数
2
解决办法
2316
查看次数

Django"通过"模型迭代

答案可能(并且可能)已经存在,但我正在努力想要找到什么.

我有三个模型:人员,组和成员.

class Person(Contact):
    first_name = models.CharField(_('first name'), max_length=200, blank=True)
    last_name = models.CharField(_('last name'), max_length=200, blank=True)

class Organization(Contact):
    title = models.CharField(_('title'), max_length=200)
    members = models.ManyToManyField(Person, blank=True, through='Membership')

class Membership(models.Model):
    person = models.ForeignKey(Person)
    organization = models.ForeignKey(Organization)
    position = models.CharField(max_length=64, blank=True)
Run Code Online (Sandbox Code Playgroud)

我想获得一个人员列表,并且可以轻松访问一个人所属的群组,但这不是会员资格和人员之间的一对一关系.似乎最简单的方法是在Person中创建一个方法get_memberships,它将返回一个人与之关联的成员资格(如果有的话).这是否有意义,以这种方式从模型中访问这种关系是合理的做法还是有更好的方法去实现它?

django django-models

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