我的任务是确定document.getElementsByName('submitButton')[0].onclick = function(event) {
}
,document.getElementById('calcForm').onsubmit = function (event) {
event.preventDefault();
var num1 = parseFloat(document.getElementsByName('valueA')[0].value) || 0,
num2 = parseFloat(document.getElementsByName('valueB')[0].value) || 0,
arithmeticOperator = document.getElementsByName('arithmeticOperator')[0].value,
output = document.getElementsByName('result');
switch (arithmeticOperator) {
case '+':
result = num1 + num2;
break;
case '-':
result = num1 - num2;
break;
case '*':
result = num1 * num2;
break;
case '/':
if (num2 != 0) {
result = num1 / num2;
} else {
result = 'Cant devide bu 0';
}
break;
default:
result = 'Error';
}
document.getElementsByName('result')[0].innerHTML = result;
};
和x
函数y
将返回z
的参数。我想迭代从tresor
到True
的每个变量的递归,类似于以下命令循环:
0
首先我想检查从0到100的所有100
,然后如果x = 100,设置x = 0和y + 1再次x到100,依此类推z ...
但是,我不知道如何单独返回for z = 0 to 100:
for y = 0 to 100:
for x = 0 to 100:
if tresor x y z:
return (x,y,z)
。
这是我的代码:
x
答案 0 :(得分:3)
一个看起来很像命令循环的实现如下:
crackthe tresor = do -- function crackthe tresor:
z <- [0..100] -- for z = 0 to 100:
y <- [0..100] -- for y = 0 to 100:
x <- [0..100] -- for x = 0 to 100:
guard (tresor x y z) -- if tresor x y z:
return (x, y, z) -- return (x,y,z)
这取决于以下事实:do
符号列表中<-
就像是所有列表元素的循环一样,guard
就像break
一样条件并不满足。
答案 1 :(得分:2)
您可以使用三个数字而不是一个数字的元组返回三个变量,如:
crack tresor = (5,2,13)
答案 2 :(得分:2)
逐步解决方案:
打开你最喜欢的编辑器并粘贴:
module Tresor where
crack tresor =
crackthe tresor 0 0 0
crackthe tresor x y z =
if tresor x y z == False
then if x < 100
then crackthe tresor (x+1) (y) (z)
else if x == 100 && y < 100
then crackthe tresor (x-100) (y+1) (z)
else if y == 100 && x == 100 && z < 100
then crackthe tresor (x-100) (y-100) (z+1)
else (x,y,z)
else (x,y,z)
这只是您的代码(x,y,z)
而不是(x+y+z)
现在将其保存为“tresor.hs”,启动ghci并使用:l tresor.hs
加载它,您现在可以执行以下操作:
λ> crack (\ x y z -> 2*x + y - z -5 == 0)
(2,1,0)
您可以看到tresor
函数2*x+y-z-5==0
,首先找到的解决方案将是(2,1,0)
,意味着x=2, y=1, z=0
有效;)
是使用@chi
提到的列表推导crackThe :: (Int -> Int -> Int -> Bool) -> (Int, Int, Int)
crackThe tresor = head [(x, y, z) | z <- [0..100], y <- [0..100], x <- [0..100], tresor x y z]
λ> crackThe (\ x y z -> 2*x + y - z -5 == 0)
(2,1,0)