问题标签 [pseudocode]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
203 浏览

compiler-construction - .FRM .ARC .4GO .4GI 是便携式 p 代码吗?

假设编译器和运行器来自相同的版本,它们是否可以在任何平台(即 UNIX、LINUX、WINDOWS、DOS 等)上执行而无需重新编译源代码?

0 投票
2 回答
207 浏览

refactoring - 重构我的 if 语句代码

我已经把这段代码弄乱了一个多小时,试图以不同的方式重新排列它。有没有更简单的写法?

0 投票
1 回答
4123 浏览

recursion - 如何使用柏林噪声或其他算法点对点闪电“螺栓”?

我遇到的 perlin 噪声生成的每个实现都是用于生成 2D 地形等。我在任何地方都找不到一个像样的点对点闪电生成示例。

是否有许多其他形式的产生“闪电”?有人告诉我这就是我想要的。分叉闪电或 2D 树存在哪些算法(我可以将其颠倒过来用于闪电)

我使用多种语言工作,因此伪代码中的示例也可以。

0 投票
2 回答
1116 浏览

pseudocode - 简单的伪代码问题

我对伪代码有点陌生。我明白代码在说什么,但很难把这些部分放在一起。我应该如何思考才能理解这段代码在做什么:

假设 a1, a2, . . . , ak 是一个由 k 个数字组成的数组。以下代码片段有什么作用?简要说明原因。假设所有缩进的行都属于循环内。

0 投票
3 回答
459 浏览

pseudocode - 简单的伪代码问题

我是伪代码的新手,我无法将所有部分放在一起:

这是一个名为 foo 的函数的定义,它的输入是两个整数和一个整数数组a[1] ... a[n]

假设输入整数是k=2并且m=5输入数组包含[5, 6, 2, 3, 4, 8, 2]。Foo 返回什么值?使用求和符号,给出 Foo 计算的通用公式。

这个让我头疼。这是我到目前为止所做的:

第 2 行有三个条件语句:

  • 如果 k<1 // 如果 2<1..这是错误的
  • if m>n // 如果 5 大于数组中值的数量,即 7,则为 false
  • 如果 k>m // 如果 2>5,这是错误的

所以这个函数将显示第 3 行。第 3 行说:

  • 返回a[k]这是a[2]数组的第二个值,即 6。所以取 6 并将其添加到(2+1, 5, a[1].....,a[n])

我在那里做的正确吗?如果是这样,我怎么知道a[n]是什么?我应该找到那个吗?这一切的最终结果是什么?

0 投票
2 回答
356 浏览

algorithm - 从随机数序列中选择大小相等的数字组

假设我有一个 100 个数字的列表,我想将它们分成 5 个组,每个组中的总和最接近数字的平均值。

最简单的解决方案是对一百个数字进行排序并取最大数字并继续添加最小数字,直到总和超过平均值。

显然这不会带来最好的结果。我想我们可以使用 BFS 或 DFS 或其他一些搜索算法。喜欢 A* 以获得最佳结果。

有没有人有一个简单的解决方案?伪代码已经足够好了。谢谢!

0 投票
6 回答
46246 浏览

c++ - 在 C++ 中创建正弦查找表

如何用 C++ 重写以下伪代码?

我需要创建一个 sine_table 查找表。

0 投票
3 回答
1185 浏览

pseudocode - 计算 ISBN 的校验位

这实际上不是家庭作业,我只是在下周开始计算机科学之前查看离散数学书中的一些问题。

无论如何,其中一个问题要求我编写一个程序来执行这个算法(它解释了)。我坚持的部分是如何获取 9 位数字并将其“拆分”为单个整数,因此可以对每个数字执行计算。

我想把这个数字除以 100,000,000,然后取它的整数值来得到第一个数字,但我不知道如何得到其他数字。

如果这是在 PHP 或其他东西中,我可以使用explode(),但我想这不是重点:P

0 投票
8 回答
10227 浏览

algorithm - 伪代码解释器?

像 SO 上的许多人一样,我经常用几种语言写作。当涉及到计划的东西时,(甚至回答一些 SO 问题),我实际上是用一些未指定的混合语言思考和写作的。尽管我曾经被教导使用流程图或类似 UML 的图表来做到这一点,但回想起来,我发现“我的”伪代码语言具有C, Python, Java, bash, Matlab, perl,的组件Basic。我似乎无意识地选择了最适合表达概念/算法的成语。

常见的习惯用法可能包括类似 Java 的范围大括号、pythonic 列表推导或缩进、C++ 类继承、C# 样式 lambda、matlab 类切片和矩阵运算。

我注意到人们实际上很容易准确地识别出我正在尝试做什么,而且人们很容易智能地翻译成其他语言。当然,这一步涉及考虑极端情况,以及每种语言表现出特殊行为的时刻。

但实际上,这些语言中的大多数共享一个关键字和库函数的子集,它们的行为通常相同——数学函数、类型名称等while。显然,我必须排除许多“奇怪”的语言,如 lisp、APL 衍生物,但是...forif

所以我的问题是,

  1. 识别文本文件的编程语言的代码是否已经存在?(与 eclipse 的语法树或 google translate 的语言猜测功能相比,这肯定是一个更简单的任务,对吧?)事实上,SO 语法高亮器会做这样的事情吗?

  2. 理论上是否有可能创建一个单一的解释器或编译器来识别您在任何时候使用的语言习语并(可能“智能地”)执行或转换为可运行的形式。并标记我的语法在行为方面模棱两可的极端情况。我看到的直接困难包括:知道何时在缩进相关模式和大括号相关模式之间切换,识别有趣的运算符(如*pointervs *kwargs)以及知道何时使用列表和类似数组的表示。

  3. 是否存在可以管理这种灵活口译的语言或口译员?

  4. 我是否错过了实现这一目标的明显障碍?

编辑

感谢大家的回答和想法。我计划编写一个基于约束的启发式翻译器,它可能会解决”预期含义的代码并翻译成真正的 python 代码。它会注意到来自许多常用语言的关键字,并将使用句法线索来消除人类意图的歧义——比如空格、括号、可选的辅助词(如letor then)、变量先前使用方式的上下文等,以及常用约定的知识(如大写名称、 i 用于迭代,以及对变量/方法命名的一些简单的有限理解,例如包含单词get, asynchronous, count, last,previousmy)。在真正的伪代码中,变量命名与操作本身一样具有信息量!

使用这些线索,它将创建关于每个操作的实现的假设(如基于 0/1 的索引、何时应捕获或忽略异常、哪些变量应该是 const/global/local、从哪里开始和结束执行以及什么位应该在单独的线程中,注意数字单位何时匹配/需要转换)。每个假设都有一个给定的确定性 - 程序将列出每个语句的假设,因为它会将您编写的内容哄骗成可执行的东西!

对于每个假设,如果您不喜欢最初的解释,您可以“澄清”您的代码。图书馆问题非常有趣。我的翻译器,就像一些 IDE 一样,会读取所有模块中可用的所有定义,使用一些关于哪些类/方法最常使用以及在什么上下文中使用的统计数据,然后猜测!(在程序中添加一个注释来说明它为什么会这样猜测......)我想它应该尝试执行所有内容,并警告你它不喜欢什么。它应该允许任何事情,但如果您模棱两可,请让您知道几种替代解释是什么。

它肯定需要一段时间才能管理像@Albin Sunnanbo 的例子这样不寻常的ImportantCustomer例子。但我会让你知道我是怎么过的!

0 投票
3 回答
1533 浏览

algorithm - 计算机编程艺术中近似相等和本质上的区别

我从其他地方得到这个代码片段。据站长称,代码选自Knuth 的计算机编程艺术

由于我没有那本书的副本,请问这两个功能有什么区别?