我正在尝试stack
使用定点组合器在lambda演算中定义数据结构.我试图定义两个操作,insertion
以及removal
元素,所以,push
和pop
,但是我能够定义的唯一一个,插入,不能正常工作.删除我无法弄清楚如何定义.
这是我对push
操作的方法,我的定义是stack
:
Stack definition:
STACK = \y.\x.(x y)
PUSH = \s.\e.(s e)
Run Code Online (Sandbox Code Playgroud)
我的堆栈初始化为一个元素来指示底部; 我在0
这里使用:
stack = STACK 0 = \y.\x.(x y) 0 = \x.(x 0) // Initialization
stack = PUSH stack 1 = \s.\e.(s e) stack 1 = // Insertion
= \e.(stack e) 1 = stack 1 = \x.(x 0) 1 =
= (1 0)
Run Code Online (Sandbox Code Playgroud)
但是现在,当我尝试插入另一个元素时,它不起作用,因为我的初始结构已被解构.
如何修复STACK
定义或PUSH
定义,以及如何定义POP
操作?我想我将不得不应用组合器,以允许递归,但我无法弄清楚如何做到这一点.
参考: …
lambda functional-programming combinators lambda-calculus y-combinator
我需要索引访问我的std::vector
,因此我必须检查索引是否已经可用于首先删除它们,然后设置一个新值.
这是我的setter函数:
void SetVector(int position, int value) {
std::vector<int>iterator it = testVector.begin();
// need a check here
testVector.insert(it-testVector.begin()+position, value);
}
Run Code Online (Sandbox Code Playgroud)
或者这是我的需求错误的C++集合?(应该动态增长,所以std:array
不可能).可以使用std::map
但也许它也可能std::vector
.
我正在用C++构建一个客户端/服务器对,我用它winsock
来进行通信.但是,我无法在C++中找到任何可以实现某些内容的库,而不是直接从客户端向服务器发送请求,而是存储请求,稍后将与服务器进行通信.
有没有任何方法或库可以将请求发送到像经纪人这样的东西,反之亦然?将存储请求的东西,然后将与服务器通信.这些是我已经使用的库:
#pragma comment( linker, "/defaultlib:ws2_32.lib")
#include <WinSock2.h>
#include <winsock.h>
#include <stdio.h>
#include <iostream>
#include <string.h>
#include <windows.h>
#include <ws2tcpip.h>
#include <fstream>
using namespace std;
#define HOSTNAME_LENGTH 20
#define RESP_LENGTH 40
#define FILENAME_LENGTH 20
#define REQUEST_PORT 5001
#define BUFFER_LENGTH 1024
#define TRACE 0
#define MSGHDRSIZE 8 //Message Header Size
Run Code Online (Sandbox Code Playgroud) 我正在0, 1, ..., (N - 1)
按顺序逐个阅读这些数字.我的目标是只使用O(1)
空格来找到这个给定排列的词典编纂索引.
之前曾问过这个问题,但我能找到的所有算法都使用了O(N)
空间.我开始认为这是不可能的.但是,通过减少分配数量,这对我帮助很大.
我根据本网站上的代码实现了Dijkstra的算法.基本上,我有许多节点(比如10000),每个节点可以有1到3个连接到其他节点.
节点在3d空间内随机生成.连接也是随机生成的,但它总是首先尝试找到与其最近邻居的连接,然后慢慢增加搜索半径.每个连接的距离为1.(我怀疑这一点很重要,但这只是背景).
在这种情况下,该算法仅用于查找从起始点到所有其他节点的最短跳数.它适用于10,000个节点.我遇到的问题是,随着节点数量的增加,比如200万,我在尝试构建图形时会耗尽所有计算机内存.
有没有人知道实现算法以减少内存占用的另一种方法,还是有另一种算法使用更少的内存?
我想为命令设置别名:
expect -c 'spawn ssh usr@ip -p 57022 ; expect password ; send "pass\n" ; interact'
Run Code Online (Sandbox Code Playgroud)
但来自alias alias_name=""
和来自命令的引用并不喜欢彼此.
我试图与组合'
,"
和',但所有这些失败.我怎样才能做到这一点?
任何人都可以建议如何继续 maven 发布:从失败的那一点开始准备?
我尝试使用 resume 命令,但它不会从失败点继续。
考虑一个由车轮系统制成的锁.每个轮子按顺序有26个字母,每个轮子都用'a'
.如果向上移动一个轮子,该轮子的显示将移动到字母表的下一个字母; 另一方面,向下移动一个轮,将显示切换到字母表的前一个字母.例如:
['a'] -> UP -> ['b']
['b'] -> DOWN -> ['a']
...
['z'] -> UP -> ['a']
['a'] -> DOWN -> ['z']
Run Code Online (Sandbox Code Playgroud)
只需轻弹就可以将同一方向的轮子的任何连续子序列移动.这与以单一运动方式移动子序列的所有轮子具有相同的效果.例如,如果目标串是'zzzzzzzzz'
,单一的运动,改变'a'
到'z'
,将车轮的整个序列改变从'a'
给'z'
,从而到达目标串-打开锁.
如何确定打开锁的最小移动次数?这个问题有动态解决方案吗?该算法必须产生以下结果:
Target string | # moves
______________________________ __________
1 | abcxyz | 5
2 | abcdefghijklmnopqrstuvwxyz | 25
3 | aaaaaaaaa | 0
4 | zzzzzzzzz | 1
5 | zzzzbzzzz | 3
Run Code Online (Sandbox Code Playgroud)
案例1,目标abcxyz
:
aaa[aaa] -> DOWN -> aaazzz
aaa[zz]z -> DOWN …
Run Code Online (Sandbox Code Playgroud) 与scanf
一个被允许跳过匹配令牌,简单地添加*
到图案,如下所示:
int first, second;
scanf("%d %*s %d", &first, &second);
Run Code Online (Sandbox Code Playgroud)
有没有相同的方法std::cin
?像(当然,节省额外变量的使用):
int first, second;
std::cin >> first >> `std::skip` >> second;
Run Code Online (Sandbox Code Playgroud)