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