Git Product home page Git Product logo

alg_c's Introduction

ALG_C

ALG_C personal test private

ALG_C compression based Manta_Coding_Challenge.pdf

There are 2 solutions: one based on strings, and one based on vectors. Both are multithreaded(parallel). encode_alg_c_proc() for the string "naive" approach encode_alg_c_vec_proc() for the vector based

String Solution follow the example given in the PDF and tries to take the largest pattern which is closest to the main iterating "cursor". In this solution was the "naive" solution following the example.

Vector solution is faster and safer as it works properly on utf8 , on strings that are smaller than 50 chars, String solution may seem faster because of the creation of vectors, but the vector solution scales a lot better. The Vector solution showed 20-30% better performance using 100k length random generated string.

The best and safest solution would be using Graphemes, but as a test external libraries/modules/crates are not recommended. I tried to stick to the standalone and things I wrote on the spot. Implementing Graphemes on the spot would have taken a lot more time than the allowed time so I did not go that route.

*Forgot to adapt decode function for utf8, should be done the same but using char.len_utf8() to make sure the slices are the right size. Should work properly with alphanumerics.

alg_c's People

Contributors

apokalip avatar

Watchers

Adam Reif avatar  avatar

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.