« first day (5 days earlier)      last day (195 days later) » 

1:43 AM
@MDXF Cubically is officially capable of addition!
0
A: Add two numbers

Kamil DrakariCubically, 10 bytes $7+7$7+7%6 Try it online! Cubically is a language relatively early in development. Its most unique feature is that its primary memory takes the form of a virtual Rubik's Cube with the colors replaced by numbers from 0 to 5. This Rubik's Cube cannot be written to, and manip...

 
1:55 AM
Yay! :D +1
 
 
2 hours later…
4:08 AM
By the end of the week, Cubically will have control flow. I'm also planning on making a major change to the notepad (and possibly input buffer) but I'm still debating
 
 
3 hours later…
6:56 AM
@KamilDrakari Nice! @MDXF Do you think you can remove the requirement for arguments to be passed to commands without arguments, or do you want to keep them for consistency?
 
 
9 hours later…
4:01 PM
First argument is the program, and the input stream is used as Cubically's input stream.
Whoops, looks like it doesn't like to output stuff...
Actually, it doesn't work at all. Derp.
 
4:40 PM
Fixed, probably. I also added a # command to print out the cube (for debugging).
 
@TehPers I'm trying to think of a way to keep the efficiency of the current method while allowing commands that don't need arguments.
@TehPers Wow, that's pretty great! Good job
 
@MDXF Thanks :D
 
5:37 PM
@MDXF I know this is a lot of suggestions, so sorry about that. Have you considered implementing > and < for gt/lt? Or do you want to compare values using only =?
I'm looking at codegolf.stackexchange.com/questions/127072/… and it looks like a problem that could be doable with Cubically when loops are implemented, but comparing lt/gt would involve modifying the notepad, which will mess up the sequence.
 
5:55 PM
Also, have you considered converting your scratchpad and input types to int64_t or some other fixed-width type? int is only guaranteed to be at least 16 bits, and isn't guaranteed to have exactly 16 bits.
The face values don't matter since they are only 0-81.
 
6:36 PM
@TehPers Not a bad idea, I'll add those
@TehPers Hm, maybe I'll make it int32_t (since not all machines can do int64_t)
(sorry for late responses, was doing a thing)
 
@MDXF Oh I saw that challenge. Next step is to let Cubically do HTTP queries! (jk jk)
 
Heh. For that it would have to have strings at all
 
Nah, just have the programmer pass in ASCII values for each character, then depending on the cube state, do a GET/POST/etc request
 
I'd probably give someone quite the bounty if they managed to do it in Cubically. Cubically alone can't do HTTP requests (obviously) but maybe piping Cubically into curl...
 
Oh, that'd be interesting. Worth a try, at least! gets to work
Actually, curl wouldn't be enough, you'd need grep too probably.
 
6:47 PM
Nah, +5/1+551@6:5+3/1+552@66:4/1+552@6:5+2/1+552@6:4/1+51@6:2/1+5@66:5+51@6:3/1+552@‌​6:1/1+551@6:2/1+551@6:4/1+551@6:3/1+552@6:5+52@6:3/1+551@6:1/1+5@6:5+2/1+552@6:5+‌​3/1+552@6:5+2/1+55@6:5+51@6:5+3/1+551@6:2/1+551@6:3/1+553@6:5+51@6:5/1+551@6:5+2/‌​1+55@6:2/1+552@6:4/1+551@6:2/1+551@6:1/1+5@6:5+51@6:3/1+552@6:1/1+552@6:2/1+5@6:5‌​+53@6:5+2/1+552@6:2/1+551@6:5+1/1+552@6:5+2/1+552@6:2/1+5@6 and then just an input-echoing mechanism would do it
Actually I might just try this in Cubically :P
 
I was about to generate the link :(
You forgot to take the user ID as input btw
 
I used your generator :)
Yeah I know
 
~7@7...
 
no actually
$7%7 :D
 
Oh, that's much better lol
Post it!
 
Yeah Seed stuff almost always gets upvoted
I will once I get the pipes working properly
 
Python's random number generator is pretty simple once you wrap your head around it. I still haven't completely reversed it though, since the first key value is just assumed to be 0 rather than actually being calculated (it works for some reason though?)
 
I've never done Seed, mostly because I haven't yet bothered to learn Befunge
 
Oh, Befunge is pretty fun. It wasn't too difficult to learn.
 
6:53 PM
Yeah, it's just another typical 2d lang, isn't it?
 
Basically.
 
7:11 PM
Aha. Cubically's & will now need an argument passed to it, and the program will only exit if the specified face sum/value is falsy.
So E6 will only exit if the notepad value is 0.
@TehPers @KamilDrakari Now Cubically has control flow. A small bit, yes, but still
 
Ay that's good, I'll update my interpreter
 
7:41 PM
0
A: What's my name?

MD XFCubically + Bash, 1654 bytes This needs three Cubically scripts (named 1, 2 and 3) and 1 bash script. Bash (84 bytes): ln -s rubiks-lang /bin/r r 1 <<<$1 2>y|xargs wget 2>y cat $1|r 2 2>y|rev|r 3 2>y|rev This pipes the first Cubically script into wget, then the saved file into the second Cub...

 
@MDXF Wow, nice! That's a complicated answer o_O
 
Thanks! and yeah, I wish I didn't have to use so many Bash things >.<
 
@MDXF Imagine if there were loops...
:P
 
Nah that'd make them shorter. Possibly.
 
I mean, just having a command like (6 mean "Loop from here to the end of the program until [notepad] is falsy" would shorten that particular challenge a lot
Unless you're relying on reaching the end of the program for certain situations
@MDXF Is there specified behavior for calling an input operation after already reading all input? In TIO it leaves the input buffer unchanged, but that seems like it would be difficult to detect the end of input.
 
8:07 PM
Or you could have ) be "Loop back to the ( which has the same argument, that combined with like, ? to jump over next command conditional on the value in its argument should allow somewhat arbitrary loops, as well as really complex interwoven loops that would be really hard to use correctly but might end up useful at some point.
 
Oh hey that's not a bad idea
Like (<anything>......)6 loops back to ( if the notepad is truthy, (<anything>......)7 loops back to ( if the input is truthy... I like it
 
That's a reasonable way to do it
The way I was saying would be (6 <anything> )6 be an infinite loop unless a command to escape were also added
 
That's another option
 
@MDXF I think I golfed your answer some more. U3D1R3L1F3B1U1D3 is what you and Kamil use to set a side to 1, then you can use -1 in place of :0-1/1 in file 3. No point spamming the comments there.
 
But having (6 <6 loop only> (3 <both loops> )6 <3 loop only> )3 as a valid structure would be interesting
 
8:16 PM
That'd be pretty interesting... Make it so that the argument is the value of that side/notepad/whatever rather than just the digit passed in
It'd allow for more loops basically.
 
There are a lot of options, depending on whether the loop operators are required to do something useful if they are passed multiple arguments
 
In other words, (0F1)0 would be invalid because face 0 changed, however if there was an opening to a loop with the value 3, it'd jump to there.
Still, I actually quite like the simple version where it jumps back only if it's truthy.
In that case, you can do (<arg>, and when it jumps back, it will only jump to there if one of the args is truthy?
 
Could have )<arg> be "Jump backwards if the arg is truthy" but instead of just jumping back to the first (<arg> it would stop at each one until it finds one that also has a truthy arg
Would even give some amount of meaning to multiple arguments to those operators
 
@KamilDrakari Exactly!
 
Not sure how easy it would be to implement that, but it's certainly a looping syntax that has both simple and complex applications, while taking advantage of Cubically's unique features
 
8:27 PM
@KamilDrakari It'd be implemented using a stack (FIFO) of loop starting locations. Each ( is put on the stack along with which args it uses, then when a truthy ) is reached, you go down the stack until you find the first truthy (. It might help to have a _ (or something) command to pop the top ( from the stack
By "go down the stack", I mean pop them until you find one, then put it back on the stack.
 
This is seeming more and more like a good idea
That's probably a bad sign
 
@KamilDrakari I agree.
 
But that actually doesn't sound like it would be that hard to implement just using a standalone "looping stack"...
 
@MDXF Whoops, it's -422, not -423 on the edit xD
Actually, just ignore me and do the math yourself. It'd be more reliable that way. I suck at math.
 
8:52 PM
I like all these ideas. I'll review them later when I have more consistent time to work on PPCG
@TehPers, thanks for the edits
 
9:47 PM
@MDXF I've implemented the ( idea in my interpreter. You can use (6 or )6 (or both) in the sample program.
(That interpreter has a few extra features too, like implicit command calling and gt/lt)
 
@TehPers Which ( idea does yours use?
 
( takes 0 arguments for "always jump to here", and any number of arguments for "jump to here if any argument is truthy"
) seeks backwards for the first ( it can jump to. ) takes 0 arguments for "always seek", and any number of arguments for "seek if any argument is truthy"
I haven't tested ( with multiple arguments yet. Theoretically it should work?
(It does)
 
10:08 PM
Huh, that's a fun implementation
It's painful to try to understand for the first time but pretty useful once you get used to it
Hey, sounds like Cubically, except the second part :P
@TehPers How does your interpreter guess whether or not there's going to be an argument after a parenthesis?
 
while tonumber(self.program:sub(self.ptr, self.ptr)) do
self.ptr = self.ptr + 1
end
 
I don't speak Lua
 
Lol. It converts the current character to a number, and if it succeeds, it moves to the next one. This happens during the ) execution
Lua doesn't have a char type, so it does it like this. For C, I'd imagine you can just check if c >= '0' && c <= '9'
 
Yeah, or isdigit(c). My interpreter already does that
 
Ah, okay.
 
10:13 PM
But I mean, when ( is reached, does it just automatically create an empty loop?
Like, if it were to read (6, would it create a loop based on the notepad, or would it create an empty loop and a loop based on the notepad?
 
It adds a label to the loop stack, containing the pointer location of ( and each argument after it. Once ) hits that (, it checks each character after it until it finds a nondigit.
@MDXF (6 would only be jumped to if the notepad was truthy.
Basically, ( can be treated as a label.
Well, a conditional label dependent on the arguments passed to it (if any).
) will jump to the first ( label where the conditions are met. My interpreter keeps track of the ( in a stack, then pops them as it's seeking backwards.
self.dir is just 1, but I have it there in case you start allowing the control flow to go backwards or something.
 
Ok makes sense
I was just curious if you had the bug that I almost added to my interpreter
 
Which bug?
 
(6 creating two jump points (open-loops)
 
Oh, I don't think my interpreter does that, but I'll check it out.
(67 is identical to (6(7, if that counts?
Also, my interpreter ignores the ( if it doesn't find a valid )
(...) is a "do-while" loop on steroids.
 
11:05 PM
0
A: Restricted mini challenges Cop's Thread

TehPersCubically, A016742 (Non-competing) This sequence is even square numbers: 0, 4, 16, 36, 64, ... Byte set: Any letter except [UuDdLlRrFfBb] Only the digits [6789] Any symbol except [-^:@/] Anything not mentioned in the ASCII character set, including whitespace. Note: This relies on this versi...

 

« first day (5 days earlier)      last day (195 days later) »