小编Dan*_*age的帖子

使用gcc链接库:参数的顺序

一旦我将Ubuntu发行版升级到11.10,我就开始看到gcc的奇怪链接器行为.我能够通过将我的-l参数移动到gcc命令的末尾来修复问题(我的问题类似于此线程中描述的问题,并且建议的解决方案对我有用......谢谢!).

我的问题是......为什么我现在才有这个问题?我已经在OS X和Ubuntu上开发和测试了这段代码了一段时间:我从来不知道-l命令应该在你的.c文件之后,但即便如此,这从来没有给我带来过问题.我猜它与GCC版本有关,而不是Ubuntu版本.

这个新版本是否比早期版本更严格地执行此要求?

ubuntu gcc libraries

14
推荐指数
1
解决办法
7255
查看次数

如何计算Perl中的字符?

我有以下Perl脚本计算字符串中的Fs和Ts的数量:

my $str = "GGGFFEEIIEETTGGG";
my $ft_count = 0;
$ft_count++ while($str =~ m/[FT]/g);
print "$ft_count\n";
Run Code Online (Sandbox Code Playgroud)

是否有更简洁的方法来计算(换句话说,结合第2和第3行)?

regex perl charactercount

12
推荐指数
3
解决办法
2万
查看次数

如何用neato处理密集连接的图

我有以下dot/neato文件...

graph G
{

  node [color=Red]

  r01
  r02

  r03

  r04
  r05

  r06
  r07
  r08
  r09

  r10
  r11

  node [color=Blue]

  p01
  p02

  p03

  p04
  p05
  p06

  p07
  p08
  p09
  p10
  p11

  p12
  p13

  r01 -- r02
  r01 -- p01
  r01 -- p02
  r02 -- p01
  r02 -- p02
  p01 -- p02

  r03 -- p03

  r04 -- r05
  r04 -- p04
  r04 -- p05
  r04 -- p06
  r05 -- p04
  r05 -- p06
  p04 -- p05
  p04 -- p06

  r06 -- r07 …
Run Code Online (Sandbox Code Playgroud)

graphviz neato

12
推荐指数
1
解决办法
8099
查看次数

用graphviz强制边缘上的方角

我有以下.dot文件.

digraph
{
    node [color=Limegreen,fontcolor=Limegreen,shape=oval]
    ilocus [label="iLocus"]
    gilocus [label="giLocus"]
    pilocus [label="piLocus"]
    nilocus [label="niLocus"]
    silocus [label="siLocus"]
    cilocus [label="ciLocus"]
    filocus [label="fiLocus"]
    iilocus [label="iiLocus"]

    node [color=Blue,fontcolor=Blue,shape=diamond]
    containgene [label="Contains gene(s)?"]
    proteincoding [label="Protein coding?"]
    multiplegenes [label="Multiple genes?"]
    geneflank [label="Flanked by genes\non both sides?"]

    ilocus -> containgene
    containgene:e -> geneflank [xlabel="No"]
    geneflank:e -> filocus [xlabel="No"]
    geneflank:w -> iilocus [xlabel="Yes"]
    containgene:w -> gilocus [xlabel="Yes"]
    gilocus -> proteincoding
    proteincoding:e -> nilocus [xlabel="No"]
    proteincoding:w -> pilocus [xlabel="Yes"]
    pilocus -> multiplegenes
    multiplegenes:e -> silocus [xlabel="No"]
    multiplegenes:w -> cilocus …
Run Code Online (Sandbox Code Playgroud)

dot graphviz

12
推荐指数
1
解决办法
1706
查看次数

使用OpenMP并行化while循环

我有一个非常大的数据文件,该数据文件中的每条记录有4行.我编写了一个非常简单的C程序来分析这种类型的文件并打印出一些有用的信息.该计划的基本思想是这样的.

int main()
{
  char buffer[BUFFER_SIZE];
  while(fgets(buffer, BUFFER_SIZE, stdin))
  {
    fgets(buffer, BUFFER_SIZE, stdin);
    do_some_simple_processing_on_the_second_line_of_the_record(buffer);
    fgets(buffer, BUFFER_SIZE, stdin);
    fgets(buffer, BUFFER_SIZE, stdin);
  }
  print_out_result();
}
Run Code Online (Sandbox Code Playgroud)

这当然会遗漏一些细节(健全/错误检查等),但这与问题无关.

该程序工作正常,但我正在使用的数据文件是巨大的.我想我会尝试通过使用OpenMP并行化循环来加速程序.但是,经过一些搜索后,OpenMP似乎只能处理for预先知道迭代次数的循环.由于我事先并不知道文件的大小,甚至简单的命令都wc -l需要花费很长时间才能运行,我该如何并行化这个程序呢?

c parallel-processing openmp while-loop

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

在grep中组合-v标志和-A标志

我需要在文件中搜索字符串,删除包含该字符串的任何行,并删除包含该字符串的任何行后面的两行.我希望我能用这样的东西来完成这个......

$ grep -v -A 2 two temp.txt
one
five
$
Run Code Online (Sandbox Code Playgroud)

......但不幸的是,这不起作用.有一个简单的我可以使用grep或其他shell命令吗?

unix grep sed

9
推荐指数
1
解决办法
1582
查看次数

随机放置非重叠间隔

我有一个区间G,以及一组不同长度非重叠子区间s 1,s 2,...,s n.

G |--------------------------------------------------------------// //-----------|
        s1 [---]                       s3 [------------------]
                    s2 [------]                                         sn [--]     
Run Code Online (Sandbox Code Playgroud)

我正在寻找一种算法来获取所有这些子间隔,然后将它们再次放在G上,这样它们就不会重叠.做这个的最好方式是什么?

最简单,最天真的方法是简单地随机选择每个子区间的起始位置,一旦放置所有区间就检查重叠,然后如果存在重叠则重新开始.如果子间隔提供G的稀疏覆盖,但随着密度的增加,效率会越来越低,这可能会非常快.

类似的想法是在放置每个子间隔时检查重叠.然而,对效率的类似担忧.

有没有更聪明的方法来处理这个?

UPDATE

澄清几点:

  • 它是我想随机分布的子间隔的间距.
  • 在这种情况下,均匀分布可能是最合适的随机概念.
  • 这些是离散的(整数)闭合间隔,而不是连续的.

random algorithm intervals

9
推荐指数
1
解决办法
332
查看次数

测试列表A是否包含在列表B中

我有两个列表,A&B,我想测试是否A包含在B."包含"是指元素A以完全相同的顺序出现,而B它们之间没有其他元素.我正在寻找的是非常类似于A in B它们是字符串的行为.

A将重复一些要素.我们可以假设A将比短于B.

关于SO的类似问题有很多答案,但大多数答案都有不同的问题:

  • A元素B吗?(不是我的问题:B是一个平面列表,而不是列表列表.)
  • 是否A包含所有元素B?(不是我的问题:我也关心订单.)
  • A一个子列表B?(不是我的问题:我不想知道这些元素是否以A相同的顺序出现B,我想知道它们是否与它们在某处完全一样B.)

如果操作是作为关键字实现的containedin,它将表现得像这样.

>>> [2, 3, 4] containedin [1, 2, 3, 4, 5]
True
>>> [2, 3, 4] containedin [1, 1, 2, 2, 3, 3, 4, 4, 5, 5]
False
>>> …
Run Code Online (Sandbox Code Playgroud)

python contains list

8
推荐指数
1
解决办法
167
查看次数

在fortran90中智能打印整数

几年前,我在简要介绍Fortran77之后,正在学习Fortran90.在Fortran中打印整数时,必须指定要为打印整数保留的空格数.考虑这个程序......

implicit none

integer :: i
i = 123

write(*, '(A, I3, A)')  "'", i, "'"  !3 spaces for output = no padding
write(*, '(A, I5, A)')  "'", i, "'"  !5 is too many, so output is padded
write(*, '(A, I2, A)')  "'", i, "'"  !2 is too few, so output is jibberish
write(*, '(A, I:, A)')  "'", i, "'"  !Default behavior

end program
Run Code Online (Sandbox Code Playgroud)

...生成以下输出.

'123'
'  123'
'**'
'         123'
Run Code Online (Sandbox Code Playgroud)

当我不知道整数中有多少位数时,如何为整数打印分配正确的空间量?

更新:如果您的编译器符合F95,您可以使用I0编辑描述符(即,在上面的示例'(A, I0, A)'中为 …

format fortran fortran90 fortran95

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

制作:.DELETE_ON_ERROR用于目录目标

GNU Make包含一个称为的特殊目标.DELETE_ON_ERROR。如果您的Makefile中包含此文件,Make将删除其构建序列以非零返回状态完成的任何目标。这很有用,因此在以后的调用中,Make不会假定目标已正确构建。

这是一个虚拟的例子。

.DELETE_ON_ERROR:

out.dat:    in.dat
            touch out.dat
            false
Run Code Online (Sandbox Code Playgroud)

因为false给出的返回值非零,所以构建被视为失败,并且Make删除了out.dat目标。这是广告和预期的行为。但是,当目标是目录时,似乎不会保留此行为。考虑另一个虚拟的例子。

.DELETE_ON_ERROR:

outdir/:    in.dat
            mkdir outdir/
            false
Run Code Online (Sandbox Code Playgroud)

在这种情况下,构建会再次失败,但是Make不会删除outdir目录。有什么方法可以指示Make进行此操作吗?

makefile gnu-make

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