< 1193702986 0 :RedDak!unknown@unknown.invalid QUIT :Remote closed the connection < 1193705342 0 :Tritonio!n=Tritonio@150.140.227.138 JOIN :#esoteric < 1193705639 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: Any further clues on PEBBLE in PEBBLE? < 1193705657 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: no, i haven't tried today :( sorry < 1193705659 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what?!?! < 1193705664 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: tomorrow, though, i'll do it < 1193705666 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :It's pebbles all the way down! < 1193705670 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: i'm going to write a pebble compiler in pebble < 1193705681 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and vanquish the evil tcl... from my version, at least. < 1193705690 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i mean, the compiler for pebble looks pretty trivial < 1193705700 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but, no string manip in PEBBLE iirc, so a bit harder < 1193705703 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :for some reason i just started downloading 2gb of nigel kennedy >_< < 1193706165 0 :sebbu!unknown@unknown.invalid QUIT :"@+" < 1193706485 0 :pikhq!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1193706628 0 :pikhq!n=pikhq@209.248.125.179 JOIN :#esoteric < 1193707605 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: hmm, what would pebble-in-pebble mean for pfuck? < 1193707610 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm sure there's some profound implication < 1193707873 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1193707885 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :would the universe explode? < 1193707888 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :would it go 50 times faster? < 1193708102 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1193708112 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: IT WOULD ENVELOP AWESOMENESS INTO ITS COMPILED CODE < 1193708173 0 :oerjan!unknown@unknown.invalid QUIT :"Late very good" < 1193708177 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It would merely be amusingly recursive. < 1193708188 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :So, distro: < 1193708196 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pebble.b src/lotsofstuff.pebble < 1193708212 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pebble.b, compiled with PFUCK, running under a C version of PEBBLE, compiled by pebble.b < 1193708216 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :Understand THAT! < 1193708267 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :pebble compiles pebble.bfm. pfuck compiles pebble.b. gcc compiles pebble.c. pebble comipiles pfuck.bfm. pfuck compiles pfuck.b. gcc compiles pfuck.c. < 1193708272 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1193708281 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(bfm? that's pebble, right?) < 1193708292 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(I use the .bfm prefix still) < 1193708298 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :(s/pre/post/) < 1193708302 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok, right, i'll explain, in PEBBLE/tcl and PEBBLE/pebble: < 1193708312 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :PEBBLE/tcl, long time ago, compiles pebble.bfm < 1193708314 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :LATER < 1193708321 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1193708330 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :PEBBLE/tcl, long time ago, compiles pebble.bfm to-C: now it's PEBBLE/pebbleC < 1193708331 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :LATER < 1193708345 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :PEBBLE/pebbleC runs PFUCK, compiles pebble.bfm < 1193708367 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(producing PEBBLE/pebbleBF) < 1193708390 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :of course, since PEBBLE/pebble's output - BF and C - will not always be identical to PEBBLE/tcl < 1193708402 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :there are more iterations of PEBBLE/pebbleC compiling pebble.bfm to-C in "LATER" < 1193708477 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1193708482 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: crazy, no? < 1193708501 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'd consider pebble.bfm to be *another* implementation of PEBBLE; I'd still maintain pebble.tcl. ;) < 1193708507 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And, yeah, that is crazy. < 1193708510 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :of course < 1193708530 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION assumes pebble.bfm, for a first run, at least, would not support optimization, language-specific macros, etc. < 1193708544 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pebble.tcl is needed! < 1193708545 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(For bootstrapping, of course. What do you mean, it may be useful as an implementation? Pff. Surely you jest. pebble.tcl would not come out of my hands originally! My logic is infallable. I do not suffer from NIH-overload.) < 1193708557 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah, i would implement those after though < 1193708640 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm heading off now < 1193708650 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: pebble.bfm - the revolution begins tomorrow! ;) < 1193708675 0 :ehird`!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1193708707 0 :RodgerTheGreat!n=Rodger@wads-5-232-170.resnet.mtu.edu JOIN :#esoteric < 1193708717 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hi everyone < 1193708750 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1193708791 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wants to see how ehird handles the "source" command. < 1193711416 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Someone appears to be suggesting that ais523's 2,3 Turing machine proof is inaccurate. . . < 1193711462 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1193711473 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :link < 1193711547 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh i see on slashdot < 1193711583 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :We of #esoteric should make the news by fixing that. ;p < 1193711599 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what's FOM? < 1193711813 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and what did we fix? < 1193711925 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it's funny that a single mailing list post is enough for slashdot to post < 1193711951 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1193711966 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :I'd need to review the proof quite thouroughly before being sure the mailing list post is at all correct. < 1193712142 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :...as would anyone < 1193712148 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Yeah. < 1193712489 0 :Sgeo!n=Anonymou@ool-18bf68ca.dyn.optonline.net JOIN :#esoteric < 1193712714 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :aww feck, homeworkd < 1193712936 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :homeworkd(1): Assigns homework based on crond scheduling. < 1193713003 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :lold < 1193713028 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i should learn IPA < 1193713107 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(instead of doing my homework) < 1193713159 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :transcription to extended ipa would be a fun speach compression method < 1193715198 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I recently came up with what I think is a fairly robust BF "While x> constant n: do code" construct < 1193715224 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I will use the notation n(stuff) to represent "stuff" being repeated n times < 1193715251 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :x, tmp and flag are variable cells, and zero is initialized to be a constant zero < 1193715301 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :x [ flag [-] n( [x - tmp + ) [ code flag + zero ] n( ] ) tmp [ - x + tmp ] flag ] < 1193715307 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :what do you guys think? < 1193715342 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Clever. < 1193715346 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1193715937 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think it might be possible to do with fewer cells, but 1 cell for x and an overhead of 3 doesn't seem too bad for a reasonably high-level construct < 1193716730 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Is there a good general approach to string generation when you allow temporary space, or do most people do it with genetic algorithms/ brute force/ dynamic programming? < 1193716770 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Define "good". < 1193716777 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :And the amount of temporary space. < 1193716837 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :let's say three cells < 1193716861 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and the emphasis is on a "good, general" approach rather than simply a "good" approach < 1193717146 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :Well, you *could* do what PEBBLE does. . . < 1193717153 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :there needs to be a better algorithm for it < 1193717155 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :pikhq: what's that? < 1193717161 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It ain't terribly good, but it's general. < 1193717185 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I am quite curious < 1193717198 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: It just uses two-cell wrapping implementations of the constants to add and subtract from a cell. . . < 1193717206 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :lame < 1193717213 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the algorithm is very straightforward if you try generating strings from a single cell < 1193717216 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1193717223 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :It doesn't work too badly for a naive algorithm. < 1193717248 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I suppose that'd generate decent output, but clearly far from optimal < 1193717400 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i think i'm going to work on an algorithm < 1193717442 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :go for it, dude < 1193717528 0 :pikhq!unknown@unknown.invalid PRIVMSG #esoteric :If it's good, I may well include it in PEBBLE. < 1193717655 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :maybe try to find numbers that meet a balance between being the most common in the target string and the furthest apart from one another? < 1193718268 0 :Tritonio!unknown@unknown.invalid QUIT :Remote closed the connection < 1193719375 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :I'm looking at this "while". If n=3 then it translates as < 1193719379 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :x tmp flag zero < 1193719379 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :[>>[-][<<->+[<->+[<->+[code>+>]]]]<<[-<+>]>] < 1193719380 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :? < 1193719523 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that looks correct < 1193719548 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :geez, i haven't coded in a while < 1193719560 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i'm getting confused >_< < 1193719635 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :That can't be right. For one thing, it has a ][ in it. < 1193719670 0 :immibis!unknown@unknown.invalid PRIVMSG #esoteric :yes. removing the ][, you get [>>[-]<<[-<+>]>] < 1193719673 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what's the brainfuck for taking [n, 0, 0, ...] to [n, n*2, n*3, ..., n*m, 0, 0 ...]? < 1193719692 0 :immibis!unknown@unknown.invalid PRIVMSG #esoteric :which never executes the code. < 1193719697 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ttm: ah... whoops < 1193719726 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :good catch- you need to move to x after zeroing flag, before you begin the if block < 1193719741 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :bsmnt how confident are you that all values will fit in a byte? < 1193719749 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ttm: perfectly < 1193719762 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :Okay. Let's think then. < 1193719770 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :m is below floor(n/256) < 1193719784 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :*m = floor(n/256) < 1193719855 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :x tmp flag zero < 1193719855 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :[>>[-]<<[->+[<->+[<->+[code>+>]]]]<<[-<+>]>]? < 1193719919 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1193720332 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :Hm. Still can't be right. [>>[-]<<[->+<[->+<[->+<[code>>+>]]]]<<[-<+>]>] is probably getting closer... < 1193720424 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that really depends on what's in code < 1193720484 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :bsmnt is m stored in memory, and are we okay with wiping it out? Or is it constant? < 1193720915 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the two things that must occur in the main [] set with code are that flag is set to "true" (nonzero), and we move to constant zero to break out of all our nested brackets < 1193720937 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :That's clear. < 1193721092 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :What's not entirely clear is how the outermost loop is supposed to match up. We started it at x, and we end it at flag. So we need some code near the start of the outermost loop to resynch the pointer location...and we also need to leave ourselves a way, after we break out of that outer loop, to check on whether we went through it at all. < 1193721402 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that's the purpose of flag < 1193721433 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if we make it to the innermost loop and execute code, flag is set, and we continue the main while loop, and it's reset for the next iteration < 1193721746 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :Yeah...but if we end the main while loop at flag, when we started it at x, then the code will not be acting on the same things unless we add other code to insure the pointer is at the same place in both cases. < 1193721779 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :Whereas if we start the main loop at flag both times, then it won't have the correct value at first unless we add extra code first to set it... < 1193722017 0 :Sgeo!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1193722229 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, I need to sleep. I'll look this over again in the morning, and think about some revisions < 1193722241 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :Good night and good luck. < 1193722255 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :thanks for helping me find my mistakes < 1193722261 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1193723853 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ttm: constant < 1193723899 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and the code is [>+>++>+++<<<-] < 1193723924 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :etc < 1193724020 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :although that would get inneficient when n is small < 1193724642 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :Ah. I was trying to figure the most concise way to do it with variable m. < 1193724720 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it would be cool if there was a way to do it without all the redundant +s < 1193724870 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :Well, if you put m just to the right of where you want the last one to end up, you can do [<[+<]+[>]<-] < 1193724898 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :where does that start? < 1193724908 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :at m. < 1193724958 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :i don't think that works < 1193725206 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :And...you're right. You can do it once, but it won't work right twice let alone n times. < 1193725241 0 :DawnLight!n=DawnLigh@89.1.178.13.dynamic.barak-online.net JOIN :#esoteric < 1193725336 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :/bed < 1193725569 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :It works if you space them out. for m=5 we have >>>>>>>>>>>>>>,[<<+++++[<[+<<]+[>>]<-]<[<<]>>[[<+>-]>>]>-]<<<<.<<.<<.<<.<<. < 1193725982 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :my god < 1193726390 0 :ttm!unknown@unknown.invalid PRIVMSG #esoteric :There should be some really clever concise way to do this without using so much apparatus. But I'm not seeing it right now. < 1193729873 0 :DawnLight!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1193730674 0 :DawnLight!n=DawnLigh@89.1.178.13.dynamic.barak-online.net JOIN :#esoteric < 1193731199 0 :clog!unknown@unknown.invalid QUIT :ended < 1193731200 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1193732462 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :i need a command that will print a certain number of byes from a serial port and quit! < 1193732500 0 :immibis!unknown@unknown.invalid PRIVMSG #esoteric :a command in what language < 1193732537 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :a linux command < 1193732545 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :doh < 1193732583 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :cat works the way it does because files have endings but /dev/ttyS0 doesn't < 1193732611 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :that's also true about inotail and dog doesn't read it at all < 1193732730 0 :immibis!unknown@unknown.invalid PRIVMSG #esoteric :try 'head -cNUMBER_OF_BYTES /dev/ttyS0' < 1193732848 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :immibis: yay! < 1193732892 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1193733152 0 :immibis!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1193738078 0 :jix!n=jix@dyndsl-091-096-033-007.ewe-ip-backbone.de JOIN :#esoteric < 1193740477 0 :AnMaster!n=AnMaster@unaffiliated/anmaster JOIN :#esoteric < 1193744999 0 :RedDak!n=dak@87.18.90.5 JOIN :#esoteric < 1193746928 0 :sekhmet!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1193747125 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :btw, somewhat insane optimizing brainfuck compiler coded in bash: http://rage.kuonet.org/~anmaster/bzr/index.py/get/bashfuck/head/bashfuck < 1193747131 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :there are still a few bugs to fix in it < 1193747156 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :it does have some problems with LostKng.b, some off by one error that I'm trying to find < 1193747195 0 :AnMaster!unknown@unknown.invalid PRIVMSG #esoteric :s/compiler/interpreter < 1193751278 0 :lifthrasiir!unknown@unknown.invalid QUIT :Remote closed the connection < 1193752280 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1193752288 0 :puzzlet!n=puzzlet@147.46.241.160 JOIN :#esoteric < 1193752430 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1193752861 0 :DawnLight!unknown@unknown.invalid QUIT :Read error: 113 (No route to host) < 1193754419 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1193754426 0 :puzzlet!n=puzzlet@147.46.241.160 JOIN :#esoteric < 1193754445 0 :sekhmet!n=pez@adsl-71-150-253-223.dsl.mdsnwi.sbcglobal.net JOIN :#esoteric < 1193756969 0 :ehird`!n=test@user-544158a3.l5.c5.dsl.pol.co.uk JOIN :#esoteric < 1193759817 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :does any known BF interp optimize [+>-+<-] to []? < 1193760240 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :EgoBot prolly < 1193760245 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's a trivial optimization < 1193760276 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"+-" -> "", "><" -> "", actually, many of my bf's would do that too < 1193760309 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1193760312 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :mine is going to do that < 1193760341 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it'll optimize in a loop < 1193760349 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :first it'll see -+ < 1193760355 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so [+><-] < 1193760358 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then it'll see >< < 1193760359 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so [+-] < 1193760362 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then it'll see +-, so [] < 1193760364 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and we're done < 1193760563 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i assume it optimizes any string of + < 1193760564 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :... < 1193760576 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1193760578 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i assume it optimizes any string of +'s and -'s into one with just one of them < 1193760579 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but that's how mine does it < 1193760581 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1193760589 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i have a "modify" instruction < 1193760595 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :+-- is { modify, -1 } < 1193760607 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah i did it that way too < 1193760620 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :fast < 1193761096 0 :RedDak!unknown@unknown.invalid QUIT :Remote closed the connection < 1193761578 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh dear < 1193761580 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://cs.nyu.edu/pipermail/fom/2007-October/012156.html < 1193761583 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :found this on reddit... < 1193761595 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :apparently it's wrong < 1193761596 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but... < 1193762225 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :poor guy < 1193762232 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :indeed < 1193762250 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :people seem to be disagreeing < 1193762282 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's a fundamental added subtlety when you have things like CAs with infinite initial state < 1193762341 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :lool < 1193762346 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :this crappy page on pi is hilarious < 1193762348 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :"*known to be over 5 billion digits long" < 1193762371 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(this is from 1997, and has MIDI background music) < 1193762466 0 :cherez!unknown@unknown.invalid PRIVMSG #esoteric :ACTION chortles his posterior off. < 1193762477 0 :cherez!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: Where's this pi page? < 1193762489 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://members.aol.com/loosetooth/info.html < 1193762499 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :*the equivalent of 180 degrees when measured in radians < 1193762503 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you know i don't think that's coincidential! < 1193762617 0 :cherez!unknown@unknown.invalid PRIVMSG #esoteric :"If pi were just 3, then we wouldn't have circles at all!" < 1193762720 0 :cherez!unknown@unknown.invalid PRIVMSG #esoteric :"At the end of most Macintosh source codes." < 1193762736 0 :cherez!unknown@unknown.invalid PRIVMSG #esoteric :Whenever I port stuff to Mac, I define pi at the end of the file. < 1193762745 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's probably a magic number < 1193762760 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1193762771 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what's the most efficient way of parsing brainfuck [ ... ]s when using instruction structs? < 1193762777 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(i.e. you can't store positions in code in a stack) < 1193762855 0 :DawnLight!n=DawnLigh@89.1.178.13.dynamic.barak-online.net JOIN :#esoteric < 1193763043 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :is it ok if i come here once in a while asking questions that will probably be irrelevant to the channel but which i assume someone here may know the answer for? and they may be dumb questions. and they may be questions for which the answers may be a few pages of reading away from me. so can i do that? < 1193763145 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well everyone here does that, but it would be nice if you were on-topic occasionally :) < 1193763149 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :no, this channel never gets offtopic, try asking something irrelevant and you get banned instantly < 1193763156 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err... what oerjan said. < 1193763182 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :HEY, I LIKE PIE < 1193763195 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :we agree completely, as you can see < 1193763207 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :IN THE SKY < 1193763216 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :NEVERMIIIND THE WINDS < 1193763219 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :we agree completely IN THE SKY < 1193763235 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION just learned that expression < 1193763239 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :did i guess the rest of the song correct? < 1193763256 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: indeed < 1193763257 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :in the ski < 1193763271 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :so i'm gon' ask < 1193763278 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :``sk`sii```ksi < 1193763293 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ``sk`sii```ksi < 1193763298 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> ul ``sk`sii```ksi < 1193763300 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('s', 'k', ('s', 'i')) < 1193763301 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i should rename that. < 1193763303 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not unlambda.. < 1193763314 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or better yet! i should make it unlambda ;) < 1193763319 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> ul `ss < 1193763320 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('s', 's') < 1193763320 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :alas, it was just something i banged on my keyboard < 1193763322 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> ul `s`sk < 1193763323 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('s', ('s', 'k')) < 1193763330 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> ul `k`s`sk < 1193763331 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('k', ('s', ('s', 'k'))) < 1193763349 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> ul ```sii``sii < 1193763350 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> [['i', ('s', 'i', 'i')], ['i', ('s', 'i', 'i')]] < 1193763355 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :That's Not Right < 1193763361 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: tell that to your computer next time you just "bang on your keyboard" and erase all your files. < 1193763390 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :interesting < 1193763410 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> ul ```sii``si.k < 1193763411 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :kkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkkk -> [['i', ('s', 'i', '.k')], ['.k', ('s', 'i', '.k')]] < 1193763422 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :yeah, it just terminates at some point < 1193763434 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :should i make it crash instead? < 1193763450 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :nah < 1193763450 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1193763455 0 :puzzlet!n=puzzlet@147.46.241.160 JOIN :#esoteric < 1193763455 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :make it detect infinite loops < 1193763459 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :DAZ WHUTTI THOUGHT < 1193763461 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as a mad genius to another, i say make it take over the world < 1193763473 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :MWAHAHAHA IT ALREADY DOES THAT! < 1193763475 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :store all previous states, if it returns to a previous state, output "infinite loop, reached [matching state]" < 1193763487 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ski programs are not going to be big enough to make that slow :P < 1193763525 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm, what about making Alabama sink into the ocean? < 1193763537 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's a pretty useless optimization, since they only help with small progs like ```sii``sii, and irc bots never get short programs, it's always something huge. < 1193763538 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :i need a linux command that will take some ascii as stdin and give raw bytes in stdout. for example, i give it 400132 and it gives me three bytes, 40, 01 and 32 < 1193763547 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: oh come on < 1193763549 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: it'll be fun < 1193763553 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kay < 1193763555 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :wait < 1193763595 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :btw. don't use it while i code, i could disable it, but i trust you < 1193763605 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION likes egging ppl on < 1193763621 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hey, that's clever < 1193763627 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :a bf interpreter using mmap < 1193763630 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :to read in code < 1193763701 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :DawnLight: in hex? < 1193763712 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: right < 1193763744 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm, can hexdump work in reverse? < 1193763767 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :does anyone know? < 1193763775 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i mean you can't do a stack, with a struct < 1193763807 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you can if it contains a pointer to the next one < 1193763822 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :right, but that's O(n) bracket matching < 1193763851 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well obviously loops will be implemented as a unit < 1193763859 0 :DawnLight!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i think not < 1193763866 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what do you mean oerjan? < 1193763879 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :by stack-parsing < 1193763881 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i mean like this does http://www.hevanet.com/cristofd/brainfuck/sbi.c < 1193763893 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :uh, i just love python sometimes, i need to reindent every line, because it decided "indentation mixes spaces and tabs" < 1193763898 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :even though it totally doesn't. < 1193763910 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :indentation using both is forbidden in python < 1193763913 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you can either use tabs or spaces < 1193763924 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :errr... orly :) < 1193763932 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :um, you can have a stack of currently open loops being parsed < 1193763954 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that stack could be a linked list < 1193763960 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1193763963 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's what sbi.c does, kind of < 1193763969 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but is it the fastest way? < 1193763991 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm trying to make the parsing very quick in this interp, because the optimization step will be very heavy < 1193764007 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the interpreting part is already compact, so if i can get the parsing fast too... < 1193764011 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then i can concentrate on optimizations < 1193764075 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :interpreting will take too little to notice compared to the optimization even if you *try* to make it slow. < 1193764116 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :of course < 1193764117 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but parsing < 1193764119 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :is pretty big < 1193764231 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay, i'll make the loop checker now < 1193764239 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :got everything reindented :P < 1193764247 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :IDLE can do that for you < 1193764415 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ```sii``sii < 1193764416 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :Infinite loop detected < 1193764439 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :noo < 1193764442 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :make it output where it finds it < 1193764445 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i.e. the frame that it finds to repeat < 1193764446 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1193764451 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1193764451 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it'll be a debugger! < 1193764453 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kay. < 1193764518 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :glah, why isn't there a "return from whole recursion", like in oklotalk :< < 1193764534 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :just return None < 1193764535 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then < 1193764538 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :when you recurse < 1193764544 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if (recurse) == None: return None < 1193764593 0 :sebbu!n=sebbu@ADijon-152-1-8-111.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1193764610 0 :puzzlet!unknown@unknown.invalid QUIT :Remote closed the connection < 1193764617 0 :puzzlet!n=puzzlet@147.46.241.160 JOIN :#esoteric < 1193764645 0 :SEO_DUDE56!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1193764657 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :whoops. < 1193764672 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i just realized that is not a trivial problem < 1193764688 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :given my current implementation, that is < 1193764699 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :XD < 1193764703 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its very simple < 1193764706 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :each reduction step < 1193764710 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :states.append(frame) < 1193764713 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then, each reduction step < 1193764717 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if frame in states: < 1193764734 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :self.say("OMG " + frame + " REPEATS") < 1193764737 0 :DawnLight!unknown@unknown.invalid PART #esoteric :? < 1193764741 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lol < 1193764757 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i do evaluation recursively < 1193764773 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so? < 1193764778 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not trivial in that case, but this won't take long anyway < 1193764784 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :so? :\ < 1193764804 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i did exactly that, and now ```sii``sii evaluates i twice and says it's an infinite loop < 1193764814 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's not trivial, but it's easy < 1193764874 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i mean, it's trivial if my next attemp works, if not, then i'll have to think a bit < 1193764914 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1193764917 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think it's ready < 1193764926 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ```sii``sii < 1193764927 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :Infinite loop detected at [('s', 'i', 'i'), ('s', 'i', 'i')] < 1193764930 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::D < 1193764936 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ``khs < 1193764937 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> h < 1193764975 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think i have a function to make that into an unlambda-like string, wait < 1193764985 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ``kh```sii``sii < 1193764986 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :Infinite loop detected at [('k', 'h'), [['i', ('s', 'i', 'i')], ['i', ('s', 'i', 'i')]]] < 1193764990 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1193764992 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1193764993 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1193764994 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's right < 1193764996 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't :< < 1193764998 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1193765005 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it isn't lazily evaluating < 1193765007 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it is? :\ < 1193765021 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :``kxy should only evaluate x < 1193765035 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :well, not really < 1193765037 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1193765040 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that is how it works < 1193765041 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :its lazy < 1193765044 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is the ski part of unlambda < 1193765053 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :== strict < 1193765062 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but... < 1193765064 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well its not unlambda < 1193765069 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so make it SKI and make it lazy :-) < 1193765081 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so, what IS the most efficient method of matching braces brainfuck? < 1193765085 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i can make k, i'm not making it fully lazy. < 1193765087 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :presumably not looping through teh program < 1193765117 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh, actually, i'm not making even k lazy. < 1193765128 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now that i glanced at my code, and saw i'd have to do something. < 1193765184 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: when you see a [ you start the parser recursively? < 1193765199 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: recursion is bad though :/ < 1193765202 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: in this case < 1193765216 0 :jix!unknown@unknown.invalid QUIT :Nick collision from services. < 1193765226 0 :jix!n=jix@dyndsl-085-016-237-063.ewe-ip-backbone.de JOIN :#esoteric < 1193765235 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :equivalently, you push your current block on the stack, and start an empty one < 1193765253 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's pretty slow in this case though too < 1193765262 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `4 5 < 1193765268 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :..? < 1193765269 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :whut... < 1193765272 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i just wonder, with my really simple struct what the most efficient way is to parse braces < 1193765275 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `45 < 1193765281 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that should return `45 :| < 1193765289 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :this is weird < 1193765390 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't get it... < 1193765459 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ``s`kr``s``si`k.*`ki 4 < 1193765460 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('s', ('k', 'r'), ('s', ('s', 'i', ('k', '.*')), ('k', 'i'))) < 1193765465 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :.. < 1193765485 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> pl ^n`r``$n.*i < 1193765486 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :``s`kr``s``si`k.`k* < 1193765495 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> pl ^n`r``$n*i < 1193765496 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :``s`kr``s``si`k*`ki < 1193765556 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i'm pretty sure that worked in the past... < 1193765567 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1193765567 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> pl ^a$a < 1193765568 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :r. < 1193765570 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :i < 1193765578 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> pl ^a^b$a < 1193765579 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :``s`kki < 1193765582 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :um < 1193765585 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :im pretty sure that's k < 1193765623 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it doesn't optimize, it does the trick on the unlambda page < 1193765638 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> pl ^a^b$b < 1193765639 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :`ki < 1193765663 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> pl `^x`$x$x^x`$x$x < 1193765663 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :```sii``sii < 1193765666 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(gosh that syntax is ugly) < 1193765670 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :pl works, no doubt about it, it's the sk i'm worried about < 1193765705 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :shouldn't `4 5 exponentiate 4^5 :\ < 1193765710 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :... < 1193765712 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1193765712 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1193765715 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :using the representation on the unlambda pge < 1193765715 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it should return `45 < 1193765716 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*page < 1193765721 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err kay. < 1193765731 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk 4 < 1193765732 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('s', ('s', ('k', 's'), 'k'), ('s', ('s', ('k', 's'), 'k'), ('s', ('s', ('k', 's'), 'k'), 'i'))) < 1193765735 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1193765738 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you have them defined < 1193765739 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that is correct < 1193765740 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :as constants < 1193765741 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :but... < 1193765763 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ` ``s`k.i``s``si`k.*`ki 4 < 1193765764 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :****i -> i < 1193765768 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric ::DDDDDDDDDDDDDDDDDDDDDDDDDD < 1193765771 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk * < 1193765772 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> * < 1193765772 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :god i'm an idiot xD < 1193765775 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk x < 1193765776 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> x < 1193765777 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `xx < 1193765778 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('x', 'x') < 1193765779 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ` ``s`k.i``s``si`k.*`ki ` 4 5 < 1193765785 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ` ``s`k.i``s``si`k.*`ki ` 4 3 < 1193765786 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :*********************************************************************************i -> i < 1193765788 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `*`ik < 1193765789 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('*', 'k') < 1193765794 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `45 < 1193765798 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `4 5 < 1193765798 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :kay, it works, i just fail @ unlambda. < 1193765804 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `4 5 < 1193765809 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ` 4 5 < 1193765811 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :wtf < 1193765829 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :4^5 is a big number, i also failed at math :)) < 1193765856 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :if the result is too long, it just produces no output currently < 1193765868 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk `s`4 5 < 1193765876 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :omg, where's my time! it's 19:37 already :< < 1193765883 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders how to do "for i=0 to i=N, ..." in ski < 1193765899 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :use a different representation < 1193765902 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :for that < 1193765971 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :You would think parsing [] really quickly would be simple. :-| < 1193766025 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> ` ``s`k.i``s``si`k.o`k. sk ```s``si`k``s``s``s``si`ki`k`ki`k`ki`s``s`ksk`k`k`kk4 5 < 1193766032 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :whoops. < 1193766035 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> ` ``s`k.i``s``si`k.o`k. sk ```s``si`k``s``s``s``si`ki`k`ki`k`ki`s``s`ksk`k`k`kk6 5 < 1193766054 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> ```s``si`k``s``s``s``si`ki`k`ki`k`ki`s``s`ksk`k`k`kk 6 5 < 1193766059 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ```s``si`k``s``s``s``si`ki`k`ki`k`ki`s``s`ksk`k`k`kk 6 5 < 1193766060 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :lol. < 1193766060 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric : -> ('s', ('s', ('k', 's'), 'k'), ('s', ('s', ('k', 's'), 'k'), ('s', ('s', ('k', 's'), 'k'), ('s', ('s', ('k', 's'), 'k'), ('s', ('s', ('k', 's'), 'k'), ('k', 'i')))))) < 1193766074 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :>>> sk ` ``s`k.i``s``si`k.o`k. ```s``si`k``s``s``s``si`ki`k`ki`k`ki`s``s`ksk`k`k`kk7 5 < 1193766075 0 :ololobot!unknown@unknown.invalid PRIVMSG #esoteric :ooooooi -> . < 1193766085 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :that's... almost correct.. :< < 1193766177 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :oklopol> omg, where's my time! it's 19:37 already :< < 1193766188 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :me thinks you forgot to change to winter time? < 1193766198 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :lol, daylight savings < 1193766278 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :unless finland actually changes on a different day than most of europe < 1193766279 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it's not my birthday yet, but thanks for the hour, best gift i've ever gotten :) < 1193766295 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :or... < 1193766296 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yay < 1193766304 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :it's backwards right? :P < 1193766316 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :o < 1193766319 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(19:44:40) (oklopol) it's backwards right? :P < 1193766319 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :(18:44:50) (oklopol) o < 1193766322 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :success! < 1193766324 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :17:45 here < 1193766336 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ACTION wonders whether to mmap or getc repeatedly < 1193766336 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ACTION does a little dance < 1193766343 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it seems like mmap would be more efficient < 1193766396 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :how would you use it? < 1193766511 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :umm < 1193766512 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :like mmap? < 1193766626 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :how would that help in parsing? < 1193766748 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well < 1193766749 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i just mean < 1193766751 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :for reading in < 1193767434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric : case O_JMP: < 1193767434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric : if ((arg && !tape[tapep]) || (!arg && tape[tapep])) { < 1193767434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric : i = i->arg2; < 1193767434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric : continue; < 1193767434 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric : } < 1193767441 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's clever :-) no more [ and ] instructions < 1193767549 0 :RodgerTheGreat!n=Rodger@wads-5-232-170.resnet.mtu.edu JOIN :#esoteric < 1193767844 0 :SEO_DUDE56!i=Deee@gateway/tor/x-8aa5fac4f34141e8 JOIN :#esoteric < 1193767849 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok, efficient interpreter - check < 1193767851 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :now to write the parser < 1193767852 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1193767876 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :poll: mmap or getchar over and over? < 1193767913 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :mmap sounds nicer. < 1193767931 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's not helpf < 1193767933 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ul < 1193767935 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1193769069 0 :oerjan!unknown@unknown.invalid QUIT :"Dinner from hazard" < 1193769484 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oh well < 1193769489 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you are all very helpful < 1193769691 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1193771962 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :which is more efficient: < 1193771966 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :optimizing after parsing < 1193771970 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :or parsing and optimizing at the same time < 1193772736 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :mmap? < 1193772741 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :you can mmap stdin? < 1193772944 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :um < 1193772952 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: no < 1193772961 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :about the whole turing-completess thing < 1193772964 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :my interpreter takes program file name as first argument < 1193772966 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :^a < 1193772968 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :if we allow "non-repetitive infinite initial conditions" < 1193772980 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :wha? < 1193772983 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i'm pretty sure that makes SMETANA turing-complete as well < 1193772987 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :http://forum.wolframscience.com/showthread.php?s=&threadid=1472 < 1193773050 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it would be a very simple structure, it has a "head" and then a "tail" consisting of identical pieces of code with different numbers (trivially generated by any process) < 1193773060 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :how can you solve the halting problem with an infinite starting condition? < 1193773078 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: "infinite starting condition" means an infinitely big program. You can do a lot of stuff with infinitely big programs. < 1193773087 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :how... < 1193773103 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :lament: you cannot solve the halting problem with an infinitely big program unless you hardcode EVERY SINGLE PROGRAM and if it halts or not < 1193773112 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :... generating that program is equivilant to the halting problem of course < 1193773130 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: right, but the point is that you can :) < 1193773138 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh that's lame < 1193773139 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: and he does say such programs are uncomputable < 1193773153 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no dice if the starting condition is uncomputable < 1193773160 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :right < 1193773170 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :ais's starting conditions in the proof are computable < 1193773173 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :but infinite < 1193773178 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so this guy claims that that's enough < 1193773189 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :but if that's allowed, then SMETANA should be turing-complete < 1193773230 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :you can represent a brainfuck "memory cell" with ~20 lines of smetana < 1193773240 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so with an infinite smetana program, you can represent the entire brainfuck memory tape < 1193773430 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so anyone have comments on my parsing/optimizing order? < 1193773440 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i would think that i should do parsing first, then optimize < 1193773445 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :because i have my nice tokens to play with < 1193773510 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1193773518 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'll flip a coin for mmap vs getchar < 1193773518 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::P < 1193773532 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no me understando < 1193773539 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: for what < 1193773549 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :then again i've never understood mmap < 1193773575 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :well < 1193773579 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i shall mmap the code file < 1193773588 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :mmap just maps N bytes of a file to a pointer < 1193773593 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and lazily reads them out on read < 1193773621 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the major difference, i think, here, is that i need to do a stat on the file before mmaping < 1193773622 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that's it < 1193773629 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but of course getc is more complex < 1193774735 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :we s;; lmpe yjsy vpm[;rc od nryyrt < 1193774744 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :*we all know that complex is better < 1193774829 0 :sebbu2!n=sebbu@ADijon-152-1-111-159.w86-218.abo.wanadoo.fr JOIN :#esoteric < 1193775788 0 :sebbu!unknown@unknown.invalid QUIT :Connection timed out < 1193775789 0 :sebbu2!unknown@unknown.invalid NICK :sebbu < 1193775916 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1193775941 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :changing +-+ to +(1) should be done at optimizing stage right? < 1193775944 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not parsing stage < 1193775950 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(alternatively, just ++ to +(2)) < 1193776391 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyone? < 1193776397 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm thinking because i optimize away e.g. >< < 1193776397 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so: < 1193776400 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :+><+ < 1193776402 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :should be +(2) < 1193776413 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :but it'll be +(1)+(1) if i do ++->+(2) at parse-time < 1193777317 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :after working on this interp for hours < 1193777324 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i'm compiling it for the First. Damn. Time. < 1193777327 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :here comes the bugfixes. < 1193777950 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1193778000 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1193778012 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :all the brainfuck optimizations i can think of just remove redundant code < 1193778018 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :not really speed it up in any way < 1193778024 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(apart from +++++++ -> + stuff) < 1193778031 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :are there any REAL optimizations you can do? < 1193778037 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i currently optimize [-]... < 1193778043 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(and [+] of course) < 1193778049 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(and then [+--], etc) < 1193779337 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :[->>++<<] and everything else of that form can be quite trivially optimized < 1193779410 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :in fact, any loop which has no net effect on the memory pointer and contains no nested loops < 1193779479 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ok i have a brainfuck text generating algorithm but it's pretty sucky < 1193779703 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: didn't you say you have tons of brilliant brainfuck optimization techiniques? < 1193779708 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :asd typoes. < 1193779738 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i've been watching south park for like 5 hours. < 1193779747 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :blah < 1193779750 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :soon < 1193779751 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :code < 1193779754 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :. < 1193779757 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :must < 1193779949 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :+++++[>+++++<-]>[>+>++>+++>++++>+++++<<<<<-]>>>.>+++++.+++++++..+++.<<----.<++++++++.>>>>-.<.+++.------.--------.<<<+. < 1193779959 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that's "Hello, world!" < 1193780013 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :erm, no it's not < 1193780032 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: yes, but compiler suited < 1193780036 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: not for an interp < 1193780037 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :++++++++++++++++++++++++[>+>++>+++>++++>+++++<<<<<-]>>>.>+++++.+++++++..+++.<<----.<++++++++.>>>>-.<.+++.------.--------.<<<+. < 1193780040 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that is < 1193780116 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :whoa, that's better than the hello world on the wiki < 1193780322 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: i see. < 1193780337 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i don't see a difference, really < 1193780337 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: is it? < 1193780349 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: optimizations that take ages to apply = compiler territory < 1193780358 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1193780372 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: i see < 1193780396 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: after all, speed is the goal :) < 1193780478 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :true, but no one cares about a delay that only occurs once < 1193780492 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :think about mandelbrot.b runtime < 1193780501 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :if the parsing+optimizing takes a long time < 1193780507 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then it'll rank, on the whole, badly < 1193780515 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :"rank"? < 1193780526 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :compared to other interps < 1193780528 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :on the top10 of bf-interpreters? < 1193780538 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the official list < 1193780542 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :the official list? < 1193780593 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :what kind of optimizations do you have that would take long to apply, and what's a long time? < 1193780609 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :1. everything non-trivial 2. everything that's slow < 1193780637 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :err... kay < 1193780646 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :now wanna answer at least one of those? < 1193780666 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :human nature is completely subjective < 1193780671 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i cannot explain subjective things objectively < 1193780683 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...you can explain what you meant by a long time. < 1193780692 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ok, let me elaborate < 1193780712 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :an optimization that takes a long time is an optimization where taking in account the time taken to apply it, it slows the interpretation process down on the whole < 1193780723 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :this of course does not matter for compilers - compiling time does not matter < 1193780754 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :...okay, from now on, i'll just say not-orly everytime i don't feel like orlying what you say. < 1193780759 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :anyway, wanna answer the questions? < 1193780775 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :no < 1193780779 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i see < 1193780920 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :what other big programs do people use to test their brainfuck interpreter? < 1193780926 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :right now i'm using mandelbrot.b and LostKng.b < 1193781579 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyone? < 1193784169 0 :RedDak!n=dak@host45-87-dynamic.6-87-r.retail.telecomitalia.it JOIN :#esoteric < 1193784540 0 :ihope!n=ihope@tapthru/resident/ihope JOIN :#esoteric < 1193784797 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :"Leopard is so powerful, it makes Reddit's search function work right." < 1193786449 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I see we are not discussing parser-based esoteric programming languages. This must be rectified. < 1193786461 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :parser-based? < 1193786635 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Yes. Let me wrestle the logs and find it... < 1193786735 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Mmf. ircbrowse.com's search feature seems non-functional. < 1193787077 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Here we go! http://pastebin.ca/679421 < 1193787118 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :ahh yes < 1193787144 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :show me a fibonacci generator and i'll be impressed < 1193787144 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :;) < 1193787166 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Is unary okay? :-P < 1193787183 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :sure < 1193787194 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :then write an unary->something else converter :-) < 1193787202 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :"it's modular" < 1193787207 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'll do the unary first. < 1193787217 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Or maybe decimal would actually be easier. < 1193787231 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :easiest is probably binary < 1193787240 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh, yes. < 1193787259 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Then I guess I need a parser that parses stuff like 101|1000 into stuff like 1000|1101. < 1193787266 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :http://en.wikipedia.org/wiki/L-system#Example_2:_Fibonacci_numbers < 1193787269 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :that will be the simplest < 1193787274 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you can EASILY do that in your language < 1193787289 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Oh, of course. < 1193787296 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it produces fibonacci numbers in unary < 1193787301 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :(B = A, of course) < 1193787313 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :so, wrap an unary->something else converter over that < 1193787313 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and voila < 1193787361 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :ACTION nods < 1193787475 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Halfway done: http://pastebin.ca/755820 < 1193787477 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Except not. < 1193787481 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1193787544 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :I'll finish it later! < 1193787563 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Since I have to go eat and all. < 1193787600 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :bye :) < 1193787605 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :you havent been in here for ages < 1193787607 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :(Also, I forgot the period at the end.) < 1193787609 0 :ihope!unknown@unknown.invalid PRIVMSG #esoteric :Bye. < 1193787676 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric : i'm pretty sure that makes SMETANA turing-complete as well < 1193787717 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :indeed, i discussed that on the esoteric mailing list once upon a time < 1193787725 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :called it SMETANA+1 < 1193787765 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :you'd think turing completeness would be an unambiguous consept < 1193787776 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :oklopol: it is < 1193787784 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :it's just hard to prove :-) < 1193787867 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :hmm < 1193787888 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i wonder what the simplest pattern-matching-and-substitution language is that is TC < 1193787895 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i.e. a mapping of state 1 to state 2 < 1193787898 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ehird`: i mean all these debates arguing over stuff like pointer-size-defined-when-program-starts (c) and initial-conditions-are-infinite-but-created-by-a-non-universal-machine (smetana, the 2,3 tm) < 1193787904 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :and the input to a program is transformed from state 1 to state 2 repeatedly < 1193787924 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :http://esoteric.sange.fi/archive/2001-q3 < 1193787932 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :lament: ^^ < 1193787948 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :the first one is trivially not turing complete, but i'm not sure about the second one. < 1193787958 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i trust ais < 1193787959 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::) < 1193787973 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1193787998 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :later i extended it to something called Moldau, in http://esoteric.sange.fi/archive/2001-q4 < 1193788011 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :ais is quite inactive, i don't have a strong opinion on him < 1193788012 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*them < 1193788056 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :markus is sounds finnish. < 1193788066 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: i'm talking about regular smetana. < 1193788075 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*-is < 1193788088 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :lament: Smetana+1 can be considered simply a notation for your infinite initial pattern < 1193788243 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :i think i'm doZzZering off here -> < 1193788245 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Moldau on the other hand was seriously overkill, as i mentioned already in my initial post < 1193788251 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :*dosing < 1193788255 0 :oklopol!unknown@unknown.invalid PRIVMSG #esoteric :----> < 1193788275 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :with only Goto, it was essentially continuation-passing Prolog < 1193788287 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :anyone? < 1193788293 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :i wonder how minimal you can get it < 1193788300 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric :obviously less minimal than tode (@oklopol ;)) < 1193788431 0 :ehird`!unknown@unknown.invalid PRIVMSG #esoteric ::/