我注意到几乎所有的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) 我只想创建一个下拉列表,每当我在其中选择一个新值时,它将带我到一个新的网页.我不想让用户点击"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按钮.
有任何想法吗?
好吧,它可能听起来很愚蠢,但我无法想出一种方法将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
我有
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,并doutb在std_logic_vector那里为co仅仅是std_logic
编译时我遇到了这个错误
' Error 603 line 34 …Run Code Online (Sandbox Code Playgroud) #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) 我需要创建一个子函数,它将返回我所有相邻节点,这是我在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中是否有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函数.
有任何想法吗 ?
好的我需要让这个程序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) 说我想要列出第一项 '(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个项目
我怎样才能做到这一点?如果我需要自己写这个第一个功能?