Egor
Ну а по сути?
usernameak
а по сути я не понял, что найти то надо
Egor
а по сути я не понял, что найти то надо
Система должна мне предложить линию производства.
Egor
Скажем, дал задачу - найти оптимальный вариант по созданию двигателей - а он такой, чувак, оно делается в таких то заводах. И должны быть в таких то последовательностях
Egor
Что-то типа pathfind'a получается
usernameak
теория графов... хм
usernameak
с этим помочь не могу
Egor
Обходим граф от конкретного завода в ширину (Дейкстра), смотрим, на каком расстоянии присутствуют нужные заводу штуки. Если что-то слишком далеко — строим линию, проверяя ноды между заводом и нужной штукой на возможности сокращение расстояния )) Или нужно что-то другое?
Не, не длину, а список индастри которые требуются для Крафта. И не просто список а с каким следующим заводом коннектить нужно. Там чтобы сделать что-то одно, нужно скрафтить кучу мелких деталей
Snusmumriken
Жуть какая
Snusmumriken
Тут куда больше прямого менеджмента. Во-первых, составь тогда список всех-всех производилок. А так же что этим производилкам требуется на входе и что выдаётся на выходе. Ну там: { factory1 = { input = {"gas", "detail1"}, output = {"detail2"} }, ... } Потом выбираешь нужный завод, и ищешь по списку то, что ему нужно на вводе, и то что нужно производилкам которые у него на вводе рекурсивно, пока не дойдёшь до сырых ресурсов. Предварительно можно исследовать уже имеющиеся входы-выходы и запилить граф, который будешь дополнять недостающим.
Snusmumriken
А вот если один завод может производить сразу много всего, что может быть нужно сразу много где но есть ограничения по выводам деталек, то может случиться жопа в плане неоптимального строительства новых производственных линий, с кучей дублирующихся заводов с их хвостами, или ненормальным количеством связей. Или если нужно строить много одинаковых заводов для оптимальной скорости производств. И это уже задачи оптимизации на уровне коммивояжёра, будешь решать каким-нибудь динамическим программированием, но тут я не советчик, моих мозгов для этого недостаточно ))0
Egor
Список есть
Egor
Также простой вывод в виде таблицы что нужно для производства того или иного элемента
Egor
А теперь хочу чтобы ещё и схему рисовала
Snusmumriken
А теперь хочу чтобы ещё и схему рисовала
Нарисуй конечную точку цепочки производства. Дай точке всё что ей нужно.
Snusmumriken
Для рисования схемок, кстати, очень забавно использовать box2d из ловки. Связи как пружинки между отталкивающимися друг от друга нодами )0
Snusmumriken
и еще в завод может быть 7 IN и только 1 OUT
Ну ты проходишь по этим IN, и строишь по заводу у каждого из которых на OUT необходимый IN. Программно ))
Leon174
А еще лучше "Исследование операций" взять, например, такую вот книгу. Там всё, в том числе и транспортные модели, которые Снус пытался сформулировать.
Leon174
Оверхед, но это оно. Если задачу нужно решить, а не прикидывать плюс-минус лапоть.
Lucky
Lucky
Оверхед, но это оно. Если задачу нужно решить, а не прикидывать плюс-минус лапоть.
Ну, сыглы. Однако полезнее сначала свой велосипед прикинуть, а потом уже в ответы посмотреть.
Leon174
Ага. У меня шестое издание. Не без опечаток, но это и к лучшему.
Lucky
Я посвежее нашёл на англ
Leon174
У нас много расхождений в терминах, я бы сам не стал оригиналы по математике читать. Наши переводчики (которые не столько переводчики, сколько математики) уйму работы проделывают, чтобы в привычный вид привести. Или столько сносок наваливают, что читать невозможно, постоянно туда-сюда прыгаешь.
Leon174
Возвращаясь к lua... Такой вот проект. Слышал про него и раньше, сейчас вдруг вспомнил, полез проверять, а там вполне себе бурная активность идет. Выглядит неплохо, такой себе гибрид тайпскрипта и луа. Будет совсем здорово, если автор с наворотами ограничится и не будет строить очередной Ним. Луаподобность, как по мне, совсем необязательна, но это авторская прихоть. А мелкие вопросы возникли сразу. Например, привычное обилие локалов. На кой они, если глобальные переменные все равно нужно явно объявлять? Индексацию же с нуля сделал, не стал у луа списывать, так чего бы эти локалы не выпилить? https://nelua.io/overview/
Snusmumriken
Leon174
Цпп для меня в далеком прошлом остался, на лабораторках. Сатанинская поделка, выкидыш из ада. Я все понимаю, энтерпрайз, то-сё, но нафиг-нафиг... Кому надо, тот пусть пользуется. Мне, хвала Зевсу, это не нужно.
Snusmumriken
Лично мне плюсы в целом нравятся, как ни странно (стандартная коллекция со всякими map-vector), но объём бойлерплейта и всякие новомодные извращения типа темплейтов (и народа который пишет темплейты на темплейтах на темплейтах) — вымораживают. Ещё больше мне нравятся языки вроде D, которые ближе к луям чем к плюсам, имея фичи и тех и тех, но там инфраструктура немного странная.
ShadoWalkeR
Да и сейчас тоже нравится)
Leon174
Я еще могу как-то принять, если это как у дефолдовцев сделано. Взяли сильно урезанное подмножество языка для ядра и тем ограничились, а редактор вообще на кложе написали. А весь стандарт юзать... Да ну его нафиг, жизнь коротка. И ладно бы не было других языков, а ведь они есть, на которых можно с удовольствием писать, а не с головной болью.
Snusmumriken
Лично мне плюсы в целом нравятся, как ни странно (стандартная коллекция со всякими map-vector), но объём бойлерплейта и всякие новомодные извращения типа темплейтов (и народа который пишет темплейты на темплейтах на темплейтах) — вымораживают. Ещё больше мне нравятся языки вроде D, которые ближе к луям чем к плюсам, имея фичи и тех и тех, но там инфраструктура немного странная.
Scope guard'ы в D — золото а не фича. Это всё равно что в луях: function foo(filename) local file = io.open(filename) -- вызовется в любом случае -- при выходе из функции -- соотв. файл всегда будет закрыт -- автоматически -- и таких штук может быть много в одной функции -- и вызываться они будут в обратном порядке объявления scope(exit) do file:close() end if not something then -- автоматический // file:close() -- перед ретурном return "everything is bad" end scope(exit) do print("Cool") end -- автоматические // print("Cool"); file:close() -- перед ретурном return "everything is great" end
Leon174
А в нелуях это уже есть, если я тебя правильно понял.
Snusmumriken
Таки да
Snusmumriken
Я это прост активно использовал в opengl, типа Main() { auto gl = InitOpenGL() scope(exit) CloseOpenGL(gl); auto win = InitWindow(gl); scope(exit) CloseWindow(win); ... } Совершенно офигенски, особенно если учесть что в куче случаев там может что-то непроинициализироваться, но всё корректно завершится в правильном порядке. Не надо это прописывать в каждом стейте. Туда же — ручная сборка мусора, и не течёт ничё.
Leon174
Так ты D не бросил? Как better C используешь?
Snusmumriken
Вроде того.
Leon174
Да многие на это звание претендуют. Zig, например.
Leon174
https://dlang.org/spec/betterc.html
Leon174
У них же изначальная завязка на jvm, так просто не соскочишь. "The Clojure core team has no plans to work on this but it would be an amazing learning project for anyone and we encourage you to go for it!" От винта, короче.
Leon174
Так-то среди лиспов дофига кто в нейтив умеют.
Lämppi
Ну нет, изначальная завязка язык — гость, а кложа конкретная реализация
Lämppi
Есть clojuresSkript для js, clojureCL для clr, есть clojerl для beam
Lämppi
А остальные лиспы не кложа со всеми вытекающими
Leon174
А остальные лиспы не кложа со всеми вытекающими
Я просто вчера искал clojure to C. Ну, хотя бы в С, пусть не llvm. Вариантов живых практически 0. А нужна именно кложа? Я-то без пристрастий, просто увлекся лиспами слегка, мне не особо важно, кто из лиспов. Кложа, потому что fennel.)) Вот fennel интересен. Потому что lua. 😁
Leon174
Хорошая какая!
Хорошая, правда. И написано внятно, а то наши учебники порой невозможно читать, такую заумь навернут.
Timur
Teal, IMVHO, лучше (более идеоматичный и более совместимый с существующим Lua кодом)
Там одной вещи пока не хватает для полного счастья - нормального наследования. Но Хишам обещал, что сделает
Leon174
Teal, IMVHO, лучше (более идеоматичный и более совместимый с существующим Lua кодом)
Да, много желающих подправить луашечку. Статики порой очень не хватает. Опечатался или EmmyLua криво дополнила, а я не отследил, ну и сидишь потом, тупишь.
Timur
Да, много желающих подправить луашечку. Статики порой очень не хватает. Опечатался или EmmyLua криво дополнила, а я не отследил, ну и сидишь потом, тупишь.
Да, альтернатив много, но, кажется,что Хишам делает самый элегантный вариант, максимально близкий к Lua
Snusmumriken
Да, много желающих подправить луашечку. Статики порой очень не хватает. Опечатался или EmmyLua криво дополнила, а я не отследил, ну и сидишь потом, тупишь.
А безумные вункциональщики хотят шоб проги были полностью доказано корректными на этапе канпеляции ))
Leon174
Да, альтернатив много, но, кажется,что Хишам делает самый элегантный вариант, максимально близкий к Lua
Мне этот вариант зашел, тоже активно развивается. Я даже почти перестал падать в обморок от скобок. https://fennel-lang.org/
Snusmumriken
Но ведь не вункциональщики, а хакскелисы и полу-хакскелисты
У всяких тайпскриптеров и скалистов, как ни странно, весьма схожие замашки.
Leon174
А безумные вункциональщики хотят шоб проги были полностью доказано корректными на этапе канпеляции ))
Не, ну берега терять не надо. Луа таки не про это. Но вот кое-что добавить бы не мешало. Опциональная статика точно бы не помешала.
Snusmumriken
Ну вот вункциональщики ))
Lämppi
Lucky
можно жы писать на лиспе в луа
Snusmumriken
На лиспе, емнип, можно писать на любом языке программирования.
Lucky
меня прям порадовало суммирование в лиспе
Leon174
о господи! не, это для меня слишком (мне бы как тайпскрипт для js, но на луа)
А это не подходит штоле? Оно живое, вполне себе бодрое. https://github.com/TypeScriptToLua/TypeScriptToLua
Timur
А это не подходит штоле? Оно живое, вполне себе бодрое. https://github.com/TypeScriptToLua/TypeScriptToLua
это именно тайпскриптовый синтаксис, с другими операциями и приоритетами выражений, и с другой семантикой. От тайпскрипта хочется только типизации в нужных местах (вроде аннотаций в Питоне, но с проверкой времени компиляции) без радикальных изменений в Луа коде. Чтобы взять старый скрипт, добавить аннотаций типов и оно продолжало работать
Timur
конвертер из тайпскрипта имеет смысл только если на входе кодовая база на нем больше чем на луа
Timur
в случае если .ts файлов - 0, а .lua - десятки или сотни тысяч - от него пользы нет. Только боль