小编Con*_*ien的帖子

在J中将字符串评估为动词

TL; DR

给定一个包含(有效)动词的字符串,如何获取该动词而不将其提交给任何变量?例如,说eval是那个功能; 它应该像这样工作:

   eval '+ @ >: @ %'
+@>:@%
   eval '+'
+
Run Code Online (Sandbox Code Playgroud)

我只需要它就能够执行动词并返回它们,但是任意代码的评估都很酷.(我知道".,BTW.)


作为一个有趣的小实验,我想"嘿,也许我可以制作动词,将一串动词转化为一系列动词!" 我知道我可以使用;:"word-ify"将字符串转换为J-verbs,如下所示:

   ]str =: '+ >: %'
+ >: %
   ;: str
????????
?+?>:?%?
????????
Run Code Online (Sandbox Code Playgroud)

到现在为止还挺好.现在,我只是'@'通过使用,.("ravel items")来主动"加入"它们:

   '@' ,.~ > ;: str
+ @
>:@
% @
Run Code Online (Sandbox Code Playgroud)

展平这个产量:

+ @>:@% @
Run Code Online (Sandbox Code Playgroud)

最后,@}:收益率砍掉尾随+ @>:@%,这是我想要的更丑陋的版本+ @ >: @ %.

现在,这一切都很好,除了一件事:它是一个字符串.差不多了!但并不完全.我心想,"哦!".对于这个来说是完美的,它基本上是eval." 令我沮丧的是,这些文件因此而读(我的):

".y执行句子y.如果执行结果是名词,那么结果".y就是名词; …

string eval function j

7
推荐指数
1
解决办法
159
查看次数

在JavaScript中计算用ISO 8859-7编码的文件的字节大小

背景

我正在写一种叫做Jolf的深奥语言.它用于可爱的网站codegolf SE.如果您还不知道,则会以字节为单位对很多挑战进行评分.人们已经做出 很多的 语言是利用或者自己的编码或预先存在的编码.

在我的语言的解释器上,我有一个字节计数器.正如您所料,它计算代码中的字节数.到现在为止,我一直在使用UTF-8 en/decoder(utf8.js).我现在使用的是带有希腊字符的ISO 8859-7编码.文本上传实际上也不起作用.我需要计算上传文件中包含的实际字节数.还有,有办法读取所述编码文件的内容吗?

鉴于从<input>页面上的元素获得的ISO 8859-7编码的文件,有没有办法获得该文件中包含的字节数?并且,给定"明文"(即文本直接放入a <textarea>),我如何计算其中的字节,好像它是在ISO 8859-7中编码的?

我试过的

调用input元素isogreek.该文件位于<input>元素中.内容是?X?希腊字符,拉丁字符(每个字符应该是一个字节)和一个中文字符,它应该超过一个字节(?).

isogreek.files[0].size;      // is 3; should be more.

var reader = new FileReader();
reader.readAsBinaryString(isogreek.files[0]);      // corrupts the string to `ÖX?`
reader.readAsText(isogreek.files[0]);              // ?X?
reader.readAsText(isogreek.files[0],"ISO 8859-7"); // ?X?
Run Code Online (Sandbox Code Playgroud)

javascript encoding character-encoding

5
推荐指数
1
解决办法
489
查看次数

修改生成器函数原型

TL; DR

我想修改生成器函数实例的原型 - 即从调用a返回的对象function*.


假设我有一个生成器功能:

function* thing(n){
    while(--n>=0) yield n;
}
Run Code Online (Sandbox Code Playgroud)

然后,我做了一个实例:

let four = thing(4);
Run Code Online (Sandbox Code Playgroud)

我想定义一个被调用的生成器原型exhaust,如下所示:

four.exhaust(item => console.log(item));
Run Code Online (Sandbox Code Playgroud)

会产生:

3
2
1
0
Run Code Online (Sandbox Code Playgroud)

我可以通过这样做来破解它:

(function*(){})().constructor.prototype.exhaust = function(callback){
    let ret = this.next();
    while(!ret.done){
        callback(ret.value);
        ret = this.next();
    }
}
Run Code Online (Sandbox Code Playgroud)

但是,(function*(){})().constructor.prototype.exhaust看起来非常......哈哈.没有GeneratorFunction我可以轻易编辑的原型......或者在那里?有一个更好的方法吗?

javascript generator node.js ecmascript-6

5
推荐指数
1
解决办法
402
查看次数

有没有办法在JavaScript中使用C ++?

这个,我发现JavaScript是用C ++编写。我还发现/推断出大多数JavaScript是C ++(例如Math.atan+""Math.atan.toString()yield "function atan() { [native code] }")。在[native code我认为是C ++,还有什么是“隐藏”了点?

我的问题是有没有办法在JavaScript中利用C ++?要在函数中还是在JavaScript平台中使用它?

javascript c++ cross-platform

4
推荐指数
2
解决办法
5979
查看次数

在J中制作范围动词

J是一门很棒的编程语言,我决定学习它.作为一个简单的练习,我决定模仿一个范围.有一个内置函数i.可以创建一个范围0..i-1.使用一些数学,我认为这是之间的范围ab:

 a + i. (b - a - 1)
Run Code Online (Sandbox Code Playgroud)

成功!我想.现在,转换为动词的"简单"任务摆在我面前.这是我现在的问题.我a在动词的两边都调用了(左边的参数)+.我想过使用evoke,但我不确定如何使它工作.

所以我的问题是:我如何将形式的表达式,a f (a g b)或者更具体地说,a f (a g b h c)(和类似的形式)转换为纯动词?我不想使用明确的论点,因为它有什么乐趣?;)

编辑我的解决方案如下:

range =: [(+i.)>:@-~
Run Code Online (Sandbox Code Playgroud)

j

4
推荐指数
1
解决办法
101
查看次数

如何获得[0,1]范围内的加密强数?

我一直在尝试创建一个函数,它将通过函数返回0(包括)和1(不包括)之间的随机十进制数Window.crypto.getRandomValues().目前,我的代码如下:

var rand = function(){
    var ra = window.crypto.getRandomValues(new Uint32Array(1))[0];
    function dec(n,m){
        return (n>=0&&n<=1)?n:dec(n/m,m);
    }
    return dec(ra,8);
}
Run Code Online (Sandbox Code Playgroud)

我的问题是这不是均匀分布的; 它倾向于在.2和.7之间,很少在.2和.7之间.有没有更好的方法来使用该.getRandomValues()方法来获得类似Math.random()函数的数字?

我没有使用该.random()方法,因为我希望为我正在尝试执行的操作设置安全数字.

javascript random cryptography

3
推荐指数
1
解决办法
626
查看次数

RegExp 用于匹配重复字符

我需要一个正则表达式(或任何其他东西)对象来匹配一个字符,以及后面相同字符的多个实例,直到它到达一个新字符。

理想情况下,我需要一个函数来返回输入字符串中找到的所有连续字符的数组。它应该返回类似这样的东西。

> like_characters("Hello?");
Array ["H", "e", "ll", "o", "?"]
> like_characters("1234442332111???");
Array ["1", "2", "3", "444", "2", "33", "2", "111", "???"]
Run Code Online (Sandbox Code Playgroud)

我不必使用正则表达式——任何通过字符更改“分割”字符串的方法都可以。它最好是低字节代码,因为我正在处理一个空间有限的小组项目。

尝试

str.split(/\d*/)
str.split(/\d+/)
/(\d)+\1/
Run Code Online (Sandbox Code Playgroud)

这几乎就是我所拥有的一切(坦率地说,我很惊讶我竟然能走到这一步——正则表达式的领域是如此模糊)。

javascript regex

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

Excel列依赖项

我在Excel 2013中有一个工作表.

  A               B                   C   D   E   F   G   H
1 Puzzle Number   Given Difficulty    n   b   g   c   a   nbg   
2 1               Very Easy           4   6   3   9   2   <problem cell>
3 2               Very Easy           .   .   .   .   .   <problem cell>
Run Code Online (Sandbox Code Playgroud)

我想一般设定在H列的值是,比方说,在列的值C * D * E在具有值的所有行C,DE.

我不确定这是否可以在Excel中使用.如果不是,是否有一些公式我可以复制并粘贴到每一行H

我真的不是在尝试使用VBA,只是Excel公式.在此先感谢您的帮助.

excel calculated-columns

0
推荐指数
1
解决办法
836
查看次数