EXAPUNKS

EXAPUNKS

Not enough ratings
X-PEL 1K LOCKPICKING (EASY) (BY FERROPHAGE)
   
Award
Favorite
Favorited
Unfavorite
File Size
Posted
Updated
4.112 KB
27 Aug, 2023 @ 2:45pm
11 Nov, 2023 @ 8:16pm
5 Change Notes ( view )

Subscribe to download
X-PEL 1K LOCKPICKING (EASY) (BY FERROPHAGE)

In 1 collection by Ferrophage
Ferro's EXAPUNKS Levels
4 items
Description
This is a basic lock to pick. This is a slightly harder version of my second EXAPUNKS puzzle, the "Very Easy" X-PEL 500. Harder versions should be coming soon.

My solution is 64 cycles, 14 size, 4 activity.
8 Comments
benzeboy 18 Nov, 2023 @ 1:47am 
Hey fun puzzle! it has a bug where if you run at full speed it will drop 301 in the center instead of letting it jump again, however if you tab-through or just f4 it'll solve fine. Otherwise, Thanks! :)
王一羖 15 Nov, 2023 @ 3:22am 
Thanks for your answer! I never make a custom level, so I didn't even realize that there would be a competition between the bot and the level code :KOh:. Anyway, thanks for your explanation and Merry Christmas in advance.
Ferrophage  [author] 11 Nov, 2023 @ 7:41pm 
My solution and explanation of the solution is below:

LINK 800
MARK LOOP
COPY X #LOCK
TEST #LOCK = 1111
TJMP END
SUBI 1111 #LOCK T
ADDI X T X
JUMP LOOP
MARK END
LINK 800
GRAB 301
LINK -1
ADDI X 1 #LOCK
LINK -1



The bot starts with a value for X of 0. The bot inputs X to #LOCK. The bot checks the returned value of #LOCK. If the value is 1111, the lock is open, and the bot jumps to the "END" section of the code. If the value is not 1111, the bot increments X. Each digit of X that is correct corresponds to a 1 in the returned value of #LOCK, so by subtracting the value from 1111 (inverting it), we can increment all of the digits of X that are incorrect. When the correct value is reached, the bot runs the "END" section of code and finishes the puzzle.
(3/3)
Ferrophage  [author] 11 Nov, 2023 @ 7:41pm 
I tried running your code, but I wasn't able to figure out what was wrong either. The way that you are checking the link should work, but there is some problem that I can't quite figure out. When I ran your solution at normal speed (on the first test case), your solution worked. However, when fast-forwarding, your solution didn't work. I think it is possible that my code is not fast enough, or something similar. If that is the case, I apologize. My coding has improved since making this level, and I may optimize this a bit if I have the time.

Thank you again for playing my level and for your comments! This was partially a way for me to learn and practice my JavaScript, so I am glad to see that people are enjoying it. I apologize for any other errors that I haven't noticed.

HINT: Is there a smarter way to brute force this lock? Why does the lock return values at all? (2/3)
Ferrophage  [author] 11 Nov, 2023 @ 7:41pm 
王一羖, thank you for your comments! I am glad that someone is having fun with my level. I am sorry you are having some problems.

First of all, I apologize for the mistake in the description. I copied it from a version of this puzzle with a three digit lock, so the example is only three digits. I will fix the description with an update, I hope it doesn't break anything. I think that this description needs to be updated more, but I do not know how to phrase it right now.

To answer another question you had, the key to the lock is a number between 3333 and 9999. If you input a number with less than four digits, like "72", the lock will interpret it as "0072" (I spent a long time on that part of the level code). The reason the key starts at 3333 is to prevent a key with less than four digits. A code like "0072" would also be too easy to brute force :)

Your main question is a little harder to answer. (1/3)
王一羖 25 Oct, 2023 @ 6:24am 
Second question, is the code for the lock could be like (0001) or (0072) or anything that starts with zero? I don't think we can copy something like (0072) into the #lock, this game seems not smart enough and it will become (7200) or something only exapunks know, so I had to assume the code starts from at least (1000). Also, the example you gave in the instruction like input(208) for code (248) return (101) also makes me wonder how many digits the real code should be since the #lock didn't return (0101) or (1010). I am not complaining about the puzzle, it's quite good and interesting, I just thought maybe it could be improved in the instruction part.

those noop are made to left enough time for the robot to get inside the room and get out :Khappy:

LINK 800
COPY 9959 X
MARK OPEN
NOOP
NOOP
NOOP
NOOP
NOOP
NOOP
COPY X #LOCK
SUBI X 1 X
TEST X = 999
TJMP TAKE
REPL OPEN
MARK TAKE
LINK 800
GRAB 301
LINK -1
KILL
COPY X #LOCK
LINK -1
王一羖 25 Oct, 2023 @ 6:24am 
I separate the code into two parts. The 'open' part is doing the decoding part, inputting x inside the #lock, starting from 9999, and minus 1 from x to do the next round (9998). After inputting the code once, the robot will replicate itself from the head of the part 'open', and try to link to the next room, which of course, will kill itself if the code is wrong. Theoretically, it will start from (9999) to (1000), try any possibility and grab the chance once the door to the next room are opened. However, when I try to run it, things are quite different than I thought. It just won't work. And when I try to start from somewhere close to the right number (like using (9960) in second round), it will work, which bring me here to ask for your help.
王一羖 25 Oct, 2023 @ 6:23am 
Hi mate, thanks for your work! However your puzzles make me a bit confused, it seems that I can't figure it out by myself, so I had to ask you as the creator for help.
First, As you may found, some of us prefer to use a single robot to finish the job (me), and this puzzle seems perfect for one robot, so I have written a good program which should be fine for any situation. However, it didn't work in most rounds, which is weird because it works in round two and the situation if I manually put it close to the right number. So I have copied my program at the end for you to check.