Вода между стен, забавный тест от программистов твиттера |
Здравствуйте, гость ( Вход | Регистрация )
Вода между стен, забавный тест от программистов твиттера |
Iron Bug |
7.5.2014, 21:46
Сообщение
#1
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Попалась тут забавная задачка
Задача: http://qandwhat.apps.runkite.com/i-failed-...tter-interview/ Дя тех, кто не очень хорошо понимает по-английски, задача вкратце: Представлен последовательный набор чисел. Числа указывают "высоту стен", стоящих рядом. Задача: посчитать количество воды, которая может накопиться в таком резервуаре, если пройдёт дождь. Вода через низкие препятствия утекает, как и полагается воде. С краёв она тоже утекает. |
|
|
ilyabvt |
8.5.2014, 20:13
Сообщение
#2
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Решил так:
Раскрывающийся текст
Сообщение отредактировал ilyabvt - 8.5.2014, 20:39 |
|
|
Iron Bug |
8.5.2014, 20:28
Сообщение
#3
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
а как насчёт последовательностей типа { 3, 1, 2, 1, 3, 1, 2, 1, 3 } ?
|
|
|
ilyabvt |
8.5.2014, 20:40
Сообщение
#4
|
Активный участник Группа: Участник Сообщений: 297 Регистрация: 23.6.2011 Пользователь №: 2765 Спасибо сказали: 45 раз(а) Репутация: 3 |
Цитата а как насчёт последовательностей типа { 3, 1, 2, 1, 3, 1, 2, 1, 3 } ? Возвращает 10. Т.е. правильно обрабатывает. P.S. Убрал в коде избыточную проверку. |
|
|
Алексей1153 |
12.5.2014, 8:11
Сообщение
#5
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
просканировать стенки, начиная снизу, интегрировать заметаемые закрытые с боков области на каждом шаге )
(не тестировал, мне лень , тут только алгоритм) Раскрывающийся текст
Сообщение отредактировал Алексей1153 - 18.5.2014, 11:13 |
|
|
Iron Bug |
15.5.2014, 20:58
Сообщение
#6
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Цитата а как насчёт последовательностей типа { 3, 1, 2, 1, 3, 1, 2, 1, 3 } ? Возвращает 10. Т.е. правильно обрабатывает. P.S. Убрал в коде избыточную проверку. а для { 3, 1, 2, 1, 4, 1, 2, 1, 4 } неправильно считает. просканировать стенки, начиная снизу, интегрировать заметаемые закрытые с боков области на каждом шаге ) я также решила: только я на каждом уровне строила интегральные столбики с "весами", схлапывая уже "заполненные" уровни. |
|
|
Iron Bug |
15.5.2014, 22:24
Сообщение
#7
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
у меня идея в том, чтобы "срезать" нижний слой и схлапывать одинаковые столбики (для простоты суммирования). при схлапывании увеличивается "вес" столбика.
написала программку. может, не совсем оптимально, но идея понятна. на каждом шаге пишет полученную последовательность (чисто для наглядности) Раскрывающийся текст
Сообщение отредактировал Iron Bug - 16.5.2014, 18:16 |
|
|
Влад |
16.5.2014, 12:14
Сообщение
#8
|
Участник Группа: Участник Сообщений: 146 Регистрация: 20.3.2009 Из: Санкт-Петербург Пользователь №: 627 Спасибо сказали: 46 раз(а) Репутация: 8 |
Коллеги, а вы обратили внимание, что в точном соответствии с буквой оригинального условия задачи "высота" стенок может быть и отрицательной? Почему бы не протестировать и на последовательностях вида { 3, -1, -2, 8, -3, -1, 2, 0, -3 } ?
|
|
|
Iron Bug |
16.5.2014, 17:16
Сообщение
#9
|
Профессионал Группа: Модератор Сообщений: 1611 Регистрация: 6.2.2009 Из: Yekaterinburg Пользователь №: 533 Спасибо сказали: 219 раз(а) Репутация: 12 |
Коллеги, а вы обратили внимание, что в точном соответствии с буквой оригинального условия задачи "высота" стенок может быть и отрицательной? Почему бы не протестировать и на последовательностях вида { 3, -1, -2, 8, -3, -1, 2, 0, -3 } ? этот случай сводится к положительному добавлением модуля минимального значения ко всем элементам. для алгоритма это не существенно. поправила мелкий косячок в своём коде. а так, он и с отрицательными значениями работает: потому что всё равно сначала "выравнивает" минимальные значения на ноль. на самом деле, можно ещё оптимизировать маленько, сразу отрезав "скаты" по краям: Раскрывающийся текст
update: ещё маленько добавила проверку - для пущей оптимальности. Сообщение отредактировал Iron Bug - 19.5.2014, 19:53 |
|
|
Алексей1153 |
18.5.2014, 11:28
Сообщение
#10
|
фрилансер Группа: Участник Сообщений: 2941 Регистрация: 19.6.2010 Из: Обливион Пользователь №: 1822 Спасибо сказали: 215 раз(а) Репутация: 34 |
я щас глянул - исправил у себя явный глюк - вместо "x2--" было "x2++"
Iron Bug, а вчера абсолютно внезапно посетил твой город Симпатичный город. Но равнина (это я о ландшафте) непривычная, конечно, для глаза |
|
|
Текстовая версия | Сейчас: 18.12.2024, 8:34 |