Как стать автором
Обновить
29
0
Савр @xmeoff

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

Отправить сообщение
Луис Ву – 200-летний человек отправляется со своей коллегой...

Какой еще коллегой? Вы бы хоть с Википедией сверялись, что ли.
Я и в самом деле вас неверно понял. Мне почему-то показалось, что вы имели в виду стандартную функцию заливки.
Теперь я понял вашу мысль: не париться по поводу эффективности, а использовать готовый алгоритм. Возможно, я действительно перемудрил и стоило так и сделать.
И все же я считаю проблемой общих алгоритмов заливки то, что они не учитывают особенности данной конкретной задачи — информацию о следе курсора. Поэтому им приходится так или иначе проверять все возможные элементы (все ячейки сетки). К тому же для данной задачи это придется делать два раза: первый раз, чтобы, как вы писали, найти незахваченные территории (отметить их); а второй — чтобы найти оставшиеся, т.е. захваченные. За один заход, мне кажется, вы это сделать не сможете.

Насчет сканирования линий. Этот метод, конечно, не рекурсивный, но он тоже проверяет все элементы. К тому же он не подходит для определения захваченных/незахваченных областей.
Наверное это дело вкуса. Мне лично удобнее работать с градусами. К тому же так легче рассчитывать отскок точек от границ.
Эти области (с «морскими» точками) и не нужно заливать, они и так уже залиты нужным цветом (черным). Или вы предлагаете заливать их другим цветом? Как это поможет залить (стереть) области без морских точек?
Само собой, рекурсивный алгоритм реализуется гораздо проще. Но лично я предпочитаю не использовать рекурсию там, где можно обойтись без нее.
Я в курсе про заливку растра. Только вот речь в этой ветке шла о том, чтобы использовать заливку так сказать «из коробки». Если же реализовывать ее самому, то я не вижу никаких преимуществ по сравнению с описанным мной методом. Этот метод, во-первых — не рекурсивный. Во вторых, он не обходит все ячейки внутри области: алгоритм нахождения контуров проверяет только ячейки контура плюс соседние с ними; а алгоритм разбиения на прямоугольники имеет дело с вершинами многоугольника, число которых на порядок меньше даже числа ячеек контура, не говоря уже о всех ячейках области. Ну и в-третьих, этот метод сводит к минимуму число графических операций. Здесь не считывается цвет каждой проверяемой ячейки, и закрашиваются здесь не ячейки, а прямоугольники, из которых состоит область. Сколько прямоугольников, столько и графических операций (вызовов метода clearRect).
Наверное вы этого не знаете, но в HTML5 Canvas заливка работает не так, как во многих (десктопных) графических библиотеках. Здесь не получится просто указать точку «где-то внутри» замкнутой области и цвет заливки. Здесь нужно явно задавать контур заливаемой области (см. описание Canvas.fill). Что возвращает нас к задаче определения контуров.
Но даже если бы в Canvas заливка работала «привычным» способом, это все равно не решило бы всех проблем. Главная (но не единственная) проблема — в том, что заливать нужно не все замкнутые области, а только те, внутри которых нет «морских» точек. Что в итоге опять же возвращает к задаче определения контуров).
Да я тоже «это» имел в виду.
Имхо, кольцо не может проявлять себя так как написано в посте:
Ученые обнаружили некоторую странность: когда планета проходила перед своей звездой, то светимость звезды снижалась не на несколько часов (как обычно бывает в подобных случаях) а на два месяца.

Оффтоп: Интересно, что у автора картинки означают светлые прямоугольники на Кольце — океаны? ЕМНИП, по книге они не были прямоугольными, да еще через равные промежутки.
<зануда-mode>Кольцо Дайсона вокруг звезды строят, а не планеты
С таким комментарием не поспоришь:).
Но вы вероятно не обратили внимания на дисклеймер, где указано, что данный вопрос (как и большинство вопросов на scifi.stackexchange.com) задан в рамках вымышленной вселенной (Матрицы). Это как бы должно означать, что и ответ на него тоже ищется в рамках (по правилам) этой вселенной.
А еще я просил не воспринимать этот пост слишком серьезно).
Рассмотрен, мимоходом:
… не считая конечно того, что это год выхода фильма в прокат:)
AFAIK в Backbone никогда не было функции/метода с таким именем. Возможно это опечатка. Не знаю, что там имел в виду Эдди, но по смыслу там подходит stopListening.
Вы правы. Итератор можно получить через вызов Array.prototype.values() или Array.prototype.entries(). В оригинале так и было, но я умудрился скопипастить пример с ошибками.
Поправка: У автора все правильно. Оказывается, это я не так скопировал пример. Уже поправил.
Констатирую факт, что пример не верный в принципе

Да, вы правы. Возможно, вам стоит сообщить об этом автору (на SO)… А мне придется менять пример.
Не пойму, о чем вы пытаетесь спорить со мной (или с OP). О том, что ни у одного объекта пока нет метода next, или что массив сможет иметь итератор?
а у массива нет метода next.

Да, нет, и ни у одного объекта его пока нет. Пока это не стало стандартом. А как станет, и массив сможет иметь итератор.
Да, не должно. Это я ошибся.
AFAIK, принято считать, что цикл while эквивалентен for, во всяком случае в JavaScript. Наверное поэтому автор и не упомянул while.
Да, и у вас в коде ошибка, должно быть:
var i = testData.length - 1;
Поясните за этот регексп /^0$|^[1-9]\d*$/

Это:
строка, содержащая десятичную запись целого числа, значение которого меньше 4294967294

^\d+$ допускает недесятичные числа как напр-р: 012.

Там же — пишете что «key — строка» и проверяете как «key <= 4294967294»

При сравнении с числом строка всегда приводится к числу.

Вообще, как указано в статье, это формальная (я бы даже сказал занудная) проверка. В большинстве случаев можно использ-ть более простую как: String(parseInt(key, 10)) === key
Навскидку то, что сразу вспомнилось из неупомянутого:

Машина времени, Уэллс — классика мировой фантастики, как впрочем и всей литературы. Масштабный прогноз развития человечества, поданный в доступной художественной форме.
Кто там / Нечто, Джон Кэмпбелл — родоначальник всего жанра «Инопланетное нечто». must-read, даже если вы не поклонник этого жанра.
Приход ночи (рассказ), Азимов — одно из самых ранних и, по мнению многих, лучшее из произведений Азимова (хотя сам он с этим не соглашался). Здесь впервые и во всей красе проявляется метод Азимова. На основе всего одного фантастического допущения описывается целый мир, одновременно так похожий и так не похожий на наш. И все — в рамках короткого рассказа.
Пасынки Вселенной, Хайнлайн — классика жанра «Звездный ковчег». Одно из немногих произведений «самого американского» фантаста, бывшее доступным советскому читателю (а это о многом говорит).
Чужак в чужой стране, Хайнлайн — одно из множества недоступных… На мой субъективный взгляд, квинтэссенция как «зрелого» так и «позднего» творчества Хайнлайна. Если вы прочитали эту книгу, все остальное позднее 1961 года можно уже не читать. Особенно, если вам нравится «ранний» Хайнлайн.
Вся плоть — трава, Саймак — проблема контакта с иным разумом через призму человеческих взаимоотношений.
Заповедник гоблинов, Саймак — просто добрая сказка для взрослых (в хорошем смысле). Чем-то напоминает «Понедельник начинается в субботу».
Ну и, как уже неоднократно упоминалось, все книги Стругацких.

И немного из забытой классики:
Приключения Гекльберри Финна, Марк Твен — классика американской прозы. Как для нас Достоевский и Толстой, так для «них» Марк Твен и эта книга. Сюжет нет смысла пересказывать, т.к. книга ценна не этим.
Золотой теленок, Ильф и Петров — классика советской литературы. Сюжет опять же невозможно пересказать, книга ценна прежде всего множеством красочных персонажей, описанных в мельчайших подробностях.

Информация

В рейтинге
Не участвует
Откуда
Калмыкия, Россия
Зарегистрирован
Активность