好的,所以这可能听起来有点奇怪,但在这里它.
我正在当地大学教授数据结构和算法实验室,并希望为我的学生提供各种流畅和有趣的体验.到目前为止,我使用了一个简单的git存储库,每个学生都分叉了,每当他们完成一个任务时,他们发出了一个push + pull请求,我会查看他们的代码,如果一切正常,我会将pull请求合并到main回购.这很好用,但我想做一些更有趣的事情.
该实验室正在用C语言教学(甚至不是C++)(不,我不想进入任何关于为什么另一种语言会更好的论战).我想要做的就是像学生制作的每次推动一样运行Jenkins构建,这可以验证手头任务的一些预定义测试.
例如,对于第2周,我会给他们一份带有列表的家庭作业.我想自己编写这个功课的测试,然后自动验证他们使用这些测试做了什么.
我有什么:
++一个非常好的'附加'到所有这些将是使用像声纳作为代码验证器和检查其分支内的重复代码(以查看是否有人复制了其他人的答案)
我是通过去Jenkins服务器,思考声纳等而走上正轨吗?我离开了吗?我不认为这是不可能的.它可能很难,是的,但这会让它变得有趣^^
我想要的'流量'是:
我代表亲爱的学生们,谢谢你们.
我最近开始实现一些数据结构,并且,我正在尝试使所有内容尽可能“可扩展”。
public abstract class AbstractNode<E extends Element, U extends AbstractNode<E, U>> { ... }
public class BinarySearchTree<Element> extends Tree<Element, Node<Element>> { ... }
public class Element implements Cloneable { ... }
public class Node<E extends Element> extends AbstractNode<E, Node<E>> { ... }
public abstract class Tree<E extends Element, T extends AbstractNode<E, T>> { ... }
Run Code Online (Sandbox Code Playgroud)
BinarySearchTree消息提示我在课堂上遇到很多错误Bound mismatch: The type Element is not a valid substitute for the bounded parameter <E extends Element> of the type Node<E>。为什么!?我在那里做错了什么?
另外,在BinarySearchTree类中,我得到了 …