00:04:33 yeah, fun 00:05:31 huh. 00:05:44 * nazgjunk wtf's, audibly, and then goes to sleep. 00:07:14 mathmaticians come up with all kinds of crazy notations 00:09:56 -!- crathman has joined. 00:11:57 That notation is the fundament for understanding the rules of many of the new kinds of logic, such as linear logic. 00:15:32 -!- sebbu2 has joined. 00:16:48 -!- nazgjunk has quit (Nick collision from services.). 00:27:14 -!- Sgeo has quit ("Leaving"). 00:28:34 -!- Sgeo has joined. 00:33:45 -!- tgwizard has quit (Read error: 110 (Connection timed out)). 00:34:18 -!- sebbu2 has quit (Client Quit). 00:34:34 -!- sebbu has quit (Read error: 110 (Connection timed out)). 00:37:42 -!- oerjan has quit ("Eek"). 01:24:39 -!- Arrogant has quit ("Leaving"). 01:49:23 -!- crathman has quit (Read error: 110 (Connection timed out)). 01:50:31 -!- wooby has quit. 01:53:01 -!- anonfunc has joined. 01:57:57 -!- goban has quit (Read error: 104 (Connection reset by peer)). 01:58:08 -!- goban has joined. 02:00:47 ahahah 02:00:50 >>> 'ABC' < 'C' < 'Pascal' < 'Python' 02:00:51 True 02:03:05 >>> 'ABC' < 'C' < 'Pascal' < 'Python' < 'Scheme' 02:03:06 True 02:05:51 but it's not greater than SOPHIA. 02:17:22 -!- crathman_ has joined. 02:29:10 >>> 'ABC' < 'C' < 'Pascal' < 'Python' < 'Scheme' < 'Zilog Z80 assembler' 02:29:10 True 02:29:19 I find Python's opinions a bit suspicious. 02:35:17 -!- crathman_ has quit (Read error: 110 (Connection timed out)). 02:35:49 -!- digital_me has quit ("Lost terminal"). 02:39:23 -!- digital_me has joined. 04:04:22 -!- SevenInchBread has quit (Read error: 113 (No route to host)). 04:43:54 -!- Sgeo has quit ("Leaving"). 05:26:41 -!- ShadowHntr has joined. 05:46:29 -!- digital_me has quit ("Lost terminal"). 07:19:42 -!- nooga has quit (Read error: 110 (Connection timed out)). 07:31:17 -!- nooga has joined. 07:53:31 -!- ShadowHntr has quit (Read error: 60 (Operation timed out)). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:55:42 -!- Sukoshi has quit ("ERC Version 5.1 (CVS) $Revision: 1.796 $ (IRC client for Emacs)"). 08:56:09 -!- Sukoshi has joined. 09:11:19 -!- sebbu has joined. 09:14:33 No. 11:11:15 -!- tgwizard has joined. 11:55:01 Sukoshi: no what? 12:08:12 -!- anonfunc has quit (zelazny.freenode.net irc.freenode.net). 12:08:13 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 12:08:13 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net). 12:08:13 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 12:08:14 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 12:08:14 -!- AfterDeath has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- tgwizard has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- Shaunaf has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 12:08:15 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 12:08:22 -!- bsmntbombdood has quit (Remote closed the connection). 12:09:10 -!- bsmntbombdood has joined. 12:09:10 -!- tgwizard has joined. 12:09:10 -!- anonfunc has joined. 12:09:10 -!- bsmnt_bot has joined. 12:09:10 -!- AfterDeath has joined. 12:09:10 -!- helios24 has joined. 12:09:10 -!- sp3tt has joined. 12:09:10 -!- Shaunaf has joined. 12:09:10 -!- meatmanek has joined. 12:09:10 -!- puzzlet has joined. 12:09:10 -!- fizzie has joined. 12:09:10 -!- cmeme has joined. 13:02:14 -!- csaba has joined. 13:02:23 Hello 13:03:09 I'm thinking of writing a visual simulator of a Turing machine. I'm interested if you have any ideas what should I include into it? I mean, besides the basic machine. 13:23:52 -!- csaba has quit (" HydraIRC -> http://www.hydrairc.com <- IRC with a difference"). 13:49:18 -!- ais523 has joined. 13:49:32 !ps d 13:49:36 1 ais523: daemon ul bf 13:49:38 2 ais523: ps 13:49:56 !ul (Is the Underload interpreter daemon still running after all this time?)S 13:49:59 Is the Underload interpreter daemon still running after all this time? 13:53:08 !help 13:53:09 Now what's happened to EgoBot? 13:53:09 !kill 1 13:53:14 -!- anonfunc has quit (zelazny.freenode.net irc.freenode.net). 13:53:14 -!- fizzie has quit (zelazny.freenode.net irc.freenode.net). 13:53:14 -!- helios24 has quit (zelazny.freenode.net irc.freenode.net). 13:53:14 -!- sp3tt has quit (zelazny.freenode.net irc.freenode.net). 13:53:15 -!- bsmntbombdood has quit (zelazny.freenode.net irc.freenode.net). 13:53:15 -!- cmeme has quit (zelazny.freenode.net irc.freenode.net). 13:53:15 -!- AfterDeath has quit (zelazny.freenode.net irc.freenode.net). 13:53:16 -!- Shaunaf has quit (zelazny.freenode.net irc.freenode.net). 13:53:16 -!- meatmanek has quit (zelazny.freenode.net irc.freenode.net). 13:53:16 -!- tgwizard has quit (zelazny.freenode.net irc.freenode.net). 13:53:17 -!- puzzlet has quit (zelazny.freenode.net irc.freenode.net). 13:53:17 -!- bsmnt_bot has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- oklopol has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- pgimeno has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- SimonRC has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- sekhmet has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- NK\ has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- sebbu has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- Sukoshi has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- nooga has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- goban has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- GregorR has quit (zelazny.freenode.net irc.freenode.net). 13:53:18 -!- tokigun has quit (zelazny.freenode.net irc.freenode.net). 13:53:19 -!- EgoBot has quit (zelazny.freenode.net irc.freenode.net). 13:53:44 -!- sebbu has joined. 13:53:44 -!- Sukoshi has joined. 13:53:44 -!- nooga has joined. 13:53:44 -!- goban has joined. 13:53:44 -!- GregorR has joined. 13:53:44 -!- tokigun has joined. 13:53:44 -!- EgoBot has joined. 13:53:47 -!- bsmntbombdood has joined. 13:53:47 -!- tgwizard has joined. 13:53:47 -!- anonfunc has joined. 13:53:47 -!- bsmnt_bot has joined. 13:53:47 -!- AfterDeath has joined. 13:53:47 -!- helios24 has joined. 13:53:47 -!- sp3tt has joined. 13:53:47 -!- Shaunaf has joined. 13:53:47 -!- meatmanek has joined. 13:53:47 -!- puzzlet has joined. 13:53:47 -!- fizzie has joined. 13:53:47 -!- cmeme has joined. 13:53:50 -!- oklopol has joined. 13:53:50 -!- pgimeno has joined. 13:53:50 -!- sekhmet has joined. 13:53:50 -!- NK\ has joined. 13:53:50 -!- SimonRC has joined. 13:53:56 !help 13:54:00 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 13:54:02 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 13:54:07 !ps d 13:54:10 1 ais523: daemon ul bf 13:54:12 2 ais523: ps 13:55:06 !daemon deadfish funge93 http://pastebin.ca/raw/373003 13:55:22 !deadfish iiissoo 13:55:24 >> 13:55:26 >> 13:56:09 That seemed to work (it sent the end of the message privately), but it could probably do without the prompts and newlines 13:58:41 !undaemon deadfish 13:58:44 Process 2 killed. 13:59:14 !deadfish funge93 http://pastebin.ca/raw/373012 13:59:16 Huh? 13:59:24 !daemon deadfish funge93 http://pastebin.ca/raw/373012 13:59:32 !deadfish iiisso 14:00:35 !undaemon deadfish 14:00:38 Process 2 killed. 14:00:40 !daemon deadfish funge93 http://pastebin.ca/raw/373016 14:00:44 !deadfish iiisso 14:00:48 81 14:01:02 !deadfish dddddddo 14:01:04 74 14:02:42 !undaemon deadfish 14:02:44 Process 2 killed. 14:02:46 !daemon deadfish funge93 http://pastebin.ca/raw/373016 14:03:12 Deadfish has no sensible way to set its single memory value to 0 14:03:29 It doesn't have any loops or other flow control, either, so the benefits of implementing it are dubious 14:18:37 -!- UpTheDownstair has joined. 14:20:04 -!- UpTheDownstair has changed nick to nazgjunk. 14:21:33 !ul (~exec sys.stdout("!deadfish iisso"))S 14:21:36 ~exec sys.stdout("!deadfish iisso") 14:21:37 !deadfish iisso 14:21:40 16 14:22:51 It would be nice if all EgoBot's interpreters were written in esoteric programming languages 14:23:13 although that would lead to some sort of infinite regress, probably, unless it ran on a machine with Brainfuck machine code or something like that 14:28:16 that would be pretty awesome 14:30:08 The Underload interpreter is written in brainfuck, and the Deadfish interpreter is written in Befunge-93, so that's two already 15:09:12 -!- nazgjunk has quit (Read error: 104 (Connection reset by peer)). 15:09:28 -!- UpTheDownstair has joined. 15:09:42 -!- UpTheDownstair has changed nick to nazgjunk. 15:59:11 -!- oerjan has joined. 16:01:51 hm... 16:01:56 >>>True 16:02:01 hm... 16:10:00 Oerjan, your comments lack context to me 16:11:03 ~exec self.register_raw(~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1))))) 16:11:04 SyntaxError: invalid syntax 16:11:06 darn 16:11:29 ~exec self.register_raw(~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1)))))) 16:11:29 SyntaxError: invalid syntax 16:11:44 whoops 16:11:53 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1))))) 16:11:59 >>>1+2 16:12:00 -!- bsmnt_bot has quit (Remote closed the connection). 16:12:04 -!- bsmnt_bot has joined. 16:12:21 apparently not correct. 16:12:47 ~sys.stdout(repr(1+2)) 16:12:57 ~exec sys.stdout(repr(1+2)) 16:12:58 3 16:13:14 ~exec sys.stdout(repr(eval("1+2"))) 16:13:14 3 16:13:38 wait... 16:15:30 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(1))))) 16:15:36 ~exec sys.stdout(repr(eval("1+2"))) 16:15:37 3 16:15:41 >>> 1+2 16:15:42 -!- bsmnt_bot has quit (Remote closed the connection). 16:15:44 -!- bsmnt_bot has joined. 16:16:12 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(y.group(1))) 16:16:16 >>>test 16:16:17 #esoteric 16:16:41 ~exec self.raw_regex_queue.pop() 16:17:31 strange. must be that darn scope again. 16:17:45 eh wait 16:18:00 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(2))))) 16:18:05 >>>1+2 16:18:06 3 16:18:08 finally 16:18:27 >>> "Pascal" < "Python" 16:18:27 True 16:18:39 >>>"Test" 16:18:40 'Test' 16:19:41 Maybe it would be possible to do something similar to that to get an Underload/Python quine going 16:20:30 ~exec self.register_raw(r"\S_ PRIVMSG (\S+) :%%(.*)", lambda x,y: sys.stdout(y.group(2))) 16:20:35 >>>"C++" < "Everything" 16:20:35 %%Hello, world! 16:20:35 True 16:20:55 I don't really know much Python 16:22:06 >>>"Does this work for me too?" 16:22:07 'Does this work for me too?' 16:22:33 >>>sys.stdout("Nested printing") 16:22:33 Nested printing 16:22:34 None 16:23:14 >>>y 16:23:15 <_sre.SRE_Match object at 0xb7c6b0f8> 16:23:26 >>>y.group(2) 16:23:27 'y.group(2)' 16:23:35 >>>x 16:23:36 ':ais523!n=chatzill@chillingi.eee.bham.ac.uk PRIVMSG #esoteric :>>>x' 16:23:49 that was strange 16:24:22 >>>eval(y.group(2)) 16:24:23 -!- bsmnt_bot has quit (Remote closed the connection). 16:24:24 oh wait, it wasn't :) 16:24:25 -!- bsmnt_bot has joined. 16:24:30 it was nearly a quine 16:24:47 I suppose I shouldn't have done that, really, but I wanted to see how it would handle the eval loop 16:25:00 >>>'Is this still working?' 16:25:08 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :>>>(.*)", lambda x,y: sys.stdout(repr(eval(y.group(2))))) 16:25:26 >>>"'this string contains single quotes'" 16:25:27 "'this string contains single quotes'" 16:25:41 >>>"'single"+'"double' 16:25:42 '\'single"double' 16:26:09 >>>'>>>'+y.group(2) 16:26:10 ">>>'>>>'+y.group(2)" 16:26:44 that would be a quine-by-cheating if it weren't for the repr() 16:26:55 right 16:27:22 I wanted it to give approximately the same output as the Python repl loop 16:28:18 I wonder why my non-repr'd and eval'd version above didn't work? 16:28:44 maybe it's because I can't count parentheses 16:28:54 which one? 16:29:05 "~exec self.register_raw(r"\S_ PRIVMSG (\S+) :%%(.*)", lambda x,y: sys.stdout(y.group(2)))" 16:29:28 no, I did count correctly 16:29:40 perhaps % has a regexp meaning 16:30:05 I hope not, my Underload interpreter in a new regexp-based language Thutu that I'm creating relies on it being meaningless 16:30:14 but I could always change to some other character instead 16:30:27 wait... 16:30:29 ~exec self.register_raw(r"\S_ PRIVMSG (\S+) :<<<(.*)", lambda x,y: sys.stdout(y.group(2))) 16:30:32 << you mispled S+ as S_ in there 16:30:50 ~exec self.register_raw(r"\S+ PRIVMSG (\S+) :<<<(.*)", lambda x,y: sys.stdout(y.group(2))) 16:30:52 damn typos 16:30:54 << testing 16:31:17 that may have been the original problem too 16:31:37 << !ul (a(<< << !ul (a(<< << !ul (a(<< wow 16:31:50 << !ul (a(<< << !ul (a(<< << !ul (a(<< << !ul (a(<< << ~quit 16:32:06 !ul (a(<< << !ul (a(<< << !ul (a(<< << !ul (a(<< !undaemon ul 16:32:22 << !ul (a(<< Process 1 killed. 16:32:26 Huh? 16:33:39 you might be able to do it just with ~exec sys.stdout(...) as well 16:34:13 !daemon ul bf http://pastebin.ca/raw/36774 16:34:49 I tried that a while ago, but the problem was that Underload needs a literal double-quote so it can pass it to Python, and Python has trouble with double-quotes inside strings 16:35:21 i.e. whatever representation you use for the string delimiter, it can't be used inside the string without backslashing it 16:35:32 right. 16:35:33 !undaemon ul 16:35:36 ~yy 16:35:37 !daemon ul bf http://pastebin.ca/raw/367774 16:35:38 Process 1 killed. 16:35:58 I have no idea what random code I fed EgoBot by mistake there... 16:36:01 wow :) 16:36:12 apparently it did _something_ 16:36:28 that's not difficult in BF if you have enough dots in the program 16:36:48 but it's interesting that it came up with characters that aren't near the end of the ASCII scale 16:36:59 something in Lisp. 16:37:33 there are plenty of - in Lisp. 16:37:51 and much fewer dots. 16:38:18 of course, I never quite got used to using - as part of a variable name 16:38:48 my only real Lisping to date has been writing an Unlambda-using-lambda-notation to Unlambda-using-```ski-notation compiler in Emacs-Lisp 16:40:30 all the loops are essentially [] 16:41:42 my guess is the first of them is infinite, since there is only one > in the program, which comes later. 16:41:48 (and no <) 16:42:44 yes, the program's essentially ------(lots more minuses and some dots)----[] from a BF point of view, which is pointless 16:45:44 ais523 did get the right page this time 16:46:26 !help 16:46:30 help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon 16:46:32 1l 2l adjust axo bch bf{8,[16],32,64} funge93 fyb fybs glass glypho kipple lambda lazyk linguine malbolge pbrain qbf rail rhotor sadol sceql trigger udage01 unlambda whirl 16:47:15 !irp Say "Hello, world!", please! 16:47:25 !daemon deadfish funge93 http://pastebin.ca/raw/373003 16:47:28 Hello, world! 16:47:59 yes, there was a call for Deadfish interpreters other than the reference one, so I wrote one in Befunge-93 16:48:06 My first Befunge-93 program, as it happens 16:48:33 i thought that the poster was carelessly vague on the language :) 16:48:48 but 373016 is the EgoBot-ised version that doesn't give prompts and which doesn't print newlines except when outputting 16:49:04 Y'know, I could add a sensible interpreter if you asked me to :P 16:49:07 I even preserved the bugs in the reference interpreter 16:49:23 !irp Tell GregorR that EgoBot does IRP now. 16:49:38 Well that worked great X-P 16:49:42 GregorR, I now do IRP 16:49:49 O_O 16:49:50 hah. 16:49:58 Oh 16:49:59 Pff 16:50:08 For a quarter of a second, you'd fooled me. 16:50:22 With my own damn bot X-P 16:50:46 I got it to do Underload and Deadfish without cheating, though 16:51:03 (using Keymaker's BF code for the Underload and my Befunge-93 code for the Deadfish) 16:51:18 Its daemon support isn't particularly reliable *shrugs* 16:53:29 once you get used to the requirements for newlines in strategic places, though, it's not too hard to use 16:53:52 !deadfish o 16:53:56 16 16:54:04 !deadfish so 16:54:06 0 16:54:27 According to the Deadfish reference interpreter, the value becomes 0 whenever it was previously exactly -1 or exactly 256 16:54:50 but squaring makes it possible to jump past 256, and then it's very tedious to take it back down again 16:57:28 well... 16:57:57 squaring is module size(int), isn't it? 16:58:00 *modulo 16:58:08 i mean *maxint 16:58:17 i mean, argh! 16:58:31 presumably, but I don't know what maxint for the Befunge-93 interpreter is 16:58:36 It shouldn't be too hard to find out 16:58:41 !deadfish iiio 16:58:44 3 16:58:49 !deadfish so 16:58:52 9 16:58:53 !deadfish so 16:58:56 81 16:58:57 !deadfish so 16:59:00 6561 16:59:01 !deadfish so 16:59:04 43046721 16:59:06 !deadfish so 16:59:08 -501334399 16:59:17 that can't be right 16:59:28 so that's probably an indication of maxint's value 16:59:28 lessee.. 17:00:51 32 bits 17:01:21 because 43046721 squared is 6954FE21E3E81 in hex 17:01:42 and -501334399 is (infinite number of F's) E21E3E81 17:02:09 Of course, it could be anywhere from 29 bits to 36 with that information, but 32's a good guess 17:03:27 !undaemon deadfish 17:03:28 Process 2 killed. 17:03:42 !daemon deadfish funge93 http://pastebin.ca/raw/373016 17:04:21 !ps d 17:04:24 1 ais523: daemon ul bf 17:04:26 2 ais523: daemon deadfish funge93 17:04:28 3 ais523: daemon irp bf 17:04:30 4 ais523: ps 17:04:34 !kill 3 17:04:36 Process 3 killed. 17:05:52 this means that once you have assured the number is even, you can get it back to 0 by 5 squarings. 17:06:04 of course 17:06:10 !deadfish iiio 17:06:12 3 17:06:15 !deadfish ssso 17:06:18 6561 17:06:26 !deadfish isssso 17:06:28 83951616 17:06:35 !deadfish so 17:06:38 0 17:06:40 -!- jix__ has joined. 17:08:43 in general, 5 squarings, 1 increment, then 5 more squarings. 17:09:03 and you will have either 0 or 1. 17:09:23 which incidentally gives an actual algorithm for testing evenness 17:09:30 I wonder if there's a way to get it onto 0 guaranteed, using the special behaviour of 256 and/or -1? 17:09:43 Of course, sssssisssssd will get it to 0 guaranteed 17:09:45 oh right. 17:10:14 wait a moment... 17:10:33 does -1 have a square root? that could mess things up a bit 17:11:25 256 is less important in this case, since you want to reach 0 anyhow 17:11:26 no; -1 equals 2^(even number)-1 equals (some number)^2-1 equals (some number plus 1)(some number minus 1) 17:11:50 and you can't have either bracket being a square, because they're one away from a square 17:11:58 -!- jix__ has changed nick to jix. 17:12:00 and they can't share an odd factor because they differ by 2 17:13:31 you know, with an extra register and some sort of flow control Deadfish could actually become a useful language 17:14:58 I wonder what my JOIN message looks like from bsmnt_bot's point of view? 17:15:49 basically i think it is :ais523... JOIN #esoteric 17:16:04 ~exec self.register_raw(r".*JOIN.*", lambda x,y: sys.stdout(x)) 17:16:08 -!- ais523 has left (?). 17:16:17 -!- ais523 has joined. 17:16:18 :ais523!n=chatzill@chillingi.eee.bham.ac.uk JOIN :#esoteric 17:16:21 possibly JOIN :#esoteric, since they are equivalent 17:16:22 :oerjan!n=oerjan@hagbart.nvg.ntnu.no PRIVMSG #esoteric :possibly JOIN :#esoteric, since they are equivalent 17:16:30 which it was 17:16:58 maybe we could get a bsmnt_bot welcoming service going 17:17:09 ~exec self.raw_regex_queue.pop() 17:17:38 I was just looking for that command in the logs when you typed it... 17:17:42 seems trivial. 17:18:30 i had it in my own history. 17:19:27 ~exec self.register_raw(r":([^!]*)[^ ]* JOIN.*", lambda x,y: sys.stdout(y.group(1))) 17:19:33 -!- ais523 has left (?). 17:19:41 -!- ais523 has joined. 17:19:42 ais523 17:20:01 ~exec self.raw_regex_queue.pop() 17:20:19 ~exec self.register_raw(r":([^!]*)[^ ]* JOIN.*", lambda x,y: sys.stdout("Hello, "+y.group(1)+"!")) 17:20:40 that should do for now 17:21:01 I need to add the fast-loading low-fanciness logs to the wiki 17:21:28 the tunes one, you mean 17:21:44 that's the one 17:21:56 yeah, the others have recently become nearly unbearably slow 17:23:26 Something intermediate would have been nice. 17:23:44 -!- kxspxr has joined. 17:23:44 Hello, kxspxr! 17:23:58 -!- kxspxr has quit (Client Quit). 17:24:17 I think bsmnt_bot frightened them off, probably 17:24:17 hm, this _could_ become annoying after netsplits. 17:24:43 but then bsmnt_bot would probably just get kicked temporarily for flooding 17:24:58 just like happens to EgoBot if you feed it an infinite loop that outputs something by mistake 17:25:04 except that i think it does its own throttling 17:25:41 EgoBot throttles too, but I think it has problems with huge lines 17:25:45 but bsmnt_bot isn't throttled 17:25:49 as far as I remember 17:26:04 ~exec sys.stdout("a\nb\nc\nd\ne\nf\ng\nh") 17:26:05 a 17:26:05 b 17:26:05 c 17:26:06 d 17:26:06 e 17:26:07 f 17:26:09 g 17:26:10 h 17:26:12 i thought i remembered bsmntbombdood saying he put throttling on sys.stdout 17:26:21 oh, the throttle only kicks in after 4 lines 17:26:21 in fact i think we discussed how to do it 17:26:26 which is why I hadn't noticed it before 17:27:03 on the other hand the IRC network may do its own throttling in border cases 17:27:45 i don't know but it's suggested by the original RFC 17:29:05 btw i am not sure your argument that -1 has no square root mod 2^n holds 17:29:33 no, it's an argument that -1 has no square root mod 4^n 17:29:36 which applies in this case 17:29:43 ok 17:29:53 well i still don 17:30:05 't get the argument. 17:30:32 4^n-1 = (2^n-1)(2^n+1) 17:30:44 both brackets are odd, and so have no even factors 17:30:52 they can't both be square numbers because they differ by 2 17:31:06 and because they differ by 2, they can't share an odd factor 17:31:15 but the square could be a*4^n-1 17:31:31 of course, I missed that 17:39:29 anyway, even if -1 is hit in the sequence it isn't a problem 17:39:35 -!- anonfunc has quit. 17:39:41 because you still end up with 0 or 1 before the final d 17:40:28 right 17:41:24 on the other hand Haskell does not give me square roots of -1 for any power of 2 that I've tested 17:41:29 of course, relying on overflow for sssss removes any chance of a Turing-complete system unless you have an infinite number of registers 17:42:38 could use a strange number ring. 17:42:55 in which 2^32 = 0, but there are infinitely many odd numbers 17:43:30 you could define any number that's a multiple of 2^32 to be 0 17:43:41 much the same way as 256 is defined to be 0 in Deadfish 17:44:02 hm... 17:44:51 well, since the language already has that strangeness. 17:44:58 the reference interpreter defines the data type to be 'unsigned int' from C 17:45:08 does it? 17:45:24 it's on the wiki. I wonder if this makes the test against -1 redundant? 17:45:34 or if the -1 is converted to unsigned before the test? 17:45:48 one way or the other there has to be a conversion 17:46:12 of course, 'unsigned int' is allowed by the C specification to be as big as the implementation wants, as long as it's at least 16 bits 17:46:21 so we may as well make it infinite 17:46:53 if we make it infinite we need to modify d 17:47:05 put the -1 test there instead. 17:47:26 and simultaneously deal with the signed-vs-unsigned problem 17:47:38 -!- sebbu2 has joined. 17:47:39 Hello, sebbu2! 17:49:09 10 LET 256 = 0 17:49:22 20 LET -1 = 0 17:49:25 i have a vague idea that there are no square roots of -1 for proper prime powers 17:49:46 let me look up the mobius function 17:50:00 ah, Forte 17:50:18 one of my few esolangs I never wrote an interpreter for 17:50:29 i have considered doing it 17:50:37 but never got around to it 17:52:11 of course, Forte is limited to nonnegative integers 17:52:41 it is? 17:52:54 apparently. I had to read the spec again though to make sure 17:53:12 how is - defined then? 17:54:17 the spec doesn't make it very clear. It doesn't even define +, *, or /, now I've looked (it defines 'division', sort of, but doesn't explain the relationship to the / operator) 17:54:22 I'll go and fix it now 17:55:41 OK, - is now officially undefined if it would lead to a negative result 17:56:58 or it would be if the wiki hadn't crashed the instant I tried to save 17:57:23 * ais523 tries again 17:57:26 it worked this time 17:58:01 i hope it wasn't because i immediately tried to load the page 17:58:34 the justification for Forte resembles the justification for Smetana :) 18:00:43 I actually tried programming in it; programs are mostly short commands, with huge gaps in numbering now and then, and with the occasional huge command that renumbers itself and all the others in the loop 18:00:56 that's why there's a colon line-break provision 18:01:26 I suspect that in larger programs it would be more efficient to use a loop to iterate through each command in a loop and renumber it 18:04:03 -!- UpTheDownstair has joined. 18:04:04 Hello, UpTheDownstair! 18:04:13 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 18:07:05 -!- sebbu has quit (Connection timed out). 18:09:48 I think I'll change your edit into a table. 18:12:22 Yes, that looks better. 18:14:45 -!- NK\ has changed nick to NK`. 18:19:22 -!- ais523 has quit. 18:41:05 * SimonRC goes to dinner. 18:42:58 * oerjan finds a suspicious absense of information about square roots mod n when n is a prime power 18:44:44 oh wait. 18:44:55 * oerjan slaps head 18:45:13 if there are none mod 4 then there cannot be any mod 4n either. 18:47:21 -!- calamari has joined. 18:47:22 Hello, calamari! 18:47:39 wow, a greet bot :) 18:47:41 hi 18:47:53 C++ > calamari :( 18:48:33 >>> "C++" > "Calamari" 18:48:34 False 18:48:45 bsmnt_bot doesn't agree 18:48:52 cool, I have a chance then 18:50:24 -!- goban has quit (Read error: 104 (Connection reset by peer)). 18:51:01 error: request for member 'allocate' in 'MyObject::pool', which is of non-class type 'Pool*' 18:51:21 -!- goban has joined. 18:51:22 Hello, goban! 18:51:31 I think Java is messing me up hehe 18:54:36 ahh, I was using . when I should have been using -> 18:59:36 -!- crathman has joined. 18:59:36 Hello, crathman! 19:00:12 oerjan: is bsmnt_bot yours? 19:02:30 no, it's bsmntbombdood's 19:02:54 but me and ais523 played a bit with it 19:04:03 he is responsible for the greetings. 19:08:46 -!- goban has quit (Connection timed out). 19:08:59 -!- goban has joined. 19:08:59 Hello, goban! 19:18:54 -!- goban has quit (Read error: 54 (Connection reset by peer)). 19:19:09 -!- goban has joined. 19:19:09 Hello, goban! 19:21:24 oerjan: yeah, sys.stdout is throttled, but not for multiple calls 19:21:53 oh 19:22:11 >>> 1+1 19:22:11 2 19:22:15 fun :) 19:22:34 >>> def f(x): return x 19:22:34 -!- bsmnt_bot has quit (Remote closed the connection). 19:22:37 -!- bsmnt_bot has joined. 19:22:41 ahem 19:22:43 yep. 19:22:50 eval only does expressions 19:22:51 it does only expressions. 19:23:02 stupid python 19:23:07 hmm... 19:23:19 can exec return the result? 19:23:29 I was thinking about a repl for it 19:23:35 no:( 19:23:43 exec is a statement 19:25:01 hmph. so neither eval nor exec will work as repl for statements. 19:25:17 you have to do analysis of the code 19:25:31 exec statements, eval expressions 19:26:41 just as well to have two different commands then. But you should do something about bsmnt_bot crashing on syntax errors. 19:27:15 i mean, shouldn't a do_exec be isolated? 19:27:21 it is 19:27:28 but you're not using do_exec 19:27:44 i'm not? hm. 19:27:56 nope 19:28:08 when callbacks all executed, exceptions aren't caught 19:28:15 lessee... 19:28:19 you used plain "eval" in the callback 19:33:43 hmm 19:33:48 ~exec sys=0 19:34:02 ~exec print __names__ 19:34:02 NameError: name '__names__' is not defined 19:34:08 ~exec print __globals__ 19:34:09 NameError: name '__globals__' is not defined 19:34:26 hmm 19:34:44 ~exec print type(sys0 19:34:45 SyntaxError: unexpected EOF while parsing 19:34:48 ~exec print type(sys) 19:34:53 hmm 19:34:58 ~exec print type(type) 19:34:59 ~exec exec "def protected(f): try:\n return f()\n\except:\n pass\n\nself.protected = protected" 19:34:59 SyntaxError: invalid syntax 19:35:26 ~exec sys.stdout(type(type)) 19:35:27 19:35:39 print doesn't work 19:36:11 ~exec sys.exit() 19:36:24 do callbacks run in threads or just do_exec's 19:36:32 oerjan: neither 19:36:38 callbacks run in the main thread 19:36:49 ~exec sys.stdout("hello") 19:36:50 hello 19:37:12 eh, so do_exec's don't run in threads either? 19:37:18 ~exec sys.stdout(sys.version) 19:37:19 2.4.3 (#1, Oct 25 2006, 21:45:16) 19:37:19 [GCC 4.1.1 (Gentoo 4.1.1)] 19:37:24 do_exec starts a thread 19:37:32 ~exec exec " 19:37:32 SyntaxError: EOL while scanning single-quoted string 19:37:34 erm 19:37:34 that's what i thought. 19:37:43 ~exec exec " 19:37:44 SyntaxError: EOL while scanning single-quoted string 19:37:46 ~exec exec " 19:37:51 SyntaxError: EOL while scanning single-quoted string 19:38:06 ~exec sys.stdout(sys.path) 19:38:09 so protected should do so as well, otherwise a repl based on it may lock up the bot. 19:38:11 ['/bot', '/usr/lib/python24.zip', '/usr/lib/python2.4', '/usr/lib/python2.4/plat-linux2', '/usr/lib/python2.4/lib-tk', '/usr/lib/python2.4/lib-dynload', '/usr/lib/python2.4/site-packages', '/usr/lib/python2.4/site-packages/Numeric', '/usr/lib/python2.4/site-packages/dbus'] 19:38:24 ~exec exec "def protected(f):\n try:\n return f()\n except:\n pass\nself.protected=protected" 19:38:38 can you define functions? 19:38:51 (and call them later) 19:38:51 hackishly 19:39:13 ~exec self.protected(lambda: raise "foo") 19:39:14 SyntaxError: invalid syntax 19:39:15 sure, but you need to use exec with strings and \n escapes 19:39:23 bloody hell 19:39:29 ~exec sys.__dict__ 19:39:44 ~exec print sys.__dict__ 19:39:48 :-S 19:39:52 ~~exec sys.stdout(locals()) 19:39:54 ~exec sys.stdout(locals()) 19:39:55 {'message': ':lament!n=lament@S010600110999ad06.vc.shawcable.net PRIVMSG #esoteric :~exec sys.stdout(locals())', 'r': <_sre.SRE_Match object at 0xb7c4a0f8>, 'command': 'sys.stdout(locals())', 'self': <__main__.IRCbot instance at 0xb7c4b14c>} 19:40:25 ~exec sys.stdout(self.__dict__) 19:40:25 {'commands_running_lock': , 'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'commands_running': [('sys.stdout(self.__dict__)', 1172518674.4520161, ({'thread_info': , 'exec_global_tracer': , 'pprint': , 're 19:40:26 ': , 'SysWrapper': , 'exec_local_tracer': , '__doc__': None, 'math': , 'IRCbot': , 'args': {'ident': 'bsmnt', 'realname': 'bsmntbombdood bot', 'chan 19:40:26 ': '#esoteric', 'nick': 'bsmnt_bot', 'host': '85.188.1.26', 'exec_chans': ['#esoteric', '#baadf00d'], 'owner': 'bsmntbombdood!\\S*gavin@\\S*'}, '__builtins__': , '__file__': '/bot/ircbot.py', 'inspect': , 'IRCFileWrapper': , 'sys': baad idea 19:40:46 -!- goban has quit (Connection timed out). 19:40:49 although that shouldn't have flooded 19:41:21 -!- goban has joined. 19:41:29 there may be something about long lines and flooding 19:42:01 yeah 19:42:03 ~exec print "a" 19:42:04 ~exec self.owner = 'lament!\\S*lament@\\S*' 19:42:24 ~exec sys.stdout(self.owner) 19:42:25 lament!\S*lament@\S* 19:42:28 worked :) 19:42:32 lament: won't do anything 19:42:36 you rascal you 19:42:59 why not? 19:43:03 regexes are generated when the bot is initialized 19:43:07 not dynamically 19:43:19 and self.owner is never looked up again? 19:43:20 anyway, you can do everything from ~exec 19:43:25 lament: never 19:43:32 sounds...useful 19:43:50 read the codez 19:44:30 ~exec open('lament', 'w').write('hello') 19:44:31 IOError: [Errno 13] Permission denied: 'lament' 19:45:10 no write access anywhere 19:45:16 exce[t 19:45:26 ~exec sys.stdout(os.listdir(".")) 19:45:27 ['bin', 'bot', 'etc', 'lib', 'usr'] 19:45:31 ~exec sys.stdout(os.listdir("/bot")) 19:45:32 ['betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'start.sh', 'better.sh', 'ircbot.py'] 19:45:42 /bot/test.pickle 19:45:46 is writable 19:45:55 mm 19:47:32 ~exec os.remove('/bot/test.pickle') and os.mkdir('/bot/test.pickle') and open('/bot/test.pickle/lament', 'w').write('hello') 19:47:33 OSError: [Errno 13] Permission denied: '/bot/test.pickle' 19:48:22 that's not immensely clever. 19:48:41 well, now nothing is writable. 19:49:00 heh 19:49:12 oerjan: shhh, that's only until we get root 19:49:19 ~exec sys.stdout=0 19:49:24 ~exec sys.stderr=0 19:49:33 ~exec del sys 19:49:34 NameError: name 'sys' is not defined 19:49:36 hehehe 19:49:39 ! 19:49:42 Huh? 19:49:51 SimonRC: that will only effect it for the current exec 19:49:54 -!- NK` has changed nick to NK`divx. 19:49:56 bah 19:51:37 i r clevar! 19:55:19 ~exec sys.stdout(os.popen('ls').read()) 19:56:06 ls isn't in the chroot 19:56:10 ~exec sys.stdout(sys.__dict__) 19:56:11 {'_SysWrapper__sys': , 'stderr': <__main__.IRCFileWrapper instance at 0xb7c2f62c>, 'stdout': <__main__.IRCFileWrapper instance at 0xb7c2f5ec>} 19:56:15 hmm 19:57:00 ~exec [i.clear() for i in sys.__dict__] 19:57:01 AttributeError: 'str' object has no attribute 'clear' 19:57:12 clear? 19:57:17 ~exec [i.__dict__.clear() for i in sys.__dict__] 19:57:18 AttributeError: 'str' object has no attribute '__dict__' 19:57:23 sigh 19:57:31 ~exec sys.__dict__.clear() 19:57:34 you can't do anything to sys 19:57:35 -!- bsmnt_bot has quit (Remote closed the connection). 19:57:38 -!- bsmnt_bot has joined. 19:57:38 it gets replaced 19:57:49 * SimonRC tries it again 19:57:50 ~exec sys.__dict__.clear() 19:58:02 hmm, didn't quit this time 19:58:09 -!- bsmnt_bot has quit (Remote closed the connection). 19:58:11 -!- bsmnt_bot has joined. 19:58:12 interesting 19:58:15 I know 19:58:17 oh, now it did 19:58:35 -!- goban has quit (Connection timed out). 19:58:42 -!- goban has joined. 19:59:02 there's a method, __getattr__, that gets called when a attribute on a object that's not there is looked up 19:59:32 if gettattr gets an attribute from it's self that isn't there, it recurses forever 19:59:46 heh 20:00:00 hmm http://www.angryfacts.com/ 20:01:01 ok fixed 20:01:39 and back to class i go 20:04:24 -!- crathman has quit ("Chatzilla 0.9.77 [Firefox 2.0.0.2/2007021917]"). 20:36:28 -!- ShadowHntr has joined. 21:07:17 -!- goban has quit (Read error: 104 (Connection reset by peer)). 21:07:43 -!- goban has joined. 21:17:53 -!- UpTheDownstair has changed nick to nazgjunk. 21:26:59 -!- goban has quit (Connection reset by peer). 21:27:02 -!- goban has joined. 21:45:07 -!- goban has quit (Remote closed the connection). 21:45:17 -!- goban has joined. 21:52:36 -!- ShadowHntr has quit (Client Quit). 21:52:37 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht"). 22:03:27 -!- sebbu has joined. 22:07:56 -!- goban has quit (Connection reset by peer). 22:08:01 -!- goban has joined. 22:16:59 -!- goban has quit (Operation timed out). 22:22:22 -!- sebbu2 has quit (Connection timed out). 22:27:55 -!- goban has joined. 22:30:02 ~exec self.protected(lambda: 1/0) 22:30:02 AttributeError: IRCbot instance has no attribute 'protected' 22:30:27 ~exec exec "def protected(f):\n try:\n return f()\n except:\n pass\nself.protected=protected" 22:30:33 ~exec self.protected(lambda: 1/0) 22:30:41 fun 23:01:56 -!- digital_me has joined. 23:02:05 ~exec print "I wanna play too :<" 23:03:09 * bsmntbombdood needs to fix print 23:04:33 oh yeah 23:05:02 ~exec sys.stdout("Does this work?") 23:05:03 Does this work? 23:05:08 :DDDDD 23:05:10 yayayay! 23:05:23 ~exec sys.stdout([i+1 for i in range(3)]) 23:05:24 [1, 2, 3] 23:05:39 ~exec sys.stdout((i for i in range 3)) 23:05:40 SyntaxError: invalid syntax 23:05:44 orly 23:05:52 ~exec sys.stdout((1,2,3,4)) 23:05:52 (1, 2, 3, 4) 23:06:00 omg i'm so pro at python 23:06:33 indeed 23:07:27 oh man 23:07:36 #scheme just had a great esolang idea 23:07:49 a lazy non-pure language 23:07:57 ~exec sys.stdout(map((lambda a : a+"."),["a","b","c","d"])) 23:07:58 ['a.', 'b.', 'c.', 'd.'] 23:08:10 what would that mean? 23:08:27 non-pure... non-imperative? 23:08:35 i'm a bit lost on terms from time to time 23:08:48 non-pure is imperative 23:08:54 yeah 23:08:57 i meant that 23:09:06 of course, side effects would have to be _required_ to be sufficiently esoteric 23:09:55 i've been thinking about this esolang where functions have every arithmetic operation defined 23:10:11 and somehow the programmer would be forced to use that feature of course 23:10:29 what? 23:11:03 a lang where functions are _really_ first-class citizens 23:11:22 that is of course already done with math 23:11:34 you mean like all functional languages? 23:11:49 no 23:12:38 hmm 23:12:40 then what? 23:12:44 instance Num a => Num (b -> a) 23:12:52 can you do arithmetic for functions in haskell by default? 23:13:01 for any two functions? 23:13:10 nope, you need the instance i mentioned :) 23:13:22 mmmmmmm yeah :P 23:13:42 you mean like f+g = \x.f(x) + g(x)? 23:14:15 usually it means that 23:14:32 but i wouldn't use the same basic arithmetic operations 23:14:49 more a textual conversion 23:14:56 so it wouldn't make sence like that 23:15:19 (define (f+ f g) (lambda (x) (+ (f x) (g x)))? 23:15:35 -!- sebbu2 has joined. 23:15:39 :D 23:15:51 i find that the same thing you did with haskell 23:16:13 you think too functional, i've already shifted to stacks 23:16:25 much more esoteric when you shuffle stack operations 23:16:34 like zip 23:17:03 "shifted" 23:17:13 i love my vocabulary 23:18:30 hmm, functions are a set of imperative commands that work on a stack, a function is executed, then used a "crazy" operation on, then executed again, repeated until in normal form 23:18:43 functionalbolge 23:18:51 but with a better name 23:19:14 normal form might mean there is no function anymore 23:20:11 now there could be anyther stack, which is full of other functions that wait for their turn, functions can rely on themselves after the crazy operation or can call another function to be executed after they are in normal form or "dead" 23:20:58 the crazy operation in malbolge is boring since it seems so random, i think it should be more logical, but craziers 23:21:00 *-s 23:21:53 hmm... maybe i think about this at school tomorrow 23:22:04 this isn't a good time 23:22:28 -!- nazgjunk has quit (Read error: 54 (Connection reset by peer)). 23:22:41 ~exec fooo 23:22:41 NameError: name 'fooo' is not defined 23:23:02 -!- nazgjunk has joined. 23:23:25 ~exec foo="self.stdout(\"okokokoko\")" 23:23:32 ~exec exec(foo) 23:23:33 NameError: name 'foo' is not defined 23:23:36 :< 23:23:58 ~exec self.dict(foo)="self.stdout(\"okokokoko\")" 23:23:59 SyntaxError: can't assign to function call (, line 1) 23:24:07 ~exec self.dict[foo]="self.stdout(\"okokokoko\")" 23:24:08 AttributeError: IRCbot instance has no attribute 'dict' 23:24:17 ~exec self.__dict__[foo]="self.stdout(\"okokokoko\")" 23:24:18 NameError: name 'foo' is not defined 23:24:24 ~exec self.__dict__["foo"]="self.stdout(\"okokokoko\")" 23:24:29 ~exec exec(foo) 23:24:30 NameError: name 'foo' is not defined 23:24:40 ~exec exec(self.__dict__["foo"]) 23:24:40 AttributeError: IRCbot instance has no attribute 'stdout' 23:24:59 ~exec self.__dict__["foo"]="sys.stdout(\"okokokoko\")" 23:25:04 ~exec exec(self.__dict__["foo"]) 23:25:05 okokokoko 23:25:08 :DDDD 23:25:19 me so proud 23:28:50 ~exec self.__dict__["oko"]=[] 23:29:00 ~exec sys.stdout(self.__dict__["oko"]) 23:29:01 [] 23:29:08 ~exec self.__dict__["oko"].append("sdfg") 23:29:09 ~exec sys.stdout(self.__dict__["oko"]) 23:29:10 ['sdfg'] 23:35:07 -!- sebbu has quit (Read error: 110 (Connection timed out)). 23:37:11 self.__dict__["B"].append("def brainfuck(code):") 23:37:11 self.__dict__["B"].append(" cntr=0") 23:37:11 self.__dict__["B"].append(" i=0") 23:37:11 self.__dict__["B"].append(" memi=0") 23:37:11 self.__dict__["B"].append(" mem=[]") 23:37:11 self.__dict__["B"].append(" for i in range(30000):") 23:37:13 self.__dict__["B"].append(" mem.append(0)") 23:37:15 self.__dict__["B"].append(" i=0") 23:37:17 darn. 23:37:22 execs 23:37:35 ~exec self.__dict__["B"]=[] 23:38:29 ~exec self.__dict__["B"].append("def brainfuck(code):") 23:38:29 ~exec self.__dict__["B"].append(" cntr=0") 23:38:29 ~exec self.__dict__["B"].append(" i=0") 23:38:29 ~exec self.__dict__["B"].append(" memi=0") 23:38:29 ~exec self.__dict__["B"].append(" mem=[]") 23:38:30 ~exec self.__dict__["B"].append(" for i in range(30000):") 23:38:31 ~exec self.__dict__["B"].append(" mem.append(0)") 23:38:34 ~exec self.__dict__["B"].append(" i=0") 23:38:44 ~exec sys.stdout(self.__dict__["B"]) 23:38:45 ['def brainfuck(code):', ' cntr=0', ' i=0', ' memi=0', ' mem=[]', ' for i in range(30000):', ' mem.append(0)', ' i=0'] 23:39:07 ~exec self.__dict__["B"].append(" while i ~exec self.__dict__["B"].append(" if code[i]==\'+\':") 23:39:07 ~exec self.__dict__["B"].append(" mem[memi]+=1") 23:39:07 ~exec self.__dict__["B"].append(" elif code[i]==\'-\':") 23:39:07 ~exec self.__dict__["B"].append(" mem[memi]-=1") 23:39:07 ~exec self.__dict__["B"].append(" elif code[i]==\'>\':") 23:39:09 ~exec self.__dict__["B"].append(" memi+=1") 23:39:11 ~exec self.__dict__["B"].append(" elif code[i]==\'<\':") 23:39:14 ~exec self.__dict__["B"].append(" memi-=1") 23:39:28 ~exec self.__dict__["B"].append(" elif code[i]==\'.\':") 23:39:28 ~exec self.__dict__["B"].append(" sys.stdout(chr(mem[memi]))") 23:39:28 ~exec self.__dict__["B"].append(" #elif code[i]==\',\':") 23:39:28 ~exec self.__dict__["B"].append(" #mem[memi]=input()") 23:39:28 ~exec self.__dict__["B"].append(" elif code[i]==\'[\':") 23:39:28 ~exec self.__dict__["B"].append(" if mem[memi]==0:") 23:39:31 ~exec self.__dict__["B"].append(" i+=1") 23:39:33 ~exec self.__dict__["B"].append(" opens=1") 23:39:35 ~exec sys.stdout(self.__dict__["B"]) 23:39:36 ['def brainfuck(code):', ' cntr=0', ' i=0', ' memi=0', ' mem=[]', ' for i in range(30000):', ' mem.append(0)', ' i=0', ' while i':", ' memi+=1', " elif code[i]=='<':", ' 23:39:36 memi-=1', " elif code[i]=='.':", ' sys.stdout(chr(mem[memi]))', " #elif code[i]==',':", ' #mem[memi]=input()', " elif code[i]=='[':", ' if mem[memi]==0:', ' i+=1', ' opens=1'] 23:39:48 ~exec self.__dict__["B"].append(" while opens!=0:") 23:39:48 ~exec self.__dict__["B"].append(" if code[i]==\'[\':") 23:39:48 ~exec self.__dict__["B"].append(" opens+=1") 23:39:48 ~exec self.__dict__["B"].append(" elif code[i]==\']\':") 23:39:58 hmm 23:40:06 soon either i get kickbanned or the bot dies... 23:40:10 well, let's continue 23:40:11 ~exec self.__dict__["B"].append(" opens-=1") 23:40:11 ~exec self.__dict__["B"].append(" i+=1") 23:40:11 ~exec self.__dict__["B"].append(" i-=1") 23:40:11 ~exec self.__dict__["B"].append(" elif code[i]==\']\':") 23:40:11 ~exec self.__dict__["B"].append(" if mem[memi]!=0:") 23:40:12 ~exec self.__dict__["B"].append(" i-=1") 23:40:23 ~exec self.__dict__["B"].append(" opens=1") 23:40:23 ~exec aelf.__dict__["B"].append(" while opens!=0:") 23:40:23 ~exec self.__dict__["B"].append(" if code[i]==\'[\':") 23:40:23 ~exec self.__dict__["B"].append(" opens-=1") 23:40:23 ~exec self.__dict__["B"].append(" elif code[i]==\']\':") 23:40:24 NameError: name 'aelf' is not defined 23:40:24 ~exec self.__dict__["B"].append(" opens+=1") 23:40:27 ~exec self.__dict__["B"].append(" i-=1") 23:40:29 ~exec self.__dict__["B"].append(" i+=1") 23:40:30 ~exec self.__dict__["B"].append(" i+=1") 23:40:37 ...? aha 23:40:39 lol 23:41:17 ~exec self.__dict__["B"] = reduce(lambda a,b : a+"\n"+b, self.__dict__["B"]) 23:41:36 ~exec brainfuck("+++++++.") 23:41:36 looking for "\n".join ? 23:41:36 NameError: name 'brainfuck' is not defined 23:41:39 :P 23:41:43 i have no idea :DD 23:42:05 can i dump B as a function somehow? 23:42:16 i don't really know how that works, just testing :P 23:42:18 ~exec exec "\n".join(self.B) + "self.brainfuck = brainfuck" 23:42:19 SyntaxError: invalid syntax 23:42:42 oh, yeah, that's a nice syntax 23:42:46 import string? 23:42:49 i dunno 23:43:06 exec 23:43:17 ~exec "\n".join(self.B) + "self.brainfuck = brainfuck" 23:43:18 ? 23:43:30 ~exec brainfuck("+++.") 23:43:31 NameError: name 'brainfuck' is not defined 23:44:01 bsmntbombdood, help me! :D 23:44:18 you have to execute it 23:44:27 with exec() ? 23:44:33 yeah 23:44:38 it's a function, how do i do that? :o 23:44:46 eval 23:45:05 exec 23:45:06 ~exec eval("brainfuck(+++.)") 23:45:07 SyntaxError: invalid syntax 23:45:11 no... 23:45:16 ~exec exec("brainfuck(+++.)") 23:45:17 SyntaxError: invalid syntax 23:45:17 then? 23:45:20 :P 23:45:33 execute the function code 23:45:40 you have a syntax error in it 23:45:48 might be 23:45:51 actually 23:46:03 i just took a random thingie 23:46:41 it works 23:47:05 ~exec exec(self.__dict__["B"]) 23:47:06 SyntaxError: invalid syntax 23:47:18 ~exec eval(self.__dict__["B"]) 23:47:19 SyntaxError: invalid syntax 23:47:28 i see... 23:47:37 might be a copy paste error 23:47:42 :PP 23:47:45 that'd be fun! 23:48:14 the tabs might now work 23:49:02 look in #bsmnt_bot_errors to see where the errors are 23:49:09 good idea 23:49:29 ~exec exec(self.__dict__["B"]) 23:49:29 SyntaxError: invalid syntax 23:52:33 actually 23:52:53 i might've found my problem, now that i actually looked at the spot in the code where the error was 23:54:14 -!- sebbu2 has quit (Client Quit). 23:54:52 -!- bsmnt_bot has quit (Excess Flood). 23:54:56 -!- bsmnt_bot has joined. 23:56:39 maybe i'll make a bit shorter an interpreter...