- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
这不是特定于 REBOL 的问题。您可以用任何语言回答。
REBOL language 支持创建特定领域的语言,在 REBOL parlance 中称为“方言”。我为列表理解创建了这样一种方言,REBOL 本身不支持它。
列表理解需要一个好的笛卡尔积算法。
我使用元编程来解决这个问题,方法是动态创建然后执行一系列嵌套的 foreach
语句。它工作得很漂亮。但是,因为它是动态的,所以代码可读性不是很好。 REBOL 不能很好地进行递归。它会迅速耗尽堆栈空间并崩溃。所以递归解决方案是不可能的。
总而言之,如果可能的话,我想用可读的、非递归的“内联”算法替换我的元编程。解决方案可以是任何语言,只要我能在 REBOL 中重现它。 (我几乎可以阅读任何编程语言:C#、C、C++、Perl、Oz、Haskell、Erlang,等等。)
我要强调的是,这个算法需要支持任意数量的集合来“连接”,因为列表理解可以涉及任意数量的集合。
最佳答案
速度提高 3 倍,内存使用量减少(回收次数减少)。
cartesian: func [
d [block! ]
/local len set i res
][
d: copy d
len: 1
res: make block! foreach d d [len: len * length? d]
len: length? d
until [
set: clear []
loop i: len [insert set d/:i/1 i: i - 1]
res: change/only res copy set
loop i: len [
unless tail? d/:i: next d/:i [break]
if i = 1 [break]
d/:i: head d/:i
i: i - 1
]
tail? d/1
]
head res
]
关于algorithm - 什么是计算笛卡尔积的良好非递归算法?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/215908/
嗨,我正在考虑开发一种文件传输程序,想知道我是否想要尽可能好的加密,我应该使用什么? 我会用 C# 开发它,所以我可以访问 .net 库 :P在我的 usb 上有一个证书来访问服务器是没有问题的,如果
我创建的这个计算两个数组的交集是线性的方法的复杂度(在良好、平均、最差的情况下)? O(n) public void getInt(int[] a,int[] b){ int i=0; int
我已经能够使用 RTCPeerConnection.getStats() API 获得 WebRTC 音频调用的各种统计信息(抖动、RTT、丢包等)。 我需要将整体通话质量评为优秀、良好、一般或差。
基本问题: 如果我正在讲述/修改数据,我应该通过索引硬编码索引访问文件的元素,即 targetFile.getElement(5);通过硬编码标识符(内部翻译成索引),即 target.getElem
在 Linux 上,我想知道要调用什么“C”API 来获取每个 CPU 的统计信息。 我知道并且可以从我的应用程序中读取 /proc/loadavg,但这是系统范围的负载平均值,而不是每个 CPU 的
在客户端浏览器中使用 fetch api,GET 或 POST 没有问题,但 fetch 和 DELETE 有问题。它似乎将 DELETE 请求方法更改为 OPTIONS。 大多数研究表明是一个cor
我是一名优秀的程序员,十分优秀!