我有一些graphviz点格式的相对简单(自动生成)的图形.这些显示了通过状态机的路径,但是当我希望图形处于状态顺序时,dot有一个稍微混乱的习惯,即决定两个节点必须在同一个等级上.我已经尝试了很多的设置(包括:n
和:s
和weight
下面列出的),但我无法说服点,放置第三个国家以上的第四个国家.
我有很多图表存在这个问题:点似乎有一些东西可以决定如果两个节点在同一个等级上会更好,并且没有什么可以覆盖它.我甚至有代码指定一个节点应该是a rank=sink
,但是dot决定将另一个节点放在它下面.
有没有办法建议点,节点的顺序比任何其他约束更重要?
用于生成图形的代码如下所示:
digraph {
ERROR [label="Error"];
FirstSTATE [label="Initial State" URL="\ref FirstSTATE"];
FirstSTATE -> SecondSTATE;
SecondSTATE [label="Second State" URL="\ref SecondSTATE"];
SecondSTATE -> ThirdSTATE;
ThirdSTATE [label="Third State" URL="\ref ThirdSTATE"];
FourthSTATE [label="Fouth State?" shape="diamond"];
ThirdSTATE:s -> FourthSTATE:n [weight=50];
FourthSTATE -> FifthSTATE [label="Yes" ];
FourthSTATE -> ThirdSTATE [label="No"];
FifthSTATE [label="Fifth State" URL="\ref FifthSTATE"];
SixthSTATE [label="Sixth State?" shape="diamond"];
SixthSTATE -> ERROR [label="Yes" ];
SixthSTATE -> SeventhSTATE [label="No"];
FifthSTATE -> SixthSTATE;
SeventhSTATE [label="Seventh State" …
Run Code Online (Sandbox Code Playgroud) 我正在尝试编写一个程序来检查某些C源代码是否符合变量命名约定.为此,我需要分析源代码并确定所有本地和全局变量的类型.
最终结果几乎肯定是一个python程序,但分析代码的工具可以是python模块,也可以是生成易于解析的报告的应用程序.或者(更多内容如下),它可以是一种从编译器中提取信息的方式(通过报告或类似方式).如果有用的话,很可能是Keil ARM编译器.
我一直在尝试使用ctags,这对于查找所有typedef和宏定义等非常有用,但它没有提供直接查找变量类型的方法,特别是当定义分布在多行时(我希望它不会!).
示例可能包括:
static volatile u8 var1; // should be flagged as static and volatile and a u8 (typedef of unsigned 8-bit integer)
volatile /* comments */
static /* inserted just to make life */
u8 /* difficult! */ var2 =
(u8) 72
; // likewise (nasty syntax, but technically valid C)
const uint_16t *pointer1; // flagged as a pointer to a constant uint_16t
int * const pointer2; // flagged as a constant pointer to …
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试实现一种算法来选择唯一的(16位)标识符.挑战是以不使用太多内存的快速方式执行此操作.当前使用的标识符列表是通过一系列SPI事务扫描外部闪存设备来确定的,因此是一个相对较慢的过程.此外,该算法将在小型微控制器上运行,因此我不能真正将所有条目读入RAM并在那里处理它们.
到目前为止我的想法是:
目前,我正准备使用第二个或第五个,但我有兴趣知道是否有人有任何其他想法.我想认为有一种类似于CRC的算法,可以用来依次处理每个数字,并给出一个尚未使用的数字的公平概念,但我不知道这可能是怎样的工作.
给出像这样的Pandas系列(或numpy数组):
import pandas as pd
myseries = pd.Series([1, 2, 3, 3, 3, 3, 3, 3, 4, 4, 4, 4, 3, 3, 2, 2, 3, 3, 1])
Run Code Online (Sandbox Code Playgroud)
有没有一种很好的方法来删除顺序重复,就像unix uniq
工具一样?numpy/pandas unique()
和pandas drop_duplicates
函数删除所有重复项(如unix的| sort | uniq
),但我不想这样:
>>> print(myseries.unique())
[1 2 3 4]
Run Code Online (Sandbox Code Playgroud)
我要这个:
>>> print(myseries.my_mystery_function())
[1, 2, 3, 4, 3, 2, 3, 1]
Run Code Online (Sandbox Code Playgroud) 我遇到一些问题,因为访问Qt应用程序中的成员变量会导致分段错误.我对分段错误的经验表明,它们通常是访问超出范围的内存位置的结果.但是,我正在努力弄清楚为什么在我的代码中会出现这种情况.
有问题的类是QFrame的子类,包含许多成员变量,包括一个最初调用m_Zoom
的类型
unsigned int
.创建框架时,会调用许多函数,这些函数会设置缩放级别,然后绘制窗口.一切正常.然后可以通过多种方式更改缩放级别:打开新文件或按+或 - .这些读取现有缩放级别,然后决定是否更改它.只需读取现有的缩放级别就会导致分段错误.
请注意,此变量不是指针或数组中的任何异常.定义如下:
class MyClass : public QFrame
{
Q_OBJECT
public:
MyClass(QWidget *parent = 0);
void SetZoomLevel(unsigned int zoom);
void ZoomIn();
protected:
void mousePressEvent(QMouseEvent *event);
void mouseReleaseEvent(QMouseEvent *event);
void mouseMoveEvent(QMouseEvent *event);
void paintEvent(QPaintEvent *event);
private:
// A number of private functions for performing calculations
// Some variables including:
double m_OriginShift;
unsigned int m_Zoom;
// Some more variables
};
Run Code Online (Sandbox Code Playgroud)
函数paintEvent
和所有mouse*
事件函数访问
m_Zoom
,这些工作正常(鼠标用于移动视图).构造函数调用SetZoomLevel
(基本上是
m_Zoom = zoom
).同样,这没有问题. ZoomIn
以..开始: …
我有一个看起来像这样的数据框:
df = pd.DataFrame({
'A': [0, 1, 2, 3, 4],
'B': ['a', 'b', 'c', 'd', 'e'],
'V1': [0.0, 0.1, 0.2, 0.3, 0.4],
'V2': [1.0, 1.1, 1.2, 1.3, 1.4],
'V3': [2.0, 2.1, 2.2, 2.3, 2.4],
'X': ['alpha', 'beta', 'gamma', 'delta', 'epsilon'],
})
Run Code Online (Sandbox Code Playgroud)
A B V1 V2 V3 X
0 0 a 0.0 1.0 2.0 alpha
1 1 b 0.1 1.1 2.1 beta
2 2 c 0.2 1.2 2.2 gamma
3 3 d 0.3 1.3 2.3 delta
4 4 e 0.4 1.4 …
Run Code Online (Sandbox Code Playgroud)