Giter Site home page Giter Site logo

bad_test's Introduction

bad_test

Завдання для програми Become a Developer

Завдання - знайти наступні чотири/шість значень:
  1. максимальне число в файлі;
  2. мінімальне число в файлі;
  3. медіану ( https://goo.gl/hiCwVw );
  4. середнє арифметичне значення ( https://goo.gl/XJeAjZ );
  5. найбільшу послідовність чисел (які ідуть один за одним), яка збільшується (опціонально)
  6. найбільшу послідовність чисел (які ідуть один за одним), яка зменьшується (опціонально)

Запропонований метод рішення повинен знаходити всі чотири/шість величин з файлу не більше ніж за 90 секунд.

Обмеження #1:

Будь-яка людина повинна мати можливість скористатися вашим методом. Це означає, наприклад, якщо для вирішення завдання Ви використовували свою власну програму, то будь-яка інша людина повинна мати можливість її скомпілювати/запустити і т.д.; якщо Ви використовували сторонні програми/утиліти, то будь-яка людина повинна мати можливість їх також встановити та користуватися; також будь-яка людина може взяти зовсім інший файл з іншим набором цілих чисел і знайти всі чотири вказані величини;

Обмеження #2:

при вирішенні задачі не можна використовувати нелегальне програмне забезпечення (пропрієтарне ПЗ, яке зазнало злому, піратські копії ПЗ, тощо). Також якщо ви запозичили ідею рішення, ПЗ або вихідні джерела (або якусь їх частину) у друга/колеги/в інтернеті/де-завгодно, то згадайте джерело.

РІШЕННЯ:

Рішення виглядає як API, що має лише один ендпоінт. Можна завантажити .txt файл, розміром до 100мб. Сервіс зчитає всі цілі числа з файлу та видасть відповіді разом з часом виконаня у вигляді JSON.

Сервіс задеплоїний у тестовий продакшн, тож він відповідає вимозі Обмеження #2 стосовно того що будь-хто має можливість скористатися методом. Для того щоб протестувати, перейдіть за посиланням: https://bad-test.foradmin.pp.ua Код сервісу пожна подивитись за посиланням: https://github.com/markraiter/bad_test

Для вирішення завдання використовується мова програмування Go (Golang), яка має потужний інструмент управління конкурентністю завдяки горутинам. Цей код використовує горутини для обчислення максимального та мінімального значень, медіани та суми чисел одночасно, що дозволяє використовувати конкурентність для прискорення обчислень. Також використовується оптимальний алгоритм для пошуку медіани та обчислення суми чисел. Завдяки цьому, файл, який запропоновано в завданні (https://drive.google.com/file/d/1LxSB6UEAVK0NLgU0ah5y0CBbD0gL_oO9/) обробляється за 4,9 секунд.

bad_test's People

Contributors

markraiter avatar

Watchers

 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.