小编caf*_*caf的帖子

在Scheme中生成项链的简单算法很好?

长度为n的k-ary项链是长度为n的有序列表,其项目是从长度为k的字母表中绘制的,这是按字典顺序排列的第一个列表,在所有列表中共享旋转下的排序.

示例:(1 2 3)和(1 3 2)是字母{1 2 3}中长度为3的项链.

更多信息:http: //en.wikipedia.org/wiki/Necklace_(bizbinicsics)

我想在Scheme(或你选择的Lisp)中生成这些.我找到了一些论文......
野人 - 一种生成项目的新算法
Sawada - 在恒定摊销时间生成手镯
Sawada - 生成带有禁止的子串的项链
......但是它们中的代码对我来说是不透明的.主要是因为他们似乎没有传递字母或所需的长度(n).我正在寻找的方案程序是形式(项链n'(ab c ...)).

通过首先生成k ^ n个列表然后过滤掉旋转,我可以很容易地生成这些.但它的内存效率非常低......

谢谢!

scheme combinatorics necklaces

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

如何使用rspec存根/模拟对命令行的调用?

我正在尝试从命令行工具测试输出.如何使用rspec"伪造"命令行调用?执行以下操作不起作用:

it "should call the command line and return 'text'" do
  @p = Pig.new
  @p.should_receive(:run).with('my_command_line_tool_call').and_return('result text')
end
Run Code Online (Sandbox Code Playgroud)

如何创建该存根?

ruby command-line rspec

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

USB端口速度Linux

如何以编程方式确定运行Linux内核的嵌入式设备中的USB端口速度?

usb linux-kernel embedded-linux

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

C memcpy()函数

有没有办法计算函数的大小?我有一个指向函数的指针,我必须使用memcpy复制整个函数.我必须malloc一些空间并知道memcpy的第三个参数 - 大小.我知道这 sizeof(function)不起作用.你有什么建议吗?

c memory function-pointers memcpy linux-kernel

5
推荐指数
3
解决办法
3428
查看次数

如何返回复杂的返回值?

目前我正在编写一些汇编语言程序.正如一些惯例所说,当我想向调用者返回一些值时,比如一个整数,我应该在EAX寄存器中返回它.现在我想知道如果我想返回一个float,一个double,一个枚举,甚至一个复杂的结构.如何返回这些类型的值?

我可以想到在EAX中返回一个指向内存中真实值的地址.但这是标准方式吗?

非常感谢~~~

c c++ x86 assembly calling-convention

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

处理多个recv()调用和所有可能的场景

我是C的新手并编写TCP服务器,并且想知道如何从发送服务器将响应的命令的客户端处理recv().为了这个问题,我们只说头是第1个字节,命令标识符是第2个字节,有效载荷长度是第3个字节,然后是有效载荷(如果有的话).

recv()这些数据的最佳方法是什么?我想调用的recv()在第3个字节到缓冲区中读取,检查以确保标题和指令标识符有效,然后检查有效载荷长度与有效载荷长度的长度再次调用的recv(),这增加了回到前面提到的缓冲区.阅读Beej的网络文章(尤其是本节在这里:http://beej.us/guide/bgnet/output/html/singlepage/bgnet.html#sonofdataencap),然而,他建议用"足够大的数组两[最大"数据包"处理诸如获取下一个数据包之类的情况.

处理这些类型的recv()的最佳方法是什么?基本的问题,但我想高效地实现它,处理可能出现的所有情况.提前致谢.

c networking tcp recv

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

在CUDA中使用全局与常量内存

嘿那里,我有以下代码:

#if USE_CONST == 1
    __constant__ double PNT[ SIZE ];    
#else
    __device__ double *PNT;
#endif
Run Code Online (Sandbox Code Playgroud)

稍后我有:

#if USE_CONST == 0
    cudaMalloc((void **)&PNT, sizeof(double)*SIZE);
    cudaMemcpy(PNT, point, sizeof(double)*SIZE, cudaMemcpyHostToDevice);
#else
    cudaMemcpyToSymbol(PNT, point, sizeof(double)*SIZE);
#endif
Run Code Online (Sandbox Code Playgroud)

point在之前的代码中定义的地方.当处理USE_CONST=1所有事情按预期工作时,但在没有它的情况下工作,而不是工作.我通过我的内核函数访问数组

PNT[ index ]

这两种变体之间的问题在哪里?谢谢!

memory cuda

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

如何取消子POSIX线程

// threadA.c
int main() {
    int res;
    pthread_t a_thread;
    void *thread_result;

    res = pthread_create(&a_thread, NULL, thread_function, NULL);
    if (res != 0) {
        perror("Thread creation failed");
        exit(EXIT_FAILURE);
    }
    sleep(3);
    printf("Canceling thread...\n");
    res = pthread_cancel(a_thread);
    if (res != 0) {
        perror("Thread cancelation failed");
        exit(EXIT_FAILURE);
    }
    printf("Waiting for thread to finish...\n");
    res = pthread_join(a_thread, &thread_result);
    if (res != 0) {
        perror("Thread join failed");
        exit(EXIT_FAILURE);
    }
    exit(EXIT_SUCCESS);
}

void *thread_function(void *arg) {
    int i, res, j;
    res = pthread_setcancelstate(PTHREAD_CANCEL_ENABLE, NULL);
    if (res != 0) …
Run Code Online (Sandbox Code Playgroud)

c linux multithreading pthreads

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

Linux如何优先考虑自定义信号处理程序?

我们上周进行了一次演讲,其中涉及操作系统(在本例中为Linux,在本例中我们的学校服务器使用SUSE Linux 11)如何处理中断.需要注意的是,对于大多数信号,您可以捕获中断并定义自己的信号处理程序来运行而不是默认值.我们用一个例子来说明这一点,我发现起初我觉得有趣的行为.这是代码:

#include <stdio.h>
#include <signal.h>

#define INPUTLEN 100

main(int ac, char *av[])

{
  void inthandler (int);
  void quithandler (int);
  char input[INPUTLEN];
  int nchars;

  signal(SIGINT, inthandler);
  signal(SIGQUIT, quithandler);

  do {
    printf("\nType a message\n");
    nchars = read(0, input, (INPUTLEN - 1));
    if ( nchars == -1)
      perror("read returned an error");
    else {
      input[nchars] = '\0';
      printf("You typed: %s", input);
    }
  }
  while(strncmp(input, "quit" , 4) != 0); 
}

void inthandler(int s)
{
  printf(" Received Signal %d ....waiting\n", s);
  int i …
Run Code Online (Sandbox Code Playgroud)

c linux signals

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

linux时间结果没有写入文件

我正在使用debian.使用time命令运行我的程序,并希望将时间结果写入文件,执行如下操作:

时间./myprog> out.asc

./myprog的输出写入out.asc但不是时间的结果.有没有办法把时间的输出发送到out.asc?感谢名单!

linux time sh

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