小编dax*_*xim的帖子

如何在有向图中找到从源到汇的所有路径?

我想找到从源到汇的所有路径.预期:

(3 11 17 24 32 39 45)
(3 11 18 26 33 39 45)
(3 11 18 26 33 40 46)
(3 11 18 26 33 40 47)
(3 11 19 27 33 39 45)
(3 11 19 27 33 40 46)
(3 11 19 27 33 40 47)
(3 11 19 27 34 40 46)
(3 11 19 27 34 40 47)
(6 12 20 27 33 39 45)
(6 12 20 27 33 40 46)
(6 12 …
Run Code Online (Sandbox Code Playgroud)

perl graph-theory

6
推荐指数
1
解决办法
92
查看次数

您如何自定义文本分割以使图不间断?

作品:

#!/usr/bin/env python3
from uniseg.graphemecluster import grapheme_clusters
def albanian_digraph_dh(s, breakables):
    for i, breakable in enumerate(breakables):
        if s.endswith('d', 0, i) and s.startswith('h', i):
            yield 0
        else:
            yield breakable

print(list(grapheme_clusters('dhelpëror', albanian_digraph_dh)))
#['dh', 'e', 'l', 'p', 'ë', 'r', 'o', 'r']
Run Code Online (Sandbox Code Playgroud)

需要改进/定制:

perl -C -Mutf8 -mUnicode::GCString -E'
    say join " ", Unicode::GCString
        ->new("dhelpëror")->as_array
'
#d h e l p ë r o r

perl6 -e'"dhelpëror".comb.say'
#(d h e l p ë r o r)
Run Code Online (Sandbox Code Playgroud)

注意:编写自己的细分(几乎可以保证不会正确实现UAX#29)算是避免问题的方法。

unicode perl perl6 text-segmentation raku

6
推荐指数
1
解决办法
170
查看次数

如何在C++中实现等效的嵌套Perl哈希?

我想将一些Perl代码更改为C++.我需要知道如何在C++中实现嵌套的Perl哈希.我认为STL是一个不错的选择,并使用了地图.在地图的帮助下,我只能创建一个简单的哈希,但我不知道如何创建嵌套的哈希结构.

我的Perl哈希是这样的:

%foo = (
    "bar1" => {
        Default => 0,
        Value   => 0
    },
    "bar2" => {
        Default => 2,
        value   => 5,
        other   => 4
    }
)
Run Code Online (Sandbox Code Playgroud)

我可以这样修改它:$foo{"bar1"}->{"Default"} = 15.

如何使用STL在C++中执行此操作?也许这是一个简单的问题,但我无法弄清楚.

c++ perl stl

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

Perl的'foreach`语句中括号的用途是什么?

我总是想知道为什么我必须写

foreach my $x (@arr)
Run Code Online (Sandbox Code Playgroud)

代替

foreach my $x @arr
Run Code Online (Sandbox Code Playgroud)

括号的目的是什么?

syntax perl foreach

5
推荐指数
2
解决办法
985
查看次数

是否已存在已修改的命令调用工具(根据负载动态调节作业池)?

Unix哲学家,

我在Perl中编写了一些工具,这些工具有一个可以并行运行的部分.我装备他们用-j像(工种)的选项make,并prove因为这是明智的.但是,很快我就因为两个原因而对此感到不满.

  1. 我指定的--jobs=2,因为我有两个CPU核心,但我不应该需要告诉它可以通过自身找出计算机的信息.
  2. 很少运行该工具的占据超过20%的CPU(I/O负荷也小),通过不利用CPU到一个更好的程度浪费时间.

我进行了更多的修改以添加负载测量,产生额外的工作,同时仍然有"容量",直到达到负载阈值,这是当工作数保持或多或少不变时,但是在运行过程中的其他过程更高的优先级需要更多的CPU,随着时间的推移,产生的新工作量减少,因此工作量减少.

由于这种责任是在工具重复的代码,我下面的精神分解出来的调度方面成为一个独立的工具nice等..并行工具现在非常愚蠢,它们只有信号处理程序,通过它们可以增加或减少作业池,而负载测量和确定何时控制池的智能驻留​​在调度程序中.

尝试界面的味道(我也想提供合理的默认值,因此可以省略选项):

run-parallel-and-schedule-job-pool \
    --cpu-load-threshold=90% \
    --disk-load-threshold='300 KiB/s' \
    --network-load-threshold='1.2 MiB/s' \
    --increase-pool='/bin/kill -USR1 %PID' \
    --decrease-pool='/bin/kill -USR2 %PID' \
    -- \
    parallel-something-master --MOAR-OPTIONS
Run Code Online (Sandbox Code Playgroud)

在我努力进入最后的90%之前,请告诉我,我是否复制了别人的工作?这个概念非常明显,所以它似乎应该已经完成​​了,但是我发现它不是一个单独的责任独立工具,只是作为更大的多用途系统管理员套件的深度集成部分.

奖金的问题:我已经知道runNparallel.它们执行并行执行,但没有动态调度(niceload进入该区域,但非常原始).如果对我的期望独立的工具,还不存在,我是最好延长runN自己提交一个愿望反对parallel

unix parallel-processing perl

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

什么是具有低计算复杂度的单线程,用于返回阵列的两个最大值?

这更像是"我感兴趣,如果它可能"而不是"我真的需要它"的问题,但无论如何:我知道如果我想使用自定义函数比较在列表中的最小值,我可以轻松地做到List::Util::reduce.

my $biggest = reduce {comparison($a, $b) ? $b:$a} @myArray;
Run Code Online (Sandbox Code Playgroud)

但是,如果我想要该阵列中的两个最大值?再次,只需一次遍历数组.

我可以通过写一个for循环来做到这一点,但我真的想要一个更加圆润的单行.


编辑:通过一次遍历数组,我的意思是计算复杂度不会大于O(n).排序所有文章并不是那么有效,因为我不需要排序所有内容,只需要两个最大的值.

但我可能要求太多了:)

perl

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

如何安全地从JSON 1升级到JSON 2和utf8字符串?

我们有一个庞大的代码库,可以大量使用JSON v1 API:

use JSON;
my $json = objToJson($data);
my $data = jsonToObj($json);
Run Code Online (Sandbox Code Playgroud)

我们想升级到JSON v2,因此我们可以在新代码中开始使用它,因为我们遇到了依赖于v2 API的其他模块.

但是,如果我已经存储了由其创建的utf8字符串objToJson(),则JSON :: XS将不会再以相同的方式对其进行解码(这是JSON v2在幕后使用的).

use JSON;
use JSON::XS;
use warnings;
use strict;

my $data    = ["\x{263a}b"];
my $encoded = JSON::objToJson($data);
print "different!\n"
  unless JSON::jsonToObj($encoded)->[0] eq JSON::XS::decode_json($encoded)->[0];
print "different!\n"
  unless JSON::jsonToObj($encoded)->[0] eq JSON::XS->new->decode($encoded)->[0];
Run Code Online (Sandbox Code Playgroud)

我们有什么方法可以升级到JSON v2,但仍然保留v1 API以与现有代码向后兼容?

perl json utf-8

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

对于各种人类语言的语音表示,什么是好的包?

我目前正在开展一个项目,我认为能够用各种语言提出单词的语音表示非常有用.我知道Aspell做得很好,但是我认为没有一种非常简单的方式可以获得他们的语音表示,所以我问:是否还有其他一些好的方法可以获得单词和语言的单词的语音表示/方言/口音/它来自何处?

这不需要使用任何特定的语言,但如果它是Perl,那将是最好的.

我已经尝试过Soundex,Metaphone,DoubleMetaphone以及Text :: Phonetic中的所有其他内容,而且这些东西都不是很好 - 绝对不如Aspell的那么好.

perl translation aspell phonetics

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

如何将大数据发布到服务器?

我必须将 XML 从客户端发送到服务器端。

我采用的方法是:

首先将 xml 转换为 javascript 中的字符串,然后作为 uri 发布

var url = '/perl/set_zorder_xml.cgi'+'?'+xmlString+'&'+location+'&'+'nocache='+randomnumber;

xml 字符串是包含字符串形式的 xml 的字符串。

post函数如下所示:

if (window.XMLHttpRequest) {
            req_anno = new XMLHttpRequest();
            req_anno.open("POST", url, false);
            req_anno.send();
            }
Run Code Online (Sandbox Code Playgroud)

问题是当我的 xml 字符串非常大时,会出现 html 414 错误,即 url 太大。有什么办法,用的是Javascript和perl

javascript string post xmlhttprequest

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

带有循环类定义的“非法后声明类型”

乐堂版本 2020.01

这不编译。

use v6;

class N1 {}
class T1 {}

class G1 {
    has @.g is required where A1|Q1;
}

class Q1 {
    has $.q is required where N1|T1|G1;
}

class A1 {
    has Q1 @.a is required;
}
Run Code Online (Sandbox Code Playgroud)
===SORRY!=== Error while compiling …
Illegally post-declared types:
    A1 used at line 7
    Q1 used at line 7
Run Code Online (Sandbox Code Playgroud)

我认为仅在 G1 之前声明标识符会帮助我,但这也失败了:

===SORRY!=== Error while compiling …
Too late for unit-scoped class definition;
Please use the block form.
…:6
------> class …
Run Code Online (Sandbox Code Playgroud)

porting raku

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