我正在尝试编写一个haskell函数,它接受两个整数列表,并生成一个列表,其中包含从两个列表中交替获取的元素.
我有这个功能:
blend xs ys
Run Code Online (Sandbox Code Playgroud)
一个例子:
blend [1,2,3] [4,5,6]
Run Code Online (Sandbox Code Playgroud)
应该回来
[1,4,2,5,3,6]
Run Code Online (Sandbox Code Playgroud)
我的逻辑是将两个列表压缩在一起,生成备用元素对,然后以某种方式将它们从元组中删除.
它将它们从元组中删除,我无法弄清楚如何实现.
我正在努力想出一个正则表达式,它可以将一个字符串拆分成单词,其中单词被定义为由空格包围的字符序列,或者用双引号括起来.我正在使用String#scan
例如,字符串:
' hello "my name" is "Tom"'
Run Code Online (Sandbox Code Playgroud)
应该匹配的话:
hello
my name
is
Tom
Run Code Online (Sandbox Code Playgroud)
我设法匹配双引号括起来的单词:
/"([^\"]*)"/
Run Code Online (Sandbox Code Playgroud)
但是我无法弄清楚如何将空白字符包围起来以获得'你好','是'和'汤姆',同时又不会搞砸'我的名字'.
任何帮助都将不胜感激!
我正在尝试编写一个函数
toPeano :: Int -> Nat
toPeano n =
Run Code Online (Sandbox Code Playgroud)
将整数转换为其Peano数.
我有数据:
data Nat =
Zero |
Succ Nat
deriving Show
Run Code Online (Sandbox Code Playgroud)
例如,
toPeano 0 = Zero
toPeano 1 = Succ Zero
toPeano 2 = Succ (Succ Zero)
Run Code Online (Sandbox Code Playgroud)
等等.
我不知道如何在给定整数的情况下打印出Peano数字.我从未使用过Peano号码,所以对此有任何帮助将不胜感激!
谢谢!
我是编写脚本的新手,我无法弄清楚如何开始使用bash脚本,该脚本将根据预期输出自动测试程序的输出.
我想编写一个bash脚本,它将在一组测试输入上运行指定的可执行文件,例如in1 in2等,对应相应的预期输出,out1,out2等,并检查它们是否匹配.要测试的文件从stdin读取其输入并将其输出写入stdout.因此,在输入文件上执行测试程序将涉及I/O重定向.
将使用单个参数调用该脚本,该参数将是要测试的可执行文件的名称.
我正在努力解决这个问题,所以任何帮助(链接到任何进一步解释我如何做到这一点的资源)将不胜感激.我显然已经尝试过自己寻找,但在这方面并不是很成功.
谢谢!
我很难弄清楚如何将Int列表拆分为包含两个新列表的元组,这样每个元素(从第一个开始)进入第一个列表,第二个元素中的每个其他元素.
像这样:
split [] = ([],[])
split [1] = ([1],[])
split [1,2] = ([1],[2])
split [1,2,3] = ([1,3],[2])
split [1,2,3,4] = ([1,3],[2,4])
Run Code Online (Sandbox Code Playgroud)
我试图以递归方式(使用警卫)并仅使用单个参数xs来完成此操作
这是我的方法,不断收到错误消息:
split :: [Int] -> ([Int],[Int])
split xs | length(xs) == 0 = ([],[])
| length(xs) == 1 = (xs !! 0 : [],[])
| length(xs) == 2 = (xs !! 0 : [], xs !! 1 : [])
| otherwise = (fst ++ xs !! 0, snd ++ xs !! 1) ++ split(drop 2 xs))
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个函数
row :: Int -> Int -> [Int]
row n v
Run Code Online (Sandbox Code Playgroud)
返回一个n整数列表,所有的整数,0除了v第th个元素,需要是一个1.
例如,
row 0 0 = []
row 5 1 = [1,0,0,0,0]
row 5 3 = [0,0,1,0,0]
Run Code Online (Sandbox Code Playgroud)
我是Haskell的新手,对此有很多困难.特别是我无法弄清楚如何重复它0.我理解构建列表的概念[1..n],但我得到了[1,2,3,4,5]
任何有关这方面的帮助将不胜感激.谢谢.
我对C很新,因此使用指针时遇到了很多困惑.
我正在尝试从一串ASCII字符中提取单词.例如,如果我有字符串@@ Hello..world >>,我想从字符串中获取单词"Hello"和"world",并将它们添加到我的链接列表中.
一个字被定义为任何字母序列,每个字最多为64个字节.此外,函数isspace()返回非零值的任何字符都被视为空格.
基本上,我正在使用fscanf从文件中扫描字符串,然后为每个字符串调用我的函数read_words(char*s)以从字符串中获取正确的单词并将它们添加到我的链接列表中以供进一步使用.
这是我的代码似乎抛出了一个与指针有关的错误.
struct node {
char *val;
struct node *next;
int count;
} *words = NULL;
void read_words(char *s)
{
struct node *tmp;
char word[64+1];
int i, check, wordStarted = 0, count = 0;
for (i = 0; s[i] != '\0'; i++)
{
if ((isspace(s[i]) != 0) || !isalpha(s[i]))
{
if (wordStarted == 1)
{
check = check_list(word);
if (check != 1) {
word[count] = '\0';
tmp = malloc(sizeof(struct node));
tmp->val = word;
tmp->count = …Run Code Online (Sandbox Code Playgroud) 我是Haskell的新手,并且在使用递归制作一副牌时遇到了问题.
我有这些定义:
data Suit = Club | Diamond | Heart | Spade
data Value = Two | Three | Four | Five | Six | Seven
| Eight | Nine | Ten | Jack | Queen
| King | Ace
type Card = (Suit, Value)
type Deck = [Card]
instance Show Suit where
show Club = "Club"
show Diamond = "Diamond"
show Heart = "Heart"
show Spade = "Spade"
instance Show Value where
show Two = "Two"
show Three = …Run Code Online (Sandbox Code Playgroud) 我正在尝试在Ruby中编写一个方法,该方法使用带有输入变量的HTML代码的here-document并相应地填充它们.
我的方法是:
calcForm(left, op, right, result)
Run Code Online (Sandbox Code Playgroud)
我正在使用的html标签是
<input type="text" name="left" value="?????">
<select name="op">
<option value="add" ?????>+</option>
<option value="mul" ?????>*</option>
</select>
<input type="text" name="right" value="?????">
=
?????
Run Code Online (Sandbox Code Playgroud)
到处都有问号,我的方法必须填写变量left,op,right和result.
例如,
calcForm(6, "mul", 7, 42)
Run Code Online (Sandbox Code Playgroud)
应该返回字符串:
<input type="text" name="left" value="**6**">
<select name="op">
<option value="add">+</option>
<option value="mul" **selected**>*</option>
</select>
<input type="text" name="right" value="**7**">
=
**42**
Run Code Online (Sandbox Code Playgroud)
因此,"选择"一词应出现在"添加"或"jul"之后,取决于op的值,左侧和右侧的值应填入value ="...",结果应出现在最后一行.
我是ruby的新手,但到目前为止,这是我对这里文档的了解:
the_tags = <<HERE
<input type="text" name="left" value=#{left}>
<select name="op">
<option value="add" #{op}>+</option>
<option value="mul" #{op}>*</option>
</select>
<input type="text" name="right" value=#{right}>
=
#{result}
HERE
def calcForm(left,op,right,result)
Run Code Online (Sandbox Code Playgroud)
我被困在这一点上.我很困惑如何将我的方法calcForm连接到上面的here文档. …
我有这个神秘的功能,我无法理解:
mystery :: [a] -> [[a]]
mystery [] = [[]]
mystery (x:xs) = sets ++ (map (x:) sets)
where sets = mystery xs
Run Code Online (Sandbox Code Playgroud)
以下是一些结果输入:
mystery [1,2] returns [[],[2],[1],[1,2]]
mystery [1,2,3] returns [[],[3],[2],[2,3],[1],[1,3],[1,2],[1,2,3]]
Run Code Online (Sandbox Code Playgroud)
通过查看结果,我可以看到它计算列表中所有可能的数字组合,但不是所有可能的permeations ......我想.
我遇到的麻烦实际上是通过递归并理解函数如何获得这些结果.
我想我得到了它的开始 - >将(1 :)映射到[2],产生[1,2],但是在这一点上我很困惑递归是如何工作的,以及我是否还在映射(1 :)或现在(2 :),到底是什么.
如果有人可以通过逐步解释(使用提供的示例之一)这个函数如何工作(使用地图和设置递归)来帮助我,我将不胜感激!
谢谢!