Git Product home page Git Product logo

cs-review's People

Contributors

mmnaseri avatar rfarhanian avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

cs-review's Issues

Implement monitoring facility

We should have a facility that would monitor data structures and their respective states and reports back a failure on their part to abide by the intrinsic properties

Add support for external feature control

Right now, controlling a feature requires extending the original class for the data structure which, while trivial, is tedious.

It would be far better if there was a facility for proxying data structures and setting feature-base expectations on the data structure so that we could arbitrarily secure any given data structure of choice for any given task.

One example would be:

final SearchTree<Integer, ? extends TreeNode<Integer>> tree;
tree = new BinarySearchTree<Integer, BinaryTreeNode<Integer>>();
final SearchTree<Integer, ? extends TreeNode<Integer>> securedTree;
securedTree = givenDataStructure(tree)
                            .observe(inOrderWalkYieldsSortedValues())
                            .observe(minimumIsOnTheLeftMostNode())
                            .observe(maximumIsOnTheRightMostNode())
                            .observe(nodeIsGreaterOrEqualToItsLeftChild())
                            .observe(nodeIsLessThanItsRightChild())
                            .observe(nodeIsGreaterOrEqualToItsLeftChild())
                            .secure();

At this point, if the tree is not honoring any of the features, we will see MonitorFailureExceptions. Features will be checked before and after the execution of each operation, ensuring that the data structure is always in a valid state.

(We could probably monitor the data structure upon creation, and then after each operation, and it would suffice).

This should be theoretically implementable if features can be observed from the outside, which is not always the case. In such cases, a strategy is probably required and I should probably think of a way to incorporate that into the DSL.

Improving LinearSelector algorithm

LinearSelector uses divide and conquer algorithm to split, partition and find the order. When the order is not the pivot index, we don't need to include it in the next sub problem.

Investigate Kruskal's algorithm for finding a minimum spanning tree

The algorithm described by the book does not return the minimum tree. This is demonstrated by the book on page 633 of the ebook where the result has a total weight of 37, while running the Prim algorithm from the book returns a total of 35, as seen on page 635.

Figure out why this behavior is not considered as invalid.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.