data_analyst_edadeal's People
data_analyst_edadeal's Issues
Решение первой задачи
Тут тоже недавно проходил эти задачи перед вакансией и после решил погуглить первую задачу, вдруг есть еще более простые решения, нежели у меня. Слишком неоправданно сложные модели ты предлагаешь. Задача решается в 1 строчку.
У нас есть какой-то набор конфет: интересно поробовать посчитать сколько конфет каждого вида. Например в 1 варианте решения 3 "а", 4 "б", 5 "с". Как из этого мы можем понять на сколько равных частей их поделить? Найти наибольший общий делитель. Для (3, 4, 5) НОД = 1.
Для второго примера (2, 2, 4) НОД = 2.
Таким образом вся задача сводится к одной простой логике:
- считаем количество конфет каждого вида (можно обезличенно в списке, не парясь со словарем, потому что нам не особо важен вид конфет, а нужно только их кол-во)
- находим их общий НОД (обычно его находят для двух чисел, поэтому чтобы найти общий - нужно просто итерироваться следующим образом: находим НОД первых двух, находим НОД третьего числа с результатом первых двух, НОД 4-го числа с предыдущим рез-том и т.д. (функция reduce)).
Итого код который надо вписать есть одна простая строчка (ну и плюс два иморта gcd из math и reduce из functools, стандартных библиотек питона):
reduce(gcd, [x.count(v) for v in set(x)])
Все тесты прошла, время и память получились такие (в компиляторе Яндекса):
67ms | 4.01Mb
На выборке из 8 букв в списке получились следующие (%%timeit питон):
1.69 µs ± 146 ns per loop
Не представляю сколько у тебя эта задача памяти жрет со временем, учитывая твою сложность минимум О(n^3)
Ну и после нашел еще быстрее решение (по скорости):
reduce(gcd, map(x.count, set(x)))
1.04 µs ± 71.6 ns per loop
Понимаю, что задачу ты решал года два назад, но вдруг кому-то она будет все еще актуальна:)
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
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.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.