小编Jef*_*rth的帖子

短路排序

我明白那个:

head (map (2**) [1..999999])
Run Code Online (Sandbox Code Playgroud)

实际上只会评估2**1,而其余的都没有,但我正在阅读的书中说:

head (sort somelist)
Run Code Online (Sandbox Code Playgroud)

只需要找到列表中最小的项目,因为这就是所有使用的项目.这是如何运作的?据我所知,使用我所知的排序算法(如冒泡排序)是不可能的.

我认为这样做的唯一方法是,如果排序算法要遍历整个列表,寻找最小的项目,然后在没有该项目的情况下递归列表.对我来说,这听起来很慢.

这是排序功能如何工作,还是有另一种我不知道的排序算法,可以像它一样短路?

sorting haskell lazy-evaluation

5
推荐指数
2
解决办法
429
查看次数

格式化相对日期

是否有一个红宝石宝石会格式化相对于当前时间的日期?我希望输出像"明天下午5点","下周四下午5点15分",我不太关心确切的输出,只要它是自然语言的相对日期

ruby datetime nlp rubygems

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

在没有Gforth的情况下编译Gforth?

当我尝试编译Gforth 0.7.0时,我收到以下错误:

$ ./configure
$ make
#compiling… 
Undefined symbols:
  "_main", referenced from:
      start in crt1.10.6.o
ld: symbol(s) not found
collect2: ld returned 1 exit status
make[3]: *** [gforth-ll] Error 1
./preforth -p ".:~+:." -e 's" mach16b.fs"' ./kernel/main.fs -e "save-cross kernl16b.fi- /usr/local/bin/gforth-0.7.0 bye"
You need to configure with a gforth in $PATH to build this part
make[3]: *** [kernl16b.fi-] Error 1
make[2]: *** [gforth-ll] Error 2
make[1]: *** [optgforth] Error 2
make: *** [gforth] Error 2
[22:16:01] gforth-0.7.0$ 
Run Code Online (Sandbox Code Playgroud)

通过端口安装时出现同样的错误.我想问题是Gforth是写的,至少部分是在Forth中,所以如何在没有先安装它的情况下安装它(或者是其他问题)?

我使用的是Mac OS …

compiler-construction macos forth

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

与Markdown配合使用的Javascript语法高亮显示器

我已经看了几个Javascript程序,为页面上的代码块添加了语法高亮,但是我发现它们都需要在代码块上设置一个属性来告诉它使用的语言.我正在使用Markdown生成HTML,所以我无法设置这些属性,是否会自动执行此操作并且不需要设置属性?

我能想到这个工作的唯一方法是使用shebang线;

#!/usr/bin/ruby
def foo(bar)
    bar
end
Run Code Online (Sandbox Code Playgroud)

并且它会知道它是Ruby,甚至可能没有显示shebang线(有一个或两个线段的shebang将会很累).

我不需要它来做任何非常模糊的语言,但如果我能轻松编写新的定义,那将会很棒.

谢谢.

javascript syntax-highlighting

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

新的提交不在头上

长话短说*,我用我的git存储库做了一些我不知道该怎么做的事情,并最终分离了我的脑袋,也就是说,当我提交时master不是最新的.

我怎样才能解决这个问题?我必须合并吗?(如果是这样,我想要运行的确切命令是什么?)

当我运行git branch时,它告诉我我目前没有分支

$ git branch
* (no branch)
  master
Run Code Online (Sandbox Code Playgroud)
  • 更长的故事是我试图撤消一些提交,并且不知道我应该怎么做.我想这不会太久.

git version-control branch

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

匹配多行模式

我想使用greasemonkey从Last.fm中抓取wiki数据(这不适用于他们的REST api).我可以使用GM_xmlhttpRequest()获取页面,并且它正在正常返回.

我不想使用DOM处理器来处理整个页面,因为我只想要一个小块,所以我使用正则表达式.

维基数据在页面中如下:

<div id="wiki">
description

description
...
</div>
Run Code Online (Sandbox Code Playgroud)

所以我写道:

/\<div id="wiki"\>(.+)\<\/div\>/m.exec(data)[1];
Run Code Online (Sandbox Code Playgroud)

当我在错误控制台中测试它时(多行被平铺成一行,它可以工作,但在页面上它失败并说

Error: /\<div id="wiki"\>(.+)\<\/div\>/m.exec(data) is null
Source File: file:///home/jeff/.mozilla/firefox/x4su9596.default/extensions/%7Be4a8a97b-f2ed-450b-b12d-ee082ba24781%7D/components/greasemonkey.js
Line: 357
Run Code Online (Sandbox Code Playgroud)

我猜多线模式不会使多线匹配新线,这是我的预期.如何使其匹配任何字符,包括换行符?

javascript regex greasemonkey

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

Python中的网络编程

我应该使用什么库进行网络编程?是sockets最好的,还是有更高级别的界面,这是标准的?

我需要一些非常跨平台的东西(即Linux,Windows,Mac OS X),它只需要能够使用相同的库连接到其他Python程序.

python sockets network-programming

2
推荐指数
5
解决办法
1085
查看次数

找出构建的目标平台?

我如何找到SCons正在构建的平台(Linux,Mac OS X,Windows,&c--与架构无关).

scons

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

引用函数还是创建一个只调用另一个函数的新函数?

def a(something):
    return something*something

#Case I - referencing
b = a
#Case II - creating a new function to call the first
def b(something):
    return a(something)
Run Code Online (Sandbox Code Playgroud)

哪个风格更好?两者都有缺点吗?

python coding-style function

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

C++函数采用值,它们应该在哪里引用

我只是在学习c ++,而且来自c,我在书中看到的一些函数调用让我很困惑:

char a;
cin.get(a);
Run Code Online (Sandbox Code Playgroud)

在C中,这可能不起作用,如果你这样做,就没有办法获得输出,因为你是通过值传递而不是通过引用,为什么这在c ++中工作?引用和去除是隐式的(编译器知道cin.get需要一个指针,所以它被引用)?

c++ pointers reference pass-by-reference pass-by-value

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

重新创建数组,以便数组[x] [y]成为newarray [y] [x]

是否有标准方法从二维数组创建一个新数组,以便在新数组上将[x] [y]作为[y] [x]进行访问?

例如,来自:

[ [00,01,02,03,04,05],
  [10,11,12,13,14,15],
  [20,21,22,23,24,25] ]
Run Code Online (Sandbox Code Playgroud)

会成为:

[ [00,10,20],
  [01,11,21],
  [02,12,22],
  [03,13,23],
  [04,14,24],
  [05,15,25] ]
Run Code Online (Sandbox Code Playgroud)

ruby arrays

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

提高随机数据的"分辨率"

我一直在使用Ruby 的MPD前端,能够播放随机专辑.

album = all[(rand*all.length).floor]
Run Code Online (Sandbox Code Playgroud)

all图书馆中所有专辑的名称数组在哪里,选择要播放的专辑.

然而,我发现它比其他专辑更多地播放一些专辑,有时非常明显(我看到它连续两次播放同一专辑,不止一次,我的图书馆有几百张专辑,所以这应该是统计上的是非常不可能发生的),并在另一端,有很多的专辑从来没有得到发挥.

有什么方法可以获得更随机的数字吗?是否有一个实现更好的随机数算法的宝石?我需要换种子吗?

ruby random

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