Giter VIP home page Giter VIP logo

icontext-test-task's Introduction

Тестовое задание для вакансии в компании iConText.

Задание следующее:

Введение

Есть 36 ячеек (ноль не считаем) и 18 фишек. В одну ячейку можно положить только одну фишку. Пример разложения:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 ... 36

$ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $ $

Нужно найти и сложить в тестовый файл все возможные варианты таких разложений.

Задача

Вход - два целых числа: fieldsCount - количество ячеек, chipCount - количество фишек (нужен какой-то интерфейс). Требуется предоставить все возможные способы расстановки всех фишек по ячейкам. В одну ячейку можно положить только одну фишку.

Выход - текстовый файл, в первой строке указывающий число вариантов, а далее содержащий все подходящие варианты. Если вариантов менее 10, файл должен содержать только текст "Менее 10 вариантов". Приветствуется самый быстрый и функциональный (протестированный относительно входных данных) вариант.

РЕШЕНИЕ:

Пакет опубликован в Composer https://packagist.org/packages/s123/icontexttest

Установка глобально: "composer global require s123/icontexttest:dev-master" . Впервые столкнулся с реализацией консольной утилиты на PHP, намучался с допиливанием её для работы при глобальной установке с публичного репозитория composer-а. Локально в среде разработки все работало сразу :) Подавляющее большинство коммитов это попытка таки запустить это приложение в консоли при глобальной установке.

В репозитории также есть четыре файла, pishi-suda-little.txt , pishi-suda-10.txt , pishi-suda.txt и pishi-suda-big.txt, результаты работы программы. На случай если нужно посмотреть на вывод, но не хочется ставить этот пакет себе на машину.

Программа работает через командную строку. Первым параметром принимает количество ячеек, вторым параметром количество фишек, третий параметр необязательный, имя файла куда необходимо записывать результаты. По-умолчанию записывает в файл "result.txt" в текущей директории.

Задачу решил "в лоб" простым перебором. Возможно и есть какие-то хитрые решения основанные на высшей математике, теории множеств и т.д., но я в этом не силен.

Также учтены варианты на различные окончания слова "вариант" в первой записи файла:

*1 - вариант

*2, *3, *4 - варианта

остальное - вариантов

11, 12, 13, 14 это исключения - вариантов

Операции чтения и записи файлов происходят небольшими кусками во избежании исчерпания ресурсов оперативной памяти и зависания компьютера.

icontext-test-task's People

Contributors

0th0n avatar

Watchers

James Cloos 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.