00:13:01 -!- kar8nga has quit (Remote host closed the connection). 00:14:16 -!- pikhq has quit (Read error: Connection reset by peer). 00:16:28 Didn't get a perfect grade on my exam. 00:16:37 Now arguing that her answers are incorrect 00:16:41 -!- pikhq has joined. 00:17:03 damn straight 00:17:08 fight the....fight 00:17:47 -!- FireFly has quit (Quit: Leaving). 00:29:33 -!- coppro has joined. 00:31:01 -!- Sgeo has quit (Ping timeout: 264 seconds). 01:00:54 -!- augur has quit (Ping timeout: 240 seconds). 01:27:56 -!- augur has joined. 01:29:05 -!- myndzi\ has joined. 01:30:01 -!- Gregor has quit (*.net *.split). 01:30:01 -!- olsner has quit (*.net *.split). 01:30:02 -!- jcp has quit (*.net *.split). 01:30:03 -!- pikhq has quit (*.net *.split). 01:30:03 -!- uorygl has quit (*.net *.split). 01:30:03 -!- cheater2 has quit (*.net *.split). 01:30:04 -!- ineiros has quit (*.net *.split). 01:30:04 -!- lament has quit (*.net *.split). 01:30:05 -!- sshc has quit (*.net *.split). 01:30:07 -!- pineapple has quit (*.net *.split). 01:30:07 -!- rodgort has quit (*.net *.split). 01:30:07 -!- chickenzilla has quit (*.net *.split). 01:30:08 -!- myndzi has quit (*.net *.split). 01:30:08 -!- jix_ has quit (*.net *.split). 01:30:08 -!- cal153 has quit (*.net *.split). 01:30:08 -!- SimonRC has quit (*.net *.split). 01:30:09 -!- mtve has quit (*.net *.split). 01:32:49 -!- SimonRC has joined. 01:32:49 -!- jcp has joined. 01:32:49 -!- Gregor has joined. 01:32:49 -!- olsner has joined. 01:32:49 -!- chickenzilla has joined. 01:32:49 -!- rodgort has joined. 01:32:49 -!- pineapple has joined. 01:33:10 -!- sshc has joined. 01:33:17 -!- pikhq has joined. 01:33:17 -!- uorygl has joined. 01:33:17 -!- cheater2 has joined. 01:33:17 -!- lament has joined. 01:33:17 -!- ineiros has joined. 01:33:19 -!- jix has joined. 01:33:41 -!- augur has changed nick to Guest8510. 01:35:24 -!- cal153 has joined. 01:36:13 -!- Gracenotes has joined. 01:45:25 -!- HackEgo has joined. 01:45:26 -!- EgoBot has joined. 02:05:19 * Gregor looks for an excuse to reference http://media.fukung.net/images/6793/chowneduck.jpg on Wikipedia (NSFW) 02:06:03 should i click? 02:06:14 YES 02:06:22 ... 02:07:12 what! 02:08:44 -!- Sgeo has joined. 02:13:32 -!- Tritonio_GR has joined. 02:25:09 * coppro eats pineapple 02:26:08 yay 02:28:57 -!- Guest8510 has changed nick to augur. 02:29:05 -!- coppro has quit (Quit: reboot). 02:32:38 -!- coppro has joined. 02:39:07 -!- Asztal has quit (Ping timeout: 260 seconds). 02:54:03 -!- pikhq has quit (Quit: leaving). 02:55:54 -!- pikhq has joined. 02:58:27 -!- pikhq has quit (Client Quit). 03:05:11 -!- sshc has quit (Ping timeout: 246 seconds). 03:05:11 -!- SimonRC has quit (Ping timeout: 246 seconds). 03:05:18 -!- uorygl has quit (*.net *.split). 03:05:18 -!- cheater2 has quit (*.net *.split). 03:05:18 -!- ineiros has quit (*.net *.split). 03:05:18 -!- lament has quit (*.net *.split). 03:05:50 -!- sshc has joined. 03:06:19 -!- SimonRC has joined. 03:06:56 -!- uorygl has joined. 03:06:56 -!- cheater2 has joined. 03:06:56 -!- lament has joined. 03:06:56 -!- ineiros has joined. 03:08:51 -!- adu has joined. 03:19:32 -!- oerjan has joined. 03:23:45 * Sgeo tried to argue that the Data Structures class should use Python 03:24:05 maybe http://en.wikipedia.org/wiki/Not_safe_for_work? 03:24:30 WadImiss? 03:24:51 i'm asleep, can't answer 03:29:48 Sgeo: that sounds horrible 03:30:25 howso? 03:30:46 because, data structures are a low-level concept; they should be implemented in a low-level language 03:32:10 Well, are there low-level languages that are less syntactically insane than C++? 03:32:28 C 03:33:22 * oerjan thinks we use Modula-2, way back :) 03:33:25 *used 03:37:09 -!- mtve has joined. 03:40:32 oklopol: :D 03:40:36 * augur hugs oklopol 03:40:37 hey 03:40:38 :) 03:52:37 -!- Oranjer has left (?). 04:08:54 adu: after my great start yesterday, I'm sure my completed program has about 10 stylistic pas faux 04:09:48 * Sgeo should go eat 04:10:19 http://pastie.org/885958 04:18:09 -!- Tritonio_GR has quit (Read error: Connection reset by peer). 04:25:52 coppro: the main thing i notice is that you are using a lot of == rather than pattern matching 04:26:14 oerjan: yeah; not sure how to pattern match against my monster of a type 04:26:19 (at least, to pattern match nicely 04:30:53 step (VM {future = []}) = return () 04:31:12 ah, thanks 04:31:15 * coppro rewrites 04:32:42 -!- augur has quit (Ping timeout: 248 seconds). 04:40:14 oerjan: I'm having one issue: jump f o c i v@(VM {future = o:_}) is not a valid pattern? 04:40:54 coppro: indeed you cannot compare things in patterns. call the second o' or something and add a | o == o' guard 04:41:00 ok 04:41:25 coppro: maybe i'm a little late, but you might want to use a case expression if it's awkward to do all the pattern matching at top level (i.e. case instr of ...) 04:42:16 oerjan: ah 04:42:25 oerjan: Well, I've already rewritten it, and it doesn't look too horrid 04:42:52 it was mainly that value = ... that made me wonder, since you are using it in several branches 04:43:10 good 04:45:15 -!- nooga has joined. 04:45:34 hmm 04:45:44 not sure about jump though; the inability to compare in a guard is annoying 04:46:12 I guess I have no choice but to use another guard instead of a pattern 04:51:32 -!- pikhq has joined. 04:53:47 yay, it works again 04:54:04 :) 04:55:28 -!- adu has quit (Quit: adu). 04:57:40 -!- adu has joined. 04:58:34 i just woke up 04:59:04 there's a party in my flat and i don't even know who did this party 04:59:24 Is that innuendo? 04:59:57 no, it's in the front 05:03:15 I SEE WUT U DID THAR 05:03:34 took you long enough :D 05:04:49 I was AFK :P 05:08:12 -!- jcp has quit (Changing host). 05:08:12 -!- jcp has joined. 05:08:49 -!- jcp has quit (Changing host). 05:08:49 -!- jcp has joined. 05:17:58 What's the language where === is used for case statements? 05:18:13 Too many languages in too short a period of time can be confusing 05:24:06 i've not heard of that one 05:27:40 -!- augur has joined. 06:11:26 -!- Asztal has joined. 06:16:51 -!- augur has quit (Ping timeout: 265 seconds). 06:31:01 -!- jcp has quit (Quit: I will do anything (almost) for a new router.). 06:35:17 Sgeo: I dunno; which languages actually have ===? PHP's the only one I can think of offhand 06:35:32 I think I may be thinking of Ruby 06:36:02 Right now trying to get a handle on Erlang instead of sleeping 06:36:34 ah yes, it is Ruby, according to the doc 06:37:01 ============== 06:37:32 that, to me, looks like something out of perldoc 06:37:40 (yes, I know it isn't) 06:38:35 * Sgeo is overdosing on languages 06:39:37 Sgeo: the Erlang language is simple, but coding Erlang is all about the library 06:41:42 * Sgeo really should find a motivation to learn Erlang 06:45:53 -!- adu has quit (*.net *.split). 06:45:54 -!- Sgeo has quit (*.net *.split). 06:45:54 -!- AnMaster has quit (*.net *.split). 06:45:54 -!- Quadrescence has quit (*.net *.split). 06:45:55 -!- yiyus has quit (*.net *.split). 06:47:02 -!- oerjan has quit (Quit: leaving). 06:53:06 -!- adu has joined. 06:53:06 -!- Sgeo has joined. 06:53:06 -!- Quadrescence has joined. 06:53:06 -!- AnMaster has joined. 06:53:06 -!- yiyus has joined. 06:55:02 -!- sebbu2 has joined. 06:55:06 -!- sebbu has quit (Ping timeout: 248 seconds). 06:55:23 -!- sebbu2 has changed nick to sebbu. 07:07:03 For some reason, Erlang isn't really grabbing my interest 07:11:32 because you're tired? 07:11:39 because the online stuff sucks? 07:17:49 -!- augur has joined. 07:57:55 -!- tombom has joined. 07:59:03 eh 07:59:07 erlang is boring 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:13:56 -!- Asztal has quit (Ping timeout: 246 seconds). 08:15:28 -!- Gracenotes has quit (Quit: Leaving). 08:50:17 -!- tombom has quit (Quit: Leaving). 09:00:48 -!- nooga_ has joined. 09:03:38 -!- nooga has quit (Ping timeout: 248 seconds). 09:32:03 -!- myndzi\ has quit (Ping timeout: 240 seconds). 09:32:46 -!- myndzi has joined. 09:40:32 -!- cheater2 has quit (Ping timeout: 240 seconds). 09:41:39 -!- cheater2 has joined. 09:48:48 coppro: doesn't javascript have ===? 09:49:02 doesn't it check real equality instead of confusing equality? 09:56:17 -!- ais523 has joined. 10:18:05 heyo. 10:18:15 ais523: would you be interested in ... a challenge? 10:18:15 :x 10:18:24 augur: it depends on the details 10:18:51 basically, i will design an esolang of some sort 10:18:57 relatively simple and not complicated at all 10:19:05 maybe ill even use an existing one 10:19:07 who knows 10:19:19 and then ill provide some visualization of a program executing. 10:19:31 and I have to deduce the esolang from that visualization? 10:19:36 yep 10:19:42 or at least the constructs of the language 10:20:07 it sounds interesting, at least 10:20:20 probably best if, as last time, we make guesses to you via PM, so everyone can play 10:21:30 actually, i like the idea of this being collaborative. 10:22:19 the idea is that it should be vaguely like reverse engineering the brain 10:22:25 all you have is data about program execution 10:22:32 and you dont even know what the data represents 10:28:23 -!- lereah_ has joined. 11:28:06 -!- FireFly has joined. 11:29:19 -!- kar8nga has joined. 11:51:23 AnMaster: Found another apparent bug in cfunge's bounds calculation; this time I'm a bit more sure because efunge agrees with CCBI 12:08:11 -!- sebbu2 has joined. 12:08:18 -!- sebbu has quit (Ping timeout: 252 seconds). 12:08:34 -!- sebbu2 has changed nick to sebbu. 14:18:53 Deewiant, oh? 14:18:55 Deewiant, what is it 14:19:03 and do you have a test case 14:19:23 (by the way, I hope you realise that efunge could be incorrect as well) 14:19:31 http://tar.us.to:12345/ run slowdown.b98 on mycology.b98 14:19:46 Deewiant, wget http://tar.us.to:12345/ ? 14:19:56 No, click the link and download the two files. 14:20:31 Deewiant, so what am I supposed to look for? 14:20:50 grr, I've just closed Firefox three times by accident in the last ten minutes 14:20:52 It quits right after the relevant line of output. 14:20:56 by typoing control-Q rather than control-W 14:21:00 mhm 14:21:25 Deewiant, build/cfunge experimental/slowdown.b98 experimental/mycology.b98 ? 14:21:33 For example. 14:21:35 hrrm 14:21:42 Deewiant, are those BAD relevant? 14:21:45 efunge will probably take a few minutes. 14:21:47 No, ignore the GOOD/BAD. 14:21:50 right 14:21:51 Just look at the last line. 14:22:05 " That the greatest point, relative to that point, is ( 180 544 )"? 14:22:12 Yeah. 14:22:18 Compare to efunge. 14:22:41 * AnMaster waits on efunge 14:22:59 Deewiant, how fast is that computer where it takes "a few minutes"? 14:23:13 ah done 14:23:14 It takes a bit under 20 seconds for me. 14:23:17 " That the greatest point, relative to that point, is ( 180 539 )" 14:23:19 well 14:23:22 okay different value I see 14:23:24 hm 14:23:48 Deewiant, is the 544 correct at any point btw? 14:24:03 AnMaster: If you remove a couple of lines from the end of the file (five was enough IIRC) cfunge and efunge will agree. 14:24:11 eh 14:24:14 AnMaster: I don't think so. 14:24:20 But it might be. 14:24:28 Deewiant, what do those lines do btw? 14:24:37 Those lines at the end of the file do nothing. 14:24:40 hrrm 14:24:45 You can remove any five lines that aren't executed, IIRC. 14:24:49 shouldn't both shrink equally much then 14:24:57 also remove from which file? cfunge or efunge? 14:25:08 efunge shrinks by five, cfunge shrinks by five plus the five that it's getting wrong now. 14:25:19 From mycology.b98. 14:25:22 right 14:25:35 so what on earth is going on there ^_^ 14:25:43 :-) 14:25:47 Deewiant, does it matter that: 14:25:52 cfunge: That the least point containing a non-space cell is ( 65000 64995 ) 14:26:00 efunge: That the least point containing a non-space cell is ( 65000 65000 ) 14:26:06 Well yes, that would appear to be the cause of the problem. 14:26:22 Deewiant, so what causes that difference in least space cell I wonder 14:26:38 it seems that slowdown decides on different positions for the upper corner to me? 14:26:52 That slowdown has been hard-coded to use 65000,65000 14:27:13 Deewiant, well then, so what we are looking at is what is going on at (65000,64995) then? 14:27:26 Yep 14:28:45 Deewiant, does it quit by @ or by q? 14:28:48 q 14:28:50 * AnMaster wonders where to set the breakpoint 14:28:51 ah 14:35:30 Deewiant, so manually setting fspace.boundsexact=false and running bounds shrinking fixes it 14:35:42 so probably that flag isn't set when it should be 14:35:58 now of course, figuring out when it should be set is a different issue 14:36:07 hrrm 14:36:35 s/a different/another/ 14:37:25 -!- Asztal has joined. 14:37:25 Deewiant, are you sure there is never anything at the y coordinate 64995 ? 14:37:40 No 14:37:56 I can't think of what might be there but I can't remember the full details of how slowdown works 14:38:56 * AnMaster tries break fungespace_set if position.y=64995 14:39:22 which dumped me right into gdb 14:39:24 a write to 14:39:32 (gdb) print *position 14:39:32 $2 = {x = 4, y = 64995} 14:39:38 I guess that must be early on 14:39:51 considering nothing has yet been printed on stdio 14:40:00 Deewiant, any clue as to what that might be? 14:40:02 slowdown doesn't print anything to stdio 14:40:11 doesn't mycology write to (-5,-5)? 14:40:18 Deewiant, well then it is before or very very early on in mycology 14:40:29 AnMaster: take stdio buffering into account 14:40:32 ais523: No, to (-3,-2); and this one doesn't since it goes straight to the y test 14:40:35 ah, ok 14:40:47 AnMaster: This Mycology does only the y test 14:40:55 ais523, yes but since it is line buffered it must be quite early on still I guess 14:41:05 It starts out by running y and saying "y claims all of the following" 14:41:15 well it's a p 14:41:20 how very helpful XD 14:41:22 If it's a p before the y it's from slowdown 14:41:26 Where's it at? 14:41:39 Deewiant, trying to remember what variable it was in 14:41:39 sec 14:41:56 (gdb) print *ip 14:41:56 $4 = {stack = 0x247d420, position = {x = 14, y = 1}, delta = {x = 1, y = 0}, storageOffset = {x = 0, y = 0}, mode = 0 '\0', needMove = true, stringLastWasSpace = false, 14:41:56 fingerSUBRisRelative = false, ID = 0, stackstack = 0x247d400, fingerOpcodes = {{size = 0, top = 0, entries = 0x0} }, fingerHRTItimestamp = 0x0} 14:41:58 so 14:42:02 (14,1) 14:42:10 That's odd :-P 14:42:17 Deewiant, why is it that? 14:42:40 AnMaster: storageOffset = 0,0 and that bit is "044p"... 14:42:54 huh 14:43:21 (gdb) print *position 14:43:21 $5 = {x = 4, y = 4} 14:43:21 (gdb) print *offset 14:43:21 $6 = {x = 0, y = 0} 14:43:31 and down another frame where they are added together 14:43:44 (gdb) print *position 14:43:44 $7 = {x = 4, y = 64995} 14:43:48 yeah what the hell 14:43:53 :-D 14:44:00 the call is: fungespace_set(value, vector_create_ref(position->x + offset->x, position->y + offset->y)); 14:44:10 to me this looks almost like a compiler bug 14:44:16 hrrm 14:44:19 AnMaster: are any of the variables in question changed inside the functions themselves? 14:44:25 or vector_create_ref messing up?! 14:44:34 Is it written in asm? ;-) 14:44:37 ais523, no don't think so 14:44:43 Deewiant, no 14:44:56 #define vector_create_ref(a, b) (& (funge_vector) { .x = (a), .y = (b) }) 14:45:04 well, *I* can't see anything wrong with that 14:45:26 maybe gdb is messing up somehow? 14:45:29 It's worth seeing whether it's just GCC failing at compound literal codegen 14:45:37 -!- oerjan has joined. 14:45:47 Deewiant, well, it is odd that it hasn't showed up before this then 14:46:39 well, build with icc gives same results 14:46:53 From gdb too? :-) 14:46:53 and so does clang build 14:46:58 Deewiant, not running under gdb 14:47:01 just checking the bug 14:47:30 * AnMaster tries to remember how to get icc to generate a usable-with-gdb binary 14:49:13 Deewiant, hrrm I can't get any values for that condition to break with icc 14:49:19 not even the supposed correct value 14:49:29 by typoing control-Q rather than control-W <-- heh synchronicity, i just today read this link on reddit: http://www.codinghorror.com/blog/2010/03/the-opposite-of-fitts-law.html 14:49:44 wait 14:49:46 it never breaks 14:49:52 even without condition 14:49:54 what the heck 14:49:58 * AnMaster prods icc 14:50:04 * Deewiant recommends printf debugging 14:50:07 AnMaster: maybe there isn't enough debug info to tell where to break 14:50:10 and that example was mentioned in one of the comments (either on the blog or reddit) 14:50:27 ais523, well gdb usually complains instead of happily reporting that the breakpoint was set in that case 14:50:29 oerjan: On the blog. 14:50:35 I suspect inlining behind my back 14:50:51 Compile without optimizations? 14:51:11 also the thing i previously mentioned about simon tatham puzzles's q command fits right in :( 14:51:12 Deewiant, did so... 14:51:19 lets try clang 14:51:20 Incidentally, how does a compound literal like that work, memory-wise? Apparently you can take the address of it, but how long does it live? 14:51:24 Seems strange that it'd inline in that case... 14:51:51 oops. gdb errored on that break 14:52:06 Die: DW_TAG_restrict_type (abbrev = 12, offset = 37969) 14:52:06 has children: FALSE 14:52:06 attributes: 14:52:06 DW_AT_type (DW_FORM_ref4) constant ref: 37963 (adjusted) 14:52:06 Dwarf Error: Cannot find type of die [in module /home/arvid/src/own/cfunge/trunk/build_clang/cfunge] 14:52:08 interesting error 14:52:29 whatever "die" is. I don't remember any such function 14:52:48 die is the Debugging Information Entry 14:52:51 ah 14:53:28 Ah, automatic storage duration with the enclosing block. 14:53:31 die, evil bugs, die 14:53:35 fizzie, well since it is never returned it should be fine 14:53:46 it is used as an argument in a function call 14:54:37 AnMaster: Yes, that sounds safe enough. But just "never returned" is not good enough; you can't use it even in the same function if you go outside the block it was in. 14:54:42 anyway it seems like gdb messes it up 14:55:05 since if continuing after that break it breaks a lot more, but after that the program just ends up printing garbage 14:55:22 Something like "foo *p; if (cond) { p = vector_create_ref(...); } else { p = vector_create_ref(...); } func(p);" would be unsafe, as far as I can tell. 14:55:30 indeed that wouldn't work 14:55:39 Sneaky. 14:55:39 but that isn't how it is used there (or anywhere else that I know of) 14:55:59 fizzie: All the more reason to use ?: instead of if-else 14:55:59 do gdb ends up changing something it seems 14:56:54 wait, I found it 14:56:55 -_- 14:57:02 wrong syntax to gdb's break if 14:57:02 _-_ 14:57:26 ah now we found a true one I think 14:57:35 (gdb) print *position 14:57:36 $1 = {x = 64995, y = 64995} 14:57:39 so lets see where 14:58:00 $2 = {stack = 0x18e7420, position = {x = 6, y = 35}, delta = {x = 0, y = 1}, storageOffset = {x = 65000, y = 65000}, 14:58:07 Deewiant, does that make any sense for it? 14:58:27 Yeah, evidently it uses that. 14:58:30 the arguments to p was {x = -5, y = -5} 14:58:36 And zero. 14:58:41 Deewiant, why are you writing something there 14:58:47 It's a temporary. 14:58:48 indeed a 0 14:59:02 Deewiant, sure but what for? 14:59:26 I think it counts the number of cells to p, to give the correct argument to k. 14:59:45 Deewiant, at {x = 25, y = 37} it writes an 1 to the same place btw 15:00:00 And thereafter a 2, and then a 3, all the way to 152100, yes. :-P 15:00:09 gah 15:00:11 But then it's spaced in the kp. 15:00:22 If you break at 65067,65000 you'll see it's blank. 15:00:45 mhm 15:01:58 Deewiant, it writes a space much earlier than that 15:02:10 ip is at (25,37) when it first writes a space there 15:02:12 hm 15:02:33 wait 15:02:37 that is probably counting still 15:02:42 :-) 15:02:43 but value is now 32 15:02:48 It's a nonspace until the kp. 15:03:04 Deewiant, it is in fact a space when it puts the value 32 there :P 15:03:07 for counting 15:03:34 Well, it's a nonspace after 33 until the kp. :-P 15:03:41 that is true 15:04:29 err wait 15:04:35 Deewiant, did you say "65067,65000"? 15:04:48 2010-03-25 15:59:58 ( Deewiant) If you break at 65067,65000 15:04:52 when ip is at {x = 64998, y = 65000} it writes a space there 15:05:05 Yes, that's where the k is. 15:05:20 so what's with the "65067" then? 15:05:32 65067,65000 is the first non-marker to be executed after the kp. 15:05:43 sometimes i wonder if AnMaster is ircing with telnet or something 15:05:59 (AnMaster: Deewiant, did you say "65067,65000"?) 15:08:22 -!- Tritonio_GR has joined. 15:09:44 Deewiant, is this 64995,64995 the first thing that k clears or something? 15:10:01 I wonder if making it the last thing would make a difference to the bug 15:10:13 would be really interested in knowing that. 15:11:00 * Deewiant prints out a 456325-cell stack 15:12:11 AnMaster: It's not the first, it's around the tenth or so 15:12:14 ah 15:12:18 but fairly early on at least 15:12:28 Eighth, to be exact 15:13:16 It clears (0,-1), (0,-2), (0,-3), (-1,-1), (-2,-2), (-3,-3), (-4,-4), (-5,-5), and then the original source. 15:13:27 (Apply the storage offset yourself.) 15:13:30 right 15:13:45 -!- adu has quit (Quit: adu). 15:15:30 hm 15:15:51 so well the minimisation function does something wrong when called once 15:15:57 but if called again "fixes" it 15:16:30 hm 15:17:11 aaah 15:17:17 AnMaster: what algorithm are you using to find bounds? 15:17:40 ais523, well that is the thing. It uses a simple heuristics to select algorithm 15:18:39 for "small" current bounds it uses a "shrink bounds towards the middle" algorithm based on the row/col value count info 15:18:56 but for very large bounds it seems likely that most of it is sparse 15:19:05 so thus it enumerates the values in the hash table 15:19:13 and it seems like the bug is in the large model 15:20:36 hmm, this has got me wondering if there's a general O(1) algo for bounds update 15:20:47 that is, O(1) both on unblanking cells, and on blanking them 15:20:58 and the reason the x bound is right 15:21:04 is that it uses the small model at that point 15:21:20 because the difference is _just_ in between the difference in this case 15:21:26 topLeftCorner = {x = 0, y = 0}, bottomRightCorner = {x = 65180, y = 65539} 15:21:29 are the previous bounds 15:21:48 the cut-off is 0x10000 15:21:50 actually, probably not, as that would likely lead to O(n) sorting 15:21:53 AnMaster: I figured it was something like that; I minimized the point to (65000,65000) when trying to find something as small as possible 15:21:59 you can do bounds update in O(log n), though 15:22:07 ais523: For what n 15:22:13 Deewiant, right 15:22:15 Size, number of updates? 15:22:21 in the number of cells that don't contain spaces 15:22:29 Right. 15:22:34 ais523, oh? 15:22:39 AnMaster: efunge was annoyingly slow when it was 500 million ;-P 15:22:44 Deewiant, hah 15:23:04 AnMaster: in each cell, hold a pointer to the next cell and previous cell sorted vertically over horizontally, and horizontally over vertically 15:23:07 Deewiant, I'm not sure why really. Maybe bignums aren't as efficient as they could be? 15:23:16 but that doesn't really make sense here 15:23:27 then, blanking a cell is O(1) (just remove the element from the linked lists) 15:23:28 ais523, well okay 15:23:36 now, there only problem is finding the previous and next cell 15:23:43 AnMaster: General slowness. slowdown runs 11 million ticks before getting to Mycology. 15:23:46 ais523, how do you do random access of the cells? 15:23:52 which, if you use something like a skiplist rather than linked list, is O(log n) 15:24:00 and you do random access by looking at them in your hash table 15:24:01 AnMaster: And this was before I had cut off around 400 lines from the mycology.b98. 15:24:09 Deewiant, heh 15:24:10 this is in addition to whatever mechanism you normally use for updates 15:24:18 O(log n), but the constant factor is rather nastily large 15:24:25 ais523, well okay, the storage requirement is non-trivial isn't it? 15:24:31 yes 15:24:34 It only quintuples the size of a cell :-) 15:24:39 ais523, what I do is to keep a count of set values in each column and row 15:24:49 AnMaster: I suggested that algo a while back, too 15:25:00 mhm 15:25:02 but it's O(n) in the size of the area before bounds shrinking 15:25:10 ais523, eh? 15:25:22 O(n) in size but O(log n) in memory 15:25:23 oh you mean for executing 15:25:24 because shrinking bounds means you need to check every count to see if it's 0 or not 15:25:25 Yours is the other way around 15:25:29 yes 15:25:29 Err 15:25:32 s/in size/in CPU/ 15:25:35 Or time, whatever. 15:25:43 right 15:25:58 Deewiant: that algo's O(n) in both, as you need to store the arrays 15:26:08 ais523, sparse arrays though 15:26:12 as in, the small algo for cfunge is O(n) in memory, O(n) in time 15:26:30 Hmm, it is O(n) in the worst case, you're right. 15:26:33 ais523, except outside the basic static area which is something like 1024x1024 unless I misremember 15:26:47 I thought it was 512x1024, to fit Mycology ;-P 15:26:55 Deewiant, maybe it was, I don't remember 15:27:37 considering that it grows fairly rapidly in size due to the multiplication there you can't make it too big 15:28:57 ais523, also the algorithm is fairly fast in practise. 15:29:07 for the range I use it in 15:29:21 yes; I'm wondering what the theoretically best-in-the-limit-in-the-worst-case algo is 15:29:24 faster than the large model in fact (profiled for a number of programs, not just mycology) 15:29:30 rather than the one that's most practically useful 15:29:41 hah 15:33:12 Mycology? 15:33:15 ooh, instead of putting pointers in the cells, you could just record, for each row and column with a nonspace cell in, the next and previous row or column with a nonspace cell in 15:33:20 nooga_: automated Befunge testsuite 15:33:24 Deewiant wrote it 15:33:26 oh god, is it that simple... 15:33:28 ais523: Store cells in a heap and you get it in O(1)? 15:33:32 it can't be can it.. 15:33:54 AnMaster: It helps, but you still have to calculate whether the row/column has spaces. 15:33:56 Deewiant: no, not O(1), because you can't remove entries from a heap 15:34:05 Deewiant, hm? 15:34:17 AnMaster: I mean, it's not a super-improvement. :-P 15:34:29 Deewiant, what isn't compared to what? 15:34:48 AnMaster: Your "oh god" stuff 15:34:51 there probably is a way to make a heap with removable entries, though (maybe use a heap and hashtable together?) 15:34:53 Deewiant, I was talking about the cause of the bug. 15:34:53 ... 15:35:04 AnMaster: Ah, I thought you were talking about what ais just said. 15:35:04 now I have to figure out how to fix it 15:35:08 So what's wrong 15:35:16 ais523: You can pop from a heap. 15:35:25 Deewiant: but not remove entries from inside the heap 15:35:28 only if they're at the top 15:35:32 ais523: Yes you can, it's just O(n). :-P 15:35:33 you can remove entries from a heap, just increase-key it up and then remove it? 15:35:38 Deewiant, I *think* but I'm not quite sure yet that I just check if there is an entry in the hash table for that column, but not what value that entry has 15:35:42 that's O(log n) 15:35:44 (column or row) 15:35:45 ais523: But the bounds calculation itself is O(1). 15:35:50 oklopol: ah, thanks 15:36:00 oklopol: Assuming you have a pointer to it, yes. 15:36:02 Deewiant, for normal funge space I drop the cell if I write a space, instead of storing a space 15:36:18 but it seems I don't do the same thing for the bounds array when they hit 0 15:36:20 so we now have an algo that's O(log n) in the number of times a row or column has had a value in it once and then removed again 15:36:40 also it's impossible to do that in O(1) with any heap iirc 15:36:45 Deewiant: right 15:37:05 oh 15:37:11 removing the top entry of a heap is O(log n), isn't it? or is it adding an entry that's O(log n)? 15:37:17 depends 15:37:21 one of them must be, or you could have an O(n) sort 15:37:23 -!- kar8nga has quit (Remote host closed the connection). 15:37:24 in a fibonacci heap only deletion is O(1) 15:37:28 * O(n) comparison sort 15:37:42 even merge is O(1) 15:37:44 ais523: Amortized O(1) is possible. 15:37:44 oklopol: I assumed you meant binary heap 15:37:59 Deewiant: not for both operations 15:38:10 oh well in a binary heap only merge is O(n), and pretty much everything else is O(log n) 15:38:13 ais523: Which both? 15:38:22 both remove top, and add anywhere 15:38:36 Yes, true. 15:39:47 an operation that's O(log n) in the number of rows+columns every time you p a cell is not really optimal, though 15:39:51 it's actually really easy to make everything except remove top O(1), just put them in a stack or something... :P 15:40:00 oklopol: yes 15:40:08 but having a fast remove top is what makes a heap a heap, IMO 15:40:38 -!- werdan7 has quit (Ping timeout: 608 seconds). 15:41:03 is it trivially easy/impossible to make addition O(log n) and remove top O(1)? 15:41:06 hmm, you'd just use a type of heap with O(1) add, and O(log n) delete and delete top 15:41:10 ais523: why is it incorrect today? 15:41:30 if it was correct today, then it would be incorrect today by what it says, a contradiction 15:42:14 oklopol: hmm, that's an interesting question 15:42:31 O(1) remove top implies that it has to be stored in completely sorted order, in some sense 15:42:36 yes 15:42:51 you can easily do it O(log n) add, O(1) remove top /amortized/, by simply amortizing the remove onto the ad 15:42:52 *add 15:44:20 well right, but isn't even binary heap amortized O(1) for everything except remove top, everything that's removed has to have been added at some point 15:44:30 oh well i guess you don't have to remove 15:44:39 yeah it's different 15:45:00 because you, on the other hand, have to add before you can remove 15:45:11 but yeah i meant actual constant time 15:46:50 Deewiant, pushed fix. 15:47:03 Deewiant, might take a few minutes to be visible due to caching effects 15:47:35 hmm, actually you can't 15:48:06 no, I'm wrong, you can 15:48:23 because adding to a tree of size n, and removing from a tree of size n, must mirror exactly, or have more adds 15:48:31 what gets amortized onto what is weird, though 15:48:55 AnMaster: Right, appears to work now. 15:49:23 well the thing is complexities of a data structure should be considered one big whole, it's just harder to express 15:50:03 yes 15:50:04 -!- werdan7 has joined. 15:50:22 i think you could remove top O(1) exactly if you keep a linked list + a tree for addition 15:50:22 e.g. in a fibonacci heap, if you add loads of elements then extract top once, it actually does an O(n) search for the top element 15:50:32 oerjan: adding to a tree is O(log n) 15:50:34 Deewiant, I might have time to do a release this week. Not sure 15:50:50 if I don't, it is unlikely to happen for several weeks 15:50:53 but that O(n) is amortized onto all the adds you did, and the deletes are O(log n) after that 15:50:57 ais523: yes, but don't modify the tree when removing 15:51:09 Deewiant, but I'll wait until the weekend at least, in case you find more bugs 15:51:32 Deewiant, as for efunge being slow. Have you tried with HiPE? 15:51:38 wait with that until you add something else 15:51:38 oerjan: then extract top is O(n) in the number of previous extracts 15:51:50 AnMaster: How? 15:51:54 ais523: no, because you _keep_ a linked list 15:52:03 Deewiant, first check erlang is compiled with hipe 15:52:05 run erl 15:52:08 see the first line there 15:52:12 [hipe] 15:52:12 goes like: 15:52:16 i said keep a linked list + a tree, modify only list on removal 15:52:24 oh, the idea is that you add elements to the tree, and it's a tree of pointers to the linked list 15:52:30 gah copy paste is broken 15:52:30 yep 15:52:33 * AnMaster kicks synergy 15:52:34 AnMaster: ^ 15:52:47 so adding is O(log n) to both add to the tree, and find where in the list to add it, and O(1) to add to the linked list in the appropriate place 15:52:56 Deewiant, yes it is hipe enabled 15:53:02 Deewiant, then see efunge README 15:53:22 why is it O(1) to add to the linked list? 15:53:30 ERL_COMPILER_OPTIONS='[inline,native,{hipe,[o3]}]' make 15:53:32 Deewiant, is in there 15:53:41 Deewiant, be sure to make clean first 15:53:46 oklopol: because you have a pointer to where in the list you're adding it, and so can just update a constant number of next and prev pointers 15:53:48 or it won't be rebuilt 15:53:55 Deewiant, this might or might not help 15:54:04 four for a doubly linked list, two for a singly linked list 15:54:08 and at most it will do a small difference. 15:54:08 oh, well then doesn't the linked list work as a heap already? 15:54:13 then one more to get the new tree element to point to the list 15:54:27 oklopol: you need to look at the tree (which is presumably kept balanced and sorted) to know where in the list to add, though 15:54:50 this has gotten to the stage where i'd start making things precise. 15:55:02 Deewiant, did it make any measurable difference? 15:55:24 AnMaster: Around 50-70% improvement (if I remember the previous time correctly) 15:55:30 Deewiant, wow 15:55:35 that is a lot more than I expected 15:55:39 Still 10x too slow ;-P 15:55:46 oh the tree is a search tree, right 15:55:47 Deewiant, I expected around 10% improvement at *most* 15:55:56 that makes more sense 15:56:02 AnMaster: I might have built without any optimizations previously. 15:56:18 Deewiant, well, probably, that is the default. Anyway on normal mycology it seems pretty fast to me 15:56:31 Mycology is a very fast program to run. 15:56:36 hmm, apparently Brodal queues have the same (non-amortized) performance as the amortized performance of Fibonnacci heaps 15:56:38 of course cfunge is a lot faster at mycology 15:56:57 Deewiant, yes it is nowdays. Before HRTI check was taking quite a lot of time. Did you change anything about how that was done? 15:57:04 couldn't you just detect mycology and cat a model output? 15:57:15 ais523, what would the point of that be? 15:57:21 How would you detect it? 15:57:34 Deewiant, sha256 hash? 15:57:35 oklopol: you need to look at the tree (which is presumably kept balanced and sorted) to know where in the list to add, though 15:57:46 *you could compare to a stored copy as you read it in 15:57:46 Deewiant, would be version specific yes 15:57:50 AnMaster: I don't think I've changed it recently but maybe I misremember 15:57:55 Deewiant, not recently 15:58:02 but maybe the past 1.5 years 15:58:07 note that that is a plausible typo, it only takes one keypress or touchpad knock to accidentally repeat a previous line rather than write a new one 15:58:15 I changed it at some point, but I think that was to make it slower, not faster. 15:58:19 mhm 15:58:41 ais523, ? 15:59:01 how would touchpad do that 15:59:03 AnMaster: you know how readline works, pressing up gives you a previous line? 15:59:07 up arrow key press yes 15:59:11 well, both the up arrow key press does 15:59:11 but touchpad? 15:59:14 and scrolling the mouse wheel 15:59:21 and you can do a mouse-wheel-scroll by touching the touchpad 15:59:25 ais523, here scrolling mouse wheel scrolls the terminal 15:59:40 AnMaster: same here, but I'm not using a terminal 15:59:49 ais523, well what program then? 16:00:13 also iirc you can turn that scroll thing off for touchpad 16:00:17 -!- nooga has joined. 16:00:26 AnMaster: I know, I turned it on deliberately 16:00:30 not having a mouse, it's actually useful 16:00:37 anyway, what client 16:00:56 Konversation, and only if the cursor is over the message-typing box at the time 16:03:28 why did you ask what client I was using rather than CTCP VERSIONing it? 16:03:28 -!- nooga_ has quit (Ping timeout: 258 seconds). 16:06:56 ais523, heh 16:07:55 AnMaster's client doesn't respond to VERSION 16:08:22 Deewiant, correct. I have a *!*@* ignore on CTCP and DCC (apart from CTCP ACTION) 16:08:31 this is due to spam 16:25:22 -!- nooga has quit (Ping timeout: 264 seconds). 16:34:08 -!- jcp has joined. 16:36:36 -!- charlls has joined. 16:43:31 -!- MigoMipo has joined. 17:05:11 -!- werdan7 has quit (Ping timeout: 622 seconds). 17:08:26 -!- Tritonio_GR has quit (Ping timeout: 258 seconds). 17:08:44 -!- BeholdMyGlory has joined. 17:17:46 -!- werdan7 has joined. 17:22:50 -!- coppro has quit (Ping timeout: 248 seconds). 17:28:58 -!- lereah_ has quit (Remote host closed the connection). 18:02:37 -!- tombom has joined. 18:15:59 -!- oerjan has quit (Quit: Good night). 18:25:35 -!- Tritonio_GR has joined. 18:26:04 -!- ais523 has quit (Remote host closed the connection). 18:34:22 Deewiant, btw what was the cause of that bug in ccbi that you thought was a bug in cfunge and efunge? 18:35:21 Logic error 18:35:56 Basically the bounds were right the first time, but not thereafter (if they changed) 18:36:18 heh 18:38:35 -!- Sgeo has quit (Read error: Connection reset by peer). 18:42:58 -!- Sgeo has joined. 18:49:58 -!- Slereah has quit (Ping timeout: 264 seconds). 18:56:13 -!- Slereah has joined. 19:01:55 -!- charlesq__ has joined. 19:01:59 -!- charlesq__ has quit (Read error: Connection reset by peer). 19:04:58 -!- charlls has quit (Ping timeout: 258 seconds). 19:12:04 -!- Tritonio_GR has quit (Quit: Leaving.). 19:13:41 -!- mibygl_ has joined. 19:13:55 If you defunge something, it is defunct. If you befunge something, it is befunct. 19:13:57 * mibygl_ bows. 19:23:52 mhm 19:24:17 mibygl_, so you plan to make a language called defunge now? 19:24:36 Probably not. 19:25:40 * Sgeo growls at newscientist articles costing money 19:26:00 Where else am I likely to find articles related to psychology stuff? 19:27:23 Sgeo, why are you so angry over it costing money? 19:28:01 Because I want free stuff 19:28:13 tough luck? 19:28:29 At any rate, I don't feel like spending money just to do a simple homework assignment, just because I don't know where else to look 19:30:54 Your library? 19:31:13 I just want to find something online 19:31:28 Some nice news article about the physical brain or about conditioning 19:32:12 http://7thspace.com/headlines/339167/effects_of_local_anesthesia_of_the_cerebellum_on_classical_fear_conditioning_in_goldfish.html maybe 19:32:49 Sgeo, universities generally have subscriptions for various stuff btw. 19:32:55 so connecting from there might work 19:33:16 same goes for some libraries to some stuff, not as common though 19:33:31 My library has online stuff. 19:33:31 oh and yeah, checking the books in the library would probably work 19:33:59 How about I just use this article I found 19:34:05 mibygl_, usually just encyclopedias and such accessible from the public computers in the library in my experience 19:34:33 Sgeo, sure, but that isn't what the discussion is about any more 19:34:34 :P 19:38:51 * Sgeo plays a bit of Robozzle 19:50:33 -!- kar8nga has joined. 19:56:42 -!- mibygl_ has quit (Ping timeout: 252 seconds). 20:37:21 -!- Azstal has joined. 20:39:14 -!- Asztal has quit (Ping timeout: 265 seconds). 20:39:28 -!- Azstal has changed nick to Asztal. 20:58:59 -!- Oranjer has joined. 21:00:55 -!- kar8nga has quit (Remote host closed the connection). 21:35:41 -!- Phantom_Hoover has joined. 21:37:15 Re the wire-crossing problem, specifically the strong version on the wiki page, what effect does the TCness of Rule 110 have on this? 21:41:06 -!- Phantom_Hoover has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.8/20100214235838]). 21:41:07 what is the wire crossing problem now again? 21:41:12 ... 21:41:25 impatient guy 21:42:51 hahahaha 21:42:56 could have been an accident 21:50:39 hm what about the wire crossing problem in wireworld 21:51:10 ah seems possible 21:51:37 * Sgeo remembers learning of wireworld from Mirek's Celebration 21:51:43 Mirek's Celebration? 21:53:17 ". It’s a testament to our modesty that it was not until September 2004 that we wrote up our work." 21:53:35 CA program 21:53:51 ? 21:54:46 * AnMaster fires up golly to try some out 21:59:53 Someone should make a C compiler for the Wireworld computer 22:05:39 Sgeo, near impossible considering how little memory it has 22:05:40 and so on 22:05:54 and the weird architecture 22:06:27 * AnMaster imagines wireworld but with induction as well 22:07:30 the wireworld computer looks so pretty 22:07:50 much nicer than the life turing machine 22:11:02 lament, true 22:14:29 Was the strong version the one where memory is considered too (and the weak version was just for control logic)? 22:15:24 Ilari, don 22:15:27 don't* remember 22:24:00 -!- Oranjer has left (?). 22:30:22 off topic question 22:30:30 but I guess someone in here should know 22:30:32 network sound 22:30:35 how do you do it 22:30:49 I mean, I want to forward sound from one computer to another 22:30:57 so all sound plays through one computer 22:31:21 * AnMaster looks at fizzie as the most likely person to know 22:31:32 hm he is away 22:32:57 lattices are too complicated 22:33:26 i've been doing this one exercise about them for like 6 hours 22:33:29 :D 22:34:34 oklopol, heh 22:34:49 oklopol, tell me, what are they. Simplify if needed 22:35:36 I just want a "popular science" kind of view, nothing to detailed. Just enough to know what the heck they are roughly 22:35:42 posets where any two elements have a sup and an inf, that is, for all x, y \in L there's a z such that z >= x, z >= y, and for all w >= x, w >= y, w >= z 22:35:46 oh 22:35:55 -!- Phantom_Hoover has joined. 22:36:03 well then they are these pretty things you can draaw 22:36:06 *draw 22:36:07 hahaa 22:36:15 Mm, CAs. 22:36:20 oklopol, are they related to matrices in any ways? 22:36:30 i doubt it 22:36:37 where did you get that idea 22:36:50 Crissy-crossy things? 22:37:09 oklopol, well the name 22:37:20 oh right 22:37:20 oklopol, anyway, what are their applications? 22:37:34 well they have all sorts of applications in universal algebra 22:38:00 WP gives about five different definitions for mathematical lattices. 22:38:00 oklopol, I have no clue what that is XD 22:38:10 Phantom_Hoover, wonderful 22:38:25 Phantom_Hoover, any of them halfway understandable to a non-mathematician? 22:38:27 i know two 22:38:51 the poset one was probably a bad choice, because AnMaster already knows boolean algebras, i think 22:38:54 One of them is set theory, which you don't even do in any standard curriculum I know of until uni. 22:39:00 lattices are just boolean algebras without complement, 0 and 1 22:39:03 oklopol, I know a bit about them, No expert 22:39:09 oklopol, wait what 22:39:18 and they don't have to be distributive 22:39:25 oklopol, boolean without true, false or complement? 22:39:28 did you just say that? 22:39:36 oh not two-valued boolean? 22:39:43 yeah, lattices are like boolean algebras but more general 22:39:48 i didn't say 2-elem did i 22:39:54 Algebrae, surely? 22:40:00 Oh, wait, no. 22:40:03 Arabic root. 22:40:20 i've only seen algebras in serious contexts 22:40:46 And that is probably the correct form. 22:42:35 So, wait, are we talking about the set theory lattices, the vectory ones or the graphy ones? 22:47:14 the algebra called lattice. 22:47:21 are there multiple? 22:49:42 the "type of partially ordered set" 22:51:22 i'm supposed to prove congruence lattices of lattices are distributive 22:52:42 which i imagine would follow quite easily if i understood what actually happens when we make a congruence where a = b in a lattice 22:57:50 AnMaster: More cfunge bugs! Either o or i, don't know which. http://tar.us.to:12345/mycology.b98 22:58:16 Why "mycology"? 22:58:18 AnMaster: Also, efunge apparently doesn't like q with a negative value; might not be a bug. 22:58:28 What could it possibly have to do with mushrooms? 22:58:37 Phantom_Hoover: Funge ~= fungus 22:58:56 Wasn't my idea, there was a test suite called "Fungus" before this. 22:59:03 So I just rolled with it. 23:00:50 i love it how a question that's taken me ~3 hours is between two questions that follow from the definitions so directly i can't really come up with anything to write down except "A because B, B because A" 23:01:02 *-it 23:01:35 or maybe more like "clearly A => B, clearly B => A" 23:01:55 What's the difficult one? 23:02:17 "congruence lattices of lattices are distributive" is the one that's taken me 6 hours 23:02:32 the 3 hour one is about lattices too, but i'm afraid you might directly see the solution to that 23:02:42 which would be embarrassing 23:02:56 i hope the distributivity one sounds complicated enough that no one looks into it 23:03:02 :P 23:03:04 Distributive over what? 23:03:27 What does "congruent" mean in this context? 23:03:31 a lattice is distributive if a ^ (b v c) = (a ^ b) v (a ^ c), and same for ^ and v reversed 23:03:47 (for all elements a, b, c in the lattice) 23:04:40 a congruence ~ is an equivalence relation of algebra A s.t. if f is an n-ary operation of A, and a_1 ~ b_1, ..., a_n ~ b_n, then f(a_1, ..., a_n) ~ f(b_1, ..., b_n) 23:05:06 -!- coppro has joined. 23:05:13 an equivalence relation on the algebra's elements that's compatible with the algebra's operations 23:06:08 I had a crazy idea today 23:06:20 What if types aren't distinct entities? 23:07:34 What? 23:07:41 Umm... 23:08:04 I don't know. 23:08:24 They would be indistinct entities? 23:08:46 in other words, a value can possess multiple types at once 23:08:46 the congruence lattice is formed by taking all the congruences of a lattice, and having the lattice operations be (~_1) ^ (~_2) = (~_1) \cap (~_2) and (~_1) v (~_2) = (~) such that { x ~ y | iff there's a sequence of elements a_1, ..., a_n in L such that x ~_1 a_1 ~_2 a_2 ~_1 a_3 ~_2 ... ~_1 y} 23:09:05 its actual type would be the union of all its "datapacks", which is what I've named then 23:09:06 *them 23:09:19 where \cap is done on the set representation of the congruences, {(a, b) | a ~ b} 23:09:57 the actual problem is probably easier than following this explanation 23:10:56 -!- MigoMipo has quit (Remote host closed the connection). 23:11:52 Yep. 23:12:08 Even having proper formatting would do a world of good. 23:14:10 *all the congruences of an algebra 23:14:13 in the general case 23:14:26 -!- kar8nga has joined. 23:14:38 clearly {x ~ y | iff there's a sequence of elements a_1, ..., a_n in L such that x ~_1 a_1 ~_2 a_2 ~_1 a_3 ~_2 ... ~_1 y} is a congruence 23:14:44 for any algebra 23:16:08 One of my ideas is for language that doesn't have named variables, only indirection operator as interface to memory. 23:16:57 oklopol: Are you trying to get help on your maths (homework|assignment|.*) on an esoteric language board? 23:17:37 no not really, just chatting because i'm getting frustrated with the problems 23:17:49 and i can only chat about the problems because after a day of doing them nothing else seems important 23:18:03 Ilari: So, the Lambda calculus with DeBruin indices. 23:18:25 If number type is bignum, then that would be TC given sufficient set of other operations (but it isn't TC with bounded numbers, unless there is another kind of memory). 23:18:29 it's not exactly the kind of problem you can ask help for if people don't know what lattices are 23:18:36 because it's a very hard problem even if you do 23:20:13 -!- Tritonio_GR has joined. 23:20:52 Phantom_Hoover: but i occasionally do ask for help here because #math is full of maggots and i don't know any alternatives to irc 23:21:42 *joins #math* 23:21:46 -!- BeholdMyGlory has quit (Read error: Connection reset by peer). 23:22:44 it's a rather hostile place from time to time 23:22:54 I can imagine. 23:23:36 example idea for my language: there would be a Nil datapack with no contents, and a value could be expressed as either Nil or an Int by {Nil~Int} (or, equivalently, {Int~Nil}, ~ being XOR 23:23:37 mostly because most people who ask questions there are fucking retarded 23:24:39 coppro: Why not just {Int}? 23:24:42 but also because the people who answer questions there are fucking retarded 23:24:49 Phantom_Hoover: Int just means Int, which must have a value 23:25:02 {Nil~Int} means "either Nil or Int, but not both" 23:25:22 ideally, it would have type inference so you'd never have to write that out 23:26:22 Weakly typed languages can put any value into any variable. How that's different? 23:27:04 ...okay about the problem that's taken me 3 hours now, i just read the next page of the book and there's a relevant theorem which i'd forgotten about 23:27:11 great stuff 23:27:15 Ilari: this is strongly typed 23:27:16 What stage are you at? 23:27:21 oklopol 23:27:21 "stage"? 23:27:33 University, I presume? 23:27:35 well university obviously 23:27:36 Ilari: And some datapacks would require the presence of others, effectively creating inheritance 23:27:55 our high school universal algebra course didn't do lattices. 23:28:45 AnMaster: More cfunge bugs! Either o or i, don't know which. http://tar.us.to:12345/mycology.b98 23:28:46 so 23:28:48 what does it do 23:29:05 It quits right after the relevant output. 23:29:09 Deewiant, yes 23:29:12 but what *should* happen 23:29:15 and what happens instead 23:29:18 Run efunge. 23:29:38 Deewiant, why can't you just explain what in the file is wrong 23:29:40 :/ 23:29:46 Because I haven't checked. 23:29:53 cfunge says BAD, efunge and ccbi don't -> not my problem. 23:30:02 -!- tombom has quit (Quit: Leaving). 23:30:04 $ cat mycotmp0.tmp 23:30:04 B 23:30:04 C 23:30:08 gah 23:30:10 irc ate a newline 23:30:15 there was a newline at the top 23:30:22 There should be an A there to start with. 23:30:27 okay 23:30:38 Deewiant, where does the A come from? 23:30:46 what if it turns out befunge is just a big waste of you people's time? 23:30:50 You can see the area being printed if you grep for "|A |" 23:30:55 and it never gets you a job or anything 23:31:02 oklopol: I'd be surprised if it turns out it isn't 23:31:11 It may've already got me a job or three 23:31:19 :) 23:31:26 Who knows if it really made a difference, but it did come up in the interview. 23:31:27 Deewiant, there is no C there 23:31:32 Deewiant, so where does the C come from? 23:31:34 hah 23:31:36 AnMaster: Yes there is. 23:31:58 Deewiant, B NC? 23:32:02 what the heck is that 23:32:16 ASCII too advanced for you? :-P 23:32:21 The N gets overwritten with a newline 23:32:24 aha 23:32:39 Deewiant, should there be a space after the B? 23:32:43 Yes. 23:32:48 Deewiant, not in text mode 23:32:51 should be stripped 23:32:52 Well, er, depends on what you mean 23:32:53 shouldn't it? 23:33:00 That's UNDEF and noted in the output 23:33:09 Deewiant, I can make a good case for it both being stripped and for it staying there 23:33:19 That's UNDEF and noted in the output 23:33:21 right 23:33:40 I was considering requiring stripping but I got lazy. 23:33:45 Deewiant, also something is fishy with the y test: 23:33:50 That the greatest point, relative to that point, is ( 183 177 ) 23:33:51 BAD: should have been ( 183 911 ) 23:34:01 that seems improbably to be a cfunge bug 23:34:07 improbable* 23:34:15 Surprise! If I give only the first 200 lines of Mycology the y test complains that it doesn't have all of it 23:34:40 Deewiant, however since you told me before one should fix the first bug first I really should fix it first ;P 23:34:45 (nah not really) 23:34:55 Go ahead, fill the file with nonsense if you want :-P 23:34:59 haha 23:35:16 Just add "x\n" 734 times... 23:35:22 asdjfILHGWAIUhpwoaiuehföaokshf sfasdga asgf8395ansjsahflkajhelkfhsTo be an infinite number of apes or not to befjahslkjr2a 23:35:36 That works too, just don't go over 180 columns. 23:35:40 hah 23:36:10 Deewiant, what is "A\nB[ ]\nC[\n]" used for? 23:36:18 Nothing, it's a comment. 23:36:20 ah 23:37:05 Deewiant, interesting ><>p on the line below it 23:37:11 now why do you want that!? 23:37:22 do you test t there or something 23:37:25 It's part of the concurrency testing. 23:37:29 ah 23:38:04 nice "radiator" string btw. 23:38:16 Radiator? 23:38:28 Oh, that <<<<<<<<< stuff? :-P 23:38:31 Deewiant, think a hot water radiator 23:38:33 it goes like 23:38:37 Yeah 23:38:38 > v 23:38:42 v < 23:38:44 > v 23:38:45 v < 23:38:46 and so on 23:38:50 so that bit is what I meant 23:38:57 Deewiant, what was the <<<<<< bit then? 23:39:10 it is a bit strange too 23:39:22 waste of cycles 23:39:22 It's overkill error testing for ] with a noncardinal delta 23:39:36 Deewiant, well you have it elsewhere too 23:39:43 I reappropriated that block of code within it (which used to be all <<<<<<<<) for this stuff 23:39:46 >"$"$>>>>>>>> 23:39:47 for example 23:39:54 which seems weird 23:39:58 That's concurrency testing again. 23:40:01 ah 23:40:10 Deewiant, all around the file stuff? 23:40:13 seems somewhat messy 23:40:16 No, immediately after. 23:40:18 to not keep them separated 23:40:50 Deewiant, physically in the file the |A | thing is the line *after* it 23:40:53 But because you made the annoying realization that o in text mode can be tested, I had to add that somewhere, so now it's a bit more confusing that way. 23:41:01 ah 23:41:09 stupid me 23:41:15 * AnMaster looks at the source 23:41:16 Yes, it's all your fault. 23:41:42 you didn't *have* to test it though 23:41:48 Yes I did :-P 23:42:05 -!- Phantom_Hoover has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.8/20100214235838]). 23:43:06 AnMaster: Network audio cross-platform seems to be a horrible mess; the ones I know about on Linux are JACK's rather kludgy-looking "netjack" thing, and Pulseaudio's (which is pretty popular) network server support. Oh, and ESD does audio-over-network, too, but I doubt that's used very much nowadays. 23:43:22 Pulse's networking might be the best bet if your system uses that already. 23:43:39 Fungespace (105,148) to (109,150) follows: 23:43:40 A | 23:43:40 B 23:43:40 C| 23:43:41 huh? 23:43:44 oh wait 23:43:51 it doesn't escape newline 23:44:15 fizzie, I have pulseaudio on one system, plain ALSA with "jack when required" on the other 23:44:27 Surely the memory can be increased 23:44:35 Although architecture issues are probably significant 23:44:36 fizzie, hm what about http://alsa.opensrc.org/index.php/Network 23:46:03 after a while (depending on the speed of your computer, it could easily be half an hour) 23:46:06 Bleh 23:46:09 AnMaster: Well, yes, alsa's pretty flexibly configurable too, it sounds reasonable that you could hack some arecord-netcat-aplay plumbing, but it does sound a bit messy. 23:46:19 But then, that was written some time ago, presumably 23:46:31 * AnMaster tries to make sense of his code for text file mode 23:47:07 ssize_t lastspace = (ssize_t)size->x; ???? 23:47:20 fizzie: output audio | ssh host dd of=/dev/dsp ;-) 23:47:31 AnMaster: I think JACK's netjack is at least somewhat latency-optimized, though obviously networking is horribly slow compared to anything else. Though I guess netcat's UDP mode is not such a horribly bad idea either. 23:47:41 fizzie, hm 23:47:50 fizzie, would use it for games 23:48:03 Of course no authentication or any fancy negotiation there; if you have that "nc -u -l -p 8100 | aplay" running, it basically means that any UDP packets that come to that port come out of your speakers directly. 23:48:08 as in, wesnoth or widelands or whatever 23:48:23 fizzie, anyway I'm on a trusted lan basically 23:49:50 huh what the heck did that logic do 23:49:55 Yes, that's for playback, but how you get apps to send the audio as UDP packets? 23:49:58 If you want it only now and then, I guess that "arecord to capture what would come out" + nc + aplay solution is not too bad. I wouldn't keep that thing running all the time. 23:50:26 Ilari: "arecord -t wav -f cd | nc -u server port" is what they used there. 23:50:31 -!- Oranjer has joined. 23:50:34 okay I think that test is broken 23:51:01 Deewiant, so I know the cause of the bug, but I have absolutely no clue how to fix it yet 23:51:08 Heh 23:51:11 What's the cause, then 23:51:20 Ilari: (You just need to set the capture source to "mixer" so that it captures what would go out locally.) 23:51:31 Deewiant, one or several off by one errors in the code that strips spaces from the end of each line 23:51:49 heh 23:51:52 Deewiant, problem is that when I "fix" it, it breaks the logic elsewhere 23:52:14 so I can atm get right for either multi-char lines or for single-char lines 23:52:17 I'm not sure why 23:52:55 Deewiant, btw, doesn't the spec say there shouldn't be any EOL? 23:52:58 at the end 23:53:04 or do I misremember 23:53:42 Deewiant, should it strip empty lines? I don 23:53:45 don't* remember 23:54:09 I'm willing to read that as "any extra EOLs"; it's a UNIX convention that newlines are line terminators, not line separators, after all. 23:54:24 I guess netcat's UDP mode will at least make small enough UDP packets that they are less than the MTU, so you won't get that much lag out of that particular bit; given 1500 or so bytes, that's just 375 samples (< 10 ms) of 44.1kHz 16-bit stereo. It's anyone's guess how much arecord will buffer before doing any write()s, of course. 23:54:30 And no, it shouldn't strip empty lines. 23:54:34 Deewiant, right 23:54:49 Deewiant, hm? 23:54:55 oh I see what you mean 23:54:56 right 23:55:11 Deewiant, I think cfunge strips all of them, I don't know if efunge strips all 23:56:09 fizzie, 16-bits only? :/ 23:56:42 AnMaster: Evidently it does. 23:57:13 AnMaster: Well, you can push anything through that, of course. I was just calculating those numbers based on what they used ("-f cd"). 23:58:42 Deewiant, pushing fix, cache effects might apply 23:59:31 AnMaster: Hang on, I think there might be an efunge bug here too (or CCBI) 23:59:47 Deewiant, ?