我编写了以下代码来加密文本(它远未完成):
#include <iostream>
#include <string>
using namespace std;
class Device {
string input;
string encrypted;
string decrypted;
string key;
int keysize;
public:
Device(string inp) {
input = inp;
keysize = 0;
}
int give_key(string ikey) {
key = ikey;
keysize = key.size();
}
string encrypt() {
if(key != "") {
for(int enc = 0, keyiter = 0; enc < input.size(); ++enc, ++keyiter) {
cout << "Starting loop #" << enc << endl;
if(keyiter == keysize) keyiter = 0; //Reset key …Run Code Online (Sandbox Code Playgroud) 我正在阅读本教程:http: //www.catonmat.net/blog/simple-haskell-tcp-server/ 了解Haskell网络模块的基础知识.他写了一个名为sockHandler的小函数:
sockHandler :: Socket -> IO ()
sockHandler sock = do
(handle, _, _) <- accept sock
hSetBuffering handle NoBuffering
forkIO $ commandProcessor handle
sockHandler sock
Run Code Online (Sandbox Code Playgroud)
接受连接,并将其分配给新线程.在打破代码的同时,他说:
"接下来我们使用hSetBuffering将客户端套接字句柄的缓冲模式更改为NoBuffering,因此我们没有缓冲惊喜."
但是没有详细说明这一点.他在谈论什么惊喜?我谷歌了,看到了一些安全文章(我猜测与被拦截的缓存有关),但似乎与本教程的内容没什么关系.
有什么问题?我想到了,但我认为我没有足够的网络经验来填补空白.
谢谢.
我决定尝试State Monad尝试清理我已经开始的一些项目.我遇到了命名/分区问题.
如果我有以下对象:
data Obj = Player { oPos :: Point }
data World = World { wKeys :: [Key], wPlayer :: Obj }
Run Code Online (Sandbox Code Playgroud)
我可能有一个方便的功能,如:
setPlayer :: Obj -> World -> World
setPlayer o w = w{wPlayer = o}
Run Code Online (Sandbox Code Playgroud)
和匹配的状态操作,如:
setPlayerW :: Obj -> WorldState ()
setPlayerW o = get >>= put . setPlayer o
Run Code Online (Sandbox Code Playgroud)
它使用其他便利功能; 为了方便.
对于这样的事情,典型的命名约定是什么?我用W贴了国家版,但这有点难看.
并且"状态版本"是否典型地与单独文件中的"对象版本"隔离?
我完全错了吗?有没有更好的设置,然后我可能需要2个不同版本的任何操作?
在使用时dissoc,我注意到它有一个单一的版本似乎没有做任何事情.我检查了源代码,结果证明它只是身份函数:
(defn dissoc
([map] map)
([map key]
(. clojure.lang.RT (dissoc map key)))
([map key & ks]
(let [ret (dissoc map key)]
(if ks
(recur ret (first ks) (next ks))
ret))))
Run Code Online (Sandbox Code Playgroud)
然后我注意到它disj有一个一元版本以及相同的定义.
一元版本的目的是什么?我可以看到的唯一潜在用途可能是它们一起使用时apply,但我不知道这有什么用处.为什么他们conj和assoc同行没有类似的一元版本呢?
我想知道是否有人熟悉readHaskell中的Prelude 函数。
该函数的类型如下。
Read a => String -> a
Run Code Online (Sandbox Code Playgroud)
有人可以通过一些示例向我解释如何使用此函数以及将String强制转换为哪种类型吗?
谢谢
我是python中的新手,我想打印一个范围,但是当我运行程序时,打印任何东西.
dec_value=int(input("ENTER THE DECREMENTED VALUE"))
for i in range(100,0,dec_value):
print(i)
Run Code Online (Sandbox Code Playgroud)
有人可以告诉我我做错了什么吗?
以下方法中最坏情况的Big-O表示法是什么:
/**
* @best-case O(1)
* @worst-case O(?)
*
* {@link NTree#contains(Comparable)}
*/
public boolean contains(T elem) {
if (this.data.compareTo(elem) == 0)
return true;
for(NTree<T> t : children) {
if(t != null)
return t.contains(elem);
}
return false;
}
Run Code Online (Sandbox Code Playgroud)
这是n元的通用树,每棵树都有n个孩子。最好的情况是elem等于root.data。
但是我不确定在最坏的情况下我们必须经历树上的每个孩子。
我正在尝试编写一个lazy seq来为给定的输入int 生成Collatz序列.
我喜欢这个函数,因为它是如此干净地映射到数学定义:
(defn collatz
"Returns a lazy seq of the Collatz sequence starting at n and ending at 1 (if
ever)."
[n]
(letfn [(next-term [x]
(if (even? x)
(/ x 2)
(inc (* 3 x))))]
(iterate next-term n)))
Run Code Online (Sandbox Code Playgroud)
问题在于,由于Collatz序列的行为方式,这会产生无限的seq:
(take 10 (collatz 5))
=> (5 16 8 4 2 1 4 2 1 4)
Run Code Online (Sandbox Code Playgroud)
我可以通过添加来轻松地删除循环(take-while #(not= 1 %) ...),但是1 是序列的一部分.我认为所有其他的方法都会在一个丑陋之后修剪周期,并使Collatz序列的数学核心模糊不清.
(我已经考虑将看到的值存储在一个原子中并在take-while谓词中使用它,或者只是在一个原子中存储一个标志以达到类似的效果.但我觉得有一些更好,更漂亮,更少侵入性的方式来做我所做的事情.想要在这里.)
所以我的问题是:在无限序列中检测和修剪周期的干净方法是什么?或者,我可以以某种方式(可能使用for)生成我的懒惰seq,当它达到1(包括)时自动修剪?
我已经写了一个C程序,在其中声明了一个函数reverse(int i)。当我编译并运行该程序时,尽管传递了两个这样的参数,它仍然可以正常运行reverse((i++, i))。为什么这不会引起语法错误?reverse期待一个论点。
#include <stdio.h>
void reverse(int i);
int main()
{
reverse(1);
}
void reverse(int i)
{
if (i > 5)
return ;
printf("%d ", i);
return reverse((i++, i));
}
Run Code Online (Sandbox Code Playgroud) I'm writing a Linked List implementation and want to create a foreach function. I want to have two versions of this function: one for internal use that iterates over the nodes themselves, and one for the end user that iterates over the data held in the nodes. Since the code will be nearly the same for each, I'd like to define the second version in terms of the first. Right now, I have two typedefs for the functions used …