00:00:08 <slereah_> Hm. 14 combinators, n*(n+1) choice at every step...
00:01:23 <slereah_> No wonder I can't pass anything longer than 4 combinators long.
00:01:23 <slereah_> 4 is already 1963420410 things to try
00:03:16 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
00:04:12 -!- puzzlet_ has quit (Read error: 104 (Connection reset by peer)).
00:04:33 -!- timotiis has quit ("leaving").
00:05:01 -!- puzzlet has joined.
00:20:13 -!- MommeMC has joined.
00:21:48 -!- MommeMC has left (?).
00:26:37 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
00:26:57 -!- slereah_ has joined.
00:49:54 -!- GregorR has quit ("Leaving").
01:02:46 -!- puzzlet has quit (Remote closed the connection).
01:02:50 -!- puzzlet has joined.
01:13:38 -!- EgoBot has quit (Read error: 110 (Connection timed out)).
01:16:16 -!- EgoBot has joined.
01:16:26 -!- GregorR has joined.
01:18:33 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
01:21:07 -!- slereah_ has joined.
01:31:32 -!- slereah__ has joined.
01:32:04 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
01:49:02 -!- slereah_ has joined.
01:49:41 -!- slereah_ has changed nick to Slereah.
01:57:51 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
02:05:45 -!- slereah_ has joined.
02:05:45 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
02:10:45 -!- ehird has quit ("This computer has gone to sleep").
02:45:44 -!- puzzlet_ has joined.
02:58:30 -!- puzzlet has quit (Read error: 110 (Connection timed out)).
03:05:07 -!- dbc has joined.
04:42:59 -!- digital_me has joined.
04:50:30 -!- bsmntbombdood has quit (Read error: 110 (Connection timed out)).
04:51:10 -!- bsmntbombdood has joined.
05:10:14 -!- digital_me has quit ("leaving").
05:41:07 -!- eagle-101 has changed nick to eau.
05:54:03 <oerjan> SPAM SPAM WONDERFUL SPAM
05:54:59 <pikhq> I've got to say that I like the current topic nostalgia.
05:55:09 <pikhq> (that's one of my favorite Asimov stories)
05:56:37 <oerjan> ah. i have read _about_ that story
05:57:39 -!- eau has changed nick to eagle-101.
06:03:49 -!- slereah_ has quit (Read error: 104 (Connection reset by peer)).
06:06:42 <oerjan> i was otherwise referring to current wiki events.
06:08:18 * oerjan doesn't recall ever tasting spam, although someone might have secretly fed it to him
06:08:20 -!- slereah__ has joined.
06:18:02 -!- RodgerTheGreat has quit.
06:32:29 -!- puzzlet has joined.
06:45:03 -!- puzzlet_ has quit (Read error: 110 (Connection timed out)).
07:06:37 -!- oerjan has quit ("leaving").
07:18:19 -!- eagle-101 has quit (Connection timed out).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:34:05 -!- uvanta has joined.
08:39:14 -!- slereah__ has quit (Read error: 110 (Connection timed out)).
08:43:31 -!- dbc has quit (Read error: 110 (Connection timed out)).
08:46:44 -!- slereah__ has joined.
09:22:38 -!- dbc has joined.
09:53:34 -!- slereah__ has quit (Read error: 104 (Connection reset by peer)).
09:56:39 -!- slereah__ has joined.
10:08:25 -!- helios24 has joined.
10:12:23 -!- oklopol has quit (Read error: 104 (Connection reset by peer)).
10:15:00 -!- oklopol has joined.
10:49:00 -!- jix has joined.
11:44:50 <Asztal> the topic... is it "the last question"?
11:45:08 <Asztal> I remember reading a summary of it, either that or it was a very short story
11:58:16 <olsner> funny, I read that one like only a week ago
12:30:17 -!- timotiis has joined.
13:16:00 -!- slereah__ has changed nick to Slereah.
13:18:15 -!- jix has quit (Read error: 104 (Connection reset by peer)).
13:22:11 -!- jix has joined.
13:49:04 -!- slereah__ has joined.
13:52:12 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
14:00:24 -!- slereah__ has changed nick to Slereah.
14:10:08 -!- Figs has joined.
14:10:54 <Figs> I finally got evolution to work :)
14:15:08 <Figs> nothing too complicated, I just evolved binary strings to match zero
14:16:25 <Figs> basically, each entity is 8 bits... I specify rates of mutation and culling and check how many bits have been set as a means of determining fitness
14:16:46 <Figs> after about 10 generations or so, the population tends to level out
14:18:04 <Figs> to breed, I pick two random strings (could be the same, but unlikely) and split them at a random point in the 8 bits, then I recombine the pieces for the child
14:18:19 <Figs> interestingly, I get better results without mutations
14:19:16 <oklopol> Figs: try evolving a tuple into another giving a set of permutations
14:19:39 <oklopol> it's amazing that it actually works, i don't really see how that's a task you can do gradually
14:21:24 <Figs> heh, you can do all kinds of neat things...
14:21:34 <Figs> like evolving tuples into particular patterns
14:21:58 <Figs> I should try to see if I can get it to generate tuples of 5 increasing prime numbers
14:22:24 <Figs> I've found some neat stuff about how the mutation rate works
14:23:01 <Figs> This should sound completely obvious, but the mutations depend on the rate of culls
14:23:06 <Figs> so if mutations < culls
14:23:37 <Figs> ("weak culls" that is -- where you remove say 25% of the bad ones)
14:23:49 <Figs> then you get different mutations
14:24:03 <Figs> I was seeing things like 1650 to 350
14:24:07 <Figs> in 0 and 1 only
14:24:21 <Figs> and then I changed the rate and managed to get it in 0,1,2
14:25:00 <Figs> it doesn't depend on the size of the population so much to get the percents; it really is mathematical in relation to the chance of mutation and whether or not it will be culled
14:25:34 <Figs> I'd have to go back and rerun a few experiments to figure out what numbers I actually had
14:25:51 <Figs> I think it was something like 33% mutation rate vs 25% culls
14:28:07 <Figs> with 1/3 mutation and 1/4 culled, I get something like ~1450 in "perfect", ~530 in "off by 1" and ~10 in "off by 2"
14:28:26 <Figs> just rough guesses looking at my numbers
14:29:04 <Figs> and the rest (ie, off by more than 2 bits) is basically non-existant after the first 20 generations or so
14:29:14 <Slereah> Let's make "Intelligent Design"
14:29:18 <Figs> although I did get a few in the off by 3 flickering in and out for a little while
14:29:23 <Slereah> Where the answer will be directly displayed
14:29:41 <Figs> hehe, this is evolution by intelligent design :P
14:29:48 <Figs> I should say "intelligent" design
14:29:57 <Figs> since it's 6:30 in the morning here and I'm not thinking too great
14:35:20 <Figs> Want me to upload?
14:35:33 <Figs> the coding style's not very good... but meh :P
14:35:41 <Slereah> Hell, Python is basically all I can do!
14:36:46 <Slereah> It is actually bothersome, because I must do C in class.
14:36:52 <Figs> http://rafb.net/p/Gi5otN11.html
14:36:59 <Figs> there's my little program :D
14:37:02 <Slereah> So I occasionaly use Python in C.
14:37:24 <Figs> you can run it like
14:37:34 <Figs> python -i genetic.py
14:39:37 <Figs> I'm basically a noob at python
14:40:00 <Slereah> But you can do awesome stuff with little python
14:40:11 <Figs> I guess you could just throw a run() at the end of my file and do python genetic.py
14:40:18 <Figs> but I like to start it myself
14:42:21 <Figs> what thinks ye? :)
14:42:39 <Figs> I know it's not exactly thrilling...
14:43:25 <Slereah> Well, it's hard to judge like that!
14:43:32 <Slereah> I don't know the what'sgoings on
14:45:24 <Figs> Each cell has 8 bits like,
14:45:34 <Figs> [0,1,1,0,1,0,1,0]
14:45:49 <Figs> and, the goal is to get it to [0,0,0,0,0,0,0,0]
14:46:02 <Figs> so when you see 0=1600
14:46:14 <Figs> that means that 1600 of the entities are all [0,0,0,0...
14:46:25 <Figs> 1 means they have 1 bit set
14:46:29 <Figs> 2 means 2, etc
14:48:20 <oklopol> it's a waste of genetic algorithms if you use them for that :)
14:50:01 <Figs> oklopol: I'm making it evolve prime numbers now
14:50:39 <Figs> I'm just trying to think of a good way to represent the output of each generation
14:51:03 <Figs> I might make the generations themselves small and show each one... and then run it longer
14:51:25 <Figs> like 10 individuals and 10000 generations instead
14:51:32 <Figs> and then I can show the actual genes
14:51:43 <Figs> (instead of a summary)
14:52:26 <Figs> it'd be interesting once I get this to work to make it evolve larger primes more preferably than smaller ones... hmm :)
14:52:31 <Figs> this is getting fun
15:00:00 <Figs> my prime function thinks 9 is a prime number
15:02:37 <Figs> I get prime numbers
15:02:59 <Figs> (`cuz you _know_ prime numba's are sex-ay!)
15:04:15 -!- slereah__ has joined.
15:07:19 <Figs> now it makes prime numbers
15:07:31 <Figs> but my inteface is ugly
15:09:52 -!- Slereah has quit (Read error: 104 (Connection reset by peer)).
15:10:51 -!- uvanta has quit ("blame!").
15:12:59 <Figs> http://rafb.net/p/33DCyq90.html
15:13:04 <Figs> you can take a look
15:13:21 <Figs> it just tries random numbers and evaluates against a fitness function to cull bad ones
15:14:09 <Figs> I should probably refactor my code and clean it up so this is easier to use
15:17:01 <slereah__> Once the number is well prime, does it stop changing?
15:17:05 <slereah__> Or does the value oscillate around the prime number
15:18:36 <Figs> no, it keeps changing because of mutations
15:18:38 <Figs> but the new numbers are entirely random
15:18:49 <Figs> so say I have 6 in there now, next time it might be 458
15:19:45 <Figs> if you tweak the settings to have a weak-cull rate of .75, and random cull of .25, and a mutation ratio of 1:2
15:19:49 <Figs> it gets interesting
15:19:58 <Figs> it climbs up slowly
15:20:18 <Figs> but because of the high mutation rate, it changes every couple dozen generations to have some new numbers
15:21:33 <slereah__> How do you decide when to output the value then, if you so decide?
15:21:47 <Figs> values are output every generation
15:22:00 <Figs> read the run() function to see what happens
15:22:30 <slereah__> But how do you know the results if it's all random number, even if they're around the right value?
15:23:01 <Figs> you mean, how do I determine fitness?
15:23:19 <Figs> it has nothing to do with being close to a prime number
15:23:28 <Figs> it's either a prime or not for each 'bit'
15:23:58 <Figs> it's totally random, but it works! :)
15:25:00 <slereah__> Can you post the running of the program?
15:25:06 <Figs> if my calculations are correct, there are 95 prime numbers under 500
15:25:26 <Figs> so you have a roughly 1/5 chance of guessing a prime number
15:25:37 <Figs> can I post the running?
15:25:49 <slereah__> You know, the program being executed
15:25:49 <Figs> how much do you want?
15:25:56 <oklopol> oh, you're generating primes that way
15:26:07 <slereah__> Well, all primes numbers under 20 should do it
15:26:24 <oklopol> that's effectively what you had originally
15:26:33 <oklopol> the random -> 000...0 thing
15:26:54 <Figs> yeah, this is a minor tweak to get the same algorithm to do something different
15:27:07 <Figs> it's a little more interesting than ones and zeros :)
15:27:27 <Figs> slereah__: running of which program?
15:28:01 <oklopol> my idea some time ago was to try getting simple permutations from the set of huge permutations a rubik'
15:28:27 <oklopol> the problem is, i never coded in the actual twists of the cube
15:28:56 <oklopol> because there are so little of them i don't wanna do an algo to determine them, but they are so long i don't wanna do them by hand :D
15:30:28 <Figs> slereah__: how much output do you want?
15:30:44 <Figs> the full output (10000 generations) is huge
15:30:56 <Figs> 100 generations enough?
15:31:01 <Figs> I posted the code O_o
15:31:24 <Figs> link was here: http://rafb.net/p/33DCyq90.html
15:31:46 <Figs> maybe your connection dropped out or something and missed it, I dunno
15:31:58 <Figs> isn't technology fun? :)
15:33:10 <Figs> http://rafb.net/p/wLIFXg72.html
15:33:24 <Figs> here's a sample running it with my .75/.25/1:2
15:33:26 <slereah__> But isn't the computation mostly done by the prime function?
15:33:39 <Figs> prime function only checks primality
15:34:02 <Figs> it's effectively part of the fitness function
15:35:42 <Figs> I should probably run this with a more interesting scope
15:35:50 <Figs> something where the primes are thinner
15:36:52 <Figs> figs.comprehends() != true
15:38:59 <slereah__> Hm. I should forbid stuff of the form `iC in my combinator match program
15:39:45 <Figs> Ya know... I still haven't finished my damned parser system :P
15:46:38 <Figs> whoo, evolution in 5 minutes: http://scienceblogs.com/pharyngula/2008/01/evolution_in_5_minutes.php
15:50:21 -!- RodgerTheGreat has joined.
15:51:18 <Figs> I'm evolving prime numbers today
15:51:34 <slereah__> I want a fuzzy little prime number.
15:54:19 <Figs> slereah__: 2 ^_^
15:55:17 <Figs> 8's divisible by 4
15:55:29 -!- Hiato has joined.
15:55:30 <Figs> how about 911?
15:55:33 <Figs> 911 is a prime number.
16:39:07 <Figs> ding a ling a ling!
16:39:26 -!- Hiato has left (?).
16:39:50 -!- Figs has quit ("Good-Bye.").
17:58:40 -!- jix has quit (Read error: 104 (Connection reset by peer)).
18:01:07 -!- jix has joined.
18:53:47 -!- eagle-101 has joined.
19:15:59 <slereah__> if c in ["s","k","i","r","a","n","p","x","w","m","&"]
19:40:03 -!- ehird has joined.
19:40:09 <ehird> testing testy test test
19:45:27 <ehird> evidently nobody likes testse
19:50:18 -!- ehird has quit ("Lost terminal").
19:52:15 <slereah__> And now, for something completely different.
20:10:51 -!- ehird has joined.
20:11:10 <ehird> i think i like xmonad now. just need to get it to recompile properly
20:14:54 <ehird> i should write my own WM!
20:15:05 <ehird> in Lisp, that is dynamically reconfigurable at runtime!
20:15:09 <ehird> actually that soudns awesome
20:15:54 -!- ehird has quit ("leaving").
20:16:48 -!- ehird has joined.
20:17:18 <ehird> i could have optional esolang configuration backends :P
20:19:15 <ehird> a window manager, written in Lisp, which you can reconfigure at runtime (change setting, see it happen), but youc an also write the configuration in an esolang
20:19:53 <ehird> i didn't hear me asking for your opinion
20:32:11 <olsner> my haskell thue interpreter is far too slow... it's taken more than 30 minutes to run BF hello world through the Thue BF interpreter, and still not done
20:32:46 <olsner> the python thue interpreter does it in 3-4 minutes
20:35:55 <ehird> olsner: Write something that compiles it into Haskell rules
20:36:24 <ehird> thueStep ('h':'i':xs) = "hello" ++ thueStep xs
20:37:44 <olsner> yeah, and ending it with thueStep (x:xs) = x:thueStep xs; thueStep [] = thueStep [] - that'd probably work!
20:38:31 <olsner> I was otherwise thinking of building some kind of automaton and running that
20:38:45 <ehird> automaton would be faster :P
20:38:53 <ehird> olsner: that would be a slow thueStep base case
20:38:57 <ehird> you should build a table like:
20:39:17 <ehird> thueTable = ["foo","hi"]
20:39:19 <ehird> then do something like
20:39:42 <ehird> thueStep (x:xs) = x : thueStep (find-element-of-thueTable-in-xs-and-return-the-string-from-that-point-onwards)
20:41:31 <olsner> wouldn't the find part basically do the exact same thing as thueStep only not replace anything?
20:41:53 <ehird> olsner: you could use a more efficient algorithm
20:45:38 -!- RedDak has joined.
20:52:52 -!- ehird has quit ("Lost terminal").
21:10:44 -!- ehird has joined.
21:11:56 * ehird checks ircbrowse.com
21:12:47 -!- adu has joined.
21:12:49 <ehird> yes, the topic is The Last Question
21:12:53 <ehird> for all those who seem to be asking..
21:13:52 <slereah__> Was it the story with the "how to stop the universe from dying" thingy?
21:14:57 <slereah__> Most of his sort-of comedic stories weren't that great from what I can recall
21:15:51 <ehird> the last question isn't really comedic.
21:16:11 <Asztal> at least humanity didn't wipe themselves out :)
21:16:33 <slereah__> I should re-read the big Foundation books.
21:25:45 -!- ehird has quit ("Lost terminal").
21:36:38 -!- ehird has joined.
21:41:20 -!- eagle-101 has changed nick to newpod.
21:42:00 -!- newpod has changed nick to eagle-101.
22:09:40 -!- ehird has quit ("Lost terminal").
22:10:23 -!- ehird` has joined.
22:12:13 <slereah__> I'm trying to optimise the JUGGERNAUT (bitch).
22:13:04 <slereah__> So far, it tests every combination a lot of times. How could I make it only test for new combinations?
22:15:03 <slereah__> The relevant code is something like this : http://pastebin.ca/873833
22:20:04 <ehird`> rewrite it in Lisp and Iwill! ;)
22:21:34 <slereah__> If I describe the algorithm, will it be okay too?
22:25:45 -!- ehird[tkirc] has joined.
22:25:51 <slereah__> C is the set of combinators I choose to compose from. Individuals combinators are tested outside this loop once.
22:26:33 <slereah__> Then, it tests every combination of C, and adds them to C.
22:27:03 <slereah__> For instance, if I have s and k, it will test ss, sk, ks, kk, and the new list will be [s,k,ss,sk,ks,kk]
22:27:39 <slereah__> But since s and k are still in here (I need them, for instance to compose `s`ss), it retries every value
22:27:52 <ehird[tkirc]> FOR x in C { FOR y in C { append C (concat x y) } }
22:28:50 <slereah__> I guess I could use the condition `xy not in C, maybe
22:30:37 -!- ehird[tkirc] has quit (Remote closed the connection).
22:31:24 <oklopol> (append (append C (concat x y)) (concat y)), no?
22:31:34 <oklopol> *(append (append C (concat x y)) (concat y x))
22:32:23 <slereah__> Hm. The not in C test seems to work.
22:33:07 <oklopol> i mean, don't you want to add bot (s(ss)) and (sss) if you have (s k ss kk sk ks)
22:36:39 -!- adu has quit (Remote closed the connection).
22:37:54 -!- oerjan has joined.
22:40:00 <ehird`> essentially you always have infinite permutations.....
22:40:58 <slereah__> This is unpleasant, 'cause I actually have to optimise it.
22:43:47 <ehird`> pikhq: You! tcl user! :P
22:44:01 <ehird`> how do i use tklib's lobster style? default tk is ugly
22:46:18 <pikhq> I don't know; don't really use Tk.
22:46:35 <oerjan> ...or Lobster Thermidor a Crevette with a mornay sauce served in a Provencale manner with shallots and aubergines garnished with truffle pate, brandy and with a fried egg on top and spam.
22:48:44 <slereah__> Can't I just have the eggs and bacon spam spam and spam?
22:52:47 <slereah__> It's an infinite loop, but it's supposed to stop the test automatically after 300 steps.
22:53:45 <slereah__> Ah yes, the expression becomes too huge at step 60
22:55:15 <slereah__> What would be a good limit size for an expression?
23:04:36 <slereah__> Well, 5000 seems to be too much at least.
23:08:11 <slereah__> I have in my mind the Juggernaut going through combinators.
23:09:16 <oerjan> The Juggernaut vs. The Birds...
23:12:58 -!- timotiis has quit (Remote closed the connection).
23:13:16 -!- timotiis has joined.
23:24:50 <olsner> what's the Juggernaut?
23:25:08 <olsner> (and I though it was spelled juggernaught?)
23:25:13 <slereah__> You insert some lambda or combinator expression
23:25:37 <slereah__> It will (possibly) find the shortest way to make it out of that
23:26:37 <slereah__> It's usually better to have some sort of idea of what it will be, because using all 14 combinators makes it quite long
23:28:43 <oerjan> http://en.wikipedia.org/wiki/Juggernaut
23:29:52 <slereah__> Although I mostly had him in mind : http://en.wikipedia.org/wiki/Juggernaut_(comics)
23:31:52 -!- RedDak has quit (Remote closed the connection).
23:36:04 <olsner> heh, funny etymology of that word
23:57:19 -!- lifthrasiir has quit (Read error: 110 (Connection timed out)).