00:00:15 <oerjan> micahjohnston: i have dcc_autochat_masks = EgoBot
00:00:44 <micahjohnston> @so !haskell putStrLn.ap(++)show"putStrLn.ap(++)show"--
00:00:44 <lambdabot> !haskell putStrLn.ap(++)show"putStrLn.ap(++)show"-- not available
00:01:12 <micahjohnston> @so !haskell putStrLn.ap(++)show"putStrLn.ap(++)show"--
00:01:12 <lambdabot> !haskell putStrLn.ap(++)show"putStrLn.ap(++)show"-- not available
00:01:34 <lambdabot> !haskell putStrLn"test?"-- not available
00:01:45 <oerjan> micahjohnston: !haskell doesn't have any imports, so ap is not there
00:02:19 <oerjan> you can use a full module file for !haskell though
00:02:49 <oerjan> oh and the -> instance is missing too
00:02:52 <micahjohnston> @so !haskell (\s->putStrLn$s(++)show s)"(\s->putStrLn$s(++)show s)"--
00:02:52 <lambdabot> !haskell (\s->putStrLn$s(++)show s)"(\s->putStrLn$s(++)show s)"-- not available
00:03:15 <micahjohnston> @so !haskell (\s->putStrLn$s++show s)"(\s->putStrLn$s++show s)"--
00:03:15 <lambdabot> !haskell (\s->putStrLn$s++show s)"(\s->putStrLn$s++show s)"-- not available
00:03:40 * oerjan would have expected the last one to work...
00:03:56 <micahjohnston> @so !haskell (\s->putStrLn(s ++ show s))"(\s->putStrLn(s ++ show s))"--
00:03:56 <lambdabot> !haskell (\s->putStrLn(s ++ show s))"(\s->putStrLn(s ++ show s))"-- not available
00:04:13 <micahjohnston> > (\s->putStrLn(s ++ show s))"(\s->putStrLn(s ++ show s))"
00:04:14 <lambdabot> lexical error in string/character literal at chara...
00:04:44 <micahjohnston> > (\\s->putStrLn(s ++ show s))"(\\s->putStrLn(s ++ show s))"
00:04:45 <lambdabot> <no location info>: parse error on input `->'
00:05:09 <micahjohnston> @so !haskell (\\s->putStrLn(s ++ show s))"(\\s->putStrLn(s ++ show s))" --
00:05:09 <lambdabot> !haskell (\\s->putStrLn(s ++ show s))"(\\s->putStrLn(s ++ show s))" -- not available
00:05:43 <micahjohnston> @so !haskell (\\\s->putStrLn(s ++ show s))"(\\\s->putStrLn(s ++ show s))" --
00:05:43 <lambdabot> !haskell (\\\s->putStrLn(s ++ show s))"(\\\s->putStrLn(s ++ show s))" -- not available
00:05:50 <oerjan> only double the \ _inside_ the string duh
00:06:11 <micahjohnston> @so !haskell (\s->putStrLn(s ++ show s))"(\\s->putStrLn(s ++ show s))" --
00:06:11 <lambdabot> !haskell (\s->putStrLn(s ++ show s))"(\\s->putStrLn(s ++ show s))" -- not available
00:06:14 <EgoBot> (\s->putStrLn(s ++ show s))"(\\s->putStrLn(s ++ show s))"
00:08:06 -!- PocketMonsterIRC has quit (Read error: Connection reset by peer).
00:08:06 <micahjohnston> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:07 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:17 <micahjohnston> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:18 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:21 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:21 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:24 -!- ChanServ has set channel mode: +o oerjan.
00:08:24 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:24 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:27 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:27 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:30 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:30 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:34 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:34 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:37 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:37 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:38 -!- oerjan has set channel mode: -q EgoBot!*@*.
00:08:40 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:40 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:43 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:43 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:46 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:46 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:48 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:49 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:52 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:52 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:55 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:55 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:08:58 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:08:58 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:09:01 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:09:01 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:09:04 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:09:04 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:09:06 <oerjan> why didn't that work :(
00:09:07 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:09:07 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:09:09 -!- oerjan has set channel mode: +b *!*Gregor@codu.org.
00:09:10 <EgoBot> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:09:10 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"@so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:10:00 -!- oerjan has set channel mode: -b *!*Gregor@codu.org.
00:11:37 -!- iconmaster has quit (Quit: Pardon me, but I have to go die in NetHack again.).
00:11:46 -!- Wamanuz2 has joined.
00:11:47 <oerjan> i guess it should have been +q
00:11:47 -!- Wamanuz has quit (Ping timeout: 264 seconds).
00:12:10 <micahjohnston> `echo @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:11 <HackEgo> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:11 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:12:14 <EgoBot> `echo @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:15 <HackEgo> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:16 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:12:18 <EgoBot> `echo @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:19 <HackEgo> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:20 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:12:20 -!- coppro has quit (Ping timeout: 240 seconds).
00:12:22 <EgoBot> `echo @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:23 <HackEgo> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:24 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:12:27 <EgoBot> `echo @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:27 -!- oerjan has set channel mode: +q EgoBot!*@*.
00:12:28 <HackEgo> @so !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"--
00:12:28 <lambdabot> !haskell (\s t->putStrLn(s ++ show s ++ show t ++ t))"`echo @so !haskell (\\s t->putStrLn(s ++ show s ++ show t ++ t))""--"-- not available
00:12:44 -!- oerjan has set channel mode: -q EgoBot!*@*.
00:14:09 <Lymia> oerjan, cyclic quines?
00:14:15 <Lymia> Autotriggering bots?
00:14:59 -!- BeholdMyGlory has quit (Remote host closed the connection).
00:17:34 -!- augur has joined.
00:17:47 <quintopia> hey oerjan, do you know if there is a novelty language on the wiki that is specified in such a way that it is turing-complete and capable of arbitrary output with the one exception that no program can output its own listing?
00:17:50 -!- ZOMGMODULES has joined.
00:18:53 <oerjan> there is one that is close
00:19:06 <micahjohnston> I'm not sure if that's possible by anything other than checking if the output is the program source
00:19:57 <quintopia> micahjohnston: that seems to be the easiest way, yes
00:20:05 <Ilari> crystal-cola: Oh, looks like I figured out a way to prove that no k divisible by some primes (3, 5, 7, 11, 13, 19, 23, 29) can have solutions.
00:20:15 <zzo38> Can that be proven that is only way?
00:21:03 <oerjan> quintopia: http://esolangs.org/wiki/User:Smjg it doesn't have its own page i think
00:22:01 <oerjan> http://wwwep.stewartsplace.org.uk/quines/quineless.html
00:22:02 <ZOMGMODULES> i am hurt by smjg's abbreviation of these activities as "EP"
00:22:23 -!- oerjan has set channel mode: -o oerjan.
00:23:44 -!- augur has quit (Ping timeout: 240 seconds).
00:24:27 <ZOMGMODULES> "for which the mapping from Turing-computable functions to programs is itself Turing-computable" I think that gets... assumed a lot
00:24:44 <oerjan> Ilari: could it be that p-1 must be divisible only by primes which are solutions?
00:25:48 <fungot> ^<lang> <code>; ^def <command> <lang> <code>; ^show [command]; lang=bf/ul, code=text/str:N; ^str 0-9 get/set/add [text]; ^style [style]; ^bool
00:25:55 <oerjan> or are parts of solutions
00:26:56 <quintopia> zzo38: i'm pretty sure the answer to that is yes. we know by the kleene second recursion theorem that there is a program that computes its own godel number in every turing-complete language. add the ability to output that number in whatever format necessary and you have a quine
00:27:01 <ZOMGMODULES> fungot: what are the odds you would produce that same string as a response to this statement?
00:27:02 <fungot> ZOMGMODULES: cooking is fnord in socialist countries don't have to specify types for the hard drive
00:27:44 <quintopia> and the least amount of output you can disallow is exactly the one string you don't want...the listing itself
00:28:03 <quintopia> i believe the rest would fall out of rice's theorem
00:28:52 -!- pumpkin has changed nick to copumpkin.
00:29:11 <ZOMGMODULES> someone really ought to mend the bottom of that theorem someday
00:34:34 <quintopia> oerjan: that page doesn't even describe my idea for the way to do it. i was thinking "output a bit if the program is empty, otherwise allow all input and output but keeping track of what's been output so far. If the program attempts to output the last bit of its listing, withhold output until another bit is output and then output both at once.
00:35:01 <quintopia> *of its listing having already output the rest of it
00:35:29 <quintopia> it makes a lot more sense than preventing the first bit from being output
00:37:37 <oerjan> Ilari: hm if tau(x) divides n then x relatively prime to 15 divides 3^n - 5^n
00:37:52 <oerjan> euler's totient function
00:38:02 <ZOMGMODULES> or just have your program alphabet be disjoint from your output alphabet. instant quineless language
00:38:22 <oerjan> oh wait that should be phi
00:38:51 <crystal-cola> I just thought you might have meant the Ramanujan tau and I was WOAH he weilds heavy weapons
00:39:33 <quintopia> ZOMGMODULES: then you are preventing it from outputting a lot more strings than my solution. (also, how do you do that? even with different alphabets i would assume that if the binary representations of two strings are the same, the strings are the same)
00:40:09 <oerjan> from that, 17*2^4 is obviously a solution, i think
00:40:25 <crystal-cola> yeah 17*2^4 is one solution that keeps cropping up
00:40:28 <quintopia> i suppose if you require all instruction be a byte long beginning in zero, and all output bytes to begin with 1, you could do it
00:40:40 <crystal-cola> there's something funny going on with the 17s (well maybe it's just because that's the smallest prime other than 2)
00:40:54 <oerjan> Ilari: do you have something like that in reverse?
00:41:16 <crystal-cola> Ilari proved a theorem about combining solutions (and a bunch of others)
00:41:42 <Sgeo> "This is the latest fucking SqueakSource"
00:41:49 <Sgeo> --Laurent Laffont
00:42:42 <oerjan> quintopia: in any case your solution obviously also lacks the "mapping must be turing-computable" condition
00:43:36 <quintopia> yes obviously. i'm not disputing the truth of the revised theorem
00:44:06 <quintopia> i'm just saying it's a much more sensible way of excluding quines from a function->program mapping
00:45:06 <oerjan> Ilari: this raises the question, if n | 3^n - 5^n must it be that 3^n and 5^n == 1 (mod n) ?
00:45:13 <ZOMGMODULES> or output a space after every output symbol
00:46:49 <oerjan> ZOMGMODULES: um it's required that every particular string _can_ be printed
00:46:59 <oerjan> otherwise it's not an interesting question
00:47:19 <pikhq> Hmm. 1 more semester of community college...
00:48:15 <ZOMGMODULES> oerjan: it's printed! it's just double-spaced!
00:48:26 * oerjan swats ZOMGMODULES -----###
00:49:05 <pikhq> After which point I will have a pile of math & CS classes for a bachelor's.
00:50:07 <oerjan> hm what can you deduce from 3^n == 5^n (mod n) by multiplying several 3's and 5's together...
00:51:04 -!- ZOMGMODULES has quit (Quit: leaving).
00:53:07 <oerjan> crystal-cola: i'm just pondering if you can determine something like phi(n) | n
00:53:33 <oerjan> well that was just a wild idea
00:53:42 <oerjan> to get more numbers to test
00:55:40 <oerjan> > [n | n <- [1..], n `mod` length [x | x <- [1..n-1], x `gcd` n == 1] == 0]
00:55:56 <oerjan> > [n | n <- [2..], n `mod` length [x | x <- [1..n-1], x `gcd` n == 1] == 0]
00:56:06 <oerjan> > take 10 [n | n <- [2..], n `mod` length [x | x <- [1..n-1], x `gcd` n == 1] == 0]
00:56:47 <oerjan> > take 10 [n | n <- [2..], n `mod` length [x | x <- [1..n-1], x `gcd` n == 1] == 0, n `gcd` 15 == 1]
00:57:08 <crystal-cola> Ilari mentioned some conjecture about if the modulus has lots of prime factors in it, you can probably remove one
00:57:30 <crystal-cola> but no real ideas, just vauge things that sound mathematical :/
00:57:48 <oerjan> hm so 68 is a counterexample to that idea
00:58:06 <crystal-cola> 2,4,8,16,32,64,128,256,512,1024 why are they powers of two??
00:58:14 <oerjan> > let n = 68 in length [x | x <- [1..n-1], x `gcd` n == 1]
00:59:41 <oerjan> crystal-cola: well they're solutions to phi(n)|n, hm...
01:00:00 <oerjan> and not divisible by 3 or 5
01:00:59 <oerjan> oh hm that's a pretty strict condition
01:01:19 -!- copumpkin has quit (Quit: Computer has gone to sleep.).
01:01:39 <oerjan> even 17*2^4 doesn't work because you need _more_ powers of 2 for the phi()
01:02:48 <oerjan> the prime 3 works because it only needs one extra 2
01:03:36 <oerjan> and phi(p^n) = phi(p)*p^(n-1)
01:04:47 <quintopia> i think we should make a whole website about attributing to celebrities things they didn't say, like in the topic
01:05:38 <oerjan> i think that's called "uncyclopedia"
01:06:15 <quintopia> step 1: find people saying idiotic things in IRC channels
01:06:31 <quintopia> step 2: attribute those statements to celebrities that would obviously never say them
01:06:31 <oerjan> "Uncyclopedia should be sufficient." -- Oscar Wilde
01:09:50 <oerjan> crystal-cola: you aren't confusing with encyclopedia dramatica?
01:11:24 -!- lament has joined.
01:17:16 -!- augur has joined.
01:17:39 -!- augur has quit (Remote host closed the connection).
01:17:42 -!- augur has joined.
01:23:27 -!- augur has quit (Remote host closed the connection).
01:23:39 <oerjan> > let n = 17 in iterate (\(t,f) -> (3*t `mod` n, 5*t `mod` n)) (1,1)
01:23:40 <lambdabot> [(1,1),(3,5),(9,15),(10,11),(13,16),(5,14),(15,8),(11,7),(16,4),(14,12),(8,...
01:24:48 <oerjan> > let n = 17 in filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*t `mod` n)) (1,1)
01:25:17 <oerjan> > take 5 $ let n = 17 in filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*t `mod` n)) (1,1)
01:25:29 <oerjan> > head $ let n = 17 in filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*t `mod` n)) (1,1)
01:25:40 <oerjan> > take 2 $ let n = 17 in filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*t `mod` n)) (1,1)
01:26:18 <oerjan> > let n = 17 in filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1)
01:26:20 <lambdabot> [(0,(1,1)),(4,(13,13)),(8,(16,16)),(12,(4,4)),(16,(1,1)),(20,(13,13)),(24,(...
01:27:19 <quintopia> i was going to suggest that lambdabot is always going to exceed its time limit if you start by telling it to take 5
01:27:58 -!- augur has joined.
01:29:22 <oerjan> > let n = 11 in filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1)
01:29:24 <lambdabot> [(0,(1,1)),(5,(1,1)),(10,(1,1)),(15,(1,1)),(20,(1,1)),(25,(1,1)),(30,(1,1))...
01:29:39 <oerjan> i see... i wonder if that is what Ilari realized
01:30:12 <oerjan> since 3^n == 5^n (mod 11) requires 5 | n, you cannot have 11 as a prime factor
01:30:35 <oerjan> > let n = 7 in filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1)
01:30:37 <lambdabot> [(0,(1,1)),(3,(6,6)),(6,(1,1)),(9,(6,6)),(12,(1,1)),(15,(6,6)),(18,(1,1)),(...
01:31:03 <oerjan> i guess there isn't really any point in considering anything but the first hit
01:31:24 <oerjan> > let n = 7 in (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1)
01:32:17 <oerjan> > [(,) n . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [2,7,11,13,17,19]]
01:32:19 <lambdabot> [(2,(1,(1,1))),(7,(3,(6,6))),(11,(5,(1,1))),(13,(12,(1,1))),(17,(4,(13,13))...
01:33:07 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [2,7,11,13,17,19]]
01:33:09 <lambdabot> [(2,1),(7,3),(11,5),(13,12),(17,4),(19,6)]
01:33:27 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [23,29,31,37]]
01:34:03 <oerjan> basically all except 2 and 17 are excluded so far for that reason
01:36:28 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [41,43,47,53,59]]
01:36:30 <lambdabot> [(41,40),(43,7),(47,46),(53,26),(59,29)]
01:39:50 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [61,67,71,73,79,83,89,97]]
01:39:52 <lambdabot> [(61,15),(67,11),(71,35),(73,72),(79,78),(83,82),(89,88),(97,32)]
01:40:44 <pikhq> It's somewhat odd to find out that my high school Japanese teacher is now teaching Japanese at my college.
01:42:34 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [17*17]]
01:43:15 <oerjan> hm will a prime power always work if the prime does...
01:44:09 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [97*97]]
01:44:47 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [97*97*97]]
01:45:19 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [17^3]]
01:45:40 <oerjan> > [(,) n . fst . (!!1) . filter (uncurry (==) . snd) . zip [0..] $ iterate (\(t,f) -> (3*t `mod` n, 5*f `mod` n)) (1,1) | n <- [17^4]]
01:46:22 <oerjan> it _does_ look like it just adds one factor of the prime itself to the exponent
01:47:33 <oerjan> hm what does happen for a^p (mod p^n) gcd(a,p) = 1 in general...
01:48:52 <oerjan> is there some sense in which that's equivalent to a (mod p^(n-1))
01:54:31 -!- augur has quit (Remote host closed the connection).
01:58:24 -!- augur has joined.
02:10:04 -!- augur has quit (Remote host closed the connection).
02:21:21 -!- augur has joined.
02:23:12 -!- elliott has joined.
02:25:48 <elliott> 23:20:27: <oerjan> that's what that text hack is for, i presume
02:25:54 <elliott> oerjan: its not a hack its just part of the prettyprinting thing
02:25:58 <elliott> oerjan: it just has a terrible Show instance is all :)
02:27:16 -!- TeruFSX2 has quit (Quit: No Ping reply in 180 seconds.).
02:27:21 <elliott> 23:26:49: <oerjan> HackEgo ignores no one, everyone ignores hackego, and fungot ignores everyone
02:27:22 <fungot> elliott: do you even *do* riastradh?
02:27:23 -!- TeruFSX has joined.
02:27:27 -!- TeruFSX has quit (Read error: Connection reset by peer).
02:27:29 <elliott> oerjan: no only fungot and egobot ignore hackego
02:27:30 <fungot> elliott: xwl pasted " macro examples" at http://paste.lisp.org/ display/ fnord for prime numbers.
02:28:52 -!- lament has quit (Ping timeout: 246 seconds).
02:29:04 <oerjan> elliott: um "everyone" here doesn't include lambdabot
02:29:25 -!- augur has quit (Remote host closed the connection).
02:29:40 -!- lament has joined.
02:29:42 <oerjan> because i started out speaking about how everyone but lambdabot has all loops cut off
02:55:15 -!- augur has joined.
02:59:51 -!- augur has quit (Remote host closed the connection).
03:23:16 <quintopia> is there a reasonable way of using file-backed dynamic memory allocation? so that a data structure that grows can be mmap'd to a file?
03:23:28 <quintopia> (and the file is the size of the data structure)
03:25:39 <Ilari> Of course, there is a problem with pointers (specifically pointer base).
03:27:47 <Ilari> If you gave good chunk of continuous virtual memory space (which you do on 64-bit, even if VM space is not full 64 bits) one could put it in there.
03:29:28 <Ilari> Maybe mmap huge anonymous memory chunk (can be terabytes in size on 64-bit), and then map the file over the beginning of that.
03:30:00 <elliott> like all things to do with persistence on unix
03:30:07 <elliott> mmap works if you have a specific heap but only then
03:30:21 <pikhq> quintopia: If you want it automagic, you'll need a kernel supporting that.
03:30:28 <Ilari> And then have relative memory addresses inside the block.
03:30:33 <pikhq> As well as a language environment supporting it.
03:30:55 <elliott> quintopia: write bytes manually
03:31:12 <elliott> for instance with a growing away you could just write out each object in turn
03:31:24 <pikhq> Oh, manually? Yeah, just do the persistance yourself.
03:31:42 <quintopia> you're saying instead of allowing the memory to be used like real memory, intercept every write to it by requiring it to go through a function call?
03:32:08 <elliott> quintopia: that's the kind of question that flags up little alarms in my brain saying "fundamental misunderstanding at work here", no offence
03:32:08 <pikhq> quintopia: Uh, you seem to not grok how manually persisting state works.
03:32:15 <quintopia> or have another thread that's watching the object for changes and mirroring it?
03:32:19 <elliott> quintopia: what exactly kind of structure are you persisting
03:32:28 <elliott> its something growing, but what is it
03:32:31 <elliott> a graph, a tree, an array, what
03:32:32 <Ilari> quintopia: I'm just saying encode every pointer inside the block as a relative offset or array index.
03:32:47 <elliott> persisting a linked list doesn't make any sense at all
03:33:03 <pikhq> elliott: Sure it does.
03:33:10 <elliott> pikhq: not if its the only thing in the file
03:33:18 <elliott> yes it is as far as persistence goes quintopia
03:33:20 <quintopia> let's say it's a linked list where every node is a different length
03:33:26 <elliott> unless you want redundant pointers to the next byte
03:33:29 <pikhq> elliott: Well, yeah, there's little point to doing that.
03:33:43 <elliott> quintopia: ok let's just say its an array with variable length nodes
03:34:11 <elliott> for each element, write n, figure out how many bytes long it is, add that number to n
03:34:15 <elliott> then write out every element in turn
03:34:19 <elliott> after writing out a terminator
03:34:34 <elliott> then the numbers you wrote out at the start are file offsets for the start of each element, after the end of the element list
03:34:51 <elliott> blah blah blah you get the idea
03:35:03 <elliott> quintopia: you could prefix every single object with its length in bytes
03:35:11 <elliott> and just write them out with no delimiters or anything
03:35:15 <elliott> then skipping an element is just an fseek
03:35:39 <quintopia> okay, and let's say i make a change to this structure somewhere else, like shorten the 10th node by 5 bytes and add 12 bytes to the 17th node and delete the 18th node? can i maintain the persistence without rewriting the whole object?
03:35:58 <elliott> well sure, you fseek in, write out more bytes
03:36:05 <elliott> what are you trying to accomplish
03:36:17 <pikhq> That's definitely a good question. What's your end goal?
03:36:29 <quintopia> i want to log changes to a a particular block of memory another process is using
03:36:43 <quintopia> the process notifies me before it changes something and i log a backup of the data before it does that
03:36:44 <elliott> pikhq: yeah i hate to bug people about that because i hate when people won't answer my question because they want to know every detail about my program, but at this point i just dunno what quintopia's trying to do :P
03:36:53 <elliott> quintopia: ok well thats vague
03:36:56 <elliott> quintopia: is it just arbitrary amounts of bytes
03:36:57 <pikhq> What's your *end goal*, quintopia?
03:37:00 <elliott> or does it inform you about the structure somehow
03:37:28 <quintopia> pikhq: lightwieght recoverable transactional virtual memory
03:38:02 <quintopia> elliott: it tells me which segment it's modifying, at which offset, and how many contiguous bytes
03:38:13 <quintopia> i can't. i have to roll my own. it's an assignment.
03:38:18 <elliott> it was a joke at doesn't even exist
03:38:22 <elliott> quintopia: why cant you just mmap a single file for each segment
03:38:28 <elliott> are there like thousands of segments simultaneously
03:39:10 <quintopia> i just need a persistent log to record the changes to those things now, so i can roll back the changes if the program crashes before the transaction completes
03:39:17 <elliott> basically youre trying to reinvent something that the filesystem's doing for you imo
03:39:20 <elliott> quintopia: what are yous toring in the log
03:39:31 <pikhq> quintopia: If you're already mmap'ing, the kernel is *already* persisting your state.
03:39:48 <elliott> pikhq: thats obviously not what he means :P
03:39:51 <quintopia> i want to store the minimum data necessary to restore the segment to its state at the beginning of the transaction
03:39:55 <elliott> im abandoning apostrophes btw
03:39:59 <elliott> quintopia: ok what is wrong with this plan
03:40:02 <quintopia> if nothing has changed in the segment yet, the log should contain nothing
03:40:08 <elliott> quintopia: to the byte level?
03:40:14 <elliott> how are you detecting changes
03:40:15 <pikhq> Admittedly, any transactional behavior will need to be done yourself.
03:40:38 <quintopia> the process says "I'm about to change this many bytes starting here. back them up please."
03:40:58 <elliott> quintopia: foo = mmap("start-numberofbytes"); memcpy(foo, start, numberofbytes);
03:41:41 <quintopia> that's how i plan to get the data into the log, yes
03:41:50 <elliott> quintopia: what do you need more than that
03:41:55 <elliott> quintopia: do you just need an ordering of the segments
03:42:41 <elliott> quintopia: basically i dont understand why that line i showed you isnt enough
03:42:43 <quintopia> well the log should ideally have a bunch of items of the form "this data goes at this offset in this segment" and so rolling back would just be a matter of opening the segment and copying the data back into place
03:42:50 <elliott> <elliott> quintopia: foo = mmap("start-numberofbytes"); memcpy(foo, start, numberofbytes);
03:42:59 <elliott> you can just list the directory
03:43:04 <elliott> parse the filename to get the segment info
03:43:19 <elliott> its not the most "elegant" thing ever but its easier than maintaining your own file
03:43:20 <quintopia> you're saying the log will just be a buttload of different files
03:43:34 <elliott> i mean unless youre going to have millions of segments modified in one second
03:43:40 <elliott> filesystems are pretty fast
03:43:47 <elliott> easier than rolling your own
03:44:01 <quintopia> this doesn't sound so daunting now
03:44:01 <pikhq> And short-lived files won't get written to disk anyways.
03:44:52 <elliott> quintopia: actually your assignment sounds pretty awesome, i'm pretty sure you could do orthogonal persistence with it
03:45:03 <elliott> but it's the same kind of thing
03:48:38 -!- pikhq_ has joined.
03:50:18 <Ilari> crystal-cola: Testing factors of k: 2, 3, 5, 7, 11, 13, 19, 23, 29, 31, 37, 41, 43, 47, 53, 59, 61, 67, 71, 73, 79, 83, 89, ... can't appear, 17, 97, ... can.
03:50:36 <elliott> Ilari: is this the same thing you've been trying to find for like a month?
03:51:02 -!- pikhq has quit (Ping timeout: 240 seconds).
03:51:21 -!- wareya has quit (Read error: Connection reset by peer).
03:51:35 <Ilari> AFAIK, Those number can't/can be factors of k,
03:52:02 -!- wareya has joined.
03:53:05 * pikhq_ looks forward to having a functioning computer again.
03:55:11 <elliott> pikhq_: Isn't it your connection
03:56:54 <pikhq_> elliott: I'm currently using a shared, P4 piece of shit.
03:57:15 <pikhq_> My new power supply should show up on Tuesday.
03:59:42 <Ilari> crystal-cola: Basically, a prime factor can appear in k only if the order of 5*3^-1 mod p consists of only factors of 2 and prime factors that can appear in k.
04:00:23 <crystal-cola> really!! That sounds like something we might be able to completely classify
04:00:40 <crystal-cola> I remember how awkward that thing is because it depends on p
04:01:34 <Ilari> If it comes to actually computing it, 3^-1 isn't so bad. But I agree it is nasty in actual proofs.
04:03:49 -!- monqy_ has joined.
04:04:57 <Ilari> Well, if p == 1 (mod 3), then 3^-1 mod p = (2p + 1) / 3. If p == 2 (mod 3), then 3^-1 mod p = (p + 1) / 3.
04:06:32 -!- monqy has quit (Ping timeout: 260 seconds).
04:07:18 <Ilari> And furthermore it appears that if other prime factors than 2 appear in the order of 5*3^-1 mod p, then those are required to be in k if p appears in it.
04:07:44 <oerjan> Ilari: i asked you a question above which basically amounts to whether the order of 5*3^-1 mod p^n is always p^(n-1) times the order of 5*3^-1 mod p
04:08:16 <oerjan> because if so then the prime powers could be classified once the primes themselves are
04:09:49 <oerjan> it seemed to be right for small powers of 17 and 79
04:11:05 -!- rodgort has quit (Quit: ERC Version 5.3 (IRC client for Emacs)).
04:11:38 <elliott> oerjan: is what Ilari's thinking on actually the same thing as its been for months
04:11:46 <elliott> ive been following the mystery with interest but total noncomprehension
04:11:57 -!- rodgort has joined.
04:12:00 <oerjan> elliott: i cannot recall it being mentioned before this week or so...
04:12:19 <oerjan> in fact wasn't it crystal-cola who asked it first
04:12:22 <elliott> ok Ilari's transitioned from the man on a mission to regular mathpuzzle funguy now
04:14:40 <oerjan> it seems to me now that the classification of this amounts to finding and factorizing those 5*3^-1 orders for prime powers
04:22:05 <zzo38> Do you have any music to break phonographs by?
04:29:16 <elliott> zzo38 read this book once.
04:29:54 -!- Sgeo has quit (Read error: Connection reset by peer).
04:30:46 -!- Sgeo has joined.
04:30:48 <Ilari> Okay, if order of 5*3^-1 mod p is 2^r*s, and s has solutions, then s*p also has solutions.
04:34:15 <oerjan> Ilari: n is a solution iff for every prime power factor p^i of n, the order of 5*3^-1 mod p^i divides p.
04:34:18 -!- chickenzilla has quit (Ping timeout: 250 seconds).
04:34:29 <oerjan> no need to single out powers of 2 there
04:34:49 <pikhq_> zzo38: No, but I could find you some music to invade Poland by.
04:35:00 -!- z^ck has joined.
04:35:46 <oerjan> erm and n is not divisible by 3 or 5.
04:36:05 <oerjan> ...i guess that's implied by the existence of the order
04:36:16 -!- monqy_ has changed nick to monqy.
04:38:55 <zzo38> pikhq_: Which musics would that be?
04:44:35 <Ilari> If 5*3^-1 mod p is 2^r*s and s doesn't have solutions, then for s*p to have solutions would imply 5^(ps*2^r1)==3^(ps*2^r1) mod s. Which impiles x_5*ps*2^r1 == x_3*ps*2^r1 (mod phi(s)). But x_5*s*2^r1 != x_3*s*2^r1 (mod phi(s)), thus x_5*ps*2^r1 != x_3*ps*2^r1 (mod phi(s)), and s*p is not an solution.
04:45:16 <Ilari> This would actually imply the stronger form of that statement about dividing those factors away.
04:46:58 <oerjan> Ilari: um are you even reading what i'm saying?
04:47:30 <elliott> it's entirely possible he has a write-only irc client
04:48:13 <elliott> oerjan: signs point to yup
04:48:50 <elliott> op me oerjan im just that cool
04:49:33 <elliott> that's not going to work is it
04:50:47 <elliott> almost as great as all the opping oerjans not doing
04:50:52 <crystal-cola> it took me a while to understand it because its 6 am :/
04:51:17 <oerjan> wait crystal-cola is in europe?
04:51:39 <elliott> what a coinseyedence it is six am in my bubble too :OOOO
04:52:02 <elliott> that never happens since the world population is seventy thousand trillion and most timezones are a few minutes off each other
04:52:45 <elliott> also my body has now got the impression that when it gets bright thats sleepytime because its retarded
04:55:20 <elliott> hey look I have EmAiL i should read that instead of sleeping
04:55:38 <elliott> because god knows the sun isnt fully up yet how could i possibly sleep if my eyes werent incapacitated by the glare
04:57:41 <elliott> good i have saved you now only i must suffer
05:04:24 -!- copumpkin has joined.
05:06:56 <elliott> crystal-cola: jegus go to bed already
05:08:10 <pikhq_> Man, a Newfie accent is *weird*.
05:08:33 <pikhq_> It sounds like some sort of southern English accent.
05:09:36 <pikhq_> And it's in freaking Canada.
05:12:02 <Ilari> Of course, there's some issues applying this: E.g. if there is some prime p, such that order(5*3^-1 mod p,p) = 137*2^x, then 137p isn't a valid k, but 17*137*p is.
05:12:06 <crystal-cola> you can do some algebra with them, e.g. 1/(q;q^2)=(-q^2;q)
05:13:38 <crystal-cola> does it just mean that even though 137p isn't 137m might be? (for some m containing p)
05:14:46 <Ilari> crystal-cola: Well, it actually is if m = 17p.
05:15:14 <crystal-cola> I guess that's not as simple you might wish but is a problem for something?
05:15:40 -!- news-ham has quit (Ping timeout: 260 seconds).
05:16:44 -!- elliott has quit (Ping timeout: 252 seconds).
05:17:25 <Ilari> crystal-cola: Mainly problem if applying those for a seaching algorithm.
05:17:59 <Ilari> crystal-cola: Ah, found such p: 1097. 137*1097 isn't a valid k, but 17*137*1097 is.
05:18:48 <Ilari> crystal-cola: Right.
05:19:56 <Ilari> crystal-cola: And if you got order(5*3^-1 mod q,q) = 137^2*2^x, the corresponding irreducable k would be 17*137^2*q
05:21:58 <Ilari> The list of pairs doesn't have such thing because it would require k above 2^32 to hit cases like that.
05:22:00 <oerjan> Ilari: i am _so_ tempted to ban you for ignoring my comments...
05:24:41 -!- Ilari_antrcomp has left.
05:24:44 -!- Ilari has left.
05:25:24 <oerjan> ...either that, or for lacking a sense of humor.
05:36:46 -!- TeruFSX has joined.
05:39:33 <crystal-cola> it's particularly difficult because I can't do it without moving
05:55:22 -!- coppro has joined.
05:55:47 -!- coppro has quit (Client Quit).
05:56:27 -!- coppro has joined.
06:00:15 <copumpkin> crystal-cola: life is tough, but that's one of those things you just have to do yourself
06:16:29 <zzo38> I tried to make prestige class for D&D game.
06:16:39 <zzo38> http://zzo38computer.cjb.net/dnd/options/Psychic_Binder.c
06:28:33 -!- poiuy_qwert has joined.
06:40:05 -!- lament has quit (Read error: Connection reset by peer).
06:45:38 -!- zzo38 has quit (Remote host closed the connection).
06:51:39 <pikhq_> http://i.imgur.com/gvWZG.jpg :)
06:51:52 <pikhq_> (the text reads: "Teenage Mutant Ninja Turtles", BTW)
06:52:36 -!- monqy has quit (Read error: Connection reset by peer).
06:52:47 -!- monqy has joined.
07:01:02 <Sgeo> "I definitely agree with most of what was saidexcept that Id never, ever recommend VisualWorks. Its a piece of beautiful crap which has the feature of failing at its own pleasure :("
07:02:18 -!- crystal-cola has quit (Quit: leaving).
07:34:29 -!- pikhq_ has quit (Quit: Lost terminal).
08:03:51 -!- azaq23 has joined.
08:05:35 -!- MigoMipo has joined.
08:20:47 -!- augur has joined.
08:43:54 -!- poiuy_qwert has quit (Ping timeout: 250 seconds).
08:44:41 -!- poiuy_qwert has joined.
08:46:42 -!- oerjan has quit (Quit: Good night).
09:17:01 -!- Wamanuz2 has quit (Ping timeout: 240 seconds).
09:19:04 -!- Wamanuz2 has joined.
09:48:31 -!- monqy has quit (Quit: hello).
09:56:18 -!- FireFly has joined.
10:11:26 -!- poiuy_qwert has quit (Ping timeout: 250 seconds).
10:16:21 -!- poiuy_qwert has joined.
10:19:30 -!- augur has quit (Read error: Connection reset by peer).
10:19:44 -!- augur has joined.
10:39:10 -!- poiuy_qwert has quit (Ping timeout: 250 seconds).
10:43:21 -!- poiuy_qwert has joined.
11:42:40 -!- p_q has joined.
11:43:19 -!- poiuy_qwert has quit (Ping timeout: 250 seconds).
11:49:47 -!- azaq23 has quit (Quit: Leaving.).
11:55:10 -!- BeholdMyGlory has joined.
11:55:11 -!- BeholdMyGlory has quit (Changing host).
11:55:12 -!- BeholdMyGlory has joined.
12:00:32 -!- sirakusa has joined.
12:00:39 -!- siracusa has quit (Ping timeout: 250 seconds).
12:00:58 -!- sirakusa has changed nick to siracusa.
12:54:46 -!- augur has quit (Remote host closed the connection).
12:56:00 -!- augur has joined.
12:56:04 -!- augur has quit (Remote host closed the connection).
12:56:08 -!- augur has joined.
12:57:15 -!- augur has quit (Remote host closed the connection).
13:00:14 <quintopia> someone remind if "char *segnames[numsegs]" where numsegs is a function parameter is a legal C declaration. Something in my brain is telling me that it is not legal to parameterize array declarations like that...
13:02:19 <fizzie> It's legal in C99; that's a "variable-length array" then.
13:05:58 <fizzie> (Or as a GNU extension in C89 and C++.)
13:08:12 <fizzie> There's a yet weirder a bit related GNU extension that lets you write a function declaration like "int foo(int len; char data[len][len], int len) { ... }" where the first "int len" is a "forward declaration" so that len's available for use in the first actual parameter 'data'. I don't think I've ever seen that used.
13:12:59 <quintopia> yeah i noticed some people talking about declarations like that on a forum thread
13:13:45 <quintopia> you don't have to use the semicolon if you put them in the other order i think
13:25:46 -!- crystal-cola has joined.
13:26:10 <quintopia> fizzie: using that declaration, would the array be created on the stack in the function scope?
13:28:12 <fizzie> The function is still going to take a pointer; it's not going to actually create any arrays or pass the whole array by-value.
13:29:07 <fizzie> Oh. Well, yes, in practice. In theory all you can say is it has automatic storage duration.
13:29:14 <fizzie> A "stack"'s not required, after all.
13:30:14 <fizzie> It's much like the old-style alloca() function, except cleaner than that.
13:30:50 -!- Wamanuz3 has joined.
13:32:29 <quintopia> so, basically, that array will be clobbered as soon as the function returns? guess i better put it on the heap anyway
13:32:54 <fizzie> Yes. And if you put the declaration inside a {} block, it will be freed as soon as that brace-level ends.
13:33:28 -!- Wamanuz2 has quit (Ping timeout: 240 seconds).
13:36:37 <quintopia> what's the right way to turn a number into a string? i know snprintf can do it, but you have to know the length of the string in advance. do i actually have to manually compute that?
13:37:55 <crystal-cola> well you can just do snprintf in a for loop I think
13:38:16 <quintopia> okay thanks. i'll manually compute it
13:38:16 <fizzie> If you don't mind GNU/BSD extensions, asprintf (which allocates the resulting string) is handy. It's also possible to determine a long-enough upper bound from INT_MAX or something.
13:38:39 <quintopia> i think gnu extensions are probs fine
13:39:08 <fizzie> I'm not sure if C99 mandated the "sensible" snprintf, which you can call with length==0 and a NULL string, and it will return the number of characters it would've printed if it could've.
13:40:39 <quintopia> #define _GNU_SOURCE must be there to make gnu extensions compile?
13:41:03 <olsner> it's pretty trivial to make a buffer large enough for an int (or long), and snprtinf into it
13:41:04 <fizzie> "If n is zero, nothing is written, and s may be a null pointer. -- The snprintf function returns the number of characters that would have been written had n been sufficiently large, not counting the terminating null character, --"
13:41:21 <fizzie> So with C99 you can do the double-snprintf thing safely.
13:41:53 <olsner> microsoft's snprintf just returns -1 instead :)
13:41:58 <quintopia> yeah i just saw that thing you pasted in the man page
13:42:06 <fizzie> olsner: So did glibc's snprintf not too long ago.
13:42:36 <fizzie> "The glibc implementation of the functions snprintf() and vsnprintf() conforms to the C99 standard, that is, behaves as described above, since glibc version 2.1. Until glibc 2.0.6 they would return -1 when the output was truncated."
13:42:43 <fizzie> Well, maybe 2.1 *is* quite old now.
13:43:07 <olsner> what's the current one? 2.11?
13:43:24 <fizzie> 2.0.6 is from December 1997; 2.1.1 from May 1999; based on ftp.gnu.org file timestamps.
13:43:32 <fizzie> Latest seems to be 2.12.
13:46:49 -!- poiuy_qwert has joined.
13:48:45 -!- ais523 has joined.
13:48:59 -!- p_q has quit (Ping timeout: 250 seconds).
13:55:26 -!- MigoMipo has quit (Read error: Connection reset by peer).
14:11:20 -!- mesquka has joined.
14:11:38 -!- mesquka has quit (Client Quit).
14:37:22 * ais523 tries to figure out why Update Manager is downloading at a rate of a few kb per s, when everything else seems to be going fine
14:39:18 <olsner> because the security updates aren't mirrored?
14:41:33 <ais523> aha, you think they're only up on one server at the other end and it's overloaded?
14:48:26 <quintopia> do i need to cast void * to something to be able to grab a pointer to exactly n bytes after where the pointer is pointing? like, cast to char * and then do regular pointer arithmetic?
14:49:06 <fizzie> Yes, and you need to use a char if you want to speak of bytes.
14:49:13 <olsner> yes, arithmetic on void* is undefined (but *usually* does the same thing as it would on char*)
14:49:34 <fizzie> Byte-based arithmetic on a void* is yet another GNU extension.
14:49:44 <fizzie> (Of course many others do it too.)
14:50:46 <quintopia> (void *)((char *)segbase+newoffset) points newoffset bytes past segbase, then?
14:51:34 <fizzie> Yes, sounds like it should.
14:52:03 <quintopia> all this would be unnecessary if memcpy took an offset :P
14:52:25 <fizzie> (Related trivia: GCC also allows arithmetic on function pointers; done like on a char* too.)
14:53:50 <fizzie> If you want to work on byteish pointers, you could just keep them as char*s or unsigned char*s in your code.
14:54:13 <fizzie> You can pass them to memcpy and void*-taking things without a cast, after all.
14:57:46 <quintopia> eh, the (required) API calls for them to be passed into my functions as void * so i'd have to cast either way
15:14:45 -!- augur has joined.
15:31:13 -!- Tritonio has quit (Quit: Leaving).
15:34:30 -!- p_q has joined.
15:35:14 -!- poiuy_qwert has quit (Ping timeout: 240 seconds).
15:36:19 -!- FireFly has quit (Quit: swatted to death).
15:37:25 <tswett> Is char always a byte in C?
15:54:21 <ais523> although a byte isn't always 8 bits
15:54:27 <ais523> if a char's 32 bits wide, so is a byte
15:54:35 <ais523> (this actually happens on some DSPs)
16:05:48 <quintopia> yeah, that's something i have to constantly keep in mind, because i took off the training wheels programming java, where a char is not a byte
16:08:41 <fizzie> Even some (many?) DSP archs opt to fake 8-bit bytes, despite the architecture being very word-oriented.
16:09:32 <yorick> quintopia: poor you...java :(
16:11:37 -!- elliott_ has joined.
16:12:51 <quintopia> yorick: i know, right? but despite sucking, it's still a joy (to me) compared to C
16:14:05 -!- elliott__ has joined.
16:16:03 -!- elliott_ has quit (Ping timeout: 240 seconds).
16:16:40 <yorick> quintopia: ever tried c++?
16:17:18 <yorick> std::_Rb_tree<std::basic_string<char, std::char_traits<char>, std::allocator<char> >, std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, known_client>, std::_Select1st<std::pair<std::basic_string<char, std::char_traits<char>, std::allocator<char> > const, known_client> >, std::less<std::basic_string<char, std::char_traits<char>, std::allocator<char> > >, std::allocator<std::pair<std::basic_string<char, std::char_tr
16:18:52 <elliott__> yorick: that's a bit disingenuous since almost all of those are defaults that compiler messages omit nowadays
16:19:29 <yorick> elliott__: tell gprof that :)
16:19:41 <elliott__> yorick: not that I'm advocating using C++...
16:19:53 <yorick> actually gprof just told me _ZNSt8_Rb_treeISsSt4pairIKSs12known_clientESt10_Select1stIS3_ESt4lessISsESaIS3_EE10_M_insert_EPKSt18_Rb_tree_node_baseSC_RKS3_
16:24:30 -!- augur has quit (Remote host closed the connection).
16:24:57 -!- augur has joined.
16:25:03 -!- augur has quit (Remote host closed the connection).
16:26:06 -!- augur has joined.
16:26:51 <quintopia> yorick: c++ sucks worse than c as far as i can tell
16:27:31 <elliott__> i don't see any relation to algol 68
16:28:15 <quintopia> i think there were less arguments in the design of those
16:28:42 <quintopia> i think it's the "a lot of stuff" that's important here
16:29:08 <quintopia> when a committee gets together and says "how much stuff can we wedge in here?" and everyone that has an idea gets to put it in
16:29:54 <elliott__> 00:17:47: <quintopia> hey oerjan, do you know if there is a novelty language on the wiki that is specified in such a way that it is turing-complete and capable of arbitrary output with the one exception that no program can output its own listing?
16:30:05 <elliott__> it doesn't disprove the TC implies quine theorem because it doesn't have sufficient output capabilities
16:30:31 <elliott__> so basically the language proves ~nothing
16:31:26 <elliott__> `addquote <crystal-cola> I just thought you might have meant the Ramanujan tau and I was WOAH he weilds heavy weapons
16:31:30 <HackEgo> 383) <crystal-cola> I just thought you might have meant the Ramanujan tau and I was WOAH he weilds heavy weapons
16:31:32 <ais523> it's on someone's talkpage, IIRC
16:31:57 <ais523> I know I wrote one (which could either run TC with no output, or sub-TC with output)
16:32:14 <ais523> which fulfils "turing-complete and capable of arbitrary output" rather vacuously
16:33:12 <elliott__> ais523: yep, but that isn't what "arbitrary output" means
16:33:35 <elliott__> ais523: arbitrary output means arbitrary output at an arbitrary point
16:33:41 <elliott__> just like arbitrary effect at an arbitrary point
16:33:41 <ais523> you have to be more precise if you want "output the result of an arbitrary computation", for instance
16:33:50 <elliott__> yes, it's called abbreviating things :)
16:35:42 -!- elliott__ has quit (Remote host closed the connection).
16:37:40 <quintopia> the page that oerjan linked during that discussion yesterday contained the spec of your language ais, and also the correctly stated version of the theorem
16:39:05 -!- KingOfKarlsruhe has joined.
16:42:19 -!- zzo38 has joined.
16:49:27 -!- cheater2 has joined.
16:59:58 -!- monqy has joined.
17:09:19 <Sgeo> "Bitcoin hits $4 a coin. Bitcoin rush is back on and people are buying graphics cards by the masses to mine new coins."
17:09:40 <Sgeo> ^^not meant to construe an actual opinion
17:09:49 <Sgeo> ^^not meant to make grammatical ense
17:10:05 <Sgeo> ^^not meant to be spelled correctly
17:10:13 <monqy> I don't understand bitcoins
17:11:17 <zzo38> Are the people invented Bitcoin in the business of selling graphics cards?
17:11:37 <monqy> graphics cards give you processing power
17:11:41 <Sgeo> Not as far as we know...
17:11:43 <monqy> processing power for manufacturing bitcoins
17:12:02 <monqy> at least that's what I think is happeneing
17:13:09 <monqy> though I can see that meaning good profit from additionally selling graphics cards
17:19:52 -!- lament has joined.
17:20:55 -!- MigoMipo has joined.
17:36:40 -!- elliott_ has joined.
17:36:49 <elliott_> crystal-cola: You might be interested in http://www.haskell.org/haskellwiki/Zeno.
17:57:18 <Sgeo> I've been banned from Cybertown apparently
17:58:58 -!- variable has quit (Ping timeout: 260 seconds).
18:00:01 <elliott_> What really happened is that the ban servers have gotten bored from doing absolutely nothing since nineteen ninety-five.
18:00:05 <elliott_> And just started banning people at random.
18:00:11 -!- variable has joined.
18:00:32 <elliott_> oh wow the cybertown website uses popups this is brilliant olsner
18:01:06 <elliott_> "See the new features introduced so far this year in Cybertown"
18:16:46 <Gregor> Other than clearly retarded.
18:16:53 <monqy> http://upload.wikimedia.org/wikipedia/en/e/e3/CT_shot.jpg quality entertainment
18:18:19 <Gregor> I love how it's one guy standing lonely and alone :P
18:18:50 <monqy> the cybertown homepage is quality too
18:19:20 <Sgeo> Well, it used to be free. It was much more active is when it was free
18:19:22 <elliott_> And one of Sgeo's endless necrophilic virtual reality obsessions.
18:19:34 <elliott_> monqy: WHAT THE DRUG COMPANIES DON'T WANT YOU TO KNOW...
18:19:59 <crystal-cola> it's all Euclidean geometry, why does nobody create exotic spaces?
18:20:07 <olsner> Gregor: maybe it's single player :)
18:20:13 <Sgeo> crystal-cola, Worlds has exotic spaces
18:20:39 <Sgeo> Well, not hyperbolic or elliptical, but still.. weird
18:20:47 <Sgeo> crystal-cola, it's old. I don't know about good
18:20:48 <elliott_> crystal-cola: because it'd difficult
18:20:59 <elliott_> crystal-cola: PH wanted a non-Euclidean raytracer
18:21:05 <elliott_> crystal-cola: but the problem is that photons make no sense or something
18:21:18 <crystal-cola> http://www.sessionmagazine.com/img/nature/worlds-10-smallest-animals/worlds-10-smallest-animals07.jpg
18:21:23 <Sgeo> It uses portals to separate rooms. Mix up the portals and bam, there's weirdness
18:21:37 <Sgeo> There's a maze in Worlds where nothing makes sense
18:21:46 <Sgeo> crystal-cola, are you on Windows or can otherwise use WINE?
18:21:49 <Sgeo> I want to show you?
18:22:07 <elliott_> `addquote <crystal-cola> http://www.sessionmagazine.com/img/nature/worlds-10-smallest-animals/worlds-10-smallest-animals07.jpg <crystal-cola> worlds biggest thumb
18:22:08 <HackEgo> 384) <crystal-cola> http://www.sessionmagazine.com/img/nature/worlds-10-smallest-animals/worlds-10-smallest-animals07.jpg <crystal-cola> worlds biggest thumb
18:22:31 <elliott_> [mirrored http://ompldr.org/vOGhzZQ]
18:22:34 <Sgeo> (Note that Worlds.com is widely regarded as a patent troll)
18:23:05 <elliott_> wow holy shit the people on http://worlds.com/ look fucked up
18:24:24 <Sgeo> Note: the graphics are not as good as the page makes them seem
18:25:08 <Sgeo> Oh, and if you don't pay, you don't get 3d avatars
18:25:26 <elliott_> are you just an infinitely thin piece of cardboard
18:25:31 <Sgeo> elliott_, yes.
18:25:40 <elliott_> can people walk through you if you stand sideways
18:25:53 <Sgeo> I don't remember if avatars collide
18:26:01 <monqy> walk through everyone forever
18:26:11 <Sgeo> Oh, and there's no privacy. You can unilaterally add people to your friends list
18:26:25 <elliott_> what does that have to do with privacy
18:26:36 <monqy> what does friends list mean
18:26:51 <olsner> it's like a list, but it contains friends
18:27:12 <monqy> do friends hand out personal information
18:27:35 <Sgeo> Well, you can teleport to anyone on your friends list. You can see that they're online
18:27:50 <elliott_> crystal-cola: what an good grammer
18:27:51 <monqy> sounds like a good way to have fun
18:28:52 <Sgeo> Oh, and for official worlds, if you haven't already, the client needs to download and install them, which requires restarting the client. Worlds made by users don't have this issue
18:28:54 <crystal-cola> "Here: this is a box of numbers. It's called a matrix. Next topic!"
18:28:54 <crystal-cola> You have accurately described the aim of public education policy in the USA.
18:29:09 <Sgeo> There's a place called the Gauntlet that loads all the official worlds
18:29:15 <elliott_> Sgeo: why do you know all this
18:30:08 <elliott_> what do you mean how does it work
18:30:12 <elliott_> clients tell server what they're doing
18:30:16 <elliott_> server tells it to all the other clients
18:30:18 <crystal-cola> if I made a networked game with characters in it there would be too much lag
18:30:26 <elliott_> crystal-cola: clients usually do simple prediction
18:30:29 <elliott_> if someone's walking on a path
18:30:37 <elliott_> it'll continue showing them walking on that path
18:30:53 <elliott_> but anyway servers have to have low-latency and decent bandwidth, that's sort of the point
18:31:13 <Sgeo> Unless you're inieros
18:31:42 <zzo38> There are other thing too such as making telnet-based system, not needing as much bandwidth or processing powers as others, and no special software is needed, in addition it work on all computers
18:31:48 <elliott_> crystal-cola: Well, it's not rocket science. You figure out how to send the least information possible from the clients, and have simple client-side prediction.
18:32:01 <Sgeo> Oh, and Worlds expects you to pay for their world creation tool... but it's activated by a single line in an .ini file
18:32:39 <monqy> the question now is if they're lazy or idiotic
18:33:03 <elliott_> crystal-cola: the internet is stupid fast
18:33:05 <zzo38> monqy: Or if it is intentional for some reason
18:33:07 <Sgeo> On the plus side, they made some cool stuff
18:33:19 <Sgeo> That aforementioned non-Euclidean maze, an invisible maze
18:33:22 <Sgeo> A pretty garden
18:33:27 <elliott_> crystal-cola: we have latency to within a pretty small factor of the speed of light
18:33:38 <elliott_> crystal-cola: even the slowest connections (apart from in the US) can send a whole mebioctet a second
18:33:38 <monqy> what if I dislike mazes
18:33:49 <zzo38> monqy: Then don't play those kind of games.
18:33:49 <elliott_> crystal-cola: that's 8,388,608 bits per second
18:34:00 <elliott_> crystal-cola: what kind of game has 8,388,608 bits of state per second? none :)
18:34:50 <crystal-cola> and nobody does that so there's probably some really good games and stuff that can run on a pentagonal grid
18:35:25 <Sgeo> monqy, then come look at the pretty garden ;)
18:35:34 <elliott_> yeah come look at Sgeo's pretty garden
18:36:05 <Sgeo> Also, it's the only multiuser 3d space that I know of that has mirrors
18:36:07 <monqy> That game looks pretty aesthetically repugnant
18:36:13 <monqy> I doubt the pretty garden is pretty at all
18:36:44 -!- TeruFSX2 has joined.
18:36:58 <Sgeo> Oh, ActiveWorlds has mirrors too. But they're crap.
18:37:03 <zzo38> With a telnet-based system an entire screenful of information should be at most 10000 octets (usually a lot less, though). If you want to be realistic you can add some physics stuff, but for games such as chess you should not need such things.
18:37:07 <Sgeo> Worlds mirrors are awesome
18:37:07 <elliott_> everything about all of these "games" is crap
18:37:19 <monqy> except worlds mirrors
18:37:24 <monqy> I hear they're awesome
18:37:55 <elliott_> zzo38: dude "simplicity" should not come before making the game you actually want
18:38:02 <elliott_> if someone wants to make a networked threedee game but it sounds hard
18:38:07 <elliott_> the answer is not to completely redesign the game and make it use telnet
18:38:16 -!- TeruFSX2 has quit (Remote host closed the connection).
18:38:52 <zzo38> elliott_: Well, yes; it depends what game you are making, of course. You use different system for different games.
18:38:58 <Sgeo> Worlds' Ground-Zero is even more empty than usual
18:39:13 <elliott_> crystal-cola: it's kind of... fractal?
18:39:30 <elliott_> well sort of self-similar t least
18:41:47 -!- azaq23 has joined.
18:41:51 <zzo38> What should such a magic item cost? http://zzo38computer.cjb.net/dnd/options/Gibbering_Mouthers_Ring.i
18:41:52 -!- oerjan has joined.
18:42:31 <zzo38> Two items are already specified the price Coloring_Ring.i Magic_Pair_Balls.i
18:43:20 <Sgeo> Be careful to install Worlds in a place where a user can write to it
18:43:26 * Sgeo glaredly glares
18:43:48 <elliott_> "glaredly gla" why this sentence
18:44:59 <crystal-cola> elliott_: You could make a nice game on a graph actually
18:45:16 <elliott_> crystal-cola: it is kind of self similar right?
18:45:46 <crystal-cola> It can't be draw in a euclidean plane with distances preserved is th problem
18:46:00 <crystal-cola> so I made the distances bigger as it gets out but you should imagine all pentagons being equal sizes
18:46:51 <elliott_> crystal-cola: that sounds awesome
18:46:51 <crystal-cola> I suppose you could take a lot of games like sokoban and just redo them on an arbitrary graph
18:49:52 <zzo38> Do you prefer StarWars or StarTrek?
18:54:16 <crystal-cola> elliott_: sokoban is really hard to design levels for
18:54:27 <crystal-cola> elliott_: Any ideas for a nice game I could graphify that wouldn't be too hard?
18:54:30 <elliott_> a said hant tha wampas nat sakaban
18:54:42 <elliott_> hant tha wampas as playad an a graph
18:54:57 <elliott_> crystal-cola: what abat tatras
18:56:44 <crystal-cola> but in tetris there is a distinguished "down" direction
18:58:43 <zzo38> Can you make 4D sokoban?
18:58:45 <Sgeo> elliott_, do you have an opinion on Smalltalk/X?
18:58:57 <elliott_> crystal-cola: make it spiiiiral
18:59:10 <elliott_> Sgeo: don't know/care/anything/really/honestly/jegus
19:01:08 <crystal-cola> zzo38: Yes you could do 4D sokoban although A 4D graph is probably difficult to display in a nice way
19:01:12 -!- lament has quit (Ping timeout: 240 seconds).
19:01:25 <crystal-cola> zzo38: I am just considering arbitrary planar graphs because I can draw them easily (without any overlaps)
19:01:46 <crystal-cola> zzo38: Although I really would like better ways than projection to visualize 4D geometry
19:04:45 <olsner> was thinking about planar graphs the other day... is there anything like non-planar graphs but where even 3D is not enough to display the graph?
19:06:05 <elliott_> can you have a graph so nonplanar you can't show it in ANY number of dimensions :D
19:06:41 <olsner> if they exist, they should be called "absurd graphs" or something
19:06:54 <Sgeo> "Looks like it integrates automatically with CVS for code management--I didn't try it out
19:07:06 <Sgeo> Then again, this is a blog post from 2004
19:07:29 <elliott_> "Interesting note: Did you know that all encoders must have a decoder built-in? Because a P frame isn't the difference between the original previous frame and the original current frame. NO! It is the difference between the decoded previous frame and the original current frame. This is because the decoder doesn't have the original previous frame, only a computed approximation! Cool, right???"
19:07:46 <crystal-cola> olsner: You can embed any graph in 3D... proof: I dunno I just know it's true
19:07:57 <oerjan> elliott_: um, no, because 3d is enough to cross lines
19:08:13 <oerjan> you just need two layers
19:08:14 <elliott_> oerjan: i was dreaming while olsner was
19:08:16 <crystal-cola> olsner: Here you can just put the full symmetric n graph points randomly around a circle.. and they almost never intersect. I think that proves it
19:08:28 <zzo38> Other idea is Puzzle-Boy in 3D, possibly also having some (but not all) blocks affected by gravity
19:08:36 <oerjan> now if you pass to simplicial complexes...
19:09:10 <olsner> seems that it must be true, but I find it annoying... why does 2D have limitations, but 3D just suddenly makes *all* graphs possible?
19:09:24 <crystal-cola> olsner: I think it's because the lines between nodes are a 1D object
19:09:34 <elliott_> olsner: especially since there's an n[caret]three <-> n[caret]two bijection...
19:09:52 <crystal-cola> and as oerjan says, if you're consider triangles instead of lines then you get a similar planar/non-planar distinction except in 3D space
19:10:36 <crystal-cola> olsner: I got it. It's like if you take the real line you can cut it in half by removing a point..
19:10:39 <ais523> happy Australian mailman reminders day!
19:10:47 <crystal-cola> olsner: but if you take the plane and remove a point it doesn't cut it in half
19:11:42 <elliott_> ais523: asterisk mailman mailing list
19:12:14 <oerjan> orientability of surfaces is somewhat similar to planarity of graphs, in that way.
19:12:23 <olsner> hmm, how about the surface of a torus - are all graphs possible there because of the wrapping? iirc at least K3,3 can be embedded on a torus surface
19:13:22 <elliott_> oerjan: why does the Z[caret]three <-> Z[caret]two bijection not show that all graphs can be embedded in twodee spcae?
19:13:29 <ais523> K_7 can be embedded on a torus, but not K_8
19:13:49 <crystal-cola> By the way, 4 color theorem is for planar graphs but I think it's 7 color theorem for the torus
19:14:01 <ais523> I've submitted "fit an embedding of K_7 on a torus", together with a few other restrictions, to at least two puzzle compilations
19:14:10 <oerjan> elliott_: um because doesn't preserve anything resembling connectedness?
19:14:16 <ais523> (to be precise, you have to do it with maps not graphs, and on a 5x5 grid)
19:14:22 <ais523> elliott_: they're both called enigma
19:14:39 <elliott_> ais523: haha, the ball game and agora?
19:15:07 <ais523> scheduled for the enigma (computer game) 1.1 release, too
19:15:48 <ais523> no, it probably should be by now
19:15:50 <crystal-cola> The old civilization games were played on a torus (topologically)
19:15:53 <ais523> but dev activity's gone mostly silent
19:15:58 <elliott_> ais523: it's been years, hasn't it?
19:16:19 * ais523 updates Enigma svn repo
19:16:29 <oerjan> crystal-cola: um they wrapped from north to south pole?
19:16:37 <elliott_> ais523: I mean, since they started doing one point one
19:16:40 <ais523> yep, no changes since the Christmas advent day thing
19:16:41 <elliott_> I remember compiling it on my Mac
19:16:51 <ais523> and 1.01 came out ages ago, yes
19:16:53 <crystal-cola> but I think someone pointed out that that was ridiculous so they made it optional in later versions
19:17:13 <elliott_> ais523: is that mag-heut forum still existent/insane?
19:17:22 <ais523> although almost silent too
19:17:41 <ais523> I submit a new level there now and again
19:17:44 <elliott_> you'd probably get banned for posting too much no? :D
19:17:45 <ais523> although I'm not making them all that often
19:18:05 <ais523> here's my most recent one, which was a response to an April Fool's joke: http://www.mag-heut.net/blackball/index.php?act=ST&f=14&t=1440&s=
19:18:23 <elliott_> You do not have permission to view this topic
19:18:23 <elliott_> You are not logged in, you may log in below
19:18:25 <crystal-cola> elliott_: I don't know if you actually like my graph idea
19:18:30 <elliott_> i'd have to go through the awful registration process
19:18:42 <ais523> oh, right, I forgot that that subforum was registration-only for no reason at all
19:18:51 <ais523> direct link: http://www.mag-heut.net/blackball/levels/submits/ais52377_1.xml
19:18:56 <ais523> cheater2: I can read about 50% of it
19:19:10 <cheater2> ais523, is it the 50% that's copied 1:1 from englih
19:19:16 <elliott_> ais523: it's on some free hosting thing, isn't it?
19:19:34 <ais523> you can play that on a trunk version of Enigma
19:19:48 <ais523> it's a one-dimensional Sokoban
19:19:52 <cheater2> ais523, what other languages can you speak?
19:20:12 <ais523> because someone said Enigma was going one-dimensional as an April Fool's joke
19:20:17 <ais523> and suggested a 1D Sokoban as an example
19:20:20 <ais523> then I had to find a way to make it work
19:21:32 <elliott_> ais523: is it just a long line? :P
19:21:49 <ais523> elliott_: it has teleporters in
19:21:51 <Sgeo> eXept hates Monsanto partially due to pig breeding patents
19:21:58 <ais523> so you can actually go past the blocks
19:22:06 <Sgeo> I didn't know Monsanto had anything to do with pigs
19:22:22 <cheater2> monsanto has to do with everything
19:22:23 <Sgeo> I thought they were more plant-y.
19:22:28 <cheater2> all the food you buy in america is monsanto
19:23:28 <ais523> cheater2: if that was directed at me, it's vacuously true, I've never bought food in (the United States of) America
19:23:36 <ais523> although I have bought food in Canada, which is in America the continent
19:23:51 <elliott_> there is no American continent, is there?
19:24:02 <ais523> also, in response to your question earlier, English is the only language I speak with any real amount of proficiency
19:24:15 <ais523> I can pronounce written Hungarian pretty well, but generally have no idea what it means
19:24:24 <zzo38> How many states are there in America? (This is kind of a trick question)
19:24:27 <cheater2> ais523, you should learn a new language
19:24:28 <elliott_> asztal asztal asztal asztal asztal
19:24:41 <cheater2> ais523, it's very good for the mind
19:24:47 <ais523> zzo38: are you counting states that make up an entire country, as well as states that only make up fractions of countries?
19:24:52 <olsner> zzo38: One, the United State of America? :P
19:25:06 <ais523> cheater2: the major issue is that the language teaching in the schools in the UK is awful
19:25:13 <ais523> and doesn't actually teach the language
19:25:31 <cheater2> ais523, go to a private school?
19:25:33 <ais523> elliott_: I don't know that for certain
19:25:44 <cheater2> i've had very good luck with learning english while in poland.
19:25:46 <ais523> cheater2: well, I'm at University now, going back to school would make people look at me suspiciously
19:25:49 <cheater2> i went to the uk and i was fluent.
19:26:01 <cheater2> ais523, a language school, you frea
19:26:02 <zzo38> ais523: I have not thought of those interpretations, although that is possible. What I heard was 49 (only the United States has states and one of them is not part of the continent)
19:26:10 <ais523> cheater2: well, they don't teach Enlglish very well over here either
19:26:13 <elliott_> ok cheater conversations are great as long as you only see one side of them
19:26:19 <ais523> foreigners are often better at English than the typical Englishman
19:26:23 <elliott_> ais523: they teat Enlglish terrible
19:26:31 <ais523> cheater2: not intentionaly
19:26:32 <elliott_> MORE EVIDENCE OF OUR BROKEN SYSTEM
19:26:39 <zzo38> crystal-cola: Idea of what?
19:26:42 <ais523> although I am kind-of good at unintentional trolling, so possibly
19:27:04 <crystal-cola> zzo38: Well I was thinking it could be interesting to take a tile based game and adapt it to a planar graph
19:27:17 <elliott_> (a rare example of the singular plural)
19:28:44 <zzo38> crystal-cola: Some ideas: Puzzle-Boy, Sokoban, Tetris, Chess, ...
19:29:08 <crystal-cola> although I will find out what puzzle boy is first
19:29:22 <ais523> elliott_: I had a crazily muddled dream last night; towards the end, I was playing a variant of Hex with someone where after the first player's first turn, you could place two counters rather than one, but they had to be adjacent
19:29:23 <elliott_> crystal-cola: chip's challenge
19:29:38 <elliott_> ais523: psht, in my dreams I just argue with esr
19:29:40 <ais523> but we gave up after a while when we realised we were playing it on a square grid rather than a hexgrid, which slightly defeated the point of the game
19:29:45 <elliott_> by my dreams I mean one dream a couple of days ago
19:30:06 <olsner> hmm, I think I missed which part of that question was a trick question :P
19:30:08 <elliott_> ais523: i was right but esr walked away instead of listening to my rebuttal
19:30:54 <elliott_> ais523: he was claiming that he invented the term "hacker" as used in relation to coderfolken (<-- best word Gregor approved)
19:31:10 <elliott_> i tried to tell him about the model train stuff at mit in the fifties
19:31:16 <ais523> I think he's responsible for popularising it
19:31:26 <ais523> but didn't come up with it in the first place
19:31:28 <elliott_> lol i like how you're expecting my dream esr to be reasonable
19:33:18 -!- KingOfKarlsruhe has quit (Quit: ChatZilla 0.9.86.1 [Firefox 3.6.16/20110319135224]).
19:36:38 <elliott_> wonder where ph has been lately
19:36:51 <olsner> crystal-cola: hi and welcome
19:38:35 <elliott_> crystal-cola: welcome to the hoaus
19:58:41 <Sgeo> Smalltalk/X confuses me
20:00:48 <elliott_> woo i just got a new language idea
20:03:43 <elliott_> olsner: it's like prolog but not. maybe.
20:04:24 <olsner> Aha, so it's either like prolog or it isn't. Check.
20:08:14 <oerjan> olsner: no, but is logically equivalent to and, not or
20:08:23 <Sgeo> Smalltalk/X wants me to use Borland?
20:08:49 -!- TeruFSX has quit (Ping timeout: 258 seconds).
20:08:55 <olsner> oerjan: "either like prolog but not or it isn't." then :P
20:09:52 <oerjan> and here i thought i was so clever, not using quote marks
20:11:37 <elliott_> crystal-cola: I think it's sort of like Prolog but done with lazy hash tables... I got the idea from a log of here
20:12:39 <elliott_> by hash table i don't really mean hash table btw
20:12:46 <elliott_> i mean a function but acting kind of like a hash table
20:13:44 <elliott_> foo X Y<-(bar X 99 Y) <-- then R<-(foo 90 R) is equal to R<-(bar 90 99 R)
20:14:07 <olsner> elliott_: no part of that line makes any sense
20:14:22 <elliott_> just watch crystal-cola will know exactly what i mean
20:15:42 <crystal-cola> a <- b ; b <- a then x <- a is an infinite loop?
20:15:57 <elliott_> crystal-cola: oh man that <-- was a comment :)
20:16:33 <elliott_> there is no <- at the top level
20:16:45 <elliott_> Name<-Expr pulls the value of Name out of Expr and results in it
20:16:48 <crystal-cola> foo X Y<-(bar X 99 Y) <-- you just did one here
20:17:07 <elliott_> Result<-(add 9 9 Result) ;; this results in 9+9
20:17:27 <elliott_> because that makes no sense at the top level
20:17:30 <elliott_> top level is declarations, not expressions
20:18:06 <elliott_> because that's not how it parses
20:18:54 <elliott_> no no it was just to confuse you ;D
20:19:17 <oerjan> > do rec { x <- [1:y]; y <- [x] }; [x]
20:19:18 <lambdabot> [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1...
20:19:41 <elliott_> f A<-B ;; invalid, B is not in scope
20:20:13 <elliott_> with your declaration, R<-(f R) just gives you f itself in R
20:20:19 <elliott_> (function/relation things are first-class)
20:20:20 <oerjan> > do rec { x <- [1:y, 2:y]; y <- [x] }; [x]
20:20:22 <lambdabot> [[1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1,1...
20:20:40 <oerjan> > map head $ do rec { x <- [1:y, 2:y]; y <- [x] }; [x]
20:21:24 <elliott_> i'm not sure how to do constructors, I think just empty relations
20:21:41 <elliott_> that means that (succ A) is true for all A
20:22:23 <elliott_> i'm not sure i have pattern matching like that
20:22:52 <elliott_> add (suc Y) X Z<-(desucc Z (R<-(add Y X)))
20:22:58 <elliott_> I suppose it could be sugar though
20:23:43 <elliott_> hmm it would be cool if I could type that zero and succ
20:24:36 <elliott_> then (succ A) is true iff A is a nat
20:25:36 <elliott_> crystal-cola: that seems redundant though
20:27:13 <elliott_> add (succ Y<-(nat Y)) X<-(nat X) R<-(desucc Z<-(add Y X) R)
20:28:18 <elliott_> crystal-cola: but sort of cool...
20:28:22 -!- TeruFSX has joined.
20:30:49 <elliott_> crystal-cola: well i apologise :D
20:31:46 <crystal-cola> if you can only have one <- per line is it still possible to program?
20:33:43 <elliott_> crystal-cola: erm i'm allowing arbitrary :P
20:33:53 <elliott_> computations can describe on arbitrary amounts of other computation this way
20:33:57 <elliott_> it can't if you onlu allow one per line
20:34:32 <crystal-cola> could you make a syntax that doesn't use brackets
20:34:35 <elliott_> (diff) (hist) . . ACIDIC; 19:10 . . (-4) . . Zzo38 (Talk | contribs) (use ASCII quotation marks)
20:34:46 <elliott_> zzo38: it is possible that the non-ascii quotation marks are part of the language, being instructions...
20:43:04 <crystal-cola> However, if we sit back calmly and think about it, we can see there isn’t really a problem. All we need to do is define, for any type X, a type IsContr(X) representing the proposition “X is contractible,” such that when we then go on to define “X is a (-1)-type” in terms of “X is contractible,” the type IsContr(X) turns out to in fact be a (-1)-type. It’s a bit bootstrappy, but not circular or paradoxical
20:45:04 -!- TeruFSX has quit (Ping timeout: 246 seconds).
20:48:24 -!- TeruFSX has joined.
20:49:08 <oerjan> elliott_: i think it's rather clear that the language is ASCII-based...
20:49:36 <elliott_> oerjan: yes but unless he has actual proof of it it's iffy to be editing someone else's spec in a way that changes semantics.
20:49:44 <elliott_> the talk page would be more appropriate surely
20:49:50 <zzo38> elliott_: I think it is clear those were mistake, although if the author of that page dislikes it he can change it back please
20:53:33 * Sgeo considers playing America's Army
20:54:06 <zzo38> However, it is possible the non-ASCII was correct, but reading that table as well as the rest of the article, it seems those are mistakes, so I changed it. The author of that article can change it back if I am incorrect (in which case, also a clarification should be specified)
20:56:06 -!- MigoMipo has quit (Read error: Connection reset by peer).
20:57:35 <Sgeo> elliott_, why not?
20:57:43 <Sgeo> Free multiplayer FPS
20:57:56 <elliott_> Sgeo: because a terrible fps made solely to act as us army propaganda is going to be ... well ... terrible???
20:58:13 <Sgeo> What makes you think it's terrible?
20:58:30 <Sgeo> I mean, yes, it's US Army propaganda, but that doesn't reflect on the quality of the gameplay itself...
20:58:34 <elliott_> well it's sort of the same way i'd assume Kim Jong-Il's Happy Fun Time Shooting Game For Adults would be terrible.
20:58:51 <elliott_> the focus isn't to be a good popular fps game, it's to make people sign up for the army
21:00:06 <fizzie> I think I heard it was game-wise quite good, as far as these things go. (All hearsay, of course.)
21:00:21 <elliott_> (you have those in finland right)
21:02:34 <Sgeo> From what I've read on TVTropes, it's supposedly accurate in some ways. Although I don't think it will cause your computer to kill you if you die in the game
21:03:20 -!- azaq23 has quit (Quit: Leaving.).
21:05:16 <fizzie> They could use the same function those *hackers* use to make computers explode. (Cf. http://www.theregister.co.uk/2000/07/04/hackers_can_make_your_pc/ )
21:06:29 -!- zzo38 has quit (Remote host closed the connection).
21:14:10 <yorick> crash when kick self from rcon?
21:15:21 -!- lament has joined.
21:33:13 <Sgeo> " All known spaceships in Life travel either orthogonally (only horizontal or vertical displacement) or diagonally (equal horizontal and vertical displacement) at one of the twelve known speeds"
21:33:20 <Sgeo> Anyone want to update the wiki?
21:35:03 <Sgeo> http://conwaylife.com/wiki/index.php?title=Spaceship/Snippet
21:35:09 <Sgeo> The main article is updated
21:37:48 <Sgeo> The Register actually believed something WWN wrote?
21:43:27 -!- elliott_ has quit (Remote host closed the connection).
21:46:30 <Sgeo> "But alas, a Web search for the NCPF yielded only the North Carolina Psychological Foundation, which, as we consider it, might have a few valuable insights into this story after all... "
21:48:53 <cheater2> Sgeo, it was a troll post obviously
21:50:32 -!- elliott has joined.
21:50:35 <elliott> 21:37:48: <Sgeo> The Register actually believed something WWN wrote?
21:50:46 <elliott> Sgeo has never read the register before ever
21:52:50 <oerjan> maybe it just didn't register
21:59:16 <elliott> oerjan: wow, that binary to unary program is tiny
21:59:38 <elliott> i'm pretty convinced that /// is the most elegant esolang ever now
21:59:44 <elliott> probably the most elegant TC language, too
22:01:08 <elliott> http://esolangs.org/wiki/Slashes
22:01:34 <elliott> it's TC even if only / and \ are allowed
22:02:05 <elliott> it's like thue but better basically :)
22:02:33 <elliott> I was honestly surprised when oerjan showed it TC
22:02:43 <elliott> it barely seems to do any computation at all
22:03:12 <variable> http://www.scottaaronson.com/writings/bignumbers.html --> well written explanation of Busy Beaver and related math
22:04:49 <variable> <elliott> that's a classic --> at my link?
22:05:09 <elliott> oerjan: is your conversion thing easily generalisable to bases other than binary?
22:05:20 <variable> elliott: it puts everything together nicely. I knew the stuff before - it is nice and easy to read :-)
22:06:08 <micahjohnston> so it says that there are only orthogonal or diagonal spaceships, but then it says “it is known that Life has spaceships that travel in all rational directions at arbitrarily slow speeds.”
22:06:27 <elliott> micahjohnston: former is out of date
22:06:46 <elliott> because a self-replicating knightship was constructed (insert exclamation mark here)
22:06:52 <Sgeo> Well, it could be known that something exists without having an example of it
22:06:58 <Sgeo> But we have an example of it now
22:07:18 <elliott> it only took forty years to find
22:07:25 <micahjohnston> Sgeo: yeah, taht's what I thought, although I wondered what kind of proof about Life could say that
22:07:51 <elliott> you can construct a UTM that has a constructor
22:08:01 <elliott> IIRC made only out of things that can be constructed by it
22:08:07 <elliott> so that's pretty much a proof right there
22:08:13 <elliott> http://www.conwaylife.com/wiki/index.php?title=Gemini
22:08:19 <elliott> Bounding box 4217807×4220191
22:15:55 <elliott> about my game of life self-replicating spaceship?
22:16:14 <copumpkin> crystal-cola: I'm just pretending to be the twss bot, sorry :)
22:17:00 <copumpkin> elliott: have you not been on the internet for the past couple of days?
22:17:09 <copumpkin> everyone's talking about the twss discovery paper
22:18:52 <oerjan> <elliott> oerjan: wow, that binary to unary program is tiny <-- btw unary to decimal is embedded in the deadfish interpreter; it's longer but essentially the same principle in reverse
22:19:03 <elliott> oerjan: right; can it be generalised easily?
22:20:22 <oerjan> <elliott> oerjan: is your conversion thing easily generalisable to bases other than binary? <-- i guess i just answered that :)
22:20:33 <elliott> i meant how easy is base ten to unary
22:24:19 <elliott> it's not a positional base
22:24:30 <elliott> obviously since binary has zero and one
22:24:47 <elliott> its great for all numbers between -0 and 0
22:25:03 <oerjan> !slashes /0/|//1/|*/2/|**//3/|***//4/|****//5/|*****//6/|******//7/|*******//8/|********//9/|**********//*|/|**********//|//100
22:25:09 <elliott> variable: rereading that article: it's really cool how values of busy beaver can "give" you theorems
22:25:42 <elliott> like it says if you have a goldbach testing machine with n states then knowing BB(n) and having a lot of time on your hands lets you decide Goldbach
22:26:24 <elliott> "This infinite hierarchy of ever more powerful machines was formalized by the logician Stephen Kleene in 1943 (although he didn’t use the term ‘super duper pooper’)."
22:26:24 <oerjan> !slashes /0/|//1/|*//2/|**//3/|***//4/|****//5/|*****//6/|******//7/|*******//8/|********//9/|**********//*|/|**********//|//100
22:26:26 <EgoBot> ****************************************************************************************************
22:26:33 <elliott> this is why Stephen Kleene is widely disowned by prominent scientists and mathematicians
22:26:46 <crystal-cola> write a program that tests if a number satisfies any algebraic relations
22:26:46 <elliott> oerjan: can you give me your /// skillz :(
22:27:02 <ais523> elliott: that was pretty obvious
22:27:03 <crystal-cola> then run it and if it takes longer than BB(progam size) you know the number is trancendental
22:27:18 <ais523> that /// program, I mean
22:27:48 <elliott> hmm how easy is it to translate L systems to ///?
22:27:53 <oerjan> elliott: the only real trick here is to note that if you have something of the form ||||*|**|*|*** you can easily swap *'s over the |'s in any direction with any multiplier you choose
22:27:59 <elliott> oerjan: new problem for you :D
22:28:05 <crystal-cola> elliott that's not just nonsense that can't be done in practice
22:28:18 <crystal-cola> although it's not with turing machine syou can do proofs like this using other machines
22:28:44 <elliott> i don't really care about the practicality of something, the method itself is interesting imo
22:29:19 <crystal-cola> :D yes but trancendence proofs is not normally considered "application"
22:29:42 <elliott> this means that golf actually has relevance
22:29:53 <elliott> the smaller you can golf a Goldbach testing TM in number of rules
22:30:03 <elliott> that seems utterly profound
22:30:10 <oerjan> elliott: what are L systems again
22:30:17 <elliott> oerjan: these things http://en.wikipedia.org/wiki/L-system#Example_2:_Fibonacci_numbers
22:30:34 <elliott> oerjan: it's basically thue :D
22:31:00 <crystal-cola> fib is interesting because it's connected with irrational numbers
22:32:15 <crystal-cola> BABABBABABBABBABABBAB <-- this sequence of ups and alongs stays as close as possible to a line of gradiant phi
22:32:24 <oerjan> elliott: um no it's not thue, it's applying all deterministically
22:36:29 <crystal-cola> I wonder why I don't want spiders to climb on me
22:37:10 <crystal-cola> there is some spider here and I was worried it would climb on to me
22:37:40 <copumpkin> you're afraid of scaring it and having it bite you, maybe?
22:40:53 <elliott> crystal-cola: maybe you're afraid it'll crawl into your crystal cola
22:44:28 <elliott> "If we could bake bread at 20,000,000 degrees Kelvin" yum
22:46:40 <Sgeo> THAT WAS A PUN, OR A PLAY ON WORDS
22:47:10 <lambdabot> [1,1,1,1,2,1,1,3,1,1,4,1,1,5,1,1,6,1,1,7,1,1,8,1,1,9,1,1,10,1,1,11,1,1,12,1...
22:47:14 <elliott> concatenate all your mothers
22:47:15 <lambdabot> [1,0,1,1,1,1,1,2,1,1,3,1,1,4,1,1,5,1,1,6,1,1,7,1,1,8,1,1,9,1,1,10,1,1,11,1,...
22:47:18 * Sgeo was specifically acting like Death :/
22:47:29 <crystal-cola> > foldr (\x ys -> x + 1/ys) . concatMap (\n -> [1,n,1]) $ [0..100]
22:47:30 <lambdabot> Overlapping instances for GHC.Show.Show ([[a]] -> [a])
22:47:54 <crystal-cola> > foldr (\x ys -> x + 1/ys) 10000000 . concatMap (\n -> [1,n,1]) $ [0..100]
22:47:59 <crystal-cola> > foldr (\x ys -> x + 1/ys) 10000000 . concatMap (\n -> [1,n,1]) $ [0..1000]
22:48:23 <crystal-cola> > foldr (\x ys -> x + 1/ys) 10000000 . concatMap (\n -> [1,2*n,1]) $ [0..1000]
22:49:01 -!- Mannerisky has quit (Ping timeout: 260 seconds).
22:50:57 <crystal-cola> > foldr (\x ys -> x + 1/ys) 10000000 . concatMap (\n -> [1,2*n,1]) $ [0..1000] :: CReal
22:51:10 <elliott> 10000000? what a poor imitation of infinity
22:51:14 <crystal-cola> > foldr (\x ys -> x + 1/ys) 1 . concatMap (\n -> [1,2*n,1]) $ [0..100] :: Rational
22:51:17 <lambdabot> 559742388386760964326534990837201234645965641795425545200281432914515657756...
22:51:20 <crystal-cola> > foldr (\x ys -> x + 1/ys) 1 . concatMap (\n -> [1,2*n,1]) $ [0..100] :: Rational
22:51:23 <lambdabot> 559742388386760964326534990837201234645965641795425545200281432914515657756...
22:51:24 <crystal-cola> > foldr (\x ys -> x + 1/ys) 1 . concatMap (\n -> [1,2*n,1]) $ [0..10] :: Rational
22:51:35 <HackEgo> !haskell print "`echo test"
22:51:38 <elliott> > foldr (\x ys -> x + 1/ys) 99999999999999999999 . concatMap (\n -> [1,2*n,1]) $ [0..10] :: Rational
22:51:40 <lambdabot> 2362417702668199999998901872597869 % 869084904271099999999596021504969
22:51:43 <elliott> > foldr (\x ys -> x + 1/ys) 0 . concatMap (\n -> [1,2*n,1]) $ [0..10] :: Rational
22:51:45 <lambdabot> *Exception: Ratio.%: zero denominator
22:51:53 <crystal-cola> > 2362417702668199999998901872597869 / 869084904271099999999596021504969
22:51:54 <elliott> e = *Exception: Ratio. / : zero denominator
22:52:07 <crystal-cola> elliott: hehe that's cool how it's got the 9s in the middle
22:52:24 <elliott> <elliott> > foldr (\x ys -> x + 1/ys) 0 . concatMap (\n -> [1,2*n,1]) $ [0..10] :: Rational
22:52:24 <elliott> <lambdabot> *Exception: Ratio.%: zero denominator
22:52:25 <elliott> <elliott> e = *Exception: Ratio. / : zero denominator
22:52:27 <crystal-cola> > foldr (\x ys -> x + 1/ys) 999 . concatMap (\n -> [1,2*n,1]) $ [0..3] :: Rational
22:52:33 <crystal-cola> > foldr (\x ys -> x + 1/ys) 9999 . concatMap (\n -> [1,2*n,1]) $ [0..3] :: Rational
22:52:39 <crystal-cola> > foldr (\x ys -> x + 1/ys) 999999 . concatMap (\n -> [1,2*n,1]) $ [0..3] :: Rational
22:52:42 <elliott> this is continued fraction right
22:52:58 <crystal-cola> can we find an excellent approximation of e that is like
22:53:00 <elliott> i remember trying to get them working in coq
22:53:25 <crystal-cola> > foldr (\x ys -> x + 1/ys) 999999 . concatMap (\n -> [1,2*n,1]) $ [0..5] :: Rational
22:53:25 <elliott> crystal-cola: why not find out mr. feynman :D
22:53:39 <elliott> e is 999999999999999999999999999999999999999999999 and so on divided by 99999999 and so on
22:53:56 <elliott> > foldr (\x ys -> x + 1/ys) 999999 . concatMap (\n -> [1,2*n,1]) $ [0..] :: Rational
22:54:28 <elliott> but i only folded it a little bit :(
22:54:47 <elliott> what does the foldr argument do
22:55:39 <crystal-cola> it's the last element of the continued fraction, so it has very little effect
22:55:41 <micahjohnston> > scanl1 (+) (map (\x -> 1 / product [1..x]) [1..])
22:55:42 <lambdabot> [1.0,1.5,1.6666666666666667,1.7083333333333335,1.7166666666666668,1.7180555...
22:55:52 <elliott> crystal-cola: ah, so the ideal argument is e? :)
22:55:55 <crystal-cola> well it has a lot of effect on the ratio, but very little on the value of the number
22:55:55 <micahjohnston> > scanl1 (+) (map (\x -> 1 / product [1..x]) [1..]) !! 10
22:56:14 <Sgeo> elliott become: false.
22:56:35 <micahjohnston> > scanl1 (+) (map (\x -> 1 / product [1..x]) [0..]
22:56:35 <lambdabot> <no location info>: parse error (possibly incorrect indentation)
22:56:42 <micahjohnston> > scanl1 (+) (map (\x -> 1 / product [1..x]) [0..])
22:56:43 <lambdabot> [1.0,2.0,2.5,2.6666666666666665,2.708333333333333,2.7166666666666663,2.7180...
22:56:51 <micahjohnston> > scanl1 (+) (map (\x -> 1 / product [1..x]) [0..]) !! 1000
22:56:53 <elliott> crystal-cola: e gets you closer to e than any other argument
22:57:33 <elliott> obviously a=one, b=c=d=zero :D
22:57:36 <crystal-cola> and you take the first 20 terms e = x ++ [rest]
22:57:56 <crystal-cola> then invert x and apply it to e to get (ae+b)/(ce+d) = [rest]
22:58:12 <crystal-cola> and e = the continued fraction x applied to (ae+b)/(ce+d)
23:00:21 <Sgeo> I want to cure Smalltalkers of the mental illness that they are the objects they are documenting.
23:02:14 -!- zzo38 has joined.
23:02:40 <zzo38> How many demerits do you think typographical rivers should be worth?
23:02:54 <crystal-cola> I don't think there's anything wrong with rivers :/
23:02:55 <elliott> congratulations zzo38 as usual you have floored me
23:03:34 <zzo38> crystal-cola: Then it would be worth zero demerits.
23:04:07 <copumpkin> http://www.onion.demon.co.uk/theonion/information/baconpig/porkchart.htm
23:04:16 <elliott> there is no way anything at that url cannot be perfect
23:04:38 <elliott> "Mr. Mallet or Mr. Bolt Gun" EITHER OR
23:05:49 <zzo38> copumpkin: And it looks like, with a bowtie, even
23:06:12 <elliott> its a feature of their anatomy
23:06:32 <crystal-cola> http://maneggs.com/wp-content/uploads/2011/03/man.jpg
23:07:00 <elliott> everyone click crystal-cola's link
23:07:13 <elliott> btw copumpkin and crystal-cola one of you are going to have to change nicks so i stop confusing you thx
23:07:43 <elliott> xfghjk,m vcxsdertyujnbvgyujn
23:07:55 <zzo38> copumpkin: The first letter is the same. But a lot of words have same letter so it should be OK to keep the nicks as they are.
23:08:14 <zzo38> But some typographers do not like rivers. But by how much? Obviously would be the good idea that any program that could check for these things would allow the user to specify the demerits (which could be zero, positive if you dislike rivers, or negative if you *want* rivers); but what I ask, is what opinions different people have.
23:08:38 <elliott> it should be worth 9999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999999 demerits
23:08:47 <elliott> i calculated that number with precision
23:09:27 <crystal-cola> > foldr (\x ys -> x + 1/ys) 777777777777 . concatMap (\n -> [1,2*n,1]) $ [0..5] :: Rational
23:09:29 <lambdabot> 440865444444521235 % 162185333333361583
23:09:40 <crystal-cola> > foldr (\x ys -> x + 1/ys) 5555555555 . concatMap (\n -> [1,2*n,1]) $ [0..5] :: Rational
23:09:42 <lambdabot> 3149038889091641 % 1158466666741255
23:09:51 <crystal-cola> > foldr (\x ys -> x + 1/ys) 2222222222222 . concatMap (\n -> [1,2*n,1]) $ [0..5] :: Rational
23:09:53 <lambdabot> 1259615555555947250 % 463386666666810763
23:09:55 <elliott> i wonder what on earth homotopy type theory actually is
23:10:12 <elliott> linked a lot on /r/dependent_types
23:10:29 <elliott> and it sure looks interesting i just don't know what the actual theory is :)
23:11:04 <elliott> In other words, an integer is either one more than a natural number, or zero, or one less than minus a natural number. (Of course, the naturals are inductively generated by 0 and successor.)
23:13:53 <elliott> crystal-cola: homo to pyty pethe ory
23:14:00 <elliott> that's how i read homotopytypetheory
23:14:07 <elliott> well ok not really but i sure don't read it as what it's meant to be
23:16:20 <elliott> ssssssssssshhhhhhh i'm trying to see if i'll magically understand everything if i read every post
23:16:26 <elliott> human contact is forbidden
23:16:29 <zzo38> I guess the demerits also depends how much other things are worth (that is, what units you are using).
23:20:04 -!- zzo38 has quit (Read error: Connection reset by peer).
23:20:14 <elliott> sometimes i hate the logs because people are stupid
23:20:15 <elliott> 13:28:39 <chrisdb> tusho: about the only easy way to get persistent state in Haskell is to pass your variables as arguments through all your functions. Which is damn annoying. I'm not a member of the 'global variables are always evil' brigade.
23:20:19 -!- zzo38 has joined.
23:21:07 <zzo38> (We could use units where stretching by 100% is worth 1 demerit; we would need to use fractional demerits too if this is the case. In an actual computer program you would not use these units; you would use different units so that you can work with integers.)
23:25:13 -!- ais523 has quit (Remote host closed the connection).
23:30:58 -!- pikhq has joined.
23:32:23 <elliott> 13:48:49 <chrisdb> psygnisfive: I mean macs are obviously aimed at the 4 - 8 yo market segment.
23:32:23 <elliott> ok this log is just too stupid to keep reading i hope everyone in it dies off soon apart from me
23:33:08 <elliott> Unknown media type in type 'interface/x-winamp-skin'
23:35:22 -!- zzo38 has quit (Quit: Ha Ha).
23:36:03 <micahjohnston> the binary-to-unary funciton on slashesis really cool
23:36:34 <micahjohnston> you can see it doubling the number of *'s as they trickle downwards in the number
23:37:02 <elliott> oerjan: can you do UNARY TO UNARY
23:37:15 <elliott> <oerjan> no it is impossible
23:37:22 <oerjan> !slashes /MAYBE/MAYBE/*******************************
23:37:23 <EgoBot> *******************************
23:37:36 <elliott> no that doesn't even do anything to the text
23:37:39 <elliott> let me show you how to do it
23:38:18 <elliott> !slashes /*/X,//,X/X,/*****
23:38:23 <elliott> !slashes /*/X,//,X/X,//,//*****
23:38:34 <elliott> !slashes /*/X,//,X/X,//,///X/*/*****
23:38:44 <elliott> how does that not terminate
23:38:45 <elliott> !slashes /*/X,//,X/X,//,///X/*/*****
23:38:48 <elliott> !slashes /*/X,//,X/X,//,//*****
23:38:57 <elliott> !slashes /*/X,//,X/X,//,///X/*/*****
23:39:46 <elliott> oerjan: WHAT IS WRONG WITH IT
23:40:15 <oerjan> the last /X/*/ will have been turned into /X/X/
23:40:39 <elliott> is there any way around that even?
23:40:58 <oerjan> single character abbreviations are tricky
23:41:42 <elliott> !slashes /:*/,*://,*/*//:/:*****
23:41:45 <elliott> !slashes /:*/,*://,*/*//://:*****
23:42:18 <elliott> !slashes /:*/,*://,*/*//://Hello:*:**eleph:**a,*n:t:*
23:42:37 <elliott> !slashes /:*/,*://,*/*//://Hello:*:**eleph:**a,*:*n:t:*
23:43:37 <elliott> oerjan: make it useful somehow :D
23:44:00 <elliott> !slashes /*/,*//,*/**/*****
23:44:09 <elliott> oerjan: btw how easy is binary->unary again?
23:44:14 <elliott> and can it be combined with unary->binary?
23:44:52 <elliott> why didn't that terminate...
23:45:21 <elliott> it's that stupid thing again
23:45:30 <elliott> i'll let oerjan write the trivial unary doubling program then :D
23:45:46 <oerjan> mind you it will be awkward if you want to iterate it with raw 0's and 1's in your representation
23:46:24 <elliott> oerjan: i just want to have a decimal doubler program :P
23:46:30 <elliott> decimal -> unary -> double -> decimal
23:46:32 <oerjan> !slashes /:*/,://,/**/:*****
23:47:30 <oerjan> as long as you don't use entirely raw 0-9 digits, that should work fine
23:47:53 <elliott> oerjan: well i want that to be the input and the output
23:47:56 <elliott> perhaps surrounded by something
23:48:04 <oerjan> the decimal -> unary conversion is the most awkward part
23:48:28 <oerjan> doing it without losing the use of 0-9
23:49:32 <elliott> you sort of have to tag every 0-9 you use in your /program/
23:49:37 <elliott> and then replace those tagged ones with special identifiers
23:49:40 <elliott> then after using 0-9, put them all back
23:49:43 <oerjan> and surrounding it by something doesn't really help when everything inside is not the same character
23:50:21 <oerjan> because then it would take a substantial loop to iterate through it
23:50:34 <oerjan> (see: my first looping counter)
23:50:46 <elliott> i just want to have raw decimal inside
23:51:03 <oerjan> well you _can_ make such a loop
23:51:08 <elliott> oerjan: hmm is ijfiwtwjssbwb IO-complete?
23:51:12 <elliott> you know the language i mean
23:51:27 <elliott> oerjan: can it do interactive?
23:52:49 <elliott> oerjan: for your next trick you should prove self-BCT TC
23:52:57 <elliott> such a pretty language ;_;
23:53:14 <elliott> oerjan: bct where program = data
23:53:15 <elliott> http://esolangs.org/wiki/Bitwise_Cyclic_Tag#Self_BCT
23:53:37 <elliott> i should write a program to visualise that like twodee CAs
23:55:00 <elliott> oerjan: is that eek the sound of COGS WHIRRING IN YOUR HEAD :P
23:58:09 <elliott> hmm, how to implement self-BCT elegantly in Haskell
23:58:29 <elliott> If I want a list I can "advance" one element so that it can be accessed directly, but also know where the start of the list is, that's a zipper again, right?
23:58:30 <oerjan> binary -> unary is a _bit_ more plausible to do briefly, because you can substitute each of 00, 01, 10, 11
23:59:22 <oerjan> but with decimal you get 100 combinations
23:59:30 <elliott> can you actually find out the starting element with a zipper?
23:59:46 <elliott> oerjan: hmm, couldn't you generate those hundred combinations with BCT?
23:59:48 <elliott> it's self-modifying, after all
23:59:52 <elliott> you can just construct them programmatically