我知道VIM支持有向图,如果可以使用:s命令,那将是完美的,但我找不到使用它的方法!
我想是这样的:
:%s/\([aeiouAEIOU]\)'/\=digraph(submatch(1)."!")/g
Run Code Online (Sandbox Code Playgroud)
会很完美,但我找不到digraph功能.提前致谢.
编辑
好了,在内置的VIM功能中进行了一些挖掘之后,我找到tr了问题的第一个解决方案:
:%s/\([aeiouAEIOU]\)'/\=tr(submatch(1), 'aeiouAEIOU', 'àèìòùÀÈÌÒÙ')/g
Run Code Online (Sandbox Code Playgroud)
但是,我仍然想知道是否有一种方法可以digraph在表达式中使用:)
C++ 0x解决了模板ID中连续关闭尖括号的问题,如
vector<vector<int>>.不再需要空间> >.C++ 0x是否解决了<::类似的问题vector<::MyType>?被之间的空间<,并::仍需要?
编辑:我的意思是标准(草案)的措辞.很长一段时间以来,许多编译器都在应对这种情况
根据MISRA C++ 2-5-1我们通常应该避免弄乱有向图.虽然,我不明白为什么我们也应该避免使用可读的话and,or,not等确定共同的运营商&&,||...
这个问题甚至被强调为Sonar/MISRA的"主要"问题:
[Major] Open Replace this digraph 'and' by its equivalent '&&'
[Major] Open Replace this digraph 'and' by its equivalent '&&'
[Major] Open Replace this digraph 'or' by its equivalent '||'
[Major] Open Replace this digraph 'or' by its equivalent '||'
[Major] Open Replace this digraph 'or' by its equivalent '||'
Run Code Online (Sandbox Code Playgroud)
是规则还包括人类可读的双图(即来自神秘的完全不同??=,??/因特殊原因),或者规则只是太普通?我没有发现使用它们的任何特殊风险或副作用,我错了吗?
这个MISRA规则是否有功能性原因 …
码:
#include <stdio.h>
int main(void)
{
??< puts("Hello Folks!"); ??>
}
Run Code Online (Sandbox Code Playgroud)
上述程序,当使用GCC 4.8.1编译-Wall和-std=c11,给出了以下警告:
source_file.c: In function ‘main’:
source_file.c:8:5: warning: trigraph ??< converted to { [-Wtrigraphs]
??< puts("Hello Folks!"); ??>
^
source_file.c:8:30: warning: trigraph ??> converted to } [-Wtrigraphs]
Run Code Online (Sandbox Code Playgroud)
但当我改变身体时main:
<% puts("Hello Folks!"); %>
Run Code Online (Sandbox Code Playgroud)
没有警告被抛出.
那么,为什么编译器在使用三字符时会发出警告,但在使用有向图时却没有?
令n为正整数,令S为n 个非负整数元组的集合。(例如,如果n为 3,则S可以为 {(1,2,0), (1,0,1)}。)
\n让我们定义一个名为“promote”的操作,它接受一个n 元组的非负整数 ( t 1 , t 2 , \xe2\x80\xa6, t n ),索引i使得t i \xc2\xa0>\ xc2\xa00 和小于i的索引j,并返回相同的n元组,只不过索引j处的值已递增,索引i处的值已递减。例如,如果我们有元组 (1,2,3,4,5),i \xc2\xa0=\xc2\xa05 和j \xc2\xa0=\xc2\xa02,则“promote”将返回 ( 1,3,3,4,4)。
\n我想计算“promote”在我的集合S上的闭包,这意味着我可以通过从S中的一个元素开始并对“promote”进行零次或多次调用(可以选择i和j)来达到的所有元组的集合对于任何给定的呼叫)。例如,如果S是 {(1,2,0), (1,0,1)},那么我想计算集合 {(2,0,0), (1,1,0), (1 ,0,1),(3,0,0),(2,1,0),(1,2,0)}。(例如,我可以通过从 (1,2,0) 开始并使用i \xc2\xa0=\xc2\xa02 和j \xc2\xa0=\xc2\调用“promote”来获得 …
algorithm search functional-programming breadth-first-search digraphs
我需要弄清楚这个混淆的 C++ 代码(由其他人编写)做了什么。除了一个棘手的部分,我已经想通了几乎所有的东西:
bool part1(char *flag)
{
int *t = (int *) memfrob(flag, 8);
unsigned int b[] = {3164519328, 2997125270};
for (int i = 0; i < 2; b[i] = ~b[i], ++i);
return !(0<:t:>-0<:b:>+1<:t:>-1<:b:>);
}
Run Code Online (Sandbox Code Playgroud)
这个函数的 return 语句是怎么回事?我不知道这些冒号是什么意思...
我试过用谷歌搜索 C++ 中的冒号运算符是做什么的,但只找到了关于类构造函数和条件表达式的答案,这似乎与这个问题无关。
我想找到符合以下规则的最长的单词序列:
sa和sb级联,如果最后两个字符sa匹配的前两个字符sb.在连接的情况下,通过重叠这些字符来执行.例如:
例如,我有以下输入文件"input.txt":
诺瓦拉
都灵
维切利
拉文纳
那不勒斯
liverno
messania
诺维利古雷
罗马
并且,根据上述规则输出的上述文件应为:
都灵
诺瓦拉
拉文纳
那不勒斯
利沃诺
诺维利古雷
因为最长的连接是:
torinovaravennapolivornovilligure
Run Code Online (Sandbox Code Playgroud)
有人可以帮我解决这个问题吗?什么是最好的数据结构?
我有这种具有多个根的有向无环图:
我需要得到一个列表,其中包含按方向排序并按步骤分组的节点,如下所示:
ordering = [
[1, 3],
[2],
[4],
[5, 6],
[7]
]
Run Code Online (Sandbox Code Playgroud)
也许有一些现成的算法?我试过了,networkx.algorithm但他们都只能返回一个平面列表,而无需按步骤分组。
我想要一种快速简单的方法来使用我经常使用的 vim 将某些 unicode 字符插入到文本文件中,例如英镑和刻度字符,而不是键入:
\n\ni C-v u00A3 = \xc2\xa3\ni C-v u2713 = \xe2\x9c\x93\nRun Code Online (Sandbox Code Playgroud)\n