小编Sta*_*amm的帖子

查找多集的所有子集

假设我有一个包含6个球(3个白色和3个黑色)的包.我想找到给定长度的所有可能子集,忽略顺序.在上面的例子中,我只能从包中抽出3个球组合:

  • 2白色和1黑色
  • 2黑色和1白色
  • 3白色
  • 3黑色

我已经用我选择的语言找到了一个完全符合这个标准的库,但我觉得它对于更多的数字来说很慢.例如,对于包含15个白色,1个黑色,1个蓝色,1个红色,1个黄色和1个绿色的袋子,仅有32个10个球的组合,但产生结果需要30秒.

有没有一种有效的算法可以找到我自己可以实现的所有组合?也许这个问题并不像我最初想的那样微不足道......

注意:我甚至不确定用正确的技术词来表达这一点,所以请随意纠正我的帖子的标题.

algorithm

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

打开和保存文件时丢失编码

我正在尝试使用常规HTML和特殊Unicode字符(例如"ÖÄÅöäå"(瑞典语))打开文件,对其进行格式化,然后将其输出到文件中.

到目前为止一切都很好,我可以打开文件,找到我需要的部分并输出到文件中.

但重点是:

我无法将输入的Unicode数据保存到文件中而不会丢失我的编码(例如,'ö'变成'Ã'').

虽然我可以通过手动将它们输入到代码本身,但仍然可以执行正则表达式并将它们输出到正确的编码.但不是在我导入文件,格式化然后输出时.

使用OCT时的工作方法示例(例如,这可以输出到没有编码问题的文件):

my $charsSWE = "öäåÅÄÖ";
# \344 = ä
# \345 = å
# \305 = Å
# \304 = Ä
# \326 = Ö
# \366 = ö
my $SwedishLetters = '\344 \345 \305 \304 \326 \366';

if($charsSWE =~ /([$SwedishLetters]+)/){
    print "Output: $1\n";
}
Run Code Online (Sandbox Code Playgroud)

下面的方法不起作用,因为编码丢失(这是代码部分的快速说明,但其概念是相同的[例如,打开文件,获取和输出]):

open(FH, 'swedish.htm') or die("File could not be opened");

    while(<FH>)
    {
        my @List =  /([$SwedishLetters]+)/g;    
        message($List[0]) if @List;
    }

close(FH);
Run Code Online (Sandbox Code Playgroud)

unicode perl encoding

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

while(1){......}的使用最常构造

这是我的代码..

while (1) {
    do_stuff;
    do_some_checks;
    do {  warn error 1; last }  if not OK;

    do_more_stuff;
    do_some_checks;
    do {  warn error 2; last }  if not OK;

    do_even_more_stuff;
    do_some_checks;
    do {  warn error 3; last }  if not OK;

    ...
    #finally
    last;
}
Run Code Online (Sandbox Code Playgroud)

我比它更喜欢它:

do_stuff;
do_some_checks;
if (!OK) {
    warn error 1;
} else {
    do_more_stuff;
    do_some_checks;
    if (!OK) {
        warn error 2;
    } else {
       do_even_more_stuff;
       do_some_checks;
       if (!OK) {
           ...
       }
       # finally
       success!    
    }
}
Run Code Online (Sandbox Code Playgroud)

每次都会遇到我唯一的事情,虽然使用这个结构有时我忘记添加最终结果 …

perl

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

标签 统计

perl ×2

algorithm ×1

encoding ×1

unicode ×1