标签: pseudocode

什么编程语言最好地弥合了伪代码和代码之间的差距?

当我从现在开始编写代码时,我计划首先将所有内容布置在漂亮,可读的伪代码中,然后围绕该结构实现该程序.

如果我将目前最简单到最难翻译的语言排名,我会说:

Lisp,Python,Lua,C++,Java,C

我知道每种语言都有其优点和缺点,但我专注于伪代码.您使用哪种语言最适合伪代码?我总是喜欢学习新语言.此外,如果您目前使用此技术,我很乐意听到您有关构建实用伪代码的任何提示.

注意:我觉得这是主观的,但每个人的偏好都有明确的答案.我在这里问这个问题是因为SO社区拥有非常广泛的受众,并且很可能建议我不会遇到的语言和技术.

pseudocode

11
推荐指数
3
解决办法
4157
查看次数

计算机编程艺术中的近似等和基本相等之间的差异

我从其他地方得到了这段代码片段.根据网站管理员的说法,代码是从Knuth的计算机编程艺术中挑选出来

由于我没有那本书的副本,我可否知道这两个功能有什么区别?

bool approximatelyEqual(float a, float b, float epsilon)
{
    return fabs(a - b) <= ( (fabs(a) < fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}

bool essentiallyEqual(float a, float b, float epsilon)
{
    return fabs(a - b) <= ( (fabs(a) > fabs(b) ? fabs(b) : fabs(a)) * epsilon);
}
Run Code Online (Sandbox Code Playgroud)

algorithm floating-point pseudocode approximation

11
推荐指数
3
解决办法
1123
查看次数

无法从第3版算法的介绍中获得插入排序.对.我的思维错误在哪里?

我正在通过"算法入门"第3版.解释的第一件事就是插入排序.在页18上有一些伪代码:

A = {5,2,4,6,1,3};

INSERTION-SORT(A)
1 for j = 2 to A.length
2   key = A[j]
4   i = j - 1

5   while (i > 0 and A[i] > key)
6     A[i + 1] = A[i]
7     i = i - 1

8   A[i + 1] = key
Run Code Online (Sandbox Code Playgroud)

它说使用伪代码可以很容易地将它翻译成任何一种语言(C,C++,Java,他们没有提到,但我猜C#也是如此).由于我使用C#编程,我将其翻译为LinqPad.

int[] a = { 5, 2, 4, 6, 1, 3 };

for (var j = 1; j < a.Length; j++)
{
    var key = a[j];

    var i = j - …
Run Code Online (Sandbox Code Playgroud)

algorithm pseudocode insertion-sort

11
推荐指数
1
解决办法
5115
查看次数

勘误表在关于后缀数组的原始论文中?

我正在看原始论文图3中给出的伪代码,它引入了后缀数组"SUFFIX ARRAYS:一种新的在线字符串搜索方法".

我无法弄清楚第4行和第5行的逻辑(从0开始索引).这些内容如下:

否则,如果 ř<P瓦特 - [R ≤一个 POS [N-1] + R 然后
大号 W¯¯ ←Ñ

W是一个长度为"P"的,我们正在寻找和模式rlcp(A[pos[N-1]:], W).问题是,在几乎所有情况下,这lcp将小于'W'的长度.这个条件是为了处理这种情况(我认为),该模式在字典上大于数组中按字典顺序排列的最大后缀,但它根本不测试这个.另一方面,第2和第3行测试是否W小于词典上最小的后缀似乎很有意义

如果升= P瓦特 ≤一个 POS [0] + 1 然后
大号 W¯¯ ←0

我相信原始的行应该是这样的:

否则如果 r <P w r > a Pos [N-1] + r
L W ←N.

唯一W可以大于A[pos[N-1]:]它的方式是它是否lcp比模式的长度短(否则,所有W匹配W都不能更大,只有更小或等于我们共享的东西lcp)和如果之后的字符lcp是更大的W比 …

algorithm pseudocode suffix-array

11
推荐指数
1
解决办法
218
查看次数

伪代码:如何从位和字节解码PNG文件?

我一直试图通过逆向工程我在GIMP中创建的.png文件来解决这个问题.它是4x4像素.我的目标是将原始像素解码出文件,目的是将其反转以进行编码.

这是文件的完整十六进制转储:

89504E47 0D0A1A0A 0000000D 49484452 00000004 00000004  
08020000 00269309 29000000 3F494441 54081D01 3400CBFF  
01CC96B1 134FE120 C0CECDF1 5101FFA5 60000000 000000E0  
403201DF E59286DF 6D000000 00000004 EDB11F00 2E007A21  
93EDB11F 3063136F 4733525A 00000000 49454E44 AE426082  
Run Code Online (Sandbox Code Playgroud)

根据规范,我们从PNG签名开始,这是前8个字节.

89504E47 0D0A1A0A

然后我们重复"块"结构,这个文件有3个"块",标题(IHDR),图像数据(IDAT),然后是结束"块"(IEND).

每个块被安排成:块数据长度的前4个字节,数据类型的接下来的4个字节,然后是实际数据的n个字节,然后是4个字节用于循环冗余校验(CRC)数据类型和实际数据部分.

通过......

0000000D

是块的数据长度(13个字节).

49484452

是块的类型(IHDR).

00000004 00000004 08020000 00

是块的数据(4字节宽度,高度; 1字节位深度,颜色类型,压缩方法,滤波方法,隔行扫描方法).

269309 29

是数据和类型的CRC(设法让代码从这里开始工作.

000000 3F

是下一个块的数据长度(63个字节).

494441 54

是块的类型(IDAT).

081D01 3400CBFF 01CC96B1 134FE120 C0CECDF1 5101FFA5 60000000 000000E0 403201DF E59286DF 6D000000 00000004 EDB11F00 2E007A21 93EDB11F 3063136F

是块的实际数据(压缩和过滤的图像数据).

所以我的实际问题是如何将最后一部分解码为原始像素?

根据 …

algorithm png image bitmap pseudocode

11
推荐指数
1
解决办法
694
查看次数

根据使用频率随机生成字母?

如何根据普通语音中的使用频率随机生成字母?

任何伪代码都很受欢迎,但Java中的实现会非常棒.否则只是朝正确的方向戳一下会很有帮助.

注意:我不需要生成使用频率 - 我确信我可以很容易地查看它.

java random algorithm pseudocode

10
推荐指数
3
解决办法
4304
查看次数

如何以最简单的方式找到某个功率的单位数字

如何找出某个数字的单位数字(例如3 power 2011).我应该用什么逻辑来找到这个问题的答案?

language-agnostic algorithm math pseudocode

10
推荐指数
3
解决办法
4万
查看次数

通过递归在数组中查找最大值

// Find a maximum element in the array.
findMax(A)
   findMaxHelper(A, 0, A.length)

findMaxHelper(A, left, right)
   if (left == right - 1) 
      return A[left]
   else
      max1 = findMaxHelper(A, left, (right + left) / 2)
      max2 = findMaxHelper(A, (right + left) / 2, right)

      if (max1 > max2) 
         return max1 
      else 
         return max2
Run Code Online (Sandbox Code Playgroud)

我很难理解这个伪代码中发生了什么.

有人可以帮助解释每一行发生的事情.在我回答问题之前,我需要先理解这段代码.

我知道函数findMax调用辅助函数findMaxHelper,然后findMaxHelper使用递归.除此之外,我真的不明白.

arrays algorithm search pseudocode

10
推荐指数
1
解决办法
2万
查看次数

求解最短哈密顿路径的扩展

我正在考虑对最短哈密顿路径(SHP)问题的扩展,我找不到解决它的方法.我知道它是NP完全的,但我想我会在这里提出想法,因为我不想简单地强行解决问题.

扩展非常简单:给定具有n个顶点的无向完整加权图,找到具有端点vu的最短哈密顿路径.

因此,bruteforce仍然需要O(n!)时间,因为剩余的n -2个顶点可以在(n -2)中访问!方法.我试图找到一种方法,也许解决这个快.到目前为止,我努力寻找以有益的方式解决这个问题的方法.

有人会想知道如何利用终点顶点的知识吗?优选地与一些伪代码一起解释.找到的解决方案是最佳的.

我想它可以通过整数编程来解决,因为终端节点的知识是相当有限的,并且很容易避免循环,但它不会真正利用问题的组成.

graph pseudocode np-complete shortest-path

10
推荐指数
1
解决办法
4143
查看次数

iPython笔记本中的真正的LaTeX

在iPython中,可以使用MathJax解释的乳胶语法编写方程式.但现在我想在iPython中做其他高档乳胶,比如用一些乳胶包写伪代码.有没有可能在iPython中写这样的东西?

例:

%%latex
\usepackage[]{algorithmicx}
\begin{algorithmic}
   \If {$i\geq maxval$}
      \State $i\gets 0$
   \Else
      \If {$i+k\leq maxval$}
         \State $i\gets i+k$
      \EndIf
   \EndIf
\end{algorithmic}
Run Code Online (Sandbox Code Playgroud)

latex pseudocode ipython-notebook

10
推荐指数
1
解决办法
2024
查看次数