小编Jon*_*han的帖子

Scheme如何返回多个值?

我注意到几乎所有的scheme函数都只能返回一个列表作为输出.

在下文中,我想返回邻居的所有相邻节点的多个值.

 (define (neighbors l w)
   (if (and (= 1 l) (= 1 w))
     (list (and (l (+ 1 w))) (and (+ 1 l) w)))) ; how to output 2 or more values?
Run Code Online (Sandbox Code Playgroud)

在这种情况下,我首先测试节点是否在拐角处,如果是,如果我在(1,1),则基本返回坐标的2个值(l和w + 1),(l + 1和w) )返回我(1,2)和(2,1)

当节点在边缘附近只有1个邻居时也是如此,在这种情况下,我将有3个值.

当没有边缘附近时,我将有4个返回值.

我试图使用cons, append, list, display, write它们似乎没有其他值.我需要这个作为这个问题的子功能.我应该如何实现它,以便我可以传递返回值并递归使用它来返回所有相邻节点?

编辑:我找到了答案:使用关键字" values"返回多个值.例:

(define (store l w)
  (values (write l)
          (write w)
          (newline)
          (list (+ 1 w) l)
          (list w (+ 1 l))))
Run Code Online (Sandbox Code Playgroud)

algorithm scheme return-value

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

如何在没有GO按钮的情况下创建下拉列表超链接?

我只想创建一个下拉列表,每当我在其中选择一个新值时,它将带我到一个新的网页.我不想让用户点击"GO"按钮转到页面.只需选择并调用操作即可.我怎么能这样做?

<form>
<p align="center"><b>Select a Site </b>
<select id="setit" style="color: #0000FF" size="1" name="test">
<option value="">Select one</option>
    <option value="http://www.altavista.com">AltaVista</option>
    <option value="http://www.yahoo.com">Yahoo</option>
     <option value="http://www.google.com">Google</option></select>
     <input type="button" value="Go"
onclick="window.open(setit.options[setit.selectedIndex].value)">
</p></form>
Run Code Online (Sandbox Code Playgroud)

例如,这将有GO按钮,需要单击GO才能转到新页面.我不想要GO按钮.

有任何想法吗?

html drop-down-menu

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

如何将int/char传递给system()Linux系统调用

好吧,它可能听起来很愚蠢,但我无法想出一种方法将int/char传递给这个系统调用

这是我希望它如何工作

system ("cal %d %d", month, year);
Run Code Online (Sandbox Code Playgroud)

我希望这会在终端上给我以下命令" cal 3 2009"

终端将向我显示2009年3月的日历.

但编译器抱怨它有太多的论点

有任何想法吗?我需要让这个方法system ("cal ")给我一个动态日历.

注意:cal接受论证cal month year

c linux parameter-passing

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

VHDL如何将带有std_logic信号的std_logic_vector一起添加?

我有

douta   : in    std_logic_vector (3 downto 0);
doutb   : in    std_logic_vector (3 downto 0);
c0  : in    std_logic;
f1  : in    std_logic;
f0  : in    std_logic;
res : out   std_logic_vector (3 downto 0);
Run Code Online (Sandbox Code Playgroud)

我正在尝试构建一个简单的ALU,这个ALU提供的功能之一是什么时候

f1 and f0 both = 1 
res = douta plus b plus c0
Run Code Online (Sandbox Code Playgroud)

所以我写了

f1 = '1' and f0 = '1' then res <= douta + doutb + c0;
Run Code Online (Sandbox Code Playgroud)

但显然它不是要去工作,因为的数据类型douta,并doutbstd_logic_vector那里为co仅仅是std_logic

编译时我遇到了这个错误

' Error 603 line 34 …
Run Code Online (Sandbox Code Playgroud)

vhdl

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

C中的算法比较,有什么区别?

#define IMGX 8192
#define IMGY 8192
int red_freq[256];
char img[IMGY][IMGX][3];

main(){ 

int i, j;
  long long total;
  long long redness;

  for (i = 0; i < 256; i++) 
    red_freq[i] = 0;

  for (i = 0; i < IMGY; i++) 
    for (j = 0; j < IMGX; j++) 
      red_freq[img[i][j][0]] += 1;

  total = 0;
  for (i = 0; i < 256; i++) 
    total += (long long)i * (long long)red_freq[i];

  redness = (total + (IMGX*IMGY/2))/(IMGX*IMGY); 
Run Code Online (Sandbox Code Playgroud)

当你将第二个for循环替换为时,有什么区别

for (j = 0; j < …
Run Code Online (Sandbox Code Playgroud)

c iteration algorithm memory-management

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

计划如何在一个条款中测试2个条件?

我需要创建一个子函数,它将返回我所有相邻节点,这是我在Scheme中的这个问题所需要的.我是计划新手,不知道如何将两个条件合并为一个测试用例?

基本上我的算法是测试节点是否在边缘.这种情况我使用5x5网格.

如果两个节点都在拐角处意味着两者都等于1或5,那么我将只有2个相邻节点.如果只有一个节点被击中边缘,我将有3个节点返回值.如果节点周围没有边缘,我将有4个节点返回.

我的问题是如何将2个测试用例放在一个子句中?

(define (neighbors l w)
  (if (= 1 l) and (= 1 w)
      (display l w))) --at top left corner
Run Code Online (Sandbox Code Playgroud)

在这里,我想评估l和w是否都等于1.现在这不起作用,因为我不能在语法中使用"和"或"或"这样的关键字,也不能使用&或+来组合它们.有任何想法吗 ?或者我应该做点什么?

scheme

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

"对于Scheme中的每个"或"每个"关键字

Scheme中是否有for循环或for each循环?

我一直在搜索,发现有一个关键字" every",但我正在使用的方案编译器语言没有预先构建的这个函数.这是它想要做的,它可以在这里找到

(define (first-letters sent)
  (every first sent))

> (first-letters '(here comes the sun))
(H C T S)
Run Code Online (Sandbox Code Playgroud)

我该如何重写这个every功能?使用其他预定义的功能.我正在使用的语言是DrScheme - 编程语言要点(第3版)

我在DrScheme中尝试了所有预先安装的编译器,它们都没有可以编译该every函数.

有任何想法吗 ?

scheme loops racket

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

需要在C中使用自定义Linux/UNIX命令行utlity"cal"提示

好的我需要让这个程序cal并排显示" "3个月(一个月前和一个月后),而不是在任何Linux/UNIX中显示一个月.我让它使用" system(customCommand)"三次显示3个日历; 但那时它不是并排的.

我得到了一些使用以下系统调用的提示:

close(..) pipe(..) dup2(..) read(..) and write(..)
Run Code Online (Sandbox Code Playgroud)

我的问题是我应该从什么开始?我是否需要创建子进程而不是将其捕获pipe(..)

如何并排显示三个日历.

恩.

    February 2009          March 2009             April 2009
 S  M Tu  W Th  F  S    S  M Tu  W Th  F  S    S  M Tu  W Th  F  S
 1  2  3  4  5  6  7    1  2  3  4  5  6  7             1  2  3  4
 8  9 10 11 12 13 14    8  9 10 11 12 13 14    5  6 …
Run Code Online (Sandbox Code Playgroud)

c linux operating-system system

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

Scheme如何获取列表中的第一项?

说我想要列出第一项 '(4 3 1) '(5 6 8)

我想要这样的东西

(first '(4 3 1) '(5 6 8))
Run Code Online (Sandbox Code Playgroud)

应该给我第一个项目

(4 3 1) 
Run Code Online (Sandbox Code Playgroud)

结果.在我可以调用的方案内置函数中是否有这样的东西?

汽车不起作用,因为它只返回1列表中的第一项

list-ref不起作用,上面同样的原因,在列表中返回1个项目

我怎样才能做到这一点?如果我需要自己写这个第一个功能?

scheme list

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