我有以下数据类型
data Prop =
Var Name
| Neg Prop
| Conj Prop Prop
| Disy Prop Prop
| Impl Prop Prop
| Syss Prop Prop deriving Show -- if and only if
-- And the following
type Name = String
type State = (Name, Bool) -- The state of a proposition, Example ("P", True), ("Q", True
这是一个Python程序。这是我到目前为止所拥有的。程序当前忽略多嵌套列表,仅计算单层值。检查列表的方法必须是索引。
def DigitCount(lst):
if len(lst)==0:
return 0
val = DigitCount(lst[1:])
if len(lst) > 0:
if type(lst[0]) != list:
if type(lst[0]).isdigit():
return 1 + val
if type(lst[0])==l
我刚开始学习Haskell,我不明白如何在Haskell中编写类似这样的程序,其中包含循环和局部变量。有人能建议这样一个项目如何看待Haskell吗?如何替换第二个周期,因为它涉及局部变量?
#include <iostream>
using namespace std;
int main() {
int n;
int a [100];
cin >> n;
for (int i = 0; i < n; i ++) {
cin >> a[i];
}
int max = 0;
int index = -1;
for (int i = 0;
我正在尝试使用for循环对包含1行和1500多列(特性)的数据集进行迭代。这些特征是包含浮动对象的元组。如果没有足够的信息提供帮助,我可以附加csv文件。我所要做的就是检查该行的每一列下是否存在1。任何包含1的列都将被发送到空列表。
我理解(我猜不像我想的那么好)执行下面的for循环所抛出的错误的核心(不支持的操作数类型for +:'int‘和'tuple'),但不确定为什么它开始迭代数据的子集,然后抛出错误。
for x in range(1,2):
peaks_to_delete = [] #empty list to add column labels (tu
给定(int, int)类型的两个变量,如何检查它们是否表示相同的值?
例如:
var a = (1, 2);
var b = (1, 2);
var c = a == b; // Error CS0019 Operator '==' cannot be applied to operands
// of type '(int, int)' and '(int, int)'
如何在C# 7中进行这种比较?我是应该使用.Equals,还是以其他方式使用?
好吧,看起来我只是对haskell不好,我发誓我一直被这些问题卡住了。无论如何,我需要获取两个列表,压缩它们,然后映射到总和。所以这就是我到目前为止所拥有的,但它不起作用:
zipMapList :: [a] -> [a] -> [a]
zipMapList x y = do
let zipList = zip x y
let mapList = map + zipList
mapList
好的,这是我在尝试加载文件时得到的错误:
HW2.hs:18:25: error:
• Couldn't match expected type ‘(a1 -&g
我正在尝试编写两个函数,它们接受一个整数并返回一个元组。我可以非常接近想要返回的内容,但我返回的内容中有多个括号。例如,我希望rec_range(5)返回(0,1,2,3,4)而不是(0,1),2),3),4)。
下面是我正在编写的两个函数
def rec_range(n):
'''Takes a natural number n and returns a tuple of numbers starting
with 0 and ending before n.
Int-->Tuple'''
我有一个元组的折叠列表:
[[(16,)], [(2,)], [(4,)]]
我想总结一下里面的数字,但没有。
我试过了
res = sum(*zip(*resultsingle))
res = sum(map(sum, resultsingle))
但我明白错误
TypeError: unsupported operand type(s) for +: 'int' and 'tuple'
我遗漏了什么?
我有一个包含两个数字列表的元组- (1,2,3,4,5,6,7,8)
我需要将每个列表中相应的数字对相加。ie (1+5),(2+6)等。输出一个列表如6,8,10,12。它也应该适用于列表中的任何数量的元素(2个5的列表,2个6的列表等)。
我一直在尝试一个使用"map sum .transpose“的函数,但是似乎不能得到正确的类型(因为它在一个元组中)。我在这里找到了一段代码,它适用于列表列表,但不知道如何对列表元组执行相同的操作(可能吗?)。当我尝试更改"a“的类型或使用Int时,我编译为类型不匹配错误。
tupSums :: Num a => [[a]] -&g
type a = [(Int,Int,Int,Int)]
fun:: a -> Int
func [a,b,c,d] = ?
我有一个这样的元组列表,我需要的是应用list comprehensions或pattern matching。例如,取和或过滤只除以两个数字..。我只想要一个如何访问值的开始,或者是对这个元组列表的理解
我希望对列表的前三个元素进行排序,但保持其他元素不变。我不想使用任何库函数,因为我是Haskell的新手。 这就是我到目前为止所知道的: {-# OPTIONS_GHC -Wincomplete-patterns #-}
sort2 (x, y) = if x > y then (y,x) else (x,y)
sort3 (x,y,z)
| x > y && y > z = (z,y,x)
| x > z && z > y = (y,z,x)
| y > x && x >
一切都正常,除了最后几行,我得到了一个类型错误。不确定什么数据类型需要修改。有什么想法吗?该程序只是简单地滚动两个骰子,并计算100卷的平均数量。
#two dice roll with average of rolls
import random
total=[]
def roll():
for i in range(100):
roll_d=random.randint(1,6), random.randint(1,6)
total.append(roll_d)
print(roll_d)
def main():
r
最后,我想把这个解决方案推广到任意长度的元组中。我认为递归是必要的,但我一直无法做到。
def combineRanges(maxValues) :
for x in range(0, maxValues[0]) :
for y in range(0, maxValues[1]) :
for z in range(0, maxValues[2]) :
print (str(x) + '-' + str(y) + '-' + str(z));
m = (6,9,20);
co
尝试弄清楚如何创建一棵树,其中每个节点的值都包含子节点的总和 data Tree a = LEAF a | NODE a (Tree a) (Tree a)
deriving (Show, Read, Eq)
addNode:: Num a => Tree a -> Tree a
addNode(NODE x (LEAF a) (LEAF b)) = (NODE (a+b) (LEAF a) (LEAF b))
addNode(NODE x left right) = (NODE x (addNode(left)) (addNode(righ