haHAA

Пользователь

Регистрация: 25.03.2017

Сообщения: 1079

Рейтинг: 726

haHAA

Регистрация: 25.03.2017

Сообщения: 1079

Рейтинг: 726

img

Вот дают мне задачку.

Первым делом приходит на ум написать пару циклов и вернуть результат.

Затем понимаю, что такое решение слишком "некрасивое" и начинаю думать над средствами языка, которые помогут решить задачу буквально в одну строчку 

 

И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.

 

После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?

 

Ps

Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе. 

Дринбибиска

Пользователь

Регистрация: 28.05.2013

Сообщения: 4155

Рейтинг: 1840

Дринбибиска

Регистрация: 28.05.2013

Сообщения: 4155

Рейтинг: 1840

img

Ну так это опыт и умение гуглить peepothink.png?1627073265

Когда нибудь и ты к этому придёшь, только я бы советовал делать упор  на производительность, а не на эстетическое удовлетворение. Хотя одно другому не мешает

PS: иногда 1 строки затрудняют восприятие кода Pepega.png?1599561436

 

Just_a_Noname

Пользователь

Регистрация: 04.09.2013

Сообщения: 13413

Рейтинг: 10541

Нарушения: 10

Just_a_Noname

Регистрация: 04.09.2013

Сообщения: 13413

Рейтинг: 10541

Нарушения: 10

img

самое красивое, что ты можешь писать в коде, это комментарии

Islamic_crusader

Пользователь

Регистрация: 29.11.2017

Сообщения: 5134

Рейтинг: 5262

Islamic_crusader

Регистрация: 29.11.2017

Сообщения: 5134

Рейтинг: 5262

на самом деле невозможно сказать "забей на красоту решения, главное чтобы это работало"

работать ты явно собираешься не один в команде, так что красивый код и его правильное оформление - очень важная вещь.

Но главное все-таки не эти задачки на кодварс красиво оформленные, а правильное построение архитектуры проектов

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 12864

Рейтинг: 5145

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 12864

Рейтинг: 5145

Красота это зоопарк функций высшего порядка и декларативное бесточечное программирование, а также когда ты создаешь себе вспомогательный синтаксис через макрос лиспа PekaPled.png?1619501252

KRATI

Пользователь

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

KRATI

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

img
haHAA сказал(а):

Вот дают мне задачку.

Нажмите, чтобы раскрыть...

без ссылки на профиль не разобраться

 

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

 

я вообще вчера старался отход ко сну затягивать как можно дольше что бы режим восстановить и в итоге проснулся в 4 утра то есть я считаю день удался, а то что там решения еле дышат ну блин там всегда и похуже найдется вот мой профиль если интересно krati_1 | Codewars

 

я повторю что это всего лишь дебильные олимпиадные задачи и нет особого смысла преувеличивать их важность

 


 

 

 

ясно там даже код не показывается в профиле KEKW.png?1616515034S08mOau.png (1788×6120) (imgur.com)

haHAA

Пользователь

Регистрация: 25.03.2017

Сообщения: 1079

Рейтинг: 726

haHAA

Регистрация: 25.03.2017

Сообщения: 1079

Рейтинг: 726

img

Вот ссылка на то самое решение через словарь

SancheZzZz

Пользователь

Регистрация: 29.10.2016

Сообщения: 1630

Рейтинг: 1188

SancheZzZz

Регистрация: 29.10.2016

Сообщения: 1630

Рейтинг: 1188

Вопрос не по сабжу, а для начинающих кодварс подходит(или есть другие сайты схожие) и что он в целом даёт для разработчика будущего?

mugiwara2

Пользователь

Регистрация: 19.06.2018

Сообщения: 2776

Рейтинг: 1355

mugiwara2

Регистрация: 19.06.2018

Сообщения: 2776

Рейтинг: 1355

img

не важно красивое решение или нет, если любое решение таких задачек это говнокод

Дринбибиска

Пользователь

Регистрация: 28.05.2013

Сообщения: 4155

Рейтинг: 1840

Дринбибиска

Регистрация: 28.05.2013

Сообщения: 4155

Рейтинг: 1840

img
SancheZzZz сказал(а):

Вопрос не по сабжу, а для начинающих кодварс подходит(или есть другие сайты схожие) и что он в целом даёт для разработчика будущего?

Нажмите, чтобы раскрыть...

Кодварс тебе поставит мозги на рельсы поиска алгоритмов и выявления закономерностей + позволит изучить язык + просмотр решений людей

Ну и некоторые задачки рано или поздно встретятся в работе в том или ином виде

YoshkinKot

Пользователь

Регистрация: 20.06.2016

Сообщения: 12864

Рейтинг: 5145

YoshkinKot

Регистрация: 20.06.2016

Сообщения: 12864

Рейтинг: 5145

SancheZzZz сказал(а):

Вопрос не по сабжу, а для начинающих кодварс подходит(или есть другие сайты схожие) и что он в целом даёт для разработчика будущего?

Нажмите, чтобы раскрыть...

Есть еще codeforces AYAYA.png?1621091150

Но он точно больше про спортивное

Ectx

Пользователь

Регистрация: 20.07.2020

Сообщения: 1509

Рейтинг: 695

Ectx

Регистрация: 20.07.2020

Сообщения: 1509

Рейтинг: 695

img
haHAA сказал(а):

Вот дают мне задачку.

Первым делом приходит на ум написать пару циклов и вернуть результат.

Затем понимаю, что такое решение слишком "некрасивое" и начинаю думать над средствами языка, которые помогут решить задачу буквально в одну строчку 

 

И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.

 

После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?

 

Ps

Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе. 

Нажмите, чтобы раскрыть...

Недавно только начал заниматься кодингом и сразу заметив такую тенденцию когда люди вместо того чтобы создать функцию и нормально так его реализовать рили так на умничах решают в одну строку. Но проанализровав ситуацию пришел к мнению что мне как новичку гоняться за этим нету смысла. Во вторых я уверен что скоро когда я пойду на собес и пройду его мне не будут платить за то что я красиво решаю, а за то что код работает, его можно фиксить, его можно читать и он работает без багов. Ну и к тому же мне удобнее когда код расположени сверху вниз с тремя переменными. Чем 6 скобок слева и 6 скобок справа и всё это стрелочная функция с callback

HiThere

Пользователь

Регистрация: 24.06.2016

Сообщения: 3470

Рейтинг: 2602

HiThere

Регистрация: 24.06.2016

Сообщения: 3470

Рейтинг: 2602

Лучше думать над time/space complexity, а не над красотой решения в 1 строчку

KRATI

Пользователь

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

KRATI

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

img
Ectx сказал(а):

Недавно только начал заниматься кодингом и сразу заметив такую тенденцию когда люди вместо того чтобы создать функцию и нормально так его реализовать рили так на умничах решают в одну строку.

Нажмите, чтобы раскрыть...

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

 

https://i.imgur.com/BMSkVso.png вот например мем задача, Best travel | Codewars справа топ1 решение, ну его очевидно по приколу залайкали. у меня возникли сложности потому что я перебор пар никогда не писал, а брутфорсом уходит в таймаут(12сек). такие задачи красиво не решишь, будет нечитаемо и\или медленно работать, сидеть думать как приплести сюда функциональщину - руин по факту

 

опытный кодер из контекста понимает когда применять функциональные рофлы, когда регэкспы, а когда императивные рофлы. ну и что бы понимать что лучше в данном случае, нужно владеть всем.

Mask of Sadness

Пользователь

Регистрация: 12.06.2020

Сообщения: 2437

Рейтинг: 1377

Mask of Sadness

Регистрация: 12.06.2020

Сообщения: 2437

Рейтинг: 1377

Есть такое

Лично мне кажется, что решение с двумя циклами куда более понятное, чем что-то типа

arr.fold((_) => abracadbra()).join().toList().asMap().entries.reversed

max0120842

Пользователь

Регистрация: 21.09.2016

Сообщения: 211

Рейтинг: 31

max0120842

Регистрация: 21.09.2016

Сообщения: 211

Рейтинг: 31

haHAA сказал(а):

Вот дают мне задачку.

Первым делом приходит на ум написать пару циклов и вернуть результат.

Затем понимаю, что такое решение слишком "некрасивое" и начинаю думать над средствами языка, которые помогут решить задачу буквально в одну строчку 

 

И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.

 

После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?

 

Ps

Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе. 

Нажмите, чтобы раскрыть...

Моё мнение такое:

Если ты не senior с 10+ годами стажа, то твоя цель на этом сервисе должна быть не решать задачи красиво или в одну строчку. Основная цель - просто решить задачу. Тем более не всегда решение в одну строку можно назвать хорошим или оптимальным. Решил задачу? Отлично, переходи к следующей. 

Ectx

Пользователь

Регистрация: 20.07.2020

Сообщения: 1509

Рейтинг: 695

Ectx

Регистрация: 20.07.2020

Сообщения: 1509

Рейтинг: 695

img
krati сказал(а):

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

 

https://i.imgur.com/BMSkVso.png вот например мем задача, Best travel | Codewars справа топ1 решение, ну его очевидно по приколу залайкали. у меня возникли сложности потому что я перебор пар никогда не писал, а брутфорсом уходит в таймаут(12сек). такие задачи красиво не решишь, будет нечитаемо и\или медленно работать, сидеть думать как приплести сюда функциональщину - руин по факту

 

опытный кодер из контекста понимает когда применять функциональные рофлы, когда регэкспы, а когда императивные рофлы. ну и что бы понимать что лучше в данном случае, нужно владеть всем.

Нажмите, чтобы раскрыть...

Вот сейчас читаю страницу из learn js (https://learn.javascript.ru/ninja-code)

И в гилисину с их иронией и цитат Лао-цзы

DrZoidberg

Пользователь

Регистрация: 17.01.2017

Сообщения: 1445

Рейтинг: 425

Нарушения: 70

DrZoidberg

Регистрация: 17.01.2017

Сообщения: 1445

Рейтинг: 425

Нарушения: 70

Ectx сказал(а):

Вот сейчас читаю страницу из learn js (https://learn.javascript.ru/ninja-code)

И в гилисину с их иронией и цитат Лао-цзы

Нажмите, чтобы раскрыть...

Это все для новичков. Нормальные ниндзя пушат сразу минифицированный код.

Jaood

Пользователь

Регистрация: 09.09.2019

Сообщения: 3405

Рейтинг: 2051

Jaood

Регистрация: 09.09.2019

Сообщения: 3405

Рейтинг: 2051

haHAA сказал(а):

И вот я уже думаю не над задачей, а над красотой решения, потому что как только я сабмитну, то покажется топ решений, которые в 99% сделаны в одну строчку какими-то лютыми типами, использующими абсолютно весь синтаксический сахар на 10000%.

 

После такого обычно ловлю микротильт и ощущение того, что я мусор, не умеющий красиво решать поставленную задачу. У вас бывает такое или тут одни адепты "работает и хорошо"? И правильно ли это заморачиваться над "красотой" на начальном этапе или же это придет лишь с опытом?

Нажмите, чтобы раскрыть...

Никакого комплекса "неполноценности", только удивлённое восклицание "Ах вот как ещё можно было решить", иногда за ним следует мысль "а как это вообще работает?", после чего я просто сажусь и разбираю другие варианты решения, чтоб понять чего я о языке не знаю или где моя логика повернула в другую сторону.

 

haHAA сказал(а):

Ещё сегодня в решениях задачи на перевод римских чисел в арабские увидел топ-2 решение, где чел создал словарь (мапу) на 1к+ чисел и возвращал нужное по ключу. С этого нереально в голос улетел. Мне кажется он хотел высмеять всех киндервундов-гениев алгоритмики на кодварсе.

Нажмите, чтобы раскрыть...

Это методика олимпиадных задач называется "прекальк" (precalc).

ke1evra

Пользователь

Регистрация: 25.12.2012

Сообщения: 1305

Рейтинг: 1185

ke1evra

Регистрация: 25.12.2012

Сообщения: 1305

Рейтинг: 1185

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 цикла, не так страшно и выглядит

KRATI

Пользователь

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

KRATI

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

img
ke1evra сказал(а):

по-моему это задача на рекурсию. та даже если на три точки статично - всего лишь 3 цикла, не так страшно и выглядит

Нажмите, чтобы раскрыть...

ну ты конечно здорово придумал просто сказать, что задача, которую привели в пример как сложную, не такая уж и сложная, при том что версия для пхп там есть.

 

вот другой пример Next smaller number with the same digits | Codewars тут версии для пхп нет так что можешь снова блеснуть и дать свою оценку(визуально выглядит супер изи).

ke1evra

Пользователь

Регистрация: 25.12.2012

Сообщения: 1305

Рейтинг: 1185

ke1evra

Регистрация: 25.12.2012

Сообщения: 1305

Рейтинг: 1185

krati сказал(а):

ну ты конечно здорово придумал просто сказать, что задача, которую привели в пример как сложную, не такая уж и сложная, при том что версия для пхп там есть.

Нажмите, чтобы раскрыть...

я не сказал, что это "просто". я сказал, что три цикла это вполне читабельный код, а с рекурсией он будет ещё более читабельней.

 

krati сказал(а):

у меня возникли сложности потому что я перебор пар никогда не писал, а брутфорсом уходит в таймаут(12сек). такие задачи красиво не решишь, будет нечитаемо и\или медленно работать

Нажмите, чтобы раскрыть...

у тебя возникли сложности, потому что это рекурсия, а рекурсия почти всегда сложно в реализации, и особенно сложно, когда ты даже не понимаешь, что это рекурсия)

 

krati сказал(а):

вот другой пример Next smaller number with the same digits | Codewars тут версии для пхп нет так что можешь снова блеснуть и дать свою оценку(визуально выглядит супер изи).

Нажмите, чтобы раскрыть...

моя оценка - неважно какой язык, алгоритм от этого не меняется. с помощью mod разбиваешь число на цифры, а дальше как из первой задачки - комбинируешь варианты. особые извращенцы сделают это через строки, т.к. этот вариант легче

KRATI

Пользователь

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

KRATI

Регистрация: 25.09.2021

Сообщения: 2788

Рейтинг: 1306

img
ke1evra сказал(а):

комбинируешь варианты

Нажмите, чтобы раскрыть...

там есть закономерность и можно решить без перебора

 

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

 

ke1evra сказал(а):

ты даже не понимаешь, что это рекурсия)

Нажмите, чтобы раскрыть...

ну тебе с высоты пхп макаки виднее