swg2you
-
Публикации
219 -
Зарегистрирован
-
Посещение
-
Победитель дней
20
Сообщения, опубликованные пользователем swg2you
-
-
Голографические проекторы вообще шикарно бы смотрелись как ячейки памяти, только для решения проблемы программиста Василия такой метод не подходит. Глины нет.А если взять голопроекторы, то память эффектней и эффективней +понтов больше
-
Вопрос не в том, что выведет, это легко проверить запустив,а скорее в том, почему так происходит.Мой первый пост был именно о проблеме нулевого. Я и на вопрос ответил.
Тут явно происки нечистой силы )
А "костыли" действительно вовсе не костыли. Просто "a and b or c" подобен классическому тернарному оператору, но не является им. Его логика сложнее.
-
Отключён. Игнорит приваты.
Жаль. Гипотетический риск запенивания твоего участка ничто по сравнению с возможностью скрывать проводку в стенах.
-
- Не нахожу в NEI рецепта крафта CF Sprayer. Он отключен/сломан?
- Обширные водные глади безжизненны без парусников. Ни Карибов ни пиратов.
-
О, какое же это удовольствие, указать более опытному программисту что он не прав.
Ты не прав! Пруф: http://ideone.com/VGZGSo :P
В луа выражение "а and b or c" является заменой строчного условного оператора "a ? b : c" в других языках, например С++, за исключением случая, описанного мной.
Заставил меня бежать и проверять )
Действительно, я перемудрил с возвратом А, правильное прочтение конструкции A and B or C будет: "Если А истинно, то вернуть B или С, иначе вернуть С"
Эквивалентная конструкция:
if A then if B then B else C end else C --! endПоэтому, A and B or C ну никак не замена "a ? b : c"
И как верно подметил, eu_tomat, при расстановке скобочек поведение становится более очевидным.
Перефразирую короче. Выражение (a and b or c) следует читать как ((a and b) or c)
Очевидно, что в этом случае при b==false и b==nil всегда будет возвращаться c
Но повторюсь, ошибка возникает не из-за игнорирования правил приоритета а из-за неверного прочтения конструкции.
upd:
Исправил пост, по вашим замечаниям.
Надеюсь с псевдо-булями разобрались ) Но у нас почему-то ни слова о проблеме указанной в первом посте )
-
Прошу обосновать это утверждение.
And стоит перед or. Он и так выполняется первым. Правила приоритета не применяются и никак не влияют на результат.
Ошибка заключается в "неверном чтении" конструкции.
И это, действительно, как выразился @Krutoy, - Подводный камень.
-
Этот камень очень даже надводный. Во всех известных мне языках программирования операция and имеет приоритет над or. Соответственно, (true and b)==b, а учитывая твои условия, (true and b or c)==c.
Приоритет здесь не при чем.
-
Я даже без тестов в интерпритаторе знаю, последний вариант выдаст 1, 4.
Не помню, но кажется даже в документации где то написано, что ... можно писать только после последней запятой. Хотя я это узнал на собственном опыте.
Это да, синтаксис языка определяет список параметров функции:
- parlist ::= namelist [‘,’ ‘...’] | ‘...’
Но при чем здесь ‘...’ ? о_О
У меня его нет нигде, разве что в названии темы )
Кроме названия темы конечно )
А еще, вот какой есть подводный камень:
return a and b or c
Казалось бы, "если а то вернуть b иначе c", но при этом если b == nil или false то всегда возвращает с.Так нельзя читать. Нужно читать "Если А истинно, то вернуть B или С, иначе вернуть С" --!
Конструкция A and B or C является заменой сложного условия:
if A then if B then B else C end else C --! endЗапомнить логику этих псевдо-булевых операторов можно на простых примерах:
print(1 and 2) -->2 print(false and nil) -->false print(1 or 2) -->1 print(false or nil) -->nil
И не забывать про короткие вычисления, когда в качестве операндов пишем функции.
upd: --! исправлено по замечаниям Krutoy и eu_tomat
-
А ну-ка, знатоки, попробуйте ответить, - Что выведет нам на экран, такая вот, простейшая программа?
t = {1,2,3} print(table.unpack(t)) print(0, table.unpack(t)) print(table.unpack(t), 4)
-
Всё-таки не только Кузнец, но и - Путешественник (Бродяга).

П.С. Перешёл по ссылке на Ттюх, почитал. Хотел откоментить, а - немогу.
А потом глядь, а то
архив
.Ттюх пережил упадок и раскол, и сейчас далеко не лучшие времена. Но остался в сердце ) Много гигантских проектов делали там. Целые города возводили.
Часть ребят ушла и создала новый проект GameComa, сути распада не знаю, я тогда в ТФК общины возводил, но намного позже, меня старый знакомый обратно потянул и на Lif подсадил, правда хватило всего на пару недель. Да и то, в основном в движке Torque 3D ковырялся да скрипты писал.
Но не смотря на то, что они разругались, ребята хорошие. Красноглазиков много, и кодеров опытных на всяких разных языках. Интересно с ними. До сих пор в конференции общаемся периодически.
-
-
Да рассказик с астронавтами, ну просто, почти "Шекли"

Оу! Спасибо за сравнение с таким мэтром, но мне до него далеко.
Да и непостоянно это, непрофессионально. Бывает увлекаюсь чем-то и проявляется графоманский зуд, тогда и пишу, а публикуюсь на форумах проектов которыми увлечен.
Немножко в теме по созданной общине RedMiner писал, при создании и дальше по всей теме, потом после вайпа был рассказик в продолжение той же темы. Потом увлекся TFK и уже на другом сервере реинкарнировал общину, с соответствующими зарисовками в прозе. Затем увлекся LiF, мод писал и немножко вел свой раздел по скриптингу, иногда графоманя, а сейчас вот на Lua подсел, и сюда перебрался. Поближе к единомышленникам.
Есть еще отдельный сайт, http://drabont.net/ посвященный размышлению о будущем человечества с прозовым изложением идеи. И личный блог, с философской поэзией и прозой, но он для близких людей.
Еще раз благодарю за сравнение с мэтром. Мне очень приятно.
-
1
-
-
Может вообще замутить память на редстоун-ячейках памяти? Вон один Кулибин строил схему с 1кб, мы пойдём дальше, залагодромим весь сервер и построим 128кб.
Злой ты.
А на редстоуне и процессор можно замутить если захотеть. Но нужно ли?
-
Публиковаться не пробовал ?
В смысле?
-
Способ хранения и обработки информации, в условиях отсутствия жесткого диска.

Отличный способ ) Можно еще проще, на бумажке писать и там-же вычислять.
Беда в том, что время ограничено, а вычисления очень трудоемкие. Не успеют вручную обсчитать.
Ну, точно же! Робот с булыжником в инвентаре и геосканер. Будем хранить инфу в толще породы.
Можно и без геосканера обойтись. Только скорость чтения сильно упадет.
Идея отличная, но нет робота, и булыжника нет. )
Из компьютерной техники только системник без винта, монитор, клавиатура и дискетка OpenOS. И ресурсы для крафта.
А нужно 100 000 байт энергонезависимой памяти.
-
А что, идея классная! Если заделаешь файловую систему на мониторе, или еще лучше, расширитель для текущей файловой системы, прославишься.
Еще, мониторы можно красить и ставить впритык. Итого до ~12 мониторов на один комп, что почти 300кб.
Ну, это не идея а гипотетическая возможность увиденная в процессе изучения работы монитора. )
Комикс хороший, но я не понял как он относится к теме.
-
Жаль, что на практике не применимо, дискета дешевле и объем больше.
А так, идея классная.
Применимо-применимо )
Пролог:
- Команда астронавтов под руководством офицера по кличке "Йошкин Кот", взяв с собой очень много различных ресурсов отправилась на луну для постройки большой суперсовременной базы.
- Вы, молодой но опытный программист Василий, летите с командой в качестве главного программиста.
- Для проведения расчетов при постройке базы, и расчетов обратной траектории полета вы взяли с собой рабочий компьютер.
- Компьютер отличный: корпус Т3 со встроенным дисководом, большой монитор Т3 и удобная клавиатура. Правда еще в прошлом месяце вы втихаря сняли с него емкую планку памяти поставив взамен две Т1, но рабочим программам столько не нужно было, а дома у вас не запускалась новая игра.
Прилетаете вы на луну, при посадке случается небольшое ЧП - ломается радио-модуль и связи с землей нет, но это не беда, команда вполне автономна, и успешно разворачивает небольшую временную базу с солнечными панелями, складом-мастерской, регенераторами кислорода, санитарно-кухонным блоком и спальней.
Команда приступает к постройке основной базы, а вы начинаете распаковывать свой компьютер и с ужасом вспоминаете, что перед отлетом, сняли винчестер, чтобы скопировать домой скачанную на работе коллекцию интересного видео, и в суматохе забыли поставить его обратно.
Заметив замешательство на вашем лице, к вам подходит командир миссии.
- Что случилось, Василий?
- Гм... Я это, я винт забыл...
- Так возьми на складе, мы с запасом набрали, винтов, болтов, гаек, чего душе угодно.
- Эм-м... Не такой винт... Винчестер в смысле, накопитель. Жесткий магнитный диск.
- Винт, диск, жесткий, мягкий не морочь мне голову своими штучками, скажи что это значит.
- Это значит, что я не смогу сделать расчеты для постройки реактора, - Василий замялся,- и рассчитать обратную траекторию полета тоже не смогу...
Лицо Йошкина кота потемнело.
- Получается мы не сможем вернуться?
- Получается да.
- И реактор не сможем поставить?
- Угу.
- И энергия на регенерацию у нас есть только до захода солнца, выходит?
- Выходит что так...
- А после погибнем?
- Да.
- Из-за того, что ты забыл какую-то свою железку, погибнет вся экспедиция?
Василий потупил взгляд и переминался с ноги на ногу, затем встрепенулся и выпалил, - Идея!
- Я дискетку сделаю, а софт для расчетов весь напишу. Он не сложный. Благо дискетка с осью, ну, в смысле с операционной системой, у меня всегда с собой на всякий пожарный.
- Это как-раз пожарный. Даже очень пожарный... Жизненно... Что тебе для этого нужно?
- Да мелочь: кусочки железа, бумага, дерево и булыжник.
- Булыжник?
- Ну да, булыжник... а что?
- У нас всего полно, но лунные базы из булыжника не строят. Металл любой есть, стекло, алмазы, дерево, бумага, все что хочешь, даже взрывоустойчивый обсидиан есть, но булыжника и глины нет!
- Гмм... Что же делать? Весь софт для расчетов занимает ровно 100 000 байт, и такой хитрый что никак не сжимается. А дискетка с осью - ридонли... Может в памяти виртуальный диск создать, главное компьютер не выключать, а я за сотню часов все напишу - программист вспомнил про снятую планку, и начал прикидывать, сколько сможет выделить на виртуальный диск.
- Не выключать не выйдет. Ты учти, что солнечные панели дают мало, а регенераторы кислорода берут много. Каждых 4 часа, как запускаются, вся энергия на них. В базе даже свет тухнет.
- Я что нибудь придумаю. Обязательно!
Командир хмуро посморел на Василия.
- Сейчас у нас утро, так что у тебя есть пару недель до захода солнца. Пока есть время - думай!
И на этих словах Йошкин Кот, повернулся и пошел к шлюзовому отсеку. Перед выходом обернулся и сказал, - Команде об этом ни слова. Пусть спокойно работают.
--==--
Решений несколько, но эта экспромт-задачка для тру кодеров)
-
5
-
Хм... Это теория, хочу увидеть на примере. В каких случаях монитор очищается? Пререподключение gpu стирает же все или нет?
Не стирает )
Если сделать:
prn('Hello')` gpu.bind(component.list("screen")())наше хелло останется на экране.
upd:
Правда с utf-8 я погорячился. С "узкими" символами (например unicode.char(0x1F00)) все в порядке, но при выводе "широкого" символа (например unicode.char(0x1000)) следующее знакоместо затирается пробелом.
Т.е. Если вы сделаете:
gpu.set(2, 1, '!') gpu.set(1, 1, unicode.char(0x1000)) c=gpu.get(2,1) prn(c,string.byte(c))
то вопреки ожидаемому выводу "! 33" мы получим " 32", пробел и код пробела.
Довольно важная но недокументированная особенность!
-
Монитор хранит символы, пока их не перезапишут или не разрушат блок. Чем не стационарный накопитель?!
Пример:- монитор 3-го уровня имеет 150*50=8000 знакомест.
- а если еще вспомнить, что он умеет двухбайтовый utf-8...
- а если еще вспомнить, что знакоместо имеет 2 цвета...
Получается:
- монитор 3-го уровня - 8000*(2+2) = 32 000 байт
- монитор 2-го уровня - 2000*(2+1)=6 000 байт
- монитор 1-го уровня - 800*2+800*2/8=1800 байт
Вывод:
- Выбрасывайте винты, юзайте мониторы
-
7
-
Выдается за имитацию бурной деятельности?=)
И за множественные начинания.
-
Чего не поверим? Поверим! Это называется юношеское желание максимально переменить мир и создать что-то архиграндиозное - объять необъятное.
...cut...
Ну и фраза: "Но потом господин сябро решил написать OS на луа" как-то устрашающе звучит. Правильнее не решил НАписать, а скорее решил писать, а еще правильнее - решил создать тему о намерении писать "свой ОС".
Ы
Предлагаю учредить "орден имени Сябро"
-
1
-
-
На практике, большинство затей "а давайте свою СуперОС напишем, и чтоб она лучше всех была!!!111" начинаются и заканчиваются на стадии рисования самой_лучшей_загрузочной_заставки, единицы добираются до кнопки "пуск" копируя угловатые стереотипы.
Но черт возьми. Ребята! Мы же здесь кажется в кубики играем, разве нет? )
-
Да, это выполнялось в самом чистом Луа, который мне удалось найти.
А что если сделать как-то так:
a=1 e={print=print, a=2} e.load=function(str) return load(str,nil,nil,e) end load(" print(a) load('print(a)')()",nil,nil,e)()именно так. но чуть менее грубо.
e.load=function(c,s,m,g) return load(c,s,m,g or e) end
чтобы все параметры обрабатывались, а среда по умолчанию бралась из среды выполнения.
там еще вроде с _ENV можно сыграть, но я в нем пока не разобрался.
-
Никому не верьте, ОС умеет в True-color, миллионы цветов:
ОС умеет. Мониторы не умеют )

Создание платформ 16*16
в Программы новичков
Опубликовано:
Скринов нет, кода нет, населена роботами с рекомендуемой комплектацией )