eu_tomat
-
Публикации
2 666 -
Зарегистрирован
-
Посещение
-
Победитель дней
331
Сообщения, опубликованные пользователем eu_tomat
-
-
21 минуту назад, Doob сказал:Довольно не очевидно. Для меня, шапочно знакомого с жавой и скалой, казалось, что byte должен быть unsigned char, а оказалось совсем странно.
Жаву и скалу я тоже читаю на уровне интуиции, и далеко не все конструкции понимаю однозначно. Есть лишь знание архитектуры Intel 8086 и каких-то других языков программирования. И если я знаю, что на выходе должно получиться отрицательное значение, а вычитания в коде нет, то отрицательно исходное значение. Тем более, в коде присутствует деление на 128 для нормализации значения. А оно как раз-таки соответствует примерным границам unsigned char, чтобы вогнать его в диапазон (-1,1). Вот как-то так в полупонятном для меня языке иногда что-то становится очевидным. Но ложные срабатывания тоже случаются, таковы издержки подхода.
Upd:
21 минуту назад, Doob сказал:Разница кажется не очень существенной. 0.0004734881...
Но даже такую разницу можно будет использовать для ускорения множественного сканирования на длинных дистанциях.
-
Хорошо. Сканирование «в лоб» все более-менее понимают. Существует некоторое критическое расстояние, за пределами которого результаты сканирования становятся неочевидными. И это расстояние можно точно вычислить.
За пределами же этого расстояния приходится прибегать к множественному сканированию и к помощи математики и логики.
Первое, что приходит в голову, это усреднение результата множественного сканирования. Но, как многие уже смогли убедиться, эффективность такого подхода невысока. При этом существуют решения, обеспечивающие лучшую сходимость.
Предлагаю найти не столь очевидные подходы в геосканировании, решая следующую задачу:
Произведено три сканирования одного и того же блока, находящегося на расстоянии 30 блоков от геосканера. Известно, что это либо руда с плотностью 3, либо камень с плотностью 1.5. Доски, булыжник, свинцовую руду пока не рассматриваем для упрощения задачи. Полученные значения (округлённо): {1.295, 3.341, 1.580}.
Вопросы: что за блок мы просканировали: это руда или камень? Почему? Какое количество сканирований оказалось достаточным для однозначной идентификации блока?
-
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
-
-
1 минуту назад, Pengoid сказал:@eu_tomat@eu_tomat Есть смысл попытаться написать все заново?
Смотря для какой цели. И смотря насколько заново.
Мне будет приятнее видеть стартовый пост более структурированным. Другие читатели, возможно, не бросят его чтение где-нибудь на середине, не дождавшись выводов. Возможно, этот текст их чему-то научит. Так что, если у тебя есть мотивация переписать текст, то я поддерживаю.
Переписывать ли заново? Зависит от имеющейся мотивации. Можно переписать частично. Но по своему опыту знаю, что, бывает, я изначально планирую лишь "слегка" переписать статью, но в процессе работы у меня меняется восприятие материала, и я в итоге полностью меняю структуру статьи, перетасовываю абзацы, предложения внутри них, меняю формулировки, исходя уже из нового понимания.
Возвращаясь к вопросу: я вижу смысл в доработке. А решение переписать всё заново может принять лишь автор.
-
В 23.04.2020 в 06:16, Pengoid сказал:Можно несколько советов касательно оформления? Я абсолютный новичок в этом деле.
Особенностью этой темы является длинный текст. Оформленный в виде длинной простыни он отпугивает читателей. Для упрощения восприятия желательно разбить текст на абзацы и смысловые блоки. Также желательно расположить их в порядке развития мысли, снабдить заголовками, выделяющимися из общего текста. Основным способом разделения абзацев на современных форумных движках является пустая строка. К заголовкам обычно применяется полужирное выделение.
В первом предложении темы желательно объяснить читателю, куда он попал, зачем нужна эта тема, и к чему его может привести чтение. Например, так: в этой теме я предлагаю обсудить способность геосканера различать плотности руд с учётом шума. Или так: в этой теме я хочу описать своё исследование возможностей геосканера и оптимальных способов сканирования руд.
Для примера я попробую воспроизвести своё восприятие темы.
Сначала я вижу заголовок темы "Вычисление погрешности геосканера". Название интересное, но в теме может быть что угодно: программа, методика, исследование, вопрос, приглашение к обсуждению. Учитывая, что тема изначально находилась в разделе флудилки, можно было строить самые безумные предположения. Сейчас тема находится в беседке, что настраивает читателя и комментатора на более серьёзное отношение, но всё равно не понятно, чего автор ожидает от читателей темы.
В начале я вижу следующее "Решил измерить зависимость погрешности геосканера от расстояния". Я не понимаю, к чему ведёт автор. Он хочет что-то спросить? Он хочет чем-то поделиться? Хочет обсудить? Я быстро просматриваю первый абзац (или что-то напоминающее абзац), вижу, что автор что-то для себя уже понял, сделал какие-то выводы.
В следующем абзаце автор наконец-то рассказывает, зачем это нужно. Но до сих пор не понятно, кому это нужно: автору или его читателям. Автор всё ещё собирается что-то спросить, или проинформировать нас? Пробегаю ещё один длинный кусок текста (абзац или не абзац), и начинаю смутно представлять одну из целей автора. Но опять же, не понятно, он хочет поделиться способом достижения цели, или где-то далее по тексту попросит помощи?И так почти до самого конца этого текста я пытался понять, к чему ведёт меня автор. Но понял лишь смутно.
-
1
-
-
14 часа назад, Exeteres сказал:Я добавил в гайд раздел с самыми важными отличиями и особенностями транспилера. Если я что-то пропустил, буду рад дополнить.
Гайд хороший. Но я всё же склонен считать программирование на TypeScript в среде OpenComputers экзотикой. И необходимость явного приведения типов вряд ли является значимым поводом для смены одного языка на другой.
-
1
-
-
@Pengoid Тема оформлена не очень удобно для восприятия, но почему она во флудилке? Предлагаю переместить её в беседку программистов. В теме есть рациональное зерно, которое можно развить дальше.
Если интересно, предлагаю порассуждать на тему, как преодолеть это ограничение или хотя бы улучшить свои позиции:
56 минут назад, Pengoid сказал:даже при 30 проверках среднее значение твердости сильно отличается от реального, и получать твердость из среднего арифметического очень невыгодно по затратам времени и энергии.
Свет не сошёлся клином на одном лишь среднем арифметическом, можно придумать вычисления, обеспечивающие более быструю сходимость.
-
5 часов назад, hohserg сказал:Пиши на TypeScript, не будет таких проблем)
Зато могут появиться другие)
-
2
-
1
-
-
5 часов назад, Pengoid сказал:Можно ли сделать так, чтобы робот сам мог вставлять и вытягивать улучшения, используя эти дополнительные слоты с помощью лишь своего инвентаря?
Смотря какой смысл вкладывать в слово "сам".
В общем случае робот не может вставлять и вынимать улучшения в собственных слотах улучшений без каких-либо вспомогательных приспособлений.
Я для этой цели обычно использовал вспомогательного робота или схему на транспозере. Если требовалось лишь вставить что-либо в слот робота, то я даже использовал обычную воронку. Но робот может самостоятельно установить и использовать эти механизмы.
-
1
-
-
2 часа назад, Skic сказал:А где можно скачать?
Скорее всего, актуальной является эта ссылка:
-
2
-
-
4 минуты назад, antonn3312578859 сказал:Могу ли я использовать ваши наработки? То есть как бы взять эту ОС под основу моей, добавить пару фич и переделать графический интерфейс?
Автор темы давно не появлялся здесь, но я попробую ответить за него. На computercraft.ru обычно приветствуется развитие любых наработок, необязательно своих. Но если часть кода позаимствована, то очень желательно указать автора со ссылкой на его наработки. Также в описании своего творения желательно указать, что именно было позаимствовано, что было выполнено самостоятельно, что переработано, и в чём преимущество этих доработок.
-
1
-
-
20 минут назад, antonn3312578859 сказал:Авторским правом защищено?
Что именно защищено? И какой именно аспект авторских прав интересует?
-
-
-
11 минуту назад, Alex сказал:Оказывается, робот пуляет этой МЕ пушкой с относительной координаты 0,1,0, то есть пушка как бы в руках визуально у робота, но на самом деле она на макушке над роботом, выше робота на 1 блок. И если выполнить robot.useDown() , то робот сам себя сносит, и что самое интересное, вместе с пушкой робот исчезает бесследно. Вообще наглухо. Полностью. Никакого дропа.
Хорошая альтернатива карте саморазрушения из Computronics. Возьму на заметку. Если нет свободного слота для карты, то можно таскать с собой материальную пушку.
-
8 часов назад, Asummonster сказал:В процессе игры мне понадобилось осуществлять связь между компьютером OC и CC. Так как я не нашёл адекватного способа передачи данных, то придумал костыль. Костыль заключается в передаче данных (на данный момент — строк, если нужно будет передавать что-то другое, то допишу) через... установку и чтение цвета золотого монитора.
Интересный костыль, необычный. Я в давние времена, когда OpenComputers ещё был диковинкой, не найдя других способов обмена сообщениями с ComputerCraft, костылил его с помощью ванильного редстоуна.
Но сейчас существует и бескостыльнй способ обмена сообщениями между OpenComputers и ComputerCraft с помощью блока коммутатора.
-
2
-
1
-
-
Этот код выводит имя игрока, кликнувшего по экрану.
local event = require"event" for i=1,100 do local _,_,_,_,_,player = event.pull("touch") print( player ) end
Вот и весь сканер отпечатка пальца.
-
1
-
-
1 час назад, maxutka99 сказал:надеюсь кому-нибудь пригодится
Без скриншотов, скорее всего, мало кто заинтересуется.
-
1
-
1
-
-
-
9 часов назад, BrightYC сказал:Есть пара вопросов - какой алгоритм используется? lz77? И все же, теме хоть и 4 года - но компрессор был доделан и остался ли его код? Или заброшен в долгий ящик?
Да, проект был приостановлен, но код я могу поискать. Пользуясь этим напоминанием, проверю на днях, не сдох ли тот комп.
За основу был взят алгоритм LZ77, к нему я добавил несколько "своих" улучшений. Слово "своих" я беру в кавычки, потому что имею базовое представление об алгоритмах сжатия, но не помню никакой конкретики, и тем более, названий. Поэтому могу легко впасть в иллюзию, будто бы смог придумать свой алгоритм.
Улучшения "придумывались" разные, но я оставлял из них только те, для которых мог представить компактный алгоритм распаковки на lua. По сути, это было главным требованием, учитывая размер EEPROM.
-
3 часа назад, Alex сказал:Вискас уже играет на технокрафте
А кто там на заднем плане? Уж не Рулёзик ли?
Он-то, похоже, игру даже не прекращал со времён EvilWorld.
-
Оказалось, ульи легко ломаются шахтёрским лазером. Но в этом случае содержимое улья просто выпадает на землю.
-
4 часа назад, Alex сказал:Может их вообще не генерить в мире, а на спавне пчелок продавать этих? Штучка = 1 золотой нагитс например. Это же не особо скажется на геймплее? какая разница по большому счету, что золото найти что улей.
Скорее всего, не скажется, но точно не помню. В пчеловодстве, на мой взгляд, интересна селекция, а не поиск ульев.
Но кроме простых пчёл нужны ещё и доблестные (Valiant), которые выпадают с небольшим шансом из обычных ульев, героические (Steadfast), встречающиеся в сокровищницах, и монашеские (Monastic), продаваемые пасечником.
-
А у кого-нибудь осталась сборка того сервера, для которого @artem211 писал свою копалку? Какие тогда были версии OpenComputers и Forestry?

Вычисление погрешности геосканера
в Программирование
Опубликовано:
Шикарно пояснил, с иллюстрацией и кодом.
Это наиболее очевидное из решений. Есть и второе решение, для которого было бы достаточно знать результат одного лишь первого сканирования. Нашёл я это решение буквально вчера, до конца его не исследовал, но в моих предыдущих постах уже есть недвусмысленный намёк на него.
Да, я тоже продолжаю сомневаться. Но и продолжаю попытки улучшить даже плохой результат. Думаю, что мы его сильно улучшим в этой теме. Ударим, так сказать, алгоритмами по шуму.
В своём вопросе я имел в виду количество сканирований применительно к условиями задачи. В нашем случае решение было обеспечено вторым сканированием. Да, в общем случае мы не можем знать, сколько конкретно сканирований нам потребуется. Но ставя эту задачу, я стремился продемонстрировать, что есть лучшие альтернативы среднему арифметическому.
Теперь предлагаю подумать над тем, как решить конкретно эту задачу за одно сканирование. Также у меня есть устойчивое ощущение, что с почти любым уровнем шума в конфиге можно будет этот шум полностью отфильтровать по результатам первого же сканирования. Но для начала я предлагаю всем желающим добить эту частную задачу, а потом совместными усилиями обосновать решение для общего случая или хотя бы для некоторого множества случаев.