« first day (1472 days earlier)      last day (3669 days later) » 
00:00 - 18:0018:00 - 00:00

18:01
Game of Life computers can process binary strings of glider/no glider, which means when it terminates you can't tell whether it's just emitting a very long string of 0s (no glider). But if you made a more complex computer it could represent 0 as two closely spaced gliders, 1 as two widely spaced gliders, and then no gliders would indicate termination. Alternatively it's output could be binary representing a higher language (maybe ASCII) with one of the symbols never used, reserved for halting
oh yeah sure
of course you can tell if it's "terminated" from inspection
Real computers do something similar I guess (although you'd know more than me about that...)
but it's not like a Turing machine or a PDA or a (normal) tag system which actually includes halting in the model
Do you mean like a Game of Life computer that processes all the input, giving a stream of output, and then disassembles the computer itself when it's finished?
ummm... I don't think so :D
18:04
I think I'm answering the wrong question... Oops :)
but I guess terminating isn't really a useful property for Turing-complete systems, because of the halting problem... ultimately you can't do anything but cut off the computation to say "it probably doesn't halt any more" anyway
Would a stream of gliders where only every other glider represents output work? The ones in between mean "program is still running", and when it halts they cease
@trichoplax I think we're still not talking about the same thing
@MartinBüttner Pretty much.
18:07
hm, that's sort of unsatisfying :D
@trichoplax I think I got the bloody twisting snakes under control :) If I'm not mistaken, you can test the swept area of a segment of any lenght with at most 8 half planes and 4 radii.
you wanted to say "monkey-fighting snakes"
Great. Does that take longer than the arcs and segments approach?
@MartinBüttner I now have the full quote in my head
@PeterTaylor I'm not sure if that means that my beloved .NET regex is or isn't Turing complete. I guess for all practical purposes it is. the thing is it can't not halt - you have to manually specify the maximum number of steps to take. but you could represent not halting as not matching. so basically if you say "run this TM for 10k steps" and you don't get a match it just means "it didn't halt within 10k steps".
but... having an arbitrary but finite number of steps just doesn't sound Turing complete to me :D
Can your .NET regex simulate the Game of Life? Or rule 110?
It sounds like it could only simulate a fixed number of steps
18:14
I think I can encode a 2-stack DPDA in it
but I can only make it take an arbitrary finite number of steps (as far as I know)
Do you have access to the step limit while running?
no, only before I set it off
Then I guess you'd call it not Turing Complete
right... that's what I was thinking
but I don't see how it's practically any different
Hardware limits aside, you could still run any halting program for which the halting time is known in advance.
You just couldn't run any program that is known to not halt
18:20
in reality, I can only let a rule 110 or game of life (or even a Turing machine) only run for an arbitrary finite amount of steps before I have to decide "okay it's halted, I have a result" or I say "damn, it still didn't halt, I guess it won't any more"
@trichoplax oh I could also run those reliably (because if I run out of steps without halting I can claim "doesn't halt")... what I can't run is programs where I can't put a finite limit on the runtime.
Anything which people describe as Turing Complete only applies if it has unlimited resources of time and tape, so the limitation you describe effectively applies to anything. I guess the difference is that some things can be adjusted while running (hot swapping more RAM/replacing broken parts)
@trichoplax I even did a bit of javascript to play with snake bits: petiteleve.free.fr/SO/sweep.html
@MartinBüttner That's true for any sufficiently powerful computational system.
@kuroineko Looks a lot sparser than your PHP images. I'm not sure what I'm looking at
you can drag points around, except the center of rotation.
18:24
@PeterTaylor yeah, my point. ^^ I guess at this point, being Turing complete really doesn't make any practical difference
@kuroineko Oh! I thought I was looking at a still image :)
I'm not used to talk in English maths, but I'll try a simple explanation
@trichoplax I mean it's also just a technical limit of the implementation for regex. there's nothing conceptual stopping it from being Turing complete. it's just that they added an "optimisation" which makes quantifiers skip empty matches if they have already matched the minimum amount.
@MartinBüttner So you could reimplement with the same rules but no limit?
yeah. I think if I only removed the restriction for ungreedy quantifiers it wouldn't even make any difference for "normal" regex application
18:28
if we call M the point of the line supporting the segment that is closest to the center of rotation and M falls within the segment, then you have to split the segment at M.
@trichoplax arguably, going by the semantics of regex, it is Turing complete
If M is not within the segment, then you can test whether a point is inside the swept area with 4 half planes and 2 radius tests.
(if I don't have any other mistake in my reasoning)
"the segment that is closest to the center of rotation". Does this segment have the centre of rotation as one of its endpoints? Or is it just closer to the centre than the other segments being considered?
but because the implementation doesn't try hard enough when backtracking, it's not possible with the official implementation
18:31
@MartinBüttner Yes that sounds reasonable. It is a failure of the implementation that it terminates before the instruction has been completed
I should send a bug report :P
Imagine the line that prolongates the segment. On this line there is exactly one point that is closest from the center of rotation. It is the point you obtain by drawing a line orthogonal to the segment that goes through the center.
@kuroineko That makes perfect sense now. Now reading your original statement is perfectly clear
So even when M is within the segment it isn't a problem, you just have to consider the two parts of the segment as separate segments?
Good :) Talking in maths usually makes me buzz like a fridge. Yes, exactly. You split the segment and perform separate checks on both halves (for twice the usual computation cost, of course)
18:36
But even for a length 2 segment, you're halving the comparisons needed so double the work is no worse. For anything longer than 2, even double the work is better than my approach of only looking at length 1 segments
indeed
@Sp3000 Found another interesting quirk. Remember how * and + both include one zero-width pattern? *? doesn't, unless it has to... so *? actually backtracks inside, and tries once before giving up. (+? tries once right away, but won't go back for another attempt)
and you can precompute all the half planes and radii, so checking unmoved points is fast
Very roughly, a third of all unit segments will be part of a longer segment, so there should be a significant reduction in number of checks.
You can probably optimize the order of the checks between radii and half planes. And besides everything can be done with integers.
18:40
I should have thought of precomputing. My comparisons are based on translating the pivot point to the origin, so there will be a lot of duplication of calculation
you still have to translate the checked points to the rotation center, though
but that's not very time consuming anyway.
No - still definitely worth precomputing. At least for speed. At present I'm also limited by memory
actually I'm working on a C++ solver. I reckoned memory would be a problem with higher level languages, so I decided to go the hard way :)
I think I found a trick to eliminate symetric figures a bit quicker, but I will not be able to validate that before the bloody thing starts working.
18:45
Yes I was thinking if I got round to making a serious answer it would need to be something like C++.
well nothing beats C++ as far as speed is concerned.
I was also thinking it would be helpful to have full control over the size of variables
yes, especially to encode rotations and joints
I'm using bitfields. One to store the partitioning into straight segments, and another to encode left/right rotations
I was thinking of using 2 bits per joint, to indicate 0, 1 or 2. So instead you're just recording the joints that aren't straight?
yep. And I take only a right turn for the 1st joint, to eliminate half of the symetrical figures.
18:51
When you say "the first joint" do you mean length 1 from the start, or the first point at which there is a turn?
That takes care of all horizontal symetries. Plus another trick to eliminate vertical symetries just by looking at the partitions (before starting to bend the snakes)
the 1st point at which there is a turn
The idea is that starting from the tail up will produce the same results as starting from the head if the partitions mirror each other
for instance a (2,1,3) partition will produce symetrical results of a (3,1,2)
so I gather pairs of symetrical partitions and eliminate one out of two.
Is the last digit the length to the last turn, or the length to the end of the snake?
length of the rest of the snake
18:54
Cool. So there is no ambiguity
so basically that cuts the search space nearly in half. Only "palindromic" partitions have no distinct symetric configuration.
for instance (2,1,2), or the basic flat snake (n)
This sounds like it will take considerably less memory - that should allow at least one or two more values to be calculated. My machine can only handle up to 16 with my code
That does not change the NP completeness, but that might gain a 4x speed factor compared with a brute force folding approach. And if the swept area detection works as planned, that should also boost computation quite a bit.
A 3x speed increase would be enough to increase the score by 1
due to the 3<sup>N-1</sup> number of configurations?
erf... <sup> does not work here it seems
19:00
If you're near the limit with your score (taking just over a minute) then 4x might be enough to increase the score by 2
:)
If this tie breaker idea is implemented, that will not matter that much
It seems there are roughly 2.6 times as many combinations with each increase in length. So very roughly 3x time requirement
FML. My insurance company just reported that my social security number was breached.
Makes sense. Each new joint multiplies configurations by 3, and some small percentage gets trashed by illegal folding
0
A: Sandbox for Proposed Challenges

flawrThis is only a first draft so far. I am happy to hear from your suggestiosn Assymetrical KOTH: Catch the Cat This is an assymetrical KOTH, you can submit programs as in the thread of the CATs or in the thred of CATCHERs. (The cat catcher is in fact that fat catcher with the rat and the bat at t...

19:03
I'm expecting that the 2.6 figure will stay fairly constant until the sequence diverges from the sequence of non-intersecting paths. At some point at or below length 31, the number of reachable shapes will suddenly be more restricted than simply the number of non-intersecting paths, then that figure of 2.6 should drop a little
I suspect memory and cache issues will also influence computation time. It should get slower when memory consumption increases
Right, I'm off to bend some snakes :)
@kuroineko Lol bentsnake.com
@kuroineko Have fun!
You too!
yay, shaved another byte off the nether regex (and finally updated the explanation, which was still for the 126-byte version)
19:16
yay for 96 bytes
@PhiNotPi Are you around?
Do you want me to be?
@PhiNotPi How do you want to interface with the wrapper? My proposal: Construct an instance of Wrapper, pass it the command arguments, and then call "prompt()" which returns an int?
@Rainbolt I guess that can work. I wouldn't have developed any kind of preference yet.
19:23
So, using the example given in your question, you would say
Wrapper submissionOne = new Wrapper("perl awesomebot.plx 042 045 0 324 432 6");
int guessTwo = submissionOne.prompt();
Wrapper submissionTwo = new Wrapper("python wonderbot.py 042 045 0 324 432 6");
int guessTwo = submissionTwo.prompt();
// Do whatever you want with the guesses
If that looks alright then I'll go that direction
The output of the contestant will be two numbers, if that makes any difference.
It looks fine. I don't know any other way to do it.
A possibly snake-related paper: arxiv.org/pdf/hep-lat/9211062v1.pdf
@PhiNotPi I think the restrictions on self-avoiding walks are much less ... strict... than what Lembik asked for
I was hoping that some part of it would still apply, since I think people were talking about ways to number the snakes.
Unrelated: did you see my sandbox comment about the shoelace algorithm to find the area of a simple polygon?
oh, yeah, it might help to enumerate them and then just filter
@PhiNotPi yes I did, thank you
although I thought if it was trivial to adapt to self-intersecting polygons it wouldn't be specifically called an algorithm for determining the area of simple polygons ^^ ... but maybe you could somehow partition a self-intersecting polygon into simple polygons and then use this to determine each sub-area
The problems arise when the "winding" of the polygon changes direction.
If you have a line segment, you have to keep track of which side of the segment is "inside" and that can change when there are intersections.
You would have to take the polygon, divide it in to non-intersection regions, and then do the addition and subtraction.
I have to leave abruptly. Bye!
20:08
I just had an idea for a semi-cooperative KOTH. Posting to sandbox now.
0
A: Sandbox for Proposed Challenges

ZgarbSemi-Cooperative KOTH: Grid-Routing Battle (TODO: Work in progress. For starters, a better name would be nice.) king-of-the-hill grid path-finding This is a semi-cooperative king-of-the-hill challenge, where the bots construct paths through a two-dimensional grid graph. The bot who controls th...

were there any cooperative KOTH before?
I don't think so
I remember it being discussed at some point, when I was lurking here. :P
@Zgarb did you mean "0 < y < 2N^2-1"?
yes, it has been discussed before but I am not aware of an actual challenge yet
20:13
@MartinBüttner Nope, I mean "0 <= y < 2N^2-1". The sources have outgoing edges too.
oh sorry... they are all to y+1... I saw one of them as y-1
Can source/sink vertices be claimed/owned/broken?
@Geobits At this point, I'm thinking they can be.
sounds interesting!
I think a horizontal dotted line might be interesting. You won't get as many points on each path, but every path will have at least one of your vertices on it.
20:21
I have to go now, but this is something I'll be (slowly) working on.
Please leave comments at the sandbox. ;)
does anyone know how we count the bytes of additional interpreter/compiler arguments? do we count the -/-- ... do we count the spaces if we need multiple arguments? if not, do we count the = in something like -option=10 (where I can usually replace the = with a space)?
21:07
apparently not
posted on meta
0
Q: How do we count compiler/interpreter flags?

Martin BüttnerIt's accepted practice to include non-standard compiler or interpreter flags in a program's byte count (most often used with Perl and Ruby, to run the program in an implicit I/O loop - but there are other use cases). However, I can't find any information about how exactly why count these, and if...

21:49
@PhiNotPi Here is the wrapper (meta bot post incoming).
I tested it with Python and Java programs.
Hey ho
Can someone upvote me so I can post a snippet?
0
A: Showcase your language one vote at a time [experimental challenge]

FUZxxlAPL Factoid APL (A Programming Language) started out as an interpreter for a formula notation devised by Ken Iverson. When the language was designed, people used teletypwriters to communicate with computers. The character set of these was limited, but due to their construction, one could put mu...

whoa, no APL post yet, I'm surprised
Hmmm... 10 rep for a history lesson
give me a second
0
Q: Java Wrapper for KotH

RainboltDescription This is a Java wrapper class for communicating with submissions written in other languages. If you decide to use this for a challenge, make your life easier and require submissions to post the command that runs it. If they can't run it from the command prompt, then you probably can't...

21:58
here you are.
22:16
@feersum just saw your comment, interesting idea
@MartinBüttner There was an APL submission but it was deleted because said user already submitted a J solution.
oh, right
Let's hope I get another upvote soon so I can post another example.
22:36
13
A: On "interactive" answers and other special conditions

J BMy basic guideline would be "as the problem statement says". Which is mostly to mean it's allowed to explicitly override anything it wants from what I'm about to say next. Actions to invoke For test-case/IO programs, I like it better when the whole invocation is possible as a single line, thro...

There you go @FU
@FUZxxl
Is there a keystroke to accept user name autocomplete in chat, or do I need to click it?
@captncraig I'm not sure…
(Although preferably, use the reply arrow that appears when you hover over a message. That way, it's clear which message you're replying to, and things onebox correctly.)
22:43
Hm… the 3-character snippet is a bit anticlimatic. I have a cool four-character snippet though.
@MartinBüttner In theory, could someone invent a compiler whose flags were Turing complete?
@Rainbolt do you mean gcc? :P
Or generally any Unix-like C compiler. They support setting arbitrary defines on the command line.
Just do
@Rainbolt ./compile -bfCodeToExecute="++--><..." emptyfile.txt
cc -DFOO=some_code file.c
22:52
Just wanted to establish that there was some potential for flag abuse
Otherwise I would downvote my own meta answer
4 character example incoming!
@Peter thanks, I didn't find that one. the "characters beyond equivalent standard invocation" rule seems to make sense, too, although I'm not sure it's always possible to determine that objectively
I think that the standard vs non standard should remain somewhat subjective
It's one of those "I know abuse when I see it" kinds of things
oh yeah, I don't mean deciding what standard flags are. but deciding what the "shortest equivalent invocation" is, could be a bit too dodgy
which is why I prefer your proposal
@Peter I think you said something like the even-odd area of a self-intersecting polygon just being "a simple fold" or something. can you find any links to standard algorithms? I'm having a surprisingly hard time googling this.
23:12
@MartinBüttner I was mistaken: I thought the shoelace algorithm worked on self-intersecting polygons.
oh right. I guess that means at least it's an interesting challenge :D
I wonder why people have such a hate for solutions in J. I can understand that for CJam and Pyth, languages constructed specifically for golfing, but J is a serious programming language with a long history and a well-thought design.
the little I found so far suggests that you can find all the intersections with Bentley-Ottman
I'm sure you can work from there, but I wonder what the best approach
Right now I'm mainly thinking about Morra.
fair enough ;)
23:22
@PeterTaylor Wow. You still have the avatar from that challenge.
@FUZxxl I'm more privacy-conscious than these people who post real pictures of themselves (Martin, grc, Doorknob, ...)
I can't say that; it's too easy to figure out who I am.
Literally ten seconds of clicking links leads to a picture of me.
@Rainbolt, I've deleted my comments on your meta post because they're now obsolete.
This username is now tainted with my real name; I'm too lazy to make a new one.
Not many people can tell, but my profile picture is actually slightly altered by an image editor. (I'm really good at image editing, so most people think it's the real me.)
23:27
@Doorknob it's the blur on the edges right?
@MartinBüttner I also cropped out the doorknob and added a blue background.
(I like how you just went right along with the joke :P)
@Doorknob oh right, I thought you might have been mounted on a smooth blue door ... that's how good your image editing skills are.
anyway, I'm off for tonight...
Yep. I'm personally very proud of how skilled I am with the paint bucket tool.
23:43
hm… still waiting for another upvote so I can show off an example with five character.
00:00 - 18:0018:00 - 00:00

« first day (1472 days earlier)      last day (3669 days later) »