我正在解决Haskell中Project Euler的一些问题.我为它写了一个谜语程序,它没有像我预期的那样工作.
当我在运行程序时查看任务管理器时,我发现它在ghc上使用了> 1 GB的RAM.我的一个朋友在Java中编写了一个具有相同含义的程序,并在7秒内成功完成.
import Data.List
opl = find vw $ map (\x-> fromDigits (x++[0,0,9]) )
$ sequence [[1],re,[2],re,[3],re,[4],re,[5],re,[6],re,[7],re,[8],re]
vw x = hh^2 == x
where hh = (round.sqrt.fromIntegral) x
re = [0..9]
fromDigits x = foldl1 (\n m->10*n+m) x
Run Code Online (Sandbox Code Playgroud)
我知道这个程序会在给定足够的RAM和时间的情况下输出我想要的数字,但必须有更好的表现方式.
有没有办法验证多态关联只与一个项目相关?例如,如果我有一个多态的评论,可以在照片,帖子等.我想确保如果我在帖子的评论列表中添加评论,如果评论已经与帖子相关联,添加将失败.(验证唯一性错误).有任何想法吗?
我正在试图弄清楚如何使用merge()更新数据库.
这是一个例子.以数据框为例foo
foo <- data.frame(index=c('a', 'b', 'c', 'd'), value=c(100, 101, NA, NA))
Run Code Online (Sandbox Code Playgroud)
其中包含以下值
index value
1 a 100
2 b 101
3 c NA
4 d NA
Run Code Online (Sandbox Code Playgroud)
和数据框架 bar
bar <- data.frame(index=c('c', 'd'), value=c(200, 201))
Run Code Online (Sandbox Code Playgroud)
其中包含以下值:
index value
1 c 200
2 d 201
Run Code Online (Sandbox Code Playgroud)
当我运行下面的merge()函数来更新值c和d
merge(foo, bar, by='index', all=T)
Run Code Online (Sandbox Code Playgroud)
它导致此输出:
index value.x value.y
1 a 100 NA
2 b 101 NA
3 c NA 200
4 d NA 201
Run Code Online (Sandbox Code Playgroud)
我想输出的merge()避免的创作,在这个具体的例子中, …
1.打印一个: abcdefghijklmn
2.每一秒钟: acegikm
3.附加到URL的索引{ hello.com/,hej.com/,...,hallo.com/}:hello.com/a hej.com/b ... hallo.com/n
如果32位处理器的长度确实只有32位,那么数学运算如何处理64位数?例如:
long lngTemp1 = 123456789123;
long lngTemp2 = lngTemp1 * 123;
Run Code Online (Sandbox Code Playgroud)
根据MSDN,C#中有一个长期签名的64位数字:http://msdn.microsoft.com/en-us/library/ctetwysk(VS.71).aspx
32位英特尔微处理器如何能够执行代码,如上所述而不会出现溢出?
当我们使用malloc()分配内存时,我们应该给出两个幂的大小吗?或者我们只是给出我们需要的确切尺寸?
喜欢
//char *ptr= malloc( 200 );
char *ptr= malloc( 256 );//instead of 200 we use 256
Run Code Online (Sandbox Code Playgroud)
如果给出2的幂的大小更好,那是什么原因?为什么更好?
谢谢
编辑
我混淆的原因是在Joel的博客Back to Basics中引用
智能程序员通过始终分配大小为2的内存块来最小化malloc的潜在破坏.你知道,4个字节,8个字节,16个字节,18446744073709551616个字节等.由于任何使用乐高的人都应该直观的原因,这可以最大限度地减少自由链中发生的奇怪碎片的数量.虽然看起来这似乎浪费了空间,但也很容易看出它永远不会浪费50%以上的空间.所以你的程序使用的内存不会超过它需要的两倍,这不是什么大不了的事.
对不起,我应该早点发布上面的报价.我很抱歉!
到目前为止,大多数回复都说,以2的力量分配内存是一个坏主意,那么在哪种情况下更好地遵循Joel的观点malloc()呢?他为什么这么说?以上引用的建议现在已经过时了吗?
请解释一下.
谢谢
我有一个固定长度的字符串,这是一个数字.当我将字符串分配给变量时,它被赋值为8而不是10.为什么?我怎么阻止它?
$ i=10
$ ((i=i+1))
$ echo $i
11 # Right answer
$ i=000010
$ ((i=i+1))
$ echo $i
9 # Wrong answer
Run Code Online (Sandbox Code Playgroud)
更新:答案确认数字正在转换为八进制,并且需要删除前导零.这是sed命令.
echo"000010"| sed's/0*//'
在我有两个表的情况下:
我想选择所有游戏和玩家的性别,我如何绕过null playerIds?
根据这个解释,我认为答案是:
SELECT Games.id, p1.gender, p2.gender
FROM Games JOIN Players p1 on player1Id = p1.id
JOIN Players p2 on player2Id = p2.id
Run Code Online (Sandbox Code Playgroud)
但是,这不会返回任何将player1Id或player2Id设为null的游戏.有可能在可能的情况下显示所有连接玩家的游戏吗?
谢谢.
我试图通过Linux上的exec调用运行ffmpeg.但是我必须在命令中使用引号(ffmpeg需要它).我一直在浏览java doc for processbuilder和exec以及stackoverflow上的问题,但我似乎无法找到解决方案.
我需要跑
ffmpeg -i "rtmp://127.0.0.1/vod/sample start=1500 stop=24000" -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv
Run Code Online (Sandbox Code Playgroud)
我需要在下面的参数字符串中插入引号.注意,由于processbuilder解析和运行命令的性质,简单地添加单引号或双引号前面加一个反斜杠不起作用.
String argument = "ffmpeg -i rtmp://127.0.0.1/vod/"
+ nextVideo.getFilename()
+ " start=" + nextVideo.getStart()
+ " stop=" + nextVideo.getStop()
+ " -re -vcodec copy -acodec copy -f flv rtmp://127.0.0.1/live/qltv";
Run Code Online (Sandbox Code Playgroud)
任何帮助将不胜感激.