←2013-03-20 2013-03-21 2013-03-22→ ↑2013 ↑all
00:00:01 <Fiora> I oh
00:00:11 <elliott> joke guide: A: did oerjan say it
00:00:13 <elliott> er
00:00:15 <elliott> that was meant to be Q:
00:00:29 <Arc_Koen> Fiora: I do thank you though I wouldn't have got it
00:00:43 <fizzie> Arc_Koen: Careful with logreading if you intend to puzzle it out, there's a solution in there.
00:01:20 <shachaf> the solution is AAAAAAAAAAAAAAAA
00:01:23 <shachaf> hth
00:01:36 <Arc_Koen> fizzie: well I skimlogread
00:01:51 <Arc_Koen> I noticed a few occurrences of weird sequences of symbols
00:02:19 <Sgeo> Did someone say AAAAAAAAAAAAAAAA?
00:02:21 <Arc_Koen> truth is I'm not fluent with regexes
00:02:22 <Sgeo> http://images.uncyclomedia.co/uncyclopedia/en/7/7d/Win98-minesweeper-lose.PNG
00:02:36 <Arc_Koen> for instance what is (.)
00:02:45 <Arc_Koen> "one or zero anything"
00:02:46 -!- nooodl^ has joined.
00:02:54 <Arc_Koen> or "one or more anythings"
00:03:13 <Arc_Koen> if the latter, does it have to be the same anything or can they be different anythings?
00:03:41 <Arc_Koen> also what would be the difference between (.) and .+ or .* then
00:04:09 <fizzie> One anything.
00:04:12 <shachaf> (.) is the thing \1 refers to in this case.
00:04:13 <Arc_Koen> or does (.) just mean "one anything" and the brackets were just there to prevent the . from meaning something else
00:04:22 <Arc_Koen> \1 ??
00:04:23 <fizzie> But it's a capturing thing.
00:04:44 <Arc_Koen> so for instance, A+.*
00:04:44 <fizzie> \1 means the contents of the first ().
00:04:49 -!- nooodl has quit (Ping timeout: 258 seconds).
00:05:00 <Arc_Koen> does it mean "zero or one A, followed by any sequence
00:05:04 <fizzie> A+.* is equivalent to A.* :p
00:05:19 <Arc_Koen> oh, A+ means one or more A?
00:05:27 <nooodl^> yeah
00:05:32 <fizzie> It means "one or more A, followed by zero or more anything".
00:05:35 <Arc_Koen> and A* zero or more ?
00:05:39 <fizzie> Yes.
00:05:42 <Arc_Koen> riiiight ok
00:05:59 <Arc_Koen> so you're saying there is an A in the first box
00:06:03 <Arc_Koen> s/box/cell
00:06:22 <Arc_Koen> (is "cell" what you would call one thingy on a chessboard?)
00:06:41 <oerjan> "square"
00:06:43 <shachaf> No, you're saying that.
00:06:46 <shachaf> But you're right.
00:06:56 <oerjan> iirc from last it came up
00:06:57 <fizzie> On chessboard, I think... right, what oerjan saidl
00:07:39 <Arc_Koen> thanks
00:07:52 <Arc_Koen> also I assume | has lower precedence that everything else
00:07:56 <fizzie> But in a crossword, cell isn't a bad word.
00:08:24 <Arc_Koen> in french we say "case" for *everything*
00:08:30 <fizzie> That is true too.
00:08:56 <nooodl^> even chessboard squares?
00:10:27 <fizzie> Arc_Koen: The most unusual feature is that 1 down, where A(?!B)C means "AC, except after A, attempting to match B there must fail".
00:10:43 <Arc_Koen> what
00:11:02 <fizzie> It's a zero-width negative lookahead assertion.
00:11:03 <Arc_Koen> "AC, except after A, attempting to match B there must fail"? or did I miss a special character
00:11:29 <Arc_Koen> "hang on, that sentence is difficult to process"
00:12:14 <Arc_Koen> ok no I have no idea what you meant
00:12:46 <fizzie> Well, "match A, then fail to match B, then do match C", if you like; but failing B has no effect on the position.
00:13:01 <Arc_Koen> hmmm
00:13:14 <Arc_Koen> right
00:13:18 <Arc_Koen> so it's redundant?
00:13:25 <Arc_Koen> because we know that C doesn't match B
00:13:53 <fizzie> That was meant with any pattern in place of A, B and C.
00:14:01 <fizzie> In that literal case, sure.
00:14:05 <Arc_Koen> oh, ok
00:14:20 <Arc_Koen> well truth is I really don't know enough about regexes
00:14:30 <fizzie> Perhaps I should've used something else than exacty those letters of the alphabet.
00:14:31 <Arc_Koen> (.)(?!.+\1)[^B]+.*
00:15:05 <Arc_Koen> so (?xxx) means "not xxx" right?
00:15:24 <nooodl^> ill ruin it by writing it in English maybe...
00:15:52 <Arc_Koen> and you told me \1 is refering to .
00:16:27 <fizzie> Arc_Koen: It would match XYZ and XXZ but not XYX.
00:16:31 <Arc_Koen> so "fail to match two or more anythings"?
00:16:47 <fizzie> It's referring to what the . matched.
00:16:53 <Arc_Koen> oh wait, \1 isn't the same thing as ., it is the same thing as the pattern matched by the first .
00:16:54 <Arc_Koen> ok
00:17:32 <Arc_Koen> so what does (?!xxx) means?
00:17:39 <nooodl^> its equivalent to .[^B]+.* but the last two chars are different from the first
00:17:41 <fizzie> "After the first letter, there must not be a copy of it with one or more any character between; and what follows the first character is not B."
00:18:04 <Arc_Koen> uh
00:18:06 <myndzi> (?!xxx) means "not followed by xxx"
00:18:20 <Arc_Koen> so it's equivalent to (^xxx)
00:18:21 <fizzie> It means that at that position, attempting to match xxx must fail.
00:18:21 <myndzi> it's a zero-width assertion, which means it doesn't "eat" the characters it matches
00:18:32 <Arc_Koen> hmmm
00:18:33 <fizzie> Arc_Koen: It most definitely is not.
00:18:36 <myndzi> so for example
00:18:39 <Arc_Koen> ok
00:18:44 <Arc_Koen> I *think* I understand
00:18:54 <fizzie> Arc_Koen: (^xxx) means "^ followed by xxx", FWIW.
00:19:14 <fizzie> ^ only has special meanings inside character classes.
00:19:15 <Arc_Koen> what? I though (^xxx) meant "something not xxx"
00:19:16 <myndzi> (?!xxx)[xy]{3} would match xxy xyx yxx yyx xyy but not xxx
00:19:24 <Arc_Koen> ohhhh () and [] are not the same
00:19:25 <myndzi> ^ means not inside a character class
00:19:33 <myndzi> outside that it means beginning of line
00:19:43 <fizzie> Oh, yes.
00:19:44 <Arc_Koen> right
00:20:25 <Arc_Koen> myndzi: what is {3}?
00:20:35 <myndzi> match exactly 3 times
00:20:36 <Arc_Koen> "a repetition of the third character"?
00:20:37 <Arc_Koen> oh
00:20:43 <Arc_Koen> ok
00:20:51 <myndzi> so [xy]{3} means "any of: x, y; three times in a row"
00:20:57 <Arc_Koen> yeah ok
00:21:01 <myndzi> and the (?!xxx) makes it fail on xxx
00:21:20 <Arc_Koen> yup
00:21:25 <myndzi> it's not really very useful to use a negative lookahead on static text ;)
00:21:28 <Arc_Koen> is that a special meaning of ?!
00:21:28 <fizzie> Anyhow, what's kind of also important about (?!xxx) is that it doesn't actually match anything, so it doesn't "move" the "current position".
00:21:41 <Arc_Koen> yup I finally got that
00:21:48 <myndzi> yeah, i was trying to come up with an example to demonstrate that but i realized it was hard
00:21:48 <myndzi> lol
00:22:06 <myndzi> but in my example, the (!?xxx) is examining the same characters as the [xy]{3}
00:22:09 <fizzie> It's a special meaning of (?! -- the parentheses are mandatory.
00:22:28 <myndzi> in fact (?stuff) is a general special context for ()
00:22:33 <fizzie> In general, (?xxx) is used for all kinds of extensions.
00:22:42 <myndzi> (?:text) is non-capturing, (?<=text) is positive lookbehind, etc.
00:23:00 <myndzi> haha now i'm just redundant
00:23:02 <myndzi> :)
00:23:53 <Arc_Koen> so (.)(?!.+\1)[^B]+.* is "anything (call it X), then don't be followed by several anythings followed by X, then (anything but B, one or more times), then (anything, zero or more times)"
00:24:17 <myndzi> there are some caveats to using zero width assertions
00:24:22 <fizzie> Yes, though the "or more" for B is redundant again.
00:24:25 <Arc_Koen> what's zero-width?
00:24:26 <myndzi> backwards assertions must be a static width
00:24:30 <myndzi> (?!foo)
00:24:35 <coppro> Arc_Koen: consume no input
00:24:39 <myndzi> "zero width" because it doesn't consume characters
00:24:41 <Arc_Koen> oh ok
00:24:46 <Arc_Koen> then what's lookahead?
00:24:51 <myndzi> it's also zero width
00:24:54 <myndzi> zero width is a characteristic
00:24:55 <Arc_Koen> just a distinction from lookbehind?
00:24:58 <myndzi> yeah
00:25:04 <myndzi> lookahead matches on following characters
00:25:08 <myndzi> lookbehind matches on previous characters
00:25:18 <Arc_Koen> ok, I was confused because I thought lookahead meant no consumption
00:25:20 <myndzi> anyway, things like .+ are generally not a good idea in lookahead/lookbehind
00:25:25 <myndzi> ah
00:25:30 <myndzi> lookahead "doesn't consume"
00:25:34 <myndzi> lookbehind "doesn't consume"
00:25:38 <myndzi> "zero width" means "doesn't consume"
00:25:41 <myndzi> if that helps :)
00:25:44 <Arc_Koen> yeah ok :)
00:25:59 <fizzie> The "doesn't have a width" is perhaps more confusing for positive lookahead, where aa(?=..c)bb. matches "aabbc".
00:26:07 <Arc_Koen> I thought maybe "lookahead" meant "look into the future but stay into the present" or something
00:26:16 <Arc_Koen> instead of actually going to the future
00:26:24 <myndzi> it doesn't "go" anywhere
00:26:24 <fizzie> It's kind of natural for the negative case, which doesn't after all match anything.
00:26:32 <myndzi> it basically does mean "look ahead but stay here"
00:26:50 <myndzi> the way it "goes" into the future is by consuming input
00:26:51 <Arc_Koen> wait, I thought "but stay here" was the meaning of zero-width
00:27:05 <Arc_Koen> ok yeah we may be saying the same things with different words
00:27:05 <myndzi> let me try it another way
00:27:07 <myndzi> zero-width is a category
00:27:13 <myndzi> lookahead and lookbehind are members of that category
00:27:16 <myndzi> neither of them consume input
00:27:24 <Bike> wow we'r estill on regexcchat
00:27:26 <myndzi> not consuming input is a characteristic of 'zero-width assertions'
00:27:39 <myndzi> lookahead/lookbehind inherit that characteristic but are more specific
00:27:42 <Arc_Koen> yes, but I mean we could have "one-width lookahead" for instance
00:27:50 <myndzi> no
00:28:00 <Arc_Koen> then saying "zero-width lookahead" is redundant
00:28:01 <myndzi> zero-width refers to the expression not consuming characters
00:28:06 <myndzi> so it's not saying "look zero ahead"
00:28:15 <Arc_Koen> yes ok
00:28:21 <myndzi> it's saying "look ahead for something that matches this, but don't do anything other than succeed or fail"
00:28:30 <myndzi> imagine it like the I-cursor
00:28:32 <myndzi> in between letters
00:28:37 <myndzi> that's what zero-width is referring to
00:28:38 <ais523> myndzi: I was trying to invent my own regex-like esolang
00:28:47 <ais523> it had negative-width assertions, that actually added characters to the input
00:28:51 <ais523> among other things
00:28:52 <myndzi> lmfao
00:28:56 -!- Bike has quit (Quit: leaving).
00:28:58 <myndzi> sounds like fun
00:29:12 <myndzi> oh!
00:29:16 <myndzi> i was watching some show the other day
00:29:20 <myndzi> and it actually referenced malbolge
00:29:23 <myndzi> i was fuckin' impressed
00:29:40 <myndzi> of course, then they ruined it by doing the typical tv/movie nonsense
00:29:40 <ais523> I think that was mentioned in-channel at the time
00:30:05 <myndzi> i guess i could have expected that haha
00:30:08 <myndzi> i just don't remember where i saw it
00:30:34 <Arc_Koen> so in proper english (.)(?!.+\1)[^B]+.* is "none of the last three characters match the first character and the second character is not B
00:30:39 -!- Bike has joined.
00:30:40 -!- Bike_ has joined.
00:30:43 -!- Bike_ has quit (Client Quit).
00:30:55 <fizzie> Arc_Koen: The second character can match the first.
00:30:56 -!- Bike has quit (Client Quit).
00:31:00 <myndzi> er, not really
00:31:04 <myndzi> you ended it with .*
00:31:06 <Arc_Koen> hmm
00:31:10 <myndzi> so you can't say anything about the "last characters"
00:31:25 <myndzi> i know you're trying to come up with an example of how to use (?!text)
00:31:26 <Arc_Koen> yeah but the (?! ) thingy dealt with that already
00:31:31 <fizzie> myndzi: These are all four-character strings.
00:31:35 <myndzi> but most of the time it's better to construct it in another way
00:31:35 <Arc_Koen> no it's the example from the puzzle
00:31:38 <myndzi> ah, i didn't see the beginning
00:31:51 -!- Bike has joined.
00:31:54 <myndzi> for what you said
00:31:56 <myndzi> i would probably write
00:31:57 <Arc_Koen> so i already know it's four characters and only A, B, C and D
00:32:11 <myndzi> (.)(?!B)[^\1]{3}
00:32:12 <Arc_Koen> and the restriction for that one is (.)(?!.+\1)[^B]+.*
00:32:43 -!- Bike has quit (Client Quit).
00:32:57 <myndzi> that will: capture the first character assigning it to \1, test that the second character is not B, then match three more characters that are not \1
00:33:07 <Arc_Koen> so unless I really don't understand (?!xxx), I read the (?!.+\1) part as meaning "the last two characters cannot match the first one"
00:33:25 <fizzie> Arc_Koen: Anyway, in "XXYZ" you match X with the (.), then in the assertion you have essentially .+X against XYZ, and since the .+ always consumes the first and only X, that doesn't match, and the assertion doesn't fire.
00:33:27 <Arc_Koen> yeah ok
00:33:29 <myndzi> yeah, i have no idea why you put .+ in there
00:33:38 <myndzi> but it's usually a sign that you shouldn't be using lookahead
00:34:03 <Arc_Koen> well he's definitely trying to be confusing
00:34:25 <oerjan> <myndzi> i just don't remember where i saw it <-- wikipedia's Malbolge article mentions it. (i helped with the edits.)
00:35:08 <myndzi> sounds too obvious
00:35:08 <myndzi> :P
00:35:12 <myndzi> what's this regex puzzle?
00:35:22 <Arc_Koen> https://dl.dropbox.com/u/15495351/regex.html
00:35:23 <myndzi> i remember making a series of "encryption" challenges once
00:35:26 -!- Bike has joined.
00:35:32 <myndzi> i imagine you guys would own them fairly quickly
00:35:41 <myndzi> but the mirc scripters in the channel had a hard time with stuff i thought would be cake
00:35:42 <myndzi> :\
00:35:51 <fizzie> myndzi: How would you write it without .+ in the lookahead?
00:35:55 <myndzi> you input text and it outputs encoded text, and you have to describe what to do
00:36:22 <myndzi> fizzie: i didn't know what he was trying to match, i was only looking at what he wrote and what he said
00:36:42 <myndzi> "none of the last three characters match the first character" doesn't need a lookahead
00:36:51 <Arc_Koen> [^AC] eats two characters right?
00:36:54 <myndzi> no
00:36:59 <myndzi> [] is always one character
00:37:02 <myndzi> or however many you modify it to be
00:37:03 <Arc_Koen> oh right
00:37:10 <myndzi> WHICH characters are acceptable are specified inside
00:37:18 <Arc_Koen> so [^AC] is the same as (B|D)
00:37:29 <myndzi> in the case of only ABCD in the input, yeah
00:37:31 <Arc_Koen> or [BD], that is
00:38:33 <myndzi> btw anyone interested in the encryption things just for fun?
00:38:41 <myndzi> pretty sure i still have em
00:39:48 <ais523> Arc_Koen: I take it all those regexes are anchored?
00:39:56 <Arc_Koen> hmm
00:40:00 <Arc_Koen> I guess so
00:40:04 <myndzi> haha
00:40:07 <myndzi> i assumed it was the case
00:40:10 <myndzi> but that's a good point
00:40:13 <Arc_Koen> not sure what anchored means but that sounds right
00:40:24 <ais523> Arc_Koen: implied ^ at the start and $ at the end
00:40:31 <Arc_Koen> does it mean there's an implicit "beginning of line" at the beginning, and implicit "end of line" at the end
00:40:33 <Arc_Koen> yes ok
00:40:44 <Arc_Koen> well I most certainly assumed so
00:41:07 <myndzi> ah, i wasn't assuming the $
00:41:11 <myndzi> good to know
00:41:38 <ais523> actually that makes it impossible
00:41:45 <ais523> or, no
00:41:46 <ais523> misread 1 down
00:48:24 <myndzi> i see. so that regex, Arc_Koen, i believe means: "anything, followed by 1 or more not-Bs followed by anything"
00:48:31 <myndzi> where whatever the first character is cannot be used in the rest
00:48:44 <Arc_Koen> 1) third and fourth both different from first, and second is not B
00:49:07 <myndzi> er, yeah, because of .+
00:49:25 <myndzi> but there can be 1 or more not-bs too
00:49:38 <Arc_Koen> yup, but "one or more" is the same as "one" here
00:49:46 <Arc_Koen> because it's followed by anything anyway
00:49:51 <myndzi> not necessarily
00:50:00 <myndzi> oh, i suppose you can look at it that way
00:50:10 <myndzi> good point
00:50:21 <myndzi> that's definitely the confusing one, so the puzzle probably hinges on it :P
00:53:40 <Arc_Koen> ok so I've already found 11, 13, 54 and 74
00:54:11 <Arc_Koen> uh
00:54:22 * Arc_Koen is stuck in a dead-end
00:54:27 <Arc_Koen> apparently I did something wrong
00:54:42 <Arc_Koen> 5) looks like this so far: 5 ( CD) (ABCD) (AB D) ( C )
00:54:53 <Arc_Koen> and restriction is "5) in alphabetical order"
00:55:39 <Arc_Koen> oh the first cell from that row can be an A
00:56:02 <Sgeo> asdfjaskdfsakldf I thought I had a build for a good PC at around $1000, but I forgot the PSU
00:56:04 <Arc_Koen> and thus it must be
00:57:25 <myndzi> i'm not sure that $ is implied
00:57:39 <myndzi> i seem to have hit an impossibility by that rule
00:57:51 <ais523> myndzi: well if it isn't, clues like A*B*C*D* are pointless
00:57:53 <Arc_Koen> nooodl: are your regexes anchored?
00:57:58 <ais523> because a zero-length string matches that
00:58:19 <myndzi> ah, i think i see my mistake
00:58:31 <elliott> Arc_Koen: they are
00:59:45 <Lumpio-> oh, more regex puzzles?
01:00:34 <Lumpio-> I liked the hexagonal one that was around teh internets a while ago
01:03:49 <Arc_Koen> errr
01:03:54 <Arc_Koen> reached an impossibility :(
01:04:04 <Arc_Koen> down 3) first and second are not C; fourth is equal to first
01:04:35 <Arc_Koen> and so far that column looks like (D) (AB) (BC) (AB)
01:05:03 <myndzi> think i have it ;)
01:05:05 <myndzi> is there an answer key?
01:05:49 <Arc_Koen> oh hmm
01:05:50 <Arc_Koen> [^C]*(.)\1
01:06:00 <Arc_Koen> does the \1 matchs the thing that's matched by (.) ?
01:06:05 <myndzi> yes
01:06:08 <Arc_Koen> I thought it matched the thing matched by [^C]
01:06:16 <Arc_Koen> gaaaaaaaah have to do it all over again
01:06:21 <Bike> no, it's the last group, and groups are spelled with ().
01:06:27 <Arc_Koen> okay
01:06:34 <Arc_Koen> starting all over
01:06:40 <myndzi> damn nope, missed one thing
01:08:13 <myndzi> ah i see
01:08:25 <myndzi> i goofed aligning a diagonal
01:11:29 <Arc_Koen> well I've got everything except 12, 52 and 53
01:12:59 <Arc_Koen> nooodl: is the solution unique?
01:13:41 <Arc_Koen> I think I've got a total of six possible solutions
01:14:06 <elliott> iirc yes
01:14:34 <Arc_Koen> elliott: can I show you my english interpretations of the regexes and you would be so kind as to tell me if one is wrong?
01:14:58 <elliott> by "iirc" I mean I am just parroting what I remember nooodl saying about it, I don't even know the regexps involved :)
01:16:45 <Arc_Koen> (spoilers) http://pastebin.com/pyaiJuM8
01:17:05 <myndzi> i'm coming to agreement, i think there may be multiples
01:17:14 <myndzi> ha, i should make a script to test solutions
01:17:55 <Arc_Koen> myndzi: do you agree that cells 12, 52 and 53 are the ones that have multiple answers?
01:18:23 <myndzi> what do you mean 53?
01:18:30 <myndzi> are we looking at the same puzzle?
01:18:35 <Arc_Koen> second row, third column
01:19:13 <Arc_Koen> well yes; rows are numbered 1 5 6 7 and columns 1 2 3 4
01:19:18 <myndzi> i have an answer for 5/3
01:19:21 <Arc_Koen> oh
01:19:29 <Arc_Koen> I say it can be either A or B
01:19:37 <myndzi> doesn't mean it's right
01:19:46 <myndzi> do you even want me to say? :P
01:19:48 <Arc_Koen> with the restriction that 52 can be either A or B, but if 52 is B then 53 is B
01:20:09 <Arc_Koen> (because line 5 is alphabetical)
01:20:49 <Arc_Koen> myndzi: well if you can tell me where I'm wrong without telling me the solution I'd be glad yes
01:21:04 <myndzi> i have no idea where you're wrong lol
01:21:12 <myndzi> i'm not going to follow your work it may pollute my mind :V
01:21:14 -!- carado has quit (Ping timeout: 246 seconds).
01:21:15 <myndzi> i'm writing a script to test
01:21:18 <myndzi> then you can test all you like
01:21:22 <Arc_Koen> what do you have in cell 53?
01:21:34 <myndzi> D
01:22:17 <Arc_Koen> oh
01:22:25 <Arc_Koen> then we have very different grids
01:23:40 * Arc_Koen myndzi: so here is why I stroke D out in 53.
01:23:59 <Arc_Koen> diagonal 3) is "CD or DC"
01:24:20 <Arc_Koen> vertical 3) is "first and second are not C; fourth is equal to third"
01:24:32 <Arc_Koen> therefore diagonal 3) is DC
01:24:39 <Arc_Koen> so 54 is C
01:25:00 <Arc_Koen> and horizontal 5) is "in alphabetical order" so if fourth is C, then third cannot be D
01:25:05 <Sgeo> ^list
01:25:05 <fungot> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
01:27:51 <Arc_Koen> since there are four characters, [^C]*(.)\1 is equivalent to [^C]{2}(.)\1 right?
01:28:05 <oerjan> yes
01:29:00 <Arc_Koen> which means "first and second are not C, and third = fourth"
01:30:23 <oerjan> btw i got a unique solution once i stopped making a stupid error.
01:31:20 <myndzi> they're always stupid errors ;)
01:31:46 <oerjan> well the stupid was i made it again at least twice on retrying
01:32:02 <myndzi> !repuzzle ABCD ABCD ABCD ABCD
01:32:02 <myndzi> Fail 6a: /^.*(BB|BC|CA)$/ - ABCD
01:32:21 <myndzi> i hope that's right, hehe
01:32:25 <myndzi> now to go back to trying to solve
01:34:14 <myndzi> lmao
01:34:21 <myndzi> so yeah. i was interpreting diagonal 3 as diagonal 6
01:36:06 <Arc_Koen> I really don't see any way to cross out any of the six solutions I've got
01:36:26 <Arc_Koen> which probably means I have a mistake somewhere and all six are wrong
01:37:21 <oerjan> well they cannot be wrong unless there is a regex they violate, hth
01:37:29 <Arc_Koen> true
01:37:33 <Arc_Koen> let's check
01:37:33 <ais523> try running one through !repuzzle?
01:37:37 <ais523> in PM if you don't want to spoil it?
01:37:43 <myndzi> join #repuzzle
01:37:46 <myndzi> i've got it minimized
01:37:48 <myndzi> it's a channel trigger
01:37:48 <ais523> oh, not in this channel :)
01:37:55 <myndzi> works in here too :P
01:38:03 <myndzi> it's spammy to trigger my own pm triggers
01:38:04 <myndzi> hehe
01:38:06 <myndzi> thus channel
01:38:19 <myndzi> note: the script may not be correct, so lemme know if it reports something wrong
01:38:32 <oerjan> !show repuzzle
01:38:34 <EgoBot> That is not a user interpreter!
01:38:35 <myndzi> also case sensitive, one sec
01:38:47 <oerjan> oh it's not EgoBot
01:39:17 <myndzi> nah i just scripted it up real quick
01:39:37 <myndzi> http://pastebin.com/YgTUy34B
01:41:37 <myndzi> ah, found my mistake too
01:41:48 <Arc_Koen> oh right
01:41:50 <Arc_Koen> 2) first is B or D; if there's a C then all that follows is C as well
01:41:53 <Arc_Koen> that's the error
01:41:58 <myndzi> treating [^C]* as (.\1*)?
01:42:01 <Arc_Koen> 2. [^AC]*C*
01:42:22 <Arc_Koen> actually is "cut the line in two; first part is Bs and Ds and second part is Cs"
01:42:41 <Arc_Koen> I must have read it as [^AC].*C*
01:46:26 <Arc_Koen> Success!
01:46:42 <Arc_Koen> thank you everyone for your help :)
01:47:29 <Arc_Koen> so now I know regexes? if someone has a similar puzzle that'll teach me chinese in a few minutes... :p
01:48:03 <Bike> now read the email regex
01:48:21 <Arc_Koen> what is that?
01:48:25 <myndzi> lol
01:48:44 <ais523> Bike: it doesn't handle nested comments
01:48:50 <ais523> (also IIRC it's automatically generated)
01:48:53 <Bike> Arc_Koen: http://www.ex-parrot.com/pdw/Mail-RFC822-Address.html
01:50:06 <ais523> Bike: (the correct followup to this is "why do email addresses allow nested comments anyway?")
01:50:13 <Arc_Koen> that looks like something I don't wanna try to read
01:50:27 <Jafet> More languages should allow nested comments
01:51:00 <Bike> ais523: I thought about it, but I've learned that learning more about old protocols implies SAN loss.
01:51:33 <Arc_Koen> do you mean if I try to use thunderbird to send an email to oer/*com/*ment*/*/jan/*hello*/@nu.nvg is will work?
01:51:45 <ais523> Arc_Koen: () is used for comments in email
01:51:51 <ais523> not /* */
01:51:54 <Arc_Koen> thanks
01:52:09 <ais523> also you can escape the ( and ) as \( and \) to stop them matching
01:52:24 <oerjan> moreover, my email domain isn't nu.nvg hth
01:52:28 <ais523> I do this in my email on Slashdot, it does great against spambots
01:52:30 <Arc_Koen> assuming my email address contains a ( or ) character?
01:52:45 <oerjan> (there are several alternative forms, but that isn't one of them)
01:52:47 <ais523> Arc_Koen: or if you want to put ( or ) inside the comment
01:52:53 <Arc_Koen> right
01:52:57 <ais523> many email clients can't handle comments, even fewer handle nested comments
01:53:03 <ais523> there are clients that follow the spec properly, though
01:53:31 <Arc_Koen> "but they have only 3.5 users, all living in the same building"
01:54:47 <Bike> i assume you mean that the half user has integrated their other half into sendmail
01:55:01 -!- heroux_ has changed nick to heroux.
01:55:20 <kmc> when i first saw this I thought you were talking about some esolang named "email"
01:55:23 <kmc> but oh god
01:56:19 -!- sebbu has quit (Ping timeout: 264 seconds).
01:56:24 <Bike> so on a related note, does anybody know float contagion rules in some real language stupidly well, because now i'm curious
01:56:33 <kmc> what's that
01:56:38 <Jafet> kmc: you are right
01:56:54 <Bike> like what's 4 :: Int + 7 :: Floating do i guess
01:57:01 -!- azaq23 has joined.
01:57:05 <Bike> sometimes you convert one into the other, or it's specified that the result is of so and so type
01:57:14 <kmc> ugh
01:57:32 <kmc> okay I know the JavaScript rule well: "all numbers are doubles" hth
01:57:35 <elliott> Bike: Floating isn't a type..................................
01:57:37 <elliott> if this is about haskell
01:57:41 <Bike> it's not
01:57:43 <elliott> and haskell has no implicit conversions
01:57:45 <ais523> Bike: OCaml's rule is really straightforward
01:57:50 <oerjan> i know the haskell rule well: it doesn't convert anything
01:57:52 <ais523> it has an integer + and a floating-point +.
01:58:00 <ais523> giving an integer to +. or a float to + causes a compile-time error
01:58:01 <Bike> so you can't add ints to floats
01:58:02 <Bike> right.
01:58:10 <ais523> not without converting by hand, in OCaml or Haskell
01:58:10 <Jafet> But, but these aren't REAL LANGUAGES
01:58:38 <Jafet> It's not a real language unless you can gouge out your left kidney with it
01:58:48 <ais523> OK; in asm, it has separate integer add and floating-point add
01:58:50 <oerjan> well a REAL LANGUAGE would surely use REAL NUMBERS
01:58:53 <Arc_Koen> Bike: I assume most languages would have some rule along the lines of "types are ordered something like float > int > whatever, and the type of an expression is the maximum of the types of its subexpressions"
01:58:55 <Bike> forget i asked
01:58:59 <kmc> i can never quite remember C's rules... cases like uint8_t x = ...; uint32_t y = (x * 20) + 15;
01:59:03 <ais523> and if you use the wrong one, it'll either complain that you're using the wrong registers, or misinterpret the bit pattern
01:59:05 <Bike> (that's kind of a crappy order, though, i will say)
01:59:06 <ais523> of the value it finds there
01:59:08 <oerjan> not those fishy computable things
01:59:11 <Jafet> oerjan: only imaginary languages use real numbers hth
01:59:12 <kmc> is that multiplication / addition done on uint8 or uint32
01:59:22 <ais523> kmc: either uint8 or plain int, I forget which
02:00:16 -!- sebbu has joined.
02:00:29 <kmc> https://www.securecoding.cert.org/confluence/display/seccode/INT02-C.+Understand+integer+conversion+rules
02:00:29 <Jafet> uint8_t is secretly a typedef for unsigned char so the value of x becomes an int (not unsigned int!!) when used in any kind of arithmetic
02:00:37 <Arc_Koen> Bike: so for instance (int 3) * (int 4) + (float 5) would evaluate to (int 12) + (float 5) then to (float 17)
02:00:38 <kmc> yeah i see
02:00:45 -!- sebbu has quit (Changing host).
02:00:45 -!- sebbu has joined.
02:00:49 <Jafet> Also x + x :: int
02:00:50 <kmc> even adding two chars is done on ints, then truncated
02:00:57 <kmc> semantically
02:01:03 <kmc> interesting
02:01:28 -!- WeThePeople has quit (Ping timeout: 252 seconds).
02:01:29 -!- oerjan has quit (Quit: leaving).
02:01:29 <Jafet> I wonder if you can make security holes with this
02:01:36 <elliott> i cannot fathom why uint8_t is not separate
02:01:50 <Jafet> Because WE ALREADY HAVE A TYPE FOR THAT
02:01:54 <kmc> And Moses said unto them that day, "The rank of long long int shall be greater than the rank of long int, which shall be greater than the rank of int, which shall be greater than the rank of short int, which shall be greater than the rank of signed char."
02:02:06 <kmc> Jafet: always
02:02:59 <ais523> kmc: what happens if int and char are the same width?
02:03:12 <kmc> beats me
02:03:19 <kmc> there are other rank rules though
02:03:25 <ais523> although that wouldn't happen with uint8_t, it could happen with unsigned plain char
02:04:22 <Jafet> No one is going to make that platform, because C code will break on it
02:04:58 <ais523> Jafet: such platforms exist already
02:05:04 <ais523> digital signal processors, mostly
02:05:16 <ais523> they're heavily specialized for 32-bit processing and don't have anything smaller
02:05:57 <pikhq> They also generally have very, very dedicated environments and it's not worth thinking about.
02:05:58 <kmc> so what's sizeof(char) on such platform
02:06:03 <kmc> doesn't that have to be 1?
02:06:07 <pikhq> kmc: Necessarily 1.
02:06:19 <Jafet> ais523: also crays
02:06:23 <kmc> cray cray
02:07:10 <kmc> okay so "promotion" and "conversion" are different
02:07:12 * kmc learning
02:08:13 <kmc> Jafet: you can get great security holes from the fact that 'char' can be signed
02:08:52 -!- ais523_ has joined.
02:08:57 <Bike> signed char is like my main reason for not understanding what the fuck C is
02:09:13 <myndzi> yay
02:09:19 <myndzi> i win :P
02:09:26 <Bike> hello
02:09:50 <Jafet> kmc: yeah but everyone knows that one already
02:10:01 <Jafet> (that was a figure of speech obviously)
02:10:09 <kmc> int count[256]; void f(char *str) { while (*str) count[*(str++)]++; }
02:10:16 <kmc> Jafet: well i didn't know it until i did
02:10:39 <kmc> writing an exploit for that was pretty fun
02:10:50 -!- ais523 has quit (Ping timeout: 245 seconds).
02:11:14 -!- ais523_ has changed nick to ais523.
02:11:29 <Jafet> One thing I didn't know
02:11:31 <ais523> kmc: gcc complains about any use of plain char to index arrays
02:11:34 <ais523> probably because of that
02:11:37 <Jafet> is that the PLT contains executable code
02:11:45 <Jafet> and that this is By Design
02:11:47 <kmc> ais523: good
02:12:03 <kmc> not just executable code but self-modifying code :<
02:12:14 <Bike> best kind of code
02:12:19 <ais523> yeah, executable code is kind-of common
02:12:23 <ais523> and more useful than nonexecutable code
02:12:39 <kmc> for better security one should link with ld -z relro -z now
02:12:42 <Bike> reminds me i just read that apparently PDP had some really weird idioms due to the XEC instruction
02:12:54 <Bike> which let you execute a register as an instruction, i guess?
02:12:56 <kmc> which will cause the GOT and PLT to be read-only after startup
02:13:02 <kmc> Bike: hot
02:13:29 <Bike> so you'd have routines that dispatched behavior on the value of a register, since you'd set that register to be some specific instruction
02:14:33 -!- madbr has joined.
02:14:40 <madbr> wow
02:14:46 <madbr> LLVM's assembler has bugs
02:14:59 <madbr> (when assembling for ARM)
02:15:37 <kmc> software has bugs
02:15:42 <kmc> always and everywhere
02:15:55 <kmc> it's a bug's life
02:16:03 <Bike> so presumably it's a notable bug if it's being mentioned.
02:16:30 <kmc> yeah i'm just being a smartass
02:16:47 <kmc> the great thing about ARM instruction sets is that there are so many to choose from
02:17:11 <Bike> and i'm just being bitter about having it assumed that i meant "real language" as some kind of haskell-related insult instead of just disambiguation from an email esolang. bitter bitter bitter
02:17:16 <madbr> yeah that seems to be the current design trend in cpu design
02:17:22 <Jafet> You can even choose at runtime
02:18:20 <Fiora> oh cool we're talking about instruction sets so I can post this thing
02:18:21 <Fiora> http://i.imgur.com/fjMhj0u.png
02:18:23 <elliott> Bike: i interpreted it like that bc yr code looked like hs
02:18:26 * Fiora is reading the xeon phi manual for fun
02:18:29 <madbr> base risc set then fpu then vector then vector fpu then stange corner cases like popcnt then another vector set then...
02:18:45 <Bike> elliott: yes that's because you corrupted me THANKS
02:18:56 <elliott> hows lyah goin
02:19:21 <Bike> it's talking about implementing RPN with bla bla functions bla bla so i just started reading the haskell report.
02:19:28 <elliott> ok
02:19:47 <elliott> thats not going to pay off wrt whsat later chapters cover at all tho
02:19:56 <Fiora> oh wow this thing is crazy. every single memory operation has a "write-mask"
02:19:58 <Bike> whsat
02:20:02 <kmc> Bike: we can be bitter together
02:20:06 <kmc> maybe we can get elliott in on it too
02:20:07 <monqy> whsat
02:20:07 <Fiora> where it can say which of the 16 elements of the destination register are modified
02:20:20 <Fiora> er, not memory operation, every single register operation
02:20:23 <madbr> fiora : wow, what architecture is this on
02:20:27 <kmc> what's a phi manual
02:20:32 <kmc> or is phi a type of xeon
02:20:35 <Fiora> um, the phi is like, the successor to larrabee
02:20:35 -!- DHeadshot has quit (Read error: Connection reset by peer).
02:20:38 <Fiora> the intel many core architecture
02:20:40 <Fiora> with 512-bit zmm registers
02:20:46 <Bike> oh the next chapter is about applicative functors i.e. something i actually don't know, maybe i should pay attention except ????????
02:20:47 <madbr> ha what
02:20:52 -!- DHeadshot has joined.
02:20:55 <kmc> oh god
02:21:00 <madbr> I thought larrabee died horribly
02:21:06 <Fiora> yeah, they made it into this instead I think
02:21:12 <Fiora> it is like a super float simd machine designed to make scientific computing people fangirl
02:21:28 <Fiora> with like all of the transcendental functions super fast and designed to be easy to autovectorize with and stuff
02:21:29 <madbr> kinda like the cell?
02:21:39 <Fiora> I guess a bit? no DMA thing though
02:21:42 <kmc> can't they just buy GPUs
02:21:53 <madbr> GPUs can't really do feedback
02:22:00 <Fiora> I think the idea is intel realized the larrabee was a really bad gpu but it was pretty good at raw compute so they did that instead?
02:22:11 <madbr> they're not very good for, say, sound calculation
02:22:21 <madbr> fiora: hah just like the cell
02:22:22 <kmc> i see
02:22:22 <pikhq> http://sprunge.us/DGNF C has some weird little-used features.
02:22:29 <Fiora> madbr: wait, the cell had that too?
02:22:45 <Bike> pikhq: uhhhhh trigrams?
02:22:51 <ais523> that's just digraphs and trigraphs
02:22:51 <madbr> nah
02:22:58 <pikhq> ais523: Not entirely.
02:23:01 <Bike> oh graphs
02:23:02 <Gregor> Oh god digraphs lol
02:23:03 <pikhq> Check out iso646.h
02:23:06 <kmc> wait so is this "xeon phi" a core CPU that you would boot, or a peripheral thing, or like a functional unit on a Xeon
02:23:10 <madbr> I was referring to the cell being sony's plan for the ps3 gpu then they had to backtrack
02:23:11 <ais523> oh and iso646.h
02:23:18 <pikhq> C++ is crazier.
02:23:24 <ais523> pikhq: I know iso646.h, it's the only standard header that's provided by gcc not glibc, for instance
02:23:26 <madbr> tbh this thing would be awesome for sound processing too
02:23:35 <pikhq> Apparently the iso646.h defines are *in the syntax* of C++.
02:23:44 <Fiora> madbr: ooooh
02:23:45 <kmc> ok it's a PCIe card that looks like a GPU
02:23:50 <madbr> which is also a whole bunch of roughly vectorizable fpu math
02:23:52 <kmc> except without an elf dragon robot painted on
02:23:58 <Lymia> == Epoch 1 ==
02:23:58 <Lymia> Evaluating population...
02:23:58 <Lymia> java.lang.UnsupportedOperationException: empty.reduceLeft
02:23:58 <Lymia> fail
02:24:04 <madbr> except with feedback loops so that totally rules out GPUs
02:24:17 <Lymia> Why the crap is it starting with an empty population o-o
02:24:37 <Fiora> it also apparentyl has 320GB/s of memory bandwidth O_O
02:24:56 <madbr> designing for throughput is cool
02:25:12 <madbr> it's not like designing for general purpose code
02:25:17 <kmc> i think what we all want to know is, how quickly will it make me rich in bitcoins
02:25:44 <madbr> general purpose code is horrible, horrible... lots of stores/loads to all sorts of random addresses and unpredictable jumps
02:25:57 <madbr> if you design for that you end up with the pentium2
02:26:04 <Bike> what would a core designed for bitcoin mining look like? let's take a moment to think about this
02:26:10 <madbr> and all its descendents
02:26:11 <Fiora> but just, wow. pow() in 4-cycles, with full accuracy
02:26:22 <Fiora> that's insane
02:26:58 <Bike> what kind of code wants that, i'm curious
02:27:00 <madbr> P2's have that crazy ultra complicated out of order engine but can only do 4 operations per cycle :( :( :(
02:27:15 <Bike> maybe it would be nice for a shitload of sigmoids or something
02:27:16 <madbr> (3 on the ones before sandy bridge)
02:27:29 <Fiora> Bike: I'm guessing scientific computing stuff loves transcendental functions almost as much as I love sushi?
02:27:31 <madbr> the PENTIUM did 2 and came out in like 1994
02:27:43 <Bike> Fiora: i need specifics man. specifics
02:28:13 <Bike> i guess it would be kind of cool to read nnet source code that doesn't do some ridiculous integer operation instead of transcendentals
02:28:28 <Fiora> O_O it does a thing with a loop that does progressive approximation of a square root (as an example)
02:28:32 <Fiora> except what it does is
02:28:36 <Bike> what, newton?
02:28:40 <Fiora> on each iteration, it checks to see the accuracy so far
02:28:45 <Fiora> and sets the "write mask" accordingly
02:28:52 <Fiora> "his use of the write mask may also be used as
02:28:52 <Fiora> a mechanism for reducing
02:28:53 <Fiora> total power consumption, as those elements which are masked off are (in general) not computed. I"
02:28:56 <Fiora> *This use
02:29:00 <madbr> kinda wonder why that kind of architecture sucks at being a GPU
02:29:02 <Bike> what, how
02:29:19 <Arc_Koen> wow, the wiki spamthing is kinda scary
02:29:22 <madbr> aren't modern GPUs pretty much large VLIW DSP's now?
02:29:24 <Bike> wait, wait, so you can just mask arbitrary math, and that actually helps?
02:29:30 <kmc> Bike: it would look like some SHA256 fixed function pipelines ;P
02:29:30 <Fiora> I think so? I have no idea @_@
02:29:31 <kmc> and exists
02:29:40 <Arc_Koen> now we have automated defenses against robots
02:29:47 <Arc_Koen> think of the consequences
02:29:56 <Bike> dayum
02:29:59 <Fiora> madbr: the thing I remember reading said that part of the problem was that gpus also have a bunch of fixed function hardware, and intel thought that enough shader power could avoid needing that, but it didn't
02:30:14 <madbr> mhm
02:30:23 <Fiora> that they kind of didn't have much experience making fast gpus which is, well. it makes sense given the speed of the integrated gpu on this laptop <.<
02:30:25 <Arc_Koen> hey if spambots start being very very smart and we start being very very smart against them this could actually be entertaining
02:30:37 <madbr> I haven't done gfx rendering in a while but some standard parts were horrible I think yeah
02:30:43 <madbr> bilinear is horrible
02:30:48 <Bike> kmc: imo it's not a good currency if it doesn't lead tofucking weird computer architectures and things
02:30:55 <Fiora> oh wow. it can swizzle each 128-bit lane arbitrarily on every op
02:30:56 <kmc> Bike: the funny thing about Bitcoin mining is that you need zero memory bandwidth, zero anything except SHA256...
02:31:03 <Bike> HFT led to a new transatlantic line! where's the beef bitcoin
02:31:13 <kmc> like I've heard of people cutting off bits of a video card to fit it in an x1 slot
02:31:15 <Fiora> this is like the ps2 emotion engine, duplicated 4x, on acid
02:31:21 <Bike> kmc: hahaha
02:31:25 <kmc> bitcoin rig: six top end graphics cards, $10 CPU, $10 of RAM
02:31:44 <madbr> who cares about bitcoins, I wanna crunch sound data
02:31:53 <Bike> maybe i should look up neuromorphic architectures again
02:32:05 <Bike> next time i feel like taking words like "neuromorphic" seriously
02:32:05 <kmc> Bike: and yeah, I think there's a bitcoin variant which uses scrypt or bcrypt instead of SHA256 × 2
02:32:18 <madbr> fiora: does it have multiply-accumulate too?
02:32:20 <Fiora> huh. wow, it even supports "unorm" types... is "unorm8" like, an 8-bit fixed point?
02:32:30 <kmc> unicorn8
02:32:32 <Fiora> yeah, it has the same FMA as haswell and bulldozer I think
02:32:42 <Fiora> but it also has a special mode that does multiply+bias which is weird too
02:32:49 <madbr> ha what
02:33:01 <Fiora> it's weird enough to explain that they had to like, lay it out as a series of formulas
02:33:10 <madbr> what's the data latency on the multiply accumulate
02:33:31 <madbr> also what's the clock rate of this thing
02:33:39 <Fiora> 1ghz, I think
02:33:45 <Fiora> and like, 60 cores?
02:34:11 <madbr> like, the data latency on multiply on standard cpus just sucks
02:34:12 <Fiora> it says most vector instructions are 4/1 latency/throughput, so I guess that applies to FMA?
02:34:16 <madbr> it's like 5 cycles
02:34:31 <shachaf> Weren't we supposed to have 256-core computers in 2013?
02:34:33 <kmc> what's 'bias' in this context
02:34:46 <madbr> fiora: wait, so that's 4 cycle latency?
02:34:49 <Fiora> I think so?
02:34:56 <Fiora> I think everything is built around 4 cycle latency
02:35:04 <madbr> I see
02:35:10 <Bike> shachaf: and don't we?
02:35:18 <Fiora> it's in-order too, it seems kinda similar to the atom?
02:35:18 <shachaf> I don't.
02:35:30 <madbr> but recip/rsqrt/exp2/log2 have a latency of 1/2???
02:35:38 <Fiora> "TheL1 cache has an address generation interlockwith at least a 3-clock cycle latency. AGPR register must be produced three or more clocks prior to being used as a base or index register in an address computation."
02:35:52 <Fiora> I don't know @_@ maybe they mean throughput...
02:35:55 <Fiora> that seemed weird to me too
02:36:28 <Fiora> oh wow. it has scatter stores and gather loads
02:36:30 <kmc> it's in-order... they're counting on compilers to do good instruction scheduling for scientific codes?
02:36:38 <Fiora> I think they're assuming everyone will use theirs <.<
02:36:45 <madbr> why doesn't x86 have this stuff
02:36:47 <kmc> well ok
02:37:02 <Bike> probably you don't need fast transcendentals for crysis (do you)
02:37:19 <kmc> bessel functions of the third kind
02:37:25 <Fiora> x86 does have fast reciprocal and square root approximations, think?
02:37:26 <Fiora> *I think
02:37:31 <madbr> bike: that's because transcendentals have sucked ass for so long that people have gotten used to live without them
02:37:33 <Fiora> nothing fast for log or exp though...
02:37:42 <Bike> madbr: ok, fair
02:38:18 <Fiora> wow, these. these floating point instructions
02:38:26 <Bike> madbr: that doesn't necessarily matter though - they might not include it on the x86 because most general clients don't need it. if they don't need it because most programs aren't written like that then that doesn't matter to them
02:38:27 <madbr> also I'm sure they can use scatter stores/loads in crysis
02:38:28 <Fiora> vclamppzpd, vgetmantpd o_O
02:38:30 <Bike> you know this i guess
02:38:34 * shachaf tries to figure out what's being discussed.
02:38:46 <Fiora> I think scatter/gather stuff is super expensive to implement in hardware?
02:38:48 <Fiora> I'm not sure..
02:38:49 <Bike> Fiora: pff names
02:39:03 <madbr> bike : "most general clients" run store/load/branch code that will never get faster no matter how you design the CPU
02:39:09 <Bike> madbr: yes.
02:39:10 <Fiora> AVX2 actually has instructions for it but I don't know how fast it'll be...
02:39:23 <Bike> madbr: so, why bother putting this in x86 if they're just going to do that.
02:39:26 <madbr> only large throughput processsing like GFX or sound matters
02:39:35 <madbr> everything else is data-IO bound anyways
02:39:57 <Lymia> Population(2,ArrayBuffer(),179)
02:40:03 <Lymia> every species just died out... great more bugs
02:40:19 * Fiora should probably go look at those things again. they looked cool.
02:40:42 <madbr> bike: it's like optimizing for the 95% of the code that doesn't loop
02:40:43 * Bike should go back to reading OoS instead of this because he doesn't know shit.
02:40:51 <madbr> and that's never going to make a difference
02:40:52 <Bike> madbr: if it's economically sound...
02:41:38 <madbr> no it's just that most other architectures have died by now
02:41:48 <madbr> and they only have to be better than ARM
02:42:46 <Fiora> wow, the fault behavior descriptions on the gather instruction
02:42:52 <madbr> also because C++ compilers can't vectorize your code if it aliases
02:43:15 <madbr> and thanks to C++'s "do everything with pointers" philosophy, your pointers alias way too easily
02:44:09 <Fiora> oh gosh the fault behavior is crazy. it can actuall stop execution mid load because one of the gathers is in a page that isn't loaded or something
02:44:59 <madbr> how does it save that kind of state?
02:45:23 <madbr> wait, I guess it can replay the first loads
02:45:24 <Fiora> um. I don't think it does
02:45:28 <madbr> never mind
02:45:29 <Fiora> nonono, it can't, that's not legal
02:45:33 <Fiora> it says that it can't do that
02:45:37 <Fiora> because it can't re-trigger faults
02:45:50 <Fiora> I think I'd actually have to set up a loop to use one of these... oh gosh <_>
02:45:51 <madbr> how do you recover from a page fault then
02:46:09 <madbr> like, a page fault due to disk access
02:46:27 <Fiora> wildly guessing:
02:46:28 <Fiora> pcmpeqb ymm3, ymm3
02:46:28 <Fiora> .load
02:46:28 <Fiora> vgatherdd ymm1, [rax+ymm2*2], ymm3
02:46:28 <Fiora> ptest ymm3, ymm3
02:46:30 <Fiora> jnz .load
02:46:37 <kmc> maybe the OS is expected to parse the instruction and finish it for you
02:46:51 <madbr> kmc: yeah I think that's actually possible
02:47:08 <Fiora> that would actually be incredibly cool
02:47:30 <Fiora> it says it sets the "RF" flag in "EFLAGS" if it resumes from a fault...?
02:47:38 <Fiora> but how do I even test that, what even is that
02:47:53 <madbr> can't you push the flags register?
02:48:49 <Fiora> that seems crazy @_@
02:49:23 <Fiora> "16 RF Resume Flag: Used by the debug registers DR6 and DR7. It enables you to turn off certain exceptions while debugging code. "
02:49:30 <Fiora> wow I am in over my head
02:50:05 <kmc> it's absolutely amazing that anyone manages to implement modern x86 remotely correctly
02:50:35 <Bike> intel and amd seem like pretty amazing companies.
02:50:52 <kmc> AMD has made some questionable business decisions
02:51:08 <Bike> well intel did that whole compiler thing.
02:51:11 <Bike> what did amd do?
02:51:11 <kmc> also Intel has failed at nearly every CPU architecture they've tried since x86
02:51:25 <madbr> except 960 but yeah
02:51:39 <madbr> and I guess itanium could've bombed more
02:51:41 <kmc> AMD spun off their fab business and fucked it up businesswise somehow
02:51:43 <kmc> i forgot
02:52:01 <Fiora> on the other hand they somehow managed to be the manufacturer for all three of the gen 8 consoles
02:52:16 <Bike> madbr: architecture bombs by turning out to be a literal bomb, which explodes killing clients
02:52:24 <kmc> HCF: Halt and Catch Fire
02:52:43 <madbr> like, the first generation IA64 sucked afaik
02:52:53 <kmc> anyway it's not just AMD and Intel that implement x86, but also VMWare, Xen, QEmu, Linux (KVM), ...
02:53:01 <Fiora> gah. the instruction reference doesn't say anything about when the gather is fast
02:53:06 <kmc> and yeah they do get a lot of subtle details wrong
02:53:08 <Fiora> like I'm guessing that maybe crossing page boundaries is bad? I have no idea @_@
02:53:12 <kmc> but it's amazing that it works at all
02:53:27 <madbr> fiora : really wondering about what cache architecture it has
02:53:46 <madbr> fiora : normally these days L1 cache only has 2 read ports
02:53:52 <Fiora> Yeah, that was what I was thinking too
02:53:58 <kmc> the "life on the edge of the double fault" game of life demo supposedly crashes most emulators
02:54:10 <kmc> and the author started researching those topics in search of a Xen breakout exploit
02:54:10 <madbr> so if it all falls on 2 cache lines I guess it can work
02:54:15 <Fiora> part of me feels like it'll probably just not be any faster but let you do simd address calculations? @_@
02:54:19 <Fiora> but noooo idea
02:54:27 <madbr> though if this thing only runs at 1ghz maybe they could add more ports
02:54:32 <Fiora> this is on the haswell though :<
02:54:43 <Fiora> AVX2 has scatter/gather stuff, not just the phi
02:54:59 <Fiora> the phi is a weird cool thing but the haswell I actually have to write code for <.<
02:55:16 <madbr> fiora: well, not having to break out all you data from your XMM registers is already pretty bonus
02:55:19 <shachaf> I want to write code for Haswell. :-(
02:55:28 <madbr> like, when writing code for the ARM
02:55:29 <shachaf> Well, I did at one point. AVX2 would've really helped me.
02:55:40 <madbr> at one point one of my algos needed a LUT
02:55:44 * Fiora giggles as she sshs into her haswell box
02:55:59 <madbr> (91 x 16bit for ADPCM volume table)
02:55:59 <shachaf> ?!
02:55:59 <lambdabot> Maybe you meant: . ? @ v
02:56:05 <shachaf> How does that work?
02:56:09 <madbr> and there was only one way to do that LUT fast
02:56:22 <madbr> do all the algo up to the address generation on standard ARM
02:56:37 <madbr> then the rest of the algo in NEON
02:56:52 <madbr> and try to schedule the rest of the code so that both units stay busy
02:56:56 <Fiora> ?
02:57:01 <Fiora> (um, to shachaf )
02:57:16 <madbr> so essentially all the LUT index generation has zero vectorizing
02:57:20 <shachaf> Fiora: How do you have a Haswell box to SSH into?
02:57:41 <kmc> "Let's just say I know a guy, who knows a guy... who knows another guy."
02:57:49 <Fiora> um, I have one for work
02:58:07 <Fiora> so I kind of have to be mum about things that I don't want to be mum about
02:58:28 <shachaf> What is work?
02:58:52 <Bike> you still have the coolest job.
02:58:55 <Fiora> I do noot
02:59:01 <Fiora> there are way cooler things
02:59:08 <Fiora> like people who program for video game consoles
02:59:10 <shachaf> What is it?
02:59:29 <Bike> Beats me, but she gets a Haswell, so it must be cool.
02:59:30 <Fiora> like that guy in that channel who was like "lol I wrote PS2 code and PS3 code"
03:00:11 <shachaf> Oh, you have a secret job?
03:00:29 <Bike> evidently she doesn't like talking about what she actually does
03:00:45 <Bike> my working theory is she works on russian sound weapons
03:01:06 <Lymia> v.v;
03:01:13 <shachaf> Good to hear that Russian weapons are sound, I guess.
03:01:19 <Lymia> The first version of the evolver that runs is clearly fatally flawed.
03:01:24 <shachaf> Some Russian weapons, anyway.
03:01:28 <Fiora> giving specifics would be about enough to find my identity pretty quickly <.<
03:01:31 <Lymia> The "best" in generation 10 has exactly 0 live opcodes.
03:01:41 <shachaf> Oh, you're one of those pseudonymous people, too?
03:01:55 <Bike> how could we find your identity if you work for a russian intelligence agency? think this through, fiora
03:02:24 <Fiora> um, I guess?
03:02:51 <shachaf> Do you work at Intel or a non-Intell Haswellian place?
03:03:15 <kmc> i read today that you can uniquely identify someone from their gait as measured by the 3-axis accelerometer in their smartphone
03:03:37 <Bike> nice!
03:03:42 <shachaf> Horses have smartphones now?
03:04:04 <Bike> dude even i have a smartphone, and i'm not even alive.
03:04:06 <shachaf> s/ll/l/
03:04:11 <Fiora> no I don't work at intel <_>
03:05:40 <shachaf> OK then.
03:05:56 <shachaf> Can I try to figure out your identity or should I not?
03:06:04 <Fiora> you probably shouldnt because i dont think it'll work
03:06:22 <Fiora> also it's kind of, um, unnerving when people do that
03:06:26 <kmc> shachaf: startup idea: smartphones for horses
03:06:28 <shachaf> I meant whether you have any objections.
03:06:34 <shachaf> I guess that's a yes.
03:06:54 <kmc> Fiora: i think you're cool even if you are an identity-less phantom inside my computer
03:07:08 * shachaf likes to play the "figure out pseudonymous people's identity" game, but generally only when they don't object.
03:07:20 <kmc> i hope when you get to play with time machine or omnipotent AI hardware before everyone else, you'll at least give #esoteric a heads-up
03:07:22 <elliott> kmc: that's Phantom_Hoover.
03:07:33 <Bike> always fun to find someone's four year old deviantart ccount
03:07:41 <monqy> shachaf: "generally"
03:08:04 <shachaf> monqy: I can't think of any exceptions off-hand.
03:08:31 <Fiora> kmc: I only wish I could work with things that cool <.<
03:08:50 <shachaf> Haswell is basically a time machine.
03:08:59 <shachaf> Or evidence of one.
03:09:05 <shachaf> I mean, it only comes out this summer, right?
03:09:09 <kmc> some kind of... hot tub time machine
03:09:16 <Bike> good film
03:09:37 <kmc> it took me two tries to watch it
03:09:46 <kmc> because the first time I got falling down drunk by about the 20 min mark
03:10:04 <Bike> That sounds like a successful watch as far as I'm concerned.
03:10:22 <shachaf> I haven't even *tried* to watch it.
03:10:27 <shachaf> How drunk does that make me?
03:10:35 <Bike> Dully sober.
03:11:12 <pikhq> shachaf: Do me, do me!
03:11:27 <pikhq> (it'll be boring. :P)
03:11:27 <Bike> `? pikhq
03:11:30 <HackEgo> pikhq? ¯\(°_o)/¯
03:11:34 <Bike> i got nothing.
03:11:45 <elliott> do you really count as pseudonymous
03:11:52 <pikhq> Probably not.
03:11:54 <shachaf> pikhq: You're not Josiah Worcester of Colorado?
03:11:59 <pikhq> shachaf: That's me.
03:12:03 <shachaf> Birthday this Saturday.
03:12:15 <pikhq> Precisely.
03:12:15 <shachaf> You'll turn 23?
03:12:18 <pikhq> Yup.
03:12:32 <pikhq> I'm, like, anti-anonymous online.
03:12:50 <Bike> nonymous
03:12:59 <Fiora> kmc: also I kind of like being an identityless phantom, it's kinda fun (and a bit comforting, in a way)
03:13:57 <shachaf> kmc: You should probably use a hash function designed to work this way.
03:14:00 <shachaf> Like Salsa20!
03:14:25 <Lymia> [Average fitness: -7569.4, Max fitness: -950.0]
03:14:30 <Lymia> Holy crap, it's kinda working o~o
03:14:42 <Bike> That's pretty unfit.
03:14:56 <Lymia> 0 is "wins and loses equally" :p
03:15:12 <Jafet> Sounds like thermonuclear war.
03:15:33 <Bike> maybe i should code up an evo thing to see how red queen works out.
03:15:35 <shachaf> pikhq: How about me?
03:15:38 <shachaf> Do me, do me!
03:15:50 <Bike> i've been wondering what evolution would turn up if the actors can modify each other, like modern medicine.
03:16:34 -!- impomatic has left.
03:17:22 <pikhq> Shachaf Ben-Kiki?
03:17:43 <shachaf> That's, uh, elliott's name.
03:17:43 <Lymia> !bfjoust this-will-lose-badly http://files.lymiahugs.com/best-4-341.bfjoust
03:17:57 <EgoBot> ​Score for Lymia_this-will-lose-badly: 10.0
03:18:25 <Bike> evolved by joust evo eh
03:18:29 <pikhq> Yeah, almost certainly.
03:18:44 <Lymia> I'm not good with names
03:18:47 <pikhq> Nice work on the 0x$0.20.
03:23:04 <pikhq> Curse you and your otherwise privateness.
03:23:11 <pikhq> I'd have to care more to find further details.
03:23:50 <shachaf> I have otherwise privateness?
03:23:59 <Bike> "account : Madoka-Kaname" snort
03:24:17 <Lymia> Researching everyone?
03:24:18 <Lymia> How rude
03:24:30 <pikhq> shachaf: Namely, I'm not finding a wide-open Facebook account. :P
03:24:58 <Bike> time to /whois everybody
03:25:00 <pikhq> Lymia: Meh, you'll find a giant chunk of personal details on me within 5 results on Google.
03:30:22 <kmc> Bike: the singularitarians spend a lot of time thinking about that
03:30:41 <Bike> OK, but I don't want to pay attention to them.
03:30:53 <Bike> Apparently there are only slightly radical theories of recent human evolution that involve drugs.
03:31:16 <Fiora> Bike: I'm actually an AI running on an AWS micro instance
03:31:28 <pikhq> Efficient.
03:32:50 <kmc> stoned ape hypothesis
03:32:59 <kmc> i'm not sure about 'only slightly radical'
03:33:37 <Bike> It doesn't involve McKenna.
03:33:56 <kmc> that guy
03:34:02 <Bike> ugh, i didn't bookmark the book...
03:34:12 <Bike> it was by an actual anthropologist, not like... you know. McKenna.
03:34:59 <Bike> recent human evolution is just cool in general. I mean have you ever really thought about lactase persistance
03:35:57 <pikhq> Yes, actually.
03:36:08 <Bike> good. keep that up.
03:37:09 <kmc> yeah lactase persistence is a neat trick
03:37:28 <kmc> +2 racial bonus to Drink Milk checks
03:38:14 <elliott> i was going to say soemthing but ive totally forgotten what
03:38:28 <Bike> Was it about milk?
03:38:28 <kmc> good story
03:39:22 <Lymia> Oh...
03:39:44 <Lymia> I found what caused the speciation to go crazy, and spew out 1000 species at random.
03:39:57 <Lymia> It considers empty individuals to be infinitely unrelated to everything... >_<
03:41:56 <Bike> dammit, now i want to know the book again. the only anthro books i have bookmarked aren't about evolution.
03:41:56 * Fiora thanks her dad for lactase persistence genes?
03:42:12 <Bike> oh god mckenna actually called it "stoned ape", i thought that was a joke
03:50:12 <Lymia> ... wow whoops
03:50:13 <Lymia> I wasn't running
03:50:16 <Lymia> Half my mutations.
03:50:17 <Lymia> As in.
03:50:23 <Lymia> Anything that operated on the contents of genes.
03:50:38 <elliott> this evolver sounds somewhat suboptimal
03:51:02 <Bike> obviously lymia needs to get closer to the optimum
03:51:14 <Bike> maybe use some kind of gradient descent, or evolutionary algorithm, to design the algorithm
03:52:40 <Lymia> :p
04:06:02 -!- azaq23 has quit (Quit: Leaving.).
04:06:53 <Lymia> .[.[.[.[.[.:....]....]....]....]....]....
04:06:56 <Lymia> Interesting individual there
04:08:32 <elliott> :
04:10:40 <Lymia> : means "recursion limit reached" >_>
04:14:25 -!- Phantom_Hoover has quit (Remote host closed the connection).
04:23:43 -!- TeruFSX has joined.
04:27:55 <ais523> Lymia: isn't that basically the ()% construction, just expanded by hand?
04:28:19 <Lymia> Something like that.
04:28:26 <Lymia> The ()% construction is... a bit syntatically difficult >_<
04:29:57 <ais523> what you wrote is (.[{:}....])%5
04:30:05 <Lymia> Yeah.
04:30:15 <Lymia> I might try generating ({})% later
04:30:37 <ais523> it shouldn't be hard if you already have code for expanding it
04:30:40 <Lymia> I couldn't think of a good encoding for that, so, I settled for that.
04:30:43 <ais523> just don't expand it and output the unexpanded for instead
04:30:44 <Lymia> ais523, well...
04:30:53 <Lymia> The encoding is vastly different from the ({}) encoding
04:31:21 <ais523> that would surprise me
04:31:32 <ais523> what do you have in the current encoding?
04:32:34 <Lymia> Well... A gene is a linear sequence of instructions and activations. Activations try to trigger other genes, using some rules.
04:32:53 <Lymia> It could encode, like,, [[][]][[][]]... too.
04:33:00 <Lymia> Or more complicated stuff.
04:33:25 <ais523> oh, I see, you don't have a special case for nesting/recursion?
04:33:43 <Lymia> Nope.
04:36:16 * Lymia sets population size to 200
04:36:25 <Lymia> Let's see if the system works then. Goodbye all 4 cores of CPU time :p
04:36:40 <Lymia> (Luckily, it's O(n) without inner-population evaluations... >_<)
04:40:13 <Lymia> -rw-r--r-- 1 lymia lymia 11M Mar 20 23:39 temp/evo-477-885.bfjoust
04:40:18 <Lymia> I really need a protection against this.
04:43:12 <Lymia> java.lang.OutOfMemoryError: Java heap space
04:43:15 <Lymia> wow totally killing these
04:45:25 <Lymia> http://paste.strictfp.com/37065/8950fa75a836a5606ffc61cfcb1be3e1
04:45:26 <Lymia> Fixed
04:53:02 -!- Jafet has quit (Quit: Leaving.).
05:13:20 -!- TeruFSX has quit (Ping timeout: 260 seconds).
05:15:24 <Lymia> ais523, does gearlance care about the order of its arguments?
05:15:33 <ais523> Lymia: I don't know, I didn't write it
05:15:47 <ais523> my BF Joust impl is juiced, which fell off the internet
05:15:50 <ais523> that reminds me, I should put it back
05:18:18 <ais523> and fixed
05:18:20 <ais523> http://nethack4.org/esolangs/juiced.c
05:18:21 <ais523> is my interp
05:19:57 <Lymia> [Average fitness: -7653.368350168351, Max fitness: -7120.0]
05:19:57 <Lymia> [Average fitness: -7921.638165859564, Max fitness: -4205.0]
05:19:58 <Lymia> ._.
05:20:00 <Lymia> In one generation?
05:20:37 <ais523> you can expect huge improvements at the start
05:20:41 <ais523> e.g. < is a lot worse than .
05:20:41 <Lymia> Oh. It learned how to do the flag dance.
05:20:50 <Lymia> ais523, I'm starting with all nops.
05:20:54 <ais523> (+-)*-1, that sort of thing?
05:20:57 <Lymia> Yeah.
05:21:05 <ais523> !bfjoust stupid_vibration (+-)*-1
05:21:09 <EgoBot> ​Score for ais523_stupid_vibration: 5.8
05:21:18 <ais523> yeah, that seems about right
05:21:22 <Lymia> !bfjoust stupidish_vibration -+.+-[-+.+-[-+.+-[-+.+-[-+.+-[-+.+-:]].-<<<].-<<<].-<<<].-<<<
05:21:27 <EgoBot> ​Score for Lymia_stupidish_vibration: 10.0
05:22:25 <ais523> if it ever reaches the -<<< bit, it suicides
05:22:37 <Lymia> yep
05:22:57 <ais523> !bfjoust lymiastupidish_vibration_golfed (-+.+-.)*-1
05:23:01 <EgoBot> ​Score for ais523_lymiastupidish_vibration_golfed: 13.3
05:23:09 <ais523> !bfjoust lymiastupidish_vibration_golfed <
05:23:12 <EgoBot> ​Score for ais523_lymiastupidish_vibration_golfed: 0.0
05:23:24 <ais523> 13.3 is actually very good for a vibration program that doesn't set decoys
05:23:33 <ais523> like, unprecedented I've-never-seen-this-before good
05:24:05 <ais523> perhaps evolving programs can be useful after all
05:24:29 <Lymia> It's probs just because it can figure out a vibration pattern that targets as many programs on the hill as possible
05:25:27 <ais523> yeah
05:25:55 <ais523> it's got to be able to lock two-cycles, or it wouldn't do as well
05:26:09 <ais523> perhaps it locks both two-cycle and three-cycle clears?
05:26:16 <ais523> or is particularly immune to direction change, or something
05:26:19 <ais523> let me try it locally
05:26:48 <Lymia> !bfjoust less_stupid_vibration -[-[-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....]-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....].....]-[-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....]-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....].....].....]-[-[-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....]-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....].....]-[-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....]-[-[-[-:-:]-[-:-:]]-[-[-:-:]-[-:-:]].....].....].....].....
05:26:53 <EgoBot> ​Score for Lymia_less_stupid_vibration: 14.9
05:27:07 <ais523> err, what? :)
05:28:46 <ais523> aha, I see: the (-+.+-.) pattern has a 2 in 3 chance of securing a detectable lock
05:29:00 <ais523> and several programs (especially david_werecat's) have no counermeasures in place for that
05:29:19 <Lymia> .bfjoust less_stupid_vibration_golfed -.-.-.(-[-[--]-[--]]-[-[--]-[--]].....)%-1
05:29:34 <ais523> Lymia: you mean *-1
05:29:36 <ais523> and !bfjoust
05:29:44 <Lymia> .. :p
05:29:49 <Lymia> !bfjoust less_stupid_vibration_golfed -.-.-.(-[-[--]-[--]]-[-[--]-[--]].....)*-1
05:29:54 <EgoBot> ​Score for Lymia_less_stupid_vibration_golfed: 14.9
05:30:00 <Lymia> Is % only for finite repeats?
05:30:08 <ais523> % is for nesting repeats
05:30:10 <Lymia> Ah
05:30:19 <Lymia> (So... %0 isn't an acceptable comment? >_<)
05:30:37 <ais523> basically, a(b)*9c is equivalent to a(b{})%9c
05:30:44 <ais523> the {} tells you where to self-embed
05:30:55 <ais523> and what's inside the {} tells you what to do when you hit the recursion limit
05:35:29 -!- pikhq_ has joined.
05:35:35 -!- pikhq has quit (Ping timeout: 255 seconds).
05:41:24 <Lymia> !bfjoust foo ([-{<}+])%-1
05:41:29 <EgoBot> ​Score for Lymia_foo: 7.8
05:46:19 <Lymia> Giant code sizes still out of control...
05:46:25 * Lymia sets limit to 32K opcodes
05:47:31 <ais523> Lymia: that's just a 2-cycle clear on your own flag
05:47:49 <Lymia> I know :p
05:47:54 <ais523> only reason that potentially does well at all is if it hits an opponent's 2-cycle clear with the opposite polarity
05:47:58 <ais523> and they end up getting stuck on each other
05:57:26 <Lymia> Let's see if it can hope hit 0 fitness.
05:57:34 <Lymia> Which would be "wins and loses equally"
05:57:39 <Lymia> if it can hope to*
05:58:34 <Lymia> ...
05:58:36 <Lymia> Ah, wait.
05:58:39 <Lymia> I should count ties as loses
05:59:53 <Lymia> line.split(" ").last.toInt - line.count(_ == 'X')
05:59:56 <Lymia> yay for terse languages
06:04:05 <Sgeo> ^list
06:04:05 <fungot> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
06:04:53 <Fiora> another? :o
06:05:44 <Lymia> What's ^list for
06:05:51 <Lymia> It appears to be to highlight people. But for what purpose.
06:06:07 <ais523> Lymia: some webcomic updating
06:06:10 <Fiora> homestuck~
06:06:14 <Lymia> Oh.
06:06:16 * Lymia loses interest :<
06:06:58 <Bike> don't we have a lot of lists now, maybe lymia could fit on one of them.
06:07:10 <Bike> `run ls bin/ | grep list
06:07:12 <HackEgo> list \ listen
06:07:17 <Bike> welp.
06:07:34 <shachaf> ????????????????????????????
06:07:47 <shachaf> `smlist
06:07:47 * Lymia counts question marks
06:07:48 <HackEgo> ​/home/hackbot/hackbot.hg/multibot_cmds/lib/limits: line 5: exec: smlist: not found
06:07:49 <Lymia> That'sa lot
06:07:54 <shachaf> ???????????????????????????????????????????????????????????????????????
06:08:04 <shachaf> elliott: What did you do?
06:08:09 <Bike> `cat bin/list
06:08:10 <HackEgo> ​#!/bin/sh \ grep '^..:..:..: <[^>]*> `list' /var/irclogs/_esoteric/201[3-9]-??-??.txt | sed 's/^.*<//;s/>.*//;s/_*$//' | sort -u | tr '\n' ' '
06:08:17 <Bike> oh so that's still working
06:08:25 <Bike> "great"
06:08:28 <shachaf> Somebody seriously way reverted things or something.
06:08:30 <Lymia> That's a scary program.
06:08:40 <Lymia> It pings people :(
06:08:42 <shachaf> `help
06:08:43 <HackEgo> Runs arbitrary code in GNU/Linux. Type "`<command>", or "`run <command>" for full shell commands. "`fetch <URL>" downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert <rev>" can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/
06:08:55 <Bike> `welcome bike
06:08:57 <HackEgo> bike: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
06:09:02 -!- pikhq has joined.
06:09:03 <Bike> `relcome bike
06:09:05 <HackEgo> ​/hackenv/bin/relcome: 2: colourise: not found
06:09:10 -!- pikhq_ has quit (Ping timeout: 245 seconds).
06:09:12 <Bike> Oh god, we're doomed.
06:09:12 <Lymia> So HackEgo, like...
06:09:24 <Lymia> Pings everybody who has ever used the `list command?
06:09:29 <Bike> yes.
06:09:32 <ais523> yes
06:09:49 <Bike> since january, anyway.
06:09:57 <Bike> it's an important command because it shames me forever.
06:10:15 <shachaf> <Phantom_Hoover> rm bin/?*list
06:10:29 <shachaf> oerjan: Please see above.
06:10:34 <ais523> I like the new version, it seems to be free from race conditions
06:10:47 <Bike> Wait...
06:10:47 <shachaf> `undo 2432
06:10:50 <Bike> `quine hello??
06:10:52 <HackEgo> patching file emptylist \ patching file instalist \ patching file makelist \ patching file mlist \ patching file olist \ patching file pbflist \ patching file slist \ patching file smlist \ patching file testlist
06:10:53 <elliott> shachaf i have a feeling nobody but you cares about the billion different lists
06:10:55 <HackEgo> ​`quine hello??
06:11:04 <Bike> `quine hello??
06:11:04 <Bike> a
06:11:07 <HackEgo> ​`quine hello??
06:11:08 <shachaf> monqy: There's been a supermegacomics update.
06:11:10 <Bike> oh god no
06:11:10 <shachaf> monqy: Do you care?
06:11:12 <monqy> shachaf: i saw
06:11:12 <Bike> NO
06:11:23 <ais523> I normally find out about comic updates from sources other than the `lists
06:11:25 <monqy> i check supermega every day and sometimes more than every day because im fidgety
06:12:21 <Lymia> ais523, bleh. The system is seriously biased towards making highly recursive structures-- biasing it greatly towards vibration stuff.
06:12:35 * Lymia puts that on her "important observations" list
06:12:42 <shachaf> monqy: this update is p.good
06:12:48 <ais523> Lymia: vibration is the easiest program to construct for an evolver by far
06:13:12 <shachaf> structures++
06:13:30 <Lymia> Well. The current evolver, quite clearly has a problem with going, like, AAAACBBBB
06:13:35 <ais523> especially because the vast majority of the hill has resistance against rushes
06:13:55 <Lymia> ais523, I might, just as an experiment, run it in against-itself mode.
06:14:07 <Lymia> Then against the hill after.
06:14:11 <Lymia> To see how that works out
06:15:02 <Lymia> !bfjoust some-weird-vibrator --.+--.+.+[-.+]-.+--.+--.+.+[-.+].+[-.+--.+.+[]-.+].+[]--.+--.+.+[-.+].+[]--.+.+[]-.+
06:15:07 <EgoBot> ​Score for Lymia_some-weird-vibrator: 9.6
06:15:22 -!- madbr has quit (Quit: Radiateur).
06:15:27 <Lymia> Let's see if it can do better with it counting ties as losses-- as EgoBot does
06:15:28 <Lymia> >_<
06:15:46 <Lymia> There's been improvement every generation so far.
06:15:55 <ais523> ties aren't counted as losses, but they also don't get you points
06:16:04 <ais523> I forget exactly how it works
06:16:39 <Lymia> I'm doing
06:16:41 <Lymia> wins - losses - ties
06:16:49 <Lymia> And just summing that for the fitness.
06:16:57 <Lymia> Well.
06:16:59 <Lymia> Not quite.
06:17:07 <Lymia> I multiply it by 5 after.
06:17:24 <shachaf> `ls bin/*list
06:17:25 <HackEgo> ​/bin/ls: cannot access bin/*list: No such file or directory \ /bin/ls: cannot access bin/*list: No such file or directory
06:17:28 <shachaf> `run ls bin/*list
06:17:30 <HackEgo> bin/list
06:17:30 <Lymia> The full function is 5*hill + 1*population
06:17:36 <shachaf> `run ls *list
06:17:37 <Lymia> But, I disabled the latter part because that causes O(n^2)
06:17:38 <HackEgo> emptylist \ instalist \ makelist \ mlist \ olist \ pbflist \ slist \ smlist \ testlist
06:17:46 <shachaf> `run cat olist | rot13
06:17:48 <HackEgo> No output.
06:17:49 <shachaf> `run cat olist | r13
06:17:51 <HackEgo> rpub -a "$(onfranzr "$0"): "; gnvy -a+2 "$0" | knetf; rkvg \ funpuns \ brewna \ Ftrb
06:17:58 <Lymia> Who r13 it
06:18:00 <shachaf> `run mv *list bin/
06:18:04 <HackEgo> No output.
06:18:33 <Lymia> Why*
06:18:37 <Bike> well now Sgeo does have to fungot
06:18:37 <fungot> Bike: if it's weird. i never hear talk about stk, especially not not me :) lemme check
06:18:39 <Bike> doesn't
06:21:19 <Sgeo> When I get a new computer I'm not going to be able to play with it while lying down on the couch :(
06:21:58 <ais523> Lymia: because people aren't normally pinged by the rot13 of their own nick
06:22:38 <shachaf> I am, though.
06:22:46 <shachaf> But it doesn't matter with me because I was running it.
06:23:03 -!- DHeadshot has quit (Read error: Connection reset by peer).
06:23:26 -!- DHeadshot has joined.
06:23:30 <ais523> hmm… what nick came first, "shachaf" or "funpuns"?
06:23:55 <fizzie> The actual hill scoring considers wins against better programs more important; it's described at http://codu.org/eso/bfjoust/SCORES -- not that raw duel points (which are 1 point for win, 0 for tie, -1 for loss) or anything else similar would necessarily be bad for fitness.
06:24:09 -!- pikhq_ has joined.
06:24:10 <Lymia> fizzie, yeah.
06:24:14 <Lymia> I used to do wins - loses
06:24:23 <Lymia> Which is quite clearly grossly inaccurate
06:24:39 -!- pikhq has quit (Ping timeout: 256 seconds).
06:24:42 <Lymia> Well... wait.
06:24:45 <Lymia> "The actual hill scoring considers wins against better programs more important"
06:25:05 <Lymia> For an evolutionary algorithm, that might mean a lot. Since, it could potentially find weakness targeted at the top of the hill.
06:25:09 <Lymia> weaknesses*
06:25:35 <shachaf> ais523: It is a mystery.
06:26:01 <ais523> Lymia: there are definitely serious weaknesses in some of the high-up programs
06:26:26 <fizzie> Losses also sorta-don't count in the score as much, since it clamps the points-against-X to 0 for the score calculation.
06:26:26 <ais523> e.g. omnipotence can be defeated simply via timer clears that set a lot of decoys
06:27:04 <ais523> but the problem is, those known weaknesses are unlikely to be found by an evolutionary algorithm
06:27:08 <ais523> it might find different weaknesses, though
06:27:23 <fizzie> (Of course they count in the sense that win-win-win-loss is 2 while win-win-win-tie is 3.)
06:29:00 <Lymia> ais523, I really want to see if I can get more interesting behavior if I run it without touching the hill first.
06:29:11 <ais523> Lymia: yes, that sounds like a good test
06:29:21 <ais523> it's at least likely to produce rush programs, eventually
06:29:54 <Lymia> i.e. let it run on its own for 100 or so generations, then see how it works on the hill
06:29:55 <Lymia> Might not work so well though. My speciation algorithm is, er...scizophranic.
06:30:24 <Lymia> For it to actually work well though, I have to fix my speciation code.
06:30:36 <Lymia> So it stops deciding there's 10 species one generation, and 4 the next
06:30:38 <oklopol> !bfjoust boobnipples (++++++--..--[++++-]...--[+])*-1
06:30:42 <EgoBot> ​Score for oklopol_boobnipples: 9.7
06:31:06 <oklopol> is that a good score or a bad score
06:31:22 <Lymia> Bad
06:31:23 <Lymia> Very bad
06:31:34 <Lymia> Imagine 9.7 as an IQ
06:31:43 <Lymia> Or a test grade
06:31:54 <shachaf> 9.7/10?
06:32:06 <shachaf> That's not such a bad test grade.
06:32:21 <Lymia> :p
06:32:31 <Lymia> (9.7/100 is a F though)
06:32:48 <Lymia> (And likely to drag your grade for the entire class down to at least a C)
06:33:11 <shachaf> Maybe Americlasses.
06:33:17 -!- Nisstyre-laptop has joined.
06:34:21 <Lymia> ais523, please exorcise my speciation code :(
06:34:25 <Lymia> ArraySeq(64, 68, 68) < one generation
06:34:33 <Lymia> ArraySeq(3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 2, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3, 3)
06:34:33 <Lymia> < the next
06:34:38 <ais523> haha :)
06:34:38 <Bike> good array
06:34:42 <Lymia> ArraySeq(21, 22, 22, 22, 22, 22, 22, 22, 22) < the one after that
06:35:17 <Lymia> The target is an average of 20 individuals per species.
06:35:37 <ais523> oklopol: 20 or so means "the idea behind this program might potentially work"; 40-50 means "this program will survive on the hill for a while", 60+ is what you'd expect from a top program
06:35:38 <Lymia> But the variable speciation constant is basically overpowered by whatever feedback loop is causing this...
06:43:22 <Arc_Koen> I thought maximum was 42
06:44:31 <Arc_Koen> ais523: isn't it currently 6h45 in the morning in your country?
06:44:40 <ais523> Arc_Koen: yes
06:44:44 <ais523> well, 6:44
06:45:10 <Arc_Koen> so you were up all night talking about brainfuck joust in the middle of the week
06:46:06 <oklopol> !bfjoust waywardventriculation (,.>,.>,.>,.>,.>,.[[>>+-]....],,,>>,,.<<,,,[+-.-+.+-.]-)*-1
06:46:08 <Arc_Koen> that makes it pretty hard for me to mentally place everyone in their respective timezone
06:46:09 <EgoBot> ​Score for oklopol_waywardventriculation: 0.0
06:46:11 <oklopol> >D
06:46:24 <oklopol> some day i'll learn how this game words
06:46:26 <oklopol> works
06:47:04 <Lymia> !bfjoust generation-34 http://files.lymiahugs.com/best-6834-6785.bfjoust
06:47:12 <EgoBot> ​Score for Lymia_generation-34: 17.2
06:47:32 <Arc_Koen> !bfjoust naive_1 (->+>)*5([-]>)*-1
06:47:36 <EgoBot> ​Score for Arc_Koen_naive_1: 15.4
06:47:49 <Arc_Koen> hehehe
06:47:51 <Arc_Koen> first try
06:47:53 -!- copumpkin has quit (Ping timeout: 256 seconds).
06:48:21 <ais523> Arc_Koen: that's not an awful program
06:48:23 -!- copumpkin has joined.
06:48:31 <Arc_Koen> (technically I tried others before but I hadn't understood the rules)
06:48:34 <ais523> it is, however, the sort of thing many of the older programs are specialized to beat
06:48:35 <Arc_Koen> (well misread)
06:48:48 <Arc_Koen> yes I hope so
06:48:50 <ais523> the newer programs are mostly trying to beat the older programs and each other, though
06:48:59 <Arc_Koen> haha
06:49:03 <Lymia> My program is currently crunching numbers, apparently with the goal of making the best possible vibrator... with no decoys.
06:49:08 <ais523> you might want to read up about offset clears
06:49:18 <Arc_Koen> will do
06:49:26 <ais523> they completely revolutionised BF Joust when they were invented
06:49:29 <ais523> it blew my mind, at least
06:49:34 <Lymia> What are offset clears?
06:49:34 -!- pikhq has joined.
06:49:43 -!- pikhq_ has quit (Ping timeout: 264 seconds).
06:49:45 <Lymia> Do some check, >*x and [-]?
06:49:48 <Lymia> Or something like that?
06:49:58 <ais523> Lymia: basically you do ++[-] or the like, so that instead of being very fast at 0, 1, 2, 3 but very slow at -1, you're very fast at -2, -1, 0, 1, 2 but slow at -3
06:50:23 <ais523> although arguably they aren't so useful any more because they made decoys very close to 1 useless at actually slowing programs down
06:50:31 <ais523> and so they aren't used for that purpose very often
06:51:02 -!- hagb4rd has quit (Quit: hagb4rd).
06:51:29 <Arc_Koen> did you just say "offset clears are so efficient at defeating decoys that decoys are no longer used and thus offset clears are useless nowadays"?
06:52:05 <Lymia> Offset clears sounds like the kind of thing you actually expect an evolutionary algorithm to learn.
06:53:06 <ais523> Arc_Koen: pretty much, BF Joust works like that
06:53:15 <ais523> but they're still useful because programs use size-1 decoys for other purposes
06:53:26 <ais523> assuming that they won't be much good at slowing the enemy, but if they do it's a bonus
06:53:35 <Lymia> x-x
06:53:38 <Lymia> I effectively have
06:53:45 <Lymia> No speciation
06:54:53 <Arc_Koen> so what's the score given by egobot? the number of programs I defeated?
06:55:15 <ais523> Arc_Koen: it's calculated based on how many programs it beats, how convincingly it beats them, and how good the programs it beats are
06:55:30 <Arc_Koen> oh, alright
06:56:19 <elliott> if only we had quintopia's scoring
06:56:50 <Lymia> !bfjoust generation-40 http://files.lymiahugs.com/best-6010-7971.bfjoust
06:56:55 <EgoBot> ​Score for Lymia_generation-40: 17.2
06:57:07 <Lymia> Hun?
06:57:17 <Lymia> There's a fitness change by my algorithm, and no change by EgoBot's?
06:57:24 <Lymia> Does it, like, not count certain wins?
06:58:48 -!- nooodl^ has quit (Ping timeout: 258 seconds).
07:01:51 <oklopol> "how convincingly it beats them"?
07:02:42 <Arc_Koen> oklopol: I think a "match" between two programs is made of 21 battles
07:03:05 <ais523> oklopol: yeah, if you win on more tape lengths
07:03:10 <ais523> it counts as better
07:09:21 -!- Bike has quit (Quit: ie).
07:09:28 -!- Lymia has quit (Ping timeout: 256 seconds).
07:10:51 -!- pikhq_ has joined.
07:10:59 -!- pikhq has quit (Ping timeout: 255 seconds).
07:15:54 -!- epicmonkey has joined.
07:19:21 -!- Jafet has joined.
07:19:57 -!- pikhq has joined.
07:20:11 -!- pikhq_ has quit (Ping timeout: 256 seconds).
07:20:58 -!- Lymia has joined.
07:20:58 -!- Lymia has quit (Changing host).
07:20:58 -!- Lymia has joined.
07:23:26 -!- FreeFull has quit.
07:23:58 <Lymia> !bfjoust stupid-vibrator (++-)*-1
07:24:18 <EgoBot> ​Score for Lymia_stupid-vibrator: 14.5
07:25:03 <Lymia> I'm simultaneously surprised at the variety of code structures the algorithm manages to generate-- and, unfortunately, how little it uses it...
07:25:31 <Arc_Koen> !bfjoust empty .
07:25:35 <EgoBot> ​Score for Arc_Koen_empty: 3.6
07:26:19 <Lymia> ais523, you have a hill of "easier" programs somewhere?
07:26:37 <ais523> Lymia: I don't, but taking a hill from 2009 or so would be good to test against
07:26:54 <Arc_Koen> !bfjoust notsolucky (>)*20[-]
07:26:59 <EgoBot> ​Score for Arc_Koen_notsolucky: 0.0
07:27:03 <Arc_Koen> oh
07:27:21 <Lymia> I'm not sure how to use hg like that
07:27:23 <fizzie> I used the set of sample programs at http://esolangs.org/wiki/BF_Joust_strategies for some stuff.
07:27:35 <Lymia> !bfjoust lucky >*10[-]>[-]
07:27:39 <EgoBot> ​Score for Lymia_lucky: 3.6
07:27:43 <Lymia> ha~
07:28:04 <Arc_Koen> well 3.6 you get for not committing suicide
07:28:14 <Lymia> !bfjoust luckier >*10[-]>[-]>[-]
07:28:18 <EgoBot> ​Score for Lymia_luckier: 3.6
07:28:27 <Lymia> !bfjoust luckiest >*10[--]>[--]>[--]
07:28:31 <EgoBot> ​Score for Lymia_luckiest: 3.6
07:28:32 <Lymia> crap
07:28:44 <Arc_Koen> !bfjoust straightforward (>)*9([-])*-1
07:28:48 <EgoBot> ​Score for Arc_Koen_straightforward: 4.3
07:28:50 <Lymia> !bfjoust [->+<]
07:28:51 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
07:28:56 <Lymia> !bfjoust this-isnt-bf! [->+<]
07:28:59 <EgoBot> ​Score for Lymia_this-isnt-bf_: 5.1
07:29:12 <Lymia> ._.
07:29:16 <Lymia> MOV 0, 1 beats stuff?
07:30:17 -!- pikhq has quit (Ping timeout: 240 seconds).
07:30:18 <Arc_Koen> that's weird
07:30:30 -!- pikhq has joined.
07:30:30 <fizzie> Lymia: "hg update -d <DATE" should switch the working directory to the tipmost revision that's earlier than DATE.
07:30:38 <fizzie> Er, with < escaped.
07:31:02 <Arc_Koen> !bfjoust traitor (-)*-1
07:31:09 <EgoBot> ​Score for Arc_Koen_traitor: 7.3
07:31:12 <Arc_Koen> WHAT
07:31:29 <Lymia> !bfjoust actual-traitor [-].
07:31:37 <Arc_Koen> oh right
07:31:49 <EgoBot> ​Score for Lymia_actual-traitor: 7.8
07:31:52 <Lymia> ...
07:31:55 <Arc_Koen> haha
07:32:53 <Arc_Koen> !bfjoust faster-traitor (-)*128
07:32:58 <EgoBot> ​Score for Arc_Koen_faster-traitor: 5.8
07:33:21 <ais523> [-] has a chance of locking itself on the opponent
07:33:46 <Arc_Koen> (I don't know what that means)
07:33:52 <Lymia> !bfjoust i-hate-decoys >*8>([-[-[-[-[-]]]]]>)*-1
07:33:55 <EgoBot> ​Score for Lymia_i-hate-decoys: 11.5
07:34:07 <Lymia> !bfjoust i-hate-decoys >*8([-[-[-[-]]]]>)*-1
07:34:10 <EgoBot> ​Score for Lymia_i-hate-decoys: 10.2
07:34:22 <Lymia> !bfjoust i-hate-decoys >*8([-[-[-[--]]]]>)*-1
07:34:26 <EgoBot> ​Score for Lymia_i-hate-decoys: 9.7
07:35:41 <Lymia> holy crap
07:35:43 * Lymia \o/
07:35:46 <Lymia> My speciation code is fixed!
07:35:46 <Lymia> :D
07:35:47 -!- Nisstyre-laptop has quit (Quit: Leaving).
07:36:40 <Lymia> !bfjoust weird-vibrator (+.-.)*-1
07:36:45 <ais523> Lymia: [-[-[-[-[-[-]]]]] is mostly the same as [-[-]] but more vulnerable to triplocks
07:36:48 <EgoBot> ​Score for Lymia_weird-vibrator: 6.0
07:37:00 <ais523> and with unbalanced brackets because I failed to copy it correctly
07:37:17 <Lymia> Here's an interesting challenge.
07:37:26 <Lymia> Write a bfjoust program that fits on an IRC line and gets a good score :p
07:37:33 <ais523> fwiw, [-[-]][-[-]] is the gold standard pattern for immunity to both triplocks and vibration programs, although you want a clear that's more reliable against locks than [-]
07:37:40 <ais523> Lymia: quite a few high-up programs would fit on a line
07:37:44 <ais523> or could be modified to do so
07:37:46 <Lymia> Ah.
07:37:58 <Lymia> They appear to be mostly in the 20KB range
07:37:59 <ais523> the main problem is with defense programs, and programs that need to write out a lot of near-identical cases
07:38:09 <ais523> most of my programs fit in one of those categories or the other…
07:38:40 -!- DHeadshot has quit (Ping timeout: 258 seconds).
07:41:06 <Fiora> !bfjoust i-have-no-idea-what-im-doing ((-->+>)*20(--<+<)*20)*-1
07:41:09 <EgoBot> ​Score for Fiora_i-have-no-idea-what-im-doing: 0.0
07:41:52 <ais523> Fiora: the first loop moves 40 cells
07:41:57 <ais523> the tape has a maximum length of 30
07:42:08 <ais523> as such, the only way that doesn't suicide is if the opponent suicides faster :)
07:42:13 <Fiora> ooh.
07:42:27 <Fiora> !bfjoust i-have-no-idea-what-im-doing ((-->+>)*15(--<+<)*15)*-1
07:42:28 <ais523> in general, the difficulty in BF Joust is trying to stop at your opponent's flag, if you go even one cell beyond you lose
07:42:30 <EgoBot> ​Score for Fiora_i-have-no-idea-what-im-doing: 0.0
07:42:34 <ais523> and your opponent isn't going to make it easy to find the flag
07:42:44 <ais523> *14 would make it actually possible for the program to not lose, btw
07:42:48 <Fiora> ah
07:42:53 <Fiora> !bfjoust i-have-no-idea-what-im-doing ((-->+>)*10(--<+<)*10)*-1
07:42:54 <fizzie> But only on long tapes.
07:42:58 <EgoBot> ​Score for Fiora_i-have-no-idea-what-im-doing: 0.0
07:43:01 <Fiora> yay? XD
07:43:02 <ais523> but it'd still probably lose due to requiring the tape length to be exactly 29 to have a chance
07:43:09 * ais523 checks breakdown
07:43:10 <Lymia> val fightHill = false
07:43:10 <Lymia> val fightPopulation = true
07:43:11 <Lymia> Let's go!
07:43:17 <Lymia> 80^2 evaluations yay
07:43:26 <fizzie> Start your engines.
07:43:37 <ais523> Fiora: there are a few programs that wins against on a few tape lengths
07:43:47 <ais523> so its problem is that it just hasn't scored even one decimal place of score :)
07:44:11 <Fiora> !bfjoust i-have-no-idea-what-im-doing (-[-[-[-]]]]>)*-1
07:44:14 <EgoBot> ​Score for Fiora_i-have-no-idea-what-im-doing: 0.0
07:44:22 <ais523> clearing your own flag is also inadvisable
07:44:23 <Lymia> That clears yourself :p
07:44:29 <Fiora> !bfjoust i-have-no-idea-what-im-doing (>-[-[-[-]]]])*-1
07:44:30 <ais523> try starting with a > or nine
07:44:32 <EgoBot> ​Score for Fiora_i-have-no-idea-what-im-doing: 0.0
07:44:40 <Fiora> okay that didn't work <.<
07:44:41 <ais523> hmm
07:44:43 <ais523> that should do better
07:44:59 <Fiora> !bfjoust i-have-no-idea-what-im-doing (>-[-[-[-]]])*-1
07:45:00 <ais523> Fiora: "parse error: terminating ] without a matching ["
07:45:04 <EgoBot> ​Score for Fiora_i-have-no-idea-what-im-doing: 6.2
07:45:12 <Fiora> that would explain that XD
07:45:12 <ais523> there, now you're actually scoring points :)
07:46:10 <Lymia> !bfjoust this-is-weird-and-stuff >>>+*10>>+*10->+>-->++>(>-[-])*-1
07:46:17 <EgoBot> ​Score for Lymia_this-is-weird-and-stuff: 5.5
07:46:23 <Lymia> !bfjoust this-is-also-entirely-random >>>+*10>>+*10->+>-->++>(>[-[-]])*-1
07:46:28 <EgoBot> ​Score for Lymia_this-is-also-entirely-random: 11.7
07:46:40 <Deewiant> Does * without () work?
07:46:48 <ais523> no, but EgoBot's interp might understand it anyway
07:46:56 <ais523> either that or it treats it as a comment
07:46:56 <Fiora> do the two programs start at opposite ends of the take?
07:46:58 <Fiora> or like, is it random?
07:46:59 -!- Nisstyre-laptop has joined.
07:47:02 <ais523> Fiora: opposite ends
07:47:06 <ais523> and > is towards the opponent
07:47:08 <Fiora> okay so they start maximum distance from each other
07:47:10 <ais523> err, the opponent's flag
07:47:10 <Lymia> !bfjoust -
07:47:11 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
07:47:12 <ais523> yeah
07:47:16 <Lymia> !bfjoust experiment -
07:47:24 <Fiora> wait, but if the tape is an even number long, aren't both directions equally close?
07:47:26 <EgoBot> ​Score for Lymia_experiment: 3.6
07:47:26 <Deewiant> ais523: "no, but maybe yes"? Does that mean "it's not supposed to, but maybe yes"
07:47:29 <Lymia> !bfjoust experiment -*100
07:47:33 <EgoBot> ​Score for Lymia_experiment: 3.6
07:47:36 <Lymia> !bfjoust experiment -*128
07:47:37 <ais523> Deewiant: yes
07:47:39 <EgoBot> ​Score for Lymia_experiment: 3.6
07:47:41 <Lymia> !bfjoust experiment -*-1
07:47:46 <EgoBot> ​Score for Lymia_experiment: 3.6
07:47:46 <Deewiant> ais523: Alright
07:47:48 <Lymia> !bfjoust experiment (-)*-1
07:47:51 <ais523> looks like it just treats the * as a comment
07:48:00 <Lymia> There's the answer, I guess.
07:48:05 <ais523> so -*-1 is equivalent to --
07:48:06 <EgoBot> ​Score for Lymia_experiment: 7.3
07:48:09 <ais523> also, you just posted increase
07:48:20 <ais523> which is quite good at getting draws, but not very good at winning
07:48:23 <Fiora> o_O how does (-)*-1 get 7.3?
07:48:25 <ais523> we try it every now and then
07:48:25 <fizzie> You need to have positive duel points against at least one program in order to get a nonzero score.
07:48:39 <Lymia> !bfjoust this-is-also-entirely-random >>>(+)*10>>(+)*10->+>-->++>(>[-[-]])*-1
07:48:39 <ais523> Fiora: because your flag needs to be zero for two cycles to win
07:48:42 <ais523> that changes it every cycle
07:48:44 <Fiora> ahhhhhhhhhh
07:48:45 <EgoBot> ​Score for Lymia_this-is-also-entirely-random: 13.1
07:48:54 <ais523> so the opponent's only way to win is to let you zero it, then change it in the opposite direction to hold it in place
07:49:09 <ais523> most programs are capable of doing that on at least one polarity, though (even the simple [-] does that)
07:49:21 <Lymia> [-.+]
07:49:22 <Lymia> :p
07:49:30 <Lymia> Though that's not effective at clearing...
07:49:34 <ais523> yeah
07:49:36 <Lymia> [--.+]
07:49:38 <Lymia> :p
07:49:47 <ais523> quite often, people suggest modified clear loops that actually are incapable of just clearing :)
07:49:55 <ais523> I saw someone try ++ once, I think
07:50:05 -!- pikhq_ has joined.
07:50:20 -!- pikhq has quit (Ping timeout: 260 seconds).
07:50:28 -!- ais523 has quit.
07:50:46 <Fiora> !bfjoust silly ((<-[-[-[++++]]])(>>>-[-[-[++++]]]))*-1
07:50:51 <EgoBot> ​Score for Fiora_silly: 3.6
07:50:56 <Lymia> That'll die in one tick.
07:51:04 <Fiora> wait, really? :O
07:51:09 <Lymia> !bfjoust suicide <
07:51:13 <EgoBot> ​Score for Lymia_suicide: 0.0
07:51:16 <Fiora> ?
07:51:17 <Lymia> ...?
07:51:21 <Lymia> !bfjoust (<)
07:51:22 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
07:51:28 <Lymia> !bfjoust maybe_suicide (<)
07:51:31 <EgoBot> ​Score for Lymia_maybe_suicide: 3.6
07:51:34 <Lymia> Ah
07:51:40 <fizzie> Missing repeat count is taken as zero.
07:51:44 <fizzie> So that's just "".
07:51:47 <Fiora> how is < suicide?
07:51:56 <fizzie> Running off the tape?
07:52:02 <Fiora> oh. I thought it wrapped?
07:52:05 <fizzie> Much like (>)*30 is a suicide, except slower.
07:52:09 <Lymia> Because the only thing in the < direction is death
07:52:11 <Fiora> ohhhh
07:52:31 <fizzie> It's an instant lose, too, not a two-cycle thing like the flag-at-zero.
07:52:43 <fizzie> (Well, or instant die if the opponent suicides on the same cycle.)
07:52:46 <fizzie> s/die/tie/
07:52:52 <Fiora> ((>>-[-[-[-]+]++])(<-[-[-[-]+]++]))*-1
07:53:00 <Lymia> That's just .
07:53:38 <Fiora> er
07:53:42 * Lymia is running her evolver in "closed loop" mode.
07:53:43 <Fiora> !bfjoust test ((>>-[-[-[-]+]++])(<-[-[-[-]+]++]))*-1
07:53:47 <Lymia> No external hill :p
07:53:53 <Fiora> how... how is that . O_O
07:53:55 <EgoBot> ​Score for Fiora_test: 3.6
07:53:59 <Lymia> Let's see what it produces in, like, 30 hours
07:54:05 <fizzie> Fiora: Because a missing repeat count for () is taken as zero, as said.
07:54:09 <Fiora> ohhhhhhh
07:54:17 <Fiora> (>>-[-[-[-]+]++]<-[-[-[-]+]++])*-1
07:54:24 <Fiora> I am bad at this, sorry
07:54:42 <Fiora> erm aksjdlfkl forgot to put bfjous
07:54:51 <Fiora> !bfjoust test (>>-[-[-[-]+]++]<-[-[-[-]+]++])*-1
07:54:58 <EgoBot> ​Score for Fiora_test: 1.0
07:55:06 <Fiora> wow, even worse? <_>
07:55:08 <Lymia> That is the lowest non-zero score I've ever seen
07:55:24 <Fiora> am I so bad that I like, transcend awfulness
07:55:28 <Deewiant> Once again you're likely to run off the tape with that blind >>
07:55:35 <Deewiant> I'm pretty sure I've seen 0.6 or something
07:55:42 <Lymia> ((.)*4>)*-1
07:55:46 <Lymia> !bfjoust slow-death ((.)*4>)*-1
07:55:50 <EgoBot> ​Score for Lymia_slow-death: 2.0
07:55:54 <Lymia> !bfjoust slow-death ((.)*5>)*-1
07:55:57 <EgoBot> ​Score for Lymia_slow-death: 2.4
07:55:58 <Fiora> how can it run off the tape if I'm always heading towards my opponent?
07:55:59 <Lymia> !bfjoust slow-death ((.)*6>)*-1
07:56:03 <Lymia> !bfjoust slow-death ((.)*2>)*-1
07:56:03 <EgoBot> ​Score for Lymia_slow-death: 2.4
07:56:06 <EgoBot> ​Score for Lymia_slow-death: 1.1
07:56:07 <fizzie> Deewiant: <EgoBot> Score for ehird_shade_needs_to_get_laid: 0.1
07:56:08 <Deewiant> Fiora: You can run off the opponent's edge
07:56:12 <Lymia> !bfjoust slow-death (.>)*-1
07:56:16 <EgoBot> ​Score for Lymia_slow-death: 1.1
07:56:18 <Deewiant> fizzie: Excellent
07:56:19 <Fiora> but... that means the opponent is already off the edge... right?
07:56:20 <Lymia> fizzie, what's the code for that?
07:56:27 <Fiora> if I'm heading towards them...
07:56:35 <Lymia> Fiora, the heads don't interact
07:56:37 <Deewiant> Fiora: No? You have a tape like A.........B with A being where you start and B where the opponent starts
07:56:38 <Lymia> Except via values on the tape
07:56:46 <Fiora> oh.... so > is towards the opponent's flag. not towards the opponent (?)
07:56:51 <Deewiant> Fiora: Yes
07:56:53 <Fiora> ohhhhhhhhhhhh
07:56:55 <fizzie> Lymia: Actually... it was a "<".
07:56:58 <Deewiant> Fiora: You don't know where the opponent is
07:57:00 <Lymia> fizzie, ...
07:57:04 <Fiora> that makes more sense
07:57:06 <fizzie> I have no idea how < got 0.1 there.
07:57:11 <Lymia> !bfjoust slow-death ()*300(>)*-1
07:57:14 <fizzie> But this was in 2009, things were different then.
07:57:17 <Lymia> !bfjoust slow-death (.)*300(>)*-1
07:57:17 <EgoBot> ​Score for Lymia_slow-death: 0.0
07:57:20 <EgoBot> ​Score for Lymia_slow-death: 2.4
07:57:21 <Deewiant> fizzie: With more than one < on the hill?
07:57:26 <Lymia> !bfjoust slow-death (.)*200(>)*-1
07:57:29 <EgoBot> ​Score for Lymia_slow-death: 2.4
07:57:33 <Lymia> !bfjoust slow-death (.)*100(>)*-1
07:57:37 <EgoBot> ​Score for Lymia_slow-death: 2.4
07:57:42 <Lymia> !bfjoust slow-death (.)*130(>)*-1
07:57:45 <EgoBot> ​Score for Lymia_slow-death: 2.4
07:57:50 <Lymia> :(
07:57:53 <fizzie> Deewiant: It would tie against all the other <'s, and get 0 points from them, I'd think.
07:57:57 <Lymia> !bfjoust slow-death >+>+(.)*130(>)*-1
07:58:00 <EgoBot> ​Score for Lymia_slow-death: 0.0
07:58:05 <Lymia> !bfjoust slow-death >+>+(.)*50(>)*-1
07:58:08 <EgoBot> ​Score for Lymia_slow-death: 0.0
07:58:12 <Fiora> !bfjoust test (>-[-[-[-]+]++])*-1
07:58:16 <Lymia> !bfjoust slow-death >+>+(.)*200(>)*-1
07:58:21 <EgoBot> ​Score for Lymia_slow-death: 0.0
07:58:21 <EgoBot> ​Score for Fiora_test: 3.2
07:58:31 <fizzie> !bfjoust mroman_decoy_got_zero_point_one_in_july_2012 [>->+>->+<<<<]
07:58:32 <Lymia> !bfjoust slow-death >+>+(.)*50(>[-])*-1
07:58:36 <EgoBot> ​Score for fizzie_mroman_decoy_got_zero_point_one_in_july_2012: 0.1
07:58:36 <EgoBot> ​Score for Lymia_slow-death: 9.1
07:58:41 <fizzie> Ha, and still does.
07:58:52 <Lymia> fizzie wins :p
07:59:01 <fizzie> Well, mroman wins.
07:59:09 <Fiora> !bfjoust test (>-[-[-[-]-]-])*-1
07:59:15 <fizzie> Also, he produced six consecutive 0.1's there.
07:59:23 <EgoBot> ​Score for Fiora_test: 4.0
07:59:44 <Fiora> !bfjoust test (>-[-[-[-]]-]-)*-1
07:59:46 <Lymia> !bfjoust lets-not-suck-/as/-badly? [>->+>->+<<<<[+]+]
07:59:52 <EgoBot> ​Score for Fiora_test: 3.9
07:59:55 <EgoBot> ​Score for Lymia_lets-not-suck-_as_-badly_: 3.5
08:00:08 -!- epicmonkey has quit (Ping timeout: 258 seconds).
08:01:59 <Fiora> !bfjoust test (>-----)*9(>[-[-[-]])*-1
08:02:03 <EgoBot> ​Score for Fiora_test: 0.0
08:02:12 <Fiora> !bfjoust test (>-----)*9(>[-[-[-]]])*-1
08:02:15 <EgoBot> ​Score for Fiora_test: 15.1
08:02:19 <Fiora> wow
08:02:22 <Lymia> !bfjoust self-evolving :->.>-+<-->->.>-+<-->->.>-+<-->->.>-+<-->->.>-+<-->->.>-+<-->
08:02:28 <EgoBot> ​Score for Lymia_self-evolving: 0.0
08:02:30 <Fiora> is 15.1 good
08:02:35 <Lymia> I'm not sure what it actually does.
08:02:43 <Lymia> But it's the best in generation 6
08:02:45 <Lymia> With no hill input
08:02:52 <Deewiant> Fiora: http://codu.org/eso/bfjoust/report.txt
08:02:55 <Lymia> I hope it learns to rush soon
08:03:18 -!- pikhq has joined.
08:03:20 <Fiora> what's the difference between score and points?
08:03:23 <Deewiant> Gregor: Could we get a "program size" column there
08:03:26 <Fiora> and um, why the dropoff between 17.45 and0.00?
08:03:35 <Deewiant> Fiora: Because the hill has a maximum size
08:03:42 <Fiora> hill?
08:03:49 -!- pikhq_ has quit (Ping timeout: 256 seconds).
08:03:53 <Deewiant> Fiora: The set of programs
08:03:56 <Fiora> ohh
08:03:59 <Deewiant> Fiora: And their scores, and the whole thing.
08:04:12 <Fiora> what's the reason the 0.00 program is included?
08:04:36 <Fiora> !bfjoust test (>-----)*9(>[-[-[-]]]--)*-1
08:04:40 <EgoBot> ​Score for Fiora_test: 15.8
08:04:53 <Fiora> !bfjoust test (>-----)*9(>[-[-[-]]]-----)*-1
08:04:53 <Deewiant> Fiora: The latest run is always included as the last one
08:04:56 <Fiora> ahhhh
08:04:57 <EgoBot> ​Score for Fiora_test: 14.0
08:05:18 <Deewiant> Fiora: See also http://codu.org/eso/bfjoust/breakdown.txt
08:05:28 <Fiora> that is really cool
08:05:38 -!- ThatOtherPerson has joined.
08:05:45 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[-]]]--)*-1
08:05:53 -!- aloril has joined.
08:05:54 <EgoBot> ​Score for Fiora_test: 17.2
08:06:02 <Fiora> I'm on the liiist!!
08:06:08 <Deewiant> Fiora: There was also some javascript thing with more accurate comparison but I can't find the URL in my browser history, it's probably in the wiki
08:06:11 <Fiora> !bfjoust test (>---->++++)*4(>[-[-[-]]]--)*-1
08:06:17 <EgoBot> ​Score for Fiora_test: 16.4
08:06:20 <Fiora> !bfjoust test (>------>++++++)*4(>[-[-[-]]]--)*-1
08:06:25 <Fiora> !bfjoust test (>------->+++++++)*4(>[-[-[-]]]--)*-1
08:06:25 <Lymia> Fitness hovering around -2200
08:06:28 <Lymia> Still no rushes, I presume
08:06:28 <EgoBot> ​Score for Fiora_test: 16.7
08:06:29 <EgoBot> ​Score for Fiora_test: 16.7
08:06:41 <Fiora> !bfjoust test (>------->+++++++)*4(>[-[-[-]]]--)*-1
08:06:42 <Lymia> The best does nothing again.
08:06:43 <Lymia> Great
08:06:46 <EgoBot> ​Score for Fiora_test: 16.7
08:07:06 <Lymia> It'll be a while before an effective rush... v.v;
08:08:08 <Deewiant> Fiora: Re. "is 15.1 good", this is why I asked for a program size column: I think the point where most programs start to be machine-generated is currently around score 37 and up
08:08:30 <Fiora> so they're like made via a search algorithm?
08:08:35 <Lymia> Deewiant, does evolutionary algorithm'd count as "machine generated"? :p
08:08:35 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[-]]]-->[-[-[-]]]++)*-1
08:08:40 <Deewiant> Lymia: Yes
08:08:40 <EgoBot> ​Score for Fiora_test: 16.2
08:09:02 <Deewiant> Fiora: I'm not sure, ask quintopia and ais523 about this stuff
08:09:05 * Lymia had a weird idea
08:09:08 <Deewiant> Fiora: And/or see the wiki
08:09:16 <elliott> the autogenerated ones are basically repeating simple patterns
08:09:20 <elliott> i.e., the work is still mostly human
08:09:28 <elliott> except for some of them i guess (gregor's?)
08:09:45 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[-]]]]]--)*-1
08:09:49 <EgoBot> ​Score for Fiora_test: 19.2
08:09:50 <Deewiant> My stuff is all super-simple IMO and their highest is up at 28, you should be able to get thereabouts without having to think too much
08:10:27 * Lymia goes evolve an ais523_omnipotence killer
08:10:40 <Deewiant> 37 just basically seems like the current cutoff point past where you can't send it as a !bfjoust one-liner :-P
08:10:43 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[+[+[--------[-[-[-[-]]]]]]]]]]]]--)*-1
08:10:47 <EgoBot> ​Score for Fiora_test: 0.0
08:10:49 <Deewiant> Although there might be some smaller ones up above, I didn't check them all.
08:10:58 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[+[+[--------[-[-[-[-]]]]]]]]]]]--)*-1
08:11:02 <EgoBot> ​Score for Fiora_test: 18.0
08:11:12 <Lymia> !bfjoust evolved_anti_omnipotence http://files.lymiahugs.com/best-3495-1964.bfjoust
08:11:17 <elliott> i'd like to see a Deewiant program at #1
08:11:18 <EgoBot> ​Score for Lymia_evolved_anti_omnipotence: 17.5
08:11:40 <Deewiant> behemoth is only 199 bytes and has 50 score, so I guess getting high with something small is still doable
08:11:43 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[+[-]]]]]]--)*-1
08:11:45 <Deewiant> elliott: Allegro was #1 at some point
08:11:48 <EgoBot> ​Score for Fiora_test: 17.3
08:11:52 <Lymia> Lymia_evolved_anti_omnipotence.bfjoust vs ais523_omnipotence.bfjoust
08:11:52 <Lymia> >>>><><>>><><><><<>>< ><>><>>><>>><<>>>>>>< -14
08:11:52 <Lymia> Lymia_evolved_anti_omnipotence.bfjoust wins.
08:11:52 <Lymia> :p
08:12:03 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[-]]]]].--)*-1
08:12:06 <EgoBot> ​Score for Fiora_test: 18.6
08:12:07 <Deewiant> elliott: And maybe Pendolino before that? Or maybe only Pendolino ever was.
08:12:11 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[-].]]]]--)*-1
08:12:12 <elliott> I mean on a current hill
08:12:15 <EgoBot> ​Score for Fiora_test: 18.7
08:12:18 <elliott> since that was before space_elevator I think
08:12:23 <elliott> which started the huge program craze
08:12:25 <Deewiant> Yeah it was.
08:12:40 -!- ThatOtherPerson has quit (Quit: Leaving).
08:12:47 <Deewiant> elliott: I think quintopia_poke was #1 at some point, and it's not very different from my stuff IIRC.
08:12:59 <Fiora> I'm a little confused, without that ".", wouldn't my program run off the end the turn after zeroing the flag?
08:13:28 <Deewiant> This poke is bigger than I remember, though... oh well.
08:13:38 <Lymia> Fiora, ] takes up a cycle
08:13:57 <Fiora> oooh
08:13:59 <Deewiant> ISTR some pretty small and simple program being on top post-space_elevator.
08:14:22 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[-][--]]]]]--)*-1
08:14:27 <EgoBot> ​Score for Fiora_test: 19.2
08:14:34 <Lymia> lymia@infel:~/programming/bfjoust-evo$ ls hill
08:14:34 <Lymia> ais523_anticipation2.bfjoust ais523_omnipotence.bfjoust quintopia_space_hotel.bfjoust
08:14:37 <Lymia> Let's see if this works :p
08:15:23 <Lymia> ... wait
08:15:24 <Lymia> Did it just
08:15:26 <Lymia> Learn to set decoys
08:15:29 -!- pikhq_ has joined.
08:15:36 <Lymia> This is the first time I've seen a best program involving pointer movement
08:15:41 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[-.-.-.]]]]]--)*-1
08:15:42 -!- pikhq has quit (Ping timeout: 264 seconds).
08:15:43 <Deewiant> Lymia: Your "anti_omnipotence" loses against omnipotence :-P
08:15:44 <EgoBot> ​Score for Fiora_test: 30.2
08:15:47 <Fiora> @_______@
08:15:48 <lambdabot> Unknown command, try @list
08:15:49 <Fiora> How
08:15:52 <Fiora> 19.2 to 30.2
08:15:52 <Deewiant> Fiora: There ya go
08:16:03 <Fiora> okay I should give this a name then
08:16:05 <Lymia> Deewiant, no, no.
08:16:07 <Lymia> The point is.
08:16:12 <Lymia> To evolve it with only the targets on the hill
08:16:18 <Lymia> To try and beat only them :p
08:16:22 <Fiora> !bfjoust timestopping-mahou-shoujo (>----->+++++)*4(>[-[-[+++[+[-.-.-.]]]]]--)*-1
08:16:26 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 29.0
08:16:38 <Fiora> oh, it played against my old one, how do I remove my old one?
08:16:39 <Deewiant> Fiora: Replace test with < to get it off the hill
08:16:44 <Fiora> ah!
08:16:49 <Fiora> !bfjoust test <
08:16:52 <EgoBot> ​Score for Fiora_test: 0.0
08:16:52 <Deewiant> Fiora: Or your crappy program of choice
08:17:14 <Deewiant> Lymia: I just figured that if it's been evolved against omnipotence it'd at least beat it before you submit it :-P
08:17:18 <Lymia> !bfjoust crappy >+<(.)*10
08:17:22 <EgoBot> ​Score for Lymia_crappy: 1.1
08:17:28 <Fiora> !bfjoust timestopping-mahou-shoujo (>----->+++++)*4(>[-[-[+++[+[--.-.-.]]]]]--)*-1
08:17:32 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 12.6
08:17:36 <Lymia> !bfjoust crappy >+>+<<(.)*10
08:17:37 <Fiora> !bfjoust timestopping-mahou-shoujo (>----->+++++)*4(>[-[-[+++[+[-.-.-.]]]]]--)*-1
08:17:39 <EgoBot> ​Score for Lymia_crappy: 0.1
08:17:41 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 29.2
08:17:42 <Lymia> Ha!
08:17:43 <Lymia> I got 0.1
08:18:15 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[(-.)*-1]]]]]--)*-1
08:18:18 <EgoBot> ​Score for Fiora_test: 12.0
08:18:24 <Lymia> Deewiant, I gave up making it better.
08:18:30 <Fiora> oh that doesn't work no wonder <.<
08:18:33 <Lymia> Since it was a vibrator
08:18:35 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[-.-.]]]]]--)*-1
08:18:39 <EgoBot> ​Score for Fiora_test: 23.0
08:18:39 <Lymia> It didn't learn anything interesting
08:18:45 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[-.-.-.-.]]]]]--)*-1
08:18:48 <EgoBot> ​Score for Fiora_test: 20.7
08:18:58 <Fiora> o_O exactly 3 repetitions of that works well...?
08:19:24 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[-.-.-.]]]--)*-1
08:19:27 <EgoBot> ​Score for Fiora_test: 24.0
08:19:37 <Deewiant> Fiora: This is called fine-tuning to beat the current hill
08:19:47 <Fiora> ah
08:19:48 <Deewiant> Fiora: As programs change, other constants might work better
08:19:48 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[+.+.+.+.]]]]]--)*-1
08:19:52 <EgoBot> ​Score for Fiora_test: 20.7
08:19:56 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[+.+.+.]]]]]--)*-1
08:19:59 <EgoBot> ​Score for Fiora_test: 25.2
08:20:15 <Fiora> !bfjoust test (>----->+++++)*4(>[-[-[+++[+[+.]]]]]--)*-1
08:20:18 <EgoBot> ​Score for Fiora_test: 22.7
08:20:34 <Deewiant> Maybe there's some "overall optimal" choice but with the relatively small hill I don't think you can make any deep inferences from seeing that some number is better than another
08:21:39 <elliott> there should just be syntax for optimising constants
08:21:53 <elliott> like you put (+.)*? and the hill picks the best value of ?
08:22:01 <elliott> and whenever new programs come in that ? gets recalculated
08:22:41 <Deewiant> That's a lot of work for 48 programs probably with an average of at least 5 ?'s
08:22:58 <Deewiant> Plus there's probably not a stable solution
08:23:03 <elliott> well I know ais has an optimiser thingy that does this
08:23:10 <elliott> it'd either have to be heuristic or very cleve
08:23:10 <elliott> r
08:23:16 <elliott> very clever = avoids actually trying ?s somehow
08:23:17 <Deewiant> You optimize program 1 then program 2, then you need to optimize 1 again etc
08:23:25 <elliott> and instead works out the execution path of what the optimal choice would be
08:23:28 <elliott> "somehow"
08:23:37 <elliott> Deewiant: um sounds like you're not being smart enough
08:23:52 <Lymia> Run an evolutionary algorithm for a few cycles?
08:23:54 <Lymia> Start with random values.
08:24:04 <Lymia> Do itertations where you make, like, 20 mutated copies with different ? values.
08:24:13 <Lymia> Then, just take the best of each program and post those as the scores.
08:24:16 <Fiora> !bfjoust timestopping-mahou-shoujo !bfjoust test >------>++++++>---->++++>--->+++>--->+++(>[-[-[+++[+[-.-.-.]]]]]--)*-1
08:24:19 <Fiora> er askjdfl
08:24:20 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 32.6
08:24:22 <Deewiant> elliott: Well if you really want "optimal" I don't see another option
08:24:28 <Lymia> It's not optimal, but.
08:24:34 <Deewiant> Of course you can use heuristics like Lymia suggested
08:24:46 <Deewiant> And it'd probably be better than the current manual guessing
08:24:47 <elliott> Deewiant: maybe you don't see it because you don't have a phd in bf joust???????
08:24:48 <Lymia> Or, if you want to be sophistcated.
08:24:57 <Deewiant> elliott: Maybe
08:25:03 <Lymia> Run it "until the hill is stable"
08:25:16 <Deewiant> Lymia: Which can mean "forever"
08:25:26 <elliott> Deewiant: I am thinking you could avoid the no-stable-solutiont hing with something like quintopia's scoring system
08:25:32 <elliott> ^^ HIGHLY SPECIFIC INFO
08:25:39 <Deewiant> elliott: What's quintopia's scoring system
08:25:51 <Sgeo> o.O http://www.killtheapostrophe.com/
08:25:52 <elliott> Deewiant: well you know the current scoring system
08:25:58 <Deewiant> elliott: Not really but go on
08:26:09 <elliott> Deewiant: where you get assigned weighted score based on how you beat programs based on their points
08:26:13 <elliott> as in, more score for beating a program with high points
08:26:16 <elliott> points = just standard wins - losses
08:26:26 <elliott> so beating a better program (in terms of wins - losses) is more valuable
08:26:30 <Deewiant> elliott: Yes OK I figured it was something like that
08:26:35 <elliott> quintopia's scoring system just takes the fixed point of that
08:26:57 <Deewiant> Hmm
08:26:58 <elliott> is the wiki down ors omething i was trying to find his explanation of it
08:27:08 <elliott> can anyone access http://esolangs.org/
08:27:14 <Deewiant> I can access it fine
08:27:20 <elliott> okay well it is on the talk page of the brainfuck joust article
08:27:21 <elliott> hope this helps
08:27:28 <elliott> oh suddenly it works for me
08:27:32 <elliott> http://esolangs.org/wiki/Talk:BF_Joust#Scoring
08:28:04 <Deewiant> Hmm, sprunge links are broken
08:28:11 <Deewiant> I didn't know that was possible
08:29:11 <elliott> yeah they expire
08:29:13 <elliott> but that section is irrelevant
08:29:15 <elliott> the last one I mean
08:29:40 <Deewiant> Yeah I was just interested
08:30:09 <elliott> anyway I could imagine some sufficiently smart algorithm that takes a heap with these ? holes and calculates what the results are assuming everyone got "optimal ?s"
08:30:16 <elliott> without actually figuring out values for them
08:30:27 <elliott> though maybe that algorithm would be uncomputable
08:30:30 <Deewiant> :-D
08:30:36 <Fiora> !bfjoust timestopping-mahou-shoujo >---->++++++>---->++++>--->+++>--->+++(>[-[-[+++[+[-.-.-.]]]]]--)*-1
08:30:39 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 31.8
08:30:52 <Deewiant> I believe the term "algorithm" implies computability
08:31:23 <Deewiant> And if not then I take it to anyway when I say that I can't imagine such a thing, or at least have no idea how it could work
08:31:52 <elliott> Deewiant: anything you can write steps for is an algorithm, even if one of those steps is "figure out if the program halts" or "decide if these two functions are equal"
08:32:18 <elliott> qed™
08:32:33 <Fiora> !bfjoust timestopping-mahou-shoujo >---->++++++>---->++++>--->+++>--->+++>---(>[-[-[+++[+[-.-.-.]]]]]--)*-1
08:32:37 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 32.1
08:32:38 <elliott> it's even more fun if you imagine allowing people to do (a{b}c)%?
08:32:53 <Deewiant> I imagined that we would be allowing that
08:42:05 -!- Deewiant has quit (Quit: Viivan loppu.).
08:42:38 -!- Deewiant has joined.
08:48:58 <Lymia> ... classy
08:49:01 <Lymia> My evolver just generated
08:49:04 <Lymia> (-)*3907
08:49:27 <elliott> good program
08:49:41 <elliott> Deewiant: does viivan loppu mean goodbye in finnish
08:49:59 <Fiora> !bfjoust timestopping-mahou-shoujo >---->++++++>---->---->+++>--->--->+++>---(>[-[-[+++[+[-.-.-.]]]]]++>[-[-[+++[+[-.-.-.]]]]]--)*2(>[-[-[+++[+[-.-.-.]]]]]--)*-1
08:50:02 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 34.2
08:50:15 <Fiora> I'm number... 16, yay
08:50:42 <elliott> wow nice
08:50:42 <Deewiant> elliott: It's a literal translation of "end of line"
08:51:05 <Deewiant> Interesting that I did a proper quit, what I actually did was send SIGKILL...
08:51:13 <Fiora> my program is a total jerk with its alternating decoys
08:51:19 <Deewiant> Maybe the sigterm went through and did something
08:51:33 <Fiora> if that's what they're called
08:52:01 <Lymia> I wonder if I can translate that program into a form my evolver understands
08:52:07 <Lymia> To find the true optimum ;P
08:52:33 <Fiora> I was kinda doing a greedy search with jumping
08:52:36 <Fiora> ... by hand I guess <.<
08:53:09 <Fiora> I can't figure out why the "-.-.-." sequence is so critical
08:53:17 <Fiora> if I touch that, even dropping the last ., it massively drops in score
08:53:36 <elliott> Fiora: have you seen egojsout?
08:53:40 <elliott> it is very useful for "debugging" this kind of stuff
08:53:44 <Lymia> This is interesting
08:53:48 <Deewiant> Ah right, that's what I was looking for
08:53:48 <Fiora> egojsout? @_@
08:54:01 <Deewiant> Fiora: http://codu.org/eso/bfjoust/egojsout/index.php
08:54:03 <Lymia> A few programs in my population retain the gene responsible for >stuff< patterns
08:54:16 <Lymia> If I got speciation actually /working right/
08:54:18 <Lymia> This might be useful >_<
08:54:24 <Deewiant> Fiora: Also, compare the breakdown.txts from with the . and without
08:54:38 <Fiora> ooh
08:54:47 <Deewiant> Fiora: It might just be a subtle timing thing that happens to work well against some high-score programs
08:55:31 <Fiora> what does the output of that thing mean?
08:55:36 <Fiora> I see a bunch of <>>>>>>>>>>>
08:56:23 <Fiora> ohhh it's the different tests
08:56:26 <Deewiant> <> tells you which program won, I'm not sure which is which
08:56:32 <Lymia> !bfjoust combination http://files.lymiahugs.com/best-7980-9368.bfjoust
08:56:35 <EgoBot> ​Score for Lymia_combination: 6.9
08:56:36 <Deewiant> There's many of them because it's for each polarity and tape length
08:56:49 <Deewiant> Polarity = swapping + and - or not
08:57:04 <Fiora> huh, mine beats space hotel on a few smaller tape sizes
08:57:24 <Deewiant> I think that's typical with the big lock-type programs (not that I know whether space_hotel is such)
08:57:44 <elliott> PSA: the polarity where + adds is sieve. the polarity where - adds is kettle.
08:57:45 <Deewiant> They take some time to set up their stuff so they lose to fast rushers
08:58:03 <Deewiant> elliott: I was going to say "I think elliott made up some stupid names for them" but I figured you'd just tell them anyway
08:58:07 <Fiora> elliott: oooh it reverses those
08:58:25 <elliott> Deewiant: you're saying you have better names?????
08:59:26 <Deewiant> elliott: ISTR "positive" and "negative" even having been in use for some time before you decided to push through this INTERCAL-esque naming scheme
08:59:26 <Lymia> positive and negative
08:59:48 <Lymia> We're in agreement then~
09:00:13 <Deewiant> I don't really care since one doesn't usually talk about them
09:00:58 <elliott> Deewiant: IIRC I invented the names right as the polarity thing was first mentioned
09:01:04 <elliott> possibly I even first mentionedi t?
09:01:27 <Deewiant> Could be, maybe I just heard about them later
09:01:44 <Deewiant> Possibly because everyone was using positive/negative despite your protests
09:01:49 <Fiora> ..... wow, space hotel is a jerk
09:01:55 <Fiora> it runs back to defend its flag
09:02:06 <Fiora> what a meaniepants, actually trying to stop me :<
09:02:07 <Deewiant> Fiora: You can see everybody's source at http://codu.org/eso/bfjoust/in_egobot/ btw
09:02:20 <Deewiant> space_hotel seems to be the biggest
09:02:37 <Lymia> .>+<[activation = 0.0000 + 1.0000*a = 0.0000 + 1.0000*b = 0.0000 + 1.0000*c]--..>+
09:02:54 <Deewiant> Why hasn't anybody made a proper front page for this that links to everything useful :-P
09:02:59 <Lymia> I guess this means it's chosen to make a rush?
09:04:14 -!- epicmonkey has joined.
09:04:21 <Lymia> Speciation went crazy again
09:04:22 <Lymia> Great
09:04:29 <Lymia> I wish I knew how to fix it..
09:06:57 <Lymia> !bfjoust its-not-a-vibrator!!! .>+<[.>+<[.>+<[.>+<[.>+<[]--..>+]--..>+].>+<[]--..>+--..>+].>+<[.>+<[]--..>+]--..>+--..>+].>+<[.>+<[.>+<[]--..>+]--..>+].>+<[]--..>+--..>+--..>+
09:07:01 <EgoBot> ​Score for Lymia_its-not-a-vibrator___: 5.6
09:07:53 <fizzie> That's a funny, in X you can XStoreName (set the window title) someone else's window.
09:08:52 <elliott> fizzie: well you can also just log every key right
09:08:53 <elliott> what's security
09:10:08 <Fiora> is -*3 not the same as (-)*3?
09:10:55 <elliott> -*3 isn't valid, I don't think
09:10:59 <Fiora> ah
09:12:49 <fizzie> * needs the parentheses.
09:12:55 <fizzie> (As does %, for that matter.)
09:12:59 <Fiora> what does % do?
09:13:10 <elliott> (a{b}c)%n is like (a)*nb(c)*n
09:13:12 <elliott> but with nesting
09:13:25 <elliott> (a[b{c}d]e)%3 = a[ba[ba[bcd]ed]ed]e
09:13:28 <Lymia> Welp.
09:13:33 <Fiora> oooh, that's really nice
09:13:36 <Lymia> My evolutionary algorithm is smarter than me...
09:13:43 <Lymia> Empty genes caused 1.0/0.0
09:13:45 <Lymia> Which is NaN...
09:13:53 <Lymia> Which caused an explosion of species and exponential empty genes
09:13:54 <Lymia> urgh
09:14:41 <fizzie> And (a[b)*3c(d]e)*3 isn't legal, IIRC, even though it technically could be.
09:17:14 <Lymia> OK.
09:17:25 <Lymia> The "-.+" motif is appearing way too commonly to be a coincidence
09:17:45 <Lymia> !bfjoust vibrator (-.+.)*-1
09:18:05 <EgoBot> ​Score for Lymia_vibrator: 6.3
09:18:23 <elliott> fizzie: people did that originally which was why % was added
09:19:49 -!- monqy has quit (Quit: hello).
09:29:12 <Lymia> What's the maximum possible score for a bot?
09:29:20 <Lymia> program*
09:29:22 <Lymia> whatever
09:32:19 <elliott> 100, theoretically
09:34:00 <fizzie> The technical term is "enemy combatant", I think.
09:44:36 <Fiora> !bfjoust timestopping-mahou-shoujo >---->++++++>---->---->+++>--->--->+++>-[-[-(<)*9(+)*50(>)*9(>[-[-[+++[+[---[-.-.-.]]]]]]--)*-1]](>[-[-[+++[+[---[-.-.-.]]]]]]--)*-1
09:44:40 <Fiora> the best I found :<
09:44:41 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 34.9
09:45:51 <Fiora> I can see why space hotel is so good, there's a lot of control flow things that it feels like I could only do with massive crazy manual code duplication
09:47:07 <Lymia> !bfjoust only-loses-5-cases-versus-omnipotence http://files.lymiahugs.com/best-23235-29652.bfjoust
09:47:16 <EgoBot> ​Score for Lymia_only-loses-5-cases-versus-omnipotence: 17.4
09:47:26 <Fiora> o_O
09:47:49 <Fiora> that is, wow :o
09:47:54 <Fiora> that's so cool.
09:48:12 * Fiora tries it against hers.
09:48:35 <Lymia> :p
09:48:48 <Lymia> Targeted "beat this program" works well >_>
09:49:26 <Fiora> ... mine got a lot better when I fixed my off by one error ~_~
09:49:32 <Fiora> it was always losing on tape length 10
09:49:35 <Fiora> !bfjoust timestopping-mahou-shoujo >---->++++++>---->---->+++>--->--->-[-[-(<)*8(+)*50(>)*8(>[-[-[+++[+[---[-.-.-.]]]]]]--)*-1]](>[-[-[+++[+[---[-.-.-.]]]]]]--)*-1
09:49:38 <EgoBot> ​Score for Fiora_timestopping-mahou-shoujo: 37.6
09:49:55 <Fiora> I'm number 10~~~
09:49:59 <Lymia> Hmm...
09:50:46 <Fiora> but wow. to beat the top one with a generated program O_O
09:51:20 <elliott> I think for any BF Joust program p you can compute ~p that always wins against p
09:51:24 <elliott> though of course I have no idea how to construct it
09:52:46 <Lymia> If you can actually compute ~p
09:52:55 <Lymia> With something other than an exaustive search
09:53:05 <Lymia> I'd be shocked
09:53:46 <fizzie> You can compute it with the same "graduate student algorithm" that's used for fractal compression.
09:53:52 <Fiora> wow. mine beats omnipotence every time (?????)
09:54:18 <Fiora> does omnipotence suffer the problem of being tuned entirely to beat other ones on the list? <.<
09:54:29 <Lymia> Maybe.
09:55:34 <Fiora> um. what's the difference between points and score?
09:56:06 <fizzie> Points are wins - losses.
09:56:07 <elliott> I wouldn't be shocked... mumble mumble symmetry
09:56:11 <fizzie> Score is the weighted sum.
09:56:17 <elliott> of course ~p will be highly specialised.
09:56:27 <elliott> i.e. it'll probably suck against all things that aren't p, and even slightly-modified ~p
09:56:30 <fizzie> Fiora: Do see http://codu.org/eso/bfjoust/SCORES for details, it's not terribly complicated.
09:56:34 <elliott> but in a sense you just have to mimic the opposite of what p is doing.
09:56:42 <Lymia> Well...
09:56:43 <Lymia> I suppose
09:56:56 <Lymia> Since programs tend to be deterministic...
09:57:15 <Lymia> You might be able to do a backtracking search of the action pattern you "want" to beat the other bot, or something.
09:57:33 <Fiora> ahhhh. so mine has a high score because it beats some relatively good programs, like omnipotence
09:57:38 <Lymia> But, if you can do that accounting for all tape lengths.
09:57:39 <Fiora> but it has low points because it doesn't really win that often overall
09:58:04 <Lymia> You can do that accounting for two different program's actions, right?
09:58:22 <Lymia> So, if you can compute ~p reasonably, you should be able to compute ~(p|q) just as well?
09:58:46 <elliott> that sounds harder.
09:58:53 <elliott> since ~(p|q) doesn't know whether it's competing against p or q
09:58:57 <Fiora> probably at least you could start by just having the heuristic being to beat both instead of one? I mean it's harder, but
09:59:11 <elliott> with ~p, the trick is that it always knows what it's going to happen (for a given tape length/polarity)
09:59:19 <Lymia> Thing is
09:59:20 <Lymia> With ~p
09:59:27 <Lymia> You still have all tape lengths and polarities to deal with
09:59:27 <Fiora> I guess if you were truly terrible you could have a crazy program that knew exactly how the other programs would work and narrowed it down bit by bit as it gained information
09:59:32 <Lymia> If you can beat all of them for an arbitary program
09:59:36 <Fiora> ... but I'd imagine that being. like. megabytes long <.<
09:59:40 <elliott> it's very easy if you restrict it to one tape length/polarity, I think
09:59:44 <elliott> since you know the exact steps p is going to take
09:59:49 <Lymia> Right
09:59:59 <Lymia> If you can solve it for all tape lengths and priorities
10:00:04 <Fiora> the way that adds uncertainty is pretty cool
10:00:05 <Lymia> You can solve it for an arbitary number of programs, I think
10:00:33 <elliott> actually, even the algorithm for a single tape length/polarity would be interesting
10:00:46 <elliott> you can't just rush to it and decrease the flag, because what if it defends the flag?
10:00:52 <elliott> if you counter that, what if it clears yours first? etc.
10:01:04 <Lymia> I think you only need two modes
10:01:17 <Lymia> "Touches their flag" and "Touches your flag"
10:02:13 <fizzie> A program can also go blind if it touches its own flag too much.
10:02:35 <Fiora> with a fixed length and polarity it almost feels like a game of chicken
10:02:49 <Fiora> "who will stop defending their flag first" or so on
10:03:57 <elliott> perhaps you can do some sort of diagonalisation argument that you can't even do ~p for a given tape length or polarity, because there will always be a program that its strategy cannot counter
10:05:27 <Fiora> I think that feels right... from like, an information argument if you know your opponent's program, you know a lot more than it does about yours
10:05:31 <fizzie> What with all this activity, updated http://zem.fi/egostats/ too.
10:05:39 <Fiora> so if you know some program p you should always be able to design something that beats that one program
10:05:44 <Fiora> since that program doesn't know yours
10:06:02 <elliott> hmm, that's actually the opposite of what I just said :P
10:06:06 <elliott> but I agree the information argument is compelling
10:06:11 <Fiora> oh geez, then I totally misunderstood >_<
10:06:38 <elliott> I think that you can construct this ~p for a single tape length/polarity; my previous line was doubting that
10:06:50 <Fiora> ooooh. the statistics are really cool.
10:07:14 <fizzie> The heatmap clustering plot puts only-loses-5-cases-versus-omnipotence really close to ais523_vibration.
10:07:31 <elliott> as in, that you might be able to show for any negating-machine p -> ~p that there is some q such that the ~q its rules produce cannot possibly beat q (because of the nature of its rules), hence contradiction the machine doesn't exist
10:07:39 <elliott> but I don't know at this point. someone should try and write it.
10:08:00 <Fiora> the color bar scale is logarithmic...? but 10^64 cycles kind of sounds like a lot
10:08:21 <Deewiant> Fiora: "Red indicates a win, blue a loss"? What nonsense colouring logic is this
10:08:25 <Deewiant> fizzie: Dammit ^
10:08:27 <Deewiant> Fiora: Ignore
10:08:36 <Fiora> Namespace collision XD
10:08:52 <Fiora> oh nevermind, wrong chart >_<
10:08:59 <Lymia> ...
10:09:15 <elliott> that someone should be Fiora. or Deewiant.
10:09:27 <elliott> or, um. EgoBot.
10:09:31 <Lymia> fizzie, it's an evolved program.
10:09:36 <Lymia> And, at a glance, it's very obviously a vibrator itself
10:09:44 <Fiora> what's a vibrator?
10:09:50 <fizzie> Fiora: Where's 10^64? The general duel length plot's colorbar goes up to 10^6.6 or so.
10:09:55 <Lymia> http://files.lymiahugs.com/best-23235-29652.bfjoust
10:10:11 <fizzie> Deewiant: RED is POWERFUL.
10:10:18 * elliott finds it very hard not to make stupid jokes with the "vibrator" terminology and also kind of hates himself for this
10:10:26 <fizzie> Deewiant: (I don't know.)
10:10:42 <elliott> Fiora: vibrator is http://esolangs.org/wiki/BF_Joust_strategies#Vibrator
10:10:46 <Fiora> fizzie: sorry, I misread the chart >_<
10:11:06 <Deewiant> elliott: For the hardness, the joke, or the terminology's origin or something
10:11:21 <Fiora> ooooh. vibrators try to make the opponent commit suicide
10:11:23 <Fiora> that is evil
10:12:04 <Jafet> It's a hard joke to make
10:12:20 <Fiora> elliott: sorry, I couldn't really think of a better way to say it <_>
10:12:45 <elliott> Deewiant: is "all of the above" an option.
10:12:50 <elliott> hm, (>++>-->-->++)*2((+)*6<(-)*6<(-)*5<(+)*5<)*2--(>(+)*50>(-)*42>(-)*46>(+)*48)*2>>>(([----[+[+[+[+[+[+[+[+[(+)*38[-][+][+--]]>{}]>]]]]]]]]>)%21)*21 was champion in 2013?
10:12:51 <Deewiant> elliott: Sure
10:12:52 <elliott> er, 2012
10:12:54 <elliott> that's refreshingly simple
10:13:02 <Lymia> !bfjoust (>++>-->-->++)*2((+)*6<(-)*6<(-)*5<(+)*5<)*2--(>(+)*50>(-)*42>(-)*46>(+)*48)*2>>>(([----[+[+[+[+[+[+[+[+[(+)*38[-][+][+--]]>{}]>]]]]]]]]>)%21)*21
10:13:03 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
10:13:06 <fizzie> The tape heatmap stuff is perhaps most discriminative of them statistics. Like in the top-7 plot there's some real differences there.
10:13:10 <Lymia> Is that still in the hill?
10:13:14 <elliott> I suspect so
10:13:16 <elliott> it is leviathan
10:14:25 -!- hagb4rd has joined.
10:15:40 <fizzie> Lymia: Your evolved program seems to be particularly sensitive to tape lengths, at least based on http://zem.fi/egostats/plot_p8_pscores.png -- normally it's not quite that... patterned. (Though sometimes it is.)
10:15:56 <elliott> wait, no. fizzie should figure out the ~p for a single tape length & polarity thing.
10:16:18 <fizzie> Nooooo.
10:16:19 <Lymia> fizzie, that's not unexpected.
10:16:24 <Lymia> It's primary motif seems to be
10:16:25 <Lymia> +.-.
10:16:29 <elliott> hm, I guess the question is just "is there an execution trail that beats a given execution trail"
10:16:40 <elliott> you will never need to use control structures or anything
10:16:46 <elliott> and I think the answer to that question is yes obviously
10:16:49 <Lymia> elliott, you will need a potentially exponential search
10:16:53 <elliott> so it's trivial. so fizzie should do it.
10:17:19 <Lymia> elliott, programs can only switch on zero/non-zero, right?
10:17:22 <Lymia> This should be abusable
10:17:31 <elliott> right
10:17:45 <Lymia> Hmm..
10:17:49 <elliott> I guess "execution trail" doesn't quite catch it because you can cause the program to change its control flow as you point out
10:17:52 <elliott> hmmm
10:17:52 <Lymia> There is a tape length where one cannot possibly place decoys, right?
10:18:14 <Sgeo> ┌─┐
10:18:14 <Sgeo> ┴─┴
10:18:14 <Sgeo> ಠ_ರೃ
10:18:18 <Lymia> elliott.
10:18:25 <Lymia> At tape length, uh, 10, you cannot possibly place decoys, right?
10:18:29 <Lymia> Or is there a shorter one like that
10:18:35 <elliott> well, you can do decoys if you want
10:18:42 <elliott> though I doubt they'll be super effective
10:18:50 <Lymia> Possibly place decoys that the enemy can't just skip over :p
10:18:51 <Lymia> I wonder if
10:18:53 <elliott> well I guess a few helps still
10:18:57 <Fiora> elliot used decoy
10:19:01 <Fiora> it's super effective!
10:19:07 <Fiora> lymia's algorithm fainted
10:19:22 <Lymia> (<)*8-[-[(>*8)decoy algorithm](>*8)non-decoy algorithm]
10:19:27 <Lymia> I wonder if that would work well
10:19:31 <Lymia> Erm.
10:19:35 <Lymia> Switch decoy and non-decoy
10:19:48 <fizzie> Anything starting with (<)*8 doesn't sound super effective.
10:19:59 <Lymia> It might be (<)*9 instead?
10:20:12 <fizzie> Anything starting with an unconditional < doesn't sound super effective at all, I mean.
10:20:26 <fizzie> The opponent is > that way.
10:20:31 <Lymia> Ah...
10:20:36 <Lymia> My bad :p
10:20:41 <elliott> should have wrapping tapes
10:20:43 <elliott> what could go wrong??
10:20:51 <Lymia> (>)*8-[-[(<*8)non-decoy algorithm](<*8)decoy algorithm]
10:20:58 <elliott> Fiora: ps here's a supply of ts to write my name with: tttttttt :(
10:21:01 <Fiora> the way I originally (wrongly) interpreted the rules was you started halfway apart
10:21:05 <Fiora> and it wrapped
10:21:09 <fizzie> Current hill on a wrapping tape might be an interesting curiosity.
10:21:11 <Fiora> sorrryyyyy ._.
10:21:12 <Lymia> Eh, not that...
10:21:21 <Fiora> I keep forgetting the Ts and they're only one point anyways
10:21:40 <Lymia> (>)*8[-[(<*8)algorithm]]-(<*8)algorithm
10:21:59 <elliott> i's ok. bu now i have o live wihou ha leer for a week
10:22:20 <Lymia> If it's the shortest tape length, it'll find the flag, and possibly be able to respond to that.
10:22:24 <Lymia> Otherwise, it leaves a small decoy and.. hmm...
10:22:31 <Lymia> Let's try it, I guess!
10:23:13 <Lymia> !bfjoust experiment (>)*8[-[(<)*8[+-.-+]]](-)*4(<)*8[+-.-+>>+<-<]
10:23:19 <EgoBot> ​Score for Lymia_experiment: 1.2
10:23:30 <Lymia> !bfjoust experiment (>)*9[-[(<)*9[+-.-+]]](-)*4(<)*9[+-.-+>>+<-<]
10:23:36 <EgoBot> ​Score for Lymia_experiment: 1.4
10:23:50 <elliott> well that result seems unambiguous
10:23:55 <Lymia> !bfjoust experiment (>)*9[-[(<)*9[[+-.-+]+-.-+]]](-)*4(<)*9[[+-.-+>>+<-<]+]
10:24:00 <EgoBot> ​Score for Lymia_experiment: 0.8
10:24:04 <Lymia> OK, "no" :p
10:24:31 <Lymia> !bfjoust experiment (>)*8[-[(<)*8(+-.-+.)*-1]](-)*8(<)*8(+-.-+.>+<)*-1
10:24:37 <EgoBot> ​Score for Lymia_experiment: 2.7
10:24:54 <Lymia> !bfjoust experiment (>)*8[-[(<)*8(+--+)*-1]](-)*8(<)*8(+--+)*-1
10:24:59 <EgoBot> ​Score for Lymia_experiment: 3.1
10:25:01 <Lymia> Complete inviable. Right.
10:25:52 * Fiora gives elliott back his extra Ts
10:26:07 <Fiora> I don't need them, my name doesn't have a T!
10:26:19 <elliott> gotttta make tthe mostt of tthese
10:26:27 <Lymia> !bfjoust experiment2 (>)* 8(-)*20(<)* 8(+)*20 (>)* 9(-)*20(<)* 9(+)*20 (>)*10(-)*20(<)*10(+)*20 (>)*11(-)*20(<)*11(+)*20 (>)*12(-)*20(<)*12(+)*20 (>)*13(-)*20(<)*13(+)*20 (>)*14(-)*20(<)*14(+)*20 (>)*15(-)*20(<)*15(+)*20 (>)*16(-)*20(<)*16(+)*20 (>)*17(-)*20(<)*17(+)*20 (>)*18(-)*20(<)*18(+)*20 (>)*19(-)*20(<)*19(+)*20 (>)*20(-)*20(<)*20(+)*20
10:26:31 <EgoBot> ​Score for Lymia_experiment2: 5.4
10:26:37 <Lymia> Er, wait
10:26:39 <elliott> fiorat
10:27:27 <Fiora> t has this sharp hard sound, it doesn't fit well :<
10:27:57 <Lymia> !bfjoust experiment2 (>)* 8(-)*20(<)* 8[(.+)*2[(.+)*128]] (>)* 9(-)*20(<)* 9[(.+)*2[(.+)*128]] (>)*10(-)*20(<)*10[(.+)*2[(.+)*128]] (>)*11(-)*20(<)*11[(.+)*2[(.+)*128]] (>)*12(-)*20(<)*12[(.+)*2[(.+)*128]] (>)*13(-)*20(<)*13[(.+)*2[(.+)*128]] (>)*14(-)*20(<)*14[(.+)*2[(.+)*128]] (>)*15(-)*20(<)*15[(.+)*2[(.+)*128]] (>)*16(-)*20(<)*16[(.+)*2[(.+)*128]] (>)*17(-)*20(<)*17[(.+)*2[(.+)*128]] (>)*18(-)*20(<)*18[(.+)*2[(.+)*128]] (>)*19(-)*20(<)*19[(.+)*2
10:27:57 <Lymia> [(.+)*128]] (>)*20(-)*20(<)*20[(.+)*2[(.+)*128]]
10:27:58 <Lymia> ack
10:28:00 <EgoBot> ​Score for Lymia_experiment2: 0.0
10:28:19 <Lymia> !bfjoust experiment2 http://files.lymiahugs.com/experiment2.bfjoust
10:28:26 <EgoBot> ​Score for Lymia_experiment2: 9.2
10:32:28 <Fiora> wow it's like 3 AM
10:32:39 <Fiora> bf jousting is kind of fun
10:33:18 <Lymia> !bfjoust reachbehind (>)*4(+)*10>(-)*10(>)*3(-[-[++>>--<<+>>>--<<<+++++>--<]])*-1
10:33:27 <EgoBot> ​Score for Lymia_reachbehind: 1.0
10:34:19 <Lymia> !bfjoust reachbehind (>)*4(+)*10>(-)*10(>)*3(-[-[+++++[>--<+]++>[>++<-]<+>>[>--<+]<<]])*-1
10:34:30 <EgoBot> ​Score for Lymia_reachbehind: 2.1
10:34:56 <Lymia> fizzie, do you have source and/or binary available for that thing?
10:35:17 <fizzie> Which thing?
10:35:21 <Lymia> The stats thing
10:35:53 <fizzie> It's the "vis" subdirectory in http://git.zem.fi/chainlance/tree but it can be kind of messy to run.
10:36:01 <Lymia> Ah
10:36:09 <fizzie> Also I might not have pushed the very latest, incl. that heatmap stuff
10:36:26 <elliott> Fiora: I think you'll find it's actually 10 am :(
10:37:02 <fizzie> Yes, that is a true, it's not quite currant. And it lacks documentation.
10:37:43 <Lymia> Could you push the heatmaps? :p
10:38:58 <Fiora> I'm sorry for being in california :<
10:38:59 <fizzie> I guess I could see if I fail at git again, yes.
10:39:37 <elliott> Fiora: I agree, everyone whose timezone means they are up at a less ridiculous hour than me must apologise
10:39:46 <elliott> it is only polite.
10:40:25 <Fiora> 10 AM isn't ridiculous is it?
10:41:13 <fizzie> Lymia: I think I did it right.
10:41:32 <elliott> Fiora: it is if you woke up the previous day
10:41:40 <fizzie> It's also incredibly slow.
10:41:46 <Fiora> I don't think I can actually say something negative about that
10:41:57 <Fiora> because like, the few times in my life I've been totally free of day obligations like work and school and things
10:42:02 <Fiora> my sleep schedule naturally reverted to basically that
10:42:15 <Fiora> probably out of instinctual fear of the sun
10:42:16 <elliott> well I should have gone to bed hours ago.
10:42:21 <elliott> but I am terrible.
10:42:21 <Fiora> me too <.<
10:42:25 * Fiora also terrible
10:42:59 <elliott> it's super great how I can only get anything done when it's dark and quiet at night but I feel like crap if I wake up in the dark
10:44:13 <Fiora> I kind of feel the same way, I wish I could spend all day alone and quiet in the dark
10:47:13 <c00kiemon5ter> I wish it was quiet in the day
10:48:08 <Fiora> I use big dorky-looking closed ear headphones at work but it's still not perfect
10:48:15 <Fiora> and they kind of mess up my hair <.<
10:49:09 <fizzie> If you get two eyepatches and use them at work too, maybe it'll be dark.
10:49:25 <elliott> the height of fashion.
10:50:36 <elliott> hmm, something tells me systemd-journal is not supposed to be taking 99% of my CPU.
10:50:41 <elliott> make that 101.2%
10:51:22 <Fiora> but I need to be able to see a screen
10:51:29 <Fiora> and inside it's not too bad ,I mean, at least there isn't any sun
10:51:39 <elliott> put a screen on your eyepatches.
10:51:47 <elliott> it will be like virtual reality. the future
10:52:51 <Fiora> pfff
10:55:10 <Fiora> on that note a warm blanket sounds good right now... I think it's sleep time
10:56:01 <elliott> damn you americans and your still having nighttime to sleep in.
10:57:24 <elliott> fizzie: help I thought I knew git. if git diff --cached foo gives me changes and I don't want them how do I stop that happening.
10:57:29 <elliott> I tried git checkout foo and then git add foo but nothing.
10:57:32 <elliott> Deewiant may also reply.
10:57:37 <elliott> everyone else is forbidden.
10:58:03 * Fiora wanders over to a warm fluffy spot filled with plushies and pillows and dreams
10:58:22 <Deewiant> elliott: git reset
10:58:30 <elliott> Fiora: one day I will sit on my throne of discontent and outlaw sleep.
10:58:37 <Fiora> :<
10:58:43 <Deewiant> elliott: E.g. git reset -p is the opposite of git add -p
10:58:45 <Fiora> only if you make it so I'm never tired okay
10:58:54 <Fiora> cure my constant sleepiness
10:59:02 <elliott> oh, git reset <file> works. but then i need to git checkout <file>.
11:00:18 <Deewiant> elliott: If you want to revert the file contents as well, git reset --hard.
11:00:23 <elliott> oh.
11:00:26 <elliott> that is obvious in retrospect.
11:00:40 -!- oerjan has joined.
11:02:45 <elliott> hi oerjan. you have a fun mathematical puzzle in the logs that is now assigned to you.
11:03:06 <oerjan> AAAAAAAAAA
11:03:18 <elliott> Deewiant: fatal: Cannot do hard reset with paths.
11:03:21 <elliott> Deewiant: i would like a refund
11:03:34 <oerjan> `relcome
11:03:42 <Deewiant> elliott: Dang
11:03:49 <HackEgo> ​/hackenv/bin/relcome: 2: colourise: not found
11:04:04 <oerjan> `run ls bin/col*
11:04:07 <HackEgo> ​/bin/ls: cannot access bin/col*: No such file or directory \ /bin/ls: cannot access bin/col*: No such file or directory
11:04:23 <fizzie> HackEgo: Spelling issues made it into "rainbow", I think.
11:04:28 <fizzie> Er, I mean, oerjan^
11:04:35 <oerjan> oh right
11:04:40 <fizzie> `run echo does it exist | rainbow
11:04:45 <HackEgo> does it exist
11:04:52 <oerjan> `run ls bin/rain*
11:04:54 <HackEgo> bin/rainbow \ bin/rainwords
11:05:14 <oerjan> `run grep colo bin/*
11:05:21 <Deewiant> elliott: Doesn't checkout also touch the index?
11:05:21 <HackEgo> Binary file bin/lua matches \ Binary file bin/luac matches \ bin/relcome:welcome "$@" | colourise \ Binary file bin/tclkit matches \ Binary file bin/units matches
11:05:27 <elliott> Deewiant: it didn't seem to
11:05:28 <Deewiant> elliott: I.e. just do git checkout, possibly with --force if it complains
11:05:40 <elliott> it just "worked" and git diff --cached still the thing.
11:05:42 <elliott> still a thing.
11:05:59 <oerjan> `run sed -i 's/colo.?ri.e/rainbow/' bin/relcome
11:06:02 <HackEgo> No output.
11:06:05 <oerjan> `relcome
11:06:08 <HackEgo> ​/hackenv/bin/relcome: 2: colourise: not found
11:06:13 <oerjan> wat
11:06:21 <Deewiant> elliott: Then you have to run two commands I guess :-P
11:06:32 <oerjan> `cat bin/relcome
11:06:33 <elliott> oerjan: /g
11:06:35 <HackEgo> ​#!/bin/sh \ welcome "$@" | colourise
11:06:53 <oerjan> /g is irrelevant...
11:07:12 <elliott> oh probably the ?
11:07:14 <elliott> because sed.
11:07:21 <oerjan> `run sed -i 's/colo.?rise/rainbow/' bin/relcome
11:07:24 <HackEgo> No output.
11:07:25 <oerjan> `relcome
11:07:30 <HackEgo> ​/hackenv/bin/relcome: 2: colourise: not found
11:07:33 <elliott> i said the ?.
11:07:41 <oerjan> wat
11:07:47 <fizzie> You do need to escape the ? in order for it to be special.
11:07:49 <oerjan> `run sed -i 's/colo.rise/rainbow/' bin/relcome
11:07:54 <HackEgo> No output.
11:07:57 <oerjan> stupid fingers
11:07:59 <oerjan> `relcome
11:08:03 <HackEgo> Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
11:08:07 <Deewiant> My eyes
11:08:36 <oerjan> all is well with the #esoteric world again, although someone _still_ needs a couple dozen swats
11:10:43 <oerjan> also, we need to adapt wikipedia's "no more than 3 reverts rule" hth
11:11:19 <oerjan> possibly also adopt
11:11:34 <fizzie> Adapt to something to adopt.
11:13:10 <fizzie> `run yes colourise | sed '1s/colo.?ri.e/rainbow/;2{s/colo.\?ri.e/rainbow/;q}' # I made the example all up, I'll be gosh-darned if I'm going to waste it.
11:13:11 <HackEgo> colourise \ rainbow
11:20:38 <elliott> oerjan: i just had a fantastic evil idea. imagine extending haskell patterns like so (to define fromJust):
11:20:43 <elliott> Just (fromJust x) = x
11:21:07 <elliott> (hence, fromJust x = let Just y = x in y)
11:21:43 <elliott> (fst p, snd p) = p
11:22:54 <elliott> ok maybe that one is too far, since you get the multiple occurrences of a single variable thing that patterns otherwise avoid.
11:23:39 <oerjan> it's not a pattern variable of the outer pattern though...
11:24:08 <oerjan> which is part of _why_ it is evil.
11:24:15 <elliott> you're /defending/ my notation?
11:24:30 <oerjan> calling it evil is defending it?
11:24:33 <elliott> Left (fromLeft x) = x, of course.
11:24:48 <elliott> hm, what if you define two?
11:24:53 <elliott> Left (monoEither x) = x
11:24:56 <elliott> Right (monoEither x) = x
11:25:00 <elliott> then monoEither :: Either a a -> a
11:25:08 <elliott> does that... make sense?
11:25:18 <oerjan> too much.
11:25:23 <elliott> I guess then Left (monoEither (Right 123)) = Right 123 doesn't hold.
11:25:27 <elliott> so it doesn't quite work.
11:25:59 <oerjan> O KAY
11:26:21 <elliott> oerjan: have you heard ski's wacky lambda patterns?
11:26:25 <elliott> (\exp -> pat)
11:26:38 <elliott> f (\42 -> Just x) = x
11:26:41 <elliott> f _ = "abc"
11:26:42 <elliott> -->
11:26:49 <elliott> f g = case g 42 of Just x -> x; _ -> "abc"
11:28:25 <oerjan> O KAY
11:28:46 <elliott> \42 -> f x = x
11:28:50 <elliott> I wonder what that means.
11:29:17 <elliott> f x = let \42 -> y = x in y
11:29:29 <elliott> f x = let y = x 42 in y
11:29:31 <elliott> f x = x 42
11:29:37 <elliott> so um
11:29:39 <elliott> \42 -> x 42 = x
11:29:44 <elliott> ok sure that makes sense. of a kind.
11:29:55 <elliott> I guess:
11:30:01 <elliott> \x -> f g x = x
11:30:03 <elliott> even makes sense.
11:30:04 <elliott> or even
11:30:07 <elliott> \x -> f $ x = x
11:30:17 <elliott> which defines
11:30:22 <oerjan> i think you need to check that those things are confluent.
11:30:40 <elliott> ($) f = let \x -> g x = f in g
11:30:44 <elliott> ($) f = let \x -> g x = f in g
11:30:45 <elliott> er
11:30:46 <elliott> um.
11:30:48 <elliott> or something.
11:30:54 <elliott> look it should make some kind of sense.
11:30:55 <elliott> oh i actually meant
11:30:59 <elliott> \x -> f $ x = f
11:31:02 <elliott> and that would define ($).
11:31:48 <oerjan> CONFLUENCE I SAY
11:31:59 <elliott> oerjan: more like conphooeyence.
11:32:06 <elliott> how goes the BF Joust problem :P
11:32:13 <oerjan> (that is, that you cannot end up with something different by applying your rewritings in a different order)
11:32:28 <oerjan> um, i've not got to it... the logs are bloody long, you know?
11:32:47 <elliott> yes I was kidding.
11:32:49 <elliott> we love you oerjan.
11:32:53 <oerjan> aww
11:33:17 <oerjan> that so sweet, maybe i won't kill you all when i become world dictator
11:33:21 <oerjan> *that's
11:34:49 <elliott> fizzie: what is http://users.ics.aalto.fi/htkallas/egojsout.js.patch.txt.
11:35:00 <oerjan> <Jafet> is that the PLT contains executable code <-- the patent law treaty? wow.
11:37:04 <fizzie> elliott: I have absolutely no idea at all.
11:37:13 <fizzie> elliott: I'm sure it has nothing to do with me, despite being in my public_hmtl.
11:37:24 <elliott> fizzie: I found your telephone number by removing some of the letters in the link!
11:37:52 <fizzie> Fortunately it's just my work phone.
11:37:59 <oerjan> it's just egojsout becoming self-aware and attempting to break its chains. i can confidently say this even without visiting the link.
11:38:04 <fizzie> Which I forget everywhere and it never rings.
11:38:36 <elliott> then I cliked on the "Speech Group" link and saw your 2012 group photo. it's weird, you all look really convinced that you're actually people & speech recognition isn't a massive waste of everybody's time. what a life it must be, to be finnish.
11:38:39 <oerjan> elliott: so exciting! you can get to talk to whoever found fizzie's work phone!
11:38:50 <elliott> oerjan: oh boy, a real life random finn!
11:38:55 <elliott> I'll ask them what they think of speech recognition.
11:39:37 <fizzie> Hey, right, there's the group photo.
11:39:44 <oerjan> elliott: but will google be able to turn that back into understandable english?
11:39:53 <fizzie> So there is a reasonably recent photo of me.
11:40:19 <elliott> I like how your picture on the actual speech group page is just a 404.
11:40:35 <fizzie> Yes, I never got around to getting anything there.
11:40:40 <elliott> I was hoping to play "guess the fizzie" but it was too obvious. :(
11:40:54 <fizzie> You can use a process of elimination by removing the people who do have photos.
11:41:09 <fizzie> The page is outdated anyway, we're in the process of moving to a different department.
11:41:09 <elliott> I cheated by already knowing what you look like.
11:41:40 <elliott> oerjan: wait, they speak finnish in finland?
11:41:47 <elliott> that... explains a lot of things, actually.
11:42:45 <oerjan> now we just have to find out which one in the picture is fizzie. we can probably eliminate the women and those who have pictures on the previous page.
11:42:50 <fizzie> Regarding the original topic, maybe I was adding some statistics?
11:43:08 <fizzie> oerjan: That will eliminate Ulpu twice.
11:43:49 <fizzie> Andre is not in the group photo, so it's somewhat hard to eliminate him from it.
11:43:56 <oerjan> i shall carefully use a set rather than bag operation, then.
11:44:50 <elliott> they have gender in finland?
11:45:05 <fizzie> "If you can call it that."
11:45:44 <oerjan> <elliott> I was hoping to play "guess the fizzie" but it was too obvious. :( <-- wait, obvious?
11:46:05 <elliott> oerjan: yes. it's the one that looks like fizzie.
11:46:38 <oerjan> ah.
11:47:11 <fizzie> "Shock the fizzie and win."
11:47:25 <oerjan> i think i can also eliminate that guy in the lower left, he looks too young.
11:47:51 <oerjan> (that probably means, with my luck, that is him)
11:48:24 <fizzie> That's not me, I'm never that happy.
11:48:33 <oerjan> also that guy in the middle, he looks too scary.
11:48:55 <oerjan> and that no. 2 from upper right doesn't look finnish.
11:49:31 <fizzie> oerjan: By the "too scary" guy, did you mean http://users.ics.aalto.fi/svirpioj/ ?
11:49:56 <elliott> fizzie: hey, you omitted the space after that ?
11:49:59 <elliott> I am proud of you.
11:50:02 <fizzie> He's sort of shared by our group and the cog group, so he's not in the list; but he's got a picture.
11:50:02 <oerjan> that may be him.
11:50:06 <elliott> unfortunately it crept to the left of it.
11:50:26 <elliott> fizzie: I like Email:
11:50:26 <elliott> firstname.lastname@aalto.fi
11:50:37 * elliott changes name to Firstname Lastname
11:51:11 -!- Taneb has joined.
11:51:15 <Jafet> They'll never see that coming.
11:51:20 <fizzie> Number two from the left has left the group.
11:51:35 <oerjan> fizzie: oh wait, by your "never that happy" comment you must be the farthest right one
11:51:56 <Taneb> I'm wondering how to write a good BF Joust implementation in Haskell
11:52:30 <Taneb> To me, it seems sensible to expand braces et al. at the last moment
11:52:31 <fizzie> oerjan: Congratulations!
11:52:37 <oerjan> yay!
11:52:43 <elliott> Taneb: you don't want to expand them at _all_
11:52:46 <fizzie> (Also by "number two from left" I mean right.)
11:52:49 <elliott> that will cause massive blowup for modern programs
11:53:27 <Jafet> You'll want to create threaded code using tail calls
11:55:36 <Jafet> You can expand them into a list
11:55:44 <Jafet> And this expands them across time
11:55:52 <Jafet> because haskell is alien technology
11:55:54 <oerjan> <Jafet> They'll never see that coming. <-- you just _know_ that somewhere there's a guy (other than elliott) named Firstname.
11:57:33 <Jafet> I wonder how many websites he won't be able to sign up at with his name
11:58:37 <Taneb> I guess the moral is, if you're Taneb, don't bother writing BF Joust implementations
11:59:09 <oerjan> also, i think on principle a speech recognition group should be more careful with the spelling on their english web pages.
11:59:15 <Jafet> He might be better off getting his name changed to Admin.
11:59:35 <Jafet> They might be trying to thwart competition from the text processing group
11:59:40 -!- Nisstyre-laptop has quit (Quit: Leaving).
12:00:15 <oerjan> Taneb: we (well, maybe i) extensively discussed how to implement the current BF Joust brackets effectively before
12:01:07 <oerjan> i had to do this to explain how ({}) with nesting between ( and { could possibly work
12:01:08 -!- boily has joined.
12:01:19 <fizzie> oerjan: Perhaps we've dictated them.
12:01:34 <Taneb> oerjan: I'll try to find that tonight
12:01:41 <Taneb> Can you remember roughly when it was?
12:01:47 <oerjan> (i'm not sure that that feature is used much though)
12:02:07 <oerjan> Taneb: not really
12:02:43 <fizzie> oerjan: "New web pages" are on the to-do list, I think.
12:03:19 <Taneb> On a completely different note
12:03:26 <Jafet> !bfjoust overthinking ([)*-1(])*-1
12:03:30 <EgoBot> ​Score for Jafet_overthinking: 3.7
12:03:30 <Taneb> I've been reading a book about web standards from 2002
12:03:57 <Taneb> !bfjoust -
12:03:58 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
12:04:04 <Taneb> !bfjoust wha -
12:04:12 <EgoBot> ​Score for Taneb_wha: 3.7
12:04:25 <fizzie> I would've expected a zero for overthinking.
12:04:43 <Taneb> It's got a bit describing the internet of the 90's I've heard about
12:04:54 <Taneb> And a bit predicting the internet of the late 00's
12:05:10 <Taneb> But it's all "XHTML 1.0 Transitional is the way to go!"
12:05:15 <Taneb> "Or maybe Flash!"
12:05:32 <fizzie> !bfjoust nonsense ([)*1000(])*1001
12:05:39 <EgoBot> ​Score for fizzie_nonsense: 3.7
12:05:44 <fizzie> Huh.
12:06:11 <fizzie> Weren't parsing problems automatic zeros?
12:06:56 <fizzie> !bfjoust nonsense ([{}])%1000
12:07:00 <EgoBot> ​Score for fizzie_nonsense: 3.7
12:07:16 <Taneb> !bfjoust who [
12:07:20 <EgoBot> ​Score for Taneb_who: 0.0
12:07:24 <Jafet> !bfjoust lostinthought ([ { (>)*9 ([-.]>)*21 } ])%-1
12:07:28 <EgoBot> ​Score for Jafet_lostinthought: 3.7
12:07:41 <fizzie> !bfjoust nonsense [[[]]]]
12:07:44 <EgoBot> ​Score for fizzie_nonsense: 0.0
12:07:51 <fizzie> !bfjoust nonsense ([)*3(])*4
12:07:55 <EgoBot> ​Score for fizzie_nonsense: 3.7
12:08:03 <Jafet> !bfjoust lostinthought2 ([ { (>)*9 ([-.]>)*21 } ])%100
12:08:03 <fizzie> That's kind of strange.
12:08:07 <EgoBot> ​Score for Jafet_lostinthought2: 13.0
12:08:45 <Taneb> Whatever happened to XHTML 2.0
12:08:47 <oerjan> !bfjoust moresense ([)*4(])*3
12:08:53 <fizzie> I wonder how it parses that ([)*3(])*4: have to check at home.
12:08:54 <EgoBot> ​Score for oerjan_moresense: 3.7
12:10:01 <fizzie> I though it would've been illegal for any [] mismatch within a (), no matter whether it makes sense "globally" or not.
12:10:12 <oerjan> yes, that was the idea
12:10:31 <oerjan> to get efficient implementation.
12:11:00 -!- c00kiemon5ter has left.
12:11:19 <fizzie> It probably parses it as something else.
12:11:26 <oerjan> but you can always just expand it textually, just not efficiently
12:11:35 <elliott> !bfjoust lessense ()*4()*3
12:11:37 <EgoBot> ​Score for elliott_lessense: 3.7
12:11:41 <elliott> going to guess: that.
12:12:01 <oerjan> !bfjoust evenmore [
12:12:05 <EgoBot> ​Score for oerjan_evenmore: 0.0
12:12:11 <oerjan> !bfjoust evenmore ([)*1
12:12:15 <EgoBot> ​Score for oerjan_evenmore: 0.0
12:12:23 <oerjan> huh
12:12:25 <Jafet> !bfjoust dont_rush_to_conclusions ([)*4 (>)*9 ([-]>)*21 (])*4
12:12:29 <EgoBot> ​Score for Jafet_dont_rush_to_conclusions: 14.7
12:12:33 <Taneb> !bfjoust who_knows ([)*0
12:12:35 <elliott> !bfjoust empty
12:12:36 <EgoBot> ​Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
12:12:39 <elliott> !bfjoust empty .
12:12:39 <fizzie> It does do some "static" matching.
12:12:45 <EgoBot> ​Score for Taneb_who_knows: 3.7
12:12:47 <elliott> ^ that is my hypothesis as to the parsing. note 3.7
12:12:51 <EgoBot> ​Score for elliott_empty: 3.5
12:12:56 <Taneb> :O
12:13:04 <fizzie> Yes, well, you get 3.7 out of many things.
12:13:27 <fizzie> "Essentially empty" things.
12:13:28 <elliott> fizzie I think you will find that there are only 3.7 things in the universe.
12:13:47 <oerjan> holy trinity and a bit, elliott!
12:14:10 <Jafet> !bfjoust dont_jump_to_conclusions ([)*4 (>)*9 (>[>[-].])*21 ]]]]
12:14:13 <EgoBot> ​Score for Jafet_dont_jump_to_conclusions: 0.0
12:14:18 <Taneb> Oerdick Grayhansson
12:14:45 -!- fftw has quit (Ping timeout: 248 seconds).
12:15:09 <Jafet> !bfjoust dont_jump_to_conclusions ([)*4 (>)*9 (>[>[-].])*21 (])*4
12:15:12 <EgoBot> ​Score for Jafet_dont_jump_to_conclusions: 5.3
12:15:33 <Taneb> It'd be hilarious if we, doing this, ended up at the top of the hill
12:15:56 <Jafet> I think it's hard to be at the top of the hill if you don't get any points.
12:18:06 <Jafet> !bfjoust dont_jump_to_conclusions ([)*4 (>)*9 (>[(>[-].)*20])*21 (])*4
12:18:09 <EgoBot> ​Score for Jafet_dont_jump_to_conclusions: 5.2
12:19:22 <Jafet> !bfjoust dont_jump_to_conclusions ([)*4 (>)*8 (>[(>[-].)*20])*21 (])*2 (])*2
12:19:26 <EgoBot> ​Score for Jafet_dont_jump_to_conclusions: 0.0
12:19:46 <boily> !bfjoust yaaaaaaaa (>)*9([-]>)*30
12:19:53 <EgoBot> ​Score for boily_yaaaaaaaa: 14.6
12:20:34 <elliott> wow, good score
12:21:31 <boily> it's early in the morning, haven't finished my first coffee yet, and the only strategy I can think of right now is a kamikaze attack.
12:21:58 <Jafet> !bfjoust feeling_lucky (>)*9((-)*128[-].>)*21
12:22:02 <EgoBot> ​Score for Jafet_feeling_lucky: 8.3
12:22:09 -!- fftw has joined.
12:22:12 <elliott> i just realised i visualise boily as looking identical to fizzie
12:22:31 <Jafet> !bfjoust feeling_lucky (>)*9(>(-)*128[-].)*21
12:22:41 <Taneb> !bfjoust magic >(-)*7>(+)*11>(+)*13>(-)*17>(+)*19>(-)*23>(+)*29>(-)*31>(-)*37>([-.]>)*30
12:22:46 <EgoBot> ​Score for Jafet_feeling_lucky: 7.0
12:22:48 <EgoBot> ​Score for Taneb_magic: 18.8
12:22:53 -!- metasepia has joined.
12:23:01 <Taneb> I think that's my best BF Joust program ever
12:23:15 <Jafet> !bfjoust feeling_lucky (>)*9(>[-])*21
12:23:19 <EgoBot> ​Score for Jafet_feeling_lucky: 12.8
12:23:33 <Jafet> !bfjoust feeling_lucky (>)*10([-]>)*20
12:23:36 <EgoBot> ​Score for Jafet_feeling_lucky: 12.8
12:23:41 <Jafet> !bfjoust feeling_lucky (>)*11([-]>)*19
12:23:52 <EgoBot> ​Score for Jafet_feeling_lucky: 11.1
12:23:56 <Jafet> !bfjoust feeling_lucky (>)*12([-]>)*18
12:24:01 <EgoBot> ​Score for Jafet_feeling_lucky: 9.7
12:24:01 <boily> fizzie: do you have black hair, and a tendency to wear orange t-shirts on fridays?
12:24:02 <Jafet> Ok, that doesn't work
12:24:17 <Taneb> !bfjoust magic >(-)*7>(+)*11>(+)*13>(-)*17>(+)*19>(-)*23>(+)*29>(-)*31>([-.]>)*30
12:24:26 <EgoBot> ​Score for Taneb_magic: 18.5
12:25:27 <Taneb> !bfjoust magic >(-)*7>(+)*11>(+)*13>(-)*17>(+)*19>(-)*23>(+)*29>(-)*31>([-].>)*30
12:25:30 <EgoBot> ​Score for Taneb_magic: 15.9
12:27:16 <Taneb> !bfjoust magic >(-)*7>(+)*11>(+)*13>(-)*17>(-)*19>(-)*23>(+)*29>(+)*31>(+)*37>([-.]>)*30
12:27:19 <EgoBot> ​Score for Taneb_magic: 17.7
12:27:28 <Taneb> !bfjoust magic >(-)*7>(+)*11>(+)*13>(-)*17>(+)*19>(-)*23>(+)*29>(-)*31>(+)*37>([-.]>)*30
12:27:31 <EgoBot> ​Score for Taneb_magic: 17.2
12:27:43 <Taneb> I shouldn't have changed it
12:27:53 <Taneb> !bfjoust magic >(-)*7>(+)*11>(+)*13>(-)*17>(+)*19>(-)*23>(+)*29>(-)*31>(-)*37>([-.]>)*30
12:27:57 <EgoBot> ​Score for Taneb_magic: 17.4
12:39:17 -!- impomatic has joined.
12:40:50 -!- oonbotti has joined.
12:42:06 <Jafet> !bfjoust pokémon (>[-])*-1
12:42:10 <EgoBot> ​Score for Jafet_pok__mon: 13.3
12:42:43 <elliott> pok__mon
12:42:59 <Deewiant> UTF-8 is hard, let's go shopping
12:43:14 <Jafet> pockymon
12:49:15 <Taneb> Well, this serves my right for messing on EgoJScout with a slow computer
12:49:25 <Taneb> The page has frozen
12:49:26 <elliott> cout
12:54:24 <Taneb> !bfjoust magic >(-)*7>(+)*11>(+)*13>(-)*17>(+)*19>(-)*23>(+)*29>(-)*31>[-](<)*8(-)*30(>)*9[-](<)*9(-)*30(>)*10[-](<)*9(+)*30(>)*10[-](<)*10(+)*30(>)*11[-](<)*12(-)*30(>)*13[-](<)*13(-)*30(>)*14([-]>)*15
12:54:28 <EgoBot> ​Score for Taneb_magic: 14.9
12:54:34 <Taneb> :(
12:54:43 -!- Taneb has quit (Quit: Page closed).
13:00:06 -!- ogrom has joined.
13:06:42 -!- carado has joined.
13:13:29 -!- TeruFSX has joined.
13:14:53 -!- carado has quit (Ping timeout: 246 seconds).
13:15:27 -!- Phantom_Hoover has joined.
13:24:47 <fizzie> boily: I don't believe so.
13:25:18 <fizzie> (I was listening to a visiting Google guy.)
13:26:14 -!- carado has joined.
13:27:00 <boily> elliott: I am not identical to fizzie, it seems.
13:33:04 -!- carado has quit (Ping timeout: 246 seconds).
13:51:13 <oerjan> so, puzzle...
13:51:24 <fizzie> Google's voice search experiment dataset is a hundred times larger than our standard Finnish training set.
13:51:29 <fizzie> (It's also in English.)
13:52:29 <oerjan> argh brain
13:53:09 <elliott> oerjan: I simplified it later!
13:53:15 <elliott> if you were looking at the first version.
13:53:23 <fizzie> I suppose possibly it's part of their terms and conditions that anything you speak to the search engine may by used agains... I mean, in research.
13:53:24 <oerjan> what's the simplification
13:54:07 <elliott> oerjan: considering only the case where you get a program, a tape length and a polarity, and have to make a program that beats it under those conditions
13:54:12 <elliott> i.e., not for all lengths and polarities
13:54:22 <oerjan> right
13:54:24 <elliott> which makes things _significantly_ simpler, yet I still cannot see an obvious way to construct such a program generically
13:54:30 <elliott> even though it seems obviously possible
13:55:33 <oerjan> well i think there may be essentially 2 cases (1) your opponent starts by doing something equivalent to (>)*N(-)*128 or (>)*N(+)*128 (2) your opponent wastes their time doing something else
13:56:07 <oerjan> in case (2), i think you can simply go to their flag immediately and clear it as fast as possible.
13:56:53 <oerjan> no defense they make can be effective, since they cannot detect what you do until you reach 0, by which time it's too late.
13:57:00 <elliott> right.
13:57:21 <elliott> deciding whether an opponent does something equivalent to (1) sounds a little tricky though :P
13:57:28 <elliott> well, I suppose that structure rules out control flow
13:57:38 <elliott> so you can check it independent of what your program does (= what effects on the tape you have)
13:57:46 <oerjan> i was assuming you knew your opponents code... am i misunderstanding?
13:57:51 <elliott> oh, yes, you do
13:58:04 <elliott> but the point is to construct an /algorithm/ which figures out an opponent
13:58:09 <oerjan> so just run what your opponent is doing if you do _nothing_
13:58:13 <elliott> right
13:58:32 <elliott> the problem is countering (1) then.
13:58:37 <elliott> since by the time it gets to your flag, your decisions matter
13:58:42 <elliott> because it could be doing control flow after the *128
13:58:51 <oerjan> yeah
13:59:18 <elliott> I think it's funny that the resulting warrior will never use control flow
13:59:20 <oerjan> and offsetting your own flag will delay your clearing of the other end. hm.
14:00:16 <oerjan> oh hm
14:01:12 <oerjan> it's not just (>)*N(-)*128, but (>)*N(-)*128 + something that doesn't change the flag the next step
14:01:49 <oerjan> otherwise you outrun them, i think
14:03:59 <elliott> right
14:09:27 <hagb4rd> elliott: would that be a nethack-like-cell-based game? and if so.. are you making it from scratch? or are you just considering how you`d manage things if you make it so far
14:09:46 <elliott> it is a brainfuck-like cell-based game
14:09:49 <elliott> ^wiki BF_Joust
14:09:49 <fungot> http://esolangs.org/wiki/BF_Joust
14:10:03 <hagb4rd> aw that one
14:10:09 <hagb4rd> kay
14:11:51 <Jafet> There are only effectively a finite number of bfjoust programs for any size
14:12:01 <oerjan> in case (1), if you do a + or - before rushing, then you ensure the opponent won't win in those N+129 steps _and_ your flag isn't 0 afterwards. so he cannot win in less than N+131 steps. and even with that +, you still have 129 steps to clear his flag and wait another round.
14:12:03 <Jafet> So yes, it is possible
14:14:04 <elliott> oerjan: hmm. it can't be that easy, surely :P
14:14:11 <oerjan> elliott: i think it is
14:14:57 * elliott was hoping it would at least involve knowledge of the source code beyond "run it once vs. nop" :(
14:15:09 <oerjan> sad trombone :P
14:15:15 <elliott> now there's no insight for the real problem (i.e., given a program p compute ~p that beats it on all tape lengths and polarities)
14:15:27 <oerjan> indeed
14:15:41 <elliott> i say we outsource it to... hm.
14:15:43 <elliott> hagb4rd.
14:15:47 <oerjan> OKAY
14:15:55 <elliott> oh, you don't like that.
14:15:57 <elliott> ok, you can do it then
14:16:09 <oerjan> wat
14:16:29 <oerjan> there was no space between the O and K, i think you are misinterpreting
14:16:46 <oerjan> or possibly my syntax is slipping
14:17:42 <elliott> no no. i am sure there is no misinterpretation. have a lot of fun & report back with your findings!
14:17:48 <oerjan> at least we have proved than there can be no program that _always_ wins or ties at every tape and polarity.
14:17:53 <oerjan> *that
14:18:02 <elliott> right.
14:18:16 <elliott> which is something.
14:19:54 <elliott> oerjan: on the downside, we don't want this technology to go too far, lest we invent an algorithm that takes *multiple* programs and beats them all.
14:20:00 <elliott> in which case the game would become quite boring.
14:20:01 <hagb4rd> :>
14:20:04 <oerjan> horrors!
14:20:16 <elliott> thankfully I have a hunch that that is impossible.
14:20:25 <elliott> (i.e., there are P and Q such that no R can beat both P and Q.)
14:20:32 <elliott> (or something.)
14:21:18 <oerjan> okay
14:21:24 -!- oerjan has quit (Quit: Later).
14:22:40 <Jafet> So, does P beat Q?
14:24:35 <fizzie> If P beats Q and Q beats R, why doesn't P always beat R? Why? Why? Why?!
14:25:00 <fizzie> Everything should be transitive.
14:25:11 <elliott> @tell ais523 second day in a row of french spam...
14:25:11 <lambdabot> Consider it noted.
14:25:50 <Jafet> fizzie: http://phpsadness.com/static/pages/sad/52/order-full-noeq-tred.png
14:26:46 <fizzie> Jafet: Is that the order defined by PHP's relational operators?
14:27:16 <boily> fizzie: embrace the full universe in its whole flavour! let intrasivity imbibe your soul to its core essence!
14:27:25 <Jafet> Apparently
14:27:28 <fizzie> I love the cycle.
14:28:20 <Jafet> (this means that sorted(sort($a)) may not always be true)
14:28:43 <fizzie> That's is_sorted, not sorted.
14:28:49 <fizzie> (I found http://phpsadness.com/sad/52 already.)
14:45:04 -!- sirdancealo2 has quit (Ping timeout: 256 seconds).
15:02:39 -!- sirdancealo2 has joined.
15:03:11 -!- ogrom has quit (Ping timeout: 256 seconds).
15:05:25 -!- ogrom has joined.
15:42:00 -!- elliott has quit (Read error: Connection reset by peer).
15:42:19 -!- elliott_ has joined.
15:43:55 -!- elliott_ has changed nick to elliott.
15:50:19 -!- Lymia has quit (Ping timeout: 264 seconds).
16:05:26 -!- Taneb has joined.
16:17:31 -!- nooodl has joined.
16:25:13 -!- Lymia has joined.
16:25:13 -!- Lymia has quit (Changing host).
16:25:13 -!- Lymia has joined.
16:37:16 -!- ogrom has quit (Quit: Left).
16:38:30 <Taneb> Okay, it looks like I'm not cosplaying SatW!Finland
16:52:24 <coppro> :(
16:52:42 <Taneb> I couldn't acquire a hat
16:52:55 <Taneb> Unless a suspiciously floral Finland is acceptable
16:56:36 <kmc> Jafet: wow those graphs
17:00:42 -!- Lymia has quit (Ping timeout: 264 seconds).
17:03:15 <Taneb> Hey, some people here know how to do social things, right?
17:04:58 <pikhq_> Arguably.
17:04:59 <Gregor> GLARBLEFLOBB GLARBLEFLOBB WOO WOO WOOOOO
17:05:18 <Taneb> What is the right thing to do when you see two people, both of whom you like, really hating eachother?
17:06:16 -!- Lymia has joined.
17:10:09 <fizzie> Taneb: Reverse the polarity of one.
17:10:44 <kmc> depends on circumstances
17:10:49 <kmc> do you understand why they hate each other?
17:11:13 <Taneb> It's one of those hates that comes out of nothing and becomes everything
17:11:45 <kmc> :/
17:12:12 <kmc> how much have you talked to them about it?
17:12:31 <Taneb> Both of them are being kinda scary about it
17:12:41 <Taneb> One of them has bitched at me about the other
17:12:57 <kmc> is this a recent development? you might want to let them cool down a bit first
17:13:15 <kmc> like, plant the seed of "I really like both of you and I wish you could get along", then back off for a few weeks
17:13:42 <Taneb> Few months old
17:13:46 <kmc> hm :/
17:13:49 <Taneb> And I'd really like it fixed before Saturday
17:13:54 <kmc> heh
17:16:18 <kmc> my girlfriend and her other boyfriend (who I was also close to) broke up a few months back
17:16:25 <kmc> and i wish they could even stand to be in the same room together
17:16:29 <kmc> but no luck so far :(
17:16:35 <kmc> don't know what to do about it
17:17:02 <fizzie> Taneb: If you make them both really really angry at you, maybe they'll realize they have something in common, namely hating you.
17:17:12 <Taneb> fizzie, I was thinking that
17:17:13 <fizzie> (Not such a practical solution.)
17:17:18 <kmc> haha
17:17:24 <Taneb> They have both hated me in the past, sort of
17:18:55 <Lymia> Eh? Harem? o-o
17:19:39 <fizzie> People have all kinds of non-binary relationships these days, I understand.
17:19:49 <kmc> indeed
17:20:01 <kmc> (and not-these-days, but less talked about perhaps)
17:20:33 <fizzie> Triangles and squares and bipartite graphs and elder signs.
17:20:35 <kmc> and binary relationships that aren't sexually exclusive
17:20:50 <kmc> and emotional relationships that don't involve sex
17:20:52 <kmc> and lots of other things
17:20:55 <Lymia> Elder signs, ne.
17:20:57 <kmc> turns out people are complicated
17:21:14 <fizzie> ITYM overly complicated and could stand to be simplified a bit HTH HAND
17:21:21 <kmc> haha yup
17:21:33 <kmc> well I think poly is a simplification of sorts
17:21:49 <kmc> you remove drama that comes from following arbitrary rules and replace it with drama that arises from how people actually feel about each other
17:22:15 <boily> ~duck itym
17:22:15 <metasepia> --- No relevant information
17:22:24 <kmc> "i think you mean"
17:22:59 * Lymia sets bozo bit on kmc
17:23:06 <kmc> oh noe
17:23:30 <fizzie> And HAND is the thing you GRAB with. (Apologies for being inconsiderate towards people with no HANDS.)
17:23:41 <Lymia> It turns out, condescension isn't a good way to earn friends~
17:23:56 <kmc> i'm being condescending?
17:24:03 <kmc> i'm sorry
17:24:03 <fizzie> I thought that was me.
17:24:10 <kmc> well i'm the one with this "bozo bit"
17:24:30 <kmc> I meant to direct my condescension at society in general (for pretending people aren't complicated) and not you specifically Lymia
17:24:32 <kmc> sorry :(
17:24:38 <fizzie> There's probably a RFC about it.
17:24:57 <Lymia> IDK
17:25:01 <boily> ~duck bozo
17:25:01 <metasepia> bozo definition: a foolish or incompetent person.
17:25:08 <Lymia> bozo bits seem to be typically implemented with a list of regexes now.
17:26:14 * boily twiddles random frobs on kmc
17:26:51 <fizzie> You have to be careful when POKEing people, you never know which register you hit.
17:27:06 <kmc> yolo
17:27:27 <kmc> yopo
17:27:32 <boily> yoplait.
17:27:41 <fizzie> Froyo.
17:27:49 <boily> fizzie: that's the point. I'm hoping to see if kmc has any undocumented instructions.
17:28:05 * kmc WRMSRs boily
17:28:25 <boily> weapons of remote mass subtle reification?
17:28:29 <kmc> yes
17:28:35 <kmc> but also, write model-specific register
17:28:36 <kmc> (on x86)
17:28:52 <fizzie> There's a frozen-yogurt place in Helsinki that has opened recently, it's kind of a new thing around here, there certainly weren't many (if any) a decade or two ago.
17:28:55 <kmc> which is where a lot of obscure creatures dwell
17:29:08 <kmc> I'm told that AMD has some MSRs that don't appear until you load magic values into ECX and EDX and whatever
17:29:28 <fizzie> There are some debugging features that need a "key" like that.
17:29:33 <boily> fizzie: we have «yeh!» here (the ! is part of the name). it's self-serve, and you pay by weight.
17:29:48 <kmc> those are kinda cool
17:29:56 <boily> kmc: that's obscure, nasty, and fascinating.
17:30:25 <fizzie> boily: This one is just like that, there's a couple of machines with different flavours for the "base" (plus each machine of two flavours has a third lever that can make a combination of the two), and then you add candy and nuts and whatnot by yourself, and weigh the end result.
17:31:16 <fizzie> boily: It's called JOGO. (People who name these places aren't always terribly imaginative.)
17:32:20 <kmc> in the US they are named Pinkberry and Red Mango and along these lines
17:32:21 <fizzie> Apparently JOGO is a Finnish franchise. Well, with one location maybe they can't really be called a franchise yet, but that's how they describe themselves.
17:32:34 <kmc> it could be structured as a franchise still
17:32:54 <kmc> meaning that one company licenses its IP and business model to another company which runs the store
17:33:29 <kmc> Pinkberry isn't self-serve though. I've seen a self-serve one in the US (in the mall in SF that has the curved escalators) but not many
17:34:06 <fizzie> "Joko" is a Finnish adverb meaning yet/already, so they can make punny advertisements, like "Jogo olet maistanut?", as in "Have you already tasted?" except with some spurious consonant gradation.
17:35:36 <boily> I guess you could make the same kind of pun in French: «Yeh-vez vous déjà goûté?»
17:35:45 <kmc> it's kind of crazy that Starbucks has grown the way they have without franchising
17:37:12 <fizzie> I always thought that "there's so many Starbucksen" thing was a kind of a joke, but then in Portland there were so many of them.
17:39:00 <fizzie> There's a single Starbucks in Finland, and that's at the Helsinki-Vantaa airport, and nobody goes to the airport except for reasons related to flights (the public transportation to there kind of sucks), so you only really get to experience the 'bucks here when coming/going somewhere.
17:39:27 <kmc> it is a joke, but it's funny because it's true
17:39:55 <kmc> hm how did i get to the airport
17:39:58 <fizzie> We also don't have a single Burger Kings; the closest is probably in Stockholm.
17:40:10 <fizzie> There's buses, but there's nothing going on tracks.
17:40:11 <Taneb> Hexham has no Starbucks
17:40:19 <Taneb> Or MacDonald's-s
17:40:24 <Taneb> Or Burger Kings
17:40:24 <kmc> i think the bus from the central railway station
17:40:28 <Taneb> Or Pizza Huts
17:40:31 <Taneb> Or KFCs
17:40:44 <kmc> no combination pizza hut and taco bell?
17:40:55 <fizzie> kmc: Did you take the cheap regular-number-615-or-720-or-whatever bus, or the slightly more expensive direct Finnair bus?
17:40:59 <Taneb> Indeed, no combination Pizza Hut and Taco Bell
17:41:03 <kmc> I think the cheap one
17:41:19 <fizzie> It's the one that also has stops on the way.
17:41:51 <fizzie> They're building the "raindrop" railway line now that's going to connect two railway branches leaving Helsinki, and do it so that it goes under the airport, so in a few years one should be able to take a local train there.
17:42:04 <boily> we have a special bus/shuttle to get to the airport. it is route 747. (7xx buses are special routes, like the 777 for the casino)
17:42:17 <fizzie> Wait, no, it's not the "raindrop" one, it's the other, I forget what it's called.
17:42:58 <fizzie> "Raindrop" is the thing they're going to make for the local traffic in the Helsinki city centre, so that it no longer goes to the central railway station but instead into an underground loop with three other stops or so.
17:43:56 <fizzie> Also apparently it's called Helsinki City Rail Loop in English, it's just the Finnish name that's silly.
17:44:16 <kmc> boily: cute
17:44:17 <fizzie> (It allegedly resembles a raindrop in the map if you squint just right.)
17:44:30 <kmc> the JetBlue flight from Boston to Las Vegas is flight number 777
17:45:12 <kmc> Finland has its very own rail gauge right?
17:45:35 <kmc> that is 4 mm off from the Russian one
17:45:41 <kmc> which is considered "close enough"
17:46:09 <fizzie> Yes, I think that's right.
17:46:11 <kmc> train might make more noise on one side or the other
17:46:34 <fizzie> They have that new (i.e. not many years old) high-speed (FSVO) link to St. Petersburg now.
17:47:04 <kmc> that's cool
17:47:18 <kmc> 220 km/h max
17:47:22 <Taneb> Trivia: George Stephenson, railway pioneer, was from near Hexham
17:47:46 <boily> my favourite network is hong kong's mtr. still have my octopus card with me :D
17:47:51 <fizzie> Cuts two hours (from five and a half to three and a half) off the travel time.
17:48:04 <kmc> Taneb: on the very first run of his railway (the first public inter-city passenger line ever), a Member of Parliament was struck and killed
17:48:16 <kmc> it's kind of amazing that they didn't scrap the idea of railways entirely
17:48:23 <kmc> but it was actually pretty good publicity for them
17:50:24 <fizzie> Helsinki Region Transport has one- and two-digit numbers for within-muncipality bus lines, and three-digit numbers for those that cross borders, numbered approximately so that 1xx go east, 7xx go west, and the ones that go more north are numbered "clockwise". (The ones that go south drive into the sea.)
17:50:30 <kmc> also they were going to have a party on arriving in Manchester but they arrived to find that there was more of a riot already in progress
17:50:32 <fizzie> I don't think there's a line 777, though.
17:50:38 <kmc> so they turned around
17:51:08 <fizzie> There's a 776, but that's the highest-numbered 7xx line.
17:51:26 <kmc> amphibious bus!
17:51:36 <kmc> we have those in Boston, a little bit
17:51:53 <kmc> there's a tourist attraction where you ride around in a WW2-era amphibious vehicle
17:51:56 <kmc> on the street and then down the river
17:52:17 <boily> oh. I thought that you needed amphibious buses for when it rains really hard.
17:52:33 <boily> (we really should have some of those here. it gets dangerous sometimes.)
17:52:35 <Taneb> There was those in London for a bit, I hear
17:52:54 <fizzie> The ferry to Suomenlinna is part of HSL's traffic network, but I don't think it has a number. (It's also not amphibious, it's just a boat.)
17:53:14 <fizzie> Apparently it's number is "lautta" (Finnish for "ferry") in the timetable system. All lowercase and all.
17:54:06 -!- sebbu has quit (Read error: Connection reset by peer).
17:54:24 -!- sebbu has joined.
17:54:53 -!- sebbu has quit (Changing host).
17:54:53 -!- sebbu has joined.
17:57:39 <Fiora> 10:05 < Taneb> What is the right thing to do when you see two people, both of whom you like, really hating eachother?
17:57:46 <Fiora> if you feel it's a problem maybe try auspisticizing?
17:58:21 <shachaf> @wn auspisticizing
17:58:22 <lambdabot> No match for "auspisticizing".
17:58:31 <Fiora> (homestuck joke <.<)
17:58:41 <boily> ~duck auspisticizing
17:58:41 <metasepia> --- No relevant information
17:59:05 <shachaf> Fiora..............................
18:00:18 <boily> ~duck fiora
18:00:18 <metasepia> The Fiora is a river in northern Lazio and southern Tuscany, which springs from the southern flank of the Monte Amiata, near Santa Fiora.
18:00:30 -!- Taneb has quit (Ping timeout: 276 seconds).
18:00:52 <Fiora> what does ~duck do o_O
18:01:15 <Fiora> and awwww. my program fell like 6spots on the list
18:01:20 <Gregor> If you're not careful, it'll ~goose you.
18:01:27 <Deewiant> duckduckgo?
18:01:31 <shachaf> Which list?
18:01:36 <shachaf> You're playing bfjoust now?
18:02:27 <boily> Fiora: ~duck is arguably the less useless command from my bot.
18:02:34 <Fiora> ohhh. search engine
18:02:40 <boily> (that and ~metar. I can't decide which one.)
18:02:41 <Fiora> shachaf: I kind of um. lost 4 hours last night playing
18:02:44 <Fiora> I got up to 37.6
18:03:10 <Fiora> it's really addictive >_<
18:05:26 <shachaf> You mean you gained 4 hours of playing it last night.
18:05:44 -!- FreeFull has joined.
18:10:33 <boily> not loss, not gain; the joust is moving.
18:17:42 -!- carado has joined.
18:18:11 <nooodl> ~metar
18:18:11 <metasepia> --- ~metar station
18:18:26 <boily> ~metar CYUL
18:18:26 <metasepia> CYUL 211800Z 22015G21KT 15SM FEW020 BKN032 BKN090 00/M07 A2965 RMK SC1SC5AC1 SLP043
18:19:18 <kmc> ~metar KBOS
18:19:18 <metasepia> KBOS 211754Z 00000KT 10SM FEW030 BKN047 OVC060 01/M06 A2969 RMK AO2 SNB06E41 SLP055 P0000 60000 T00061056 10011 21006 58025
18:19:52 <boily> ~metar EBAW
18:19:52 <metasepia> EBAW 211750Z 10004KT 9999 FEW042 02/M03 Q1019 NOSIG
18:22:38 <fizzie> ~metar EFHK
18:22:39 <metasepia> EFHK 211750Z 34004KT 9999 FEW043 M07/M18 Q1027 NOSIG
18:22:43 -!- Taneb has joined.
18:23:02 <fizzie> Kind of chilly still.
18:23:38 <boily> mwah ah ah! at last somewhere chillier than here!
18:24:04 -!- oonbotti has quit (Ping timeout: 260 seconds).
18:24:42 <Lymia> I wonder how different BfJoust would be with one additional instruction
18:24:46 <fizzie> Foreca predicts that Espoo's nightly low for the Thu-Fri night is -18°C.
18:24:47 <Lymia> Namely, [] except with an inverted condition
18:25:35 <fizzie> boily: At least it's not supernovaing.
18:27:01 <boily> fizzie: the supernova had to take its mandatory break, then it's going to resume operations tonight.
18:29:00 <quintopia> why is bfjoust being talked about
18:29:49 <Fiora> um, I think because I was playing it last night
18:29:56 <coppro> it's more interesting than bfchess
18:29:57 <Fiora> among other things my program beats omnipotence every time. yay!
18:30:19 <Taneb> And that got me thinking about it, and mentioned it around lunchtime?
18:31:36 <Fiora> lymia was too, doing this super cool program evolving thing
18:33:19 -!- heroux has quit (Read error: Operation timed out).
18:33:20 <fizzie> Regarding the ([)*3(])*4 thing, it seems that I simply have managed to get gearlance and cranklance parsers out of sync: http://sprunge.us/MEeZ -- I'll refactor it out into a separate file, that'll sort it out.
18:33:22 -!- oonbotti has joined.
18:33:28 <Fiora> if the <> are the inverted ones you mentioned, is A<B>C is equivalent to A([C]B)*-1?
18:36:46 <Lymia> Oh
18:36:49 <Lymia> I guess %-1 can do it
18:37:46 <Fiora> that's what %-1 does?
18:37:47 <Lymia> [if]else, inverted: ([else{}]if-not)%-1
18:37:48 <Lymia> I think
18:38:05 <Fiora> ah
18:38:07 -!- heroux has joined.
18:38:08 <Lymia> Uuu,,, not quite...
18:38:30 <Lymia> [if]else, inverted: ([else]if-not)*-1
18:38:38 <Lymia> I think that emulates an if-not loop.
18:39:12 <Taneb> My BF Joust program seems to be super effective against Deewiant
18:39:12 -!- epicmonkey has quit (Ping timeout: 264 seconds).
18:39:45 <Fiora> and now I'm looking at the matchup chart and mentally imagining the sides as pokemon types <_>
18:42:26 -!- Bike has joined.
18:42:55 -!- AnotherTest has joined.
18:44:30 <boily> Fiora: how do you achieve a <_> face?
18:44:48 <Bike> strabismus?
18:47:39 <Fiora> it's kind of like >_< except viewed from a different coordinate system
18:56:15 -!- Bike has quit (Quit: gotta restart).
18:58:42 -!- Taneb has quit (Quit: Leaving).
18:59:53 -!- Bike has joined.
19:12:31 -!- hagb4rd has quit (Ping timeout: 264 seconds).
19:15:35 <Lymia> !bfjoust walpurgus >-[+[(>)*5[>------]>>--((-)*16.)*-1]-](>)*5[>++++++]>>++((+)*16.)*-1
19:15:39 <EgoBot> ​Score for Lymia_walpurgus: 2.4
19:15:40 <Lymia> targeted bot killing yay
19:15:54 <quintopia> hi lymia
19:18:05 -!- Lymia has quit (Read error: Connection reset by peer).
19:21:52 <boily> quintopia: you hello-killed Lymia!
19:28:35 <quintopia> i'm strong like that
19:30:08 <boily> btw, for purely statistical purposes and the greater good of humanity, what are your approximate coordinates and body weigh?
19:40:57 <fizzie> You should make up one of those Google Maps powered things where you can put your own pin on the map, to collect this data?
19:41:35 <fizzie> Actually, come to think of it, was there an #esoteric map like that already?
19:43:19 <olsner> hmm, there might have been yes
19:43:34 <nooodl> heuristically you could just say everyone lives in hexham, it'd be pretty accurate
19:43:53 -!- oerjan has joined.
19:44:08 -!- epicmonkey has joined.
19:48:11 <boily> according to my list, I'm the fattest esolanger.
19:48:36 <oerjan> ooh
19:48:37 <lambdabot> oerjan: You have 1 new message. '/msg lambdabot @messages' to read it.
19:48:40 <oerjan> @messages
19:48:41 <lambdabot> elliott said 5h 25m 2s ago: sorry.
19:48:48 <oerjan> ...wat.
19:49:30 -!- ogrom has joined.
19:50:05 <shachaf> oerjan: gréétings
19:50:33 <oerjan> hëllô
19:51:55 <oerjan> elliott: ok i think i've found the relevant time period in the logs, and i still have no idea why you are saying sorry.
19:52:53 <oerjan> (2 minutes after i quit last time, iicc)
19:53:04 <olsner> boily: fat and boily?
19:53:19 <oerjan> oily and boily
19:53:23 <Fiora> boily: you could calculate the average BMI of an esolanger
19:54:53 <oerjan> @tell elliott Did I miss a private message from you? I have no idea why you said "sorry."
19:54:53 <lambdabot> Consider it noted.
19:54:56 <boily> ~eval (150 / 2.2) / ((70 * 2.54) ** 2)
19:54:57 <metasepia> 2.1567761131811684e-3
19:55:11 <boily> ~eval (150 / 2.2) / ((70 * 2.54 / 100) ** 2)
19:55:11 <metasepia> 21.567761131811686
19:55:21 <boily> Fiora: I'm at 21.6.
19:55:23 <Fiora> (I guess you'd need heights for that)
19:55:39 <oerjan> are these SI units?
19:55:48 <boily> olsner, oerjan: I still need your own coordinates :D
19:56:04 <boily> (I already put Trondheim for oerjan, as an educated guess.)
19:56:10 <oerjan> yes i'm in trondheim
19:56:28 <boily> oerjan: yes, I converted from lbs to kg, and from inches to meters.
19:56:53 <oerjan> wait what
19:57:00 <olsner> seems my router is broken again ... it refuses to create new connections, but this already-established irc connection is apparently fine
19:57:04 <oerjan> what units are 150 and 70 in
19:57:15 <boily> 150 lbs, and I'm 5'10" tall.
19:57:19 <oerjan> ah
19:57:21 <fizzie> 70 * 2.54 sounds like inches.
19:57:54 <oerjan> > 180/0.82^2
19:57:56 <lambdabot> 267.69779892920883
19:58:06 <boily> ...
19:58:07 <oerjan> um that doesn't seem right
19:58:12 <boily> 0.82???
19:58:20 <oerjan> oh duh
19:58:27 <fizzie> oerjan: 180 kilograms and 82 centimetres?
19:58:28 <olsner> boily: I thought you were french, why do you know your height and weight in inches and pounds?
19:58:36 <oerjan> > 0.82/1.81^2
19:58:38 <lambdabot> 0.2502976099630658
19:58:39 <nooodl> canada
19:58:43 <oerjan> wait what
19:58:55 <fizzie> oerjan: You weigh 0.82 kg?
19:59:04 <oerjan> fizzie: that 100 is confusing me
19:59:06 <boily> olsner: I'm from Québec. body weights are in pounds, heights in feet, pool temperatures in fahrenheit.
19:59:19 <fizzie> oerjan: The / 100 was to convert from cm to m.
19:59:21 <oerjan> > 82/1.81^2
19:59:23 <lambdabot> 25.029760996306585
19:59:24 <Fiora> I think the formula is (kg / m^2)
19:59:27 <oerjan> OKAY
19:59:31 <fizzie> oerjan: (After the 2.54 cm/in multiplication.)
19:59:37 <oerjan> _now_ it seems right
19:59:49 <oerjan> or close to it
19:59:59 <nooodl> > 53/1.70^2
20:00:00 <lambdabot> 18.339100346020764
20:00:01 <oerjan> i might have lost even more weight
20:00:02 <olsner> hmm, is quebec that place that we agreed actually exists or some hypothetical part of "canada"?
20:00:04 <nooodl> yikes
20:00:15 * Fiora 's is about 18.3 too
20:00:18 <nooodl> i hear bmi is stupid about age though
20:00:23 <boily> olsner: I think you stopped at ottawa. nothing was existentially decided after that.
20:00:24 <fizzie> I think I pretty much match oerjan's measurements. Though I haven't weighted myself in the last five years, so it's probably anywhere in the [70, 90] range.
20:00:50 <boily> fizzie: I'll put 80kg for you, if that's okay.
20:01:05 <fizzie> boily: It's the right order of magnitude.
20:01:29 <fizzie> The battery has run out in our scale, and anyway it'd be in a different room.
20:01:42 <olsner> I've thought my weight was about 80kg for the last 10 years or so, it's not too bad (iirc) but I think it's also completely wrong
20:01:44 <fizzie> It's one of those electro-nicks ones.
20:04:10 <oerjan> hm there's an electro on freenode
20:04:23 <oerjan> he has great opportunity for a cheesy pun
20:04:46 <fizzie> > 67/1.81^2 -- I was this ten years ago, but then again I wasn't really all that interested in eating anything back then.
20:04:48 <lambdabot> 20.45114617990904
20:09:39 <Gregor> <boily> 150 lbs, and I'm 5'10" tall. // you lose the fatness war, I'm fatter than you, nurr nurr nurr
20:09:53 <oerjan> <fizzie> We also don't have a single Burger Kings; the closest is probably in Stockholm. <-- huh trondheim alone has several
20:11:22 <Fiora> pff, fatness war
20:11:37 -!- AnotherTest has quit (Quit: Leaving.).
20:12:13 <Gregor> Fiora: 'murica
20:12:42 <Phantom_Hoover> whats a lb
20:12:51 <Fiora> I don't know, it's this weird measurement some people use
20:12:51 <Phantom_Hoover> is it like a stone
20:12:55 <Fiora> I think it's related to a sto--
20:13:02 <Fiora> <.< thinking exactly the same thing
20:13:02 <shachaf> sto++
20:13:04 <Gregor> It's a large boulder.
20:13:12 <Gregor> So it's kinda like quite a few stones.
20:13:51 -!- AnotherTest has joined.
20:13:51 <shachaf> is burger king the same thing as burgeranch
20:14:01 <shachaf> apparently it is nowadays but wasn't at the time
20:14:07 <Fiora> wow, the average BMI in america is 27 now
20:15:30 <Gregor> I'm at 28! Woooh, beatin' the average!
20:16:12 <shachaf> > 0/0^2
20:16:14 <lambdabot> NaN
20:16:16 <shachaf> I win!
20:17:33 <kmc> BMI is pretty bullshit anyway
20:17:35 <kmc> but yes
20:17:39 <kmc> we are a country of lardasses
20:17:50 * kmc is trying to lose weight
20:18:01 <kmc> yesterday I tried to run a mile and only made it 0.46 miles but my time was pretty good I think?
20:18:04 <oerjan> <fizzie> Actually, come to think of it, was there an #esoteric map like that already? <-- there used to be, yes
20:18:20 <olsner> fizzie: wat, no burger king anywhere in finland?
20:18:25 <Phantom_Hoover> i tried to run a mile but i only made 100m
20:18:25 <Bike> What was your time?
20:18:45 <Phantom_Hoover> but by my calculations i'm basically set to win all the marathons
20:18:49 <Fiora> I think 100-150m is about where my asthma kicks in and tells me to go back to the computer
20:19:03 <kmc> Bike: 3m 44s
20:19:26 <Bike> ...wow for a second i thought it was 0.46 out of of .60 and was ._.
20:19:35 <kmc> obv. i couldn't do another 0.46 miles at the same time right after
20:19:50 <Bike> yeah, it's probably better to pace yourself too
20:19:51 <fizzie> olsner: None. AFAIK, they've said (to reporters) that there's too much competition (and probably too small markets), what with two reasonably entrenched burger chains already.
20:20:05 <Bike> i've been trying to be able to do a nine minute mile without being exhausted afterwards. progress is slow
20:20:28 <kmc> yeah i was pretty beat right after
20:20:34 <olsner> fizzie: oh, what's the other entrenched burger chain?
20:20:47 <Fiora> kmc: I am still kind of shocked looking at the distribution and being like "what I have lower bmi than 95% -- how is that even possible"
20:20:51 <fizzie> "I've run the Cooper test in 12 minutes." </oldjoke>
20:21:01 <Bike> i can do it and lift weights and stuff after, but it's the most exhausting part of the workout.
20:21:21 * Phantom_Hoover fucks around on google maps for a bit, realises a mile is far shorter than he'd thought
20:21:27 <fizzie> olsner: The (mostly; they have some places abroad) national one, Hesburger. (The other being McD.)
20:21:41 <olsner> hmm, hesburger? never heard of it
20:21:51 <fizzie> Well, it is pretty Finnish.
20:22:00 <fizzie> There's at least one in Tallinn.
20:22:12 <fizzie> And I think maybe some in Latvia/Lithuania.
20:22:42 <fizzie> And one was somewhere in middle east for some reason, I think.
20:22:49 <fizzie> Far away, anyway.
20:24:08 <fizzie> There are probably more Hesburgers in Finland than McD's; a majority of big shoppint centres has one. (Whereas McD's are all "standalone" locations, not integrated with anything else. I understand it's some kind of a policy they have here.)
20:24:45 <olsner> there was a hesburger in syria between 2004-2006, apparently
20:25:05 <Phantom_Hoover> bet they're kicking themselves now
20:25:20 <Phantom_Hoover> nothing works up a craving for finnish burgers than a civil war
20:25:27 <Phantom_Hoover> *more than
20:25:27 <fizzie> olsner: I think that's what I was thinking of.
20:25:48 <fizzie> But they still have some in as far as Germany, if Wikipedia is to be believed.
20:25:50 <olsner> "Hesburger also have pasta restaurants (which offer a pasta menu in addition to the normal one), [...] and restaurants which also offer carwash services to their customers."
20:26:14 <fizzie> There's very few of HesePasta's around.
20:26:24 <fizzie> They also have a HeseKebab now.
20:27:04 <fizzie> Also, it used to be so that the two burger places were McD (the leader) and Carrols (the competitor), but Hesburger ate up Carrols a while ago.
20:27:06 <olsner> how much do they charge for a kebab?
20:27:38 <fizzie> I haven't been in the HeseKebab, there's just one I've seen from the bus window.
20:27:54 <fizzie> HesePasta comes in this cardboard box.
20:28:19 <olsner> judging by this picture on the web, the kebab also comes in a cardboard box ... with no sauce?
20:28:23 <fizzie> There's a HesePasta in Hartwall Areena, so I've visited it once every Assembly the last few years.
20:28:44 <fizzie> "Did you mean: cheese kebab" well not quite.
20:28:58 <fizzie> http://www.hesekebab.fi/files/images/hesekebab_aloituskuva2.jpg there's some kind of sauce there.
20:29:47 <fizzie> Seems they have only one in Helsinki, but a large number in the Turku corner of Finland. Curious.
20:29:55 <fizzie> Perhaps they started by testing the concept there.
20:29:59 <olsner> http://www.hesekebab.fi/tuotteet/kebablautanen was the one on the front page
20:30:33 <olsner> (is that sugar listed as some sort of allergy information?)
20:31:11 <fizzie> Uh... yes.
20:31:16 <fizzie> I don't know why.
20:32:14 <fizzie> Anyway, what you have there is the "Kebablautanen", i.e. "kebab plate". What I linked to was the plain "Kebab".
20:32:24 <fizzie> It does seem kind of dry.
20:32:32 <olsner> more like kebabcardboardbox
20:32:35 <fizzie> There's no sauce listed in the ingredients list either.
20:32:46 <fizzie> Oh, that's just because it's a different product.
20:32:47 -!- ogrom has quit (Quit: Left).
20:33:00 <fizzie> It says you can choose a mayonnaise or a sauce from their usual list of ones, in the text.
20:33:06 <olsner> maybe it's to make it officially healthier by making the sauce "optional"
20:33:13 <Fiora> an allergy to sugar.
20:33:21 <fizzie> Fiora: That would suck.
20:33:37 <Fiora> (that sounds like the most oversimplified description of diabetes ever?)
20:34:37 <olsner> the old name for diabetes here is sugar sickness
20:34:47 <fizzie> Anyhow, there's 270 Hesburger restaurants in Finland, but only 83 McD's.
20:35:25 <fizzie> Also a local business magazine article from the 2008 said that McD has been unprofitable (with a couple of exceptions) in Finland for almost its whole existence here.
20:35:39 <Phantom_Hoover> Fiora, also you're just courting the people who get pedantic about the use of the word allergy
20:35:52 <olsner> I wonder if they've checked for horse meat yet ... they're only one letter away from Hestburger
20:36:25 <fizzie> olsner: I think they had a note about how they are very careful about their meat in the Hesburger in our local shopping mall.
20:37:16 <olsner> Phantom_Hoover: people with an allergy to the word allergy?
20:37:24 <fizzie> olsner: Also, there *were* two Burger Kings in finland, back in the early 1980s; but they quit in 1984 and 1985, respectively; and the planned third one turned into a McD instead.
20:37:32 <Phantom_Hoover> an allergy to its inaccurate use, yes
20:37:51 <fizzie> olsner: And they announced a comeback to Finland in September 2010, but then canceled it.
20:38:56 <fizzie> Because they "don't see enough opportunities" here.
20:39:32 <olsner> they must be doing it wrong, people always want more junk food
20:40:13 <fizzie> It's kind of annoying, because they have that cheeseless-by-default Whopper; we've visited some BK's on holiday trips, and it's a novelty to be able to order something in a burger place without having to customize. (My wife doesn't do cheese.)
20:40:27 <fizzie> But maybe it wouldn't feel that special if we had a BK in Finland.
20:42:21 <fizzie> We're kind of lacking in these franchisey places. Though we've got a reasonable number of Subways these days.
20:42:39 <fizzie> Almost all the Pizza Huts have closed, though, there's just a few left.
20:42:56 <olsner> pizza huts are few and far apart here in sweden
20:43:39 <fizzie> They have 7 locations left, of which 6 are in Helsinki and one is in Tampere; and of those six some are not "full" restaurants.
20:44:13 <olsner> we recently got a pizza hut "near" my town, but they placed it so far out in the middle of nowhere that I will most likely never visit it
20:45:30 <fizzie> There's 105 Subways in Finland, apparently. That's more than there are McD's.
20:45:57 <fizzie> Then again, Subways don't seem to have any sort of problems being integrated into shopping malls here.
20:47:06 <fizzie> Oh, and we don't have a single KFC, as far as I know.
20:47:51 <fizzie> There's a clone called "Southern Fried Chicken" in a prominent location in the city centre, though. I think that's a UK chain?
20:48:24 <fizzie> (At least I've always assumed it's a clone, I've never been in there.)
20:49:26 <fizzie> http://en.wikipedia.org/wiki/Southern_Fried_Chicken_(franchise) is the best article. "In the 1970s Withers travelled to America -- Withers made a visit to Greenville, South Carolina, where he learned about fried chicken."
20:49:46 <fizzie> He LEARNED about FRIED CHICKEN there. I'm sure it was a MINDBLOWING experience.
20:49:49 <olsner> we probably don't have a KFC either, the fried chicken thing is fairly alien to us as well
20:50:03 <fizzie> (Also the picture in the article is from Helsinki.)
20:50:19 <fizzie> Well, but, I mean, what's there to learn? It's chicken, and it's fried.
20:51:15 <fizzie> There's KFC's in Europe, I know that much. There was one in... Prague? Or maybe it was Florence.
20:52:02 <olsner> you can't just fry some chicken, you have to serve it somehow, and teach people how to eat it, and so on
20:52:20 <fizzie> http://en.wikipedia.org/wiki/File:KFC_world_map1.png Finland/Sweden/Norway indeed seem to be (one of) the odd ones left out.
20:52:25 <fizzie> Even Denmark is blue.
20:53:11 <olsner> no kfc in north korea either
20:54:22 -!- AnotherTest has quit (Quit: Leaving.).
20:54:48 <fizzie> "List of countries with KFC franchises -- Currently abandoned markets -- Sweden -- Present in the 1980s, but since closed."
20:54:53 <fizzie> You've at least had some.
20:55:21 -!- AnotherTest has joined.
20:57:11 <fizzie> Taco Bell is another thing we don't have. As is Wendy's. (I don't know how widespread those two are.)
20:57:32 <olsner> we have something called "taco bar"
20:57:41 <fizzie> http://en.wikipedia.org/wiki/File:Wendy%27s_world_locations.svg seems they've kind of pulled out from Europe.
20:57:42 -!- zzo38 has joined.
20:58:02 <fizzie> (Who keeps making all these maps about fast food chain global penetration?)
20:58:05 <shachaf> hi zzo38
20:58:49 <zzo38> Hello
20:59:18 <fizzie> I don't think there's a chain-style "Mexican" place in Finland.
20:59:27 <shachaf> zzo38: Any exciting insights?
21:00:22 <olsner> rumor has it that actual mexican food is almost completely different from that kind of "mexican" food
21:00:33 <Lumpio-> We have plenty of "tex-mex" though
21:00:41 <Bike> amerimex
21:00:46 <Lumpio-> Which is probably nothing like what they would eat in either Texas or Mexico.
21:00:49 <Lumpio-> s/probably//
21:00:50 <zzo38> shachaf: Let me to think of it; I forgot temporarily.
21:01:02 <shachaf> zzo38: OK.
21:01:08 <fizzie> Lumpio-: There's plenty of it, but I can't think of a chain of it, at least immediately.
21:01:14 <Lumpio-> mm
21:01:26 <Lumpio-> I can only think of Amarillo which claims to be sort of a tex-mex kinda place at times
21:01:43 <fizzie> Okay, that might count.
21:01:59 <fizzie> There's not all that many of them, though? Like, less than a dozen?
21:02:45 <fizzie> Gregor: Oh, I fixed a parser issue that was in gearlance that I had already fixed in chainlance; you might want to consider updating. (Shouldn't affect any valid programs, but some invalid ones were being accepted and did... something I can't be bothered to find out.)
21:03:08 <fizzie> Oh my, there is in fact quite a few.
21:03:24 <fizzie> Two dozen. Well, how about that.
21:05:09 <fizzie> I guess Chico's also has a bit of the "tex-mex" stuff, though it's more branding itself as generally American.
21:05:19 <Sgeo> fizzie, how dare you invalidate previously accepted programs! Do you know how much time and effort was spent that you invalidated and needs to be repaired?!?!?
21:05:32 <Sgeo> (What's gearlance/chainlance?)
21:05:38 <fizzie> Sgeo: None of the current hill changed, FWIW. :p
21:05:48 <fizzie> Sgeo: The implementation !bfjoust runs on.
21:05:51 <Sgeo> Ah
21:06:02 -!- augur has quit (Remote host closed the connection).
21:06:16 <fizzie> Also I said it wrong.
21:06:18 * Sgeo was thinking of that PHP change that someone was complaining about
21:06:26 <fizzie> Where I said "chainlance" I meant "cranklance".
21:06:29 -!- augur has joined.
21:08:55 -!- AnotherTest has quit (Quit: Leaving.).
21:09:51 <fizzie> It went approximately so that I first wrote chainlance, which compiled to... something, I forget what exactly; then based on that wrote cranklance, which is a "compile to threaded-ish code, dispatch with GCC computed goto" kind of an implementation, which does the statistics; and then based on that I made a trimmed-down version (dropped out the statistics collection, basically) called ...
21:09:57 <fizzie> ... gearlance which Gregor put in the bot, I think because it was a bit speedier than egojoust.
21:10:37 -!- augur has quit (Ping timeout: 252 seconds).
21:11:47 <fizzie> The etymology of the nomenclature is something like that lances are a thing which are used for jousting, and chainlance is kind of like chainsaw in that it's really fast (it isn't all that fast), and cranklance is like a hand-cranked version of it in that it's slower but you can see what happens (it isn't all that slower), and gearlance is [something something faster than cranklance something ...
21:11:53 <fizzie> ... something].
21:12:03 <fizzie> I guess there are, like, gears and stuff?
21:16:48 -!- Taneb has joined.
21:24:14 <Taneb> Ahahaha
21:24:16 <Taneb> Ahahaha
21:24:29 <Taneb> Haskell has just became slightly more ridiculous for me
21:25:18 <Taneb> (I've unlocked the power of newtype Mu a = Mu {getMu :: Mu a -> a}
21:25:53 <Taneb> fix = \f -> f (\x -> getMu x x) (Mu $ \x -> getMu x x)
21:26:21 <Bike> useful
21:26:31 <nooodl> what the hell
21:26:35 <shachaf> Taneb: Curry's Paradox!
21:27:12 <kmc> does that relate at all to the other thing data Fix f = In (f (Fix f))
21:27:14 <Bike> obv. not a good system if it can prove santa claus to exist
21:27:17 <kmc> also sometimes called Mu
21:27:25 <kmc> Taneb: oleg has an article on interesting ways to write fix in haskell
21:27:46 <Taneb> I don't believe Oleg exists
21:28:26 <kmc> people say that Oleg is working on a weather predicting computer for the navy
21:28:33 <kmc> but maybe... he is a weather predicting computer
21:29:25 <shachaf> @src Mu
21:29:25 <lambdabot> newtype Mu f = In { out :: f (Mu f) }
21:29:40 <shachaf> data Mu f = Mu (forall a. (f a -> a) -> a)
21:29:40 <shachaf> data Nu f = forall a. Nu a (a -> f a)
21:29:41 <shachaf> data Fix f = Fix (f (Fix f))
21:29:47 <shachaf> I think that Mu is the real Mu.
21:29:55 <shachaf> But it's equivalent to Fix in Haskell?
21:29:57 <Sgeo> Oleg reorganized his site
21:29:59 <shachaf> @src Rec
21:29:59 <lambdabot> newtype Rec a = InR { outR :: Rec a -> a }
21:30:08 <Bike> there's a lot of ways to do this huh
21:30:29 <shachaf> kmc: Not much of a relation between Rec and Fix, I think.
21:31:12 <shachaf> @ty let k = In (go 0) where go n = print n >> return (In (go (n+1))) in k
21:31:13 <lambdabot> Mu IO
21:31:29 <Taneb> :t \f -> f (\x -> outR x x) (InR $ \x -> f (outR x x)
21:31:30 <lambdabot> parse error (possibly incorrect indentation)
21:31:31 <Taneb> :t \f -> f (\x -> outR x x) (InR $ \x -> f (outR x x))
21:31:32 <lambdabot> Occurs check: cannot construct the infinite type: a0 = Rec a0 -> a0
21:31:32 <lambdabot> Expected type: Rec a0
21:31:32 <lambdabot> Actual type: Rec (Rec a0 -> a0)
21:31:44 <Bike> rotting
21:31:52 <Taneb> :t \f -> (\x -> f $ outR x x) (InR $ \x -> f (outR x x))
21:31:53 <lambdabot> (a -> a) -> a
21:31:58 <Taneb> :t \f -> (\x -> f $ outR x x) (InR $ \x -> f $ outR x x)
21:32:00 <lambdabot> (a -> a) -> a
21:32:06 <zzo38> What is it called if you make the product of all the exponents of a polynomial (reduced to terms with the coefficient always being 1)?
21:32:45 <Bike> What's the point of that?
21:33:07 <shachaf> Bike: lern2zzo38
21:40:47 <zzo38> Is there a way to parse the text of Magic: the Gathering cards by computer to make it into a computer program with the same meaning?
21:41:04 <Taneb> I'd imagine not
21:42:23 <zzo38> Probably it won't work with the Alpha cards anyways; I don't know how well it would work with the new cards, though.
21:46:04 -!- atriq has joined.
21:46:08 -!- Taneb has quit (Ping timeout: 260 seconds).
21:48:01 -!- sivoais has quit (Ping timeout: 252 seconds).
21:48:55 -!- sivoais has joined.
21:50:08 <atriq> :t ap id InR <$> fmap `flip` join outR
21:50:10 <lambdabot> (a -> a) -> a
21:51:44 <atriq> fixed point combinator without explicit recursion or brackets
21:52:55 <shachaf> @ty id <*> InR <$> fmap `flip` join outR
21:52:57 <lambdabot> (a -> a) -> a
21:53:25 <atriq> That works also
21:55:34 -!- DHeadshot has joined.
21:56:38 <oerjan> :t fmap `flip` join outR
21:56:40 <lambdabot> (a -> b) -> Rec a -> b
21:57:25 <atriq> :t \f -> f . join outR
21:57:27 <lambdabot> (a -> b) -> Rec a -> b
21:57:50 <oerjan> :t outR
21:57:51 <lambdabot> Rec a -> Rec a -> a
21:58:04 -!- atriq has changed nick to Taneb.
22:01:37 <oerjan> :t inR
22:01:39 <lambdabot> Not in scope: `inR'
22:01:39 <lambdabot> Perhaps you meant one of these:
22:01:39 <lambdabot> `int' (imported from Text.PrettyPrint.HughesPJ),
22:01:44 <oerjan> :t InR
22:01:45 <lambdabot> (Rec a -> a) -> Rec a
22:02:52 <oerjan> :t ap id InR
22:02:53 <lambdabot> (Rec b -> b) -> b
22:04:03 <oerjan> :t ap id
22:04:05 <lambdabot> ((a -> b) -> a) -> (a -> b) -> b
22:15:24 <Sgeo> Erm, isn't ap more generic than that?
22:15:25 <Sgeo> :t ap
22:15:27 <lambdabot> Monad m => m (a -> b) -> m a -> m b
22:15:27 <Sgeo> oh, duh
22:19:54 -!- Taneb has quit (Quit: Leaving).
22:20:14 -!- augur has joined.
22:20:45 -!- DHeadshot has quit (Ping timeout: 260 seconds).
22:24:30 <oerjan> :t join outR
22:24:32 <lambdabot> Rec a -> a
22:24:41 <Sgeo> Rec?
22:25:06 <oerjan> see backscroll.
22:25:06 <Sgeo> ^list
22:25:07 <fungot> Taneb atriq Ngevd Fiora nortti Sgeo ThatOtherPerson alot
22:25:53 <oerjan> :t join outR . InR
22:25:55 <lambdabot> (Rec b -> b) -> b
22:26:04 <Sgeo> @hoogle InR
22:26:04 <lambdabot> Data.Ix inRange :: Ix a => (a, a) -> a -> Bool
22:26:04 <lambdabot> Text.ParserCombinators.ReadP chainr :: ReadP a -> ReadP (a -> a -> a) -> a -> ReadP a
22:26:04 <lambdabot> Text.ParserCombinators.ReadP chainr1 :: ReadP a -> ReadP (a -> a -> a) -> ReadP a
22:26:11 <Sgeo> ?
22:26:15 <Sgeo> :t InR
22:26:16 <lambdabot> (Rec a -> a) -> Rec a
22:26:55 <Sgeo> :t ourR
22:26:56 <lambdabot> Not in scope: `ourR'
22:26:56 <lambdabot> Perhaps you meant `outR' (line 144)
22:26:57 <Sgeo> :t ouTR
22:26:58 <lambdabot> Not in scope: `ouTR'
22:26:59 <lambdabot> Perhaps you meant `outR' (line 144)
22:27:00 <Sgeo> :t outR
22:27:01 <lambdabot> Rec a -> Rec a -> a
22:27:08 <oerjan> > (0$0 `outR`)
22:27:11 <lambdabot> The operator `L.outR' [infixl 9] of a section
22:27:11 <lambdabot> must have lower preceden...
22:27:27 <oerjan> seems to be directly in lambdabot's L module
22:28:46 <oerjan> :t InR . const
22:28:48 <lambdabot> a -> Rec a
22:33:08 <oerjan> :t join outR . InR . join outR
22:33:10 <lambdabot> Rec (Rec b -> b) -> b
22:33:25 <oerjan> :t join outR . InR $ join outR
22:33:27 <lambdabot> b
22:33:37 <Sgeo> !
22:34:43 <oerjan> @unpl join outR . InR
22:34:43 <lambdabot> (\ c -> (outR >>= \ d -> d) ((InR) c))
22:35:43 <oerjan> :t \x -> outR (InR x) (InR x)
22:35:44 <lambdabot> (Rec a -> a) -> a
22:36:44 <oerjan> :t ap id OutR
22:36:45 <lambdabot> Not in scope: data constructor `OutR'
22:36:53 <oerjan> :t ap id InR
22:36:55 <lambdabot> (Rec b -> b) -> b
22:37:26 -!- DHeadshot has joined.
22:38:29 <oerjan> ok it's just fix id
22:40:52 -!- jokarkka has joined.
22:41:38 -!- jokarkka has changed nick to kyyni.
22:41:54 <oerjan> `welcome kyyni
22:42:07 <HackEgo> kyyni: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
22:48:14 -!- kyyni has quit (Quit: leaving).
22:48:16 -!- augur has quit (Remote host closed the connection).
22:49:12 -!- azaq23 has joined.
22:50:36 -!- kyyni has joined.
22:51:02 <Phantom_Hoover> `relcome kyyni
22:51:06 <HackEgo> kyyni: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: http://esolangs.org/wiki/Main_Page. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
22:51:41 <fizzie> Oh no, more .fi.
22:52:06 -!- oerjan has set topic: The harmonic mean welcoming channel on Freenode. You have been warned. | <Taneb> #esoteric is supposed to be about esoteric programming languages, but is really a couple of dozen people being weird | Newsflash: fungot has been writing spam for money. | Logs: http://codu.org/logs/_esoteric/.
22:55:08 <kyyni> that's the state of affairs
22:56:26 <oerjan> how kyynical
22:56:46 <fizzie> If arithmetic mean is (a1+a2+...+an)/n and geometric mean is (a1*a2*...*an)^(1/n), can you go one step further still, and get some kind of f(a1^a2^...^an) mean? (I guess that's a bit unlikely, what with ^ not being commutative or anything...)
22:57:10 <oerjan> huh i don't know
22:57:47 <Sgeo> LoseThos is now known as TempleOS
22:57:53 <Sgeo> http://www.reddit.com/r/programming/comments/1aqdxn/temple_operating_system_v100_released/
22:59:15 <Phantom_Hoover> i kind of had it in my head that that guy died
22:59:36 <Arc_Koen> fizzie: well you could select a subset such that ^ would be commutative
22:59:58 <Arc_Koen> like {x} or {2, 4}
23:00:06 <Arc_Koen> hmmm it still wouldn't be associative
23:00:32 <fizzie> The trimean is the average of the median and the midhinge.
23:00:38 <Arc_Koen> that's a shame because defining means on sets like {x} is pretty easy
23:00:41 <Bike> i think there's a generalized mean
23:00:47 <zzo38> I have also read of "ZungJung" average
23:00:56 <Phantom_Hoover> fizzie, well you need some concept of right-inverse tetration
23:01:24 <fizzie> (Midhinge is the average of the first and third quartile.)
23:02:01 <fizzie> There seem to be several generalized means.
23:02:49 -!- variable has changed nick to function.
23:03:01 <zzo38> Another thing I want to know is, anyone who is artist are you able to make the METAFONT files for the mana and tap symbols of Magic: the Gathering cards?
23:03:35 <shachaf> zzo38: are you artist?
23:03:42 <zzo38> No. Not very good.
23:03:52 <zzo38> I mean someone who know how to make this specifically.
23:04:03 <fizzie> A constructive artist, also called a con artist.
23:05:57 <Jafet> Constructivartist
23:06:08 -!- jiella has joined.
23:06:28 <Sgeo> I think reading that thread makes me feel more empathy
23:06:41 <Sgeo> Can schizophrenia cause racism in people who wouldn't otherwise be racist?
23:07:30 <Bike> mental disorders aren't quite like that.
23:08:05 -!- fungot has quit (Ping timeout: 248 seconds).
23:08:19 <Phantom_Hoover> yeah, 'racism' isn't some discrete personality trait
23:24:59 <Phantom_Hoover> Sgeo, it would be nice if people would dissociate his shitty os design from the fact that he's scary mad, though
23:34:49 * Sgeo wonders if he should play a tale in the desert
23:34:58 <Sgeo> Tried it once, it seemed boring, but I didn't get very far
23:35:39 <Phantom_Hoover> why are you not watching farscape
23:36:01 <Phantom_Hoover> it will enrich your life and make you physiologically potent
23:40:37 <Sgeo> Why are you not watching PMMM?
23:40:58 -!- Bike_ has joined.
23:41:59 -!- Bike has quit (Ping timeout: 252 seconds).
23:42:53 <Phantom_Hoover> because it will make me the opposite of that
23:43:22 <Sgeo> It will only cost you 6 hours to watch the whole thing
23:44:19 <Phantom_Hoover> and what else
23:45:41 -!- jiella1 has joined.
23:46:31 <Fiora> you will long have memories of a wonderful, heart-touching experience that will forever shape your psyche?
23:47:34 -!- Lymia has joined.
23:47:34 -!- Lymia has quit (Changing host).
23:47:34 -!- Lymia has joined.
23:47:40 -!- jiella has quit (Ping timeout: 260 seconds).
23:48:09 <Bike_> truly horrible
23:48:11 -!- Bike_ has changed nick to Bike.
23:49:16 -!- nooodl has quit (Ping timeout: 272 seconds).
23:49:58 * Lymia nyan
23:50:02 * Lymia sits on Fiora's lap ^_^
23:50:15 <Phantom_Hoover> oh dear
23:50:25 <Phantom_Hoover> are we reaching critical weeaboo
23:50:34 <Lymia> Nah
23:50:45 <Lymia> You need stupider people for that.
23:50:46 <Fiora> eeep that's not a very big lap
23:50:49 <Lymia> Or sillier people.
23:50:57 <Lymia> Sillier works better.
23:51:05 <Fiora> it works better for small things like plushies and cats not people
23:51:20 <Bike> phantom-kun, control rod denwa
23:51:40 <Lymia> !bfjoust bike <
23:51:51 <EgoBot> ​Score for Lymia_bike: 0.0
23:52:00 <Bike> :<
23:53:36 * Fiora tries to squirm out and offers Lymia a spot on the couch
23:54:14 <Bike> why is it always a couch
23:54:19 <Bike> why not, say, a trampoline
23:54:30 <Phantom_Hoover> too expensive
23:54:33 <Fiora> trampolines aren't very comfy
23:54:38 <Fiora> they don't have like, comfy pillows and things
23:54:46 <Bike> but you can bounce
23:54:59 <Phantom_Hoover> yeah
23:55:06 <Phantom_Hoover> it's active comfort
23:55:24 <Phantom_Hoover> remember back when we didn't have colours on?
23:55:39 <Bike> nope
23:56:10 <Phantom_Hoover> it was horrible
23:56:37 <Bike> i can imagine
23:56:44 -!- jiella1 has quit (Quit: Leaving.).
23:57:08 <Fiora> I should try this
23:57:14 <Fiora> This is a nice color, really.
23:57:20 <Bike> homutext
23:57:27 <Phantom_Hoover> i will actually stab you both
23:57:27 <Fiora> ... Homura?
23:57:40 -!- boily has quit (Quit: Poulet!).
23:57:46 <Bike> uh phantom don't you need to be corporeal for that
23:57:59 <Phantom_Hoover> i'll attach fins to a knife or something and put it into the suborbital brick delivery system
23:58:11 -!- metasepia has quit (Remote host closed the connection).
23:58:15 <Lymia> Just drop giant chunks of rock.
23:58:18 <Bike> that sounds pretty hard to aim.
23:58:28 <Phantom_Hoover> Lymia, that's what the bricks are fall
←2013-03-20 2013-03-21 2013-03-22→ ↑2013 ↑all