←2011-02-16 2011-02-17 2011-02-18→ ↑2011 ↑all
00:00:48 <fizzie> :help sponsor, which is in the splash, still is all "see [uganda]" though.
00:01:40 <elliott> fizzie: It only pops it up every now and then.
00:01:43 <elliott> (Yes, it's non-deterministic.)
00:01:56 <elliott> Maybe the first time you run it on a tty, it seems.
00:02:21 <fizzie> Oh, I see.
00:09:36 -!- GreaseMonkey has joined.
00:09:36 -!- GreaseMonkey has quit (Changing host).
00:09:36 -!- GreaseMonkey has joined.
00:17:08 <quintopia> watson is getting steamrolled right now
00:17:18 <elliott> americans
00:17:19 <elliott> so weird
00:24:00 <elliott> Wow. -funroll-loops actually helps this program.
00:24:08 <Gregor> lol @ emacs users
00:24:20 <Gregor> "I would argue why emacs is so great, but my crippling RSI is preventing me from typing too much."
00:24:55 <elliott> Gregor: You will note that I was arguing from a pro-vi, anti-vim angle.
00:25:04 <elliott> "Oh, I want to use vi, [but I'd rather it be at least half as bloated as Emacs...]"
00:25:16 <elliott> I use Emacs but don't like it :P
00:25:25 <Sgeo> On the one hand, she [not KT-AT] called me "bay-beh" at the end of our conversation. On the other hand, she made it very clear that she does not find programming intuitive
00:26:04 <elliott> oerjan: hm does ( need to know where { is with your scheme?
00:26:43 <elliott> { needs to know where ( is obviously
00:27:29 -!- cheater00 has joined.
00:29:07 <elliott> oerjan: I find your lack of COMMENTS DISTURBING
00:30:56 -!- cheater99 has quit (Ping timeout: 272 seconds).
00:33:00 <oerjan> elliott: nope
00:33:24 <elliott> oerjan: hm. but i do have to note which ( operations have associated {}s to nest them properly :D
00:33:30 <oerjan> elliott: i am trying to browse a few web sites i haven't checked out since saturday
00:33:45 -!- augur has quit (Remote host closed the connection).
00:33:46 <quintopia> welp watson killed it
00:34:01 <oerjan> elliott: um, i thought you had lance up and going already?
00:34:07 -!- sebbu2 has joined.
00:34:08 -!- sebbu2 has quit (Changing host).
00:34:08 -!- sebbu2 has joined.
00:34:23 <elliott> oerjan: I did, but it had a bug that I couldn't figure out, so I'm basically rewriting it
00:34:32 <elliott> oerjan: It's done apart from {}
00:35:04 <oerjan> elliott: ok the thing about {} is to find the matching ()'s. this is the only part of the grammar which isn't context free...
00:35:13 <elliott> oerjan: yes, i already handle that, with my nesting stack
00:35:22 <oerjan> except that it is _itself_ a CF language though
00:35:33 <oerjan> intersecting with the rest
00:35:51 <oerjan> elliott: ok then what's the problem?
00:36:21 <elliott> oerjan: there is none
00:36:23 <elliott> :P
00:36:26 <oerjan> good, good
00:36:45 <elliott> oerjan: ok. but the ) needs to know where the } is.
00:36:48 <elliott> i think i can handle that.
00:37:02 <oerjan> obviously, for jumping, as does the { the (
00:37:07 -!- sebbu has quit (Ping timeout: 240 seconds).
00:37:07 -!- sebbu2 has changed nick to sebbu.
00:37:17 <oerjan> everything else depends on where you put the actual counter/maximum data
00:38:05 <oerjan> if the counter is 0 in the center, only ( and ) need to know the maximum
00:38:26 <oerjan> ...actually you could get away without ( knowing it, i think
00:39:07 <oerjan> if you're not using a stack
00:39:41 <oerjan> or wait can you
00:40:09 <oerjan> no, not with (({{}})) nesting, you cannot be assured it's set right before the (
00:41:15 <oerjan> and } is the only one which doesn't even need to know where the counter is
00:43:33 <elliott> $ ./lance '(+.)*-1' ''
00:43:33 <elliott> Syntax error: )* not followed by a repeat count (on line 1, at column 7)
00:43:34 <elliott> hmm
00:52:03 -!- iconmaster has joined.
00:55:02 -!- augur has joined.
00:57:29 <elliott> oerjan, did you break this? :/
00:57:41 <oerjan> break what?
00:57:44 -!- iconmaster has quit (Ping timeout: 255 seconds).
00:58:18 -!- pikhq has quit (Ping timeout: 240 seconds).
00:58:31 -!- pikhq has joined.
01:01:02 <Gregor> I want to find that level in SMW where Lakitu has a green mushroom on a fishing rod, and make two screenshots: One while he's carrying it and one getting hit by a spiny he throws. Then I will caption them "Lakitu giveth" and "Lakitu taketh away"
01:01:43 <elliott> Gregor: And then, finally, you will have fulfilled your purpose in life.
01:01:49 <Gregor> Yup
01:01:54 <elliott> By making TWO MILDLY FUNNY GAME-BASED CAPTIONED PICTURES
01:02:26 <Gregor> ITYM one mildly-funny two-caption game-based picture :P
01:21:11 <elliott> quintopia: oh! so this is why you guys keep talking about jeopardy!
01:21:15 <elliott> quintopia: this watson thing!
01:21:26 <elliott> quintopia: jeez WHY DID NOBODY INFORM
01:23:39 <quintopia> you never indicated you didn't jnow?
01:29:47 <elliott> quintopia: in britain
01:29:55 <elliott> we do not watch such trivial shows as you americans do
01:29:57 <elliott> we stick to high-class fare
01:29:57 <elliott> like
01:29:59 <elliott> britain's got talent
01:30:03 <elliott> dancing on ice
01:30:08 <elliott> and five thousand soap operas
01:30:09 <elliott> so
01:30:16 <elliott> no, I do not know about this Jeopardy! event thing!
01:30:29 * Lymia snatches elliott's tea
01:30:57 <elliott> FUCK YOU, MY MONOCLE WILL BE DISTURBED SLIGHTLY RETRIEVING THAT STOLEN GOOD
01:31:11 <Lymia> :(
01:31:56 <elliott> oerjan: Have you, in fact, "broken this shit"?
01:32:20 -!- nescience has joined.
01:32:49 <oerjan> elliott: i have no idea what you are referring to
01:32:50 <elliott> aha
01:32:51 <elliott> fixed
01:32:55 <elliott> oerjan: It was some shit that was broken, so to speak.
01:33:14 <Sgeo> How many people have trouble with for loops in C-like languages thanks to Visual Basic
01:33:57 <Lymia> What's Visual Basic's version of for loops?
01:34:06 <Lymia> The lack of such or something?
01:34:13 <quintopia> none that aren't idiots
01:34:25 <Sgeo> For i = somenumber To someothernumber
01:34:34 <nescience> end for
01:34:39 <nescience> next?
01:34:40 <nescience> next
01:35:00 <Sgeo> Yeah, Next
01:35:30 <oerjan> elliott: is the egobot bfjoust still allowing unmatched [] in ()* constructions?
01:35:39 <elliott> oerjan: yes. it is tyranny. but it will be ended soon. by lance.
01:35:44 <elliott> and fire.
01:35:45 <Lymia> oerjan, is that becoming a problem?
01:36:03 <oerjan> Lymia: it will be removed when the interpreter is replaced by a more efficient one
01:36:12 <Lymia> Ah.
01:36:14 <oerjan> because it makes it very hard to interpret efficientaly
01:36:43 <oerjan> elliott: i just noticed the recent editions of the BFJoust wiki page had removed that requirement from their definition
01:36:56 <elliott> oerjan: oh. well the edits suck anyway frankly >_>
01:36:59 <oerjan> but i guess that can be changed when the interpreter changes
01:37:21 <elliott> style guidelines fragrantly (yes fragrantly, as in fragrance) violated, italics <i>up the wazoo</i>
01:37:22 <oerjan> actually let me put it there as a warning
01:37:31 <elliott> oerjan: i'd prefer reverting X-P
01:37:36 <elliott> just that sneaky Gregor is all
01:37:36 <elliott> OH
01:37:37 <elliott> I'M AMERICAN
01:37:38 <elliott> I HAVE NO TASTE
01:37:39 <oerjan> ok i won't change it then
01:37:40 <elliott> SO I LIKE IT
01:38:01 <elliott> oerjan: psst if you just say "OH YEAH REVERTING IS AWESOME" then i'll have two europeans agreeing
01:38:04 <elliott> which is worth like 10 americans
01:38:37 <oerjan> *efficiently
01:38:46 <elliott> oerjan: yes indeed now agree
01:38:50 <elliott> be all
01:38:53 <elliott> "yes, i am agreeing"
01:39:28 <quintopia> elliott: IS LANCE FINISHED?????
01:39:43 <elliott> quintopia: in fact I am putting my final touches to THE INTERPRETERANODON right now.
01:39:51 <quintopia> :D
01:40:02 <elliott> can I revert if I agree to make the article so, so good tomorrow? :P
01:40:08 <elliott> i'm like
01:40:09 <elliott> the best writer
01:43:56 -!- variable has quit (Remote host closed the connection).
01:44:45 -!- variable has joined.
01:46:10 <oerjan> just one thing. everyone agree that the singular noun "parenthesis" does _not_ denote a pair of them?
01:47:28 <oerjan> YOUR WILD PROTESTS ARE TOO LATE
01:47:57 <pikhq> What about our calm, reasoned protests?
01:48:36 <oerjan> the edit has already happened. please unite under the common policy.
01:49:16 <Sgeo> How does The Onion Radio News suck so much?
01:49:46 <quintopia> elliott: don't revert. just improve it! i already made it about a thousand times less suck.
01:49:55 <elliott> quintopia: man no it's like 10x more suck.
01:49:56 <elliott> oerjan: agree
01:50:06 <elliott> quintopia: ais was all
01:50:10 <elliott> quintopia: "fucking ITALICS remove them"
01:50:11 <elliott> with less profanity
01:50:12 <elliott> and i was like
01:50:16 <elliott> fucking Capitalisation Is Wrong In Headings
01:50:17 <elliott> and I'm like
01:50:18 <elliott> man
01:50:26 <elliott> quintopia: i would improve it - totally - but -
01:50:32 <elliott> quintopia: I'm British, you must understand
01:50:32 <elliott> and
01:50:34 <quintopia> elliott: people were complaining it made no snse and was full of jargon. i defined everything and organized it sensibly
01:50:43 <quintopia> don't trash those improvements
01:50:47 <elliott> nobody complained that. apart from maybe people not in here, who are not the consumers of the wiki
01:50:58 <elliott> as I was saying - British - we're allergic to BLUDGEONING VIA TEXT, a very specific condition so while i would
01:50:58 <quintopia> they should be
01:51:03 <elliott> love to press edit and make modifications
01:51:17 <elliott> - quintopia: no, it wasn't full of jargon, it was perfectly reasonable, could do with edits and stuff to be better organised,
01:51:34 <elliott> but I don't see why you're so interested in getting random people to play bf joust, the kind of person who would be good at it will already find it themselves via the wiki and this channel -
01:51:37 <quintopia> my goal was to target non#esoteric people so as to lower the barrier of entry to new players
01:51:41 <elliott> i can't, you see, as i would instantly die of a heart attack.
01:51:42 <quintopia> so don't fuck that up
01:51:53 <elliott> quintopia: it's a game involving writing large amounts of brainfuck code and debugging.
01:51:58 <elliott> there is NO WAY to lower the barrier of entry.
01:52:04 <elliott> it is at the maximum altitude of objects in the world.
01:52:08 <quintopia> no
01:52:13 <elliott> if it were any higher it would enter the stratosphere.
01:52:14 <quintopia> it's easier than corewars
01:52:20 <elliott> *core war
01:52:28 <elliott> and no, it isn't
01:52:34 <quintopia> it is!
01:52:40 <elliott> submit a simple strategy to the hill, go on
01:52:41 <elliott> even a non-trivial one
01:52:43 <elliott> just not an advanced one
01:52:46 <elliott> watch it do terribly
01:52:48 <quintopia> you are crazy sir
01:52:48 <elliott> unless we have a n00b hill
01:52:55 <elliott> it will never have a low barrier to entry
01:53:04 <quintopia> stop thinking about changing things until you go sane
01:53:21 <elliott> and i don't think making the article worse so it has a "lower barrier to entry" helps at all. especially not if the kind of people you link the article to go "oh, i would understand it - if only all the admonishments were italic"
01:53:22 <elliott> >_>
01:53:26 <elliott> i'm not insane
01:53:31 <elliott> but core war has like multiple hills and shit
01:53:31 <quintopia> i didn't make it worse
01:53:35 <elliott> we don't, we have one
01:53:37 <elliott> quintopia: you did
01:53:38 <quintopia> it sucked so bad it hurt before
01:53:43 <quintopia> now it hurts less
01:54:11 <elliott> you crazy. i'm reverting it so that there's an article i can stand to focus my eyes on until tomorrow, when i will rewrite it or something
01:54:18 <elliott> fuckin' anti-british bludgeoning discrimination
01:54:26 <elliott> this is why america needs bombing, ya hear me
01:54:32 <quintopia> fuck you
01:54:48 <elliott> oerjan: look at these personal attacks i get for standing up for british people
01:54:50 <elliott> some fuckin' racism!
01:54:50 <quintopia> i spent an hour making it readable.
01:55:12 <quintopia> don't change it until you do it better
01:55:39 <elliott> i believe my point is precisely that reverting it would be doing better
01:56:36 <quintopia> which is incorrect
01:56:53 <elliott> i believe british opinions are worth more than american ones
01:56:57 <elliott> your voting is totally outed
01:57:05 <quintopia> reverting it is like upending a dirty laundry basket
01:57:25 <quintopia> it was a mess and had no semblance of order
01:58:11 <quintopia> you don't like the way i wroe the rules, rewrite them, but at least leave the current rules (the only rules used by anyone anywhere) at the top of the article where they belong
01:58:20 <elliott> all that needs doing is merging the three original sections and adding some introductory material _in a separate section or article_, *not* mixed in with the factual
01:58:30 <elliott> merging the latter two, that is
01:58:34 <elliott> and leaving the first as a historical note
01:59:21 <quintopia> historical note? people want history, they read the history section or oook at the article's history
01:59:28 -!- augur has quit (Ping timeout: 240 seconds).
01:59:35 <quintopia> the purpose of the article is to inform
01:59:40 <quintopia> about the current game
02:00:01 <Lymia> Stop fighting.
02:00:03 <Lymia> D=
02:00:07 <elliott> quintopia: that's why i said
02:00:08 <elliott> historical note
02:00:10 <elliott> in a history section
02:00:16 <elliott> now you're just being an idiot, that's exactly what i said ...
02:00:18 <elliott> sheesh
02:00:30 <quintopia> that's what i did with the article
02:00:42 <quintopia> i put the rules at the top and made a history section
02:00:53 <elliott> no, you pushed the rules to the top /and mixed them with introductory material/
02:00:56 <elliott> which just clouds both
02:02:24 <quintopia> the introductory material was already mixed with rules
02:02:33 <quintopia> i was copying the original format there
02:03:07 <quintopia> but again, that's something you could rewrite without ruining the far saner organization of the article
02:03:28 <elliott> so what you're saying is, i can rewrite it as long as i keep the current stuff at the top? well duh, nobody liked the old format
02:03:32 <elliott> i just don't like all the other changes :)
02:05:06 <quintopia> i'm saying tat you can rewwrite it,vas long as all the information that is there now stays, and you wait until you have the rewrite to make any change
02:05:36 <elliott> you an rewwrite it, Vas Long!
02:05:49 -!- augur has joined.
02:07:23 <quintopia> no u
02:13:16 <elliott> fizzie: hey
02:13:21 <elliott> fizzie: you know those two programs that were equivalent
02:13:23 <elliott> one using ()%
02:13:24 <elliott> and the other expanded
02:13:26 <elliott> gimme them again?
02:13:28 <elliott> the ones that bugged egojsout
02:16:31 <elliott> 16:25:25 <Sgeo> On the one hand, she [not KT-AT] called me "bay-beh" at the end of our conversation. On the other hand, she made it very clear that she does not find programming intuitive
02:16:31 <elliott> : w a t :
02:17:03 <elliott> man irc does not have
02:17:06 <elliott> enough spacing capabilities
02:17:10 <elliott> for the kind of spacing i want to express to sgeo
02:17:33 <Sgeo> elliott, some programmer girl I met on the bus
02:18:15 <elliott> quintopia: hey you, jewmeister
02:18:17 <elliott> gimme a program using ()%
02:19:44 <oerjan> those politely non-racist brits again
02:20:08 -!- oerjan has quit (Quit: Reboot).
02:22:31 <quintopia> elliott: okay. in a bit.
02:22:45 <elliott> the american man is disobeyful!
02:22:53 <Sgeo> I met her a while ago actually, but haven't spoken to her much since then. I only saw her for the second time today
02:22:55 <quintopia> elliot: why can't you use saccharin-philip?
02:23:08 <Sgeo> She somehow recognized me just as I was leaving the bus
02:23:16 <Sgeo> She remembered my name, and told me to call
02:23:18 <elliott> is it short?
02:23:19 <elliott> also TWO
02:23:20 <elliott> FUCKING
02:23:21 <elliott> TS
02:23:42 <elliott> $ ./lance '(>)*9([-]>)*21' ''
02:23:42 <elliott> <====================
02:23:43 <elliott> <====================
02:23:45 <elliott> INTERESTING
02:23:48 <elliott> oh
02:23:49 <elliott> duh
02:25:21 <coppro> that's a good sign
02:26:12 -!- nescience has quit (Ping timeout: 240 seconds).
02:27:48 <quintopia> sgeo: call her asap. go get you some
02:27:58 <Sgeo> quintopia, I called her earlier
02:27:59 <quintopia> and then transfer to a decent school
02:28:41 <Sgeo> She talked for half an hour about jobs
02:28:50 <quintopia> lame
02:29:02 <quintopia> talk about going out together
02:30:08 <Sgeo> About how she needs to knoww the answers for questions on interviews, how one needs to know every program (her term for programming language)
02:31:35 <elliott> giving advice to sgeo: PRODUCTIVE USE OF TIME
02:31:40 <elliott> has worked many times before in past!
02:32:25 <elliott> "one needs to know every program (her term for programming language)"
02:32:31 <elliott> you have exceeded my requirements for spacing
02:32:38 <elliott> : w a t :
02:32:42 <elliott> never do this again
02:33:03 <Sgeo> elliott, you don't think I have a high regard of her programming ability, do you?
02:33:29 <quintopia> sgeo: that sort of conversation will not get you laid! come back when you have exciting stories
02:34:08 <elliott> quintopia: dude the last time it was a girl who thought vitamin c cures cancer!
02:34:11 <elliott> quintopia: he may have INHERENT BAD LUCK.
02:34:22 <Sgeo> elliott, I'm still interested in her
02:34:58 <elliott> or just inherent poor judgement i guess
02:35:04 <quintopia> lol
02:35:35 <quintopia> sgeo: hit it and quit it. you don't need anything else tying you to that godforsaken place
02:35:40 <Sgeo> In 2009 it was an abstinence-only girl
02:36:07 <elliott> GIVING ADVICE TO SGEO
02:36:11 <elliott> STILL EXCELLENT USE OF TIME
02:36:22 <elliott> TRIED BEFORE TO SUCCESS DESCRIBED IN ADJECTIVE FORM AS: "GREAT"
02:37:45 -!- oerjan has joined.
02:37:58 <quintopia> yep
02:43:34 <elliott> hmm, how peculiar
02:45:22 <elliott> yay it works
02:45:28 <elliott> quintopia: got a program using ()% yet?
02:47:01 <elliott> I DOTH VERILY SEE THE PROBLEM AT WORK HERE
02:47:05 <elliott> !bfjoust hang_4eva ({})%3
02:47:21 <elliott> hey Gregor greggsy gregsmeister
02:48:09 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/HSgG
02:48:12 <Gregor> May or may not work...
02:50:19 <Gregor> elliott: Just noticed that you did that X_X
02:50:24 -!- azaq23 has joined.
02:50:31 <elliott> Gregor: It's an infinite loop, yo.
02:50:34 <Gregor> elliott: Remember how you're supposed to be making something better.
02:50:35 <EgoBot> Score for elliott_hang_4eva: 3.1
02:50:36 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 41.5
02:50:38 <elliott> Gregor: I think egojsout is vulnerable too.
02:50:48 <elliott> Gregor: Umm, yes, I'm trying to debug the fact that ({})%3 infloops in lance :P
02:51:00 <elliott> Despite the fact that I'm DIRECTLY COPYING EGOJSOUT*
02:51:00 <elliott> *kinda
02:51:13 <elliott> Hmm it does NOT FREEZE why is this
02:51:28 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
02:51:47 <Gregor> Because it's not made of fail?
02:52:01 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/HSgG
02:52:14 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 41.2
02:52:16 -!- poiuy_qwert has joined.
02:52:21 <elliott> Gregor: Nobut, as far as I can tell the semantics you implement for ({}) SHOULD infloop it.
02:52:31 <Gregor> ... no
02:52:36 <elliott> My trace looks like
02:52:37 <elliott> ({{{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{}){{})...
02:52:50 <quintopia> elliott: where's a good place for science news that doesn't make stupid mistakes or dumb it down to a degree that makes it not worth reading?
02:52:56 <Gregor> My trace should look like ({{{})))
02:53:01 <elliott> Gregor: WELP
02:53:13 <oerjan> elliott: it looks to me like your ) jumps back to the { rather than repeating itself
02:53:28 <elliott> oerjan: it should jump back to the }. but hm, yes, right, ) may be broken. oh. of course.
02:53:31 <elliott> its jump is always the (.
02:53:33 <elliott> must be }, in some cases.
02:53:35 <elliott> shall fix.
02:53:43 <elliott> quintopia: /r/science has recently got new actual-scientist mods and have vowed to totally delete shit that isn't proper sc13nc3, but I don't know how well it's worked
02:53:53 <elliott> looking at the front page it seems alright, much better than it used to be
02:54:01 <quintopia> sweet
02:54:09 <elliott> albeit not much actual _news_ news
02:54:16 <quintopia> ah
02:54:19 <elliott> but i guess there's a finite supply of interesting enough stuff
02:54:25 <elliott> I do see science news regularly
02:54:28 <elliott> on the front page proper
02:54:29 <elliott> from /r/science
02:57:47 -!- augur has quit (Ping timeout: 272 seconds).
02:59:59 -!- augur has joined.
03:03:37 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/CdEA
03:04:41 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 40.5
03:04:45 <Gregor> Hrm
03:05:21 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/MJdI
03:06:56 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 40.8
03:07:06 <Gregor> Oh noooooose
03:07:50 <elliott> oerjan: so er ) has to know where } is
03:07:56 <Gregor> With as many big decoys as there are on the hill right now, this will certainly fail:
03:07:57 <elliott> oerjan: but does ) have to know where ( is, if the maximum iteration is in (?
03:08:03 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/jKMS
03:08:42 <quintopia> gregor: stop for a second so i can check and make sure the ({})% compressed version of wireless_frownie is equivalent to egojoust?
03:08:57 <Gregor> quintopia: As soon as this one goes through, you go ahead.
03:09:12 <elliott> <elliott> oerjan: but does ) have to know where ( is, if the maximum iteration is in (?
03:09:13 <elliott> oerjan
03:09:14 <elliott> i need your scienc
03:09:15 <elliott> e
03:10:01 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 37.4
03:10:03 <quintopia> !bfjoust wireless_frownie (>)*7+<-<(+)*18<(-)*19<(-)*19<(+)*19<(-)*17<(-)*22(>)*9([[[[-[++([+{[(-)*26.[.-].[.++-------]]}])%25]]]]]+>)*21
03:10:08 <elliott> Gregor: get the science-meister oerjan
03:10:19 <Gregor> I need a better rush-clear algorithm ...
03:10:26 <EgoBot> Score for quintopia_wireless_frownie: 48.2
03:10:36 <quintopia> allegro is yeah that's the same score
03:10:43 <quintopia> elliott: there's a ({})% program for you
03:10:53 <quintopia> oh whoops
03:10:58 <quintopia> i interrupted myself XD
03:11:05 <quintopia> i was going to say allegro is kicking ass
03:11:09 <elliott> quintopia: simpler one would be nice :P
03:11:20 <Gregor> quintopia: I can go now, right? :P
03:11:35 <quintopia> elliott: that's freakishly simple. it doesn't even have any nesting of ({})%!
03:11:39 <quintopia> Gregor: go fer it
03:11:42 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/RDgF
03:11:47 <Gregor> This will assuredly be worse.
03:11:51 <elliott> quintopia: NOT FREAKISHLY SIMPLE FOR LANCE "SIMPLETON" LANCE
03:11:54 <elliott> but srsly
03:11:56 <elliott> needs the oerjan magic
03:12:39 <elliott> NO WAIT. THIS IS A GOOD THING. I AM NOT IN REQUIREMENT OF THE ... NO, I AM ... NOT!
03:12:53 <quintopia> make up yer mind
03:12:56 <elliott> IN FACT, IF I JUST MAKE SURE THAT ) KNOWS WHERE } IS, AND } GETS THE REPEAT COUNT -- I WILL BE FASCISM AT LAST!!
03:13:10 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 26.9
03:13:11 <elliott> this is really how i communicate with myself
03:13:11 <elliott> ahem
03:13:12 <elliott> anyway
03:13:13 <elliott> code time
03:13:26 <Gregor> lol
03:13:28 <elliott> oh dear, it is in requirement of: A BAD THING -- that is -- different nesting function! such the bads!
03:13:35 <elliott> therefore! write new function!
03:13:58 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/KRPY
03:14:23 <elliott> no wait!
03:14:25 <elliott> it doesn't push!
03:14:26 <elliott> BADS!
03:14:32 <elliott> but
03:14:33 <elliott> I can make it
03:14:43 <quintopia> ...if only he only talked to himself when talking to himself...
03:15:09 <quintopia> so i saw that ais523 likes my scoring alg :)
03:15:11 <elliott> quintopia: ha ha, what an amusing idea
03:15:15 <elliott> i disregard it
03:15:19 <elliott> bitch
03:15:22 <elliott> ehm okay it actually has to pop both
03:15:25 <Gregor> I'm not gonna implement shit in C 'til the weekend :P
03:15:26 <elliott> this is the worst day in my life? possibly
03:15:32 <elliott> no
03:15:33 <elliott> DEFINITELY
03:15:34 <elliott> oh wait
03:15:35 <elliott> I can do it in a
03:15:37 <Gregor> In fact, I'm not gonna implement anything BFJ-related except for warriors 'til the weekend.
03:15:39 <elliott> SPECTAMGULOUS WAY
03:15:48 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 45.1
03:15:49 <quintopia> Gregor: what's got you busy these days?
03:15:57 <elliott> quintopia: furry furry nipple clamp girls
03:15:59 <Gregor> quintopia: Schwork.
03:16:05 <elliott> duh
03:16:08 <quintopia> researches?
03:16:13 <quintopia> studying the javscripts?
03:16:22 <elliott> no
03:16:25 <elliott> furry furry nipple clamp girls.
03:16:28 <elliott> OH MAN
03:16:30 <elliott> I BROKE IT IN A TRUE WAY
03:16:31 <elliott> TRUE AND PROUD
03:16:34 <elliott> FEELS GOOD TO BE AN AMERICAN
03:17:04 <elliott> wrong! wrong! this code is WRONG!
03:17:09 <elliott> {} is NOT THE SIMPLE
03:17:50 <elliott> oh man
03:17:55 <elliott> I think { doesn't even set it right
03:17:56 <elliott> oh wait
03:17:57 <elliott> doesn't have to
03:17:58 <elliott> yay
03:19:00 <elliott> $ ./lance '({})%3' ''
03:19:00 <elliott> Syntax error: )% after repeat block not containing {}s; should be )* (on line 1, at column 5)
03:19:07 <elliott> useful error messages. wrong, but useful
03:27:21 <Gregor> Oy, I forgot trails again.
03:29:06 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/APba
03:29:08 <elliott> Gregor: *Oy vey,
03:29:16 <elliott> You... you... jew person.
03:29:56 <Gregor> Yowza, this is much worse :P
03:30:08 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 33.9
03:30:58 <Gregor> !bfjoust furry_furry_nipple_clamp_girls http://sprunge.us/aZGh
03:31:18 <quintopia> i have this idea that's going to require SO MUCH NESTING.
03:31:25 <elliott> Gregor: *Oy vey, this is much oy vey :Oyvey
03:31:26 <quintopia> SO MUCH NESTING I DON'T EVEN FEEL LIKE WRITING IT.
03:31:48 <Gregor> quintopia: Remember my 400MB program? :P
03:31:54 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 37.1
03:32:04 <elliott> quintopia: Generator.
03:32:31 <quintopia> elliott: i don't think it'll need a generator. i think the nesting will be regular enough i can compress it.
03:37:38 <oerjan> <elliott> oerjan: but does ) have to know where ( is, if the maximum iteration is in (? <-- ) needs to know the maximum iteration (assuming the counter is incrementing outwards.) you could save the maximum also with ) instead of ('s position, i guess.
03:37:52 <elliott> yeah.
03:38:01 <elliott> this is gettin' kinda BUGGSY though.
03:39:05 <quintopia> gangsta?
03:39:17 <elliott> totally
03:40:34 <oerjan> <elliott> IN FACT, IF I JUST MAKE SURE THAT ) KNOWS WHERE } IS, AND } GETS THE REPEAT COUNT -- I WILL BE FASCISM AT LAST!! <- that's a bit strange since } doesn't need to know it _itself_...
03:40:55 <elliott> oerjan: yes but, if i do it the other way, ) has to know where } _and_ ( is
03:41:00 <elliott> which is ANOTHER field in ins_t
03:41:02 <elliott> something i would RATHER AVOID
03:41:10 <elliott> since i allocate like 1 million of them to store shit
03:42:53 <oerjan> elliott: i told you, ) can save the maximum count with itself. just duplicate it, it never changes.
03:43:10 <elliott> oerjan: well that is TRUE. it is er
03:43:13 <elliott> very true yes
03:43:15 <elliott> oerjan: BUT HOWEVER
03:43:18 <elliott> ) matches both ( and }
03:43:18 <elliott> so
03:43:19 <elliott> it's more
03:43:21 <elliott> GENERIC CODE
03:43:24 <elliott> if I store it in the matched thing
03:43:26 <elliott> unconditionally
03:43:56 <oerjan> ah but for the ()* case ( doesn't need the maximum...
03:44:14 <oerjan> well if ( pushes 0, that is
03:44:38 <oerjan> which is what you want if you want ) to be the same implementation for * and %
03:44:50 <oerjan> one of ( or ) has to be different, anyway
03:44:56 <elliott> oerjan: yes but ) checks ( for the maximum!!
03:45:00 <elliott> it's
03:45:06 <elliott> ++(->iter < (->repeat
03:45:07 <elliott> or whatevs
03:45:18 <elliott> and yes, ) does indeed differ
03:45:25 <elliott> BUT i am all with these "PARSING BUGS" right now
03:45:57 <elliott> oerjan: do you see
03:45:59 <elliott> "PARSING BUGS"
03:46:07 <oerjan> ...
03:46:18 <elliott> what
03:46:21 <elliott> i am communicating like a human
03:46:25 <elliott> THAT IS NOT SUSPICIOUS
03:46:28 <elliott> THAT IS ... "NORMAL"
03:46:38 <elliott> man i am so fucking annoying in this place, isn't it great
03:46:50 <oerjan> ...maybe
03:47:12 <elliott> oerjan do not even CONSIDER banning me for a SECOND.
03:47:13 <quintopia> hey oerjan: don't you just love it when we have conversations where we pretend that elliott isn't here?
03:47:20 <elliott> NO
03:47:22 <elliott> HE DOES NOT LOVE THAT
03:47:26 <elliott> s/ / /
03:47:32 <elliott> anyway quintopia you've only been here since like
03:47:33 <elliott> YESTERDAY
03:47:34 <oerjan> quintopia: no.
03:47:36 <elliott> i am 2007 vintage baby
03:47:38 <elliott> see
03:47:41 <elliott> the man does not like it!
03:47:44 <elliott> and i am not typing messages at his console
03:47:45 <elliott> noep
03:47:47 <elliott> it's him
03:47:49 <elliott> all him
03:48:16 <quintopia> oerjan: i mean, we he starts rambling nonsense, what do you think he wants from us?
03:48:30 <oerjan> drugs?
03:48:47 <quintopia> pfft, i'm sure he can get access to drugs on his one
03:48:49 <quintopia> *own
03:48:51 <oerjan> tiny little hairy gnomes?
03:48:55 <quintopia> at least the kind he needs
03:48:57 <quintopia> oh maybe
03:49:00 <elliott> MY BEHAVIOUR SHOULD CONVEY THE KNOWLEDGE THAT I HAVE A PERFECTLY ADEQUATE SUPPLY OF DRUGS OR DRUG-LIKE EFFECT-MAKERS (SUCH AS MY OWN INSANITY)
03:49:05 <elliott> GNOMES ARE GOOD
03:49:43 <quintopia> elliott: would not an adequate supply of the correct drugs counteract your own insanity?
03:49:54 <elliott> quintopia: i'm all about standards-incompliance(=== incorrecntess )
03:49:59 <elliott> looks like ( lis p )
03:50:44 <oerjan> elliott: anyway it is perfectly possible to make things such that ) only knows where ( is when it is jumping to it, and it can share the field for this pointer with the pointer to } in the other case.
03:50:58 <elliott> oerjan: SOUNDS COMPLICATEDSCARY
03:51:14 <elliott> i will saneify it. some day
03:51:28 <oerjan> i.e. ) for * knows where ( is, ) for % knows where } is, but ) doesn't actually need to know which case it's in...
03:52:20 <oerjan> meanwhile ( for * is implemented exactly as } for %.
03:53:10 <oerjan> it is possible to turn this around and letting ( always be the same while ) varies.
03:53:21 <elliott> that's how i did it.
03:53:23 <elliott> tuuuuurny
03:53:33 <elliott> case REPEAT:
03:53:34 <elliott> /* Don't handle *0 here; that's removed during parsing */
03:53:34 <elliott> ins->iter = 0;
03:53:35 <elliott> w->ip++;
03:53:37 <elliott> goto again;
03:53:39 <oerjan> then ) for * would be exactly like {, i think
03:53:39 <elliott> case TAEPER: {
03:53:41 <elliott> ins_t *repeat = &w->prog[ins->jump];
03:53:43 <elliott> if (repeat->has_once) {
03:53:45 <elliott> if (--repeat->iter >= 0)
03:53:47 <elliott> w->ip = ins->jump;
03:53:49 <elliott> } else if (++repeat->iter < (int) repeat->repeat)
03:53:51 <elliott> w->ip = ins->jump;
03:53:53 <elliott> w->ip++;
03:53:55 <elliott> goto again;
03:53:57 <elliott> }
03:53:59 <elliott> case ONCE:
03:54:01 <elliott> if (++w->prog[ins->jump].iter < (int) w->prog[ins->jump].repeat)
03:54:05 <elliott> w->ip = ins->jump;
03:54:07 <elliott> w->ip++;
03:54:09 <elliott> goto again;
03:54:11 <elliott> case ECNO:
03:54:13 <elliott> /* is this line a fix? or a bug? */
03:54:15 <elliott> w->prog[ins->jump].iter = w->prog[ins->jump].repeat - 1;
03:54:17 <elliott> w->ip++;
03:54:19 <elliott> goto again;
03:54:21 <elliott> oh man
03:54:23 <elliott> that's a flood i didn't even realise
03:54:25 <elliott> good thing no cool dudes are talking
03:54:33 <elliott> oh man
03:54:35 <elliott> oerjan
03:54:38 <elliott> it throttled me!
03:55:59 <oerjan> ...
03:56:13 <elliott> oerjan: http://sprunge.us/aaSc
03:56:14 <elliott> the magic code
03:56:16 <elliott> of perfectness
03:59:10 <oerjan> food ->
04:00:47 <elliott> oerjan: bad.
04:02:29 -!- azaq23 has quit (Ping timeout: 276 seconds).
04:06:04 <oerjan> *munch*
04:06:17 <quintopia> omnom
04:07:04 <elliott> nomom
04:09:13 <quintopia> On mom nom!
04:14:29 -!- augur has quit (Remote host closed the connection).
04:14:39 <elliott> this "reading Homestuck" idea was really hilariously ill-advised, 4:40 am is a time i should be sleeping
04:14:42 <elliott> [[The sylladex reconfigures itself into an ARRAY of distinct QUEUESTACKS.
04:14:42 <elliott> Now we're talking. This is just the sort of needless complexity you have come to expect from your INVENTORY MANAGEMENT SYSTEM.]]
04:14:44 <elliott> but how could i stop
04:17:03 <Gregor> !bfjoust furry_furry_nipple_clamp_girls <
04:17:03 <Sgeo> I have an exam in a business subject
04:17:29 <Sgeo> I haven't particularly touched the textbook
04:17:37 <Sgeo> I have no idea what's going on
04:17:46 <Sgeo> I have homework due in that class and another class
04:18:09 <Sgeo> All the business courses are the same to me
04:18:14 <Sgeo> Buzzword filled bullshit
04:18:51 <Sgeo> Gnatt charts and everything has input and ouutput and technology can give a competitive advantage
04:19:14 <Sgeo> Oh, and learn how to write incident reports
04:19:52 <Sgeo> Sgeo attended school. He then proceeded to die. Causes: Boredom.
04:20:33 <Sgeo> Causes: Not giving two filesystem checks about the material
04:20:51 <elliott> <Sgeo> I'm complaining about the fact that my incomprehensibly shitty university, due to being incomprehensibly shitty, requires me to take more business courses than mathematics courses to get a useless degree; however rectifying this situation sounds harder than complaining about it, so I will do the latter.
04:20:54 <EgoBot> Score for Gregor_furry_furry_nipple_clamp_girls: 0.0
04:22:55 <elliott> quintopia: if you, too, told Sgeo how shitty his university is, we could have a grand old partying time of saying things to Sgeo to which he pays no heed
04:23:18 <Sgeo> Anyone willing to try to convince my dad abouut this?
04:27:39 <pikhq> Gregor: Just tell Sgeo's dad the odds of Sgeo getting into any CS grad program.
04:29:11 <elliott> Sgeo: YOU ARE NOT YOUR FATHER.
04:29:34 <quintopia> elliott: i've already told him before
04:29:37 <quintopia> just assume i said it
04:29:42 <elliott> Considering the abject idiocy your father has demonstrated over the past N time intervals, some "random dude from the internet" convincing him that you're wasting your time has a probability of roughly ZERO.
04:29:53 <elliott> Unless you start being more independent and taking matters into your own damn hands it's hopeless.
04:29:58 <elliott> quintopia: yeah. i guess. sigh
04:31:01 <elliott> ok. this is the end of the line. reading more webcomics: NOT AN OPTION. it is instead time to go unconscious.
04:31:25 <quintopia> bye
04:34:52 -!- augur has joined.
04:37:02 -!- elliott has quit (Ping timeout: 276 seconds).
04:39:21 <oerjan> ^ul (^!!)(((( 1)S(^!!)~(^)~:^^)(!~(:^!^)~^^^)(!!~(:^!!^)~^^!^))(!(( )S(^!!)~:^^)(!~(:^!^)~^^!^)(!!~(:^!^)~^^^))(!!(~(:^!!^)~^^!!^)(!(0)S(^!)~:^^)(!!(1)S(^)~:^^))):^^!^!!^
04:39:22 <fungot> 0 1 10 11 100 101 110 111 1000 1001 1010 1011 1100 1101 1110 1111 10000 10001 10010 10011 10100 10101 10110 10111 11000 11001 11010 11011 11100 11101 11110 11111 100000 100001 100010 100011 100100 100101 100110 100111 101000 101001 101010 101011 101100 101101 101110 101111 110000 110001 110010 110011 110100 110101 110110 1 ...too much output!
04:39:36 <oerjan> yay worked first time
04:40:31 <Sgeo> FFS
04:40:53 <Sgeo> When I first saw that, I was trying to process that as the look and say sequence
04:40:59 <Sgeo> I'm losing it
04:41:20 <oerjan> heh :D
04:41:53 <quintopia> oerjan: now do decimal
04:41:58 <Sgeo> oerjan, it is now your job to write an underload program that does the look and say sequence first time
04:42:06 <quintopia> oerjan: i mean, hexadecimal
04:42:09 <oerjan> quintopia: i already did decimal, it's on the wiki
04:43:24 <oerjan> Sgeo: um isn't that a bit late to get right the first time given i already got it right after several false starts?
04:43:37 <Sgeo> Ah, darn.
04:43:59 <oerjan> anyway the point of the program above isn't really what it outputs...
04:44:03 <Sgeo> I'm too tired to eat
04:46:07 <quintopia> (!~(:^!^)~^^!^) what is this thing you keep repeating
04:46:59 <Sgeo> Is it just me, or is the cosmological theorem a bit... pompously named?
04:47:13 <quintopia> heh
04:47:13 <oerjan> Sgeo: that's conway for you
04:47:18 <quintopia> it makes sense though
04:48:50 <oerjan> quintopia: that in particular is a command, when the current token is no. 1, to keep it as 1, go left, and into state 1.
04:49:14 -!- copumpkin has joined.
04:49:29 <quintopia> did you compile that program from another language?
04:49:31 <oerjan> the 1's are the counts of consecutive !'s.
04:49:35 <oerjan> no.
04:49:39 <quintopia> oh
04:49:57 <oerjan> i just wrote up a simple turing machine for binary counting
04:50:09 <quintopia> so it's a turing machine simulated in underload
04:50:13 <oerjan> yep
04:50:18 <quintopia> how close are you to a UTM?
04:50:25 <oerjan> this is completely general
04:50:52 <quintopia> so you'd just need the code to convert an encoded TM into this form?
04:51:12 <oerjan> that could be done yes
04:51:20 <quintopia> and then convert that into a TM?
04:51:22 <quintopia> wait
04:51:42 <quintopia> there are already fully specified UTMs out there
04:51:48 <oerjan> well duh
04:51:50 <quintopia> you could just encode one of those XD
04:51:55 * quintopia was being stupid
04:52:08 <oerjan> i don't consider the particular TM so important here, as long as the method is general.
04:52:42 <oerjan> also there is more to that program than just what it simulates...
04:52:51 * oerjan is being mysterious
04:53:41 <quintopia> yeah. you really want me to analyze the fucker don't you?
04:54:24 <oerjan> not really, just take a look at what it _isn't_...
04:55:44 <oerjan> or rather, what isn't there
04:57:13 <quintopia> no quoting
04:58:21 <quintopia> which means that you never had to build a new program...it only ever reuses the stuff you pushed originally
04:58:32 <oerjan> yep!
04:58:44 <oerjan> no a or * commands
04:59:03 <quintopia> but it makes sense you should be able to build a TM that way
04:59:19 <quintopia> but it's a neat way to show that underload has more commands than necessary i suppose
04:59:41 <oerjan> and also, i'm not finished yet...
04:59:52 <quintopia> you gonna eliminate something else
05:00:05 <oerjan> but the last step requires me to do a verbose program transformation
05:00:44 <oerjan> also must use less legible output
05:00:50 <quintopia> so it'll get really long
05:00:53 <oerjan> but given that, i can also eliminate !
05:01:50 <quintopia> oh, are you gonna encode the data directly into the program chunks? it makes sense that should be possible since S and ^ already pop the stack...
05:02:04 <oerjan> technically S is also not necessary purely for computation
05:02:09 <quintopia> sure
05:02:16 <quintopia> but it's awful handy :P
05:02:21 <oerjan> i am using S only for output in this, not for simulating !
05:02:43 <quintopia> sure
05:03:42 <quintopia> i was just saying that it makes since that such a powerful stackpopping command as ^ should be able to take up the place of !
05:03:51 <quintopia> (at the expense of verboseness)
05:04:01 <oerjan> yeah that's essentially what i do
05:04:44 <oerjan> the only way to remove stuff without ! is to have a way of _running_ it into nothing
05:06:16 <oerjan> for a hint of the verboseness, it takes 24 extra characters just to concatenate two subprograms
05:06:44 -!- pikhq_ has joined.
05:07:06 <oerjan> so a list of n commands transforms into what each command transforms into, plus 24*(n-1) characters of scaffolding
05:07:11 -!- pikhq has quit (Ping timeout: 264 seconds).
05:08:02 <quintopia> so do it. put it on the wiki. lemme see.
05:08:08 <quintopia> can you transform it programmatically?
05:08:25 <oerjan> yes, in fact it's too arduous to do any other way, i think
05:08:46 <oerjan> i just need to write the program
05:09:51 <quintopia> is there a reasonable way to add interactive input to underload?
05:10:00 <oerjan> not that i know of
05:10:42 <oerjan> maybe you could do something similar to unlambda's @ and ?x commands, but it would still feel like a wart on the language
05:11:11 <quintopia> seems like there should be some way of encoding the input and just pushing it onto the stack
05:11:39 <oerjan> the problem is that underload has no way of analysing an arbitrary string
05:12:11 <quintopia> right. but couldn't you just have it push one character, as a number in some canonical form?
05:12:24 <oerjan> presumably
05:12:30 -!- pikhq_ has left (?).
05:12:32 -!- pikhq_ has joined.
05:12:39 <pikhq_> Linear algebra is so fucking tedious.
05:12:51 <oerjan> but since it would not be in the same format as the string it would still be a wart
05:12:51 <quintopia> man i loved linear algebra
05:12:56 <quintopia> it was the best part of calc 3
05:12:59 -!- pikhq_ has changed nick to pikhq.
05:13:02 <pikhq> quintopia: ... ?
05:13:33 <quintopia> writing an algorithm to compute the jacobian...writing one to compress images using SVD...
05:13:37 <quintopia> it was fun stuff
05:14:01 <pikhq> I'm having to do row reduction by hand.
05:14:04 <quintopia> oh
05:14:19 <pikhq> I fail to see the fucking point after, say, the second matrix.
05:14:22 <quintopia> i wrote a program to do it for me and display all the steps to copy down in high school
05:14:24 <oerjan> heh
05:14:27 <quintopia> never had to do that shit again
05:15:28 -!- pikhq_ has joined.
05:15:51 <quintopia> it wrote out the operation to perform in a long list as a menu, and selecting each menu item displayed the resulting matrix after that operation, and the last one said whether it was consistent, inconsistent or whatever the third thing was...
05:16:27 <quintopia> i wrote it in TI-89 BASIC :P
05:17:00 <pikhq_> Why did anyone ever think that performing an algorithm manually has value?
05:17:47 <oerjan> computer _was_ a human employment once, you know
05:18:00 <quintopia> what do you mean "did"?
05:18:04 <quintopia> people still think that
05:18:28 <pikhq_> oerjan: Oh, right, decades ago.
05:18:40 <quintopia> people are pushing the schools to just have the kindergartens teach the addition algorithm, and not do all the exploration they do now that explains *why* the addition algorithm works
05:18:45 <oerjan> pikhq_: your definition of "ever" needs some adjustment :D
05:18:48 -!- pikhq has quit (Ping timeout: 250 seconds).
05:19:08 <quintopia> so does his internet connection
05:19:14 <pikhq_> oerjan: It certainly has never had any pedagogical value.
05:19:50 <pikhq_> Value when computation was defined by a piece of paper, perhaps.
05:19:58 <pikhq_> But pedagogical? Fuck that shit.
05:20:17 <pikhq_> quintopia: But explaining why the algorithm works is the only bit that has much value!
05:20:27 <quintopia> pikhq_: you're preaching to the choir
05:20:45 <quintopia> talk to these ridiculous parents and school board members
05:25:15 <oerjan> ^ul (( )S)(^!!)(((~:^~(~)S(^!!)~(^)~:^^)(!~(:^!^)~^^^)(!!~(:^!!^)~^^!^))(!(~:^~(^!!)~:^^)(!~(:^!^)~^^!^)(!!~(:^!^)~^^^))(!!(~(:^!!^)~^^!!^)(!(:)S(^!)~:^^)(!!(~)S(^)~:^^))):^^!^!!^
05:25:16 <fungot> : ~ ~: ~~ ~:: ~:~ ~~: ~~~ ~::: ~::~ ~:~: ~:~~ ~~:: ~~:~ ~~~: ~~~~ ~:::: ~:::~ ~::~: ~::~~ ~:~:: ~:~:~ ~:~~: ~:~~~ ~~::: ~~::~ ~~:~: ~~:~~ ~~~:: ~~~:~ ~~~~: ~~~~~ ~::::: ~::::~ ~:::~: ~:::~~ ~::~:: ~::~:~ ~::~~: ~::~~~ ~:~::: ~:~::~ ~:~:~: ~:~:~~ ~:~~:: ~:~~:~ ~:~~~: ~:~~~~ ~~:::: ~~:::~ ~~::~: ~~::~~ ~~:~:: ~~:~:~ ~~:~~: ~ ...too much output!
05:25:35 <quintopia> nice
05:25:46 * quintopia high fives
05:26:20 <oerjan> this should be convertible
05:26:24 <quintopia> lemme see the expansion without the ! then
05:26:34 <oerjan> um i haven't done that program yet
05:26:36 <quintopia> oh
05:26:41 <oerjan> this is just slight preparation
05:27:11 <oerjan> there is just no way to be able to print all of space, 0 and 1 repeatedly with this scheme
05:27:49 <oerjan> the space can only be handled because the command to print that stays out of the way at the left and can just be copied and run each time it's needed
05:28:28 <oerjan> which means that string never has to be deleted
05:30:52 <quintopia> right
05:31:22 <quintopia> so you're going to print commands you later use? :P
05:31:33 <oerjan> hm?
05:32:53 <quintopia> actually, it's not clear
05:33:29 <quintopia> you have to keep repushing the strings to be printed to the stack every time you want to use them, right now
05:34:09 <oerjan> yes. but i have programs for printing each of the characters :^~ which _can_ be deleted with ^
05:34:32 <oerjan> ~ is the simplest, (~)S actually converts to S
05:35:03 <oerjan> there can be no such program for a string which contains a non-command character
05:35:27 <oerjan> to delete a program completely using only ^, _every_ single substring will have to also be run
05:35:55 <oerjan> (ok not only ^ but avoiding a*!)
05:36:15 <oerjan> er, avoiding !
05:36:16 <quintopia> wait. (~)S converts to S? i'm getting more confused :/
05:36:38 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
05:37:01 <quintopia> i should write some underload programs before trying to understand this
05:37:01 <oerjan> the way the conversion works is that each program takes an extra argument on top of stack, which is either () for deleting itself or (~) for running normally
05:37:04 -!- Lymia_ has joined.
05:37:22 <quintopia> oh that kinda makes since
05:37:23 <quintopia> sense
05:37:24 <oerjan> and it turns out that converting (~)S to S does exactly this
05:37:48 <quintopia> hmm
05:38:01 <oerjan> it's the simplest conversion by far :D
05:38:27 -!- Lymia has quit (Disconnected by services).
05:38:27 -!- Lymia_ has changed nick to Lymia.
05:38:28 -!- Lymia has quit (Changing host).
05:38:28 -!- Lymia has joined.
05:38:36 <oerjan> the others are not that nice. (:)S becomes ()~(^)~(:)~()~^S^^
05:38:59 <oerjan> and (^)S is even longer
05:39:31 <oerjan> it is of course possible i've missed some simpler possibility
05:40:08 <oerjan> oh wait right
05:40:16 <oerjan> ~ itself converts just to ^
05:40:27 <oerjan> i actually missed that one for a while
05:46:09 -!- aloril has quit (Ping timeout: 264 seconds).
05:48:44 -!- Lymia has quit (Read error: Connection reset by peer).
05:58:37 -!- aloril has joined.
06:06:33 -!- oerjan has quit (Quit: Good night).
06:27:32 -!- aloril has quit (Ping timeout: 264 seconds).
06:41:16 -!- aloril has joined.
07:00:42 <lifthrasiir> /sb c
07:06:39 <quintopia> hmmm
07:43:39 <quintopia> i have a bf joust melee spec now
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:32:25 -!- GreaseMonkey has quit (Quit: The Other Game).
09:03:08 -!- pikhq_ has quit (Ping timeout: 246 seconds).
09:03:24 -!- pikhq has joined.
09:35:50 <Ilari> Heh. More bogon use for 1.1.1.1: Reject-routing it. :-)
09:36:28 <Ilari> For when you need to point something to reject-routed address in hosts file (reject routing yields very fast TCP connect() failure).
09:39:06 <fizzie> Couldn't you do that just as well with a private-use RFC1918 IP?
09:40:23 <Ilari> Well, 1.1.1.1 is easier to type. :-)
09:40:33 <fizzie> Compared to 10.10.10.10?-)
09:41:58 <fizzie> Heh, so they got 50 Mbps of traffic into 1.1.1.0/24 and 1.2.3.0/24 back in Feb 2010.
09:46:00 <fizzie> http://labs.ripe.net/Members/franz/content-pollution-18 -- strange-ish UDP port 15206 traffic.
10:17:18 <fizzie> Oh, so it's misconfigured VOIP stuff mostly. Heh.
10:34:30 -!- sebbu has quit (Ping timeout: 241 seconds).
10:39:25 -!- iconmaster has joined.
10:40:05 -!- iconmaster has quit (Client Quit).
10:48:24 -!- cheater00 has quit (Ping timeout: 240 seconds).
10:50:38 -!- cheater00 has joined.
11:05:12 -!- cheater00 has quit (Ping timeout: 240 seconds).
11:05:42 -!- cheater- has joined.
11:24:23 -!- cheater- has quit (Ping timeout: 240 seconds).
11:25:39 -!- FireFly has joined.
11:26:39 -!- cheater- has joined.
11:27:52 -!- pikhq has quit (Ping timeout: 255 seconds).
11:27:55 -!- pikhq_ has joined.
11:35:23 -!- hiato has quit (Ping timeout: 246 seconds).
11:39:40 -!- BeholdMyGlory has joined.
11:47:36 -!- hiato has joined.
11:50:19 -!- ais523_ has joined.
11:51:19 -!- sebbu has joined.
11:51:19 -!- sebbu has quit (Changing host).
11:51:20 -!- sebbu has joined.
11:56:03 -!- hiato has quit (Quit: underflow).
12:34:55 -!- ais523_ has quit (Quit: Page closed).
12:47:05 -!- poiuy_qwert has quit (Ping timeout: 250 seconds).
13:27:43 -!- asiekierka has joined.
13:27:52 -!- augur has quit (Remote host closed the connection).
13:41:58 -!- copumpkin has joined.
13:53:34 -!- Zuu has quit (Read error: Connection reset by peer).
13:55:03 <quintopia> hey fizzie. wanna hear a joke?
13:56:07 <fizzie> Sure.
13:56:17 <quintopia> elliott will finish lance tonight
13:57:19 -!- Zuu has joined.
13:58:05 -!- poiuy_qwert has joined.
13:58:45 <fizzie> Hee-eh, eheh. Well, stranger things have happened. There once was a horse named a senator.
13:59:39 <quintopia> how awesome is cranklance?
14:00:18 <fizzie> I'm not terribly confident it's totally bugless.
14:00:30 -!- augur has joined.
14:00:46 <quintopia> what's it written in?
14:01:05 <fizzie> C as well. It's one of those computed-goto driven things where the BF ops are turned into pointers-to-labels.
14:01:29 <fizzie> There's a copy at http://zem.fi/~fis/cranklance-beta.tar.gz that's more or less the latest.
14:02:07 <quintopia> seem slike it'd be difficult to do the repeat stuff correctly in such a model
14:02:17 <quintopia> i'll check it out
14:02:26 -!- asiekierka has quit (Ping timeout: 250 seconds).
14:03:27 <fizzie> It uses the stackful oerjan method of doing (...{...}...)%n constructions. Though I guess it could as well use the Gregor method of sticking a counter in the instruction bf-op structure; I keep those around too, for jump offsets.
14:03:43 -!- asiekierka has joined.
14:04:47 <quintopia> i couldn't begin to guess which of those is actually the better option
14:05:10 <quintopia> elliott obviously believes it's gregor's
14:06:00 <fizzie> The stack construct was inherited from chainlance, because (what with all the x86-64 regs) there I managed to stuff pretty much all state into dedicated registers, and therefore kept the top-of-repeat-stack values in registers too.
14:08:53 <quintopia> how do chain/crank compare on speed?
14:13:54 <fizzie> Cranklance seems faster on real code, while chainlance executes some benchmarks like ". vs ." fastest.
14:14:35 <quintopia> hmm
14:15:41 <fizzie> It doesn't generate exactly the same results on all code than egojoust, but that might easily be due egojoust messiness too. I should probably validate against egojsout with a command-line JavaScript engine or something, if that's feasible.
14:16:55 <fizzie> I don't know how tightly coupled egojsout UI stuff is with the code-execution stuff. Maybe it's cleanly separated. (Maybe not.)
14:17:23 <quintopia> or do it manuallly. there are a few peograms coomplicated enough to surely catch all the messy edge cases
14:19:57 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep).
14:25:02 -!- ais523_ has joined.
14:26:28 <quintopia> sup
14:29:39 <Vorpal> fizzie, why js? Is egojsout js?
14:29:52 <quintopia> lol
14:30:00 <ais523_> hmm, does anyone here know if nvcc (the Nvidia C compiler) is purely in-house, or based on one of the other major compilers?
14:30:00 <Vorpal> and how does egojsout relate to egojoust?
14:30:08 <quintopia> it's not called egojsout for nothing
14:30:19 <ais523_> Vorpal: have you been, umm, not following anything happening in this channel for the past week?
14:30:26 <Vorpal> quintopia, well that much I gather. What are you differences though?
14:30:36 <ais523_> anyway, ego = created by Gregor, corruption of joust = it's a BF Joust interp, js = it's written in JavaScript
14:30:36 <Vorpal> ais523_, not really no. Been very busy with university stuff
14:30:51 <Vorpal> ais523_, augh the pun
14:30:58 <quintopia> :D
14:31:01 <ais523_> see http://www.esolangs.org/wiki/BF_Joust_strategies
14:31:09 <quintopia> punning has the hacker nature
14:31:18 <ais523_> the external links to examples there go to egojsout, set to make animaions
14:31:20 <ais523_> *animations
14:32:21 <Vorpal> ais523_, the animations are pretty. But what do they mean
14:32:36 <ais523_> height of a line = value of cell
14:32:39 <ais523_> flags are at each end
14:32:42 <ais523_> in different colors
14:32:49 <ais523_> and the squares in the middle show the location of data pointers
14:32:53 <Vorpal> ah
14:33:01 <quintopia> vorpla: yes, what do they mean? what does any of this mean? is there a reason we are alive?
14:35:27 <Vorpal> !bfjoust
14:35:35 <Vorpal> well, where is the link?
14:35:37 <EgoBot> Use: !bfjoust <program name> <program> . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/
14:35:39 <Vorpal> ah
14:36:03 -!- ais523_ has quit (Quit: Page closed).
14:47:35 -!- oerjan has joined.
15:01:30 -!- variable has quit (Remote host closed the connection).
15:03:13 -!- pikhq_ has quit (Read error: Operation timed out).
15:03:36 -!- pikhq has joined.
15:03:40 -!- variable has joined.
15:13:03 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
15:17:33 -!- MigoMipo has joined.
15:23:01 -!- ais523 has joined.
15:30:46 -!- asiekierka has quit (Remote host closed the connection).
15:30:55 -!- asiekierka has joined.
15:32:50 -!- yorick has joined.
15:35:31 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/eKWa
15:36:21 <Gregor> wtf, seems it didn't parse.
15:36:37 * Sgeo had no idea that Gregor was hetero
15:37:17 <Gregor> Oh, never mind, it hadn't even started yet X-D
15:37:55 <Gregor> Sgeo: <3 how femdom-inspired warrior naming is your evidence :P
15:39:18 <Gregor> lol, overoptimized to the high-ranked ones maybe
15:39:50 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 43.0
15:40:00 <Gregor> Hm, not as good as I was hoping.
15:40:13 <Gregor> !bfjoust furry_furry_strapon_pegging_girls <3
15:40:19 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 0.0
15:40:21 <Sgeo> lol
15:42:37 * Gregor adds something really stupid that will probably win him tons of points
15:42:54 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/FBQD
15:44:22 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 37.6
15:44:37 <Gregor> Hm, or not :P
15:45:32 <Gregor> !bfjoust furry_furry_strapon_pegging_girls <3
15:45:37 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 0.0
15:46:36 <Gregor> ais523: With Deewiant_allegro so tuned to this hill, and so little churn in the hill, I don't think it's possible to unseat his lead.
15:46:54 <Gregor> But that's just a broad, silly complaint :P
15:47:24 <quintopia> yes it's quite silly
15:48:36 <quintopia> sir, may i ask one small thing of you? can you add a button to egojsout to make it stop generating a trace, for when i only want the animation? lock programs take so many thousands of cycles that i just get tired of waiting...
15:55:04 <Gregor> The frames for the animation are generated at the same time as the trace, if you stop it then you won't have a complete animation.
15:56:03 <quintopia> then just stop displaying them and compute them silently. that would go faster wouldn't it?
15:56:11 <ais523> Gregor: I'm waiting for a better interp
15:56:18 <ais523> then I can try to unseat allegro
15:56:22 <Gregor> ais523: Aren't we all :P
15:56:50 <quintopia> of course it would go faster
15:57:06 <quintopia> egojsout can compute all the runs of a given match in the time it takes to display one long trace
15:58:58 <quintopia> i think i could unseat him. i have some ideas. it'd be a hella long program though XD
15:59:14 <quintopia> i'll wait til my AWESOME NEW SCORING SYSTEM gets written :P
16:00:07 -!- sebbu2 has joined.
16:00:07 -!- sebbu2 has quit (Changing host).
16:00:07 -!- sebbu2 has joined.
16:03:27 -!- cheater- has quit (Ping timeout: 240 seconds).
16:03:40 <Gregor> !bfjoust mess_with_Deewiant (>[(<)*1(<(+)*37<(-)*37)*2(>)*11([(+)*37[-]]>)*21]+)*21
16:03:42 -!- sebbu has quit (Ping timeout: 250 seconds).
16:04:23 <EgoBot> Score for Gregor_mess_with_Deewiant: 24.6
16:04:46 <quintopia> you should probably repeat that 29 times XD
16:04:53 -!- cheater- has joined.
16:05:00 <Gregor> quintopia: I am messing ONLY with Deewiant :P
16:05:13 <Deewiant> Meanie :-P
16:05:18 <Gregor> In fact it'll suicide against most everyone else.
16:05:21 <Gregor> !bfjoust mess_with_Deewiant (>[(<)*1(<(+)*37<(-)*37)*2(>)*11([(+)*37[-]]>)*29]+)*29
16:05:23 <Gregor> But fine
16:05:32 <EgoBot> Score for Gregor_mess_with_Deewiant: 26.6
16:05:56 <Deewiant> Sloth beats it so it's not a completely successful messing
16:06:03 <quintopia> :D
16:06:06 <Gregor> Deewiant: REALLY I was only messing with the top two :P
16:06:10 <quintopia> sloth. what a crazy idea.
16:06:14 <Gregor> The fact that it beat the other Deewiants was just a coincidence.
16:06:57 <Gregor> Note the (>)*11 in the middle of my oh-so-brilliant algorithm :P
16:07:38 <Gregor> I found him here, so go six cells past there, then ... :P
16:08:07 <Gregor> !bfjoust mess_with_Deewiant (>[(<)*1(<(+)*85<(-)*85)*2(>)*11([(+)*37[-]]>)*29]+)*29
16:08:11 <Gregor> (Just for yukks)
16:08:13 -!- azaq23 has joined.
16:08:15 <EgoBot> Score for Gregor_mess_with_Deewiant: 25.8
16:08:19 <Gregor> D'aww :(
16:08:22 <Gregor> !bfjoust mess_with_Deewiant (>[(<)*1(<(+)*37<(-)*37)*2(>)*11([(+)*37[-]]>)*29]+)*29
16:09:22 <quintopia> the maxim holds: smaller decoys are better, as long as they are bigger than standard offset sizes
16:09:22 <EgoBot> Score for Gregor_mess_with_Deewiant: 26.6
16:09:24 <Deewiant> I think you want decoys of size 18
16:10:02 <quintopia> In fact, that should go on the wiki
16:10:08 <Gregor> Deewiant: Your offsets are 30...
16:10:15 <Deewiant> No they're not
16:10:16 <Gregor> Nowait
16:10:19 <Gregor> Oh I totally misread :P
16:10:25 <Gregor> !bfjoust mess_with_Deewiant (>[(<)*1(<(+)*17<(-)*17)*2(>)*11([(+)*37[-]]>)*29]+)*29
16:10:27 <Deewiant> Gregor: You're beating FFLDG, you noticed?
16:10:36 <Deewiant> So this is somewhat counterproductive ;-)
16:10:43 <Gregor> Deewiant: I'm beating a lot of things that make a lot of decoys, since I just hop right past 'em :P
16:10:56 <Gregor> Deewiant: Besides, I've got a different trick up my sleeve I'm still working on.
16:11:08 <EgoBot> Score for Gregor_mess_with_Deewiant: 25.2
16:11:19 <Gregor> *eh*
16:11:22 <Gregor> !bfjoust mess_with_Deewiant (>[(<)*1(<(+)*37<(-)*37)*2(>)*11([(+)*37[-]]>)*29]+)*29
16:11:28 <EgoBot> Score for Gregor_mess_with_Deewiant: 26.6
16:11:29 <Deewiant> Gregor: I'm not sure why but I ran it in egojsout and 18 works better against allegro
16:11:33 <Deewiant> Than 17
16:11:43 <Gregor> Oh, probably because I set a trail :P
16:11:49 <Gregor> So sometimes that 17 would be 16 :P
16:11:55 <Deewiant> Right
16:11:57 <Gregor> !bfjoust mess_with_Deewiant (>[(<)*1(<(+)*18<(-)*18)*2(>)*11([(+)*37[-]]>)*29]+)*29
16:12:02 <EgoBot> Score for Gregor_mess_with_Deewiant: 26.2
16:14:50 -!- sebbu2 has changed nick to sebbu.
16:15:07 <oerjan> <quintopia> the maxim holds: smaller decoys are better, as long as they are bigger than standard offset sizes <-- at the same time, smaller offsets are better when there are no decoys; this gives at least one rock/paper/scissors relationship doesn't it?
16:15:37 <Gregor> I think our rock/paper/scissors has about seven more layers than your conventional RPS game :P
16:16:01 <oerjan> Gregor: sure, i expect bfjoust has _several_ interacting RPS subfeatures
16:17:04 <oerjan> i'm beginning to understand that bfjoust is a rather deep game
16:17:11 <quintopia> oerjan: it's not really, no. it's just one of those game theory things. the best decoy size is one more than the opponent's offset size, and the best offset size is one more than the opponent's decoy size. it's a sort of traveller's dilemma
16:17:17 <oerjan> (even without even playing it)
16:17:55 <quintopia> s/one more than opponent's decoy size/the same as opponent's decoy size/
16:18:29 <oerjan> ^help
16:18:29 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
16:19:13 <Gregor> I wonder how severely our hill would change if we just swapped everybody's inner clear algorithm for ([[-]>]>)*29 :P
16:19:22 <oerjan> ^show
16:19:22 <fungot> echo reverb rev rot13 rev2 fib wc ul cho choo pow2 source help hw srmlebac uenlsbcmra scramble unscramble asc ord tmp
16:19:26 -!- cheater- has quit (Ping timeout: 240 seconds).
16:19:36 <Gregor> (I have no idea why I nested that)
16:19:38 <oerjan> ^echo hi
16:19:38 <fungot> hi hi
16:19:48 <oerjan> ^reverb hm
16:19:48 <fungot> hhmm
16:20:02 <Gregor> ^reverb This is dumb.
16:20:02 <fungot> TThhiiss iiss dduummbb..
16:20:15 <oerjan> ^rev2 hm
16:20:15 <fungot> mh
16:20:26 <oerjan> ^pow2 hm
16:20:26 <fungot> 1 2 4 8 16 32 64 128 256 512 1024 2048 4096 8192 16384 32768 65536 131072 262144 524288 1048576 2097152 4194304 8388608 16777216 33554432 67108864 134217728 268435456 536870912 1073741824 2147483648 42949672 ...
16:20:37 <oerjan> ^hw
16:20:38 <fungot> Hello World!
16:20:42 <oerjan> ^tmp
16:20:42 <fungot> abc
16:20:51 <quintopia> ^srmlebac
16:20:57 <quintopia> ^srmlebac hm
16:20:57 <fungot> hm
16:21:02 <quintopia> ?
16:21:08 <quintopia> ^srmlebac 55
16:21:08 <fungot> 55
16:21:09 <oerjan> ^def cat bf ,[.,]
16:21:09 <fungot> Defined.
16:21:11 <oerjan> ^cat hi
16:21:12 <fungot> hi
16:21:31 <oerjan> quintopia: you're not hitting very well with those test string XD
16:21:33 <oerjan> *s
16:21:44 <oerjan> ^cat str:0
16:21:45 <fungot> str:0
16:21:45 <quintopia> oerjan: what is it?
16:21:47 <oerjan> dammit
16:21:49 -!- cheater- has joined.
16:21:57 <oerjan> ^show str:0
16:22:07 <quintopia> ^show srmlebac
16:22:07 <fungot> >>,[>,]<[<]>[.>>]<[>>]<2[.<2]
16:22:12 <oerjan> quintopia: just try a more complicated string and you'll see
16:22:19 <quintopia> lemme just read the code
16:22:35 <quintopia> oh
16:22:42 <Deewiant> ^srmlebac qwfpgj
16:22:42 <fungot> qfgjpw
16:22:45 <quintopia> it prints all the even and then all the odd chars
16:22:47 <quintopia> got it
16:23:00 <quintopia> but forwards then backwards
16:23:01 <Deewiant> ^srmlebac srmlebac
16:23:01 <fungot> smeacblr
16:23:12 <oerjan> quintopia: hint: the command name
16:23:14 <Deewiant> ^srmlebac smeacblr
16:23:15 <fungot> seclrbam
16:23:16 <quintopia> yeah
16:23:19 <quintopia> i was trying to translate it
16:23:20 <Deewiant> ^srmlebac seclrbam
16:23:20 <fungot> scramble
16:23:37 <quintopia> ^srmlebac scramble
16:23:37 <fungot> srmlebac
16:23:44 <quintopia> i could have worked it out!
16:23:50 <quintopia> mr. spoilerface!
16:23:57 <quintopia> or
16:23:57 <oerjan> ^def tmp ul str:0
16:23:57 <fungot> Defined.
16:24:00 <quintopia> i could have done
16:24:01 <oerjan> ^show tmp
16:24:02 <fungot> foobar
16:24:12 <Deewiant> I didn't realize what it was myself until I ran those three
16:24:15 <quintopia> ^uenlsbcmra srmlebac
16:24:15 <fungot> scramble
16:24:42 <oerjan> ^tmp
16:24:42 <fungot> ...bad insn!
16:25:54 -!- copumpkin has joined.
16:28:16 -!- pikhq_ has joined.
16:28:26 -!- pikhq has quit (Ping timeout: 264 seconds).
16:28:29 <fizzie> ^str 0 get
16:28:29 <fungot> foobar
16:28:31 <fizzie> There is that.
16:28:37 <fizzie> You don't need to define a command.
16:29:59 <Deewiant> ^str 100 get
16:29:59 <fungot> Usage: ^str 0-9 get/set/add [text]
16:30:11 <fizzie> There's just ten lines devoted for strings, sorry. :p
16:30:27 <Deewiant> Befunge-98 has a bigger address space than that. :-P
16:30:35 <Deewiant> ^str 9 get
16:30:35 <fungot> (abc)S
16:30:39 <quintopia> are they stored in fungespace?
16:30:46 <fizzie> Yes. (Where else?)
16:30:55 <oerjan> ^tmtest
16:30:56 <fungot> : ~ ~: ...out of time!
16:31:12 <quintopia> ^reload
16:31:16 <oerjan> it turns out fungot thinks my new underload program is a bit slow
16:31:16 <fungot> oerjan: invalid input syntax for type timestamp with time zone: " 2004 05"?
16:31:24 <quintopia> lol
16:31:49 <oerjan> (i put it in through str:4, it's 3250 characters)
16:32:07 <oerjan> quintopia: the thing from earlier, it expanded almost 20 times
16:32:10 <fizzie> Deewiant: Yes, but since the strings don't have length limits, if I'd also made the list length unlimited, it'd potentially occupy a whole quadrant. (Also it doesn't actually parse a multi-digit number, I think it just subtracts '0.
16:32:12 <quintopia> LD
16:32:48 <oerjan> ais523: see my new underload creation at http://oerjan.nvg.org/esoteric/underload/tmcount.disclaimed.ul
16:33:07 <quintopia> it's still not so bad
16:33:24 <quintopia> did you stick it on the wiki?
16:33:26 <Deewiant> fizzie: If you're just worried about DoS attacks then you could still make it go up to 1000 or something
16:33:31 <oerjan> ^ul (( )S)(^!!)(((~:^~(~)S(^!!)~(^)~:^^)(!~(:^!^)~^^^)(!!~(:^!!^)~^^!^))(!(~:^~(^!!)~:^^)(!~(:^!^)~^^!^)(!!~(:^!^)~^^^))(!!(~(:^!!^)~^^!!^)(!(:)S(^!)~:^^)(!!(~)S(^)~:^^))):^^!^!!^
16:33:32 <fungot> : ~ ~: ~~ ~:: ~:~ ~~: ~~~ ~::: ~::~ ~:~: ~:~~ ~~:: ~~:~ ~~~: ~~~~ ~:::: ~:::~ ~::~: ~::~~ ~:~:: ~:~:~ ~:~~: ~:~~~ ~~::: ~~::~ ~~:~: ~~:~~ ~~~:: ~~~:~ ~~~~: ~~~~~ ~::::: ~::::~ ~:::~: ~:::~~ ~::~:: ~::~:~ ~::~~: ~::~~~ ~:~::: ~:~::~ ~:~:~: ~:~:~~ ~:~~:: ~:~~:~ ~:~~~: ~:~~~~ ~~:::: ~~:::~ ~~::~: ~~::~~ ~~:~:: ~~:~:~ ~~:~~: ~ ...too much output!
16:33:39 <oerjan> quintopia: not yet
16:33:57 <fizzie> Deewiant: "Meh."
16:34:03 <Deewiant> :-)
16:35:05 <oerjan> ais523: hint, it's not what it does, but how
16:35:06 <fizzie> Deewiant: For length-unlimited lists, I'm not so worried about DoS that I'm worried about space; all coordinates with x >= 0, y >= 2000 are already "taken" by the command list, for example.
16:36:03 <Deewiant> Take x >= 0, y <= -2000 for the strings.
16:36:36 <Deewiant> Or x >= 2^30, y >= 2000, unless you're expecting commands longer than a gigabyte. :-P
16:37:23 <oerjan> quintopia: also, my converter program worked on the first try :)
16:39:02 <quintopia> i love when that happens
16:39:49 <oerjan> (http://oerjan.nvg.org/esoteric/underload/ULDisclaim.hs)
16:40:24 <fizzie> Deewiant: If I take x >= 0, y <= -2000, I only have a narrow strip of free space; so where will I put the next unlimited-length list then? (I think I already used negative coordinates for something, can't quite remember what.)
16:40:53 <fizzie> x >= 2^30 might work, though large numbers are ugly to write.
16:41:00 <Deewiant> A narrow strip? You have room for 2^31 - 2000 strings
16:41:23 <fizzie> No, I mean, narrow strip of free space for things that are not strings or commands.
16:41:40 <ais523> oerjan: "disclaimed"?
16:42:04 <quintopia> http://news.yahoo.com/s/ap/20110208/ap_on_fe_st/us_odd_popular_mayor_unpopular_name
16:42:04 <ais523> hmm, is that a lambda-to-underload converter?
16:42:39 <oerjan> ais523: no. it's an underload-to-underload converter
16:42:45 <Deewiant> fizzie: Well, you could store all strings (which commands also are) in one list
16:43:24 <quintopia> that's not a bad idea
16:44:49 <oerjan> ais523: incidentally i believe this has as a corollary that FALSE is TC
16:45:08 <ais523> oh, is it self-interpreting?
16:45:10 <oerjan> because i can just as easily convert the commands to FALSE instead
16:45:14 <ais523> or, well, self-compiling
16:47:03 <oerjan> ais523: um no. i have (1) constructed a scheme to convert any TM into the Underload command subset ~:!()^ (2) Constructed a way to convert that into the subset ~:()^
16:47:07 <quintopia> oerjan: FALSE without % of course ;)
16:47:45 <oerjan> quintopia: well TECHNICALLY, although i think doing that conversion before converting to FALSE is a bit useless
16:48:16 <oerjan> well unless you want to show you only need $\[]! for FALSE, i guess
16:49:16 <oerjan> ais523: indeed FALSE $%\[]! corresponds 1-1 with underload :!~()^ doesn't it
16:50:10 <oerjan> ^ul (( )S)(^!!)(((~:^~(~)S(^!!)~(^)~:^^)(!~(:^!^)~^^^)(!!~(:^!!^)~^^!^))(!(~:^~(^!!)~:^^)(!~(:^!^)~^^!^)(!!~(:^!^)~^^^))(!!(~(:^!!^)~^^!!^)(!(:)S(^!)~:^^)(!!(~)S(^)~:^^))):^^!^!!^
16:50:11 <fungot> : ~ ~: ~~ ~:: ~:~ ~~: ~~~ ~::: ~::~ ~:~: ~:~~ ~~:: ~~:~ ~~~: ~~~~ ~:::: ~:::~ ~::~: ~::~~ ~:~:: ~:~:~ ~:~~: ~:~~~ ~~::: ~~::~ ~~:~: ~~:~~ ~~~:: ~~~:~ ~~~~: ~~~~~ ~::::: ~::::~ ~:::~: ~:::~~ ~::~:: ~::~:~ ~::~~: ~::~~~ ~:~::: ~:~::~ ~:~:~: ~:~:~~ ~:~~:: ~:~~:~ ~:~~~: ~:~~~~ ~~:::: ~~:::~ ~~::~: ~~::~~ ~~:~:: ~~:~:~ ~~:~~: ~ ...too much output!
16:50:35 <oerjan> ais523: ^ that is the program i tested _before_ conversion, also using !
16:51:10 <oerjan> i guess the S part doesn't convert directly to FALSE, but it's not necessary for computation.
16:52:06 <oerjan> ais523: oh and the FALSE correspondence i only noted yesterday when catching up to your comment on the wiki
16:53:47 <oerjan> ais523: this is just a simple 3 states, 3 letters TM for counting in binary of course (as I saw the ! elimination would make things huge enough already), but the construction is completely general
16:58:55 <oerjan> ais523: indeed my Underload scheme uses the "call stack" for the right part of the tape, exactly as you suggested in your recent FALSE edit
17:00:45 <oerjan> hm in fact i had seen that suggested before on Talk:False, and responded to it
17:02:42 <quintopia> COFFEEEEEEE
17:02:55 <ais523> I was just adding the comments on the talk to the article
17:03:07 <oerjan> ah.
17:03:30 <quintopia> did a TC proof for FALSE not already exist?
17:03:40 <ais523> using call stack as stack is something I've done before (in Splinter), but it wasn't my idea wrt FALSE
17:03:59 <oerjan> quintopia: there were some doubts about cell size restrictions
17:04:27 <ais523> quintopia: the existing ones were flawed
17:04:38 <ais523> based on using non-unbounded integers to pick from a stack
17:04:51 <ais523> which obviously proves PDAness, rather than TCness
17:05:22 <quintopia> ah
17:06:09 <quintopia> but we get TCness now by using the call stack as one stack and the stack as the other in a DPDA? or wat?
17:06:21 <oerjan> ais523: i got to this by pondering how many of Underload's commands were necessary for TC-ness, incidentally
17:06:42 <oerjan> :()^ are "obviously" unavoidable
17:07:36 <oerjan> quintopia: a DPDA doesn't have independent call/other stacks
17:08:01 <ais523> oerjan: I've pondered that before, I noticed that some were likely unnecessary
17:08:04 <oerjan> ~ and ! can be eliminated, individually
17:08:09 <quintopia> oerjan: i think i meant 2PDA
17:08:17 <ais523> ! is needed to destroy information, /but/ you never need to do that in order for a program to run
17:08:23 <oerjan> S can be ignored if you think about it right
17:08:34 <ais523> umm, not destroy information, destroy characters in existence
17:08:43 <ais523> so ! is needed to prevent the lang necessarily leaking memory
17:08:49 <ais523> or S to act as a substitue
17:08:54 <ais523> *substitute
17:08:54 <oerjan> ais523: indeed i found a simpler scheme for eliminating _just_ ! previously, by keeping junk on top of the stack, compacting with a and *
17:08:59 <ais523> but I tend to mentally filter out S
17:09:11 <oerjan> and ~
17:09:34 <oerjan> lots of dipping
17:09:48 <ais523> how do you dip without ~?
17:10:11 <oerjan> ais523: um i didn't dip without ~, this was for _just_ removing ! rewriting with the others
17:10:17 <ais523> ah
17:10:52 <oerjan> also ~ is the only command which can be replaced _exactly_ with a combination of the others, i think, without transforming the rest of the program
17:11:14 <ais523> some combination of a, *, and ^?
17:11:31 <oerjan> also !
17:11:33 <quintopia> Does this mean we need an Underload Minimization wiki page?
17:11:39 <oerjan> quintopia: heh
17:11:53 <ais523> hmm, now I'm trying to figure that out
17:14:02 <oerjan> incidentally this shows that only :()^ are strictly necessary, so unless that set _itself_ is TC (which i cannot yet see how it could be), there is more than one minimal set
17:14:21 <oerjan> the one also containing ~ which i just found, and at least one not containing ~
17:15:39 <oerjan> ais523: i don't recall on the spot what other commands i thought ~ could be implemented with, i may have used all of them.
17:16:35 <quintopia> oerjan: more than one minimal set yes, but what's the minimum set?
17:16:46 <quintopia> i suspect that ~:()^ is it
17:16:56 <oerjan> quintopia: unless :()^ works, it must be
17:17:04 <oerjan> well "a" minimum set
17:17:07 <quintopia> yes
17:18:27 <quintopia> i can't see how you could do it with just :()^
17:18:50 <quintopia> even a minsky machine needs two registers
17:20:05 <oerjan> at the same time i don't see an _obvious_ argument why it's impossible - you have (::^)::^ as a program which loops infinitely and consumes indefinite memory
17:20:12 -!- pingveno has quit (Ping timeout: 240 seconds).
17:20:16 <ais523> ~:()^ is enough? seriously?
17:20:28 <oerjan> ais523: I'VE BEEN TRYING TO TELL YOU SO :D
17:20:29 <ais523> I'd think at least * would be needed too
17:20:33 <oerjan> ais523: nope
17:20:42 <ais523> wow
17:20:52 <ais523> I was losing track of what you were trying to tell me
17:21:08 <oerjan> ais523: ok so i was trying to be a bit mysterious. bad habit, i know.
17:22:17 -!- pingveno has joined.
17:23:21 -!- asiekierka has quit (Read error: Operation timed out).
17:33:28 <Ilari> APNIC: On IPv4 front, allocated 10 215 936 IPv4 addresses this month. On IPv6 front, 3 145 741 /48s.
17:35:54 <quintopia> how does that compare to last month in terms of v6 allocations?
17:41:24 <Ilari> Whole last month: 2 818 065
17:42:38 <quintopia> so not many more
17:42:40 <quintopia> slow growth
17:43:12 <Ilari> Well, 17 days vs. 31.
17:43:40 <Ilari> All current IPv6 allocations from RIRs: 9 613 930 325
17:46:13 <quintopia> still, it's only twice as many
17:46:30 <quintopia> it's not like everyone in the world decided to jump on the v6 bandwagon overnight
17:53:14 -!- zzo38 has joined.
17:56:11 <tswett> :()^, eh?
17:57:23 <tswett> Duplicate, pop-and-run, and push quote.
17:58:13 * tswett ponders.
17:58:29 <tswett> There's no way to make new quotes with :()^, so you have a finite alphabet.
17:58:54 <tswett> You have two places of storage: the stack and the program stream.
17:59:37 <quintopia> without ~ and * you can't use the whole stack afaict
17:59:54 <tswett> Whatever the longest quote anywhere in storage is, you can't push it; the only way to get more of it is by using the : command.
17:59:59 <quintopia> you have to already have what you want to use in the right order there
18:00:14 <tswett> The longest quote *can* give you a nice inventory of other stuff, though.
18:00:38 <tswett> The program stream is really a second stack. So...
18:01:10 <tswett> : duplicates the top element of the primary stack. ^ moves the top element of the primary stack to the secondary stack. (x) pushes x onto the primary stack.
18:01:29 <tswett> And the main loop consists of repeatedly running whatever is on top of the secondary stack.
18:03:15 <tswett> Let's consider the longest quote again. It's impossible to ever put anything under it, since that would require removing it from the stack and putting it back. But you can't put it back on the stack; once it's gone from the stack, it's gone forever.
18:03:38 <tswett> So it seems like the longest quote, whatever it is, can only serve as a buffer, indicating the end of the stack and containing instructions for what to do when the stack ends.
18:04:31 <tswett> Suppose the buffer is used only finitely many times. That means you're abandoning the longest quote, and doing without it, so there must be some second longest quote which you are using, and you must be using *it* as a buffer. So the buffer must be something that's used infinitely many times.
18:05:20 <tswett> So it's like a Turing machine where, for whatever reason, you must periodically go all the way to one end of the tape. (Let's say it's the left end.)
18:05:38 <zzo38> Ken made a serious mistake by failing to wager enough. I thought he was better than that!
18:06:58 <tswett> Now, suppose you're in the middle. You have stuff on your left (the stack), and stuff on your right (the program stream). How do you go left, and how do you go right?
18:08:50 <tswett> When you're going left, there are all these things that you're moving from the stack to the stream. Ideally, you would grab a string from the stack and put the string *literal* into the stream. Unfortunately, a string of code can't produce its own literal, ever.
18:09:47 <zzo38> Are you going to compose "Eine kleine Quinemusik"?
18:10:51 <tswett> So when you move left past a string, it has to produce some sentinel in the program stream. The longest string in the sentinel must be shorter than the longest string in the string itself.
18:10:58 <tswett> zzo38: oh, something like that.
18:12:52 -!- asiekierka has joined.
18:12:56 <tswett> What if you're moving right: taking stuff from the program stream and putting it onto the stack? Then, uh...
18:13:46 <tswett> Well, you're executing commands that, I suppose, put representations of themselves onto the stack.
18:14:52 -!- ais523 has quit (Remote host closed the connection).
18:15:39 <tswett> They can do this by pushing literals, or by duplicating. Now, if you take a piece of code and execute it, then once again, the longest string in it cannot end up inside a literal on the stack, *unless* you do this by duplicating what's already on the stack.
18:17:00 <zzo38> What are you trying to figure out now?
18:17:08 <tswett> So when you're moving right, the program stream probably looks something like this: (hey) (look) : (im) : : : (a) (literal) :
18:17:20 <tswett> zzo38: how to code in Underload using only the characters :()^
18:18:06 <zzo38> tswett: Is such things possible?
18:18:13 <tswett> I'm trying to figure that out.
18:18:42 <tswett> On the stack, that will translate to "hey look look im im im im a literal literal".
18:19:16 <tswett> Then you're going to go backwards: you're going to pop the top of the stack and run it, and that top symbol is going to call the symbol under it, and that symbol the symbol beneath it, and so on.
18:20:08 <zzo38> I doubt you can write a useful program with that
18:20:35 <tswett> Well, you have a sequence of symbols, going back and forth within them and changing stuff. Maybe you can write a useful program with that.
18:21:14 <oerjan> <tswett> The longest quote *can* give you a nice inventory of other stuff, though. <-- obviously that's what i do for :()^~
18:21:32 <tswett> ~ would be really useful here, I think.
18:21:57 <tswett> It allows you to push something on the stack, and still have whatever was on top of the stack before you did that.
18:24:02 <tswett> So now the questions are: what can a string on the stack put into the program stream? What can a thing in the program stream put onto the stack?
18:24:47 <tswett> Let's suppose that every string on the stack (except the buffer) starts with ^; that way, once one of them is called, all of them will be called, back to the buffer.
18:25:49 <oerjan> <tswett> [...] The longest string in the sentinel must be shorter than the longest string in the string itself. <-- this gives me a transfinite ordingal vibe, maybe there's a transfinite induction argument why it has to end in something useless...
18:26:12 <oerjan> or well-foundedness argument
18:26:40 <tswett> Then the buffer can initialize the stack with useful stuff, before the entire program stream is executed, pushing stuff back onto the stack:
18:26:46 <tswett> oerjan: use Gates' Lemma: all strings are finite.
18:28:12 <tswett> So, let's say you have a sequence of symbols: (^a) (^a) (^b) (^b) (^c) (^c) . . .
18:29:02 <tswett> When you run ^ with this on the stack, you end up with "aabbcc" in the stream.
18:29:37 <zzo38> Then add some command for manipulating things that are already in the stream
18:30:35 <zzo38> And then maybe you can have only :()^ and that one more command. I don't know.
18:31:15 <oerjan> zzo38: um yes i already proved you only need to add ~
18:31:28 <oerjan> that was how this discussion started
18:31:33 -!- asiekierka has quit (Ping timeout: 240 seconds).
18:31:33 <zzo38> oerjan: OK.
18:32:30 <oerjan> *ordinal vibe
18:32:36 <zzo38> Next thing is make a variation of Underload with one command added, which is call/cc command.
18:32:42 <oerjan> heh
18:33:02 <tswett> And then "aabbcc", in the stream, can push symbols back onto the stack. Perhaps (^a) is already on the stack, and running a just duplicates it or something. And then once you've run (^a) for the last time, it pushes (^b) onto the stack (rather, it does that every time, but also erases it before adding it), and then (^b) can just duplicate itself the same way...
18:33:09 <oerjan> zzo38: hm i did wonder the other day what a command that swapped the top stack element with the remainder of the program would do
18:33:40 <oerjan> also one that swapped the top stack element with everything under
18:34:07 <oerjan> (i.e. a(b) -- b(a))
18:34:24 <oerjan> hm that actually needs b to be only quotes, or possibly run
18:35:17 <tswett> So then a can just be big enough to hold b, and b big enough to hold c, and so on, and you've got yourself a Minsky register machine.
18:35:42 <oerjan> tswett: one minor detail i noted is that two consecutive stack elements starting with : form a buffer
18:35:46 <tswett> A really awful one.
18:36:02 <tswett> oerjan: right.
18:37:54 <tswett> So to consider a simple state of a program while running...
18:37:56 <oerjan> tswett: also the trick of starting strings with ^ i also used for the left part of the stack in the :()^~! construction
18:38:14 <oerjan> as well as some parts of the ! elimination
18:38:23 <tswett> Stack: (:buf) (:buf) (^a) (^a) (^b) (^b) (^c) (^c). Program stream: ^.
18:39:09 <tswett> oerjan: what's the right part of the stack?
18:39:11 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/OCZG
18:39:23 <Gregor> Will lose hard against speedy opponents.
18:39:37 <oerjan> tswett: the remaining program, looks like ^!^!!!^!!^...
18:39:46 <oerjan> number of ! is the letter designation
18:39:53 <oerjan> oh you can have zero too
18:40:47 <zzo38> I want to make Underload with continuations? Can this be done by changing the ^ command so that now it does: Move top of stack to temporary buffer. Make a string with the rest of the stack with () around each entry, and push that one to stack. Make a string with the rest of program stream and push that to stack too. Now do move temporary buffer to program stream to execute.
18:41:27 <zzo38> To make normal ^ you would instead write (!!)~*^
18:41:42 <oerjan> zzo38: hm that would be combining my two suggestions above in one command
18:42:08 <oerjan> um (!!)?
18:42:15 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 47.3
18:42:30 <tswett> So it would turn the state of everything into a single string, and the top of the stack into the state of everything?
18:42:33 <Gregor> Bleh
18:42:49 <oerjan> zzo38: shouldn't your command _replace_ the original stack and continuation rather than add to them
18:43:13 <zzo38> oerjan: Because it make the two extra entry at top of stack, so to do the old ^ you remove those two and then it will execute the same way as the old one.
18:43:19 <oerjan> at least for continuations, that's sort of an intrinsic part of the idea
18:44:00 <oerjan> zzo38: no i mean, your command doesn't give true continuations unless you also _remove_ the original remaining continuation
18:44:28 <oerjan> and then (!!) isn't the right thing to get old ^
18:45:36 <oerjan> oh wait hm
18:46:35 <tswett> Anyway, I kind of have a Minsky register machine where each register is only aware of its two neighboring registers.
18:47:05 <tswett> And... my head hurts.
18:48:07 <quintopia> mine did earlier, but caffeine fixed it
18:51:51 <tswett> Meh. I'm going to make a BF joust genetic thingy.
18:54:52 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/dGXQ
18:54:59 <Gregor> I honestly have no idea if this will be better or worse.
18:56:47 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 54.8
18:56:54 <Gregor> Hmm hmm hmm!
18:57:29 <quintopia> impressive sir
18:57:35 <quintopia> what is this strategy?
18:59:16 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/FBAN
18:59:21 <Gregor> I'll explain it in a minute, it might be new.
18:59:30 <Gregor> It might also be clear if you watch it...
18:59:33 <Gregor> (Not sure though)
18:59:44 <quintopia> I HOPE YOU DIDN'T STEAL MY IDEA
18:59:54 <Gregor> I totes stole your idea lawl
19:00:04 <quintopia> :[
19:00:36 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 58.5
19:01:08 <Deewiant> STILL NOT NUMBER ONE HUH
19:01:43 <Gregor> Deewiant: Imma kiww u wit a rake.
19:02:00 <Deewiant> Here: ---E
19:02:10 <Gregor> Now how did I lose to space_elevator ...
19:02:49 <quintopia> it's a wily program you know :P
19:03:05 <quintopia> i may make it wilier this weekend
19:04:53 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/HKLH
19:04:59 <Gregor> SHOULD be better, but maybe not.
19:06:21 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 58.6
19:06:26 <Gregor> SO MUCH BETTER :P
19:06:37 <quintopia> EXPLOX STRATEGY
19:06:54 <oerjan> <Gregor> Now how did I lose to space_elevator ... <- IT'S THE GRAPHENE
19:06:56 <Gregor> !bfjoust mess_with_Deewiant <3
19:06:58 <Gregor> *cough* :P
19:07:02 <Deewiant> :-D
19:07:23 <EgoBot> Score for Gregor_mess_with_Deewiant: 0.0
19:07:36 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/HKLH
19:08:07 <Gregor> Oooooowait, one more trick up my sleeve :)
19:08:50 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 59.5
19:09:23 <Gregor> Actually this one more trick might make things worse X-P
19:09:28 <Gregor> But I think it's worth a shot.
19:09:58 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/FBLM
19:10:45 <Gregor> Yeah, I think it should be better against the strategies I was already pretty good against, in retrospect.
19:11:16 <Gregor> (And worse against others)
19:11:46 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 59.4
19:11:55 <Gregor> Not as much worse as I expected :P
19:12:00 <quintopia> gregor
19:12:06 <quintopia> you stole my inner loop :P
19:12:12 <Gregor> Did I?
19:12:30 <Gregor> My inner loop is just philip with a regular clear instead of a turtle clear.
19:12:45 <quintopia> the [.-].[.++-------[...-]] thing is all me :P
19:13:18 <Gregor> Ohyeah
19:13:20 <Gregor> That I stole outright.
19:13:21 <Gregor> THANKS
19:13:59 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/UWLg
19:14:20 <Gregor> (Suffice it to say I'm not good at shudder avoidance myself, so I need all the help I can get X-P
19:14:21 <Gregor> )
19:15:18 <quintopia> that's anti-canonical shudder plus anti-definder
19:15:22 <Gregor> Oh fekk that was ALL wrong ...
19:16:33 <Gregor> As much as I just effed that up, I'm surprised I win against anything ...
19:17:01 <quintopia> i have no idea what this thing is doing by watching it gregor. it's doing some kind of magic with dealing with big offsets tho
19:17:38 <Gregor> wtf, why isn't this borked run done yet.
19:17:45 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 54.1
19:18:07 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/CMPY
19:18:08 <Gregor> Not quite as borked as I thought X-D
19:18:10 <quintopia> oh
19:18:34 <Gregor> quintopia: I will explain it, but first I'll obsess about first place for a tick :P
19:18:35 <quintopia> it's also using the keep-poking-even-on-very-small-decoys idea i was planning on adding to space_elevator
19:18:56 <Gregor> quintopia: Too bad I added it foist :P
19:19:32 -!- nescience has joined.
19:19:36 <quintopia> eh, it doesn't mean i can't still kick your ass using it :D
19:19:53 <nescience> man I've been missing some fun
19:20:05 <nescience> didn't get a chance to implement "poke" first :P
19:20:19 <Gregor> Or double-poke like I just got a chance to implement first ^^
19:20:30 <quintopia> yeah i was thinking of doing that too
19:20:43 <quintopia> poke to nonzero, build decoy, poke to non-small
19:20:44 <Gregor> Well I'm not psychic, so it still counts as mine X-P
19:20:45 <nescience> what does the base64 read for gregor's thing? the code that generates it?
19:20:46 <quintopia> build more decoy
19:20:51 <Gregor> nescience: Yes.
19:20:55 <quintopia> but i'ma do it better!
19:21:19 <nescience> well I still have some wikispace so I feel good :)
19:21:44 <quintopia> Gregor: the reason i didn't do it first is because it requires writing a generator to generate miles long code :P
19:21:45 <Gregor> Can't lose the wikispace.
19:21:58 <Gregor> quintopia: Steal some of my generator code, it's actually pretty clean.
19:21:59 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 61.4
19:22:07 <Gregor> YESSSSSSSSSSSSS
19:22:07 <Gregor> #1
19:22:08 <Gregor> #1
19:22:10 <Gregor> YESSSSSSSSSSSSSSSSSSSSSSSSS
19:22:11 <Gregor> HALLO THAR
19:22:14 <nescience> oh haha nice @ the animation thing
19:22:17 <nescience> that is awesome
19:22:27 <nescience> lol
19:22:28 * quintopia put a feather in gregor's cap
19:22:28 <Gregor> nescience: Why thankee
19:22:33 * quintopia hides another one in his pants
19:23:24 <Gregor> Ahhhhhhhhhhhhhhhhhhhhh OK so my fundamental new (maybe?) strategy is breadcrumbs.
19:23:56 <Gregor> While I'm setting up reverse decoys, I set up some very small pseudodecoys in between. Then when I get to the beginning, I set up big decoys everywhere where the breadcrumbs are unchanged.
19:24:03 <Gregor> As soon as I find a changed breadcrumb, I switch to attack mode.
19:24:07 <quintopia> i think you haven't stolen all my new ideas yet, so ... just you wait ;)
19:24:43 <Gregor> That way I don't waste too much time in reverse for good pokers, and I don't waste any time forwards since I will stop once I see one that's already been changed.
19:25:01 <Gregor> The attack itself is only improved by MY poke-harder algorithm.
19:25:02 <quintopia> not a bad idea that
19:25:10 -!- elliott has joined.
19:25:17 <elliott> -NickServ- Last failed attempt from: elliott!~nife@unaffiliated/nife on Feb 17 18:16:16 2011.
19:25:19 <elliott> I think not.
19:25:23 <Gregor> elliott: I'm #1.
19:25:34 <elliott> Goodie.
19:25:37 <elliott> With what porngram?
19:25:47 <Gregor> furry_furry_strapon_pegging_girls
19:25:50 <quintopia> Gregor: but i'm pretty sure the idea you haven't stolen will still kick its ass
19:25:55 <quintopia> IT WILL HAVE TO WAIT TIL THE WEEKEND
19:26:14 <elliott> Gregor: X-D
19:26:23 <elliott> shouldn't't be strap_on
19:26:39 <Gregor> I considered that.
19:26:43 <Gregor> I decided to make it one word.
19:27:03 -!- GreaseMonkey has joined.
19:27:26 <elliott> 20:54:24 <oerjan> not really, just take a look at what it _isn't_...
19:27:27 <elliott> 20:55:44 <oerjan> or rather, what isn't there
19:27:27 <elliott> 20:57:13 <quintopia> no quoting
19:27:27 <elliott> 20:58:21 <quintopia> which means that you never had to build a new program...it only ever reuses the stuff you pushed originally
19:27:28 <elliott> oerjan: wow
19:27:41 <elliott> 20:58:32 <oerjan> yep!
19:27:42 <elliott> 20:58:44 <oerjan> no a or * commands
19:27:51 <elliott> Underload minus a and * is TC. wow.
19:27:58 <elliott> 21:00:53 <oerjan> but given that, i can also eliminate !
19:27:59 <elliott> :-D
19:28:21 <elliott> so ~:()^ is TC
19:28:26 <quintopia> Gregor: i think your breadcrumb checking is broken.
19:28:33 <Gregor> quintopia: Oh?
19:28:50 <quintopia> it never brings the breadcrumbs back to zero, so how can it check them?
19:29:18 <Gregor> quintopia: It does bring them back to zero, for one cycle
19:29:26 <quintopia> the animation doesn't show that
19:29:38 <Gregor> quintopia: Just for laffs it makes the real decoy in the opposite direction.
19:29:40 -!- sebbu2 has joined.
19:29:41 -!- sebbu2 has quit (Changing host).
19:29:41 -!- sebbu2 has joined.
19:30:06 <Gregor> quintopia: So the animation may look like all I did was subtract right through zero.
19:30:14 <quintopia> Gregor: i am watching it test a breadcrumb and go racing off to attack even though the enemy never touched it
19:30:27 <Gregor> quintopia: Which opponent?
19:30:33 <quintopia> allegro
19:30:36 <elliott> http://esolangs.org/wiki/Preposterous_Programming
19:30:36 <elliott> http://esolangs.org/wiki/Preposterous_Programming_Language
19:30:44 <elliott> I propose we name these pages "worthless and worthlesser".
19:31:18 <Gregor> quintopia: allegro changes my breadcrumbs before I even set them.
19:31:23 <quintopia> oh
19:31:47 <elliott> 05:55:03 <quintopia> hey fizzie. wanna hear a joke?
19:31:47 <elliott> 05:56:07 <fizzie> Sure.
19:31:47 <elliott> 05:56:17 <quintopia> elliott will finish lance tonight
19:31:54 <elliott> quintopia: well, it's complete apart from a parser bug...
19:32:00 <elliott> 06:03:27 <fizzie> It uses the stackful oerjan method of doing (...{...}...)%n constructions. Though I guess it could as well use the Gregor method of sticking a counter in the instruction bf-op structure; I keep those around too, for jump offsets.
19:32:00 <elliott> 06:04:47 <quintopia> i couldn't begin to guess which of those is actually the better option
19:32:00 <elliott> 06:05:10 <quintopia> elliott obviously believes it's gregor's
19:32:03 <elliott> the stack method is better
19:32:06 <elliott> but i got it wrong
19:32:09 <elliott> so i'm doing it Gregor's way :D
19:32:10 <quintopia> elliott: I WON'T BELIEVE IT TIL I SEE IT
19:32:29 <Gregor> My way is easier, the stack way has the advantage that you can "save state" more easily.
19:32:31 <elliott> 06:29:39 <Vorpal> fizzie, why js? Is egojsout js?
19:32:35 <elliott> No, it's written in VBScript.
19:32:44 <quintopia> oh god
19:32:50 <elliott> Thus "EgoJSout", where JS stands for VB Script.
19:32:51 -!- augur has quit (Read error: Connection reset by peer).
19:32:58 <quintopia> i remember the days of IE and activex :$
19:33:04 <nescience> this is really getting interesting, but I fear things may become more complicated than I have time for :P
19:33:14 -!- augur has joined.
19:33:26 <nescience> I feel a bit sad I only had one program on top in all this ;)
19:33:27 -!- sebbu has quit (Ping timeout: 276 seconds).
19:33:38 <elliott> nescience: just write MEDIUMSPEEDRUSH
19:33:45 <quintopia> gregor: it appears to be reacting to a breadcrumb he never touched, unless i'm misreading it
19:34:09 <elliott> `addquote <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/eKWa * Sgeo had no idea that Gregor was hetero
19:34:32 <nescience> nah, I think we are getting to the place where simple strategies on their own are getting useless
19:34:38 <elliott> Gregor: You'd better get to submitting hairy_hairy_anal_men.
19:34:55 <HackEgo> 308) <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/eKWa * Sgeo had no idea that Gregor was hetero
19:35:02 <nescience> and closer to corewars' integrate and recombine attitude :P
19:35:09 <Gregor> quintopia: Tape length?
19:35:24 <quintopia> Gregor: any of the longer ones
19:35:37 <Gregor> nescience: I think we'll loop 'round to a point where simple strategies do well because complex strategies spend too much time dicking around.
19:35:43 <Gregor> nescience: I just think we haven't gotten there yet.
19:35:55 <nescience> haha maybe
19:36:07 <quintopia> from what i've seen the complex strategies do better because they spend LESS time dicking around where they don't need to
19:36:09 <nescience> but the complex strategies I am seeing is more like
19:36:19 <nescience> yeah, something like that
19:36:40 <elliott> Gregor: I dunno
19:36:46 <elliott> take a look at space_elevator
19:36:47 <nescience> more effort is being put into that because effective things hav e developed that allow people to vary their strategy
19:36:49 <elliott> it has really complex logic
19:36:52 <elliott> but it wastes no time
19:36:59 <Gregor> Fair 'nuff
19:37:00 <elliott> well
19:37:05 <elliott> or even definder2/defend13/defend9.75
19:37:08 <elliott> have even more complex logic
19:37:19 <elliott> Gregor: it's because you can waste only one cycle to do a check
19:37:25 <elliott> so you can only check for things if they seem probable or whatever
19:37:27 <nescience> which means I think we are running out of successful single strategy elegance
19:37:31 <elliott> and waste very few cycles
19:37:42 <elliott> nescience: um you realise the top program as of yesterday was just a simple tuned rush?
19:37:55 <nescience> I didn't see it yesterday
19:37:59 <elliott> indeed #2 and #3 are
19:38:07 <elliott> wireless_frownie is also prettym short
19:38:11 <elliott> *pretty
19:38:17 <elliott> http://codu.org/eso/bfjoust/in_egobot/quintopia_wireless_frownie.bfjoust
19:38:49 <Gregor> Yeah, Deewiant's strategies are well-tuned rush programs. On the one hand, GRRRR, on the other hand, it's good that such a strategy can still do well, because it means not everybody has to use code generation necessarily :P
19:39:19 <nescience> well it gives me hope :)
19:39:23 <elliott> Gregor: This is why a length-limited alternate hill might be interesting if the popularity keeps up.
19:39:30 <Deewiant> The top program of 20 minutes ago, you mean
19:39:32 <elliott> Core War has that 4-or-5-I-forget-instruction nano hill.
19:39:35 <quintopia> Gregor: bwaha, i just did a stupid loutish warrior that draws with FFSPG on longer tapes XD
19:39:37 <nescience> it's been a while since I examined the competition well enough to do that
19:39:38 <elliott> That sees actual regular innovation.
19:39:47 <elliott> Consider a 25-char-max BF Joust hill.
19:39:53 <elliott> Deewiant: well I'm logreading :P
19:39:54 <nescience> 5 I think
19:40:02 <nescience> also lol @ length limited bf
19:40:26 <elliott> why lol?
19:40:32 <elliott> there are plenty of short warriors that do well
19:40:47 <elliott> 08:16:01 <oerjan> Gregor: sure, i expect bfjoust has _several_ interacting RPS subfeatures
19:40:47 <elliott> 08:17:04 <oerjan> i'm beginning to understand that bfjoust is a rather deep game
19:40:48 <elliott> oerjan: indeed it is
19:41:37 <quintopia> !bfjoust HAHAHA (>)*9[>(+)*15[-](-)*31]
19:41:50 <elliott> quintopia: dude there's a ^scramble
19:41:55 <elliott> as well as ^srmlebac :P
19:41:57 <elliott> and ^unscramble too
19:42:00 <elliott> ^unscramble srmlebac
19:42:01 <fungot> scramble
19:42:02 <nescience> lol because some simple things take a lot of characters to accomplish
19:42:10 <nescience> could be interesting though
19:42:31 <quintopia> nescience: i've come up with some new syntax ideas that shorten the sort of programs we see now considerably
19:42:33 <elliott> nescience: well duh
19:42:36 <elliott> the idea is to restrict the design space
19:42:39 <elliott> to encourage more cunning
19:42:40 <quintopia> i was planning on writing them up later
19:42:44 <nescience> oh really
19:42:46 <nescience> like what?
19:42:58 <nescience> well I know that elliott
19:43:01 <elliott> quintopia: I don't want any new syntax fwiw
19:43:07 <quintopia> i'll add to Talk:BF Joust a little later
19:43:13 <quintopia> elliott: you wouldn't
19:43:14 <nescience> but my point was that the nature of bf is to be long
19:43:21 <elliott> nescience: but plenty of warriors aren't
19:43:30 <elliott> quintopia: I think anything more that needs doing should just be generated by a program rather than us inventing our own bastardised macro language
19:43:35 <nescience> sure, but plenty are
19:43:54 <nescience> limiting length has the effect of cutting off a subset of strategies
19:43:54 <quintopia> elliott: that's how i was planning on using it unless someone wanted to add them to an interpreter
19:44:13 <nescience> but I think some of those strategies that would get cut off are important
19:44:14 <quintopia> it's just that they would convert into really long programs
19:44:14 <elliott> quintopia: just use a more expressive language so you don't have to write an interpreter :P
19:44:22 <nescience> anyway like I said, interested anyway
19:44:25 <elliott> nescience: you realise i'm proposing it as a separate hill?
19:44:28 <elliott> 25 is probably too much
19:44:29 <elliott> say 20
19:44:31 <elliott> 20 char max
19:44:38 <quintopia> so some really simple ideas might even be too big to fit on the current hill
19:44:56 <elliott> nescience: you would be surprised, anyway. as i said, the core war nano hill has a maximum length of 5 instructions
19:44:59 <elliott> "SAL's nano hill opened on 11 June, 2004. To begin with, many players believed the maxlength of 5 would limit the warriors to clears and evolved. However, a surprising range of strategies have proved effective, including papers, scanners, oneshots and quickscanners."
19:45:03 <nescience> I am not arguing with you elliot
19:45:11 <elliott> nescience: i'm just saying that i think many strategies are viable
19:45:13 <elliott> including defence
19:45:16 <elliott> with only 20 chars
19:45:28 <nescience> I was just commenting on the nature of bf
19:45:35 <elliott> sure
19:45:39 <elliott> but that's when you want to write actual programs :)
19:45:44 <elliott> warriors are I think different
19:45:46 <elliott> because it's more internal
19:46:01 <nescience> I think it still applies
19:46:05 <quintopia> gregor: http://codu.org/eso/bfjoust/egojsout/?l=7e433c713d3eac5616ff0e877f00369a29f4e663&r=f8f398493218e009d5d58a93c23548d612d9c218&t=20&p
19:46:24 <nescience> length limit's best purpose is to reduce the possibilities of complexity
19:46:25 <nescience> but
19:46:46 <nescience> in bf it also reduces the possibilities of certain simple things too
19:47:11 <nescience> quintopia's suggestions may go well with length limited bfjoust
19:47:16 <nescience> will have to see what they are
19:47:32 <EgoBot> Score for quintopia_HAHAHA: 3.0
19:48:10 <tswett> elliott: how many possibilities are there with 5 instructions, in Core Wars?
19:48:13 <quintopia> OSHIT. bill murdock's giving a lecture today at four about Watson!
19:48:18 <quintopia> i gotsa go!
19:48:24 <elliott> tswett: well, lots, but not that many
19:48:33 <nescience> lol careless doesn't run in egojsout
19:48:39 <elliott> nescience: yes because it's broken
19:48:42 <elliott> tswett: and ofc you can't map that directly onto bf joust
19:48:42 <tswett> elliott: so, a large small number?
19:48:43 <elliott> but...
19:48:46 <nescience> rolleyes
19:48:47 <elliott> tswett: shaddap :P
19:48:54 <nescience> don't wanna argue this
19:48:56 <elliott> nescience: dude, everyone agrees that ([)*n isn't allowed :P
19:49:02 <elliott> egojsout doesn't do it, lance doesn't do it
19:49:08 <elliott> it's never been allowed in any spec
19:49:18 <nescience> dude, the alternative DIDN'T FUNCTION WHEN I WROTE IT
19:49:23 <nescience> so just shut up
19:49:38 <nescience> I'm seeing if I can fix it to work in jsout
19:50:24 <nescience> is lance in the hill yet?
19:50:27 <elliott> 08:39:49 <oerjan> (http://oerjan.nvg.org/esoteric/underload/ULDisclaim.hs)
19:50:32 <elliott> oerjan: `fmap` instead of <$>? srsly?
19:50:35 <elliott> nescience: no, it will be today or tomorrow
19:50:40 <elliott> I'm finishing up the implementation today
19:52:06 <oerjan> <elliott> Gregor: This is why a length-limited alternate hill might be interesting if the popularity keeps up. <-- it has occured to me that in principle any program can avoid delay of getting past [] by rewriting it in such a way that it _never_ executes a ]. however this requires programs of depth 100000 and exponential size in _that_
19:52:14 <elliott> oerjan: yes, we know :P
19:52:14 <Gregor> quintopia: What is this?
19:52:22 <Gregor> quintopia: (The thing you linked at me)
19:52:33 <elliott> Happiness vs. sadness.
19:52:48 <nescience> oerjan, you're not the only one
19:53:05 <nescience> I only haven't really done it because it's annoying to write and ugly :P
19:53:16 <elliott> oerjan: I think we have a consensus that giving the macro language a convenient way to do that would be a bad idea :D
19:53:42 <Gregor> quintopia: I think you snagged FFSPG in the bit of time before I fixed that last bug.
19:53:51 <Gregor> quintopia: The bug was exactly that it misread its own second breadcrumb.
19:54:18 <nescience> looks like some of the defend programs fail in jsout too
19:55:49 <Deewiant> elliott: That reminded me: is there an operator for `flip`?
19:56:00 <elliott> :t (`flip`)
19:56:01 <lambdabot> parse error on input `)'
19:56:12 <elliott> :t \f x -> f `flip` x
19:56:13 <lambdabot> forall (f :: * -> *) a b. (Functor f) => f (a -> b) -> a -> f b
19:56:14 <Deewiant> `flip` is flip
19:56:19 <elliott> Yes, yes, I know.
19:56:24 <elliott> (Stupid Caleskell)
19:56:32 <HackEgo> No output.
19:56:39 <elliott> :t \f -> (f `flip`) where flip f x y = f y x
19:56:40 <lambdabot> parse error on input `where'
19:56:46 <Deewiant> f `flip` x is just like having `flip` be the placeholder for the next argument
19:56:46 <elliott> :t \f -> let flip f x y = f y x in (f `flip`)
19:56:47 <lambdabot> forall t t1 t2. (t -> t1 -> t2) -> t1 -> t -> t2
19:56:53 <elliott> Deewiant: Yesyesyes. Hmm.
19:56:59 <elliott> @hoogle (a -> b -> c) -> b -> a -> c
19:56:59 <lambdabot> Prelude flip :: (a -> b -> c) -> b -> a -> c
19:56:59 <lambdabot> Data.Function flip :: (a -> b -> c) -> b -> a -> c
19:56:59 <lambdabot> Data.IntMap fold :: (a -> b -> b) -> b -> IntMap a -> b
19:57:03 <elliott> Deewiant: "No."
19:57:08 <nescience> btw another thing about cw nano is the core is much smaller too
19:57:10 <Deewiant> Yes, I can hoogle. :-P
19:57:12 <elliott> Deewiant: May I suggest <\>?
19:57:14 <elliott> Or </>?
19:57:20 <nescience> which has a lot to do with the viability of programs
19:57:24 <elliott> f </> 3
19:57:27 <Deewiant> @hoogle </>
19:57:27 <lambdabot> Text.Html (</>) :: (HTMLTABLE ht1, HTMLTABLE ht2) => ht1 -> ht2 -> HtmlTable
19:57:27 <lambdabot> System.FilePath.Posix (</>) :: FilePath -> FilePath -> FilePath
19:57:28 <lambdabot> System.FilePath.Windows (</>) :: FilePath -> FilePath -> FilePath
19:57:28 <oerjan> <elliott> oerjan: `fmap` instead of <$>? srsly? <-- if i start using <$>, i'll soon want Applicative notation, and HP's Parsec doesn't have an instance, and basically i don't even want to bother to try because it makes me annoyed
19:57:31 <Deewiant> No, you may not.
19:57:33 <nescience> for a nanojoust, maybe tapes of 5-10 or something
19:57:35 <elliott> @hoogle <\>
19:57:35 <lambdabot> No results found
19:57:42 <elliott> Deewiant: You realise that clashes are inevitable?
19:57:49 <elliott> oerjan: cabal install 'parsec==3'
19:57:51 <elliott> erm
19:57:52 <Deewiant> elliott: System.FilePath is a bit too common :-P
19:57:52 <elliott> 'parsec>=3'
19:57:53 <fizzie> Deewiant: "Yes sir, I can Hoogle, Google-Hoogle, all night long"?
19:57:57 <elliott> @hoogle (<@>)
19:57:58 <lambdabot> No results found
19:57:58 <nescience> both a smaller range and a shorter distance could bring about some interesting explicit distance strategies
19:58:00 <elliott> Deewiant: <@>
19:58:05 <elliott> It's like a hole :P
19:58:16 <elliott> > let (<@>) = flip in subtract <@> 3
19:58:17 <lambdabot> Overlapping instances for GHC.Show.Show (a -> a)
19:58:17 <lambdabot> arising from a use of `...
19:58:20 <elliott> > let (<@>) = flip in (subtract <@> 3) 42
19:58:22 <lambdabot> -39
19:58:28 <elliott> Deewiant: (<@>) = flip
19:58:36 <elliott> oerjan: I am pretty sure that will work in cmd.exe
19:58:44 <elliott> oerjan: perhaps with \Program Files\Haskell Blah\bin\ or something before it
19:58:45 <Gregor> I should make it so that to play on the hill you have to register a 60-hour/week period during which you're allowed to submit, so that people would be discouraged from spending all week playing BFJ X-P
19:58:51 <elliott> oerjan: and then you just use Text.Parsec
19:59:00 <elliott> oerjan: but but, no type signatures on your global definitions? :D
19:59:32 <Deewiant> fizzie: Something like that
19:59:58 <fizzie> Use ↺ for the operator, it's very flippy.
20:00:26 <elliott> > let ↺ = 3 in ↺
20:00:27 <lambdabot> <no location info>: parse error on input `
20:00:32 <elliott> > let (↺) = (+) in 3 ↺ 4
20:00:32 <lambdabot> 7
20:01:11 <elliott> > let (○) = flip in (subtract ○ 3) 42
20:01:12 <elliott> Deewiant: ^
20:01:13 <lambdabot> -39
20:01:17 <elliott> It's a hole.
20:01:24 <Deewiant> Not bad.
20:01:28 <elliott> > let (◊) = flip in (subtract ◊ 3) 42
20:01:29 <elliott> Also a hole.
20:01:30 <lambdabot> -39
20:01:38 <elliott> > let (□) = flip in (subtract □ 3) 42
20:01:39 <elliott> A box.
20:01:40 <lambdabot> -39
20:01:50 <elliott> The box and circle are a bit oversized here.
20:01:53 <oerjan> <elliott> oerjan: cabal install 'parsec==3' <-- i didn't want other people to install anything extra just for such a simple program
20:01:54 <elliott> But I'm using a proportional font.
20:01:56 <Deewiant> ⛳ flag in hole
20:02:01 <elliott> oerjan: everyone has parsec 3 dude :P
20:02:09 <Deewiant> I don't
20:02:14 <elliott> *everyone except Deewiant
20:02:27 <fizzie> I just dug up ⛳ too.
20:02:34 <fizzie> With grep -i hole.
20:02:48 <elliott> oerjan: hmm you talking about continuations in underload has totally tempt-ified me
20:02:57 <elliott> oerjan: i have a total... idea
20:03:02 <Deewiant> fizzie: What'd you grep
20:03:08 <fizzie> Deewiant: UnicodeData.txt.
20:03:14 <elliott> xCy -> x(y)C, using your silly stack notation
20:03:28 <oerjan> <elliott> oerjan: but but, no type signatures on your global definitions? :D <-- sheesh
20:03:30 <elliott> hm except that might not work very well
20:03:33 <fizzie> 1D187;MUSICAL SYMBOL COMBINING FLIP;Mn;230;NSM;;;;;N;;;;; -- but it's really just a tiny little squiggle, and a combining character too.
20:03:35 <elliott> ah you're right about the swapping thing
20:03:51 <elliott> x(y)Cz -> x(z)y
20:03:56 <elliott> so
20:04:09 <elliott> (:^)C:^
20:04:11 <elliott> is an infloop
20:04:21 <fizzie> Deewiant: Ooh, how about ⛐ -- it's gonna flip!
20:04:42 <oerjan> ->
20:04:53 <elliott> oerjan: so C is actually call/cc...
20:09:33 <nescience> gregor, your program seems to run over the smallest tape length when it encounters no decoys(?)
20:10:45 <elliott> oerjan: *Main> eval "(S)CHello, world!" []
20:10:45 <elliott> "Hello, world!"
20:11:34 <elliott> the other alternative is
20:11:45 <elliott> xCy -> x(y)y
20:11:48 <elliott> but that seems weird
20:13:28 <elliott> oh and of course
20:13:31 <elliott> (x)^y
20:13:33 <elliott> -->
20:13:38 <elliott> ((x)*^)Cy
20:13:42 <elliott> so hmm
20:13:49 <elliott> a(*^)*C == ^
20:14:11 <elliott> nope not quite
20:14:17 <elliott> *Main> eval "(:a(*^)*C):a(*^)*C" []
20:14:17 <elliott> "*** Exception: Invalid program.
20:15:21 <elliott> a(*^)~*C == ^
20:15:41 <elliott> (:a(*^)~*C):a(*^)~*C hangs
20:17:07 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/GVdi
20:17:11 <Gregor> nescience: Thanks for the bug report :P
20:17:30 <nescience> heh :P
20:17:32 <Gregor> (Off-by-one error)
20:18:16 -!- copumpkin has quit (Remote host closed the connection).
20:18:19 <nescience> I now demand that you submit it with myself as coauthor
20:19:27 <nescience> figured
20:19:37 <nescience> it's interesting that slowrush is still reasonably successful
20:19:49 <nescience> but maybe just because the hill still has a lot of junk on it
20:20:02 <Gregor> nescience: I stole far more from quintopia :P
20:20:19 <nescience> I notice that shudder is gone
20:20:33 <nescience> glad to see my efforts on that front have paid off lol
20:21:02 <nescience> btw the wiki seems to imply the shudder killing code is supposed to loop: it's not
20:21:13 <nescience> it's just in brackets so it gets skipped
20:21:20 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 64.1
20:21:24 <Gregor> 8-D
20:21:28 <Gregor> HOLY CRAP THAT WAS A BIG IMPROVEMENT
20:21:34 <Gregor> Bahahahahah
20:21:35 <nescience> I figured it would jump
20:21:41 <Gregor> I figured it would jump by one, tops :P
20:21:54 <nescience> at least that much
20:21:56 <Gregor> I mean, this should be strictly worse (by one cycle) for all tape lengths >10 :P
20:22:00 -!- copumpkin has joined.
20:22:00 -!- copumpkin has quit (Changing host).
20:22:01 -!- copumpkin has joined.
20:22:12 <Gregor> (And much, much better for tape length 10 since it doesn't kill itself)
20:22:26 <nescience> but it suicides against a bunch of good programs that it can beat consistently
20:22:36 <Gregor> Yeah, but only in two configurations.
20:22:43 <Deewiant> Darn, now you have slightly more points than allegro, too
20:22:55 <Deewiant> You and your fancy computer-generated programs
20:23:06 <Gregor> Muahahahaha
20:23:10 <nescience> sure, but +1 win gets you a decent amount more points
20:23:24 <nescience> against programs where it pays off
20:23:38 <Gregor> nescience: Clearly 'struth.
20:24:37 <elliott> 64 wow
20:24:49 <elliott> i
20:24:53 <elliott> really want to generate a huge program now
20:25:22 <elliott> but instead -- bcuz i am nice -- i will lance
20:25:28 <nescience> it beats all but like two programs
20:25:41 <Gregor> Six actually.
20:25:42 <Gregor> And ties with one.
20:26:01 <Gregor> Strictly allegro beats more programs, but it beats them in barely more than half of all configurations.
20:26:29 <nescience> eh whatever was on top had two losses and a tie last I looked
20:26:38 <nescience> but maybe I mistake the program
20:26:43 <Gregor> Yeah, that was allegro.
20:26:57 <Deewiant> Now it has three losses and a tie. :-P
20:27:00 <Gregor> I lose to six, but I win to the ones I win to in almost all configurations.
20:27:03 <nescience> ok
20:27:17 <elliott> does it beat ICA
20:27:18 <Deewiant> Dropping pendolino might help allegro's case
20:27:45 <Deewiant> Given that it loses to it, but FFSPG beats both
20:27:46 <Gregor> elliott: Amazingly it does.
20:28:08 <Gregor> BTW AREN'T MY WARRIOR NAMES JUST GETTING BETTER AND BETTER
20:28:14 <elliott> Gregor: noooo i love ica
20:28:17 <elliott> itz my favourite
20:28:19 <elliott> why amazingly
20:28:20 <Deewiant> I just see FF[A-Z][A-Z]G
20:28:31 <elliott> FFFFG
20:28:34 <elliott> Furry furry furry furry girls
20:28:36 <Gregor> elliott: I've found it REALLY difficult to win to ICA.
20:28:44 <elliott> Gregor: It's an awesome program :P
20:28:50 <Gregor> elliott: I gave up on trying, then ended up beating it by coincidence :P
20:28:57 <Deewiant> Furry furry fist fucking girls
20:29:00 <elliott> Gregor: Finding out anything about it is pretty much impossible, so you just have to hope that you accidentally win :P
20:29:04 <elliott> Deewiant: Gregor: ^ LISTEN TO THE MAN
20:29:07 <elliott> That is your next program.
20:29:17 <Gregor> I've got a list :P
20:29:25 <elliott> Psht
20:29:41 <Gregor> Besides, I already have anal fisting reserved for my gay fetishes series.
20:29:53 <elliott> Gregor: leather discipline girls appear to beat ICA
20:30:07 <Gregor> elliott: FFLDG I actually tried.
20:30:30 <elliott> well, i beat strapon pegging
20:30:31 <elliott> looks like
20:30:32 <elliott> (ICA that is)
20:30:38 <elliott> according to egojsout
20:30:40 <elliott> so
20:30:41 <elliott> ur wrong
20:30:46 <elliott> in fact i trash you
20:30:48 <elliott> on all configurations
20:31:01 <Gregor> Uhhhhwtf, did I misread the report?
20:31:04 <elliott> man it's actually kinda sad, look ta regular polarity tape length 19
20:31:06 <elliott> is this a bug in egojsout?
20:31:09 <elliott> because it looks like you sit there
20:31:12 <elliott> wait for me to run over quickly
20:31:14 <elliott> and then help me destroy you
20:31:17 <elliott> so it finishes in seconds
20:31:19 <nescience> yeah
20:31:25 <elliott> really quite pathetic :D
20:31:25 <nescience> it fails on brackets
20:31:33 <elliott> eh?
20:31:34 <nescience> it's an interpreter thing
20:31:38 <elliott> egojsout isn't broken.
20:31:41 <elliott> egojsout is the one that isn't broken.
20:31:43 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
20:31:47 -!- azaq23 has quit (Quit: Leaving.).
20:31:47 <elliott> or are you trolling about ([)*n
20:31:51 <Gregor> elliott: According to egojsout, I beat ICA in all but two configurations on my egojsout.
20:31:56 <nescience> not trolling
20:32:05 <elliott> nescience: just whining about ([)*n then?
20:32:06 <nescience> just saying it fails to run some programs
20:32:18 <nescience> and that is what the result looks like
20:32:19 <elliott> it doesn't
20:32:20 <Gregor> elliott: According to the department of redundancy, I was redundant in my above redundant sentence, with redundancy.
20:32:22 <elliott> those programs aren't programs
20:32:39 <elliott> they aren't allowed by the spec, we specifically decided against them from the start, and it's an egojoust bug that they're accepted
20:32:40 <nescience> and the only ones I saw it do that on seemed to be programs with bracket stuff
20:32:45 <nescience> like defend
20:32:50 <elliott> well neither of our programs give parse errors
20:32:51 <elliott> so it's not that
20:32:51 <nescience> jesus let it die
20:33:00 <elliott> let what die
20:33:02 <nescience> I am not fucking arguing with you
20:33:07 <elliott> ...nor am I?
20:33:10 <elliott> Gregor: http://i.imgur.com/GfA6j.png
20:33:21 <nescience> you don't have to go on a rant every time I mention brackets
20:33:24 <elliott> Admittedly the traces don't look right at all.
20:33:31 <quintopia> i'm here at the lecture
20:33:38 <quintopia> hope it's awesome
20:33:43 <elliott> nescience: well when you phrase it like "it fails on brackets"...
20:34:00 <nescience> it does
20:34:13 <elliott> nescience: yeah, and perl fails at processing /dev/random too
20:34:18 <elliott> except it doesn't since that's not a valid perl program...
20:34:21 <elliott> i don't see your point
20:34:24 <nescience> I was suggesting you examine the code with an eye to them
20:34:27 <elliott> Gregor: wtf, reloaded and it gives me the right results
20:34:32 <elliott> nescience: egojsout already reports parse errors...
20:34:35 <elliott> and has done for days
20:34:42 <nescience> I don't know why that specific one is failing but it is definitely failing
20:34:48 <Gregor> elliott: Probably you had an old FFSPG
20:34:52 <nescience> it didn't report errors with careless
20:34:55 <elliott> Gregor: I loaded it seconds ago :P
20:34:59 <elliott> Gregor: And no, I think it was just bugged.
20:35:01 <Gregor> elliott: Suuuuuuuuuuuuuuure
20:35:04 <elliott> ...
20:35:05 <nescience> just failed silent in the way you observed
20:35:14 <nescience> same with some defends in certain places
20:35:19 <nescience> it just stops
20:35:21 <elliott> Gregor: simple beats you twice. nice.
20:35:25 <quintopia> gregor: that's the bug i was telling you about :P
20:35:57 <Gregor> The only thing I can imagine is that you're clicking "run" before it's downloaded the program or some such lunacy :P
20:36:27 -!- copumpkin has joined.
20:36:31 <elliott> More like
20:36:32 <elliott> jewnacy
20:36:51 <Gregor> elliott: Thinking of converting?
20:36:53 <Gregor> ... your ethnicity?
20:37:02 <elliott> Gregor: It's the final solution
20:37:46 <elliott> I can FEEL Gregor's offence!
20:37:53 <Gregor> I'm lolling :P
20:38:18 <Gregor> I'm blond with blue (sort of) eyes, so I could totally stealth my way through the holocaust ... or some such logic :P
20:38:48 <elliott> `addquote <Gregor> I'm blond with blue (sort of) eyes, so I could totally stealth my way through the holocaust ... or some such logic :P
20:38:51 <elliott> STEALTH MY WAY THROUGH THE HOLOCAUST
20:38:57 <elliott> Best thing ever said?
20:38:58 <elliott> Experts agree.
20:39:18 <Gregor> The only problem is my eyes are more like the color of pure evil.
20:39:28 <elliott> You'd fit right in the Holocaust, then.
20:39:31 <elliott> With the rest of the Jews, I mean.
20:39:35 <elliott> Not the Nazis.
20:39:36 <elliott> The Jews.
20:39:59 <HackEgo> 309) <Gregor> I'm blond with blue (sort of) eyes, so I could totally stealth my way through the holocaust ... or some such logic :P
20:44:54 <elliott> $ ./lance '({})%3' ''
20:44:54 <elliott> Syntax error: )% after repeat block not containing {}s; should be )* (on line 1, at column 5)
20:44:56 <elliott> WHY DO YOU SPEAK THESE LIES
20:44:57 <zzo38> How do you compute the NTSC color artifacts of a picture?
20:47:10 <elliott> badly
20:48:10 <fizzie> http://zem.fi/~fis/tapestats.png -- tape heatmaps, i.e. the fraction of cycles the tape pointer has spent on which cell; "left" = FFSPG, "right" = allegro, right side of image is reverse-polarity.
20:49:06 <Gregor> fizzie: Ooooooh, totes write that as a plugin for EgoJSout.
20:50:20 <fizzie> It's just tapestats[0][ptrA]++; tapestats[1][ptrB]++; on each cycle, and a little bit of scaling.
20:50:48 <Gregor> fizzie: Hmm, if I'm not mistaken, 0 is the same 0 for both competitors in this view, right? Not always the flag?
20:51:04 <Gregor> Ohnowait
20:51:07 <Gregor> Heh, cuz I won :)
20:51:19 <Gregor> Nowait, yeah
20:51:26 <fizzie> Yes, 0 is the "physical" 0.
20:51:33 <fizzie> It might be better if it were the logical one.
20:51:43 <Gregor> I think it would, but Idonno.
20:52:32 <fizzie> Or it could be the way that the opponent's flag is always at 0, the patterns might be clearer that way. Well, i'unno either, I guess it depends on the program.
20:53:57 <elliott> "Physical"/"logical" 0?
20:54:07 <elliott> Oh, you crazy morons who think that values can actually go negative, right?
20:55:15 <elliott> THAT'S A YES THEN
20:55:16 <Gregor> elliott: We're talking about tape location, not value.
20:55:19 <Gregor> Not cell value that is.
20:55:23 <elliott> o
20:55:36 <Gregor> !bfjoust furry_furry_strapon_pegging_girls http://sprunge.us/JAcR
20:55:45 <Deewiant> Planning on breaking 70?
20:55:58 <Gregor> Just added a license actually :P
20:56:14 <Deewiant> Your program is so big that it now needs a license? >_<
20:56:34 <elliott> :-D
20:56:51 <elliott> Gregor: I think you need to include it in an unobfuscated form...
20:57:00 <elliott> Also, fuck your licensing, the hill is public domain 'cuz I said so :
20:57:01 <elliott> *:P
20:57:13 <Gregor> elliott: Can't.
20:57:13 <Gregor> elliott: For various reasons.
20:57:14 <Gregor> elliott: 1) Perl code does not parse as valid BFJoust code when in a ()*0
20:57:23 <elliott> (1) Licenses aren't Perl code
20:57:33 <Gregor> Oh, include the LICENSE in unobfuscated form ^^
20:57:45 <elliott> (2) Fuck yer licensing the hill is public domain
20:57:49 <elliott> (3) Yarr
20:58:14 <Gregor> Eh, I put it under ISC :P
20:58:20 <Gregor> That's "public domain plus some words"
20:58:31 <elliott> Gregor: No, that's "requiring attribution" :P
20:58:39 <elliott> And "preserve this notice"
20:58:50 <elliott> Both of which are totally unfair if I port your code to a language which forbids all coments.
20:58:56 <elliott> You: FASCIST.
20:58:57 <Gregor> lol
20:59:19 <elliott> But *eh* it's okay, I can't speak English so I'll just not be bound by the license because of logic
20:59:22 <elliott> I GUESS.
20:59:25 <EgoBot> Score for Gregor_furry_furry_strapon_pegging_girls: 64.1
20:59:33 <elliott> That's not 70.
20:59:39 <fizzie> file:///home/fis/src/chainlance/tapestats.png -- yes, I think it's nice that way when the edge is always the opponent's flag.
20:59:44 <elliott> fizzie: LAWL
20:59:45 <elliott> FIZZIE
20:59:46 <elliott> SUCH
20:59:46 <elliott> A
20:59:47 <elliott> FUCKIN'
20:59:48 <elliott> IRC
20:59:49 <elliott> N00BLET
21:00:01 <fizzie> Copypasted from the wrong tab. :p
21:00:02 <elliott> fizzie: You misspelled "C:\My Documents", n00bcakes!
21:00:05 <elliott> HA HA HA
21:00:09 <elliott> HAAAA
21:00:13 <elliott> `addquote <fizzie> file:///home/fis/src/chainlance/tapestats.png -- yes, I think it's nice that way when the edge is always the opponent's flag.
21:00:14 <elliott> HAAAAAAAAAAAAAAAA
21:00:19 <fizzie> http://zem.fi/~fis/tapestats.png -- I even remembered to copy it into ~/www/
21:00:43 <HackEgo> 310) <fizzie> file:///home/fis/src/chainlance/tapestats.png -- yes, I think it's nice that way when the edge is always the opponent's flag.
21:01:03 <elliott> fizzie: Be more careful; next time you might accidentally patse file:///home/fis/donkeys/moredonkeys/pornography/involvingdonkeys/donkeyporn/notdonkeyporn/actuallycode/src/chainlance/tapestats.png
21:01:07 <elliott> You know, the symlink destination.
21:01:07 <Deewiant> *cough* 2009-02-22 02:42:55( ehird) file:///media/Macintosh HD/Users/ehird/Saved/2009-02/opengenera/opengenera2.tar.bz2
21:01:14 <elliott> Deewiant: >_> <_< >_> <_< >_>
21:01:28 <Gregor> laaaaaaaaaaaaaaaaaaaaaaaaaaaaawl
21:01:32 <elliott> AT LEAST YOU DON'T KNOW ABOUT _MY_ DONKEY PORN COLLECTION YET
21:01:38 <Deewiant> YET
21:01:43 <elliott> WAIT, NOW YOU DO
21:01:52 <elliott> I should probably eliminate Deewiant for questioning me waaay too much.
21:01:57 <elliott> He's inconvenient.
21:01:59 <fizzie> <kipple> put them all on one page: file://slartibartfast/rune/www/lang/logos.html
21:02:05 <elliott> HA HA KIPPLE IS AN IDIOT HA HA
21:02:17 <fizzie> (From 2005-06-06.)
21:02:32 <elliott> 10.08.04:07:20:25 <fizzie> Ooh, a file:/// url link on a web-forum. "Here, take a look at this picture: file:///C:/Documents%20and%20Settings/HP_Administrator/My%20Documents/My%20Pictures/..."
21:02:46 <elliott> fizzie: DID _YOU_ POST THAT I WONDER
21:02:48 <fizzie> Yes, KETTLE POT etc etc.
21:02:56 <elliott> Pet calling the kottle bleck.
21:03:16 <Gregor> 09.05.07 <GregorR> file:///home/gregor/codu/public_html/imgs/win3plusplus.png // WELL HALLO THAR
21:03:22 <elliott> 09.05.07:17:07:47 <GregorR> file:///home/gregor/codu/public_html/imgs/win3plusplus.png
21:03:23 <elliott> X-D
21:03:45 <elliott> 05.10.28:15:55:53 <GregorR> !bf file://bf/LostKng.b
21:03:46 <elliott> HA HA
21:03:47 <elliott> SO RETARDED
21:03:51 <elliott> AND LOOK, GREGOR'S MACHINE IS CALLED BF
21:03:52 <Gregor> elliott: No, that was legit.
21:03:55 <elliott> AND HE HAS A FILE CALLED LOSTKNG.B IN /
21:03:58 <elliott> Gregor: :joke:
21:03:59 <Gregor> elliott: At the time.
21:04:26 <Gregor> elliott: JOKE YOR FACE
21:12:53 <elliott> so anyway
21:12:56 <elliott> PONZI SCHEME
21:21:35 <oerjan> <elliott> nescience: yeah, and perl fails at processing /dev/random too <-- ARE YOU ENTIRELY SURE OF THAT
21:21:45 <elliott> ha. ha. ha. ha.
21:22:05 <elliott> Bootstrapping compilers: FUN??
21:22:55 <oerjan> <Gregor> I'm blond with blue (sort of) eyes, so I could totally stealth my way through the holocaust ... or some such logic :P <-- YOUR HATS WOULD BETRAY YOU
21:23:14 -!- Lymia has joined.
21:23:52 <tswett> Gregor: how Jewish are you?
21:23:57 <tswett> Utterly un-?
21:24:26 <elliott> He's TOTALLY JEWISH.
21:27:24 <elliott> How efficient is GMP on small (less-than-32-bit) integers? Compared to native arithmetic?
21:28:02 <oerjan> *NEWSFLASH* THERE IS AN ACTUAL NON-SPAM MESSAGE ON THE FORUM
21:28:04 <Deewiant> My guess is somewhere between 1-5x slower in general
21:28:32 <zzo38> oerjan: The esolang forum is no good, just use the IRC and wiki
21:28:38 <elliott> i like the forum
21:28:55 <elliott> oerjan: s|NON-SPAM|NON-SPAM BUT IDIOTIC|
21:29:07 <oerjan> zzo38: most of us do, it's just occasionally someone drops by
21:29:08 <elliott> Deewiant: Woo, that's totally acceptable then, who needs fixnums, NOT ME
21:29:22 <oerjan> *that
21:29:37 <Deewiant> It could be worse, but I doubt it
21:29:44 <zzo38> oerjan: Most of us do what?
21:29:57 <oerjan> wait wtf
21:30:03 <elliott> oerjan: ?
21:30:31 <oerjan> *NEWSFLASH* THE PREVIOUS NEWSFLASH WAS NOT NEWS, WTH DID MY RSS REPEAT THAT ONE...
21:30:48 <elliott> X-D
21:30:56 <Deewiant> It should just use + sizeof(void*) memory for each integer and every arithmetic operation involves an additional memory load, test, and branch... I'd expect compilers to be able to optimize sequences of those out so it wouldn't be so bad in loops
21:31:35 <oerjan> MAYBE IT HAS SOMETHING TO DO WITH THE STRANGE FACT SOMEONE ACTUALLY _DELETED_ SPAM IN THE FORUM...
21:31:49 <elliott> oerjan: GASPETH
21:32:14 -!- Lymia has quit (Read error: Connection reset by peer).
21:32:39 <Gregor> Idea for BFJoust newbie hill:
21:32:40 -!- Lymia has joined.
21:32:45 <oerjan> zzo38: most of us esolangers use irc or the wiki instead.
21:32:53 -!- Lymia has quit (Changing host).
21:32:53 -!- Lymia has joined.
21:33:18 <oerjan> zzo38: the forum was only created because graue for some reason had a different opinion on the matter.
21:33:19 <Gregor> Basically run the hill as is, but for the trimming algorithm: If the newest competitor is in the last N places (N to be determined, maybe 3), remove it immediately. If the hill is oversize, remove the worst AND BEST competitor.
21:34:33 <elliott> nobody likes graue :D
21:36:22 <oerjan> s/likes/has contact with/
21:38:40 <elliott> oerjan: s/with/& or likes/
21:41:17 -!- MigoMipo has quit (Read error: Connection reset by peer).
21:41:54 <nescience> not sure this is unfriendly enough or popular enough for a newbie hill yet... but I have no problem with it
21:42:16 <nescience> removing the best may not be a good idea
21:42:16 -!- poiuy_qwert has joined.
21:42:35 <nescience> because it will just wind up trimming anything people could learn from off
21:42:49 <nescience> you might do like CW again here and give programs a short lifetime
21:43:45 -!- poiuy_qwert has quit (Client Quit).
21:44:57 <elliott> nescience: I'm still unconvinced that there's a way to get newbies interested in BF Joust ... AFAI'm concerned the kind of person who would do well at BF Joust will enjoy it without any newbie-friendly playpen :P
21:45:54 <fizzie> http://zem.fi/~fis/tapestats_all.png ← ART
21:46:46 -!- pingveno has quit (Ping timeout: 276 seconds).
21:47:12 <elliott> fizzie: Is that wallpaper-sized? :P
21:47:20 <elliott> Aww, almost.
21:47:29 <elliott> If it 1440x900...
21:47:46 <elliott> fizzie: Tint each little block with the match result blue/red style.
21:47:51 <elliott> THEN itll be art.
21:47:53 <fizzie> Not by design; it's (22*60+borders) x (22*42+borders).
21:48:19 -!- pingveno has joined.
21:48:31 <fizzie> Made the borders a bit larger to separate different matches better.
21:48:33 <elliott> <elliott> fizzie: Tint each little block with the match result blue/red style.
21:48:34 <elliott> <elliott> THEN itll be art.
21:48:41 <Gregor> nescience: The idea is to trim off the best only from the newbie hill. You don't learn strategies from things on the newbie hill, you just ease into doing BF Joust there.
21:48:44 <elliott> fizzie: BETTER IDEA
21:48:52 <elliott> fizzie: Put the match results as the fill colour of the separating triangles.
21:48:59 <Gregor> And you trim the best so that the average is low enough that newbies don't just always get shuffled off.
21:49:17 <fizzie> Could use a <> shape instead of a >< shape in general. Opponent's flag in the middle makes sort of more sense, anyway.
21:49:23 <nescience> gregor: if the best get trimmed off when there is activity, there's nothing to measure against
21:49:42 <nescience> giving a static life will also allow good programs to fall off
21:49:55 <Gregor> nescience: You also trim off the worst. You're comparing yourself to the middle-of-the-line programs.
21:50:22 <nescience> it's hard to "get used to" it if you don't have anything interesting to write against
21:50:24 <elliott> Challenge: Write a C macro CHECK_TYPE(x, t, e), where t is a type name, such that CHECK_TYPE(x, t, e) is a compile-time error if x is not of type t, and evaluates to e otherwise. Standard C is preferable, but I guess typeof could be allowed IF YOU'RE LAME.
21:50:39 <elliott> I don't think casts will work, but perhaps sticking it into a struct will, like so:
21:50:48 <elliott> (struct {t __;}){x}
21:50:48 <nescience> also if you write a progtam and it becomes #1 it could fall off the very next submission
21:50:50 <elliott> But I doubt that's valid C.
21:51:04 <elliott> (C99)
21:51:16 <nescience> which is kind of shitty
21:51:21 <Gregor> nescience: That's the point though :P
21:51:33 <elliott> I agree with nescience
21:51:35 <elliott> this would just bore people
21:51:37 <elliott> and make them think bf joust sucks
21:51:38 <nescience> and if you are "the newbie"?
21:51:52 <Gregor> *eh*
21:51:54 <elliott> Seriously, why are we catering to newbies apart from quintopia saying "zomg I keep trying to introduce people to BF Joust and they keep making up excuses to not give a shit" :P
21:52:24 <Lymia> You know what.
21:52:40 <elliott> http://www.lexjansen.com/pharmasug/2005/coderscorner/cc01.pdf ;; ADVANCED NUMBER-CHECKING MEDICAL RESEARCH
21:52:45 * elliott goes wat
21:52:54 <Lymia> Let's aim a evolver at the hill's current top.
21:53:01 <elliott> Goooood luuuuck
21:53:05 <elliott> fizzie: You do it :P
21:53:17 <Lymia> Gregor, why is the hill so huge.
21:53:32 <zzo38> If the type is structure, there is ways of checking things like this by using unions.
21:53:47 <Gregor> Lymia: Because a bunch of people asked for it to be bigger, so there would be more variety.
21:53:53 <Lymia> Ah.
21:54:04 <Lymia> I guess I'm going to have to OPTIMIZE
21:54:05 <Lymia> :(
21:54:20 <zzo38> Why do you need a CHECK_TYPE macro like that, anyways?
21:54:34 <elliott> zzo38: It's a challenge.
21:54:41 <elliott> And for ostensible safety when using macros :P
21:55:13 <elliott> Gah;
21:55:14 <elliott> #include <stdlib.h>
21:55:15 <elliott> int main() {
21:55:15 <elliott> int x = 3;
21:55:15 <elliott> (struct{float __;}){x};
21:55:15 <elliott> }
21:55:16 <elliott> compiles.
21:55:17 <zzo38> With structures and unions, it is possible even to do type identification.
21:55:17 <Lymia> t temp__LINE__ = x; dosn't work?
21:55:21 <elliott> Lymia: Eh?
21:55:28 <elliott> Hmm.
21:55:31 <fizzie> Lymia: You can do that with a macro and some ##.
21:55:33 <elliott> Lymia: No, because e is an expression.
21:55:40 <Lymia> I mean.
21:55:41 <elliott> And statement-expressions are a gcc extension :P
21:55:46 <Lymia> Ah.
21:55:49 <Lymia> :(
21:55:55 <zzo38> You can disable GNU extensions if you do not want them.
21:56:19 <fizzie> http://zem.fi/~fis/tapestats.png → http://zem.fi/~fis/tapestats2.png -- more compact that way. (Now away, though.)
21:56:35 <elliott> fizzie: YOU DIDN'T IMPLEMENT MY GENIUS
21:57:01 <fizzie> elliott: I could still implement it by coloring the backgrounds. But later.
21:57:11 <zzo38> There is compile-time error if an array is defined with a negative number of elements. I don't know if this will help here, though.
21:58:24 <elliott> It's OK if the macro introduces some trivial runtime computation (e.g. a branch) as long as that computation is easy to optimise out by the compiler.
22:00:52 <Lymia> Hmm....
22:01:09 <Lymia> You could do something with sizeof, but that's unreliable.
22:01:16 <Lymia> elliott, are you sure this is possible?
22:01:31 <zzo38> I also thought of sizeof, but some types have the same size as others
22:01:46 <elliott> Lymia: It's definitely possible with GNU extensions.
22:01:54 <Lymia> I know that much.
22:02:02 <zzo38> Yes, I do know of the GNU commands to do that, too.
22:02:20 <elliott> #define CHECK_TYPE(x,t,e) (({ t __ = (x); true; }) && (e))
22:02:30 <elliott> Apart from that, not sure.
22:02:47 <Lymia> Are you allowed to be sneaky, and include a function call?
22:02:52 <zzo38> There is actually a specific GNU command to check types compatibility!
22:03:01 <Deewiant> elliott: That doesn't do type-checking, implicit casts exist.
22:03:16 <elliott> Deewiant: Well, indeed. But the point is that,
22:03:19 <elliott> CHECK_TYPE(x,t,e)
22:03:26 <elliott> should trigger a compiler error iff
22:03:27 <elliott> f(x)
22:03:28 <elliott> would
22:03:31 <elliott> where f is defined as e.g.
22:03:34 <elliott> void f(t);
22:03:37 <elliott> *declared as
22:03:45 <elliott> Lymia: Sure... if the function is in the stdlib :P
22:03:51 <elliott> Lymia: Well, OK.
22:03:53 <elliott> You can define a function elsewhere.
22:03:54 <Lymia> :(
22:03:58 <Deewiant> You could have said that in one line instead of eight by saying that you want the types to be compatible, not identical
22:04:00 <elliott> I'm curious as to what you're thinking.
22:04:01 <zzo38> elliott: O, you can do that more easily.
22:04:22 <elliott> Deewiant: Well, the point is that f(x); where x is an int and f takes a float should fail. Which I'm pretty sure is C standard.
22:04:30 <elliott> (Even though you can shove an int into a float array.)
22:04:54 <zzo38> Can you use inline functions to do this?
22:05:08 <elliott> Those aren't standard C99, so no :-P
22:05:09 <Deewiant> elliott: No, that works fine.
22:05:19 <Deewiant> int becomes float implicitly.
22:05:26 <elliott> Deewiant: Heh. Wait, does that apply to every valid cast?
22:05:49 <elliott> i.e. f(x) is valid where {{ void f(T); }} iff ((T)x) is valid?
22:05:51 <Lymia> elliott, something with the complex type?
22:05:53 <Lymia> Dunno.
22:05:57 <elliott> Lymia: Yikes.
22:06:00 <Deewiant> Possibly.
22:06:33 <Lymia> elliott, is e's type defined?
22:06:35 <elliott> If so, #define CHECK_TYPE(x,t,e) (((t)(x)), (e)) would work.
22:06:40 <elliott> Lymia: Howso?
22:06:48 <Lymia> Is it's type the same as x?
22:06:52 <elliott> No.
22:06:59 <elliott> ...but if it was what would you do?
22:07:06 <zzo38> Do you see how to make a function call like xyz(a) where (a) is one of two structure types, call the different function, depending on which one it is, in C89? I think I know how.
22:07:08 <Lymia> (false?x,e)
22:07:17 <elliott> "false?x"...
22:07:21 <elliott> That's... totally not valid C code :P
22:07:25 <elliott> Don't you mean (false?x:e)
22:07:37 <Lymia> Yeah.
22:07:37 <Lymia> =p
22:07:41 <Lymia> That should work, no?
22:07:49 <elliott> If x and e had the same type, yes.
22:07:51 <zzo38> I do remember having something like that, where two or not of the same type it is error (or is it warning?)
22:07:58 <Lymia> Eh, wait.
22:08:52 <Lymia> (false?&x:(t*)0)
22:08:56 <Lymia> Couldn't you do something like that.
22:09:40 <Lymia> So.
22:09:50 <elliott> Hmm...
22:09:54 <elliott> Not if x isn't a variable.
22:09:58 <elliott> But
22:10:03 <Lymia> &(x)
22:10:10 <elliott> Uhh, no, that's not valid.
22:10:11 <elliott> But
22:10:13 <Lymia> Buh.
22:10:14 <fizzie> Deewiant: You can cast a value into a union type that has it as a member, but that doesn't happen automatically for a function call; but that's a GCC extension and doesn't count.
22:10:20 <elliott> (false ? (x) : *(t*)0) would work.
22:10:22 <zzo38> I do remember having something like sprintf(p,"%c%s",(y->is_string?y->text[0]:y->number),(y->is_string?y->text+1:"")) is that a valid C code? Of course where statements are allowed you just use if but in some places statements are not allowed
22:10:54 <Lymia> So.
22:10:55 <fizzie> Deewiant: (And you can cast between function pointer types, which also doesn't automatically happen.)
22:11:00 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
22:11:28 <Lymia> elliott, wait, crap.
22:11:40 <Lymia> You'd need a valid stretch of memory that you can ensure is larger than sizeof(t)
22:11:50 <Lymia> Or else you'd end up with a null dereference, no?
22:12:05 <elliott> I don't see why.
22:12:10 <Lymia> Dunno.
22:12:11 <elliott> It'd only dereference it if false is true.
22:12:12 <elliott> Which it isn't.
22:12:21 <Lymia> ( true ? (x) : *(t*)0 )
22:12:24 <Lymia> Shouldn't it be that instead.
22:12:27 <elliott> That's what I said.
22:12:31 <elliott> Err.
22:12:32 <elliott> Right
22:12:36 <elliott> The Lymia is right.
22:12:43 <Lymia> Then.
22:12:44 <elliott> Arguably though any program containing "*(t*)0" is invalid.
22:12:47 <elliott> Not sure what the standard says about that.
22:13:09 <Lymia> Next, how would you get an expression returning t?
22:13:09 <Lymia> :s
22:13:12 <Lymia> Erm.
22:13:14 <Lymia> e*
22:13:39 <zzo38> Put ",e" afterward?
22:13:43 <elliott> (( true ? (x) : *(t*)0 ), (e))
22:13:57 <elliott> Or even
22:14:00 <elliott> No wait, nm.
22:14:17 <elliott> (true ? ((x),e)) : *(t*)0)
22:14:18 <elliott> Hooray.
22:14:37 <Lymia> Eh?
22:14:39 <elliott> ?
22:14:49 <Lymia> Dosn't that make it a type mismatch if e's type dosn't equal t instead?
22:14:55 <Lymia> Don't really know about C99.
22:14:55 <elliott> Oh, right.
22:15:02 <elliott> ((true ? (x) : *(t*)0), (e))
22:15:11 <Lymia> #define CHECK_TYPE(x,t,e) ((true ? (x) : *(t*)0), (e))
22:15:12 <Lymia> I wonder.
22:15:19 <Lymia> How many companies would scream at you for writing that.
22:15:23 <elliott> TOO MANY
22:15:25 <zzo38> Try making a C program with that macro and see if it works.
22:15:50 <elliott> #define CHECK_TYPE(x,t,e) ((1 ? (x) : *(t*)0), (e))
22:15:50 <elliott> int main() {
22:15:51 <elliott> int x = 42;
22:15:51 <elliott> CHECK_TYPE(x, float, "hello");
22:15:51 <elliott> }
22:15:51 <elliott> /dev/stdin: In function ‘main’:
22:15:53 <elliott> /dev/stdin:5: warning: left-hand operand of comma expression has no effect
22:15:55 <elliott> /dev/stdin:5: warning: statement with no effect
22:15:57 <elliott> Wish it w.arned me about doing that
22:15:59 <elliott> *warned
22:16:13 <elliott> Oh, wait.
22:16:22 <elliott> It doesn't warn about calling a function taking a float like that either.
22:16:24 <elliott> How odd :)
22:18:10 -!- Lymia has quit (Read error: Connection reset by peer).
22:18:39 -!- Lymia has joined.
22:18:41 <fizzie> I can't quite follow what's going on; but there's heaps of code that call float foof(float x) as foof(42), there's nothing wrong with passing an int into foof.
22:18:45 <Lymia> test.c:9: error: type mismatch in conditional expression
22:18:48 <Lymia> The smell of success.
22:18:48 <Lymia> :o
22:20:15 <elliott> fizzie: It was
22:20:18 <elliott> int x = 42; foof(x)
22:20:21 <elliott> But yeah, sure.
22:20:24 <elliott> Lymia: Cool; what test?
22:20:37 <Lymia> int test;
22:20:37 <Lymia> printf(CHECK_TYPE(test,struct test,"Hi, hi~"));
22:21:00 <zzo38> Now you can to check type like that!!!
22:21:15 <zzo38> My company doesn't scream at you for writing that kind of programs.
22:21:16 <elliott> I CAN TO IT
22:21:24 <elliott> I was unaware you had a company.
22:21:29 <elliott> Or are we talking about "zzo38 Enterprises" or something
22:21:41 <zzo38> elliott: I have no company yet.
22:21:58 <elliott> VACUOUSLY TRUE STATEMENTS
22:22:01 <zzo38> But even when it does, I doubt I can scream at you for that kind of things.
22:23:29 <zzo38> Next question: Make a macro that calls two different function depending on which structure type it is.
22:24:16 <zzo38> Can you do that?
22:24:30 <oerjan> <elliott> int x = 42; foof(x) <-- i think _someone_ may be spoiled by haskell type classes
22:25:08 <Lymia> zzo38, it's called abuse.
22:25:17 <Lymia> :9
22:26:09 <Lymia> So.
22:26:13 <zzo38> Lymia: I think I can make these kind of things though. I do not call them abusive. I have also once made structure to ensure the sizeof(int) and stuff is correct, otherwise it will not compile.
22:26:16 <Lymia> Would that macro actually be useful for something?
22:26:22 <Lymia> Typesafe macros or something?
22:27:08 <zzo38> There might be use for some of these things in some programs.
22:29:05 <zzo38> But sometimes C macros is insufficient, so instead I will use some of the compile-time interpreted codes in Enhanced CWEB.
22:29:23 <zzo38> (Such as, in TeXnicard, I used that to make up a new "memory_of" command for memory managed types.)
22:30:43 <fizzie> Lymia: Incidentally, C1x is introducing type-generic expressions: _Generic(X, long double: doitldbl, float: doitf, char *: doits, default: doit)(X) will evaluate into doitldbl(X), doitf(X), doits(X) or doit(X) depending on the type of X. (That example uses the function-name-is-a-pointer thing there.)
22:31:38 <zzo38> fizzie: When the types are structure types (rather than plain numbers), I can do that even in C89 (I think).
22:32:08 <fizzie> I think there you could arguably more cleanly write #define CHECK_TYPE(x,t,e) _Generic(x, t: e, default: /* anything that fails */)
22:32:34 <Lymia> You'd have to make it fail at compile time.
22:33:08 <zzo38> However, I think these new kind of things in C99 and C1x and C++0x and stuff much of which we do not need and I do not like it much.
22:34:04 <fizzie> Lymia: They're also adding static_assert for compile-time assertions.
22:34:14 <Lymia> =3
22:34:20 <zzo38> What I do want to add though, is compile time error catching directive!
22:35:26 <zzo38> With compile time error catching directive, you can probably do a lot of things like C99 and C++ and so on, without C99 and C++ and so on. And even more things than that, too!
22:35:32 <fizzie> #define CHECK_TYPE(x,e,t) (static_assert(_Generic(x, t: 1, default: 0), "bad types"), e) or something, + a few more ()s.
22:37:15 <zzo38> Static assert? Just do this: struct { char _[x?1:-5]; }
22:37:55 <zzo38> If you want a customized error message, use #line
22:37:57 <elliott> NOBODY CARES ABOUT COMPILE-TIME ERROR CATCHING TO ADD LANGUAGE FEATURES
22:38:05 <fizzie> That doesn't give nice error messages; static_assert(constant-expr, "foo") is guaranteed to include "foo" in the message.
22:38:57 <elliott> fizzie: but what if my system only has two LEDs
22:39:00 <elliott> WHAT THEN
22:39:05 <elliott> (just blink them according to mor-)
22:39:08 <elliott> WHAT IF MY MACHINE EXISTS OUTSIDE OF TIME
22:39:26 <fizzie> Maybe it's a QoI issue.
22:39:33 <zzo38> fizzie: I think you can use #line to make a filename with a error message. And then put #line again afterward to change it back to how it was before.
22:39:44 <Lymia> The message outputted has "foo" in it.
22:39:47 <Lymia> You can't see it however.
22:39:52 -!- augur has quit (Remote host closed the connection).
22:40:04 <fizzie> zzo38: You mean manually update the second #line every time it moves in the file?
22:40:20 <elliott> fizzie: DON'T SUBJECT US TO MORE PAIN
22:40:30 <elliott> My mental anguish is peaking.
22:40:42 <Lymia> Let's talk in Chinese!
22:40:46 <zzo38> fizzie: No, use a prepreprocessor such as WEB.
22:41:09 <elliott> COMPILE-TIME ERROR CATCHING IN THE OUTPUT OF A LITERATE PROGRAM SO THAT YOUR PROGRAM CAN BE A BOOK AS WELL AS A PROGRAM IS THE SOLUTION TO ALL PROBLEMS
22:41:14 <zzo38> (Or, in this case, CWEB or Enhanced CWEB. Or even AWK if you want to)
22:41:34 <elliott> fizzie: So can I port mcmap to Enhanced CWithCompileTimeErrorCatchingWEB?
22:42:00 <oerjan> <elliott> WHAT IF MY MACHINE EXISTS OUTSIDE OF TIME <-- THEN C IS CLEARLY INADEQUATE, USE TWODUCKS OR FEATHER
22:43:08 <zzo38> To do compile-time error catching you need to do it in the compiler itself, not in a external program.
22:43:19 <oerjan> using unimplementable languages like twoducks should not be a problem outside of time. and feather implementation shows all evidence of being outside of time already.
22:43:56 <elliott> zzo38: Enhanced CWithCompileTimeErrorCatchingWEB is just Enhanced CWEB that outputs code in C-with-compile-time-error-catching.
22:44:00 <elliott> To be compiled with a suitable compiler.
22:44:20 <elliott> zzo38: (For instance one suitable compiler is CatchGCC)
22:44:35 <zzo38> elliott: OK. Now it makes sense. Is such things as CatchGCC exists?
22:44:48 <elliott> Yes, but the code is not public yet, as it is in development.
22:45:00 <elliott> It also removes error messages because they are too user friendly. Instead it gives an error code
22:45:02 <zzo38> Really?
22:45:07 <elliott> You can use the line number as an error code if you do
22:45:10 <elliott> #line 1234
22:45:12 <elliott> #errorcode line
22:45:18 -!- nescience has quit (Quit: -a-).
22:45:22 <elliott> Then the line after that if it errors will use the line number you specified as an error code.
22:46:36 <Lymia> Troll.
22:46:38 <Lymia> :(
22:47:22 <zzo38> That doesn't seem to make much sense, if you have a #errorcode command then why do you need #line for error codes? And what in case more than one error is possible?
22:48:24 <oerjan> elliott: trolling zzo38 isn't particularly polite.
22:48:33 <elliott> i wasn't trolling!
22:48:39 <elliott> i do plan to write it!
22:48:41 <elliott> some day.
22:48:46 <oerjan> heh
22:49:06 <elliott> zzo38: Because then you can use #errorcode in compiler output.
22:49:09 <zzo38> O, so you mean it is in the development in the future, not now.
22:49:11 <elliott> In case you want to make the error code be the line it is on.
22:49:24 <elliott> (So that you can find the error in your program)
22:49:48 <quintopia> you folks didn't die of boredom without me did you?
22:50:02 <fizzie> quintopia: "Oh, you were gone?"
22:50:04 <zzo38> I do not see how that is useful, since the error message should already include the line number. In case of error 5 on line 29 then you might get a message such as "file.c:29:5", isn't it?
22:50:33 <fizzie> You probably get "5" out of CatchGCC.
22:50:44 <elliott> fizzie: No, you get 8283 or similar error code.
22:50:49 <elliott> If you want to have both line and error code, you can do
22:51:19 <elliott> #line #currentline*ceil((log(#currentline)/log(10)))+1 + #errorcode
22:51:21 <elliott> #errorcode
22:51:31 <elliott> Then it will show like 58283.
22:52:12 <zzo38> But then you need to be able to make non-integer number in directives.
22:52:18 <Lymia> elliott, #define return printf("Line %u - A horrible programmer's function returns!", __LINE__ );return
22:52:19 <fizzie> Maybe someone could write a wrapper that compiles both with #errorcode line and without, assume the reported errors occur in the same order, and combines the messages.
22:52:22 <elliott> zzo38: It uses fixed point.
22:52:25 <elliott> So it is the most accurate.
22:52:27 -!- augur has joined.
22:52:36 <Lymia> Evil: Y/N
22:52:47 <elliott> Lymia: You could instead do that by doing
22:52:49 <elliott> returnprint 3;
22:52:50 <zzo38> Maybe better kind of error code something like, if all error codes are up to 2000 then you have line number multiplied by 10000 and add error code.
22:52:53 <elliott> and using the compile-time error catching.
22:52:55 <elliott> For instance
22:52:57 <elliott> #catcherror
22:52:59 -!- poiuy_qwert has joined.
22:53:03 <Lymia> trolololol
22:53:10 <elliott> #errortype e (e->typeerror == TYPE_invalidstatementerror)
22:53:13 <elliott> #rewrite \
22:53:25 <elliott> { printf("my message %d", __LINE__); } \
22:53:30 <zzo38> So that if you have line 42 and error 63 then you will have 420063 since the error code can be up to four digits long.
22:53:33 <elliott> #splicecode# code
22:53:34 <elliott> #endcatch
22:53:49 <elliott> zzo38: Yes, that is a better idea.
22:54:30 <zzo38> And then in case you have multiple files, such as 6 files, you can have a number for the file multiply by 10000 and the line number multiply by 100000 instead.
22:55:04 <elliott> That would be good!
22:55:14 <elliott> Maybe you can use compile-time error catching to make an #errorfield command that lets you add fields like that.
22:55:46 <zzo38> YEs, maybe.
22:56:10 <elliott> fizzie: So can I rewrite mcmap in it yet?
22:59:33 <Lymia> elliott, you troll~
22:59:42 <elliott> I DO NOT TROLL EVER
23:03:13 <Lymia> <3
23:12:10 -!- iconmaster has joined.
23:17:03 -!- BeholdMyGlory has quit (Remote host closed the connection).
23:18:01 -!- aloril has quit (Ping timeout: 264 seconds).
23:18:08 <elliott> oerjan: pinging
23:19:42 <oerjan> pong
23:20:03 <elliott> oerjan: Your MUSINGS on your UNDERLOAD WITH CONTINUATIONS would be APPRECIATED.
23:20:07 <elliott> (For I IMPLEMENTED it, you SEE.)
23:20:11 <oerjan> argh
23:20:24 <elliott> there are two possibilities
23:20:26 <elliott> eval ('C':p) (p':xs) = eval p' (p:xs)
23:20:26 <elliott> --eval ('C':p) xs = eval p (p:xs)
23:20:29 <elliott> The former seems... saner.
23:20:35 <elliott> oerjan: I implemented ^ in terms of the rest of the language too
23:20:51 <elliott> ^ === a(*^)~*C
23:21:19 <oerjan> knowing that ordinary ^ can be implemented certainly helps with sanity :D
23:21:49 <elliott> oerjan: the former is basically
23:21:57 <elliott> x(y)Cz -> x(z)y
23:21:58 <oerjan> the former is indeed saner, the latter doesn't give you a way to _throw_ a continuation
23:21:59 <elliott> and the latter is
23:22:03 <elliott> xCy -> x(y)y
23:22:06 <elliott> which is just ludicrous
23:23:00 <oerjan> hm interestingly continuations means you can no longer apply simplifications to substrings
23:23:19 <oerjan> because A -> B does not imply AC -> BC if continuations are used
23:24:15 <oerjan> elliott: i conclude your "latter" is not powerful enough to be considered real continuations
23:24:28 <elliott> oerjan: indeed
23:24:35 <elliott> oerjan: also, is that statement about simplification true if output is removed?
23:24:37 -!- FireFly has quit (Quit: swatted to death).
23:24:50 <oerjan> um what
23:24:50 <elliott> because if it is, (x)^ === (y)^ => x === y
23:25:03 <elliott> and so semantic-preserving simplifications are OK
23:25:07 <elliott> or?
23:25:14 <elliott> hm maybe not
23:25:15 <oerjan> well obviously you need to ignore output if you are to simplify _inside_ ()'s
23:25:19 <elliott> right :P
23:26:02 <oerjan> i recall ais523 implied he changed S semantics for underlambda precisely for this reason
23:26:49 <oerjan> however even with output, simplifications on the _unnested_ program substrings are allowed in underload
23:27:36 <elliott> :t readFile . head
23:27:37 <elliott> oerjan: right
23:27:37 <lambdabot> [FilePath] -> IO String
23:27:46 <elliott> :t readFile . head <$> getArgs
23:27:47 <lambdabot> Not in scope: `getArgs'
23:27:51 <elliott> :t readFile . head <$> System.Environment.getArgs
23:27:52 <lambdabot> IO (IO String)
23:27:56 <elliott> :t readFile . head =<< System.Environment.getArgs
23:27:57 <lambdabot> IO String
23:28:13 <oerjan> <elliott> ^ === a(*^)~*C <-- um wait you're certainly using ^ on the right
23:28:22 <elliott> oerjan: er. oops.
23:28:24 <elliott> :D
23:28:51 <elliott> oerjan: to play along at home, here's ffug.hs: http://sprunge.us/OHgM
23:28:57 <elliott> (ffug = furry furry underload girls)
23:29:04 <elliott> eval "prog" [] is what you want.
23:29:09 <elliott> since i gather command line programs are a pain in windows.
23:29:13 <elliott> you may want to let run = flip eval []
23:29:48 <Deewiant> eval `flip` []
23:30:37 <elliott> Deewiant: ITT: Sometimes not everything has to be infix
23:31:09 <Deewiant> flip `id` eval `id` []
23:31:21 <elliott> Maybe we need @infixify.
23:31:32 <oerjan> elliott: i believe ^ === (*C)C
23:31:52 <elliott> *Main> eval "(:(*C)C):(*C)C" []
23:31:52 <elliott> ""
23:31:52 <elliott> DING
23:31:53 <elliott> wrong
23:31:54 <elliott> try again
23:31:55 -!- aloril has joined.
23:32:08 <oerjan> erm
23:32:59 <oerjan> (x)(*C)Cy -> (x)(y)*C -> (xy)C -> ()xy , oh
23:34:38 <elliott> well we want to solve
23:34:53 <elliott> (x)eCy -> xy
23:34:56 <elliott> and we know that
23:35:03 <oerjan> try (*(!)~*C)C
23:35:07 <elliott> x(y)Cz -> x(z)y
23:35:08 <elliott> so
23:35:31 <elliott> (x)eCy -> (x)(y){{e}} -> xy
23:35:35 <oerjan> elliott: ^
23:35:35 <elliott> where {{...}} does the obvious :P
23:35:37 <elliott> unquoting
23:35:39 <elliott> oerjan: yep, about to
23:35:55 <elliott> oerjan: but i _did_ link you to a perfectly good haskell file with which you could try it :P
23:36:06 <oerjan> sheesh
23:36:07 <elliott> *Main> eval "(:(*(!)~*C)C):(*(!)~*C)C" []
23:36:07 <elliott> ""
23:36:08 <elliott> ding
23:36:09 <elliott> etc.
23:36:16 <elliott> <elliott> (x)eCy -> (x)(y){{e}} -> xy
23:36:23 <elliott> this to me suggests it might not be possible, surprisingly enough
23:36:24 <elliott> oh wait
23:36:27 <elliott> unless e modifies x...
23:36:30 <elliott> hmm
23:36:32 <elliott> this is complicated
23:37:03 <oerjan> i don't understand why (*(!)~*C)C didn't work
23:37:46 <oerjan> (x)(*(!)~*C)Cy -> (x)(y)*(!)~*C -> (!xy)C -> ()!xy -> xy
23:37:51 <elliott> (x)(*(!)~*C)Cy -> (x)(y)*(!)~*C
23:38:08 <elliott> (x)(*(!)~*C)Cy -> (x)(y)*(!)~*C -> (xy)(!)~*C
23:38:14 <elliott> (x)(*(!)~*C)Cy -> (x)(y)*(!)~*C -> (xy)(!)~*C -> (!)(xy)*C
23:38:19 <elliott> (x)(*(!)~*C)Cy -> (x)(y)*(!)~*C -> (xy)(!)~*C -> (!)(xy)*C -> (!xy)C
23:38:27 <elliott> (x)(*(!)~*C)Cy -> (x)(y)*(!)~*C -> (xy)(!)~*C -> (!)(xy)*C -> (!xy)C -> ()!xy
23:38:29 <elliott> (x)(*(!)~*C)Cy -> (x)(y)*(!)~*C -> (xy)(!)~*C -> (!)(xy)*C -> (!xy)C -> ()!xy -> xy
23:38:29 <elliott> hm
23:38:39 <elliott> oerjan: that's odd. should i add tracing of the stack?
23:38:52 <oerjan> heh
23:39:17 <oerjan> debugging tools are always a good idea
23:39:35 <elliott> oerjan: http://sprunge.us/ZLTO
23:39:37 * Sgeo lances elliott
23:39:40 <elliott> done with
23:39:42 <elliott> eval _ xs | trace (show xs) False = undefined
23:39:42 <elliott> at the top
23:39:49 <elliott> oerjan: first element is TOS
23:40:02 <elliott> it is possible that my implementation is buggy
23:40:23 <oerjan> sheesh you mean i _actually_ have to look at your implementation? >:D
23:40:53 <elliott> oerjan: dude it's like 20 lines :P
23:41:16 <elliott> 16 lines of actual implementation, just counted
23:41:20 <oerjan> elliott: i would also recommend including the stack in the trace
23:41:27 <elliott> oerjan: err, that _is_ the trace of the stack :)
23:41:34 <elliott> I can include the program too
23:41:58 <oerjan> oh
23:42:04 <oerjan> well i'll look at your implementation
23:42:42 <elliott> oerjan: http://sprunge.us/EiUe trace with program and stack
23:42:46 <elliott> where first element of list is TOS
23:44:26 <oerjan> elliott: * has the wrong argument order
23:44:30 <elliott> oh :D
23:44:40 <elliott> yep, works now
23:44:41 <elliott> thanks :P
23:45:09 <oerjan> relatively common error in functional underload implementations with top of stack first, i think :D
23:45:15 <elliott> oerjan: now I'm just wondering how to make this interesting :-P
23:46:31 <elliott> oerjan: so do you think :()C is TC :-D
23:47:34 <oerjan> huh
23:47:53 <elliott> oerjan: wat
23:48:06 <oerjan> analogously to how :()^ probably isn't?
23:48:30 <oerjan> for a start, can you even do ^ in it
23:50:10 <oerjan> (:C):C
23:50:32 <zzo38> What does "C" command do exactly?
23:50:32 <oerjan> no wait
23:50:35 <elliott> oerjan: do you _need_ ^?
23:50:39 <elliott> zzo38: swaps TOS and program
23:50:42 <elliott> i.e.
23:50:43 <oerjan> zzo38: swaps the continuation with the top stack element
23:50:46 <elliott> (x)Cy -> (y)x
23:50:52 <zzo38> OK
23:50:56 <elliott> oerjan: (:C):C just terminates anyway fwiw
23:51:07 <oerjan> yeah that didn't work, yet again that pesky ()
23:51:26 <oerjan> ok let's not worry about ^ yet
23:52:14 <oerjan> (:C):C -> (:C)(:C)C -> (:C)():C -> (:C)()()C -> (:C)()()
23:52:45 <oerjan> perhaps it _cannot_ even loop
23:52:59 <elliott> subtle cough
23:53:16 <oerjan> subtle cough actually can loop, just not much else
23:53:19 <elliott> well right
23:53:25 <elliott> can't you reuse its infloop?
23:53:32 <oerjan> heh
23:53:41 <elliott> serious question
23:53:57 <oerjan> i don't have an intuition for transferring combinator calculus to this stack thing
23:54:07 <oerjan> with this few commands
23:54:37 <oerjan> hm what we need is to avoid bringing the continuation down to ()
23:55:01 <oerjan> oh we have no way to make longer strings
23:56:35 <elliott> oerjan: ok fine, *()C
23:56:36 <elliott> no :
23:56:53 <elliott> or :*()C
23:56:54 <elliott> if you want to be
23:56:55 <elliott> BORING
23:57:05 <oerjan> note that no way to make longer strings isn't in _itself_ fatal
23:57:20 <oerjan> but it certainly makes things harder
23:58:06 <elliott> oerjan: maybe if it turns out to be TC we can call it "obvious cough"
23:58:46 <oerjan> let's try *()C
23:59:04 <oerjan> um wait that always shrinks
23:59:09 <elliott> oerjan: yeah i was about to say
23:59:09 <oerjan> no duplication
23:59:18 <elliott> :*()C then
←2011-02-16 2011-02-17 2011-02-18→ ↑2011 ↑all