< 1174003866 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(Y (lambda (f) (cons 'bitch (f))) < 1174003927 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1174004019 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1174004043 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that seems a bit too strict. You need lazy evaluation for any conses to actually happen. < 1174004070 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let f = Bitch:f in f < 1174004105 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :or you could do it in reverse: < 1174004175 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174004193 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :10:BITCH:GOTO 10 < 1174004201 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :((Y (lambda (f) (lambda (l) (f (cons 'bitch l))))) '()) < 1174004244 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :RUN < 1174004302 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :sequence_ $ repeat $ bitch < 1174004307 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I don't think a Y combinator is even possible in scheme < 1174004337 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yeah, that might need lazy evaluation too < 1174004371 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok then: < 1174004416 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :SII is simpler anyway < 1174004436 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :((lambda (f l) (f f l)) (lambda (f l) (f f (cons 'bitch l))) '()) < 1174004470 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :((lambda (x) (x x)) (lambda (f) (cons 'bitch (f f))))) < 1174004488 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no, that won't work. < 1174004524 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :? < 1174004535 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :without lazy evaluation, you cannot apply (f f) without another intervening lambda. < 1174004565 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah you can < 1174004569 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :it just doesn't halt < 1174004578 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it never bitches either < 1174004599 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because it doesn't get to that part < 1174004614 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah it does < 1174004634 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :((lambda (f) (cons 'bitch (f f))) (lambda (f) (cons 'bitch (f f)))) < 1174004636 0 :tgwizard!unknown@unknown.invalid QUIT :Remote closed the connection < 1174004665 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :(cons 'bitch ((lambda (f) (cons 'bitch (f f))) (lambda (f) (cons 'bitch (f f))))) < 1174004670 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1174004672 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok it evaluates 'bitch, perhaps. but it never conses. < 1174004736 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :((lambda (x) (x x)) (lambda (f) (bitch) (f f))) < 1174004745 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :that should satisfy all camps :) < 1174004791 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's even tail recursive < 1174004802 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :but not functional < 1174004891 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I guess bitching does have side effects, though < 1174004897 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you bet < 1174004911 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in fact it has nothing _but_ side effects :) < 1174005035 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :((lambda (x) (x x)) (lambda (f) (cons-stream 'bitch (f f))))) < 1174005146 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bah, you got lazy and used a macro ;) < 1174007924 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :dummy variables are no fun < 1174008218 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :that's probably not the right word < 1174008265 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :fix (bitch>>) < 1174008297 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what? < 1174008345 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :your comment made me think about how to remove all dummy variable names from that bitch recursion :) < 1174008398 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :on the downside, it requires an import Control.Monad.Fix < 1174008468 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :what kind of variables were you thinking of? < 1174008504 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :the x in \x.E < 1174008535 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :or \forall x.E < 1174008537 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and so on < 1174008642 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :you mean unused variables? < 1174008700 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in Haskell/ML, you use _ for those. < 1174008745 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :no, x can be used in E < 1174008788 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so it's actually basic lambda calculus abstraction you don't like? :) < 1174008796 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174008804 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :combinatory logic for the win! < 1174008830 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there is also pointfree (pointless) style in Haskell < 1174008841 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :like my fix (bitch>>) above < 1174008897 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and the whole Forth/Joy style of languages < 1174008960 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :ooh, I didn't think about a stack < 1174012446 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :interesting, disjunct types < 1174013408 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1174013482 0 :RodgerTheGreat!n=Rodger@24-236-191-30.dhcp.mrqt.mi.charter.com JOIN :#esoteric < 1174016091 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1174016517 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :'night everyone < 1174016538 0 :RodgerTheGreat!unknown@unknown.invalid QUIT : < 1174017084 0 :GreaseMonkey!n=thematri@222-152-237-32.jetstream.xtra.co.nz JOIN :#esoteric < 1174018111 0 :bsmntbombdood!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1174018896 0 :oerjan!unknown@unknown.invalid QUIT :"Good night" < 1174020201 0 :bsmntbombdood!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1174020395 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1174020482 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what are the input symbols of a turing machine? < 1174020937 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmmm < 1174020960 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :I read that the halting problem is solvable on machines that have finite memory < 1174021026 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :so the number of steps needed before a repition occurs is known < 1174021031 0 :Arrogant!i=Arrogatn@165.orlando-04-05rs.fl.dial-access.att.net JOIN :#esoteric < 1174021150 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :which means it is solvable on real computers < 1174021245 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :if it doesn't halt after 2**(number of bits in memory), it doesn't halt at all < 1174021290 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :2**(number of bits in memory) steps, that is < 1174021519 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :i reckon that turing machines should have more than one tape < 1174022436 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: that would be true if "real computers" performed no IO of any kind. < 1174022518 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1174022520 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :as it is, a simple +[,] stumps every oracle < 1174023288 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :lament: IO is included in the input < 1174023303 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :The halting function is given the program and its input < 1174023562 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :goodnight < 1174024270 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :gnight < 1174024289 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :sleep tight dood, even though there's bombs in your bsmnt < 1174027618 0 :NK`!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1174027819 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1174028827 0 :Arrogant!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1174031999 0 :clog!unknown@unknown.invalid QUIT :ended < 1174032000 0 :clog!unknown@unknown.invalid JOIN :#esoteric < 1174033839 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :!bf-txtgen all your base aare belong to me! < 1174033842 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1174033850 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :!help < 1174033852 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon < 1174033854 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1174033898 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :for guitar players: http://users.adelphia.net/~cygnusx_1/equal_temperament.html < 1174035126 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174035557 0 :helios24!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1174035560 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 helios24: ps < 1174035821 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :!ps d < 1174035824 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 ais523: daemon ul bf < 1174035826 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 ais523: daemon deadfish funge93 < 1174035828 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 GreaseMonkey: ps < 1174035842 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :!ul testing < 1174035851 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :!ul sfda < 1174035854 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :!ul < 1174038280 0 :GreaseMonkey!unknown@unknown.invalid PRIVMSG #esoteric :gtg, gnight < 1174038316 0 :GreaseMonkey!unknown@unknown.invalid QUIT :"gnight" < 1174040299 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1174040326 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174040616 0 :jix__!n=jix@195.37.106.60 JOIN :#esoteric < 1174040776 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174041342 0 :UpTheDownstair!unknown@unknown.invalid QUIT :Connection reset by peer < 1174041517 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1174042394 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174043082 0 :nazgjunk!unknown@unknown.invalid QUIT :"Leaving" < 1174044298 0 :jix__!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1174044395 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174044478 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174044716 0 :UpTheDownstair!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1174044776 0 :nazgjunk!unknown@unknown.invalid QUIT :Connection reset by peer < 1174045391 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174048328 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174048342 0 :UpTheDownstair!unknown@unknown.invalid QUIT :Client Quit < 1174048749 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 145 (Connection timed out) < 1174048873 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174050172 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1174051050 0 :jix__!n=jix@dyndsl-091-096-045-130.ewe-ip-backbone.de JOIN :#esoteric < 1174053346 0 :jix__!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1174054138 0 :helios24!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1174054154 0 :fizzie!unknown@unknown.invalid QUIT :Read error: 60 (Operation timed out) < 1174054293 0 :helios24!i=helios@item.n1.helzilla.de JOIN :#esoteric < 1174054410 0 :fizzie!n=fis@sesefras.zem.fi JOIN :#esoteric < 1174056069 0 :ais523!n=chatzill@chillingi.eee.bham.ac.uk JOIN :#esoteric < 1174056096 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~bf ,[.,]!Is this still working? < 1174056169 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=?\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" < 1174056183 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\nsys.stdout(o)\nself. register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" < 1174056186 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :bsmnt_bot needs a better persistence system. < 1174056190 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec exec(self.bf3+self.bf4) < 1174056191 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :SyntaxError: invalid syntax < 1174056193 0 :nazgjunk!unknown@unknown.invalid PRIVMSG #esoteric :o.O < 1174056221 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :damn, something must have gone wrong with my copy-paste < 1174056229 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ACTION gives up on SWI-prolog < 1174056236 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you program in Prolog? < 1174056242 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i wanted to try < 1174056253 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've written a few simple Prolog programs somewhere < 1174056260 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :never got to run them though, I don't have an interpreter < 1174056313 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" < 1174056314 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :06:45:54 ~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" < 1174056323 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :umm... < 1174056340 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.bf3="def bfarg(x,y):\n p=y.group(2)\n a=y.group(3)+unichr(0)\n o=''\n p=p+'!'\n t=[0]*30000\n i=0\n l=0\n while p[i]!='!':\n if p[i]=='[' and t[l]==0:\n c=1\n while c>0:\n i=i+1\n if p[i]=='[': c=c+1\n if p[i]==']': c=c-1\n if p[i]==']' and t[l]!=0:\n c=1\n while c>0:\n i=i-1\n if p[i]==']': c=c+1\n if p[i]=='[': c=c-1\n" < 1174056351 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.bf4=" if p[i]=='+': t[l]=t[l]+1\n if p[i]=='-': t[l]=t[l]-1\n if p[i]=='<': l=l-1\n if p[i]=='>': l=l+1\n if p[i]=='.': o=o+unichr(t[l])\n if p[i]==',':\n t[l]=ord(a[0])\n a=a[1:]\n i=i+1\n sys.stdout(o)\nself.register_raw(r'\S+ PRIVMSG (\S+) :~bf ([^!]*)!?(.*)',bfarg)" < 1174056357 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~exec exec(self.bf3+self.bf4) < 1174056370 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~bf ,[.,]!Hopefully this works now. < 1174056370 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :Hopefully this works now. < 1174056372 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i thought SWI prolog should be so simple. But i have now spend more time than i want to try and make it work properly with gvim as external editor. < 1174056379 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*spent < 1174056402 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :is it the language that's the problem, or the development environment < 1174056408 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/$/?/ < 1174056449 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the environment. i end up being infuriated by a bug, and then even more because their bug tracking system wants me to log in and _they_ select my password. < 1174056480 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I tried to write my own Prolog interpreter once, but that was when all my programs were in VBA for Excel < 1174056483 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :naturally, I failed < 1174056505 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :nowadays I mostly use C, unless I'm using an esolang (often a better choice!) or am forced to use Java < 1174056511 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it is possible in theory :) < 1174056567 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ul (Is this still working too?)S < 1174056568 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Is this still working too? < 1174056590 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :EgoBot does have some useful persistence. < 1174056615 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the thing that's surprising me is that the daemon hasn't crashed yet, considering it's written in BF and has no error checking < 1174056627 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and that people keep insisting on feeding it illegal programs < 1174056656 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the persistence of the deadfish daemon is less surprising < 1174056801 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon bct bf http://www.bf-hacks.org/hacks/bct.b < 1174056849 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bct 111001010011110 < 1174056853 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!bct 1110111 < 1174056863 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1110111 < 1174056888 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!kill 3 < 1174056916 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :uh oh, maybe I shuldn't feed it programs without checking what they do first < 1174056918 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!pd < 1174056920 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps < 1174056938 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 ais523: ps < 1174056946 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps d < 1174056950 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 ais523: daemon ul bf < 1174056952 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 ais523: daemon deadfish funge93 < 1174056953 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it would be nice if bsmntbombdood would make at least one directory writable. Then we could place nice scripts there. < 1174056954 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 ais523: ps < 1174056978 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the process must have ended naturally before I could kill it < 1174056994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but yes, oerjan, I agree that a persistent-daemon directory would be nice < 1174057003 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so we could store interpreters in it < 1174057053 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've found myself rather wanting a Thutu interpreter here so I could write esolangs in it. BCT is easy: < 1174057111 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric : /^0.*?!./$1/ < 1174057131 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :~exec list_dir("/") < 1174057132 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :NameError: name 'list_dir' is not defined < 1174057242 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, BCT is less easy through an IRC client when you can't think sensibly about what you're doing < 1174057304 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hey, self-modifying BCT looks interesting < 1174057347 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :0 deletes at the left, 1x inserts at the right, and the instruction pointer cycles along the program < 1174057355 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(os.listdir("/")) < 1174057355 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['bin', 'bot', 'etc', 'lib', 'usr'] < 1174057366 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(os.listdir("/bot")) < 1174057366 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['betterbot.py', 'test.pickle', 'foo.py~', 'ski_repl.py', 'foo.py', 'ircbot.py~', 'start.sh', 'better.sh', 'ircbot.py'] < 1174057411 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :~exec sys.stdout(os.listdir("/lib")) < 1174057411 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :['libm.so.6', 'libreadline.so.5', 'libacl.so.1', 'libdl-2.4.so', 'libresolv.so.2', 'libutil.so.1', 'libncurses.so.5', 'libattr.so.1', 'libcrypt.so.1', 'ld-linux.so.2', 'libdl.so.2', 'libpthread.so.0', 'libpam_misc.so.0', 'libpam.so.0', 'libc.so.6', 'librt.so.1'] < 1174057486 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :might be too simple to be turing complete < 1174057504 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it's not obviously not TC < 1174057525 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :let's see. Any 00 will force synchronization < 1174057605 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :wait, exactly how do you mean < 1174057619 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there's a description on the page linked from the wiki < 1174057647 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the instruction pointer takes the command after the current one, looping back to the start when it reaches the end < 1174057664 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and the commands operate on the program itself. Apart from that, it's just BCT < 1174057692 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(The 'start' is the first non-deleted command. So the logic of self-modifying BCT is more like Muriel than a tag system.) < 1174057698 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174057731 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :The problem seems to be that the number of 0s has to be kept quite low, or they'll end up demolishing the program < 1174057738 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but obviously you can't have nothing but 1s < 1174057834 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :So essentially you have a cycle with two pointers in it, one data and one instruction < 1174057890 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's it. And they both increase and cycle through. Wow, it's like a cross between tag systems, Muriel, and Malbolge < 1174057904 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(more like Dis, actually, as there isn't encryption confusing the issue too) < 1174057916 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the example seems buggy from step 4 to 5 < 1174057927 0 :UpTheDownstair!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1174057956 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I agree, there should be an extra 1 at the end < 1174057994 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm, what happens if the modified data is inside the current instruction? < 1174057995 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174058031 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm not sure if that can happen. A 0 can delete itself, but then you just go onto the next instruction, and a command can't add inside itself < 1174058065 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :why not? There could be 0...*1 < 1174058070 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I just noticed that < 1174058090 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in that case, presumably you go on to the command after the 0 at the start, with an extra 0 at the end < 1174058133 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :and then what about 0...*0 < 1174058152 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :ok it's obvious what it should do < 1174058227 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :there is a problem with the obvious linked list implementation though < 1174058279 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :if you are not careful, you will end up with the instruction pointer at a deleted node. < 1174058306 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :no matter which order you choose for the operations < 1174058306 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'm writing it in Thutu at the moment, which has problems of its own < 1174058324 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(Unfortunately, Thutu is 'the obvious implementation' for just about everything for me at the moment) < 1174058769 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 110 (Connection timed out) < 1174059825 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm, another subtlety: < 1174059861 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :with ...1x, does execution continue before or after the added x? < 1174059882 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I've just written an interpreter, so I'll check < 1174059909 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :before the way I've written it < 1174059933 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/raw/397461 < 1174060139 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :from my experiments so far, it seems that if the program contains any 0s the density of 0s increases until they end up swamping the program < 1174060490 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :If 1s and 0s are distributed randomly, with a proportion p of 0s, then there's a chance p(1-p) of deleting a 1, a chance p^2 of deleting a 0, a chance (1-p)^2 of adding a 1, a chance p(1-p) of adding a 0 < 1174060554 0 :RodgerTheGreat!n=Rodger@24-236-191-30.dhcp.mrqt.mi.charter.com JOIN :#esoteric < 1174060568 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :howdy, everybody < 1174060582 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :from that description one would expect the proportion to stay constant. < 1174060585 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :hello, RogerTheGreat! We were discussing self-modifying Bitwise Cyclic Tag < 1174060597 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I know, there's something slightly stranger going on < 1174060599 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ooh, neat! < 1174060613 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :glad I showed up, then < 1174060663 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :starting with 1111111110, the number of 0s grows gradually, with the 0s getting clumpier and clumpier, until the whole thing collapses < 1174060759 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :aha! Consider the number of 1s between consecutive 0s < 1174060780 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if it's odd, then it adds a string half that length to the end of the input < 1174060794 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if it's even, it ends up combining with the next string < 1174060821 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so if there's even one odd string, all the strings before it in the program will combine to it < 1174060858 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, wait; my argument doesn't work due to the 0s changing the length of the initial string < 1174060885 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but the point is that newly-generated strings of 1s tend to be shorter than the strings of 1s that generated them < 1174060905 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so the 1s-in-a-row count tends to decrease, which is what causes the programs to tend to terminate < 1174060959 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :does this imply that a bitwise cyclic tag system must halt? < 1174060979 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, BCT is turing-complete. It's self-modifying BCT that I was talking about < 1174060985 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1174060987 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :nvm < 1174061131 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION rifles through the logs < 1174061373 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174061388 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :hm... < 1174061399 0 :UpTheDownstair!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1174061687 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :alright, I think I have a better handle on the topic now < 1174061710 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm... I wonder what I should write an implementation in? < 1174062078 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :standard BCT could probably be expressed very concisely in BASIC using strings, with the minor caveat that most BASIC interpreters have arbitrary string length limitations < 1174062092 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it's hard to dynamically allocate storage in BASIC. <:| < 1174062141 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :there was a pragma in the version of BASIC I used that allowed for dynamic arrays, and it had a REDIM command to resize them < 1174062281 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :neat- what was the implementation called? < 1174062297 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :QBASIC, if I remember. It was bundled with some versions of DOS < 1174062308 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ah, yes- QBASIC < 1174062317 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Perl should be fairly compact, even more so if you write it directly rather than compile to it ;) < 1174062336 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I've used it quite a bit, although I was never aware of REDIM < 1174062346 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: more readable too without the compilation, and also more efficient < 1174062364 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'd say my favorite BASIC implementations are DarkBASIC and Cbaspad for PalmOS < 1174062456 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :what, not BFBASIC? < 1174062520 0 :nazgjunk!unknown@unknown.invalid QUIT :Success < 1174062551 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Calamari's opus is truly an achievement, but it isn't particularly handy when I find myself without a Java runtime environment < 1174062637 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and believe me, Cbaspad is an esoteric language in it's own right. It's the only BASIC interpreter I've found for palmOS that offers peek() poke and call(), making inline ASM possible < 1174062659 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :not to mention a number of additional low-level hardware access and I/O functions < 1174062700 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that was possible in QBASIC too IIRC. It had a CALL ABSOLUTE that would jump to a particular location in memory, and you could find where in memory a variable was stored < 1174062772 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes, it's a standard feature on most BASIC implementations from the '80s and earlier < 1174062815 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174062875 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hi, nazgjunk < 1174062884 0 :jix__!n=jix@dyndsl-091-096-045-130.ewe-ip-backbone.de JOIN :#esoteric < 1174062995 0 :jix__!unknown@unknown.invalid NICK :jix < 1174063081 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174063217 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hello jix, UpTheDownstair < 1174063230 0 :jix!unknown@unknown.invalid PRIVMSG #esoteric :hello RodgerTheGreat < 1174063268 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~bf ,[.,]!Hello everyone < 1174063268 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :Hello everyone < 1174063312 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1174063568 0 :nazgjunk!unknown@unknown.invalid QUIT :Connection reset by peer < 1174063932 0 :UpTheDownstair!unknown@unknown.invalid QUIT :Connection reset by peer < 1174064269 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174064307 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1174064419 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION has just written a Dupdog interpreter < 1174064470 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/raw/397555 < 1174064499 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I don't have any Dupdog programs to test it on, though < 1174064764 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :wow. I can see the essential features necessary for computation, but that would be tricky as hell to program with. < 1174064795 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I can't even figure out "Hello, world!". < 1174064805 0 :oerjan!unknown@unknown.invalid QUIT :"My brain is toast" < 1174064806 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :unfortunately, I don't see any way to do input, so I don't think cat is possible either. :S < 1174064858 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :~ and ! provide a facility for looping, and Mfit's ? seems to allow for branching < 1174064882 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :...in an extremely painful and weird way < 1174064929 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, it doesn't, so the language can't be TC. The problem is that the only way to increase the program's length is by doubling it, so a nonterminating program is always odd for Mfit and even for Shanty < 1174064943 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, I'm wrong: Mfit can double it too < 1174064955 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it would be a lot easier if instructions for each interpreter could act as NOPs for the other... < 1174064974 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :...or if there were any NOPs at all < 1174064993 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :as it stands, it seems like it'd be very difficult to manipulate program length enough to generate useful output < 1174065025 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1174065047 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :is the program length mod 255ed before it's converted to ASCII? < 1174065056 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :(when you're doing output) < 1174065060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :if the program length is odd for Mfit, then ??...?? is a NOP < 1174065070 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :RogerTheGreat: I don't know. It isn't with my interpreter < 1174065087 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(I just pass the length to chr() and see what happens.) < 1174065095 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :You get something like this: < 1174065095 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1174065113 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :~bf +++++++++++++++++[->+++++++++++++++++<]>. < 1174065114 0 :bsmnt_bot!unknown@unknown.invalid QUIT :Remote closed the connection < 1174065150 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wait, why did the bot just crash when I did that? Outputting 17*17 can't be that hard, surely? < 1174065166 0 :nazgjunk!unknown@unknown.invalid PRIVMSG #esoteric ::/ < 1174065166 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it might be easier to grow the program to fit into a character you needed by modding than to reduce it *and* increase it to generate strings < 1174065192 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :would get round the problem of output being impossible in sufficiently complex programs too < 1174065210 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :although, if we have a NOP, we can arbitrarily shorten the program whenever we want to < 1174065229 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :perhaps both of these techniques can be combined to achieve output < 1174065260 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :A sufficiently complex program needs a sufficiently large number of characters to represent it < 1174065265 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1174065286 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and so can't do output except right at the end, and even then only a limited amount of output < 1174065286 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I get what you meant about output in complex programs < 1174065303 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so the language isn't BF-complete or even Underload-complete, at least < 1174065319 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but it might still be Turing-complete, because that doesn't depend on I/O < 1174065334 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :thus, I would suspect that modding of program length is the intent < 1174065353 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm... wait.. < 1174065359 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :"...Because dupdog is only capable of storing a single value (the source code itself) in memory at a time, which may correspond to a finite set of 256 states..." < 1174065374 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that implies that a program must have <= 255 characters. < 1174065377 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :bollocks < 1174065390 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I think that line at the bottom is probably wrong < 1174065409 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174065421 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :let's deal without the arbitrary limit, and argue that as ASCII is a 7-bit code, it repeats every 128 characters. Then at least we might be able to get somewhere < 1174065433 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ok < 1174065488 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION updates their interpreter accordingly < 1174065488 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and if we allow for modding, the program length can be any number- an infinite state automaton. I'm fairly certain that one-register turing machines exist, so turing completeness *may* be possible < 1174065671 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :alright, so we know that we can halt at any time by having a character other than ! or ? at an odd space in the initial source code. < 1174065672 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :updated interpreter: http://pastebin.ca/raw/397577 < 1174065686 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yes, we even get a nice error number as output < 1174065710 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think it's acceptable to generate some junk output as a consequence of halting < 1174065732 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it's probably easier than making a program that ends by eating itself completely < 1174065758 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I don't even think that's possible without generating more output < 1174065759 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :in theory the program could be reversed, and maybe a bit of duplication, so a non-command character won't necessarily halt wherever you put it < 1174065778 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :???????? ends without output < 1174065784 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(it's two nested NOPs) < 1174065791 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oh- I see < 1174065802 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I was forgetting the consequences of reversing the source... < 1174065821 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and ~ might not end, because it might not be a ~ by the time you reach it < 1174065869 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I get the sense that this will probably require a bit of malbolge-esque code buffering to ensure commands do what you expect them to < 1174065982 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :unfortunately, 128 is divisible by 4, so some duplication's needed to print characters with both odd and even ASCII codes < 1174065986 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :s/4/2/ < 1174066028 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :wrapping a code-reverse in an Mfit ? seems like a way to do some primitive branching, but it's necessary to make sure that you don't leave any ~'s for Shanty to encounter... < 1174066041 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :at least, no time soon < 1174066051 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I guess that would allow for a conditional halt, at least < 1174066080 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :One of the more fundamental parts of the program state is whether Mfit or Shanty is seeing the even-length programs < 1174066108 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :In fact, it sort of seems more sensible to consider two-character commands than one-character commands < 1174066116 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1174066151 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :we can look at it this way- the two ways we can manipulate the program size, "s" are to subtract one or to multiply s by two < 1174066162 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1174066177 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :every time we muliply s by two, we are assured it is even < 1174066197 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if the program is even for mfit, it will be odd for shanty < 1174066204 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and vice versa < 1174066205 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Yes. To think about it another way, the program+interpreter parity stays the same unless the odd-length interpreter duplicates < 1174066216 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1174066258 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :although, I was wrong- we can only either do s-1 or (s*2)-1 < 1174066258 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Another point: we have to duplicate or reverse the program _every time_ Shanty executes, which is every other command < 1174066289 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :thus, we always have an *odd* after a duplicate < 1174066291 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no, ~abc changes to abcabc (see the wiki Talk page) < 1174066292 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :true < 1174066304 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1174066307 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1174066387 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :It's going to be easiest if we just let duplication roam free up to infinity. After all, it doesn't change either end of the program unless the program is very short; it only changes the length < 1174066416 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :true < 1174066461 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if we use both "ends" of the program to store our useful code, they will be preserved through duplication. < 1174066479 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I agree that the ends are what matters < 1174066499 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :so, we can use them as two "branches" that we'll probably need to interleave code between, using reverses as a compact way to NOP < 1174066529 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :reverse and duplicate are both NOPs in a way < 1174066537 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :they just have different effects on the program length < 1174066568 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(Now I'm beginning to see why the language might not be TC; data storage is going to have to be /very/ non-localised) < 1174066609 0 :tgwizard!n=tgwizard@c-a73ee155.178-1-64736c10.cust.bredbandsbolaget.se JOIN :#esoteric < 1174066679 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if we design a program that doesn't fit evenly into 128 or 255, it should be a relatively simple matter of duplicating a specific number of times to get to each desired character, followed by an Mfit non-coding character < 1174066689 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think this will be huge < 1174066711 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :the problem of data being dependent on final program length is a tough one < 1174066724 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :yep. The parity isn't trivial to deal with, but it's workable-around < 1174066761 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :*or* we can just assume it's bigger than we need it to be and pad the center with a bunch of noncoding characters to make it the right sie < 1174066764 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :*size < 1174066807 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :an optimal solution is hard, but an extremely nonoptimal one is much easier < 1174066849 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :since there doesn't seem to be a lot of sourcecode handy, doing it at all seems like enough of an accomplishment < 1174066856 0 :jix!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1174066977 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :so... what's an easy way to find the number of duplications we'll need to get each modulus value? < 1174066994 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :brute-forcing it? < 1174067008 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I guess that works < 1174067026 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :come to think of it, it's easiest just to get a bit higher than needed and NOP your way down < 1174067047 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that's effectively what I'm saying < 1174067072 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :there are two kinds of NOPs- nops the interpreters skip over and nops that are never encountered at all < 1174067090 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :we can use anything as that second kind, and keep them in the creamy nougat center of our program < 1174067154 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :even better, adding 128 junk characters to the middle of the program has no visible effect on anything, until we reach them < 1174067178 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :use mfit's duplicate to make duplicates and either reverse (code continues from the opposite end, nop) or duplicate with shanty < 1174067191 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :then do an mfit output when appropriate < 1174067202 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you need the right interpreter to cause a duplicate according to whether the output character is odd or even < 1174067218 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :so the hello world will look like "codecodecodeJUNKJUNKedocedocedoc" < 1174067227 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :If you're not doing loops, it's actually not too hard to output arbitrary text, just generate the program from the outside in < 1174067236 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :exactly < 1174067243 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that's how I'm thinking < 1174067257 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and all you need to code is the transition from one character to the next < 1174067279 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and at the end, we can encounter the junk as shanty to terminate < 1174067283 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yep < 1174067318 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :In fact, ~!~!~!~ multiplies the source length by 128, so if we don't care about being optimal we can just generate code for each character. < 1174067341 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :We can even use Mfit's ? as a NOP whether the program length is odd or even; just take it into account in all future code < 1174067373 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :OTOH, a 99 bottles of beer program shorter than the song itself would be difficult and/or impossible < 1174067381 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :so we just need to estimate an upper limit to the number of instructions we need to use for initial program length purposes, determine the actual number of flips and dups, generate the code and add padding as necessary < 1174067388 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I agree < 1174067422 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :largely because storing strings seperately from counter data is effectively impossible < 1174067436 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :unless you get unhealthily creative < 1174067452 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'd go further and say storing counter data is incredibly difficult regardless of whether you have strings or not < 1174067458 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :3.141592653589793238462643383279......... < 1174067459 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :like storing it implicitly in the nesting of duplicates of something equally painful < 1174067470 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ais523: haha- true < 1174067518 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :The problem is that we only have effectively 6 states to play with: reversed or not * three possible permulations of ?!~ < 1174067550 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think ultimately your idea of Mfit ? NOPs could lead to a more compact solution, but would drastically increase the complexity of the program < 1174067572 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :the problem is that duplicating, reversing, and permuting are all independent of each other < 1174067587 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hm < 1174067597 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :so the only way you can store data in the program is the /amount of the program/ that was still there last time you duplicated < 1174067666 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oh, jesus- I hadn't thought of that. This makes determining the number of flips and dups to arrive at a value is entirely dependent on the sequence of instructions that came before... < 1174067697 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :you'd have to build it an instruction at a time to get working right, I think. < 1174067721 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :precalculating wouldn't get you very far < 1174067754 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no. But I think I know how I can write a Hello World-program-generating-program now < 1174067759 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :It might be best to write a program to generate this program, to reduce the potential for error < 1174067768 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(i.e. a program in another language that generates Hello World in Dupdog) < 1174067773 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lol- we both arrived at the same conclusion. < 1174067792 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think we're operating on the same wavelength here < 1174067819 0 :ShadowHntr!unknown@unknown.invalid QUIT :"End of line." < 1174067899 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :ACTION sets out to try to write the program < 1174068228 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION cheers ais523 on! < 1174068248 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :there's nothing like the thrill of groundbreaking esolang coding < 1174068265 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :thanks < 1174068475 0 :sebbu!n=sebbu@ADijon-152-1-3-187.w83-194.abo.wanadoo.fr JOIN :#esoteric < 1174068481 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hi, sebbu < 1174068514 0 :sebbu!unknown@unknown.invalid PRIVMSG #esoteric :hi < 1174068574 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ais523 and I have been figuring out how to do something vaguely useful in dupdog (http://www.esolangs.org/wiki/Dupdog) < 1174068615 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1174068622 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :we have a rough method that should create the first hello world in the language < 1174069005 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174070339 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :grr, it isn't working at the moment < 1174070459 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, it's a pretty non-trivial task < 1174070487 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and I have a theory that the resulting program is going to be fucking *huge* < 1174070512 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :you have to work from the inside and outside simultaneously < 1174070548 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and getting the right value means hopping around a lot- rather like doing hello world in BF without - < 1174070555 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :only much worse, naturally < 1174070705 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :average case, I estimate it should take something around 128 instructions to get a value from 0-255 as output. The number of hops could be much greater if your program doesn't try to get an optimal solution < 1174070778 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and all the interdependencies for size make things really tricky < 1174071029 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :Do you think that genetic algorithms might be a good approach for this sort of thing? It worked for malbolge < 1174071050 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no idea. I think that working it out deterministically will probably work better, though < 1174071119 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I was just thinking that since we have a rough idea of how we want the program to "look", we could start the GA software with something pretty close to a correct answer, meaning reasonably rapid results < 1174071135 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I'll give up for the time being; I just realised why the method I was using wouldn't work. I still think it's possible to do it deterministically, though < 1174071149 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :doing things deterministically will probably reap more benefits in terms of future work with the language < 1174071162 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :what was the problem you were encountering? < 1174071187 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :The problem's that you want to end up with a program to print 'ello, World!' after printing the H < 1174071211 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :but that you can't design the program to do that until you know what the H code is like, as it'll have to have a specific structure < 1174071232 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :and you can't design the H code until you know what code you're aiming for... < 1174071276 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :wait, most Dupdog programs don't care if they're duplicated, as long as they end up with the right length < 1174071438 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that is correct- perhaps design each character's code segment to reset the code size to a multiple of some predictable value? < 1174071451 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :how do you do output < 1174071451 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it adds more padding, but then you can build pieces independently < 1174071454 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :that's it, ~!~!~!~ resets the code size to a multiple of 128 < 1174071466 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :lament: output's done when Mfit encounters an unrecognized character < 1174071477 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it outputs a character depending on the length of the program < 1174071481 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lament: the esolang page is here: http://www.esolangs.org/wiki/Dupdog < 1174071499 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oh, okay < 1174071566 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :looks interesting < 1174071576 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :we chose to interpret the spec as saying that we take the program length modulo 128/256 to determine the printed char, so all we care about is that modulus < 1174071597 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :thus, you can have a program of any size and still be capable of output < 1174071662 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it's in the Implemented category < 1174071684 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :is there a ref. implementation? < 1174071691 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :I wrote an implementation just now; however, the category was there before I wrote it. < 1174071715 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Of course, we'll need a new optimizing implementation to have any chance of fitting Hello, World! into memory the way I plan to write it < 1174071776 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and if our interpretation of the spec leads to the first "useful" program, I imagine it will become canonical for exactly that reason < 1174071807 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1174071889 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174071889 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :damn, my latest idea doesn't work either; ~!~!~!~ resets the code size to something that isn't a multiple of 128 because those characters are disappearing all the time < 1174071917 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :damn < 1174071931 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :it does have a fixed value modulo 128, though < 1174071962 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, any reset value works as long as it's the same modulo 128 every time < 1174071989 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :If we only want to print characters with odd ASCII codes, we can just write a really long sequence of ??...?? NOPS and change appropriate characters to output characters < 1174072056 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :something similar can be done with even ASCII codes < 1174072095 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Actually... the best way to think about a half-finished Dupdog program is as a sequence of commands at the start, commands at the end, and a /length/ for the whole thing < 1174072102 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then it might be possible to do it outside-in < 1174072123 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :the specification is pretty bad < 1174072146 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it's not clear whether the current command is counted as part of the source < 1174072155 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lament: a few things are vague, but it's understandable. The talk page helps < 1174072166 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :no for duplicate/reverse, yes for length measurement, as far as I can tell < 1174072392 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lament: we're pretty sure the "computational class" description is incorrect, although we're not certain it's turing-complete < 1174072426 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :we haven't really proven anything yet with regards to arbitrary branching (or an analogue), and data storage is a bitch < 1174073122 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :(was he on crack when he came up with this?) < 1174073139 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :quite possibly < 1174073160 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :If I remember correctly, they were messing around with the bots. < 1174073166 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Someone did something like this: < 1174073168 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I would be fascinated to know the meaning of "mfit" and "shanty" < 1174073191 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dog bf >,[>,]<[.<] < 1174073219 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dup bf >,[>,]<[<]>[.>]<[<]>[.>] < 1174073225 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog Hello, world! < 1174073237 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!eof dog < 1174073239 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ah- that makes sense < 1174073253 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :'cept my coding hasn't worked < 1174073254 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!ps d < 1174073256 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :still doesn't explain the names completely < 1174073261 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :1 ais523: daemon ul bf < 1174073261 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :2 ais523: daemon deadfish funge93 < 1174073261 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :3 ais523: daemon dog bf < 1174073263 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :4 ais523: daemon dup bf < 1174073265 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :5 ais523: ps < 1174073268 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!kill 3 < 1174073269 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 3 killed. < 1174073270 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!kill 4 < 1174073273 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 4 killed. < 1174073283 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :EgoBot is 10=newline, isn't it? < 1174073306 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :so after the source code is duplicated, for the next instruction the length of source code is always EVEN? < 1174073316 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :lament: yes < 1174073319 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174073322 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :okay. < 1174073342 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it might be worthwhile to skim the logs from earlier today < 1174073353 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]+] < 1174073361 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog Hello, world! < 1174073382 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!kill 3 < 1174073383 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 3 killed. < 1174073390 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dog bf +[->,----------[>,-----------]<[+++++++++++.[-]<]++++++++++.[-]+] < 1174073395 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog Hello, world! < 1174073412 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Now what have I done wrong? < 1174073426 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!kill 3 < 1174073429 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 3 killed. < 1174073476 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :bsmntbombdood: bsmnt_bot didn't come back online after last time I tried to give it a BF program < 1174073485 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :(and it wasn't even an infinite loop) < 1174073937 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dog befunge 0>~# :# 5# 5# +# -# _> .# _,$ < 1174073939 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Huh? < 1174073946 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!help < 1174073949 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :help ps kill i eof flush show ls bf_txtgen usertrig daemon undaemon < 1174073952 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :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 < 1174073959 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dog funge93 0>~# :# 5# 5# +# -# _> .# _,$ < 1174073960 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :all i can see so far is that dupdog really likes printing the fourth character. < 1174073975 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog Hello, world! < 1174073989 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon dog < 1174073991 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :10 100 114 119 44 108 101 0 < 1174073993 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 3 killed. < 1174074006 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :o_O < 1174074020 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dog funge93 0>~# :# 5# 5# +# -# _> ,# _,$ < 1174074032 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog Hello, world! < 1174074041 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog Try another line < 1174074043 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :drw,le < 1174074060 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog WTF? < 1174074064 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :nlrhoayT < 1174074080 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!undaemon dog < 1174074081 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :FW < 1174074083 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :Process 3 killed. < 1174074108 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!daemon dog funge93 0>~# :# 5# 5# +# -# _$> :# ,# _,$55+, < 1174074114 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog Hello, world! < 1174074117 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :!dlrow ,olleH < 1174074169 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :!dog .won gnikrow eb ot smees tI < 1174074171 0 :EgoBot!unknown@unknown.invalid PRIVMSG #esoteric :It seems to be working now. < 1174074181 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :haha < 1174074197 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :One-line Befunge has a logic very like REVERSE. < 1174074253 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :except that in Befunge, loops always return true to the left, and in REVERSE it depends on the direction you're going in. < 1174074469 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :stupid mfit < 1174074550 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lament: you said it < 1174074575 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 54 (Connection reset by peer) < 1174074600 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174074605 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it seems like just using mfit to do duplications and relying on shanty to make up most of your code logic is a more predictable way to code < 1174074631 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :but mfit's replacement command is pretty necessary... < 1174074646 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :then we'll need a new interpreter that can handle the colossally large progam that will result < 1174074666 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174074674 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :Maybe one that stores the program compressed? (It's going to consist of lots of repeated stuff.) < 1174074688 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :like RLE? < 1174074726 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :not exactly, because we need to store near-repetitions and repetitions of groups of more than one character < 1174074740 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1174074741 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :It would probably also need a way to store nested repetitions < 1174074758 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :some kind of "duplication stack"? < 1174074783 0 :ais523!unknown@unknown.invalid PRIVMSG #esoteric :You could store it as a stack of pointers into the original program and into itself < 1174075192 0 :ais523!unknown@unknown.invalid QUIT :"Sorry I couldn't get that Dupdog Hello, World! to work" < 1174075204 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :cya... < 1174076947 0 :sebbu2!n=sebbu@ADijon-152-1-82-156.w81-49.abo.wanadoo.fr JOIN :#esoteric < 1174077335 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :http://i15.photobucket.com/albums/a379/GregorRichards/lcarssshot.png < 1174077631 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :nice desktop theme, GregorR < 1174077661 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :^^ < 1174077666 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :It's awesome for a tablet PC :) < 1174077672 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :sweet < 1174077681 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I am in envy of your tabletPC < 1174077698 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :The new tablet PC I'm getting in a week or so allows you to use your finger for input instead of just the pen. < 1174077712 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I've wanted one for quite a while, but I keep hoping that apple will make one < 1174077714 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :And even though LCARS isn't real, it's definitely very finger-clickable ;) < 1174077846 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :this may be the next best thing, though: http://axiotron.com/ < 1174077876 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :... no keyboard? < 1174077897 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :nah < 1174077930 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :but OSX has built in keyboard emulation and pretty spiffy handwriting recognition, so no huge biggie < 1174077965 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I wouldn't give up the keyboard ... programming with handwriting recognition and/or onscreen keyboard == basically impossible. < 1174077970 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I probably wouldn't use one of these for writing school papers or coding anyway- I'd be too busy doodling < 1174077977 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Ah :P < 1174077986 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :See, I have a tablet PC as my general-purpose laptop. < 1174077993 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :So I can't sacrifice the keyboard. < 1174077993 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :typing is what my laptop is for < 1174077998 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1174078034 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, I'll bet when Apple finally gets off their asses and makes a proper tablet they'll have a good solution to the problem < 1174078041 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :for now, I'll lust after the modbook < 1174078071 0 :sebbu!unknown@unknown.invalid QUIT :Success < 1174078078 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Yeah ... like a rotating screen :P < 1174078151 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I'm not a huge fan of the iPhone... mainly because I don't like cellphones and I dislike phone bills even more. If it had been designed as more of a PDA, I'd probably already have one < 1174078198 0 :jix__!n=jix@dyndsl-091-096-045-130.ewe-ip-backbone.de JOIN :#esoteric < 1174078199 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :fortunately, the iPod seems to be slowly aiming in that direction, so I may see my dream device in a couple of years < 1174078281 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Heh < 1174078364 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :if Apple just released an iPod SDK to take advantage of what the "games" feature opened up, we wouldn't need things like Rockbox or iPodLinux, and a lot of people would be happy < 1174078396 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I can't really say "everybody's happy", because bleeding-heart open-sourcers and the linux crowd are rarely if ever happy. < 1174078925 0 :jix__!unknown@unknown.invalid QUIT :"This computer has gone to sleep" < 1174079014 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :I hate Apple because of their interaction with the F/OSS community, not because they write proprietary software. < 1174079067 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Their interaction with the F/OSS community has been incredibly dishonest and immoral, carefully crafted to make naive people think they're a F/OSS-supporting company. < 1174079100 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :At least Microsoft doesn't /pretend/ to support F/OSS. < 1174079160 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it has a lot to do with the underlying differences between the BSD license and the GPL < 1174079198 0 :jix__!n=jix@dyndsl-091-096-045-130.ewe-ip-backbone.de JOIN :#esoteric < 1174079244 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :No, it doesn't. Everything GPL that they use, they do /precisely/ what they're legally required to do, no more. BSD software they mix with proprietary software to create non-F/OSS software. The original chunk of BSD-licensed code they use, they do usually continue to distribute, but they have no qualms with making it worthless in isolation. < 1174079291 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :Mind you, I'm not saying they've done anything /illegal/, as they haven't. Just unethical. < 1174079304 0 :GregorR!unknown@unknown.invalid PRIVMSG #esoteric :A.K.A. good business >_> < 1174079457 0 :jix__!unknown@unknown.invalid QUIT :Client Quit < 1174079591 0 :jix__!n=jix@dyndsl-091-096-045-130.ewe-ip-backbone.de JOIN :#esoteric < 1174080010 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i'm beginning to suspect a 'hello world' might be impossible < 1174080152 0 :sebbu2!unknown@unknown.invalid QUIT :"reboot" < 1174080304 0 :nazgjunk!unknown@unknown.invalid PRIVMSG #esoteric :o.O < 1174080339 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i have no proof though... < 1174080387 0 :Sgeo!n=sgeo@ool-18bf61f7.dyn.optonline.net JOIN :#esoteric < 1174080416 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: you there? < 1174080425 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174080429 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: http://www.esolangs.org/w/index.php?title=Dupdog&diff=6607&oldid=6606 < 1174080441 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :at some point he put an implementation in < 1174080496 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :note how he apparently wraps by 257 < 1174080511 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :that might be just a typo of course < 1174080544 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :if it's not a typo, it changes everything :D < 1174080547 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :odd < 1174080558 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :man, that is fucked up < 1174080561 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :probably a typo, though < 1174080573 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :no need to raise our hopes too high < 1174080627 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, it *could* be intentional- this is #Esoteric, after all < 1174080627 0 :UpTheDownstair!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174080645 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :fortunately, it doesn't break our general solution to the problem, just the details of how it works < 1174080666 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :as far as i'm concerned, it would make things a lot easier < 1174080707 0 :nazgjunk!unknown@unknown.invalid QUIT :Read error: 104 (Connection reset by peer) < 1174080734 0 :UpTheDownstair!unknown@unknown.invalid NICK :nazgjunk < 1174080747 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lament: how so? < 1174080761 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :intuition :) < 1174080774 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :aside from confirming the theory that we do in fact wrap... < 1174080835 0 :sebbu!n=sebbu@ADijon-152-1-82-156.w81-49.abo.wanadoo.fr JOIN :#esoteric < 1174081371 0 :oerjan!n=oerjan@hagbart.nvg.ntnu.no JOIN :#esoteric < 1174081509 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :okay < 1174081518 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i have written hello world for the case where we wrap on 257 < 1174081559 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :it's 2386 characters long. < 1174081591 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :the case where we wrap on 256 is much much harder. < 1174081602 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i still think it's just a typo < 1174081646 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :need to ask cakeprophet... < 1174081679 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :wait, woah < 1174081688 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :it seriously makes that much of a difference? < 1174081732 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :absolutely < 1174081747 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :the problem with 256 is that it's an even number < 1174081751 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ah < 1174081758 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I think I see what you mean < 1174081778 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :you end up needing to do less "nop" things to shave off an instructions < 1174081796 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :suppose we want to print an 'even' char < 1174081799 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :could you pastebin what you've come up with? < 1174081804 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :like 'H' = 72 < 1174081826 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :if we wrap on 256, that means the program that prints this char has to be of even length < 1174081834 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :if we wrap on 257, the program could be either even or odd < 1174081955 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :gotcha- it does make a difference < 1174081985 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, if the hello world works and it's the first program coded in the language, doesn't that instantly make it canon? < 1174082008 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :well, 257 is a strange thing to wrap on, and he did remove that implementation from the wiki < 1174082051 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i'm not sure pastebin likes being sent stuff to < 1174082062 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oh, .ca < 1174082071 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :or use nonlogic.org/dump < 1174082088 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric : < 1174082127 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/397942 < 1174082182 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :It's practically trivial. In particular, the source is never doubled. < 1174082198 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :hunh < 1174082222 0 :nazgjunk!unknown@unknown.invalid QUIT :"Leaving" < 1174082237 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :can you try it in the other interpreter? < 1174082244 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :in case mine's buggy < 1174082256 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :sweet jesus I do not understand that... wait, are you using a series of NOPs to gradually decrease the program value, and using a C to dump out each character? < 1174082270 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :yes :) < 1174082304 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :I believe the proper response to that lies here: http://www.myconfinedspace.com/wp-content/uploads/2007/03/omgwtfbbq-39352.jpg < 1174082459 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :hold on a sec < 1174082515 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lemme see if I can find ais523's source... < 1174082627 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :got it. Now I need to find where he specified wrapping... < 1174082663 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :I haven't read all the logs yet, but it occurs to me that there should be a way to compress the program with all that duplication in it, so you could worry less about space. < 1174082671 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1174082683 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :we discussed the possibility of doing that < 1174082698 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :although, lament's solution doesn't depend on duplication at all < 1174082736 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :augh. good lord perl is impenetrable < 1174082767 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/raw/397577 <- I'm having difficulty figuring out what part of this to modify for mod 257 wrapping... < 1174082793 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :prettified: < 1174082794 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :http://pastebin.ca/397959 < 1174082802 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :That's not perl, that's thutu2perl < 1174082819 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: ok, that explains why it's unreadable < 1174082834 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: i'm guessing you need to change those '128' to '257'? < 1174082839 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lament: haha < 1174082870 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :lament: that's what I was thinking, but there seemed to be more than I was expecting- I'll just give it a shot and see what happens. < 1174082880 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :heh < 1174082917 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :might be an idea to use the original thutu source. < 1174082923 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :he didn't publish it. < 1174082950 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :RodgerTheGreat: use the prettified version, it's way more informative :) < 1174082978 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :ACTION strips newlines... < 1174083010 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i would presume that everything from the original thutu is within that large while loop. < 1174083226 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :on the other hand the original thutu may not be much better, the part before the and's is probably the same and the part after just boilerplate for each thutu primitive command < 1174083303 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :which means we could probably reverse the compilation rather easily. < 1174083343 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :well, I'm not sure if it doesn't work or I'm just using the interpreter properly. :/ < 1174083354 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :*improperly < 1174083571 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :oh well < 1174083688 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :now we need to figure out how to create 99bob < 1174083745 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :which is currently looking fairly impossible without bruteforcing < 1174083746 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :i still think it's wrong to wrap on 257 < 1174083752 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :probably < 1174083764 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :his interpreter is full of typos and doesn't even run < 1174083768 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :he never tested it < 1174083772 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174083786 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :that's probably why it was removed < 1174083801 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and that's probably why nobody else has tried to code in this language < 1174083842 0 :bsmnt_bot!i=gavin@abacus.kwzs.be JOIN :#esoteric < 1174083865 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oerjan: it has save_callbacks < 1174083868 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :where's seven inch bread when you need him? < 1174083914 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :writing a dupdog interpreter directly in perl should be trivial. < 1174083956 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :k, /bot/scripts is writable < 1174083962 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hopefully < 1174083970 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yoohoo < 1174084041 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.foo = open("/bot/scripts/foo", "rw") < 1174084042 0 :bsmnt_bot!unknown@unknown.invalid PRIVMSG #esoteric :IOError: [Errno 2] No such file or directory: '/bot/scripts/foo' < 1174084055 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.foo = open("/bot/scripts/foo", "w") < 1174084071 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.foo.write("fooo\n") < 1174084079 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :~exec self.foo.close() < 1174085460 0 :nazgjunk!n=htitan@wikipedia/Nazgjunk JOIN :#esoteric < 1174085644 0 :nazgjunk!unknown@unknown.invalid QUIT :Client Quit < 1174086587 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :hmph < 1174086600 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :is BB(n+1) > BB(n)? < 1174086607 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :BB is busy beaver < 1174086690 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :yes < 1174086741 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :simply add a new initial state to the initial state of the maximal one for n, which transitions to the original immediately. Thus BB(n+1) >= BB(n)+1. < 1174086805 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1174086878 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in fact i think that can be improved to something approximately like BB(n+1) >>= BB(n)*(1+1/n) < 1174086907 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :namely, let s be the _most_ used state for the maximal one for BB(n). < 1174086958 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :Now make a new one which always pass through s and the new state in sequence. Thus at least 1/n of the steps will be doubled. < 1174086990 0 :jix__!unknown@unknown.invalid QUIT :"Bitte waehlen Sie eine Beerdigungnachricht" < 1174087051 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but intuition tells that it of course grows much more rapidly than that from some point. < 1174087110 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :because in fact there can be no computable function f such that f(BB(n)) >= BB(n+1) < 1174087125 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :yeah < 1174087283 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :although proving that f(BB(n)) < BB(n+1) for _every_ n greater than some limit might require some cleverness. < 1174087407 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :f(x) = BB(invBB(x)+1) < 1174087457 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :f(BB(n)) < BB(n+k) for some k and all n seems like it could be done, if k is big enough to embed computation of f in < 1174087526 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :What does "grows faster than" mean? < 1174087577 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :"computable function f such that f(BB(n)) >= BB(n+1)" < 1174087578 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :? < 1174087671 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it means at a minimum that lim (x -> inf) f(x)/BB(x) = 0 < 1174087686 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i.e. f(x) = o(BB(x)) < 1174087733 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION doesn't understand "f(x) = o(BB(x)) < 1174087739 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION understands the limit < 1174087752 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it's a notation for the limit < 1174087786 0 :ShadowHntr!i=sentinel@wikipedia/Shadowhntr JOIN :#esoteric < 1174087887 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :WHERES CAKEPROPHET < 1174087901 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :Can there exist a computable function f(x) such that f(x) > BB(x) when x is less than an arbitrary integer a? < 1174087903 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :HE WAS EATEN BY THE COOKIE MONSTER < 1174087916 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :of course. < 1174087940 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :just let f(y) = 1 + max (x <= a) BB(x) < 1174087959 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :as you see it can even be constant < 1174088002 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :umm... BB(x) isn't computable.. am I missing something? < 1174088017 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :mind you the constant exists in theory but we cannot actually find it for any but a finite number of a's < 1174088059 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well the point is that every constant is computable in isolation. < 1174088087 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :it's only functions that can be theoretically uncomputable < 1174088153 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :so it is sort of cheating < 1174088260 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the constant "exists", but its decimal sequence cannot be proven to satisfy its definition (or for that matter, written down within the space of our universe). < 1174088294 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :"our universe"? So it's a finite amount of space? < 1174088302 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :the busy beaver function is able to solve the halting problem too < 1174088311 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the visible universe, then. < 1174088338 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :No, I meant the space the number would require < 1174088338 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric : S(n) < Sigma(3n+6) < 1174088366 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :BB(x) is finite for finite x < 1174088377 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :well it is a finite number, so it has a finite, but totally impractical and perhaps physically non-existing size. < 1174088459 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :but even writing down the _size_ would be impossible in practice. That's what being greater than any computable functions you can think of does. < 1174088521 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh nice, the busy beaver function is able to prove theorems experimentally < 1174088523 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :i.e. the number is greater than Ackermann(1000,1000), which is itself an entirely computable number but still of massively "unphysical" size. < 1174088543 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :By telling you how many test cases you need < 1174088587 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :*computable number = computable function of reasonable numbers < 1174088673 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :grr I don't have haskell installed I think < 1174088680 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :ACTION is reading about factorials < 1174088684 0 :Sgeo!unknown@unknown.invalid PRIVMSG #esoteric :and the gamma function < 1174088710 0 :lament!unknown@unknown.invalid PRIVMSG #esoteric :yeah, factorials are a cool Haskell feature. < 1174088720 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :apropos haskell, the Data.Sequence module seems eminently suited for optimizing Dupdog, since it can concatenate in logarithmic time < 1174088723 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :what's a factorial? < 1174088737 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :and what's dupdog? < 1174088761 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :the language everyone was discussing during most of today < 1174088808 0 :oerjan!unknown@unknown.invalid PRIVMSG #esoteric :in fact you arrived just about when the discussion ended (just as i left just before it began) < 1174088816 0 :bsmntbombdood!unknown@unknown.invalid PRIVMSG #esoteric :oh < 1174088821 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :dupdog: it's hip and trendy! < 1174088832 0 :RodgerTheGreat!unknown@unknown.invalid PRIVMSG #esoteric :and seveninchbread was probably stoned when he made it < 1174089573 0 :tgwizard!unknown@unknown.invalid QUIT :Remote closed the connection