程序到Anaylze依赖项

粗鲁

新成员
加入
5月23日2019年
消息
4
编程经验
3-5
嗨,我正在努力对系统依赖性进行分析的程序。

例如,具有以下系统要求的系统将是下面的文本文件中
我向输入文件( - 注释)添加了注释,注释将不存在于输入文本文件中,并且可以忽略。

2 - 表示要安装的包数
A,1 - 封装1要安装
b,1 - 封装2要安装
3 - 表示要安装的依赖项数(P1,V1,P2,V2) - 版本V1中的包P1取决于版本V2中的P2
A,1,B,1 - 依赖性1
A,2,B,2 - 依赖性2
C,1,B,1 - 依赖性3

我的目标是对具有类似输入的各种文本文件进行分析,以确定系统配置的验证。
如果需要多个版本的包,则安装无效。您的任务是检查安装包(以及依赖项所需的所有包)是否有效

上面的示例输入有效,但下面的样本输入为无效,为1,1需要b,1,我们正在尝试安装b,2。

2
A,1 B,2
3
A,1,B,1
A,2,B,2
C,1,B,1

我正在尝试确定在文本文件上执行分析以确定成功和故障配置的最佳行动方案。
我希望有任何输入我如何设计软件解决方案......
谢谢
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,714
地点
切萨皮克,va.
编程经验
10+
This seems like a very simple look up problem. Just keep the list of packages and version pairs in a list, and search through the list. It'll be an O(N) solution. If you need an O(1) solution, use a dictionary instead of a list. What am I missing that is making this a hard problem?
 

粗鲁

新成员
加入
5月23日2019年
消息
4
编程经验
3-5
This seems like a very simple look up problem. Just keep the list of packages and version pairs in a list, and search through the list. It'll be an O(N) solution. If you need an [ICODE}O(1)[/ICODE] solution, use a dictionary instead of a list. What am I missing that is making this a hard problem?

你好
谢谢你的回应。
唯一的输入是TextFile,我需要确定每个TextFile / System是否仅基于TextFileS有效。
依赖的配置是用于分析的是要用于确定有效的内容以及无效的内容

是的,这从2个样本输入中显示为简单的解决方案。
我只列出了2个文件输入..
例如,以下输入文本文件

2
A,2
B,2
3
A,1,B,1
A,1,B,2
A,2,C,3


这应该产生成功,但我不确定如何确定代码中的逻辑。先前的示例我确实有代码中的解决方案。但上面的示例文本信息我不确定,如何设计逻辑。

我创建了一个包含包和版本信息的包类,并且从中创建了一个列表<PackageObjects>

以下代码应该产生失败

2
A,2
B,2
5
A,1,B,1
A,1,B,2
A,2,C,3
C,3,D,4
D,4,B,1

我不是在要求答案,但我是这种类型的逻辑设计,我试图为所有任务找到优雅的解决方案。
我研究了使用树木,拓扑图,并且想知道我的问题是否有更优雅的解决方案......
我有书面代码,可以处理最明显的示例输入,但是我上面列出的那些似乎不是一个简单的解决方案..也许你可以提供一些洞察力?
 
Last edited:

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,714
地点
切萨皮克,va.
编程经验
10+
例如,以下输入文本文件

2
A,2
B,2
3
A,1,B,1
A,1,B,2
A,2,C,3


这应该产生成功,但我不确定如何确定代码中的逻辑。
我不明白。为什么这会产生成功?从我对第1篇文章的理解,有包A2和B2,所以它应该失败,因为A1需要B1,A2需要C3。由于您没有A1或C3,因此安装将失败。
 

粗鲁

新成员
加入
5月23日2019年
消息
4
编程经验
3-5
我不明白。为什么这会产生成功?从我对第1篇文章的理解,有包A2和B2,所以它应该失败,因为A1需要B1,A2需要C3。由于您没有A1或C3,因此安装将失败。

对不起,我忘记在第一篇文章中提到第二个输入文件,应该产生失败。由于A,1需要B,1,我们试图安装B,2。
2.

我测试第一行以确定基于系统配置所需的PackageObject A1和PackageObject B2有效的PackectObject A1和PackageObject B2的PackageObject A1和PackageObject B2。此计划适用于大多数输入文件,但此设计不适用于100%的输入文件。

例如文件
2
A,2
B,2
5
A,1,B,1
A,1,B,2
A,2,C,3
C,3,D,4
D,4,B,1
应该产生失败,因为我认为第二列中的依赖性部分中的包对象B,1的包装对象B,超过一次。
虽然以下示例输入
2
A,2
B,2
3
A,1,B,1
A,1,B,2
A,2,C,3
应该成功

我可以努力修复修复,我正在寻求更多的体验观点来确定我的整体问题更优雅的解决方案

我很感激你的输入。

谢谢
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,714
地点
切萨皮克,va.
编程经验
10+
对不起,我忘记在第一篇文章中提到第二个输入文件,应该产生失败。由于A,1需要B,1,我们试图安装B,2。
2.
你确实提到了这一点。看到你的帖子#1的:
......,但下面的示例输入无效,因为a,1需要b,1,我们正在尝试安装b,2。

2
A,1 B,2
3
A,1,B,1
A,2,B,2
C,1,B,1

使用相同的逻辑,我不明白你为什么要说:

虽然以下示例输入
2
A,2
B,2
3
A,1,B,1
A,1,B,2
A,2,C,3
应该成功

In this case A1 is dependent on B1, but B2 is being installed according to the line that says A,1,B,1 .

And furthermore, it looks like A2 is dependent on C3 (due to line A,2,C,3 , but you only listed two packages being installed: A,2 and B,2.

你能解释为什么会成功的原因吗?
 

粗鲁

新成员
加入
5月23日2019年
消息
4
编程经验
3-5
你确实提到了这一点。看到你的帖子#1的:


使用相同的逻辑,我不明白你为什么要说:



In this case A1 is dependent on B1, but B2 is being installed according to the line that says A,1,B,1 .

And furthermore, it looks like A2 is dependent on C3 (due to line A,2,C,3 , but you only listed two packages being installed: A,2 and B,2.

你能解释为什么会成功的原因吗?
是的,我同意你的困惑,这就是我的混乱的困惑。
根据要求的示例文本文件应产生有效的结果。

唯一的解决方案是硬代码安装包在依赖项的每个列中引用。
但不是在同一列中。

我希望为设计更优雅的解决方案。
我不喜欢硬代码解决方案

我很感激你的帮助和输入。
我知道它的困惑
 

跳伞运动员

工作人员
加入
2019年4月6日
消息
2,714
地点
切萨皮克,va.
编程经验
10+
只要为什么输入文件分类为有效或无效的原因,您不应该有任何硬代码。到目前为止,我没有看到任何一致性。

您是否有问题陈述的实际链接?也许你忘了提到的额外限制,但是在原来的问题陈述?
 
最佳 底部