В тильте с кодварс
505
22
Вот дают мне задачку.
Первым делом приходит на ум написать пару циклов и вернуть результат.
Затем понимаю, что такое решение слишком "некрасивое" и начинаю думать над средствами языка, которые помогут решить задачу буквально в одну строчку
И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.
После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?
Ps
Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе.
на самом деле невозможно сказать "забей на красоту решения, главное чтобы это работало"
работать ты явно собираешься не один в команде, так что красивый код и его правильное оформление - очень важная вещь.
Но главное все-таки не эти задачки на кодварс красиво оформленные, а правильное построение архитектуры проектов
haHAA сказал(а):↑Вот дают мне задачку.
Нажмите, чтобы раскрыть...без ссылки на профиль не разобраться
я вчера сел нарешал 19 задач что мне автоматически давало, ну вообще класть хотел хотел на красоту и практичность решения, потому что во первых всегда можно отрефакторить как я понял и за этим никто не следит, во вторых через пару дней я и не вспомню про эту площадку поскольку никогда не был фанатом олимпиадного программирования. плюс ко всему там можно выбирать задачи, то есть можно синтетически оформить свой профиль как захочешь если задасться такой целью, если вдруг это дерьмо действительно на собеседованиях спрашивают.
я вообще вчера старался отход ко сну затягивать как можно дольше что бы режим восстановить и в итоге проснулся в 4 утра то есть я считаю день удался, а то что там решения еле дышат ну блин там всегда и похуже найдется вот мой профиль если интересно krati_1 | Codewars
я повторю что это всего лишь дебильные олимпиадные задачи и нет особого смысла преувеличивать их важность
ясно там даже код не показывается в профиле S08mOau.png (1788×6120) (imgur.com)
SancheZzZz сказал(а):↑Вопрос не по сабжу, а для начинающих кодварс подходит(или есть другие сайты схожие) и что он в целом даёт для разработчика будущего?
Нажмите, чтобы раскрыть...Кодварс тебе поставит мозги на рельсы поиска алгоритмов и выявления закономерностей + позволит изучить язык + просмотр решений людей
Ну и некоторые задачки рано или поздно встретятся в работе в том или ином виде
Недавно только начал заниматься кодингом и сразу заметив такую тенденцию когда люди вместо того чтобы создать функцию и нормально так его реализовать рили так на умничах решают в одну строку. Но проанализровав ситуацию пришел к мнению что мне как новичку гоняться за этим нету смысла. Во вторых я уверен что скоро когда я пойду на собес и пройду его мне не будут платить за то что я красиво решаю, а за то что код работает, его можно фиксить, его можно читать и он работает без багов. Ну и к тому же мне удобнее когда код расположени сверху вниз с тремя переменными. Чем 6 скобок слева и 6 скобок справа и всё это стрелочная функция с callbackhaHAA сказал(а):↑Вот дают мне задачку.
Первым делом приходит на ум написать пару циклов и вернуть результат.
Затем понимаю, что такое решение слишком "некрасивое" и начинаю думать над средствами языка, которые помогут решить задачу буквально в одну строчку
И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.
После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?
Ps
Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе.
Нажмите, чтобы раскрыть...
Ectx сказал(а):↑Недавно только начал заниматься кодингом и сразу заметив такую тенденцию когда люди вместо того чтобы создать функцию и нормально так его реализовать рили так на умничах решают в одну строку.
Нажмите, чтобы раскрыть...они действительно умничают и их лайкают только за визуально более компактное и хитрожопое решение.
https://i.imgur.com/BMSkVso.png вот например мем задача, Best travel | Codewars справа топ1 решение, ну его очевидно по приколу залайкали. у меня возникли сложности потому что я перебор пар никогда не писал, а брутфорсом уходит в таймаут(12сек). такие задачи красиво не решишь, будет нечитаемо и\или медленно работать, сидеть думать как приплести сюда функциональщину - руин по факту
опытный кодер из контекста понимает когда применять функциональные рофлы, когда регэкспы, а когда императивные рофлы. ну и что бы понимать что лучше в данном случае, нужно владеть всем.
haHAA сказал(а):↑Вот дают мне задачку.
Первым делом приходит на ум написать пару циклов и вернуть результат.
Затем понимаю, что такое решение слишком "некрасивое" и начинаю думать над средствами языка, которые помогут решить задачу буквально в одну строчку
И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.
После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?
Ps
Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе.
Нажмите, чтобы раскрыть...Моё мнение такое:
Если ты не senior с 10+ годами стажа, то твоя цель на этом сервисе должна быть не решать задачи красиво или в одну строчку. Основная цель - просто решить задачу. Тем более не всегда решение в одну строку можно назвать хорошим или оптимальным. Решил задачу? Отлично, переходи к следующей.
Вот сейчас читаю страницу из learn js (https://learn.javascript.ru/ninja-code)И в гилисину с их иронией и цитат Лао-цзыkrati сказал(а):↑они действительно умничают и их лайкают только за визуально более компактное и хитрожопое решение.
https://i.imgur.com/BMSkVso.png вот например мем задача, Best travel | Codewars справа топ1 решение, ну его очевидно по приколу залайкали. у меня возникли сложности потому что я перебор пар никогда не писал, а брутфорсом уходит в таймаут(12сек). такие задачи красиво не решишь, будет нечитаемо и\или медленно работать, сидеть думать как приплести сюда функциональщину - руин по факту
опытный кодер из контекста понимает когда применять функциональные рофлы, когда регэкспы, а когда императивные рофлы. ну и что бы понимать что лучше в данном случае, нужно владеть всем.
Нажмите, чтобы раскрыть...
Ectx сказал(а):↑Вот сейчас читаю страницу из learn js (https://learn.javascript.ru/ninja-code)И в гилисину с их иронией и цитат Лао-цзыНажмите, чтобы раскрыть...Это все для новичков. Нормальные ниндзя пушат сразу минифицированный код.
haHAA сказал(а):↑И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.
После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?
Нажмите, чтобы раскрыть...Никакого комплекса "неполноценности", только удивлённое восклицание "Ах вот как ещё можно было решить", иногда за ним следует мысль "а как это вообще работает?", после чего я просто сажусь и разбираю другие варианты решения, чтоб понять чего я о языке не знаю или где моя логика повернула в другую сторону.
haHAA сказал(а):↑Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе.
Нажмите, чтобы раскрыть...Это методика олимпиадных задач называется "прекальк" (precalc).
haHAA сказал(а):↑После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?
Нажмите, чтобы раскрыть...1. конечно важно знать возможности языка, на котором пишешь, чтобы не городить велосипеды на квадратных колёсах (к примеру функции сортировки, поиска подстроки в строке и т.п.)
2. не путай красоту и производительность - это совершенно разные вещи.
пример из php.
есть такая интересная функция compact, которая по названию переменных собирает ассоциативный массив, выглядит "красиво":
$a = 1; $b = 'dva'; $c = compact('a', 'b'); // $c содержит &'a' => 1, 'b' => 'dva']
либо же можно самому написать "некрасиво":
$c = &'a' => $a, 'b' => $b]; // $c содержит то же самое
есть такой фреймворк ларавел, вот он грешит этой функцией, по красоте так сказать, а производительность в 1.5-2 раза ниже. кто-то скажет, что это экономия на спичках, но из таких мелочей могут собираться сотни миллисекунд.
ещё пример из пыхи.
когда нужно изменить массив по шаблону (например хочу все элементы в квадрат возвести) многие используют нативную array_map, выглядит красиво:
$arr = [1,2,3,4,5,6,7];
$arr = array_map(function($a) {
return $a*$a; }, $arr);
а можно сделать топорно:
foreach($arr as &$v) {
$v = $v*$v; }но выигрыш в производительности больше чем в 2раза.
поэтому нужно учитывать не эстетическую часть, а исполнительную. а "для красоты" достаточно писать в одном стиле, с одинаковыми отступами, именованием переменных, функций и т.п.
элегантные решения, в подавляющем большинстве, это не использование средств языка, а использование своей головы. т.к. язык - это всего лишь возможность реализации твоих мыслей
krati сказал(а):↑вот например мем задача, Best travel | Codewars
Нажмите, чтобы раскрыть...по-моему это задача на рекурсию. та даже если на три точки статично - всего лишь 3 цикла, не так страшно и выглядит
ke1evra сказал(а):↑по-моему это задача на рекурсию. та даже если на три точки статично - всего лишь 3 цикла, не так страшно и выглядит
Нажмите, чтобы раскрыть...ну ты конечно здорово придумал просто сказать, что задача, которую привели в пример как сложную, не такая уж и сложная, при том что версия для пхп там есть.
вот другой пример Next smaller number with the same digits | Codewars тут версии для пхп нет так что можешь снова блеснуть и дать свою оценку(визуально выглядит супер изи).
krati сказал(а):↑ну ты конечно здорово придумал просто сказать, что задача, которую привели в пример как сложную, не такая уж и сложная, при том что версия для пхп там есть.
Нажмите, чтобы раскрыть...я не сказал, что это "просто". я сказал, что три цикла это вполне читабельный код, а с рекурсией он будет ещё более читабельней.
krati сказал(а):↑у меня возникли сложности потому что я перебор пар никогда не писал, а брутфорсом уходит в таймаут(12сек). такие задачи красиво не решишь, будет нечитаемо и\или медленно работать
Нажмите, чтобы раскрыть...у тебя возникли сложности, потому что это рекурсия, а рекурсия почти всегда сложно в реализации, и особенно сложно, когда ты даже не понимаешь, что это рекурсия)
krati сказал(а):↑вот другой пример Next smaller number with the same digits | Codewars тут версии для пхп нет так что можешь снова блеснуть и дать свою оценку(визуально выглядит супер изи).
Нажмите, чтобы раскрыть...моя оценка - неважно какой язык, алгоритм от этого не меняется. с помощью mod разбиваешь число на цифры, а дальше как из первой задачки - комбинируешь варианты. особые извращенцы сделают это через строки, т.к. этот вариант легче
ke1evra сказал(а):↑комбинируешь варианты
Нажмите, чтобы раскрыть...там есть закономерность и можно решить без перебора
суть не в том что задачи сложные для решения, они не односложные и плохо ложатся на синтаксический сахар и стандартную библиотеку. по этому короткие решения скорее всего будут уродливыми жертвами минификации.
ke1evra сказал(а):↑ты даже не понимаешь, что это рекурсия)
Нажмите, чтобы раскрыть...ну тебе с высоты пхп макаки виднее
Тема закрыта
-
ЗаголовокОтветов ПросмотровПоследнее сообщение
-
Сообщений:1
Просмотров:0
-
kukarekinoa 18 Apr 2024 в 05:32Сообщений: 7 18 Apr 2024 в 05:32
Сообщений:7
Просмотров:10
-
Сообщений: 31 18 Apr 2024 в 04:52
Сообщений:31
Просмотров:30
-
Сообщений:12
Просмотров:19
-
ДомашнийМальчик 18 Apr 2024 в 04:22Сообщений: 2 18 Apr 2024 в 04:22
Сообщений:2
Просмотров:8