Перейти к содержимому

eu_tomat

Модераторы
  • Публикации

    2 666
  • Зарегистрирован

  • Посещение

  • Победитель дней

    331

Сообщения, опубликованные пользователем eu_tomat


  1. 31 минуту назад, Doob сказал:
    • Руда.
    • math.max(3 - 30 * 0.606, 1.5 + 30 * 0.06013) < 3.341
    • Два.

    Шикарно пояснил, с иллюстрацией и кодом.

     

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

    35 минут назад, Doob сказал:

    Все-таки я сильно сомневаюсь, что многократное сканирование это рационально. Там ведь распределение равномерное и с расстоянием пересекающаяся область увеличивается до 72%, а это примерно 1.7% на каждый блок

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

      

    1 час назад, Pengoid сказал:

    Вариант, чтобы определить со 100% точностью за пока-что неопределенное количество сканирований.

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

     

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

     


  2. 21 минуту назад, Doob сказал:

    Довольно не очевидно. Для меня, шапочно знакомого с жавой и скалой, казалось, что byte должен быть unsigned char, а оказалось совсем странно.

    Жаву и скалу я тоже читаю на уровне интуиции, и далеко не все конструкции понимаю однозначно. Есть лишь знание архитектуры Intel 8086 и каких-то других языков программирования. И если я знаю, что на выходе должно получиться отрицательное значение, а вычитания в коде нет, то отрицательно исходное значение. Тем более, в коде присутствует деление на 128 для нормализации значения. А оно как раз-таки соответствует примерным границам unsigned char, чтобы вогнать его в диапазон (-1,1). Вот как-то так в полупонятном для меня языке иногда что-то становится очевидным. Но ложные срабатывания тоже случаются, таковы издержки подхода.

     

    Upd:

    21 минуту назад, Doob сказал:

    Разница кажется не очень существенной. 0.0004734881...

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


  3. Хорошо. Сканирование «в лоб» все более-менее понимают. Существует некоторое критическое расстояние, за пределами которого результаты сканирования становятся неочевидными. И это расстояние можно точно вычислить.

     

    За пределами же этого расстояния приходится прибегать к множественному сканированию и к помощи математики и логики.

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

     

    Предлагаю найти не столь очевидные подходы в геосканировании, решая следующую задачу:

     

    Произведено три сканирования одного и того же блока, находящегося на расстоянии 30 блоков от геосканера. Известно, что это либо руда с плотностью 3, либо камень с плотностью 1.5. Доски, булыжник, свинцовую руду пока не рассматриваем для упрощения задачи. Полученные значения (округлённо): {1.295, 3.341, 1.580}.

     

    Вопросы: что за блок мы просканировали: это руда или камень? Почему? Какое количество сканирований оказалось достаточным для однозначной идентификации блока?


  4. 17 часов назад, Pengoid сказал:

    Разве это не то же самое, что я описал выше? Правда, в вашем примере все понятнее, также разница в другом порядке вычислений и в том, что я получил константу 0.0606 очень глупым, экспериментальным путем в виде 1/16.5, что почти не отличается от реальности, а все остальные вычисления такие же.

    Это не то же самое. Оба способа имеют право на существование. Можно сказать, что @Pengoid выполнил экспериментальное исследование, а @Doob теоретическое. И так как результаты совпали, то теория, скорее всего, верна, и эксперимент тоже поставлен верно, скорее всего. Оба молодцы.

     

    Ничего удивительного в том, что теоретические выкладки дают более короткое и наглядное объяснение, и красивые графики. В этом и заключается назначение теории.

     

    Благодаря этой теме я тоже кое-что понял про геосканер. Я раньше замечал, что абсолютное значение минимальных отрицательных величин шума всегда больше абсолютного значения его максимальных положительных величин. Например, -0.06060 против +0.06013 на единичном расстоянии при стандартной константе шума. Но в код я не заглядывал и понять причину не пытался. Но когда @Doob кинул ссылку на код, и я не поленился его почитать, причина аномалии стала очевидной. Дело в том, что исходными значениями для получения шума является набор случайных байт, которые затем преобразуются в числа с плавающей точкой. Это приводит к двум последствиям:

     

    1) Шум геосканера имеет дискретную структуру, не смотря на то, что выражается значениями с плавающей точкой. Есть всего 256 фиксированных значений шума для определённого расстояния и константы шума.

     

    2) Минимальное значение шума всегда больше его максимального значения в абсолютном выражении, т.к. исходный байт в архитектуре Intel кодирует 128 отрицательных значений, одно нулевое и 127 положительных. Cоотношение 128/127 равно соотношению 0.06060/0.06013 с погрешностью представления.

     

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

     

    • Нравится 2

  5. 1 минуту назад, Pengoid сказал:

    @eu_tomat@eu_tomat Есть смысл попытаться написать все заново? 

    Смотря для какой цели. И смотря насколько заново.

     

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

     

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

     

    Возвращаясь к вопросу: я вижу смысл в доработке. А решение переписать всё заново может принять лишь автор.


  6. В 23.04.2020 в 06:16, Pengoid сказал:

    Можно несколько советов касательно оформления? Я абсолютный новичок в этом деле.

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


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


    Для примера я попробую воспроизвести своё восприятие темы.


    Сначала я вижу заголовок темы "Вычисление погрешности геосканера". Название интересное, но в теме может быть что угодно: программа, методика, исследование, вопрос, приглашение к обсуждению. Учитывая, что тема изначально находилась в разделе флудилки, можно было строить самые безумные предположения. Сейчас тема находится в беседке, что настраивает читателя и комментатора на более серьёзное отношение, но всё равно не понятно, чего автор ожидает от читателей темы.


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


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

     

    И так почти до самого конца этого текста я пытался понять, к чему ведёт меня автор. Но понял лишь смутно.

    • Спасибо 1

  7. 14 часа назад, Exeteres сказал:

    Я добавил в гайд раздел с самыми важными отличиями и особенностями транспилера. Если я что-то пропустил, буду рад дополнить.

    Гайд хороший. Но я всё же склонен считать программирование на TypeScript в среде OpenComputers экзотикой. И необходимость явного приведения типов вряд ли является значимым поводом для смены одного языка на другой.

    • Одобряю 1

  8. @Pengoid Тема оформлена не очень удобно для восприятия, но почему она во флудилке? Предлагаю переместить её в беседку программистов. В теме есть рациональное зерно, которое можно развить дальше.

     

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

    56 минут назад, Pengoid сказал:

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

    Свет не сошёлся клином на одном лишь среднем арифметическом, можно придумать вычисления, обеспечивающие более быструю сходимость.


  9. 5 часов назад, Pengoid сказал:

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

    Смотря какой смысл вкладывать в слово "сам".

     

    В общем случае робот не может вставлять и вынимать улучшения в собственных слотах улучшений без каких-либо вспомогательных приспособлений.

     

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

    • Нравится 1

  10. 4 минуты назад, antonn3312578859 сказал:

    Могу ли я использовать ваши наработки? То есть как бы взять эту ОС под основу моей, добавить пару фич и переделать графический интерфейс?

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

    • Нравится 1

  11. 8 минут назад, NEO сказал:

    Это не оригинал.

    Разумеется, оригинальная OpenOS не предусматривает такого трюка. Требуется серьёзная переработка всей системы. Но если отвечать по существу вопроса, то да, можно. И тому есть реалистичный пример.

    • Нравится 1

  12. 3 часа назад, NEO сказал:

    Надо более реалистичные идеи. Так-то можно всю вселенную создать в компьютере.

    Было дело, @RccHD очень глубоко переработал OpenOS. И многозадачность присутствовала с некоторыми ограничениями, и окошечки с терминалами запускались.

     


  13. 11 минуту назад, Alex сказал:

    Оказывается, робот пуляет этой МЕ пушкой с относительной координаты 0,1,0, то есть пушка как бы в руках визуально у робота, но на самом деле она на макушке над роботом, выше робота на 1 блок. И если выполнить robot.useDown() , то робот сам себя сносит, и что самое интересное, вместе с пушкой робот исчезает бесследно. Вообще наглухо. Полностью. Никакого дропа.

    Хорошая альтернатива карте саморазрушения из Computronics. Возьму на заметку. Если нет свободного слота для карты, то можно таскать с собой материальную пушку.


  14. 8 часов назад, Asummonster сказал:

    В процессе игры мне понадобилось осуществлять связь между компьютером OC и CC. Так как я не нашёл адекватного способа передачи данных, то придумал костыль. Костыль заключается в передаче данных (на данный момент — строк, если нужно будет передавать что-то другое, то допишу) через... установку и чтение цвета золотого монитора.

    Интересный костыль, необычный. Я в давние времена, когда OpenComputers ещё был диковинкой, не найдя других способов обмена сообщениями с ComputerCraft, костылил его с помощью ванильного редстоуна.

     

    Но сейчас существует и бескостыльнй способ обмена сообщениями между OpenComputers и ComputerCraft с помощью блока коммутатора.

    • Нравится 2
    • Одобряю 1

  15. 4 минуты назад, Alex сказал:

    даже ЖЯР в домике своем на цепи повесь в подвале

    В той норе, во тьме печальной,
    ЖЯР качается хрустальный
    На цепях между столбов.

    (c) А.С. Пушкин.

    • Нравится 1

  16. 9 часов назад, BrightYC сказал:

    Есть пара вопросов - какой алгоритм используется? lz77? И все же, теме хоть и 4 года - но компрессор был доделан и остался ли его код? Или заброшен в долгий ящик?

    Да, проект был приостановлен, но код я могу поискать. Пользуясь этим напоминанием, проверю на днях, не сдох ли тот комп.

     

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

     

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


  17. 4 часа назад, Alex сказал:

    Может их вообще не генерить в мире, а на спавне пчелок продавать этих? Штучка = 1 золотой нагитс например. Это же не особо скажется на геймплее? какая разница по большому счету, что золото найти что улей.

    Скорее всего, не скажется, но точно не помню. В пчеловодстве, на мой взгляд, интересна селекция, а не поиск ульев.

     

    Но кроме простых пчёл нужны ещё и доблестные (Valiant), которые выпадают с небольшим шансом из обычных ульев, героические (Steadfast), встречающиеся в сокровищницах, и монашеские (Monastic), продаваемые пасечником.

×
×
  • Создать...