下面,我创建了一个工作正常的简单switch语句.我想知道如何更改此代码,因此它是switch(c),然后是case 1,case 2,case 3,default.
例: if char is 'w' || char is 'W' return WHITE
我尝试了一个简单的if语句,尽管它成功编译,但它没有给我正确的输出.希望你能帮忙.谢谢!:)
static COLORS color(char c) {
switch(toupper(c)) {
case 'W' : return WHITE;
case 'B' : return BLUE;
case 'R' : return RED;
default : return DEFAULT;
}
}
Run Code Online (Sandbox Code Playgroud) 我想在CVXPY中生成(对角线)块矩阵(最好是稀疏的).
有些块可以是eye(m)或者任何东西,但我有一个块,它是:
from cvxopt import *
import cvxpy as cvx
import numpy as np
import scipy
W = cvx.Variable(m,1)
W_diag = cvx.diag(W)
Run Code Online (Sandbox Code Playgroud)
然后我尝试用块形成块对角矩阵W_diag,例如:
T = scipy.sparse.block_diag((scipy.sparse.eye(m1).todense(), cvx.diag(W))
Run Code Online (Sandbox Code Playgroud)
我收到以下错误:
TypeError:类型不支持转换:(dtype('float64'),dtype('O'))
我能做什么?其他方法?我想T稍后在CVXPY的约束中使用矩阵.
有人可以帮我弄清楚这个声明吗?
int *x()(int)
void (*signal(int, void (*fp)(int)))(int)
Run Code Online (Sandbox Code Playgroud)
我似乎无法使用此处给出的方法解析这些。我知道有什么用这种手段cdecl.org并且也是第一个1是非法的,但我想弄清楚如何分析这些?
我一直在研究 Graham Hutton 的 Haskell 编程。它指出
该函数
map将函数应用于列表的所有元素
好的,有道理。当然符合我对其他语言地图的了解。
练习之一是实施all :: (a -> Bool) -> [a] -> Bool。
有时,如果不是懒惰地完成,一个幼稚的实现可能会无限循环。例如all (<10) [1..]。所以我的第一个实现是:
all p [] = True
all p (x:xs) | not (p x) = False
| otherwise = all' p xs
Run Code Online (Sandbox Code Playgroud)
但后来我想到了用函数组合尝试map和and看什么在Haskell非终止的程序会怎么做:
all' :: (a -> Bool) -> [a] -> Bool
all' p = and . map p
Run Code Online (Sandbox Code Playgroud)
出乎我的意料,all' (<10) [1..]很快就回来了False。我实际上希望map在and应用之前尝试创建一个无限列表- 类似于and …
我需要在 Python 中使用 CVXOPT 或 CVXPY 解决优化问题,但遇到了困难。目标函数是
Minimize Sum(a*x^2+b/x)
Run Code Online (Sandbox Code Playgroud)
受以下限制
5 <= x < 40;
sum(v/d)<=T
Run Code Online (Sandbox Code Playgroud)
其中向量x是优化变量,向量a和b是给定的,并且T是给定的标量。
在我的代码中,我首先定义了两个lambda函数:
func1 = lambda x: x + 2
func2 = lambda x: x * 2
Run Code Online (Sandbox Code Playgroud)
后来在我的代码中,我想创建一个lambda函数,它添加上面两个lambda函数的结果,但是这个函数必须和上面的函数之一一样.也就是说,我想做这样的事情:
func2 = lambda x: func1(x) + func2(x)
Run Code Online (Sandbox Code Playgroud)
请注意,功能名称func2再次出现.
我知道这很愚蠢,还有其他方法可以达到同样的预期效果.然而,这个例子只是我试图实现的一个非常简化的版本.但是,这不起作用,因为它给我错误:
RecursionError:超出最大递归深度
我认为这是因为func2一直在呼唤自己.有没有办法防止这种情况发生?我无法更改名称func1或func2(请注意,这也意味着我无法创建两个具有不同名称但内容相同的新功能).我试过这样的事
func2Copy = lambda x: func2(x)
func1Copy = lambda x: func1(x)
func2 = lambda x: func1Copy(x) + func2Copy(x)
Run Code Online (Sandbox Code Playgroud)
但看到了同样的错误(如预期的那样).我正在尝试做什么?
我有一个总和,其中每个项共享相同的分母,例如a/Z + b/Z + ...。我想把Z. 虽然simplify可以做到,但是时间太长了。我已经尝试collect过了factor,但也没有达到我想要的效果。
有 SymPy 函数可以用于此目的吗?
我需要使用列表理解来生成这样的列表:[“ AaBB”,“ AbBB”,“ AcBB”,“ AdBB”,“ AeBB”,“ AfBB”,“ AgBB”]。但是我一直在创建表达式来解决这个问题
我尝试创建一个列表,其中每个元素都是字符串连接,类似“ A” + x +“ BB”,其中x是从“ a”开始到“ g”结束的一系列字母中的元素
module C where
genList :: [String]
genList = [ "A" ++ x ++ "BB" | x <- ["a" .. "g"]]
Run Code Online (Sandbox Code Playgroud)
因此,我期望生成一个与问题中所要求清单相似的清单。但是相反,我只是遇到了此编译错误:
Prelude> :l exC
[1 of 1] Compiling C ( exC.hs, interpreted )
exC.hs:3:41: error:
• No instance for (Enum [Char])
arising from the arithmetic sequence ‘"a" .. "g"’
• In the expression: ["a" .. "g"]
In a stmt of a list comprehension: x …Run Code Online (Sandbox Code Playgroud) 我真的对Haskell并不陌生,也对如何实现for循环感到困惑,因为我知道我们需要对它们使用递归。
例如,我有一个列表[1,2,2,4,1],想要编写一个将每个都更改2为的函数3。我将如何去做呢?在Java中,我知道我会写以下内容
public void replace_two(List<Integer> ints) {
int i = 0;
for (int x: ints) {
if (x == 2) {
ints.set(i, 3);
}
i++;
}
System.out.println(ints);
}
Run Code Online (Sandbox Code Playgroud)
但是我不确定如何用Haskell重现其他类似内容?
我想在Haskell中使用标准的Prelude(无递归,无列表理解)来过滤元组列表,然后输出整数列表。它应检查包含整数的三元组列表,例如,
[(1,2,3), (2,3,7), (4,5,20)]
Run Code Online (Sandbox Code Playgroud)
并查看元素#1和#2的总和是否等于元素#3。如果是这样,请将元素#3放入列表中,然后输出列表。这是我正在寻找的输出:
>sumOfElements [(1,2,3), (2,3,7), (4,5,9)]
[3,9]
Run Code Online (Sandbox Code Playgroud)
这是我尝试过的:
sumsOfElements :: [(Int, Int, Int)] -> [Int]
sumsOfElements list = filter (\(a,b,c) -> a+b==c) list
Run Code Online (Sandbox Code Playgroud)
这种工作,但它输出满足条件的元组列表。
>sumOfElements [(1,2,3), (2,3,7), (4,5,9)]
[(1,2,3), (4,5,9)]
Run Code Online (Sandbox Code Playgroud)
我不确定如何c从元组中提取该元素并将其附加到输出的新列表中。