Программирование на лету -- новый тренд ?

z80
Posts: 13
Joined: 25 Jan 2018 02:43

Re: Программирование на лету -- новый тренд ?

Post by z80 »

Sergunka wrote: 28 Jan 2018 18:16 ...
Так же я с сыном старшим поиграл в олимипийские игры по програмированию где надо за 4 часа попытаться решить 3 задачи... мне это особо ничего не дало - сыну очень много дало для учебы в Беркли на CS. В Беркли все построенно на тайм меджменте дают очки за каждую задачу сделанную чуть раньше ну и тд.
...
А не могли бы Вы дать ссылку на какие-нибудь ресурсы по олимпийским задачкам? Хочу сына тоже начать учить.

Какого возраста был Ваш сын когда Вы эти задачки решали?
nyekimov
Уже с Приветом
Posts: 2761
Joined: 11 Jul 2015 19:01
Location: Chicago

Re: Программирование на лету -- новый тренд ?

Post by nyekimov »

z80 wrote: 29 Jan 2018 20:31
Sergunka wrote: 28 Jan 2018 18:16 ...
Так же я с сыном старшим поиграл в олимипийские игры по програмированию где надо за 4 часа попытаться решить 3 задачи... мне это особо ничего не дало - сыну очень много дало для учебы в Беркли на CS. В Беркли все построенно на тайм меджменте дают очки за каждую задачу сделанную чуть раньше ну и тд.
...
А не могли бы Вы дать ссылку на какие-нибудь ресурсы по олимпийским задачкам? Хочу сына тоже начать учить.

Какого возраста был Ваш сын когда Вы эти задачки решали?
leetcode.com, hackerrank.com, codingame.com.
User avatar
Мальчик-Одуванчик
Уже с Приветом
Posts: 15526
Joined: 27 Sep 2007 22:53

Re: Программирование на лету -- новый тренд ?

Post by Мальчик-Одуванчик »

Prosche wrote: 29 Jan 2018 18:09 Вообще использование рекурсии моветон.
Если рекурсия с хвостом - то как бы наоборот.
User avatar
Prosche
Уже с Приветом
Posts: 8090
Joined: 08 Nov 2004 12:24
Location: GA

Re: Программирование на лету -- новый тренд ?

Post by Prosche »

Мальчик-Одуванчик wrote: 29 Jan 2018 21:50 Если рекурсия с хвостом - то как бы наоборот.
Что за рекурсия с хвостом? Вы про хвостовую рекурсию? И что там наоборот? Сидеть и молиться, что компилятор интерпретирует ее как набор последующих вызовов, почистит стек и не завалит аппу уже на 1000000 вызове? Вместо того чтобы вызвать цикл? Поясните плз.
User avatar
John Smith
Уже с Приветом
Posts: 1680
Joined: 04 Oct 2006 23:30
Location: Las Vegas

Re: Программирование на лету -- новый тренд ?

Post by John Smith »

а всякие tree traversal чем делать, чтоб не моветон?
User avatar
Serguei666
Уже с Приветом
Posts: 18917
Joined: 11 Jul 2003 01:00

Re: Программирование на лету -- новый тренд ?

Post by Serguei666 »

Prosche wrote: 29 Jan 2018 18:09
Ion Tichy wrote: 28 Jan 2018 23:50 [Я не успел, завяз в граничных условиях рекурсии.
Эта задача решается не рекурсией. Вообще использование рекурсии моветон.
А вы предлагаете обойти дерево, если не рекурсивно?
User avatar
Sergunka
Уже с Приветом
Posts: 34164
Joined: 03 Dec 2000 10:01
Location: Vladivostok->San Francisco->Los Angeles->San Francisco

Re: Программирование на лету -- новый тренд ?

Post by Sergunka »

z80 wrote: 29 Jan 2018 20:31
Sergunka wrote: 28 Jan 2018 18:16 ...
Так же я с сыном старшим поиграл в олимипийские игры по програмированию где надо за 4 часа попытаться решить 3 задачи... мне это особо ничего не дало - сыну очень много дало для учебы в Беркли на CS. В Беркли все построенно на тайм меджменте дают очки за каждую задачу сделанную чуть раньше ну и тд.
...
А не могли бы Вы дать ссылку на какие-нибудь ресурсы по олимпийским задачкам? Хочу сына тоже начать учить.

Какого возраста был Ваш сын когда Вы эти задачки решали?
http://usaco.org/index.php?page=resources

 Начали мы с программизма довольно серьезно уже с 14 лет написали игрушку для Android

https://habrahabr.ru/post/264117/

В 10 классе попробовали Гугл Джем - не пошел... потом олимпиаду usaco.org там проще с уровнем вхождения там разные дивизионы начинаешь с бронзы. Мы выбрались до золотого. Играли пару лет, но после золотого это просто вынос мозга... в общем завязали.
"A patriot must always be ready to defend his country against his government." Edward Abbey
User avatar
Prosche
Уже с Приветом
Posts: 8090
Joined: 08 Nov 2004 12:24
Location: GA

Re: Программирование на лету -- новый тренд ?

Post by Prosche »

Serguei666 wrote: 29 Jan 2018 22:56
Prosche wrote: 29 Jan 2018 18:09
Ion Tichy wrote: 28 Jan 2018 23:50 [Я не успел, завяз в граничных условиях рекурсии.
Эта задача решается не рекурсией. Вообще использование рекурсии моветон.
А вы предлагаете обойти дерево, если не рекурсивно?
Я предлагаю выяснить для начала как вы будете его обходить, если в глубину то примените стек, если в ширину то очередь.
Larsonsager
Уже с Приветом
Posts: 1860
Joined: 02 Sep 2016 20:26

Re: Программирование на лету -- новый тренд ?

Post by Larsonsager »

OtherSide wrote: 29 Jan 2018 13:43
lxf wrote: 28 Jan 2018 23:40
Falcon wrote: 28 Jan 2018 22:40 Большинство работы в современном программировании сводится к достаточно стандартным вещам.
Ну вот вам пример. Индус просит написать код на любоя языке (я выбрал C#), который сливает и сортирует 2 линкованных листа в один.
Я пишу код из 1 строчки. Индус недоволен, говорит, что надо на низкому уровне.

Code: Select all

var resultList = list1.Concat(list2).OrderBy(e => e).ToList();
Вопрос. Как часто на работе нам приходится изобретать колесо ? И нужны ли такие изобретатели ?
По моему вы придуриваетесь. Из условия задачи (любой язык) ясно, что от вас просят алгоритм. Выбрать библиотеку, в котором алгоритм уже реализован, это читерство.
А писать велосипед, чуствительный к памяти и быстродействию приходится очень часто.
Скорее всего, задачу сформулировали здесь не так, как на собеседовании. На собеседовании, вероятно, была осмысленная задача слить два сортированных списка в один опять же сортированный. То есть реализовать один из шагов сортировки слияния, который действительно может понадобиться и в других приложениях.

Между прочим, в шарпе ToList() возвращает вовсе не "линкованный лист", а массив.
Larsonsager
Уже с Приветом
Posts: 1860
Joined: 02 Sep 2016 20:26

Re: Программирование на лету -- новый тренд ?

Post by Larsonsager »

lxf wrote: 29 Jan 2018 00:13
Ion Tichy wrote: 28 Jan 2018 23:50 Последняя моя задача: у Вас есть бездонный кошелек с монетами из конечного множества целых номиналов (напр. пени, дайм, никель, квотер или копейка, двушка, алтын, пятак). Вам дается (а) массив номиналов и (б) целое положительное число Д. Ваша программа должна напечатать кол-во способов набора Д Вашими монетами. Час времени. Я не успел, завяз в граничных условиях рекурсии.
У меня уже 2 индуса подобное спрашивали. Одному я решил, но из дома. На лету у доски не вышло. Но туда и не захотел поступать. А второму индусу переслал решение после интервью. Ну я просто не помнил наизусть, что я там написал 2 месяца тому назад.

Моя идея решения было проста. Каждому номиналу приписываем двоичный вес, а потом крутим цикл по количеству номиналов, по всем двоичным единицам цепляем соответсвующий номинал и прибавляем к сумме. Как бы двоичные веса маппируются на номиналы. Если количество номиналов укладывается в стандартную разрядную сетку (32 или 64), то можно обойтись родными целыми числами. Иначе придётся имитировать двоичную разрядную сетку массивом из bool, например.
Это классическая задача на динамику. Если знать, что она на динамику, то придумать алгоритм можно за минуту, еще минут 5-40 на реализацию и отладку, по обстоятельствам.
User avatar
lxf
Уже с Приветом
Posts: 13480
Joined: 04 Jul 2001 09:01
Location: Boston, MA

Re: Программирование на лету -- новый тренд ?

Post by lxf »

Larsonsager wrote: 30 Jan 2018 01:39 Между прочим, в шарпе ToList() возвращает вовсе не "линкованный лист", а массив.
Лист возвращает. Но это детали. Простой список легко переводится в связаный.
User avatar
Херовимчик
Уже с Приветом
Posts: 5284
Joined: 27 Sep 2008 21:48
Location: Moscow-Seattle-SFBA

Re: Программирование на лету -- новый тренд ?

Post by Херовимчик »

lxf wrote: 30 Jan 2018 05:25
Larsonsager wrote: 30 Jan 2018 01:39 Между прочим, в шарпе ToList() возвращает вовсе не "линкованный лист", а массив.
Лист возвращает. Но это детали. Простой список легко переводится в связаный.
но вы будете тратить дополнительные ресурсы на все эти махинации :pain1:
User avatar
Marie Clair
Уже с Приветом
Posts: 17692
Joined: 19 Sep 2005 16:57
Location: NJ, US

Re: Программирование на лету -- новый тренд ?

Post by Marie Clair »

valchkou wrote: 28 Jan 2018 23:26
Sergunka wrote: 28 Jan 2018 21:59 Все таки хотя они просили 2 часа на проект и мы договорились, что я вышлю в конце дня вычищать блох особо не имело смысла там тестирование заняло больше часа.
Не так давно я провалил довольно простое интервью в очень интересной компании:
пришлось судорожно создавать проект, искать депенденси, вместо того чтобы подумать и сделать интересный код.
В итоге компания потеряла уникальную возможность нанять возможно одного из лучших кандидатов.
Чтобы избежать таких недоразумений я создал темплейт, на случай если опять попросят покодить на компе.
И уже в скоре пригодилось, последний раз дали всего 40 минут, а я им и REST API и тесты и сам код.
я им честно сказал что форкнул свою рыбу, но это даже оказалось плюсом для них.
В итоге сделали офер от которого я не смог отказаться. Начинаю в среду (но это не те про которых я спрашивал)

Т.е что я всем советую, не только практиковаться для подготовки к интервью, но и выкладывать все это в свой репо, пригодится.
Ух ты, хорошая идея, тоже так сделаю с GitHub-ом. Меня Spotofy зовет в Google Hangout на техническое, думаю ихние юникорны меня завалят, ну хоть потренируюсь. :D
The best things in life either make you fat, drunk, or pregnant.
Pantigalt
Уже с Приветом
Posts: 803
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: Программирование на лету -- новый тренд ?

Post by Pantigalt »

John Smith wrote: 29 Jan 2018 22:53 а всякие tree traversal чем делать, чтоб не моветон?
Итераторами наверное.
Был в гугле такой вопрос.
Как сравнить 2 BST - то есть если элементы совпадают то они равны.
Ответ предполагает не использовать дополнительную память.
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
Andriy777
Уже с Приветом
Posts: 1486
Joined: 28 Jan 2002 10:01

Re: Программирование на лету -- новый тренд ?

Post by Andriy777 »

Pantigalt wrote: 30 Jan 2018 18:16
John Smith wrote: 29 Jan 2018 22:53 а всякие tree traversal чем делать, чтоб не моветон?
Итераторами наверное.
Был в гугле такой вопрос.
Как сравнить 2 BST - то есть если элементы совпадают то они равны.
Ответ предполагает не использовать дополнительную память.
В сложных алгоритмах думать рекурсией легче, чем с помощью итераторов. Из собственных экспериментов вижу что рекурсивный C++ код быстрее, чем алгоритмы которые не рекурсивные но все равно отлеживают ход дела с помощью stack<T> (это не про 2 BST).

Для глубоко-рекурсивных алгоритмов можно анализировать оставшееся количество стека и, когда его мало, останавливаться и прыгать на новый thread (взять из отведенного на это pool-a). На новой нити будет новый стек. Продолжить свою рекурсию. Первичная нить ждет сигнала когда вторичная выйдет из рекурсии.
Pantigalt
Уже с Приветом
Posts: 803
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: Программирование на лету -- новый тренд ?

Post by Pantigalt »

Andriy777 wrote: 30 Jan 2018 18:50
Pantigalt wrote: 30 Jan 2018 18:16
John Smith wrote: 29 Jan 2018 22:53 а всякие tree traversal чем делать, чтоб не моветон?
Итераторами наверное.
Был в гугле такой вопрос.
Как сравнить 2 BST - то есть если элементы совпадают то они равны.
Ответ предполагает не использовать дополнительную память.
В сложных алгоритмах думать рекурсией легче, чем с помощью итераторов. Из собственных экспериментов вижу что рекурсивный C++ код быстрее, чем алгоритмы которые не рекурсивные но все равно отлеживают ход дела с помощью stack<T> (это не про 2 BST).

Для глубоко-рекурсивных алгоритмов можно анализировать оставшееся количество стека и, когда его мало, останавливаться и прыгать на новый thread (взять из отведенного на это pool-a). На новой нити будет новый стек. Продолжить свою рекурсию. Первичная нить ждет сигнала когда вторичная выйдет из рекурсии.
В данном случае я имею ввиду не итераторы С++ а итераторы в C# (coroutine).
Решение через итераторы-корутины эффективное по памяти и скорости (линейное время без дополнительной памяти).
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Программирование на лету -- новый тренд ?

Post by Flash-04 »

Prosche wrote:
Ion Tichy wrote: 28 Jan 2018 23:50 [Я не успел, завяз в граничных условиях рекурсии.
Эта задача решается не рекурсией. Вообще использование рекурсии моветон.
А на хрена её на CS изучают? Ещё и оптимизировать заставляют.
Not everyone believes what I believe but my beliefs do not require them to.
Pantigalt
Уже с Приветом
Posts: 803
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: Программирование на лету -- новый тренд ?

Post by Pantigalt »

Larsonsager wrote: 30 Jan 2018 01:39 На собеседовании, вероятно, была осмысленная задача слить два сортированных списка в один опять же сортированный.
Обычно в таких заданиях не дают так много информации предполагают что кандидат спросит являются ли списки сортированными.
Larsonsager wrote: 30 Jan 2018 01:39 Между прочим, в шарпе ToList() возвращает вовсе не "линкованный лист", а массив.
Если быть более точным - динамический массив. Аналог std::vector в C++.
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
User avatar
Flash-04
Уже с Приветом
Posts: 63430
Joined: 03 Nov 2004 05:31
Location: RU -> Toronto, ON

Re: Программирование на лету -- новый тренд ?

Post by Flash-04 »


Andriy777 wrote:
Для глубоко-рекурсивных алгоритмов можно анализировать оставшееся количество стека и, когда его мало, останавливаться и прыгать на новый thread (взять из отведенного на это pool-a). На новой нити будет новый стек. Продолжить свою рекурсию. Первичная нить ждет сигнала когда вторичная выйдет из рекурсии.
Похожим методом делал портирование рекурсивного кода на Palm у которого стек был... 2 Kb. В лоб код быстро падал. После переделки работал, при этом оставался рекурсивным.
Not everyone believes what I believe but my beliefs do not require them to.
User avatar
Prosche
Уже с Приветом
Posts: 8090
Joined: 08 Nov 2004 12:24
Location: GA

Re: Программирование на лету -- новый тренд ?

Post by Prosche »

Flash-04 wrote: 30 Jan 2018 19:08
Prosche wrote:
Ion Tichy wrote: 28 Jan 2018 23:50 [Я не успел, завяз в граничных условиях рекурсии.
Эта задача решается не рекурсией. Вообще использование рекурсии моветон.
А на хрена её на CS изучают? Ещё и оптимизировать заставляют.
Интуитивно очень простая и понятная вещь. Оптимизация тоже хорошая тема во время обучения, мозг потренировать. Но на практике это не нужно применять.
Pantigalt
Уже с Приветом
Posts: 803
Joined: 24 Jan 2007 07:32
Location: Сергели->Новосибирск->SFBA->Новосибирск->Москва->NY->SFBA

Re: Программирование на лету -- новый тренд ?

Post by Pantigalt »

Andriy777 wrote: 30 Jan 2018 18:50
Pantigalt wrote: 30 Jan 2018 18:16
John Smith wrote: 29 Jan 2018 22:53 а всякие tree traversal чем делать, чтоб не моветон?
Итераторами наверное.
Был в гугле такой вопрос.
Как сравнить 2 BST - то есть если элементы совпадают то они равны.
Ответ предполагает не использовать дополнительную память.
В сложных алгоритмах думать рекурсией легче, чем с помощью итераторов. Из собственных экспериментов вижу что рекурсивный C++ код быстрее, чем алгоритмы которые не рекурсивные но все равно отлеживают ход дела с помощью stack<T> (это не про 2 BST).

Для глубоко-рекурсивных алгоритмов можно анализировать оставшееся количество стека и, когда его мало, останавливаться и прыгать на новый thread (взять из отведенного на это pool-a). На новой нити будет новый стек. Продолжить свою рекурсию. Первичная нить ждет сигнала когда вторичная выйдет из рекурсии.
Хотя это плохой стиль но почему если уж так нравится рекурсия не эмулировать вызов функции с помощью goto и использовать stack<T> для хранения аргументов вызова?
Из плюсов то не будет stackoverflow и не надо создавать отдельные потоки.
Спи быстрее, твоя подушка нужна другому. Copyright Зощенко
Falcon
Уже с Приветом
Posts: 775
Joined: 10 May 2003 17:55
Location: Minsk->NJ->PA->CA

Re: Программирование на лету -- новый тренд ?

Post by Falcon »

Херовимчик wrote: 29 Jan 2018 01:51
lxf wrote: 28 Jan 2018 23:40
Falcon wrote: 28 Jan 2018 22:40 Большинство работы в современном программировании сводится к достаточно стандартным вещам.
Ну вот вам пример. Индус просит написать код на любоя языке (я выбрал C#), который сливает и сортирует 2 линкованных листа в один.
Я пишу код из 1 строчки. Индус недоволен, говорит, что надо на низкому уровне.

Code: Select all

var resultList = list1.Concat(list2).OrderBy(e => e).ToList();
Вопрос. Как часто на работе нам приходится изобретать колесо ? И нужны ли такие изобретатели ?

а это вопрос не о изобретении колеса, а насколько вы хорошо знаете его устройство. У меня была достаточно интересная беседа с большим дядькой из большой конторы на этот счет. Напару повздыхали, что сейчас народ даже и не задумывается, что проиходит за вызовом той или иной функции. :umnik1: (P.S. это камень не в ваш огород, а ответ на ваш вопрос зачем это спрашивают)
Спасибо что ответили за меня :)

Хочу дополнить что такие изобретатели нужны. Каждый на своём уровне должен знать основы. А то нынче половина людей не может binary search написать. О чем я могу дальше с ними говорить?
voyager3
Уже с Приветом
Posts: 1964
Joined: 11 Mar 2015 01:12

Re: Программирование на лету -- новый тренд ?

Post by voyager3 »

z80 wrote: 29 Jan 2018 20:31
Sergunka wrote: 28 Jan 2018 18:16 ...
Так же я с сыном старшим поиграл в олимипийские игры по програмированию где надо за 4 часа попытаться решить 3 задачи... мне это особо ничего не дало - сыну очень много дало для учебы в Беркли на CS. В Беркли все построенно на тайм меджменте дают очки за каждую задачу сделанную чуть раньше ну и тд.
...
А не могли бы Вы дать ссылку на какие-нибудь ресурсы по олимпийским задачкам? Хочу сына тоже начать учить.

Какого возраста был Ваш сын когда Вы эти задачки решали?
Дэтский https://contest.yandex.com/ioi/
Взрослий https://uva.onlinejudge.org/
Но, слава Шиве и бодхисатве Гуаньинь, эти задачи пока до собеседований не добрались.
User avatar
Ion Tichy
Уже с Приветом
Posts: 13339
Joined: 07 Dec 2004 04:00
Location: Москва->CO

Re: Программирование на лету -- новый тренд ?

Post by Ion Tichy »

Falcon wrote: 31 Jan 2018 04:12
Херовимчик wrote: 29 Jan 2018 01:51
lxf wrote: 28 Jan 2018 23:40
Falcon wrote: 28 Jan 2018 22:40 Большинство работы в современном программировании сводится к достаточно стандартным вещам.
Ну вот вам пример. Индус просит написать код на любоя языке (я выбрал C#), который сливает и сортирует 2 линкованных листа в один.
Я пишу код из 1 строчки. Индус недоволен, говорит, что надо на низкому уровне.

Code: Select all

var resultList = list1.Concat(list2).OrderBy(e => e).ToList();
Вопрос. Как часто на работе нам приходится изобретать колесо ? И нужны ли такие изобретатели ?

а это вопрос не о изобретении колеса, а насколько вы хорошо знаете его устройство. У меня была достаточно интересная беседа с большим дядькой из большой конторы на этот счет. Напару повздыхали, что сейчас народ даже и не задумывается, что проиходит за вызовом той или иной функции. :umnik1: (P.S. это камень не в ваш огород, а ответ на ваш вопрос зачем это спрашивают)
Спасибо что ответили за меня :)

Хочу дополнить что такие изобретатели нужны. Каждый на своём уровне должен знать основы. А то нынче половина людей не может binary search написать. О чем я могу дальше с ними говорить?
О бабах? :upset:

Если мы говорим о массовом промышленном программировании бизнес-аппов, то там насрайт на байнари сёрчи, там надо вовремя пройти КуА и сдать код. _Все_ велосипеды уже изобретены и _все_ Америки уже открыты. Мы должны максимально быстро найти подходящий велосипед, достать его с полки и встроить в аппу. На досуге в своих хобби проектах мы можем полировать свой код хоть до морковкиного заговенья, но там и интервьюев нет с задачками.
Но кстати даже с уже изобретенными велосипедами бывают приколы. Пример из меня. На очередном фейс-то-фейс дали задачку что-то типа разместить Н ящиков размеров Р1...РН по М складам вместимости В1...ВМ. Я даже дергаться не стал - "Робя, берете античные фортрановские либы с линейным програмированием и золотой ключик ваш" - "С каким програмированием?" - "С линейным. Методы оптимизации... Задача о комивояжере... Ничего вспыхивает в моске?..." - ...и тишина (с) Неуловимые. А такие кул хацкеры сидели-спрашивали
Как же это вы без гравицаппы пепелац выкатываете из гаража? Это непорядок...
Lisa
Уже с Приветом
Posts: 3209
Joined: 25 Jul 2000 09:01

Re: Программирование на лету -- новый тренд ?

Post by Lisa »

Ion Tichy wrote: 31 Jan 2018 05:37 Но кстати даже с уже изобретенными велосипедами бывают приколы. Пример из меня. На очередном фейс-то-фейс дали задачку что-то типа разместить Н ящиков размеров Р1...РН по М складам вместимости В1...ВМ. Я даже дергаться не стал - "Робя, берете античные фортрановские либы с линейным програмированием и золотой ключик ваш" - "С каким програмированием?" - "С линейным. Методы оптимизации... Задача о комивояжере... Ничего вспыхивает в моске?..." - ...и тишина (с) Неуловимые. А такие кул хацкеры сидели-спрашивали
Смешно, конечно. Надо было в ответ спросить что вы будете делать когда эти античные либы антично загнутся при Н размером побольше. :upset:

Return to “Работа и Карьера в IT”