Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improvement on Chain Levels #10

Open
ShylokVakarian opened this issue Aug 3, 2019 · 2 comments
Open

Improvement on Chain Levels #10

ShylokVakarian opened this issue Aug 3, 2019 · 2 comments

Comments

@ShylokVakarian
Copy link

You could improve chain levels by having the bot check if there's a (...) in the product, and rotate the product twice counter-clockwise. It'd also be beneficial to have the bot determine the pattern in order to reduce redundant commands.

@gtw123
Copy link
Owner

gtw123 commented Aug 3, 2019

I agree it could definitely do the repeating molecules in a more efficient way! The simple way would be to make it identify the repeating "units" of the product, the construct these units one at a time and bond them to the rest of the product. The problem is that after you bond a new unit to the rest of the product, you now have a large molecule sitting on top of a bonder, and if you try to move it in any direction, it could potentially bond together two atoms that shouldn't be bonded.

Rotating the molecule after bonding it might work, but that causes problems when there are multiple products on the same level (as they might hit each other).

It also gets more complicated when there are multiple bonds on the (...) atom.

But I think in simple cases it would certainly be possible to make it do a much better job than it currently does.

@ShylokVakarian
Copy link
Author

Sadly, I learned that you can't rotate the chain product outputs. But what I meant with the rotating the chain output is that you could build the columns of the output one-by-one, bonding them to the rest of the structure, just like you do with rows in the normal levels. Like an atomic printer.

That doesn't mean that my plans of a more instruction-efficient solver for chain levels are over. Merely that things get...complicated. See, if we can't rotate the chain output twice counter-clockwise to the rest of the machine, then we have to rotate the rest of the machine twice clockwise, relative to the chain output. This means building the "printer rails", as I've come to call them, sloping downwards to the right, with the printer piston arms facing directly right. From this, the instruction program could assume that the entire machine is rotated twice clockwise, and "mentally" rotate it twice counter-clockwise to return it to normal, allowing you to reuse previous logic when it comes to instructions. Then just detect loops and cut out the extra instructions before writing them to the game.

In fact, it'd probably just be easier to modify your program so it does the rotated machine with all levels, just to keep it simple.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

2 participants