00:00:10 yay good math bad math 00:00:27 elliott, yeap 00:00:37 I've been reading that blog for years 00:00:45 months? over a year 00:01:04 elliott 00:01:11 hmm :( 00:01:31 variable: do you want to see an example of BEAUTY and ELEGANCE in Haskell code? too bad, because all I have is this horrible crock! 00:01:48 elliott, ???? 00:01:52 just commenting 00:01:55 on how awful this code is 00:01:56 right now :D 00:02:02 elliott, FIX IT 00:02:08 variable: you fix it: http://sprunge.us/PidB 00:02:48 -!- FireFly has quit (Quit: swatted to death). 00:06:46 i think i just horrified variable to death 00:07:02 elliott, yes 00:08:44 I think I partially solved my Reddit Chrome problems 00:09:36 -!- Behold has quit (Remote host closed the connection). 00:12:34 variable: at least it's shorter than it would be in C :P 00:13:52 :t catch 00:13:53 forall a. IO a -> (IOError -> IO a) -> IO a 00:13:56 :t Control.Exception.catch 00:13:57 forall a e. (GHC.Exception.Exception e) => IO a -> (e -> IO a) -> IO a 00:14:35 hmm 00:16:08 elliott, shorter != better 00:16:17 variable: Less crap == better. 00:16:23 but yes - I get the point 00:16:24 Manual memory allocation definitely counts as crap. :P 00:17:31 There are a lot of imperative compiled languages that do automatic stuff 00:30:49 variable: yay! apart from i and o, everything works! (directed at you, the only active person) 00:34:41 -!- Mathnerd314 has joined. 00:34:45 elliott, ya know - I proved P≠NP but I just can't get the program to output 00:34:50 :D 00:34:59 i and o are file-handling instructions here :P 00:35:11 elliott, I figured "input" and "output" 00:35:15 they are 00:35:18 also - use normal names for your functions 00:35:19 i reads in some fungespace from a file 00:35:21 o outputs it 00:35:24 variable: instructions 00:35:28 variable: this is Befunge-98 00:35:32 elliott, ah ok 00:35:34 the instructions are i and o :P 00:35:37 * variable should learn it 00:35:45 variable: it's more interesting to implement than use imo 00:35:46 ^source 00:35:47 http://git.zem.fi/fungot/blob/HEAD:/fungot.b98 00:35:52 fungot, our friendly babble bot, is written in it ^ 00:35:53 elliott: grep and cron? :-p) if that's what you were saying something interesting about it 00:35:59 and underload/bf interpreting bot :P 00:36:06 that source is quite a sight 00:36:10 elliott, also - I have a programming language that I need some help putting into normal words 00:36:22 I have the concept down though 00:36:28 you think i'm equipped for normal words after implementing a program that (will be able to) run http://git.zem.fi/fungot/blob/HEAD:/fungot.b98? :D 00:36:28 elliott: you don't need 00:36:34 i don't need normal words? i see 00:36:53 * variable is away for a bit 00:37:04 elliott: 'tards don't have to use normal words if they're not able to 00:37:06 first few lines of the test-suite i've been running against: 00:37:09 0#@>. 1#@v>#@,55+"skrow , :DOOG",,,,,,,,,,,,,,1#v:$v>"pud t'nseod : DAB",,,,,,,v> v >" 1 naht erom spiks "v 00:37:10 v"@.4"@#<.+@,,,,,,,,,,,,,,,,"BAD: : reflects"+55 >$#v5#.< #5 >:#,_$v#"GGGOOD: : duplicates"+730$<>"OOG">:#,_22#v-#v_19+"0 = 2"v >9-v ^< < ^e^#< < vbv#<^># #< "DAB">:#,_@#"BBAD: a reflects"># 0# 5# 5# +# < 00:37:16 >3.#@$ .^@5v"ro"+820_28+"orez spop kcats ytpme :D"^v"-2 != 0"+550 :#,_^#"GGOOD: a pushes 10"># 0# 5# 5# +# < " 00:37:19 ^ 0@# 4.2< >"eznon spop kcats ytpme :DAB"v "BAD: - reflects"+55< >:#,_v >v >")seod a taht gnitseretni( krow t'nod f-b :DAB">:#,_@#: < > vc >055+"llec tsom"v 00:37:22 v.6_5.@>7.^>+"stcelfer \">" :DAB">:#,_@#:< "BAD: 2"< v"GOOD: | works"+<>#v|>0v v"OD: b-f pus"<>a"tfel snrut [ :DOOG">:#,_v " e v"kips eastern"< 00:37:25 hells yeah 00:38:09 ("Va=",(60,119),"Vb=",(0,31)) 00:38:10 BAD: i should have pushed (60, 119) as Va 00:38:11 BAD: i should have pushed (90, 16) as Vb 00:38:13 hm... 00:38:57 heh mycology now takes almost 6.6 seconds 00:39:05 i'll optimise that bounds recalculation later with a population count... 00:39:26 elliott, you got Mycology at the point where it can run? Awesome 00:39:26 io $ print ("Va=",offset,"Vb=",(bx-ox,by-oy),"(bx,by)=",(bx,by)) 00:39:28 olsner: haskell debugging 00:39:54 elliott: I think the root cause is an error in the code 00:40:02 what did I win? 00:40:17 olsner: oh yeah so much money 00:40:21 ("Va=",(60,119),"Vb=",(0,31),"(bx,by)=",(60,150)) 00:40:21 BAD: i should have pushed (60, 119) as Va 00:40:22 BAD: i should have pushed (90, 16) as Vb 00:40:23 x_X 00:40:46 colloquially i would describe this situation as "shit is most fucked-up" 00:40:47 -!- TLUL has quit (Read error: Connection reset by peer). 00:40:56 the most fuckest-upness of the shits 00:41:10 I like to call that state "nothing fucking works" 00:41:29 -!- TLUL has joined. 00:41:58 -!- TLUL has quit (Read error: Connection reset by peer). 00:42:19 (but mostly that's when someone else starts screaming about how nothing fucking works while really it's Just Not That Big A Deal) 00:43:19 olsner: you think this isn't a big deal? 00:43:21 this is 00:43:21 so 00:43:24 IMPORTANT 00:43:39 I don't care, so obviously it's not really that important 00:43:49 That the environment variables are: 00:43:49 orihs/edoC/ttoille/emoh/=DWPDLO 00:43:49 orihs/orihs/edoC/ttoille/emoh/=_ 00:43:49 lanimret-emong=MRETROLOC 00:43:49 esabatad/67schb-ttoille-rof-htua/mdg/nur/rav/=YTIROHTUAX 00:43:59 olsner: where else can you see entertaining bugs like that 00:44:13 haha, you're using lanimret-emong 00:44:30 olsner: lol 00:44:41 http://codu.org/tmp/dirge-for-accordion.ogg I declare this Best Ever 00:44:44 olsner: i had no idea what that said until i typed it out backwards 00:44:46 gnome-terminal isn't that bad 00:44:52 i'm too lazy to install anything else 00:45:15 Gregor: Needs more organ 00:45:18 But I like it 00:45:26 Needs more /organ/? 00:45:46 Yes. 00:45:53 a terminal that has a menu bar and/or a way to configure it is not a worthy terminal 00:45:53 Trust me. 00:45:53 * Gregor shakes his fist :P 00:46:08 olsner: .Xresources is a way to configure 00:46:11 olsner: in fact, xterm has menus to configure 00:46:14 your point? 00:46:26 also, /me just disabled gnome-terminal's menubar 00:46:31 that was hard 00:46:32 none really, I just remember gnome-terminal not being to my liking 00:46:46 hence it is completely worthless 00:46:49 It lets me open URLs nicely, which is more than xterm does :P 00:47:01 Also, handles Unicode properly. 00:47:07 not doing that is a feature :P 00:47:09 Which is a bitch in some terminals. 00:47:16 olsner: Because you... like pain? 00:47:22 -!- poiuy_qwert has joined. 00:48:29 i just find it perfectly fine to select and paste instead of getting hit by a million ways to get url detection wrong :) 00:48:31 Atomo has been updated 00:50:43 olsner: hit? if i don't want to open it as a url, i don't ctrl-click it 00:50:51 in the rare case that it gets something wrong, I do it manually 00:50:53 what's the problem :P 00:51:01 it also handles emails IIRC, but again, clicking does nothing, it's ctrl+click 00:51:04 or I think middle click 00:54:44 oh god 00:54:47 slashdot redesigned 00:54:55 and it's... far better, actually 00:57:27 mergeByteString :: Vector -> FungeSpace -> ByteString -> (Vector, FungeSpace) 00:57:27 mergeByteString (ox,oy) fs s = ((by,bx),fs') 00:57:28 where ((_,by),fs',_,bx) = B.foldl' byte ((ox,oy),fs,False,0) s 00:57:28 byte (p@(x,y),fs,lastWasCR,biggestX) w 00:57:28 | w == ff || (w == lf && lastWasCR) = (p, fs, False, biggestX) 00:57:28 | w == cr || w == lf = ((ox,y+1), fs, w == cr, biggestX) 00:57:30 | w == space = ((x+1,y), fs, False, max (x+1) biggestX) 00:57:32 | otherwise = ((x+1,y), insertFS p (fromIntegral w) fs, False, max (x+1) biggestX) 00:57:34 variable: where's the really obvious bug? 00:57:46 because i don't know :D 00:57:58 !bfjoust evo-shortened-0 >++<[..[.++.]+] 00:58:19 !bfjoust evo-shortened-1 [..[.++.]+] 00:58:21 !bfjoust evo-shortened-2 [..[.++.]] 01:00:07 Score for Lymia_evo-shortened-1: 12.1 01:00:07 Score for Lymia_evo-shortened-2: 12.0 01:00:07 Score for Lymia_evo-shortened-0: 17.4 01:00:21 haskell development feels like it goes slower 01:00:28 because you can't just go through the loop in your head until it makes sense 01:00:36 you just sit there thinking... or in my case, not thinking 01:01:22 Bluh. 01:01:29 I have no idea why that works so well. 01:01:36 elliott, shouldn't the outer loop be an noop? 01:01:50 Lymia: no, because the interpreter could change the cell in that cycle 01:01:53 both [ and ] take a cycle 01:01:55 Ah. 01:02:01 And there's noops there too. 01:02:04 although... 01:02:10 ]] i think is a nop 01:02:10 wait no 01:02:15 i think there's one case where you could not die 01:02:17 hmm 01:02:20 don't try and understand it 01:02:24 it's machine code :P 01:02:27 =p 01:02:43 Although. 01:02:48 >< is a true noop 01:02:58 ...unless you're at the end of the tape... 01:03:15 Lymia: in bf joust, [-][] can loop forever 01:03:16 :) 01:03:26 even if the [-] finishes 01:03:52 And [] can terminate. 01:03:53 =p 01:04:00 -!- augur has joined. 01:04:04 indeed 01:04:08 well, +[] can, rather 01:05:10 I find it quite suprizing really. 01:05:24 That a defensive program evolved that is. 01:05:30 I should try and find out where it came from. 01:06:05 ... 01:06:06 +..[[+-><+.[-[[++.]-[]]++][]+[>.+<[]][<--<>-]<(>.+[]-(-[+<[]]+[])*1<-+->.++<.[+.]>><+<.->.+..+)*7].<]><.-++-<+<+ 01:06:12 This is generation 100. 01:06:18 Looks like it was defensive from the start. 01:06:36 surprizing, that's a new spelling ::D 01:06:38 *:D 01:06:44 :( 01:06:48 Lymia: are you sure the hill didn't start out with a bunch of defence programs? 01:06:56 The hill started out randomly. 01:07:42 ah 01:07:59 Lymia: make a new evolver hill with the current hill, that might be interesting, if your evolver has improved any 01:08:05 it seems to be avoiding too many ()s which is an improvement 01:08:18 of course the problem is breeding two completely different strategies just results in a clusterfuck 01:08:23 do you do breeding yet? 01:08:25 No. 01:08:31 It hasn't really been worked on recenty. 01:08:33 recently* 01:08:39 Heh. Reminds me of evolutionary rock-paper-scissors. :-) 01:08:44 I don't want to try breeding really. 01:08:55 I /could/ try snipping of dead code tohg. 01:08:57 though* 01:10:02 Lymia: that would help 01:10:10 otherwise it will probably just expand and mutate dead code in the long run 01:10:12 Evolutionary rock-paper-scissors occurs when there are three species/subspecies, such that each of three can outcompete one of the others but is outcompeted by the remaining one. Result is dominant species/subspecies cyclically shifting. 01:10:47 Lymia: you may want to talk to impomatic, he's from the core war world and they do a _lot_ of evolving to great success (really competitive), albeit of assembly programs and I think mostly short ones (really short: like less than 20 instructions) 01:10:53 might be able to gets tips :P 01:10:54 *get 01:11:03 What I really want to do is to try and prevent speicies from dying out. 01:11:09 I might need to modify the core to do this. 01:11:15 (i.e. the non-mutation routines) 01:11:30 Lymia: clearly, you need to evolve the mutation routines as a genetic algorithm 01:11:30 Having more than one species alive at the same time would really help, methinks. 01:11:31 :D 01:11:38 Other fun evolved stuff: Three species, one peaking 3 year intervals, one peaking 5 year intervals and one peaking 7 year intervals. All intervals are prime and minimize the number of years where multiple peak at the same year. 01:11:38 Was BF Joust invented in Agora, or just appropriated by it? 01:12:36 Ilari. 01:12:37 Well. 01:12:41 Ilari: i thought you meant an evolutionary algorithm for rock paper scissors :D 01:12:46 I know that defence->dumb rush 01:12:50 Ah, it was an Agoran invention 01:12:53 I don't know what closes the circuit. 01:12:54 =p 01:12:59 elliott: BEST - IDEA - EVER 01:13:21 Gregor: TOTALLY 01:14:27 BF Rock Paper Scissors 01:15:39 aha! 01:15:42 i think i know what the wrongs are. 01:15:48 yes: the wrongs 01:16:32 GOOD: i pushed correct Va (60, 119) 01:16:32 GOOD: i pushed correct Vb (90, 16) 01:16:34 SQUEESOME 01:16:44 http://codu.org/tmp/dirge-for-accordion.ogg I NOTICE PEOPLE ARE NOT HEAPING PRAISE ON ME FOR THIS 01:16:52 Gregor: I loved it... 01:17:04 elliott: "People" is plural! X-P 01:17:17 !bfjouse test_d [[+]+] 01:17:24 !bfjoust test_d [[+]+] 01:17:51 Score for Sgeo_test_d: 8.3 01:18:30 !bfjoust lose [-] 01:18:55 Score for Sgeo_lose: 8.4 01:18:59 BAD: (-8, -9) should be @ 01:19:03 ... 01:19:08 Deewiant: Would be totally cool if it told you what it is instead :P 01:19:22 Gregor, why is... those things? 01:19:45 Sgeo: ITYM "I just shit my pants" 01:20:08 [[Montgomery: What facts are your opinions based on? 01:20:08 Britta Sundberg-Weitman: Facts.]] --Assange trial 01:20:11 :D 01:20:37 What's the lowest score a program can have? 01:20:40 Sgeo: It's a G. invention. 01:20:44 !bfjoust noop . 01:20:48 !bfjoust lose < 01:20:57 Lymia, good point 01:20:58 Score for Sgeo_noop: 8.3 01:20:59 Score for Lymia_lose: 0.0 01:21:12 !bfjoust poop [>>+] 01:21:12 Who am I winning against? 01:21:16 Score for elliott_poop: 0.0 01:21:18 This is distressing 01:21:25 !bfjoust poop [>>+<-] 01:21:26 Score for elliott_poop2: 98.7 01:21:28 A tripwire variant. 01:21:30 *poop: 01:21:32 Darn :P 01:21:35 Broke my joke. 01:21:35 elliott, w-wha? 01:21:37 Score for elliott_poop: 0.0 01:21:40 Lymia: It was a joke :P 01:21:43 I was predicting my score. 01:21:48 Heh. 01:22:00 !bfjoust willwin >>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>>> 01:22:03 Score for Lymia_willwin: 0.0 01:22:11 tripwire? 01:22:34 !bfjoust crap >>>>>>>>>(-)*128 01:22:35 !bfjoust wontlose >.< < Eirin Eirin, Help me Eirin 01:22:47 Score for elliott_crap: 2.9 01:22:47 Score for Lymia_wontlose: 0.0 01:22:50 !bfjoust crap >>>>>>>>>[(-)*128>] 01:23:00 !bfjoust crap2 >>>>>>>>>-[(-)*127>-] 01:23:00 Score for elliott_crap: 8.1 01:23:10 !bfjoust braindead_attack (>)*128[-] 01:23:16 Score for elliott_crap2: 1.8 01:23:16 Score for Sgeo_braindead_attack: 0.0 01:23:18 Sgeo, that really is braindead. 01:23:21 It goes off the edge. 01:24:08 !bfjoust crap2 >>>>>>>>>-[(-)*128.+[-]>-] 01:24:20 !bfjoust attack_15 (>)*15[-] 01:24:25 crap 2, electric boogaloo 01:24:36 Score for elliott_crap2: 4.3 01:24:36 Score for Sgeo_attack_15: 2.9 01:25:11 !bfjoust crap2 >>>>>>>>>-((-)*128.+[-]>-)*20 01:25:18 New contest: Smallest positive score 01:25:19 ;) 01:25:22 !bfjoust crap2 >>>>>>>>>((-)*128.+[-]>-)*20 01:25:27 !bfjoust crap2 >>>>>>>>>-((-)*127.+[-]>-)*20 01:25:30 Oh, ellott wins that dangit 01:25:35 ellott 01:25:44 Score for elliott_crap2: 2.6 01:25:45 Score for elliott_crap2: 2.6 01:25:45 Score for elliott_crap2: 2.6 01:25:54 I N C E P T E L L O T T 01:26:06 Sgeo, simple. 01:26:07 2cool4skool 01:26:26 !bfjoust low_score (>)*10([-])*1000 01:26:26 Lymia, hm? 01:26:35 !bfjoust crap2 >-[[-]>-] 01:26:41 stop fucking up my shit, shitfuckers 01:26:57 Lymia, how is that different from attack_15? What's the point of he *1000? 01:27:01 *the 01:27:04 Score for elliott_crap2: 2.0 01:27:04 Score for Lymia_low_score: 7.8 01:27:07 Crap. 01:27:13 !bfjoust crap2 >-[[-.]>-] 01:27:27 !bfjoust low_score (>-)*10([-]>)*2 01:27:46 !bfjoust d_2 [[.]+] 01:28:12 Score for Sgeo_d_2: 7.9 01:28:13 Score for elliott_crap2: 6.8 01:28:13 Score for Lymia_low_score: 0.1 01:28:21 Hah! 01:28:41 6.8 01:28:42 I win. 01:28:42 that's not bad 01:28:45 0.1 01:28:45 that's not bad at all 01:28:50 Lymia: i'm trying to do _well_ :D 01:28:51 elliott, can you get lower without going to 0? 01:29:02 !bfjoust crap2 >-[[-.]>+[+.]>-] 01:29:04 elliott, I'm letting my evolver (try to) do that for me. 01:29:04 =) 01:29:05 Lymia, how does it work? 01:29:16 Sgeo, first, it plants a decoy to let tripwire, etc kill it. 01:29:27 Score for elliott_crap2: 11.5 01:29:33 Then it goes over to the first cell of the possible enemy tape, and tries to clear it. 01:29:39 Then it tries to clear the second cell there. 01:29:46 -!- sebbu2 has joined. 01:29:53 11.5 01:29:55 11.fucking5 01:30:10 !bfjoust absolute_defecation >-[([-.]>+[+.]>-)*10] 01:30:26 !bfjoust evolotion_of_shit -.+-><-.-[.[(.)*2++]]-(-.)*1-+(>-.-<<+..<...<.<-.>>..+.)*3-.-<.-+<-+<-<>..-.<>.><-+-<+++.--.+-+<+<-+<+<-.<++-+<>-++>+[.<-.[<]]<.+<+<><<<><<.><>+>>-<-.<---[]+[]-.> 01:30:28 Score for elliott_absolute_defecation: 15.9 01:30:46 lolwhat at the [] 01:30:49 15.9 01:30:51 i am 01:30:51 so good 01:31:07 Sgeo, I didn't write that program. 01:31:08 =) 01:31:13 I wrote the program that wrote it. 01:31:17 the evoLOTION of shit? 01:31:19 Why does your evolver allow it? 01:31:27 Score for Lymia_evolotion_of_shit: 16.4 01:31:31 !bfjoust absolute_defecation >-[([++-.]>+[+--.]>-)*10] 01:31:33 Does it have any effect on timing? 01:31:34 Score for elliott_absolute_defecation: 18.5 01:31:38 18.5 01:31:40 18.5 01:31:45 Sgeo, yes. 01:31:47 In fact. 01:31:53 [] on the home tile can detect attempts to kill you. 01:31:54 Ah, so it may be useful 01:32:01 !bfjoust absolute_defecation >-[([++-.]>+[+--.]>-[-++])*10>-] 01:32:05 Score for elliott_absolute_defecation: 7.1 01:32:05 So I didn't need to write [.] 01:32:06 Lymia: not quite 01:32:09 Lymia: it was changed so that doesn't work 01:32:12 because ] takes up a cycle 01:32:12 Ah. 01:32:14 meaning you die 01:32:16 :( 01:32:27 ! d_3 [[]+] 01:32:28 !bfjoust pounce [[]-] 01:32:28 -!- sebbu has quit (Ping timeout: 255 seconds). 01:32:29 -!- sebbu2 has changed nick to sebbu. 01:32:37 !bfjoust d_3 [[]+] 01:32:39 You'll beat tripwire 01:32:51 :D 01:32:55 Score for Sgeo_d_3: 7.6 01:32:56 Score for elliott_pounce: 7.6 01:33:09 I thought it would be funny if they got different scores 01:33:10 Darn 01:33:40 [e.g. a program being fooled by 1 but not -1 or visa versa] 01:34:11 Oh wait, it's not two spaces then you're dead, is it 01:34:25 !bfjoust lie >(+)*127 01:34:31 !bfjoust ponce []---------->>>>>>>>>((-)*127>)*20 01:34:47 Score for Sgeo_lie: 0.0 01:34:48 Score for elliott_ponce: 8.2 01:34:52 What? 01:34:57 8.2 01:34:58 :D 01:35:07 !bfjoust ponce [--+.]---------->>>>>>>>>((-)*127>)*20 01:35:15 Score for elliott_ponce: 8.6 01:35:21 How did I win not even against the stupid junk? How did noops win more than lie did? 01:35:26 -!- Lymia_ has joined. 01:35:36 Lymia_, see my question please 01:35:46 -!- Lymia has quit (Disconnected by services). 01:35:46 -!- Lymia_ has changed nick to Lymia. 01:35:47 -!- Lymia has quit (Changing host). 01:35:47 -!- Lymia has joined. 01:35:52 !bfjoust ponce [--+++--+-++-+--.]---------->>>>>>>>>((-)*127>)*20 01:35:56 Score for elliott_ponce: 10.7 01:36:15 !bfjoust elliott_why_did_this_die >(+)*127 01:36:26 Score for Sgeo_elliott_why_did_this_die: 2.1 01:36:32 ... 01:36:49 !bfjoust because_poop 01:36:49 Use: !bfjoust . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/ 01:37:06 Sgeo, because your decoy is horrible. 01:37:11 And you do nothing else than set it. 01:37:25 Yes, but no-ops at least got positive scores before 01:37:41 Better question: How dymanic is the hill, that I got a positive score the second time 01:37:46 "tripwires" as they seem to be called. 01:38:06 They expect decoys. 01:38:14 And so skip over the first filled cell. 01:38:16 someone 01:38:17 fix 01:38:17 this 01:38:18 fucking 01:38:18 code 01:38:19 shit 01:38:23 it's a shitty code 01:38:24 of shitness 01:38:29 that's an my opinion 01:38:30 Lymia, _just_ the first? 01:38:40 wait 01:38:41 maybe i a stupids 01:39:08 !bfjoust dumb_tripwire_decoy >(+)*127>(+)*127 01:39:19 Score for Sgeo_dumb_tripwire_decoy: 2.1 01:39:21 oh my god it worked!! just kitting 01:39:24 i mean kidding 01:39:24 Probably not enough time for it to work 01:39:27 shitfucking 01:39:29 um 01:40:45 ("o","\ETX#@>. 1#@vv\"@.4\"@#<.>$#v5#.< #>3.#@$ .^@^ 0@# 4.27.") 01:40:45 Wrote to mycotmp0.tmp with o. 01:40:46 ok. 01:40:47 that. 01:40:49 does not look righ. 01:40:50 *right. 01:40:53 > ord '\ETX' 01:40:53 3 01:40:58 what. 01:41:01 fucking what? 01:41:07 !bfjoust imprecise_tripwire_decoy >(+)*32>(+)*32>(+)*32 01:41:08 ooh, for one i forget to write newlines 01:41:17 Score for Sgeo_imprecise_tripwire_decoy: 2.1 01:41:31 -!- Sgeo has changed nick to Sgeo2dot1. 01:42:00 GOOD: read written data to (-10, -10) 01:42:00 GOOD: (-8, -9) is @ 01:42:02 FUCKING YES 01:42:04 YES 01:42:06 I JUST NEED BINARY MODE 01:42:07 YES 01:42:09 FUCKING 01:42:11 YES 01:42:15 HOTNESS 01:42:20 woooooooooooooooooooooooooo 01:42:29 and then it's just like 01:42:31 concurrent funge 01:42:32 and then fingerprints 01:42:35 i am amazing 01:42:52 i am the best, does everyone agree that i am the best 01:43:44 Ignorers suck 01:44:25 i don't know any of them 01:44:38 ... 01:44:56 elliott: ... Funge-98? 01:44:57 elliott: Dang. 01:45:05 pikhq: in two days, in Haskell 01:45:10 ok, so I lack: 01:45:25 - text (non-binary) mode in i and o (easy to fix for i, slightly harder for o) 01:45:29 - concurrent funge (t support) 01:45:29 and 01:45:35 - any kind of fingerprint support at all 01:45:44 That's still pretty impressive. 01:45:45 pikhq: but it passes mycology with no BADs if I tell it I don't support i and o 01:46:00 also, it goes pretty fast, apart from when it shrinks the bounds, which I'm going to optimise 01:46:33 SLOCDirectorySLOC-by-Language (Sorted) 01:46:33 541 shiro haskell=541 01:46:33 yay 01:47:03 ... 541 lines of code‽ 01:47:40 pikhq: SLOCs. 01:47:45 i.e. disregarding whitespace and comments. 01:47:50 Still. 01:48:16 apparently it would take $14,174 to develop :-P 01:48:25 Total Physical Source Lines of Code (SLOC) = 541 01:48:26 Development Effort Estimate, Person-Years (Person-Months) = 0.10 (1.26) 01:48:26 (Basic COCOMO model, Person-Months = 2.4 * (KSLOC**1.05)) 01:48:26 Schedule Estimate, Years (Months) = 0.23 (2.73) 01:48:26 (Basic COCOMO model, Months = 2.5 * (person-months**0.38)) 01:48:26 Estimated Average Number of Developers (Effort/Schedule) = 0.46 01:48:28 Total Estimated Cost to Develop = $ 14,174 01:48:30 (average salary = $56,286/year, overhead = 2.40). 01:48:41 pikhq: look at my beautiful hideous code 01:48:43 mergeByteString :: Vector -> FungeSpace -> ByteString -> (Vector, FungeSpace) 01:48:43 mergeByteString (ox,oy) fs s = ((bx,by),fs') 01:48:43 where ((_,by),fs',_,bx) = B.foldl' byte ((ox,oy),fs,False,0) s 01:48:43 byte (p@(x,y),fs,lastWasCR,biggestX) w 01:48:44 | w == ff || (w == lf && lastWasCR) = (p, fs, False, biggestX) 01:48:46 | w == cr || w == lf = ((ox,y+1), fs, w == cr, biggestX) 01:48:48 | w == space = ((x+1,y), fs, False, max (x+1) biggestX) 01:48:50 | otherwise = ((x+1,y), insertFS p (fromIntegral w) fs, False, max (x+1) biggestX) 01:52:10 pikhq: MOST ELEGANT CODE? 01:52:21 yay, binary reading now works 01:52:31 o just needs text mode 01:53:19 pikhq: You'd like my planned fingerprint implementation design. It involves typeclasses and type families. 01:55:13 Wait, the Notion Ink Adam exists now? It's shipping? 01:55:58 meh, tablets. 02:03:30 ghc: panic! (the 'impossible' happened) 02:03:30 (GHC version 6.12.3 for x86_64-unknown-linux): 02:03:30 TcTyFuns.flattenType: synonym family in a rank-n type 02:03:32 olsner: do i get a prize? 02:08:05 -!- Laugarhraun has quit (Read error: Connection reset by peer). 02:08:17 -!- Laugarhraun has joined. 02:10:38 -!- Laugarhraun has quit (Read error: Operation timed out). 02:14:39 Urg. 02:14:47 It seems that my evolver has hit a local maxima. 02:14:56 -.+-><-.-[.[(.)*2++]] 02:14:59 Completely conserved. 02:15:14 Between 50 generations 02:15:16 * Sgeo2dot1 wants to see the score 02:15:19 -!- Sgeo2dot1 has changed nick to Sgeo. 02:16:00 !bfjoust Lymias_local_maxima -.+-><-.-[.[(.)*2++]] 02:16:09 >.> 02:16:42 RIP EgoBot? 02:16:50 Score for Sgeo_Lymias_local_maxima: 18.8 02:17:13 Oh, huh 02:19:04 pikhq: OMG, it actually works. 02:20:23 elliott. 02:20:29 Make a call/cc opcode for Befunge. 02:20:36 NO :P 02:20:42 Lymia: That exists, basically. 02:20:45 There's TRDS, which is complete time travel. 02:20:54 :V 02:21:08 Implement call/cc in C. 02:21:13 @hoogle (a -> Bool) -> [a] -> Bool 02:21:13 Prelude all :: (a -> Bool) -> [a] -> Bool 02:21:13 Prelude any :: (a -> Bool) -> [a] -> Bool 02:21:14 Data.List all :: (a -> Bool) -> [a] -> Bool 02:21:18 @hoogle (a -> Bool) -> [a] -> a 02:21:18 Data.List find :: (a -> Bool) -> [a] -> Maybe a 02:21:18 Prelude dropWhile :: (a -> Bool) -> [a] -> [a] 02:21:18 Prelude filter :: (a -> Bool) -> [a] -> [a] 02:29:58 pikhq: haha, this is totally working except for one place where I need unsafeCoerce 02:30:00 pikhq: but oh well, right? 02:30:05 it'll only break if you break the invariants! 02:33:16 pikhq: DO YOU WANT TO SEE MY AMAZING HACK 02:33:19 elliott: ? 02:33:20 IT'S REALLY BEAUTIFUL 02:33:22 {-# LANGUAGE RankNTypes, TypeFamilies, ExistentialQuantification, StandaloneDeriving, FlexibleContexts #-} 02:33:28 And it *actually works!* 02:33:39 pikhq: I figured out how to model Funge-98 fingerprints really elegantly in Haskell. 02:33:44 No: I mean *really* elegantly. 02:33:47 elliott: Oh dear. 02:33:54 It has exactly one use of unsafeCoerce (where GHC is too dumb to know that the types do match). 02:33:57 This hack is probably horrifying. 02:33:57 But the rest is totally safe. 02:34:00 It's not. 02:34:08 Huh. 02:34:27 So, one instance of unsafeCoerce to get the type system to comply, eh? 02:34:35 pikhq: http://hpaste.org/43765/fingerprints Read it. You might want to run "test" in GHCi to see it working. Note that it executes SLLY's F instruction, meaning that once it gets to P, the state flipped to False, which is how it gets output. 02:36:39 elliott: Dang. 02:37:12 pikhq: What I'm trying to say is: Jesus christ, I'm going to use unsafeCoerce in an actual program and I don't even feel _ashamed_. 02:37:23 elliott: That's genuinely impressive. 02:37:28 Oh, and I plan to use some Template Haskell magic to sweeten the Fingerprint-writing deal. 02:37:40 For instance, NULL will look more like: 02:38:13 ...well. 02:38:17 Point is you won't have to write fpName separately. 02:38:20 And the data type will be done for you. 02:38:29 And maybe I'll even derive the list of handled instructions. 02:48:31 -!- copumpkin has joined. 03:10:54 -!- Lymia_ has joined. 03:11:08 -!- Lymia has quit (Disconnected by services). 03:11:08 -!- Lymia_ has changed nick to Lymia. 03:11:10 -!- Lymia has quit (Changing host). 03:11:10 -!- Lymia has joined. 03:11:57 pikhq: it isn't working with maps :( 03:12:04 I don't want an O(n) scan for every fingerprint instruction 03:12:53 elliott: :( 03:13:33 *Main> dmInsert NULL fpInitialState dmEmpty `dmAt` NULL 03:13:33 NULLState 03:13:34 fuck yeah 03:13:42 elliott, there was an update to Atomo 03:13:48 okay 03:15:03 Cannot match a monotype with `StateT FungeState IO' 03:15:04 wat 03:20:37 wut 03:20:55 pikhq: my program has regressed from beauty to beautiful but inscrutable types. 03:46:29 pikhq: FIXED IT 03:46:31 It uses maps now. 03:48:07 pikhq: 03:48:10 pikhq: http://hpaste.org/43766/fingerprints_2 03:48:14 pikhq: Now with Data.Dynamic. 03:48:20 pikhq: Allow me to tell you how awesome this shit is: FUCKING AWESOME 03:48:29 It's... just working. 03:50:00 pikhq: EXCUSE ME LOOK AT THE AMAZING 03:53:52 -!- azaq23 has joined. 04:05:24 lymia: don't do snipping of dead code. sometimes introns get activated and do useful things. leave the garbage in the evolving code and only remove it from the code that gets /tested/ and /scored/ 04:06:39 !bfjoust evo_wtf .++.++++><+-><>-(.[[([-])*2-]-.<.]>++[])*7+.[<.<<<>]+(.(+.-.<)*1.-.)*11[][]<+>.([]-<<[])*9-[+>[.[><.[]<+-><<.<[]+[(<)*8.>]--><(.[-<(-<<><)*12>++([<><][](-(>>>[]<)*2)*1[(>...[]<<([].[-].)*3+[>(+)*9[]])*20])*1+>->><]>[.+(.>.)*14-.<<]<><+.>[].->.+..[]+...>+<>--<[]-++-.+++->+>><.+-)*6>-<<[<<..-]<.(-<<->+)*10+.+>..<<<+.>].>>.-[]>]...>]>>(.+)*4>-+[].+(.+++[.<>]+)*4.<<><--> 04:07:22 quintopia, sometimes, that's easier said than done. 04:07:23 =p 04:08:09 Score for Lymia_evo_wtf: 0.9 04:08:37 Lymia: then don't do anything about dead code 04:09:22 pikhq: http://hpaste.org/43768/fingerprints_3 04:09:25 pikhq: Look at testShow. 04:09:31 pikhq: That's right, I can print the state of any fingerprint, generically. 04:09:43 Yay, 04:09:44 Er. Nested liftIO, lol. 04:09:53 pikhq: You don't realise. The states are *Dynamic*s. 04:11:13 Having pretty much perfected existence, I'm going to sleep now. 04:11:19 -!- elliott has quit (Quit: Leaving). 04:13:55 it seems quite reasonable that he may actually produce the best funge98 interpreter to date... 04:22:48 At this rate? 04:22:50 Yeah. 04:23:11 Knowing him? ... Actually, still possible that he gets the best funge98 interpreter before he stops. :P 04:25:56 i wouldn't have thought so until tonight. but he's close enough now that the idea can't be discarded 04:26:22 he's a lot like me...i have scads of unfinished lost or broken projects lying around... 04:28:42 Most of us do. 04:30:21 is procrastination in the hacker nature? 04:30:38 Perhaps/ 04:40:40 -!- azaq23 has quit (Read error: Operation timed out). 04:42:38 -!- azaq23 has joined. 04:43:59 quintopia: can i get back to you on that? 04:45:44 -!- Wamanuz4 has joined. 04:48:51 -!- Wamanuz3 has quit (Ping timeout: 240 seconds). 04:59:29 myndzi: no need. finding out the answer is a project i will have forgotten in a few days 05:00:35 -!- Zuu has quit (Read error: Connection reset by peer). 05:05:00 -!- Zuu has joined. 05:11:53 -!- myndzi\ has joined. 05:13:39 -!- augur has quit (Remote host closed the connection). 05:14:02 -!- myndzi has quit (Ping timeout: 245 seconds). 05:15:25 -!- amca has joined. 05:16:04 -!- augur has joined. 05:17:41 -!- augur has quit (Remote host closed the connection). 05:27:52 -!- augur has joined. 05:54:05 Atomo tuples are.... bizarre 05:54:41 -!- zzo38 has joined. 05:56:13 Is it possible to make a printed orchestral score for Purple Motion's musics? 06:06:41 -!- Lymia_ has joined. 06:06:48 -!- Lymia has quit (Disconnected by services). 06:06:50 -!- Lymia_ has changed nick to Lymia. 06:06:52 -!- Lymia has quit (Changing host). 06:06:53 -!- Lymia has joined. 06:25:14 -!- aloril has quit (Read error: Operation timed out). 06:26:17 -!- calamari has quit (Quit: Leaving). 06:31:33 -!- oerjan has joined. 06:35:20 -!- Lymia_ has joined. 06:35:56 -!- Lymia has quit (Disconnected by services). 06:35:57 -!- Lymia_ has changed nick to Lymia. 06:35:58 -!- Lymia has quit (Changing host). 06:35:58 -!- Lymia has joined. 06:40:11 -!- aloril has joined. 06:41:07 -!- azaq23 has quit (Quit: Leaving.). 06:50:05 -!- Lymia_ has joined. 06:53:04 -!- Lymia has quit (Ping timeout: 240 seconds). 06:59:53 Whose idea was it anyways to make C comments start with /* even though / is a valid binary operator and * is a valid unary prefix operator? 07:00:54 fancy google logo... 07:01:08 At least with C++ comments (also valid in many C compilers) start with // which is an invalid syntax in C, so it is OK that the comment starts with // 07:01:26 zzo38: // comments are C99. 07:01:47 As for why /*? I dunno. The block comment syntax in C is a major misfeature. 07:01:49 pikhq: That is one of the good things they added in C99. 07:01:57 * oerjan vaguely recalls someone saying they removed =- for that reason 07:02:23 and i guess =+ and =* too 07:02:38 oerjan: More like "replaced with something saner". 07:02:49 oh the reverse didn't exist? 07:02:56 Nope. 07:03:28 are there any remaining such ambiguities other that /* ? 07:04:24 Probably, but not many, I'd imagine. 07:04:35 There are really strange things such as (x+++++y) which according to the order of the parser, will always cause it to resolve in an invalid way even though there is a way to split it in which is valid, but that is not quite the same kind of thing. 07:04:47 Unlike C++, where you need to evaluate lambda calculus in order to parse. :P 07:05:10 hm haskell has the same problem with things (although not - which would give a comment) followed by - 07:05:24 There's also plain <, which may be a comparison operator or a start of <<; same goes for - and ->. 07:05:25 which is probably the reason they consider unary - ugly 07:05:43 fizzie: Aaah yes. 07:05:45 fizzie: But in C, < is only a binary operator so < < is not a valid syntax. 07:05:52 zzo38: But << is. 07:06:04 << is also a binary operator. :) 07:06:12 Same with -> because - is not a unary suffix operator so - > is not a valid syntax. 07:06:20 -> is *also* a binary operator. 07:06:24 That is why things like << and -> and // are OK. 07:06:35 It is better in that sense than the /* thing. 07:06:36 zzo38: for +++++ i guess it's better to give an error than to mislead when it's ambiguous 07:06:48 True, it is much much better than /*. 07:06:58 although what about just +++ ? 07:07:00 Especially given the really odd rules for *ending* such a comment block. 07:07:16 oerjan: Ow. 07:07:33 oerjan: I think the specification actually says to treat it as (x ++ ++ + y) but that is wrong because x++ is not lvalue. 07:08:02 Such strange cases are not particularly important, though. 07:08:09 +++ is always ++, +; it's the longest token always. 07:08:33 hm 07:09:49 > let x =-3 in x -- >:| 07:09:50 : parse error on input `in' 07:10:08 However, unlike << and -> and // but -- is different because - is valid unary operator to make - - but in this case it is also OK because putting two negative signs cancel each other out and is redundant. 07:10:38 Unary minus in Haskell is very much a hack. 07:10:46 > let x =- y = -y in 2 =- 2 -- >:| 07:10:47 -2 07:11:17 The more thing happened when the first - is binary operator and the second - is unary, but that also shouldn't matter. 07:11:31 It is only /* which is the worst one. 07:12:45 Do any processors have a command to bitshift a number of any length and use bitwise AND/OR/XOR on numbers of any length? 07:13:09 oh and of course -- does this in haskell too 07:13:25 What does -- do in Haskell? 07:13:30 zzo38: Comment. 07:13:34 > let x +-- y = x+y in 2 +-- 2 -- is a comment 07:13:35 4 07:14:01 But it's also an entirely valid string in an operator. :) 07:14:02 in this case putting -- directly after an operator makes it _not_ a comment 07:14:39 although honestly i don't see it as much of a problem because my intuition is already that operator characters fuse in haskell, and i like to use space 07:16:28 > do x <- Just $ 2 < - 2 in x 07:16:29 : 07:16:29 The last statement in a 'do' construct must be an ... 07:16:31 er 07:16:34 > do x <- Just $ 2 < - 2; x 07:16:35 Couldn't match expected type `Data.Maybe.Maybe b' 07:16:35 against inferred ... 07:16:42 bah 07:16:45 > do x <- Just $ 2 < - 2; return x 07:16:46 Just False 07:17:01 If whoever invented C decided that instead of /*...*/ that a comment is */.../* or {*...*} or (*...*) then you would not have that problem. 07:17:17 ...i guess that lambdabot response captures my attitude to this... 07:18:21 :t do x < - Just $ 2 < - 2; return x 07:18:22 Couldn't match expected type `Expr' 07:18:22 against inferred type `a -> Maybe a' 07:18:22 In the expression: Just 07:18:29 zzo38: Heck, there'd be less of an issue if K&R just made them nest the sane way. 07:18:29 :t \x -> do x < - Just $ 2 < - 2; return x 07:18:31 Couldn't match expected type `a -> b' against inferred type `Bool' 07:18:31 In the first argument of `($)', namely `x < - Just' 07:18:31 In a stmt of a 'do' expression: x < - Just $ 2 < - 2 07:18:41 hmph 07:19:03 zzo38: But, it kinda shows that they really designed around ridiculously simple parsers, as was reasonable back in the day. 07:19:05 oh wait 07:19:23 pikhq: These things has not to do with the nesting of comments, though. 07:19:34 I do not think the comments have to nest. 07:19:49 zzo38: /* /* /* /* */ 07:19:56 The above is bloody confusing. 07:20:11 pikhq: It is confusing, but I do not consider it to be the problem. 07:20:17 Well, not *bloody* confusing. 07:20:32 Mix in preprocessor pain and agony and it gets to actually be that way. 07:21:01 The problem is dividing by something pointed from another value. 07:21:03 God damn the C preprocessor. 07:21:49 C preprocessor works for some things.... but some things it doesn't which is why I made things in Enhanced CWEB you can also use the prepreprocessor, and even the preprepreprocessor. 07:22:46 > let x = 1 in do x < - 2 *> Just True; return x 07:22:47 Precedence parsing error 07:22:47 cannot mix `GHC.Classes.<' [infix 4] and `Con... 07:23:10 ...they have the _same_ precedence? 07:23:28 > let x = 1 in do x < - 2 >> Just True; return x 07:23:29 Couldn't match expected type `m a' 07:23:30 against inferred type `GHC.Bool.... 07:23:41 -!- impomatic has joined. 07:23:45 > (0$0 >>) 07:23:45 The operator `GHC.Base.>>' [infixl 1] of a section 07:23:46 must have lower pre... 07:24:04 > (0$0 <) 07:24:05 The operator `GHC.Classes.<' [infix 4] of a section 07:24:05 must have lower pr... 07:24:16 oh wait 07:24:20 !bfjoust timeout http://candlebags.co.uk/temp/5.txt 07:24:47 Score for impomatic_timeout: 15.0 07:25:26 ? 07:25:40 i'm sure there must be _some_ way to get a haskell expression to give two different valid results if you change a <- into < - , but i don't seem to get there with the common operators 07:26:27 hm... 07:26:47 !bfjoust decoy_for_lazy_programs (>+)*5 07:26:57 However, with -> operator in C, it is not really necessary if they made . do both what . does now and what -> does now, but at least -> works because the individual - > in that sequence is bad, so -> is OK. 07:26:59 Score for Sgeo_decoy_for_lazy_programs: 0.0 07:27:12 Awesome, I suck. 07:27:59 !bfjoust timeout http://candlebags.co.uk/temp/5.txt 07:28:06 Score for impomatic_timeout: 15.2 07:28:28 !bfjoust nothing_to_see_here (-)*127 07:28:45 Score for Sgeo_nothing_to_see_here: 8.1 07:30:59 !bfjoust sine (-)*127[-+] 07:31:15 Score for Sgeo_sine: 10.9 07:31:17 The C preprocessor is weak but what I think is adding a command to catch compiler errors would be useful. 07:31:20 Hah 07:31:35 !bfjoust timeout http://candlebags.co.uk/temp/5.txt 07:31:43 Score for impomatic_timeout: 14.4 07:32:17 -!- zzo38 has quit (Remote host closed the connection). 07:32:27 !bfjoust timeout http://candlebags.co.uk/temp/5.txt 07:32:34 Score for impomatic_timeout: 15.3 07:36:10 !bfjoust timeout (>)*8(>[++++[-]])*21 07:36:19 Score for impomatic_timeout: 13.8 07:36:50 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]). 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 09:48:15 -!- clog has joined. 09:48:15 -!- clog has joined. 09:50:48 -!- sixdej|sleep has quit (Ping timeout: 240 seconds). 10:40:53 -!- ais523 has joined. 10:46:25 -!- azaq23 has joined. 10:49:50 -!- FireFly has joined. 11:04:06 -!- hiato has joined. 11:04:06 -!- hiato has quit (Client Quit). 11:08:00 -!- poiuy_qwert has quit (Ping timeout: 240 seconds). 11:11:25 -!- poiuy_qwert has joined. 11:24:24 -!- FireFly has quit (Quit: swatted to death). 11:25:30 -!- ais523 has quit (Remote host closed the connection). 11:25:45 -!- ais523 has joined. 11:34:47 -!- ais523 has quit (Read error: Connection reset by peer). 11:40:03 -!- ais523 has joined. 11:41:32 > let (<$) = fmap . const; infixl 1 <$ in do x <- y <$ Just z ; return x 11:41:33 Just y 11:41:44 > let (<$) = fmap . const; infixl 1 <$ in do x < - y <$ Just z ; return x 11:41:46 Just x 11:44:24 Hooray. 11:44:53 there's still that pesky (<$) fixity 11:49:00 > bool 11:49:00 Not in scope: `bool' 11:49:03 > if' 11:49:04 Not in scope: `if'' 11:50:14 -!- pikhq_ has joined. 11:50:16 -!- pikhq has quit (Ping timeout: 250 seconds). 11:50:48 > let f | x <- 2 = True in f 11:50:49 True 11:50:54 > let f | x < - 2 = True in f 11:50:55 *Exception: :3:4-21: Non-exhaustive patterns in function f 11:51:08 hm 11:51:38 > let f | x < - 2 = True | otherwise = False in f 11:51:39 False 11:51:43 > let f | x <- 2 = True | otherwise = False in f 11:51:43 True 11:51:50 ok that one works 11:53:25 You win a point. 11:58:28 -!- pikhq_ has quit (Read error: Operation timed out). 12:00:50 -!- pikhq has joined. 12:10:10 -!- amca has quit (Quit: Farewell). 12:42:07 -!- azaq23 has quit (Ping timeout: 260 seconds). 12:43:30 -!- azaq23 has joined. 12:50:50 -!- azaq231 has joined. 12:51:27 -!- azaq231 has quit (Changing host). 12:51:27 -!- azaq231 has joined. 12:52:28 -!- azaq23 has quit (Ping timeout: 240 seconds). 12:53:01 -!- azaq231 has changed nick to derivector_azaq2. 12:53:16 -!- derivector_azaq2 has changed nick to derivector. 12:53:23 -!- derivector has changed nick to azaq23. 13:06:56 curious: defend7 and chainmail beat the entire field of programs between them, and tend to do well against programs the other does badly against 13:06:59 despite being almost identical 13:07:03 I wonder what's happening there? 13:30:50 -!- FireFly has joined. 13:32:54 -!- yiyus_ has changed nick to yiyus. 13:34:55 -!- azaq23 has quit (Ping timeout: 240 seconds). 13:47:46 -!- azaq23 has joined. 14:05:44 ais523, details of timing? 14:06:00 just an idea 14:06:03 Vorpal: that seems pretty likely to be involved, indeed 14:06:17 but it's strange how they're so completely different in that respect 14:06:58 ais523, apart from that I can only recommend the obvious method of trying various changes to make one of them more like the other and see which change makes what happen 14:09:40 ais523, err, you might know the answer to this: I'm looking for a directed graph (may or may not be acyclic) data type in haskell, able to label nodes and edges. Where should I look? I don't really know the standard library of haskell very well yet but I presume it is there somewhere. 14:10:18 I don't know Haskell's stdlib well at all 14:10:22 @hoogle graph 14:10:22 module Data.Graph 14:10:22 module Data.Graph.Inductive.Graph 14:10:23 Data.Graph type Graph = Table [Vertex] 14:10:26 hm 14:10:30 lambdabot does, though 14:10:38 right. didn't know that command 14:10:44 but that might not be what you want 14:10:57 ais523, well hard to tell. guess I'll google it 14:11:39 if it is the same as this http://www.haskell.org/ghc/docs/latest/html/libraries/containers-0.4.0.0/Data-Graph.html ? 14:14:23 -!- poiuy_qwert has quit (Read error: Operation timed out). 14:14:40 looks like it 14:14:40 indeed not 14:14:46 ais523, doesn't label edges 14:14:59 I need multiple differently labeled edges between the same node pair sometimes 14:15:24 aha, I think I've identified a flaw in defend7, which is also potentially in chainmail but harder to trigger 14:16:28 !bfjoust defend10 http://sprunge.us/ZXiO 14:16:31 I admit ignorance. What is an inductive graph? 14:16:36 I'm not sure either 14:16:43 I'm hardly a Haskell expert 14:16:46 because Data.Graph.Inductive.Graph has labeled edges 14:17:08 type UEdge = LEdge () "Quasi-unlabeled edge" <--- heh 14:17:21 haha 14:17:28 Score for ais523_defend10: 39.0 14:17:42 ais523, which is strange since it also has type Edge = (Node, Node) which is just "Unlabeled edge" 14:18:06 -!- pikhq has quit (Read error: Operation timed out). 14:18:38 hmm, that just made things even more confusing 14:18:45 it definitely depends on minor timing details 14:19:20 !bfjoust defend10 http://sprunge.us/EZYj 14:19:36 Score for ais523_defend10: 36.8 14:20:22 now if I just could figure out what the hell an inductive graph was... 14:20:23 -!- pikhq has joined. 14:20:29 google isn't very helpful 14:20:34 who here is a haskell expert 14:20:34 -!- poiuy_qwert has joined. 14:21:47 !bfjoust defend10 http://sprunge.us/MWQf 14:21:58 that one works on a bit of a different mathematical formula 14:22:00 Score for ais523_defend10: 0.0 14:22:06 wait what? 14:22:17 -!- BeholdMyGlory has joined. 14:22:24 ais523, must have an error 14:23:11 !bfjoust test . 14:23:16 -!- poiuy_qwert has quit (Client Quit). 14:23:22 Score for Vorpal_test: 8.6 14:23:31 see. even that... so likely an error 14:23:50 nope, I just got the maths wrong 14:24:02 oh, haha, not that either 14:24:08 or, yes, is that 14:24:59 !bfjoust test >+<. 14:25:07 Score for Vorpal_test: 0.0 14:25:12 ah 14:26:07 There is that FGL thing. 14:26:22 I don't know if it's any good and/or maintained. 14:26:30 ("Functional Graph Library" or something.) 14:26:44 I just remember seeing a libghc6-blah package for it in Ubuntu. 14:27:38 It seems to be Data.Graph.Inductive. 14:27:46 Based on http://hackage.haskell.org/package/fgl 14:28:23 fizzie, any idea what it means with "inductive graph" 14:28:36 !bfjoust defend10 http://sprunge.us/EIJX 14:28:51 Score for ais523_defend10: 10.7 14:28:57 whops have to rush 14:28:59 I *think* it just means their way of doing a graph API, nothing specially particular. 14:29:04 But I could be worng there. 14:29:18 * Sgeo goes insane due to lack of accomplished homework 14:29:32 Graph-as-a-recursive-datatype sort of thing. 14:32:04 -!- Sgeo has quit (Quit: Need to accomplish a weekend's worth of homework in 10 minutes.). 14:35:20 !bfjoust defend10 http://sprunge.us/CWIN 14:35:39 Score for ais523_defend10: 55.1 14:36:00 that's a genuinely different mathematical principle from defend7, now 14:37:12 and straight to the top of the leaderboard 14:37:22 not bad after the previous two versions scored 0 and 10.7 14:44:28 but that might not be what you want <-- well if hoogle doesn't find it, i think the next step is to look in hackage... 14:47:00 mind you all i really recall about graphs in haskell is that there are packages but it's supposedly awkward to do functionally 14:47:15 also you seem to want multigraphs... 14:47:23 Vorpal: ^ 14:47:35 it seems that defend10 wins more convincingly than defend7 against many opponents where they both win, too 14:50:53 -!- azaq23 has quit (Quit: Leaving.). 15:00:07 * oerjan ponders if we should make an Esolang:Classics page for listing particularly interesting languages 15:00:57 hm i guess i should post this on the wiki 15:04:34 that sounds like a POV nightmare, with everyone wanting their own langs there 15:04:43 not that I'm opposed to the concept if it's workable 15:04:51 hmm, whatever happened to the Essies? 15:05:02 ais523: ah but i had an idea for a sponsoring rule - and you cannot sponsor your own language 15:05:14 i.e. this page would _not_ be free for all 15:05:56 perhaps the wiki isn't the best place for it, then 15:05:58 or would it still be a problem with sockpuppets... 15:06:16 although I suppose it's the only even partially active esolangs forum other than #esoteric 15:06:28 sockpuppets wouldn't necessarily be a problem, you could think up ways to exclude them 15:06:46 well the thing is there are _so_ many languages on the wiki that it's hard to find the good stuff 15:07:09 well there is the Special:Favorites page, or what it's called 15:07:18 and the Timeline 15:07:39 well i guess i'm really just asking for a bit better organization 15:07:42 Graph-as-a-recursive-datatype sort of thing. <-- hm, can it handle cycles 15:07:49 fizzie, I'm pretty sure I will have cycles 15:07:57 Sure. 15:08:02 * oerjan is having second thoughts 15:08:20 also you seem to want multigraphs... <-- yes indeed 15:08:53 Vorpal: although in some ways you could do multigraphs with a label that was a set, maybe 15:09:14 although whether that fits the algorithms you need to use... 15:09:50 oerjan, what I'm looking for I guess is something like erlang's digraph module, which can do various types of digraphs depending on what you request. In it's most general variant that would be directed multigraphs with cycles I guess 15:09:57 My initial assumption would be that in FGL graphs you could insert multiple differently-labeled edges between two nodes, but it doesn't seem to be very comprehensively documented. 15:10:08 oerjan, well that seems somewhat awkward, though it could be done 15:10:51 Vorpal: hm will you have _loops_? (cycles from an edge to itself) 15:10:54 *vertex 15:11:50 Vorpal: i guess what you need depends on what you need to do with it - if it's just something simple you might just want to roll your own 15:12:00 oerjan, I think the smallest cycle I will have would contain at least two nodes. 15:12:05 ok 15:12:21 yep. I can't think of how I could get loops 15:12:40 oerjan, anyway yes I could roll my own, but I don't like to reinvent the wheel 15:12:58 not unless I have a reason to at least 15:13:46 oerjan, anyway, I will very likely need to update the graph quite a bit. So it would be preferable if that wasn't a too expensive operation 15:13:56 hm 15:14:37 Vorpal: purely function might not be the best then, but i don't know how good those packages are. i guess you just have to read their documentation (if they have any) 15:14:43 *functional 15:14:51 FGL's source is short and (moderately) cryptic. :p 15:15:03 At least for the Data.Graph.Inductive.Graph module. 15:15:04 oerjan, haskell would be nice for various other reasons for this thing, but I might go for another language if that would be less work. 15:15:13 insEdge :: DynGraph gr => LEdge b -> gr a b -> gr a b 15:15:13 insEdge (v,w,l) g = (pr,v,la,(l,w):su) & g' 15:15:13 where (Just (pr,_,la,su),g') = match v g 15:15:37 It's quite tuplestic. 15:15:40 heh 15:15:41 Ledge is labeled edge, i presume 15:15:49 oerjan, from the docs it seemed like that yes 15:15:53 Yes, LEdge b is (Node, Node, b). 15:15:55 *Ledge 15:15:57 er 15:16:01 *LEdge 15:16:12 * oerjan swats his left middle finger 15:16:27 oh wait it's the right pinky which needs swatting 15:17:01 well insEdge doesn't look bad at least 15:17:51 Vorpal: writing an Eodermdrome interp? (although that probably wouldn't need labeled edges unless it would help for algorithmic purposes) 15:18:24 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 15:18:30 oerjan, I expect this kind of workflow: insert lots of nodes and edges, then a longer period of removing with a handful of inserts only. 15:18:37 ais523, alas no. 15:18:45 ais523: heh 15:18:57 ais523, I shall check out that language though 15:18:59 sounds interesting 15:19:06 it is, but a pain to implement 15:19:07 it's a bitch to program ;D 15:19:10 *too 15:19:20 oh that one 15:19:24 yep, I think I wrote one (untested) program than gave up 15:19:26 I seen the wiki page before 15:19:31 *I saw? 15:19:39 well my program is also untested of course 15:19:40 have seen* 15:19:40 even 15:19:52 hmm, indeed, although that's rather needlessly formal 15:20:09 or well "of course" i _think_ there's an interpreter floating around somewhere (by oklopol?) but maybe not online 15:20:38 *I've seen, maybe? 15:20:48 I remember oklopol was writing one, but IIRC didn't see the finished product 15:20:53 anyway, it is language implementation related, but I do not wish to reveal everything atm because it might just not work out at all, in which case I don't want elliott laughing at me. :P 15:20:59 brb phone 15:22:10 ais523: when i thought about writing an eodermdrome interpreter i got this idea that there's a near endless amount of indexing you might want to do to make finding subgraphs reasonable efficient 15:22:34 like having a list of all single-edge vertices, etc. 15:22:41 indeed, it's one of those esolangs where a clever caching strategy can make it run much faster 15:22:42 *reasonably 15:22:55 like 1cnis or Feather, although just trying to get Feather to work at all is hard enough 15:23:30 I think what I'll do is get an interp written in Scheme working first, and then write a Scheme interp designed to interpret Scheme programs interpreting Feather efficiently 15:23:37 which is likely easier than trying to write a second Feather interp 15:33:13 back 15:34:38 hrrm. Data.Graph.Inductive.Graph lacks topsort (I expect my processing of it will remove all cycles, and then I want to topsort it) 15:36:23 actually it seems that erlang has exactly the module I need. And well documented. And it is fast for updating (it is implemented in a non-pure way if you look deep enough) 15:36:51 but other than this (main) structure of the program haskell would be so much nicer 15:37:09 @hoogle digraph 15:37:09 No results found 15:37:15 well, worth a try 15:39:39 Vorpal: topsort's in Data.Graph.Inductive.Query.DFS. 15:39:44 Applicable to a Graph. 15:39:50 fizzie, aha 15:40:00 (After all, DFS is how you topologically sort a DAG.) 15:40:46 (Okay, so it's a pretty poor justification.) 15:41:06 `addquote "My real name is 4, but I go by fizzie3 on the Internet. I log in as 1." 15:41:52 300) "My real name is 4, but I go by fizzie3 on the Internet. I log in as 1." 15:42:03 Is that referring to something? It really sounds like it is. 15:43:04 fizzie: it's when you logged in yesterday via USER 1 2 3 4 15:43:06 fizzie, I have to say that library is very poorly documented though. 15:43:20 I was `addquoting from logreading 15:43:24 it doesn't even list complexity of functions like insertion and so on 15:43:27 ais523: Yes, but the actual thing. It sounds like a paraphrased quote from some fictional work. 15:43:54 ah 15:44:19 there's a bit near the end of Alice Through the Looking Glass that works a bit like that, but it's different enough that that isn't a paraphrased quote 15:45:19 -!- copumpkin has joined. 15:46:07 hey, in Befunge-98, if you manage to completely delete every command from fungespace, leaving it with spaces everywhere, what does y return? 15:46:20 (I'm wondering if that's an "if a tree falls..." question, or if there's some way to actually run y on a blank fungespace) 15:46:26 in particular, for the fungespace bounds 15:47:00 it's easy to see bounds update algos going into an infinite loop on empty fungespace; but then, the program goes into an infinite loop then anyway, so that behaviour can't be said to be incorrect 15:47:06 ais523, I don't think you can. Unless you use some multiverse-style fingerprint. Even k trickery wouldn't be enough here 15:47:39 not even t trickery, I think 15:47:44 indeed 15:49:37 ais523: The EXEC fingerprint has X (cmd n --) "execute command on stack n times". 15:49:42 -!- MigoMipo has joined. 15:49:55 that would work, I think 15:50:10 You'd need to execute the X itself, though. 15:50:10 ais523, I can tell you what would happen when loading an empty file in cfunge, and that is that the boundsvalid variable would never be set to true. I don't know what effects that has. I never investigated the empty file case further than "yep, it seems to be an infinite loop, *hits ctrl-c*" 15:50:22 you can use X containing X 15:50:30 with the first copied X running p, and the second running y 15:50:40 fizzie, k and X trickery could do it 15:50:54 Vorpal: what about annihilator programs? 15:50:55 Yes, that sounds possible. 15:51:04 yep, both kX and 'XX seem to work 15:51:10 with suitable stack layouts 15:51:14 ais523, well they end up with infinite loop. I never investigated where the loop was 15:51:22 ais523, but cfunge updates bounds lazily. 15:51:34 -!- Phantom_Hoover has joined. 15:51:38 even in slowdown.b98? 15:52:21 ais523: I'm not sure if EXEC implementations are typically tested against recursive X, though. 15:52:25 ais523, the logic in the wrapping code goes something like: if not exact bounds, and maxbounds - minbounds > somelargeconstant: force a shrink 15:52:57 ah, I see 15:52:59 ais523, the constant is indeed a fudge factor that I arrived at with some testing on my sempron 3300+ system. Might vary between systems of course 15:53:00 that makes sense 15:54:14 ais523, same as I switch shrinking algorithm when the bound difference is large enough, by assuming we are dealing with a sparse rather than compact funge space (and thus shrinking by stepping borders inwards would be stupid). 15:54:56 being stupidly micro-optimised is so eso in its own right 15:55:13 hm does mycology test what happens if you kp and then ensures the stack is such that it overwrites the k in the middle of the loop? 15:56:08 ais523, actually those two are not microoptimising. They are just switching to algorithms that don't take tens of seconds for slowdown.b98. No other program runs into this sort of huge bound shrinking in practice. 15:56:22 indeed 15:57:24 ais523, anyway, no one ever complained about stuff like BLAS generally needing to be tuned to the specific system! 15:57:40 (okay that is quite different, but still) 16:08:41 -!- asiekierka has joined. 16:09:52 uh-oh, heard in the office: "what's the point of [Apple keyboards]" 16:10:06 this argument could last a while 16:10:09 ais523, why [ ]? Did it replace some profanity? 16:10:16 it replaced a pronoun 16:10:20 ah 16:10:33 Namely, "him" 16:10:54 * oerjan facepalms and then swats Gregor -----### 16:10:54 ais523, not a lot unless you have a mac, and even then just for key labels (cmd or whatever) 16:11:03 Gregor: I forget which pronoun it was now (probably "that"), but "him" seems unlikely 16:11:10 :P 16:11:32 TODO: censor all the pronouns in http://en.wikipedia.org/wiki/Special:Search?go=Go&search=Brainfuck 16:11:43 ais523, besides aren't all apple keyboards ultra flat or something? 16:11:48 actually, I think someone did something similar a while back 16:11:49 or do they still make proper keyboards? 16:11:53 Vorpal: I don't know, I'm not a keyboard maniac 16:17:25 !bfjoust attack_15 (>)*15[-] <--- that's a pretty specific program 16:17:38 I suppose it beats pretty much anything on a program with tape length 16, and fails otherwise 16:18:00 Well, that's 1/21 tape lengths :P 16:18:31 yep 16:18:42 it didn't do very well 16:18:45 but the concept is hilarious 16:19:09 (tripstridewire does that on tape length 10, with the exception that it doesn't just give up on different lengths) 16:19:25 (and uses an offset clear) 16:19:32 !bfjoust aaaaah_motherland (>++)*5(----<)*5[(>++++)*5(----<)*5] 16:19:53 Score for Gregor_aaaaah_motherland: 0.0 16:19:58 lol 16:20:04 lolwhat at the [] <--- defend10, currently top of the leaderboard, doesn't just contain [] but [[]] 16:20:04 That is surprisingly bad :P 16:20:24 Gregor, why that name 16:20:27 Gregor: programs that set up decoys and then don't do anything else tend to do very terribly on the current hill 16:20:33 Vorpal: AAAAH MOTHERLAND 16:20:38 and it's hard to see how they could do well on most others 16:20:48 Gregor, yes why that. Is it a reference to something 16:20:49 ? 16:20:55 ais523: um [[]] is entirely redundant, right? 16:20:56 Vorpal: AAAAH MOTHERLAND 16:21:02 oerjan: no 16:21:10 i mean 16:21:15 ]] checks to see that the opponent isn't interfering with the cell 16:21:16 equivalent to [] 16:21:16 Gregor, stop that. You are acting like elliott now 16:21:24 oh 16:21:28 so you only leave the loop if it's zero two cycles in a row (the lose condition) 16:21:40 Vorpal: There is no reasoning behind the name :P 16:21:45 several programs won't leave a cell until it's zeroed two cycles in a row, so you're detecting them detecting you 16:21:46 Gregor, ah 16:21:52 while not accidentally tripping on, say, an offset clear 16:22:00 which takes the cell past 0 and then back to 0 16:22:58 Gregor: i got this soviet vibe from it 16:23:12 oerjan: That was the intended vibe :P 16:23:17 ais523, but which cell does it do that [[]] on? 16:23:28 second cell, which is set to 1 16:23:32 ais523, ah 16:23:42 any nonzero value will do, it's just checking to see when the opponent clears it 16:23:48 !bfjoust 16:23:48 Use: !bfjoust . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/ 16:23:51 ais523, and then what. Tries to defend the real square? 16:23:54 you could also check to see how, e.g. detecting offset clears, but defend10 doesn't do that 16:24:06 and yep, it tries to lock the opponent in an infinite loop on that square 16:24:10 ais523, have you considered defending cell 2 then cell 1 and then cell 0? 16:24:11 I am so, so bad at BFJoust :P 16:24:17 while slowly looping all the other squares on the tape down to 0 16:24:36 ais523, how does it avoid running off the remote end? 16:24:41 Vorpal: I have, but there doesn't seem to be much of a point, unless maybe you defended them with different algos 16:24:54 and by looping each square through 256 possible values before moving onto the next 16:25:15 if it does that to a flag, the program ends before it runs off the end; if it does it to a non-flag, then it's safe to move forwards 16:25:22 ais523, what is the tape length range now again? 16:25:26 10 to 30 16:25:29 right 16:25:31 inclusive 16:26:13 as for which square to place the decoy on, that's the main difference between my defend7 and impomatic's chainmail 16:26:54 ais523, has anyone invented any majorly different type of program the past few months? 16:26:56 !bfjoust nonsense (-)*127++[(----++++)*50] 16:27:00 multiple defence only really makes sense if a) you can detect that your defence failed so as to move back (not too difficult, move back a few cycles early and check to see if it's 0 two cycles in a row); b) you have a different algo for the square before 16:27:06 Vorpal: I'd say stridewires are a new program type 16:27:12 ais523, how do they work 16:27:12 Score for Gregor_nonsense: 14.3 16:27:31 That's the highest score I've ever gotten X-P 16:27:35 by looking not at every tape element, but at alternate elements 16:27:56 ais523, tripwire would pass defend7 by just jumping over it's decoy, right? 16:27:58 so the idea is that opponents generally set several decoys, and half the time you skip the first 16:28:14 Vorpal: and yes, except that defend7 has a second decoy just to trip tripwires 16:28:17 ah 16:28:40 !bfjoust obvious (>)*9([[-]]..>)*21 16:28:48 Score for Gregor_obvious: 9.5 16:29:01 * pikhq revels in a "Screw you guys, I'm not coming in" day 16:29:01 Gregor: that's like my stupid defender clearer 16:29:05 ais523, you could fool stridewires by spacing your decoys correctly. At least for about half of the runs 16:29:11 ais523, have anyone tried this? 16:29:19 so-called both because it clears stupid defenders, and because it stupidly clears defenders 16:29:38 Vorpal: stridewires aren't very good, so it hasn't really been necessary 16:29:45 and even then, they could randomise their spacing to counteract it 16:30:05 the reason tripstridewire does as well as it does is because a) it tends to win on short tapes due to being so aggressive, and b) it wins a fraction of the longer ones 16:30:17 mhm 16:30:20 so although it tends to lose overall, most of them are close losses rather than losing on every length 16:30:38 which lets its resounding wins counteract that to some extent 16:31:51 Gregor: what would be nice would be if report.txt didn't just say +/-/0, but gave an indication of the extent of the win or loss; i.e. a different code for winning on all 42 runs, to winning 40 of them, to winning 22 of them 16:32:03 ais523, how do programs counteract shudders. they make the "two turns in a row" bit quite hard to achieve 16:32:08 the table at the bottom's a little misleading in that respect atm 16:32:19 Vorpal: oh, you simply - while the enemy's doing + after zeroing it 16:32:32 [-] against a typical shuddering program actually wins 16:32:38 ais523, hm right. What about something like (-)*10000 then 16:32:47 ais523, that won't do the plus bit 16:32:54 that works better, but gives you no time for logic 16:33:02 it's still counteracted by doing + at the right moment, though 16:33:05 ais523, indeed. But it does worse than shudder 16:33:06 iirc 16:33:09 so it loses against [+] 16:33:15 hm 16:33:16 true 16:33:34 defend10 does (-)*128 for timing purposes, on its own flag 16:33:55 which doesn't run long enough to lose to anything but a no-op 16:34:01 (and no-ops never trigger the tripwire) 16:34:19 ais523, err is the starting value 127 or? 16:34:23 it's 128 16:34:24 I forgot 16:34:26 ah 16:34:34 but if the opponent changes it at all, you don't zero your own flag doing that 16:34:40 and defend10 tries to make pretty sure the opponent will 16:34:58 (that can be exploited to defeat defend10, but at the cost of losing to pretty much everything else, so I doubt people will try) 16:35:11 (and there are better ways to counter defence programs) 16:35:21 ais523, such as? 16:35:56 mostly doing a lot of random + and - instructions to zero flags 16:36:19 which fails against attack programs, but you can try to detect defense programs and react accordingly 16:36:28 mhm 16:36:46 by putting another loop immediately after your zeroing loop, as in [-][+.++.---.-+----] 16:37:08 right 16:37:34 that is, if the defence program doesn't lock you in the initial [-] 16:38:10 ah 16:38:11 ais523, figured out the defend7 - chainsaw result differences btw? 16:38:26 I think it's to do with odd/even polarity on the decoy 16:38:35 vs. odd/even timing differences in the programs they're beating 16:38:41 ah 16:39:07 locking the flag at always odd numbers means it never hits 0, locking it at always even numbers lets the opponent escape from a lock 16:40:30 !bfjoust test (>)*9([-][+--.-+]>)*30 16:40:34 Score for Vorpal_test: 14.2 16:40:37 Huh. Debian *might* in the future be going back to Firefox. 16:40:55 !bfjoust counterdefence (>)*8(>(+)*128)*21 16:40:58 Score for ais523_counterdefence: 1.6 16:41:03 not surprising 16:41:11 because several defence programs aren't simplistic enough to fall for it 16:41:28 Apparently the Firefox copyright policy on the full-and-proper Firefox logo changed, making it so that Debian can reasonably comply with the trademark policy. 16:41:30 in fact, none of the current ones are :) 16:41:34 ais523, that table in the results. Which way do you read it 16:41:45 row is the program that gets +, 0, - 16:41:49 column is the program it was playing against 16:41:52 aha 16:42:12 So, Debian is currently filing for a trademark license from Mozilla. 16:42:21 So I'm told. 16:42:47 I won't want to be running Firefox instead of Iceweasel though :( 16:42:49 pikhq, why 16:43:33 I figured out yesterday that Fluidsynth reliably puts 120 extra samples at the end of every track (between tracks + at the end) and 64 more extra samples at the end. 16:43:35 !bfjoust test >->+(>)*9([-][+--.-+]>)*30 16:43:39 Score for Vorpal_test: 5.2 16:43:41 Vorpal: The main holdup on them branding the package as Firefox was that the Firefox logo's *copyright* license wasn't DFSG, apparently. 16:43:42 I had to figure this out to get exactly-perfect seamless looping. 16:43:44 !bfjoust test >->+(>)*7([-][+--.-+]>)*30 16:43:52 Score for Vorpal_test: 7.2 16:43:58 !bfjoust test (>)*9([-][+--.-+]>)*30 16:44:01 Vorpal: And you couldn't get a trademark license for the Firefox name without using the Firefox logo. 16:44:09 Score for Vorpal_test: 14.2 16:44:15 Vorpal: Now, the copyright license is DFSG. 16:44:16 pikhq, heh 16:44:33 pikhq: That was the original reason, then there was this bulge of other reasons, then those sort of mostly went away, but left the original reason. 16:44:42 Gregor: Ah, right, yes. 16:44:49 ais523, it seems that if a program sucks in general removing decoys will help 16:44:56 Gregor: It's the *relevant* reason. :) 16:44:59 due to all those tripwires 16:45:08 Vorpal: heh, yes 16:45:27 actually, there's only two tripwires on the hill atm (tripstridewire, and shade) 16:45:42 ais523, you should compare good attackers with and without decoys 16:46:15 two good attackers vs. each other, effective decoys (i.e. decoys that are zeroed in the wrong direction) tend to make or break the game 16:46:36 tripstridewire vs. mirage is an amazing match to watch in a debugger 16:47:09 for some tape lengths, the opposing flag is less than 10 or so when a program loses 16:47:13 * Vorpal imagines BFJoust world cup 16:50:31 ais523, what does mirage do? 16:50:56 it's just a slow rush program 16:51:01 which means? 16:51:03 large decoys, a few tweaks against defenders 16:51:09 ah 16:51:27 it attacks, but slowly, trying to spend time to make the opponent spend more, and so reach the flag first 16:51:41 !bfjoust bad (+>->)*40(>[+])*1000 16:51:43 Score for coppro_bad: 0.0 16:51:47 O_o 16:51:59 !bfjoust bad (+>->)*10(>[+])*1000 16:52:02 coppro, it goes off the end of the tape yah 16:52:03 yeah* 16:52:04 Score for coppro_bad: 0.0 16:52:25 try *5 16:52:33 !bfjoust bad (+>->)*5(>[+])*1000 16:52:40 Score for coppro_bad: 10.4 16:52:44 -!- elliott has joined. 16:52:53 !bfjoust silly ([[]+])*100 16:53:07 Score for coppro_silly: 8.2 16:53:20 coppro, try 10000 or such 16:53:23 hi 16:53:26 !bfjoust silly ([[]+])*1000000 16:53:28 elliott, hello 16:53:40 Vorpal: happy? 16:53:41 Score for coppro_silly: 8.2 16:53:45 ^ 16:53:50 made no difference, as expected 16:53:54 coppro, indeed 16:54:01 thought it would 16:54:02 meh 16:54:04 Vorpal: I figured out how to do fingerprints nicely 16:54:09 elliott, mhm 16:54:11 !bfjoust silly ([[]------>+<])*100 16:54:14 elliott, tell 16:54:24 I didn't, by the time it's passed the first ] it's generally already lost 16:54:26 Score for coppro_silly: 8.2 16:54:31 huh, interesting 16:54:41 Vorpal: http://hpaste.org/43784/fingerprints_4 16:54:44 anyway, time to clean up 16:54:53 ais523 may also be interested, just for insane Haskell existential typing 16:55:02 and type families 16:55:09 Vorpal: the example FPsare lower down 16:55:11 *FPs are 16:55:42 elliott, a lot of fingerprints have per-thread state instead 16:56:11 Vorpal: that's what FPIPState is for 16:56:19 this is a proof of concept so it's commented out 16:56:38 elliott, do MODU too, so you can test the multiple-fingerprint stuff 16:56:50 Vorpal: this doesn't actually work in shiro yet, it's just how to do it from the haskell-side 16:57:19 elliott: is "io" in Shiro a function that makes an IO action into a Shiro action? 16:57:20 and it only requires five type-system extensions! 16:57:35 ais523: er, yes; been reading the interpreter code I pasted? 16:57:38 ais523: It's just an alias for liftIO 16:57:47 yes, I have 16:57:49 :t liftIO 16:57:50 Ambiguous occurrence `liftIO' 16:57:50 It could refer to either `Control.Monad.Error.liftIO', imported from Control.Monad.Error 16:57:50 or `Control.Monad.Logic.liftIO', imported from Control.Monad.Logic 16:57:59 :t Control.Monad.Logic.liftIO 16:58:00 ais523: liftIO basically amounts to lift . lift . lift for some number of .s 16:58:00 forall a (m :: * -> *). (Control.Monad.Logic.MonadIO m) => IO a -> m a 16:58:05 it's for easy access to the IO monad way under you 16:58:11 except in Shiro it's right under you, but whatever 16:58:29 and what happens if there isn't one? runtime error? 16:58:36 ais523: err, then there's no MonadIO instance 16:58:41 so it wouldn't type 16:58:43 aha 16:59:10 MonadIO is any monad that has IO or involved somewhere? (I take it there isn't an IOT?) 16:59:12 elliott, do you do mycouser btw? 16:59:14 :t IOT 16:59:15 elliott, for input 16:59:15 Not in scope: data constructor `IOT' 16:59:18 indeed 16:59:22 ais523: (1) :t on types doesn't work 16:59:24 try :k 16:59:28 elliott, remember that EOF on stdin is defined to reflect 16:59:29 :k IOT 16:59:30 Not in scope: type constructor or class `IOT' 16:59:30 not to exit 16:59:33 ais523: (2) indeed there isn't, IOT would allow for TwoDucks 16:59:39 Vorpal: indeed, I pass mycouser 16:59:50 elliott: I forgot that types didn't necessarily have the same name as their constructors 16:59:54 elliott, even for non-trivial cases such as invalid integer input? 16:59:56 doIns i = 16:59:56 (doCharIns . chr . fromIntegral $ i) 16:59:56 `catchShiro` \(e::IOException) -> do io $ hPutStrLn stderr ("Note: Reflecting on IO exception " ++ show e) -- TODO: remove this 16:59:56 reflect 16:59:59 so I do handle IO errors 17:00:00 elliott, like foo instead of an integer? 17:00:00 Vorpal: yep 17:00:01 Vorpal: I reflect 17:00:10 elliott, and for ctrl-d too? Good 17:00:20 Vorpal: there's one maybe-bug: if you read a character, and you input newline, you have to press newline again to get it accepted 17:00:21 not sure why 17:00:24 not the highest-priority bug ever 17:00:32 elliott, yeah it's a bug 17:00:44 elliott, what do you do on overflow? 17:00:46 & does read a whole line, right? 17:00:51 Vorpal: erm, good question 17:00:54 > show (2^64) 17:00:54 "18446744073709551616" 17:00:57 I thought it was just one char 17:00:58 elliott, it does if 1y says it is line buffered! 17:01:02 I'll try that 17:01:05 ais523: it reads a number, so no 17:01:13 Vorpal: no, but I mean 17:01:13 oh, muddled number and char input 17:01:15 if you type 17:01:17 234abc\n 17:01:20 it chops out the abc\n 17:01:21 right? 17:01:28 pretty sure it does 17:01:28 elliott, it leaves abc\n in the buffer yes 17:01:29 otherwise 17:01:31 Vorpal: erm 17:01:32 no 17:01:35 mine just discards it 17:01:35 elliott, yes it does 17:01:39 Vorpal: no, because otherwise, 17:01:39 elliott, then it is wrong 17:01:43 Vorpal: the \n at the end of your line 17:01:49 would be given to mycouser's character read 17:01:51 elliott, \n after integer is special 17:01:55 >_< 17:01:58 says who 17:01:58 elliott, ask Deewiant 17:02:00 I did 17:02:02 Vorpal: does the spec say that? 17:02:04 He said my behaviour was probably fine 17:02:05 ais523: no 17:02:17 elliott, well if you check what he implements himself 17:02:20 Anyway, I pass all of Mycology including =, i, and o apart from one thing 17:02:24 elliott: http://iki.fi/deewiant/befunge/mycology-output/input/expected.txt 17:02:25 ais523, no it doesn't 17:02:26 Specifically o can't do text output yet 17:02:44 Deewiant: Ah, okay. 17:03:00 elliott, "Decimal input reads and discards characters until it encounters decimal digit characters, at which point it reads a decimal number from those digits, up until (but not including) the point at which input characters stop being digits, or the point where the next digit would cause a cell overflow, whichever comes first. " 17:03:06 elliott, please read that carefully 17:03:08 Anyway, plans for today: Clean up the code a bit, get Concurrent Funge working, add text output to o. 17:03:13 Maybe start integrating the fingerprint system. 17:03:15 -!- iamcal has quit (Ping timeout: 276 seconds). 17:03:16 elliott, it describes that it *should* leave data. And also how it handles overflow 17:03:21 Vorpal: So the \n doesn't get handled specially. 17:03:29 elliott, so \n should be left I guess yeah 17:03:40 So if you enter 17 into mycouser, you never get asked for a character. 17:03:43 Discuss. 17:03:47 Correct. 17:03:53 And since terminals are line-buffered usually, there is no real way to do mycouser as a user. 17:03:57 Discuss: irony. 17:04:11 Well. 17:04:14 Do you have to struggle to resist the urge to plug in more than one vacuum from the same outlet? I'm trying to picture the situation where I'd be tempted to do that, and all I can come up with is defense against a horde of oncoming zombie cats. 17:04:14 You could type 123x. 17:04:29 Deewiant, hm. but there is nothing in the specs that forbids eating \n in that specific case. I'm pretty sure ccbi (used to?) do it 17:04:29 elliott: control-D not at the start of a line flushes the buffer 17:04:36 Yes, it used to 17:04:45 Vorpal: Nothing in the spec forbids you from shaking the terminal window every 5 seconds. 17:04:55 Or, when the user enters "x", giving "y". 17:04:57 elliott, indeed. DO IT! 17:04:59 But it's obviously not compliant behaviour. 17:05:04 Deewiant, besides not doing it breaks a lot of programs. 17:05:09 ais523: True :P 17:05:10 well, t obviously isn't a forkbomb 17:05:18 Vorpal: Breaks a lot of broken programs. 17:05:26 elliott, like every program then 17:05:32 There's no such thing as "a lot of programs" when speaking of Befunge-98 17:05:56 Incidentally, Shiro: 17:05:58 Please input a character: æ 17:05:58 UNDEF: got 195 'Ã' which is hopefully correct. 17:05:59 :D 17:06:00 UNICODE READY 17:06:11 (All input and output is treated as Latin-1.) 17:06:20 (That's what Haskell calls "binary mode" because you can input and output anything like that.) 17:06:38 efunge does proper unicode. It expects UTF-8 iirc and converts it to unicode code point internally. 17:06:40 Deewiant: What happens on "o" with a cell in the area greater than 255? 17:07:21 Should match how you do I/O in general 17:07:28 IMO, just %256 it 17:07:51 use an encoding that lets you output it as-is 17:07:55 bignum UTF-8 or whatever 17:08:10 Deewiant, hm. what if there is no "I/O in general". As in you do byte IO for files and utf-8<->unicode conversion for stdio? :D 17:08:28 IMO, don't do that :-P 17:08:42 Deewiant: 99fff**p009900"oof"o 17:08:48 Deewiant, well I'm not sure the latter is valid for the initial program loading 17:08:49 Deewiant: Anything wrong with that test program? 17:08:52 what if you take a bitfield on the command line that specifies what to use Unicode for? 17:09:03 elliott: Just compare to ccbi :-P 17:09:07 ais523, it does that? 17:09:21 Vorpal: can do, there's an option that does that 17:09:21 I think ais523 is insufficiently amazed at my fingerprints stuff, maybe because he has no soul. Or just can't understand how much I'm abusing the type system. 17:09:24 Deewiant: I need a test program to do that. 17:09:29 elliott: or didn't read it 17:09:30 Deewiant: I'm not so good at Befunge. Is that program any good? 17:09:40 ais523: I ruled out that option because it's LAME 17:10:11 elliott: Like said, just run it through ccbi and see if it does something you want it to do 17:10:50 Deewiant, anyway you should update mycouser to show the prompts so that the element of irony is no longer there 17:10:59 Deewiant: Seems to create an empty file :-P 17:11:04 hmm, does anyone here know how to write Firefox extensions? 17:11:29 Yay, I have a file "foo??" I can't remove. 17:11:38 rm foo* 17:12:05 elliott: You probably wanted fff**99p? 17:12:16 Deewiant: Seems to output the invalid character as a space. 17:12:21 Deewiant: Oh. 17:12:22 And you don't have a flags cell 17:12:25 thx :P 17:12:26 Deewiant: I do now. 17:12:37 fff**88p990000"oof"o@ 17:12:51 Deewiant: Outputs as /, so I guess it's mod 256 for CCBI and I'll test it with shiro. 17:13:31 Deewiant: Sweet, Shiro does the same :P 17:13:35 elliott, do you do input truncation correctly for overflow 17:13:36 Probably because of Word8 overflow. 17:13:42 Vorpal: Uh. What? 17:14:11 elliott, for &: "[...] at which point it reads a decimal number from those digits, up until (but not including) the point at which input characters stop being digits, or the point where the next digit would cause a cell overflow, whichever comes first." 17:14:20 elliott: I must say, it's genuinely impressive how freaking quickly you got a Befunge-98 interpreter running. 17:14:25 elliott: Just, dang. 17:14:39 elliott, saturation or wrapping are not valid thus. 17:14:47 pikhq: It was mostly me implementing the insane, insane things Deewiant told me. 17:14:54 elliott: Heheheh. 17:14:57 elliott, so, do you do that correctly? 17:15:02 Vorpal: No. No I don't. 17:15:07 TODO: Fix. 17:15:07 elliott, bug! :P 17:15:10 yeah 17:15:19 Does _anyone_ actually use &? 17:15:23 And yes, I know Mycology doesn't test that. 17:15:25 Deewiant, does ccbi do it correctly? iirc you don't test it in your mycology rankings 17:15:31 Deewiant: Does if you give it enough digits. 17:15:44 Vorpal: Uh, yes he does? 17:15:49 Yes, but my rankings should probably test it 17:15:51 elliott, not this behaviour of & 17:16:13 elliott, in the rankings if that is what you meant 17:16:16 Oh, I thought you meant CCBI. 17:16:18 :t unGetChar 17:16:19 Not in scope: `unGetChar' 17:16:20 Please exist. 17:16:22 Fuck. 17:16:23 @hoogle ungetc 17:16:24 Control.Concurrent.Chan unGetChan :: Chan a -> a -> IO () 17:16:27 @hoogle getc 17:16:28 Network.CGI.Protocol getCGIVars :: MonadIO m => m [(String, String)] 17:16:28 Control.Concurrent.Chan getChanContents :: Chan a -> IO [a] 17:16:28 Prelude getChar :: IO Char 17:17:00 elliott: CCBI implements unget manually too, FWIW 17:17:02 elliott, I solve it by keeping a line buffer in the program anyway. Even though C has ungetc 17:17:14 Why don't you use ungetc? 17:17:15 since it is more practical for various fingerprints 17:17:16 Deewiant: I really don't want to keep track of even more state :P 17:17:20 But I might. 17:17:27 It'll be nicer once I have the accessors going nicely. 17:17:31 Probably going to use data-accessors. 17:18:04 *Main> testShow 17:18:04 Deewiant, it is more practical for stuff like STRN's I. And it means my algorithm can just work on an array of chars rather than having to getc in various places. So less confusing code my way too. 17:18:04 NULL -- () 17:18:04 ROMA -- () 17:18:04 SLLY -- True 17:18:10 I love how I can print all the fingerprints' state out dynamically. 17:18:15 That's going in the debugger. :p 17:18:16 Fair enough 17:19:36 I should pirate Mathematica sometime, W|A is really irritating. 17:19:51 elliott, I thought you done that in the past? 17:19:56 elliott: Yeah, and Maxima is not the easiest thing to use. 17:19:59 Yeah, but not on here. 17:20:40 Wait a second. That wrapping loops seems hideously inefficient. I'm sure you could make it O(1) by ... oh, that's probably what CCBI does. Deewiant? :P 17:20:44 pikhq, it is not that much harder given that wxwidgets frontend 17:21:08 elliott, get everything working first. Then worry about efficiency. 17:21:18 elliott: It's not O(1) in CCBI. 17:21:21 elliott, premature optimisation and so on 17:21:30 Vorpal: It just irks me to have a loop for something that I'm pretty sure doesn't need to loop. 17:21:45 I can't remember what it is but there's a pathological case where the delta is 2^cellsize - 1, or something. 17:21:58 Vorpal: But, uh, I plan to do that population count thing sometime soon. 17:22:22 Deewiant: Hell, my interpreter will crash and burn if your Haskell's Ints are less than 32 bit (they only have to store up to 2^29 inclusive). 17:22:25 > maxBound :: Int 17:22:26 9223372036854775807 17:22:27 > maxBound :: Int64 17:22:28 9223372036854775807 17:22:31 Deewiant, shouldn't you be able to solve it as a linear equation system hm. Wait two different ones. Depending on which edge it might hit 17:22:45 and hm you need to follow the line backwards to detect ... right 17:22:48 My situation is more complicated than just moving into one bounding box :-P 17:23:01 I need to find the first of N bounding boxes that gets hit 17:23:09 Deewiant, you still need to get integer coords on that line after solving the equation system 17:23:22 which does complicate stuff 17:23:43 @hoogle unget 17:23:43 Control.Concurrent.Chan unGetChan :: Chan a -> a -> IO () 17:23:44 Control.Concurrent.STM.TChan unGetTChan :: TChan a -> a -> STM () 17:23:55 @hoogle unget :: Handle -> IO () 17:23:56 Control.Concurrent.Chan unGetChan :: Chan a -> a -> IO () 17:24:14 i smell haskell 17:24:16 i'm pretty sure it _does_ exist 17:24:41 oerjan, you could easily implement it in terms of IOT right? :P 17:24:41 I'm pretty sure it doesn't 17:24:50 MAYBE 17:25:14 Deewiant: YOU haven't even gawped over my abuse of the type system 17:25:14 wait 17:25:15 oerjan 17:25:16 the perfect prey 17:25:41 oerjan: http://hpaste.org/43785/fingerprints_5 17:25:46 oerjan: {-# LANGUAGE TypeFamilies, ExistentialQuantification, FlexibleContexts, DeriveDataTypeable, StandaloneDeriving #-} 17:26:08 elliott, the easy way to do it is like an ordered set of stacks of lambdas 17:26:23 Vorpal: Yes, that's still how it'll work in my system. 17:26:31 elliott: i looked at your existentialism previously, pretty neat 17:26:33 Vorpal: Wait, ordered set of stacks? Not just a stack? 17:26:34 elliott, so why do you need all that abuse 17:26:41 oerjan: More like pretty horrifying. 17:26:43 elliott: One stack per instruction 17:26:43 elliott, you need a stack per instruction 17:26:46 Right. 17:26:49 Vorpal: This is just how it works from the Haskell end. 17:26:58 Vorpal: It allows me to define new fingerprints with minimal fuss. 17:27:02 Very minimal fuss. 17:27:17 elliott, couldn't you just do what I said from the haskell side easily? 17:27:19 Vorpal: And it allows any random person to add a fingerprint with its own per-IP and global state without having to change the Shiro internal state record. 17:27:28 Vorpal: Yes, if I was willing to hardcore every fingerprint into the core. 17:27:35 Which I'm not, that's just retarded. 17:27:38 elliott, uh why would you need that :P 17:27:44 Vorpal: Or if I was willing to completely sacrifice any sort of safety, I guess. 17:27:52 But this is by far the nicest way. 17:28:31 elliott, how so? wouldn't the type of the *lambda* be: f ip -> stack -> (ip, stack) or such? 17:28:36 *sigh* 17:28:40 unless your stack is in your ip 17:28:49 in which case it is trivial 17:28:50 @hoogle hunget 17:28:50 No results found 17:28:53 Firstly, I have a monad. 17:28:58 Secondly, just no. 17:29:00 elliott, oh right 17:29:29 elliott, well okay, my solution is 1) pure 2) only allows a handful of feral fingerprints 17:29:38 actually I forgot fungespace there 17:29:52 f ip -> fungespace -> (ip,fungespace) would be better 17:30:02 Vorpal: IMPLEMENTING A FINGERPRINT WITHOUT THIS SYSTEM: Edit the state definition, manually add in your new piece of state. Edit the IP record, manually add in your own piece of state. Write a bunch of implementations using and modifying that state directly (semi-awkward). Manually edit the place where fingerprints are looked up. Blah blah blah. 17:30:10 IMPLEMENTING A FINGERPRINT WITH MY SYSTEM: 17:30:19 "We start with specially-selected farm-grown potatoes" Is the definition of "farm" so restrictive that this gains anything by adding it? I mean, huge corporate metafarms are still farms... 17:30:25 Create a module. Add an identifier type. Write a Fingerprint instance. 17:30:32 Edit Fingerprints.hs, add yours to the list of available fingerprints. 17:30:34 Recompile. 17:30:49 Vorpal: Also, monads are just as pure as that, you dolt. 17:30:54 What do you think the State monad is? 17:31:01 Gregor: I'm pretty sure that anywhere that produce is intentionally grown for consumption can count as a "farm". 17:31:04 It's exactly "state -> (result, state)". 17:31:09 The reason we use the state monad is that using that is a bitch. 17:31:15 But that's exactly how it's implemented. 17:31:19 pikhq: Right, hence why "farm-grown" is totally meaningless here. 17:31:24 elliott, actually this can be trivially solved if the ip has some fingerintdata member that implements a key,value storage. Anyway who would need to store more than a single type! ;P 17:31:33 pikhq: I guess "grown" isn't meaningless, it means they didn't replicate the potatoes :P 17:31:37 Vorpal: Yes, but then the state would not be type-safe. 17:31:39 Or typed at all. 17:31:44 elliott, true :P 17:31:47 Gregor: Wrong. 17:31:47 Which is "retarded", technical term. 17:31:54 Gregor: You generally clone potatoes. 17:32:16 *brain axplote* 17:32:18 (cut the eyes from a potato and plant it? Congrats, you're CLONING!) 17:32:20 oerjan: http://www.haskell.org/ghc/docs/latest/html/libraries/base/System-IO.html I don't see any ungetc. 17:32:30 It's really fucking easy to clone plants. :) 17:32:38 elliott, indeed. Unless you made that type auto generated from a handful of fingerprint definition files so it ends up as a list of "tagged types" in effect. Though that would be ugly. 17:32:52 Vorpal: That would be what I do now, except requiring a preprocessor and being hideous. 17:32:56 elliott: i couldn't find it either 17:32:57 Well, "do now" = in that proof of concept. 17:33:16 wth do i feel i _have_ seen such a thing 17:33:22 oerjan: Hugs-specific maybe? 17:33:35 elliott, anyway you still need to tell ( and ) about the list of possible fingerprints somewhere. Unless you do some sort of crazy reflection or similar. 17:33:44 (can haskell even do that?) 17:33:49 Vorpal: Yes, yes it can, and that's what I'm doing. 17:33:50 Vorpal: Well. 17:33:55 elliott, haha XD 17:33:57 Vorpal: There is exactly one list of available fingerprints. 17:34:07 Vorpal: I *could* use Template Haskell to generate it from the list of files in Shiro/Fingerprints/ at compile time. 17:34:09 elliott, yep. 17:34:10 Vorpal: But that sounds Super Ugly. 17:34:15 I'd prefer to maintain a manual list. 17:34:17 More robust. 17:34:22 elliott, for C it is the best solution (auto generating the list) 17:34:29 which is why cfunge has a shell script to do that 17:34:32 Yeah, because in C it'd be complicated :P 17:34:38 With this, it's basically... 17:34:41 17:34:44 , FP MKRY 17:34:49 17:34:58 Oh, I forgot; at the top of the file: 17:34:59 elliott, yeah reflection in C is... likely impossible unless you use -g and basically implement 1/3rd of a debugger 17:35:04 import Shiro.Fingerprints.MKRY (MKRY) 17:35:29 elliott, wait you still need to edit some list file? 17:35:36 Vorpal: Yes. As I said, 17:35:42 Vorpal: I *could* use Template Haskell to generate it from the list of files in Shiro/Fingerprints/ at compile time. Vorpal: But that sounds Super Ugly. 17:35:43 I'd prefer to maintain a manual list. 17:35:49 Vorpal: I'd *prefer* to; I don't *have* to. 17:36:05 elliott, for cfunge it is completely automagic. Run a shell script. Force Makefile to be re-generated. Build. Run. 17:36:10 Vorpal: For instance, if I make a module called Shiro.Fingerprints.Helpers, like helper functions for fingerprints or something, having that be treat as a fingerprint automatically would be irritating. 17:36:20 Also, I don't really care. It's manual because I want it to be. 17:36:23 elliott, yeah true 17:36:40 If Haskell had better dynamic loading capabilities, I'd let you load a fingerprint from an .so :P 17:36:43 -!- cal153 has joined. 17:36:48 But I don't think you can make that work with types and the like. 17:36:57 elliott, I think ccbi does some crazy completely runtime thingy for it 17:37:04 I forgot what it did 17:37:05 It would basically be like using a C FFI, I think. 17:37:10 elliott, some D-magic iirc 17:37:10 Except calling Haskell functions. With C types. 17:37:16 elliott: hm, there _is_ hLookAhead though 17:37:21 oerjan: aha 17:37:23 :t hLookAhead 17:37:24 Not in scope: `hLookAhead' 17:37:37 :t System.IO.hLookAhead 17:37:38 GHC.IO.Handle.Types.Handle -> IO Char 17:37:42 Except calling Haskell functions. With C types. <-- DO IT! 17:37:43 excellent 17:37:46 hmm 17:38:00 elliott, also: I'm sure someone written some sort of plugin system for haskell by now 17:38:05 checked hackage? 17:38:14 *** Exception: : hLookAhead: illegal operation (handle is not open for reading) 17:38:15 mrf 17:38:22 Vorpal: well probably, it's just that I couldn't do it the way I want. 17:38:24 which is important :) 17:38:34 elliott, right 17:38:52 OK, first thing's first: I'm going to implement Num Vector. 17:38:56 Calling Haskell functions with C types is entirely possible. :P 17:39:02 Because I've had enough of pattern-matching two tuples and adding their components manually. 17:39:03 elliott, Num Vector? 17:39:06 ah 17:39:09 Vorpal: So I can do vector + vector and the like. 17:39:48 elliott, most of the time you only need to add two specific vectors I find: storage offset and whatever it is that you need to be relative it 17:40:05 Gah... Screw Num so much. 17:40:07 Hmm... 17:40:12 What's fromInteger :: Integer -> (Value,Value) 17:40:13 :-P 17:40:22 elliott, a type? 17:40:25 join (,) 17:40:29 I mean, how can I implement that sanely. 17:40:31 Deewiant: Yeah, probably. 17:40:32 ah 17:40:32 Ugly, but whatever. 17:40:47 Deewiant: Also, you forgot fromInteger on the elements. 17:40:47 :t join 17:40:47 error "wtf" 17:40:48 forall (m :: * -> *) a. (Monad m) => m (m a) -> m a 17:40:50 fromInteger a = (fromInteger a, fromInteger a) 17:40:56 elliott: No, you forgot to make Value an Integer 17:41:02 Does |(x,y)| even make sense. 17:41:03 Deewiant: Hur hur 17:41:20 Shiro/Value.hs:8:9: 17:41:20 Warning: No explicit method nor default method for `signum' 17:41:23 HOW AM I MEANT TO IMPLEMENT THAT 17:41:25 YOU'RE STUPID 17:41:35 :t signum 17:41:36 forall a. (Num a) => a -> a 17:41:38 Oh wait. 17:41:41 Just do signum on each component X-P 17:41:50 elliott, and if they differ? 17:41:51 Then it also becomes a make-flying-into-cardinal function. 17:41:59 Vorpal: It's Vector -> Vector. 17:42:09 elliott, why does it need signum though? 17:42:20 elliott, oh because of Num? 17:42:25 (1,1) ain't cardinal 17:42:27 Because when the designers of Haskell decided to make the numeric typeclass, they decided to be really stupid about us. 17:42:31 Because they hate us. 17:42:35 and yeah what Deewiant said 17:42:35 Deewiant: Err, right. It's a "slow down" function then. :p 17:42:58 -!- asiekierka has quit (Ping timeout: 260 seconds). 17:43:11 elliott, "slow down and align to cardinal or straight diagonals" even 17:44:01 elliott, signum seems sensible to have for Num 17:44:11 but Num Vector doesn't seem as sensible to me 17:44:36 Vorpal: (a,b) + (c,d) is perfectly well-defined. 17:44:43 elliott, yes indeed 17:44:51 Num is just stupid :P 17:45:01 elliott, but abs Vector -> Vector is nonsense 17:45:08 abs (a,b) = (abs a, abs b) 17:45:14 elliott, abs Vector -> Cardinal is a lot more sensible 17:45:14 Close enough. 17:45:24 What's wrong with Num? 17:45:28 :i Num 17:45:30 err Saclar 17:45:33 Scalar* 17:45:38 how did I typo that as Cardinal XD 17:45:54 elliott, abs on a vector is mathematically a scalar unless I completely misremember stuff 17:46:42 elliott, I DEMAND YOU TELL ME WHAT IS WRONG WITH Num 17:47:25 elliott, also what the heck do you define Vector * Vector as. Cross product makes no sense in two dimensions 17:47:27 CCBI's fingerprint system is all compile time except for the way you can freely enable and disable them at runtime 17:47:37 Vorpal: (a,b) * (c,d) = (a*c, b*d). Problem? :trollface: 17:47:46 elliott, YES! 17:47:56 elliott, this is mathematical nosense! 17:48:23 Patches welcome. 17:48:24 elliott, and while that may be okay in C it feels so out of place in haskell 17:48:37 elliott, presumably (a,b)+(c,d) = (bd(a+c),bd). 17:48:41 ((a,b,1) * (c,d,1))[0,1] = (b-d, c-a) 17:48:44 Phantom_Hoover: No, (a+c,b+d). 17:48:50 -_- 17:48:51 elliott, why do you need Num. Can't you just do the operators anyway. Or make your own saner typeclass? 17:49:02 Vorpal: I wouldn't be able to call it (+) then. 17:49:11 (+) is defined over Num: 17:49:13 :t (+) 17:49:14 forall a. (Num a) => a -> a -> a 17:49:23 elliott, presumably (a,b)+(c,d) = (bd(a+c),bd). <-- what... 17:49:30 And of course there are no other operator characters available 17:49:34 that isn't how you do vector addition 17:49:38 Deewiant: Well, none as pretty as +. 17:49:40 instance (Num a, Num b) => Num (a,b) where 17:49:40 Vorpal, by analogy. 17:49:40 (a,b) + (c,d) = (a+c, b+d) 17:49:40 (a,b) - (c,d) = (a-c, b-d) 17:49:42 elliott, ah 17:49:42 -- These don't really make any sense 17:49:44 (a,b) * (c,d) = (a*c, b*d) 17:49:46 abs (a,b) = (abs a, abs b) 17:49:48 signum (a,b) = (signum a, signum b) 17:49:50 fromInteger a = (fromInteger a, fromInteger a) 17:49:51 With fractions. 17:49:53 I could define ^+^ or whatever, but ew. 17:49:55 :t (^+^) 17:49:56 Gah, use combinators 17:49:56 forall v. (AdditiveGroup v) => v -> v -> v 17:49:59 Phantom_Hoover, hah 17:50:01 abs = both abs 17:50:03 signum = both signum 17:50:08 fromInteger = join (,) . fromInteger 17:50:09 Deewiant: Haha, I feel how it hurts you. 17:50:24 I don't really want to pull in Data.Arrow for the "satisfy the compiler" functions, dude. 17:50:34 *Control.Arrow 17:50:36 Control.Arrow is in base. 17:50:44 And? 17:50:46 It's not much of a dependency :-P 17:50:53 I didn't say that 17:51:01 There's nothing you're "pulling in" as such 17:51:11 I'm pulling in the Arrow typeclass 17:51:19 ... ohnoes? 17:52:01 Ohnoes. 17:52:12 Also those definitions aren't lazy enough 17:52:15 haskell (or at least ghc) really does tuples quite messily 17:52:20 abs ~(a,b) = (abs a, abs b) 17:52:21 just check :i Ord 17:52:46 Deewiant, uh what? 17:52:58 What what 17:53:04 :t both 17:53:05 Not in scope: `both' 17:53:11 both = join (***) 17:53:25 (Not available anywhere AFAIK but I almost always end up defining it in my code) 17:53:28 Deewiant, what does that ~ do now again 17:53:38 Deewiant: i just wondered if they'd added it or something 17:53:49 The ~ makes the pattern lazy 17:54:48 Phantom_Hoover: the basic thing wrong with Num is that hit cobbles together many functions that it sometimes makes mathematical sense to define only _some_ of for a type. + for vectors being an obvious example. 17:54:53 *it 17:55:15 Deewiant, hm how does it do that 17:55:31 Lazily 17:55:41 abs and signum being others that frequently aren't needed 17:55:42 The pattern always matches and it's a runtime error if it doesn't actually match when the value is actually used 17:55:43 -!- asiekierka has joined. 17:55:53 Deewiant, aha 17:56:17 oerjan: also it forbids the naturals... 17:56:36 and abs should be defined in the type family sense too, because often you want the absolute value to belong to a different type 17:57:14 *associate type sense 17:57:17 *d 17:57:45 elliott: yeah that too... 17:58:25 elliott, how so? abs is identity for naturals. signum has a co-domain {0,1} for them. 17:58:29 oh wait, it has negate 17:58:30 right 17:58:37 Vorpal: indeed. 17:58:52 elliott, well like 5-9 is _|_ in the Naturals, wouldn't negate also just be _|_ ? 17:59:11 Yes, but that's fugly. 17:59:17 elliott, well yeah 17:59:35 elliott, anyway what is fromIneger :: Integer -> Vector for you? 17:59:42 fromInteger a = (fromInteger a, fromInteger a) 17:59:53 -!- sixdej|sleep has joined. 17:59:56 elliott, it should be the reverse of the INTERCAL mingle operator 18:00:01 It makes 0 into origin, so that's good enough for me 18:00:11 which still works for 0 18:01:13 does anyone here know how to view dotfiles on Windows 7? 18:01:21 as in, my Linux and Windows homedir are mapped into the same directory 18:01:30 and I want to look at a dotfile crated on the Linux system from windows 18:01:43 ais523: just open it 18:01:45 I assume they map to Windows hidden files, somehow; but am not sure how to turn display of hidden files on 18:01:48 elliott: it's not visible 18:01:50 nope, it doesn't afaik 18:01:57 ais523: folder options? 18:01:57 ais523: open it in notepad, or go into folder settings of some kind 18:01:58 ais523, is this some network thingy? 18:02:01 i.e. C:\foo\.blah in notepad 18:02:08 Vorpal: yes 18:02:18 ais523, could do some crazy magic of it's own then 18:02:21 oerjan: that's what I'd normally do, but I can't find the menu option, or indeed the menu 18:02:26 elliott, hm you can't even make vector multiplication do scalar product :( 18:02:26 huh 18:02:28 aha, pressing F10 worked 18:02:32 the menu was there, just hiding 18:02:50 ais523: it self-applied 18:02:52 and there are the dotfiles 18:03:02 * elliott reads http://hackage.haskell.org/packages/archive/data-accessor/0.2.1.5/doc/html/Data-Accessor.html 18:03:23 meh, not a fan 18:03:33 copumpkin: Better than what I have now. 18:03:38 I prefer fclabels 18:03:38 Haskell's record system is fucking terrible. 18:03:39 copumpkin, indeed you are not a fan. You are a copumpkin! 18:03:41 I don't know how anyone's meant to know that without having memorised it from a previous version of Windows 18:03:42 less henning'd 18:03:54 "Henning'd". 18:03:55 What :-P 18:04:02 herring* 18:04:19 C a b => T a -> T b -> T a b -> T (a, b) 18:04:21 that's henning'd 18:04:35 copumpkin: That's nice. 18:04:36 Everything is called C and T 18:04:37 (note that the Ts are different) 18:04:39 who is henning 18:04:39 I like genericity :P 18:04:49 Henning is the guy who calls everything C and T 18:04:50 oerjan: thielieileieeman 18:04:53 oerjan: the source of that wonderful convention 18:04:56 and the only adopter of it 18:04:57 (it's a norwegian name) 18:05:02 ais523, presumably you could try right clicking toolbars and have some option for it? Or just locate the folder options from the control panel 18:05:13 Thielemann 18:05:21 copumpkin: Yeah well, fclabels is... less... Luke Palmer! 18:05:25 lol 18:05:27 hm i guess it's also german 18:05:27 Also edwardk likes data-accessors. 18:05:30 fclabels is fairly nice 18:05:31 WHAT NOW 18:05:34 no he doesn't 18:05:37 Well. 18:05:40 He said he did yesterday. 18:05:44 he hates henning's naming 18:05:44 Because it doesn't pull in mtl :-P 18:05:49 Because it doesn't pull in mtl :-P 18:05:53 yeah, whatever 18:06:07 I prefer data-accessors' syntax *shrug* 18:06:31 copumpkin: I was going to just write my own. 18:06:35 But that seems silly. 18:06:47 neither data-accessor nor fclabels support one thing I want 18:06:51 which is 18:06:58 a native "modify" method 18:07:01 that doesn't involve setting and getting 18:07:16 -!- zzo38 has joined. 18:07:18 I don't care about it being atomic, but I want it 18:07:22 copumpkin: The way I was doing mine, it was just get and modify. But why do you want it? 18:07:31 Surely GHC can optimise that out. :p 18:07:33 no 18:07:39 because you can easily make any Map-like thing into a lens 18:07:49 and it's silly to traverse the whole map twice 18:07:55 once to find, the other to update it 18:08:01 copumpkin, lens in what sense? 18:08:02 that's why maps have specialized update methods 18:08:09 lens in the data-accessor/fclabel sense :P 18:08:19 eh *goes to look* 18:08:29 basically a boxed-up getter/setter 18:08:57 it's somewhat equivalent to (a -> b -> b, b -> a) 18:09:01 ah 18:09:07 or b -> (a -> b, a) 18:09:08 copumpkin: type Accessor a t = (a -> t, (a -> a) -> t -> t) 18:09:17 oh 18:09:20 that's nice then 18:09:25 copumpkin: that's what i would do, I mean 18:09:26 copumpkin: PERFECTED: type Accessor a t = (a -> a) -> t -> (a, t) 18:09:47 get a = fst . a id 18:10:00 put a x = snd . a (const x) 18:10:07 modify a f = snd . a f 18:10:09 copumpkin: PERFECTED 18:10:15 copumpkin: lol, convince me not to implement this 18:10:23 put another package up on hackage that does that 18:10:25 I'd use it 18:10:29 if it isn't dumb 18:10:40 first = \f (a,b) -> (a, (f a, b)) 18:10:48 second = \f (a,b) -> (b, (a, f b)) 18:11:31 mapElem k = \f m -> (m Map.! k, Map.adjust f k m) 18:11:37 copumpkin: haha this is actually a really good idea 18:11:48 do it 18:11:58 copumpkin: I'm not going to do it in a separate package first, it'll just be Shiro.Accessor 18:12:01 talk to roconnor and edwardk about it 18:12:03 I _don't_ want to lose track of this project 18:12:15 I'll get it implemented into the Shiro codebase first, and copy it out later :P 18:12:48 fair enough :) 18:12:49 copumpkin: hm should it be 18:12:53 (a -> a) -> t -> (a, t) 18:12:53 or 18:12:53 I don't need it too urgently 18:12:55 (a -> a) -> t -> (t, a) 18:12:55 @hackage lenses 18:12:56 http://hackage.haskell.org/package/lenses 18:12:57 I think the former 18:13:13 hmm, you remember how a while ago, I emailed a bunch of people via using evolution over ssh -X? 18:13:17 ais523: haha 18:13:26 elliott: I dunno, which do you typically want to fmap? 18:13:31 I just did it again, because I forgot to email myself, and that version of the program had the "sent" folder containing the email 18:13:37 copumpkin: I dunno; a is the structure, t is the element 18:13:39 and I couldn't figure out how it was stored any other way 18:13:53 -!- zzo38 has quit (Quit: .). 18:14:05 it's because I wanted to attach a file to the email I didn't have locally 18:14:12 @hackage fnordly 18:14:12 http://hackage.haskell.org/package/fnordly 18:14:14 tos f (x:xs) = (x, f x : xs) 18:14:14 tos f [] = (0, [f 0]) 18:14:18 this is nice 18:15:50 wait 18:15:51 t is the type 18:15:54 a is the accessed field 18:16:02 copumpkin: 18:16:03 type Accessor t a = (a -> a) -> t -> (a, t) 18:16:05 type Accessor t a = (a -> a) -> t -> (t, a) 18:16:07 hmm 18:16:17 paint the shed whatever color you want it 18:16:17 latter has a nice symmetry with the ordering of the arguments but i dunno 18:16:18 :) 18:16:31 copumpkin: WHIIIIICH 18:17:15 @dice 1d2 18:17:15 1d2 => 2 18:17:18 the second one 18:17:40 :t State 18:17:41 Not in scope: data constructor `State' 18:17:44 argh 18:17:54 :t M.State 18:17:55 Couldn't find qualified module. 18:17:57 * copumpkin comforts oerjan 18:17:59 Deewiant, incidentally, the Wonders of the World need updated for 1.2. 18:18:03 *needs 18:18:07 *updating 18:18:21 copumpkin: he's having a rather traumatic time 18:18:23 copumpkin: i have this feeling they've removed a number of imports from lambdabot 18:18:27 I WILL PLURALISE WHAT I DAMN WELL PLEASE 18:18:28 copumpkin: just switched from the warm, comforting, old arms of Hugs 18:18:39 plunged into the deep, practical, noisy world of GHC and the Haskell Platform 18:18:39 :t Control.Monad.State.State 18:18:40 Not in scope: data constructor `Control.Monad.State.State' 18:18:45 and I think it's taken its toll on his poor, fragile, old soul 18:18:54 now _that_ is just awful 18:19:11 > State 18:19:12 Not in scope: data constructor `State' 18:19:19 hmm, there's a great sense of freedom in testing these kernel-mode keyloggers 18:19:19 copumpkin: hm should I wrap it up in a newtype :D 18:19:20 > Control.Monad.State.State 18:19:21 Not in scope: data constructor `Control.Monad.State.State' 18:19:31 because I /know/ they're malicious, I can safely run them without having to check the source for malware first 18:19:34 Deewiant, will you do it, or will I? 18:19:36 -!- hagb4rd has joined. 18:19:38 elliott: always wrap it before you use it 18:19:38 ais523: :D 18:19:46 copumpkin: but I like type aliases 18:19:51 copumpkin: they make things simpler :( 18:19:57 Phantom_Hoover: Feel free 18:20:04 Phantom_Hoover: Update the TNT room 18:20:05 what's easier isn't always best. wrap it! 18:20:07 You might have to empty it first 18:20:08 gah, why does this ls highlight non-executable .sh files in green? 18:20:11 copumpkin: you suck 18:20:19 elliott: not until it's wrapped 18:20:42 elliott: I'm even logged in as root and everything! (it wouldn't work very well otherwise, but I'm normally terrified to do stuff in a root shell) 18:20:53 Wait, that requires well over a hundred lapis blocks. 18:21:08 Phantom_Hoover: :D 18:21:11 * copumpkin finally manages to silence elliott 18:21:13 Dood, I do everything logged in as root. 18:21:15 Phantom_Hoover: *ore, presumably 18:21:16 Users are for pussies. 18:21:17 copumpkin: NOPE 18:21:24 elliott, OK YES 18:21:31 Everything HackEgo runs is run as root with no security countermeasures. 18:21:37 "... increased the drop rate to 4-8 in the 1.2_02 update. However, due to a bug SMP servers still only drop one dye. " 18:21:43 Gregor: Yes, you're so trustworthy. 18:21:45 Deewiant: It's not a bug. 18:21:47 I see MC is still all Notch Engineering® 18:21:50 Deewiant: It's just that there was no 1.2_02 server version. 18:21:50 elliott: *trusting 18:21:54 Gregor: SHUT UP 18:21:58 how do you pipe stdout and stderr in bash? it doesn't seem to be |& like I thought it was 18:21:58 Deewiant: because it was just a "bugfix". 18:22:07 Deewiant: A bugfix that changed game mechanics, anyway, this belongs in #esoteric-minecraft 18:22:12 ais523: 2>&1 :P 18:22:14 elliott: And why release two executables for a bugfix when you can release one 18:22:15 must be 2>&1 18:22:16 Unless you don't mean that. 18:22:20 Deewiant: Precisely! 18:22:27 Deewiant: It was a client-only bug, I think, but clearly another change got in. 18:22:31 -!- nescience has joined. 18:22:38 But seriously, -minecraft, otherwise the lynching will start again. 18:22:43 THE LYNCHING 18:22:58 I have nothing more to say, I've facepalmed enough 18:23:53 * Gregor gets his lynchin' pipe wrench. 18:24:23 Accessor a b -> Accessor t a -> Accessor t b 18:25:42 Err, copumpkin, what's the Category instance for this 18:26:12 id should be obvious 18:26:42 copumpkin: Yes 18:26:45 (.) is slightly trickier 18:26:50 not much worse 18:26:52 Accessor a . Accessor b = 18:26:52 \f x -> let (elem, x') = b id x 18:26:52 (elem2, elem') = a f x 18:26:52 in (f elem2, I think I'm going about this all wrong 18:26:59 (Yes, I typed that into Emacs.) 18:27:34 :) 18:28:22 @hoogle (a -> a) -> a -> (a, a) 18:28:22 Data.Graph.Inductive.Query.Monad applyWith' :: Monad m => (a -> b) -> GT m g a -> g -> m (b, g) 18:28:23 Data.Graph.Inductive.Query.Monad applyWith :: Monad m => (a -> b) -> GT m g a -> m g -> m (b, g) 18:28:23 Control.Monad.Writer.Class listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b) 18:28:27 @hoogle (a -> b) -> a -> (a, b) 18:28:27 Control.Monad.Writer.Class listens :: MonadWriter w m => (w -> b) -> m a -> m (a, b) 18:28:27 Network.BufferType buf_span :: BufferOp a -> (Char -> Bool) -> a -> (a, a) 18:28:28 Data.Graph.Inductive.Query.Monad applyWith' :: Monad m => (a -> b) -> GT m g a -> g -> m (b, g) 18:28:30 Meh 18:30:38 @djinn ((b -> b) -> a -> (b, a)) -> ((a -> a) -> t -> (a, t)) -> ((b -> b) -> t -> (b, t)) 18:30:38 f a b _ c = 18:30:38 (case b (\ d -> d) c of 18:30:38 (e, _) -> case a (\ f -> f) e of 18:30:38 (g, _) -> g, 18:30:38 c) 18:30:43 copumpkin: Woo 18:30:54 Wait, what? 18:30:57 It's cheating. 18:31:13 Your types are too specific 18:31:15 Presumably 18:32:01 :-P 18:32:28 a . b = Accessor $ \f x -> (getA a (getA b x), modifyA b (modifyA a f) x) 18:32:30 There. 18:32:41 @djinn (x -> a -> (b, a)) -> ((a -> a) -> t -> (a, t)) -> (x -> t -> (b, t)) 18:32:41 f a b c d = 18:32:41 (case b (\ e -> e) d of 18:32:42 (f, _) -> case a c f of 18:32:42 (g, _) -> g, 18:32:42 d) 18:32:48 copumpkin: Accessor feels to specific a name I think I'm going to call it Field or something. Component? 18:33:23 -!- azaq23 has joined. 18:34:12 Lens 18:34:13 :P 18:34:42 @pl p (f (g x)) x 18:34:43 p (f (g x)) x 18:35:42 @pl \p f g x -> p (f (g x)) x 18:35:42 flip flip id . ((flip . (ap .)) .) . (. (.)) . (.) . (.) 18:35:50 @pl \g p -> accessor (\f x -> (g x, p (f (g x)) x)) 18:35:51 (accessor .) . ap ((.) . (.) . liftM2 (,)) (flip flip id . ((flip . (ap .)) .) . flip ((.) . (.)) . flip (.)) 18:35:56 I prefer my version 18:35:57 @pl \x -> p (f (g x)) x 18:35:57 p =<< f . g 18:36:14 Hmm 18:36:32 @pl \f x -> p (f (g x)) x 18:36:32 join . (p .) . (. g) 18:36:32 Who is messing with @pl an d why. 18:36:35 @pl \x -> (g x, p (f (g x)) x) 18:36:36 liftM2 (,) g (p =<< f . g) 18:36:36 *and 18:36:42 @pl \f x -> (g x, p (f (g x)) x) 18:36:43 liftM2 (,) g . join . (p .) . (. g) 18:38:23 @pl \g f x -> (g x, p (f (g x)) x) 18:38:24 ap ((.) . liftM2 (,)) (flip flip id . (liftM2 p .) . flip (.)) 18:38:38 @pl \p f x -> (g x, p (f (g x)) x) 18:38:39 (liftM2 (,) g .) . flip flip id . (ap .) . (. (. g)) . (.) 18:39:19 I got lost at the \f x one already 18:39:29 um what order of arguments do you _actually_ want? 18:39:58 is it that p f g x above? 18:40:38 Looking at elliott's accessor-line, \f x 18:41:14 o k 18:43:20 @pl \f -> g &&& (p =<< f . g) 18:43:20 (g &&&) . (p =<<) . (. g) 18:44:01 -!- sebbu2 has joined. 18:45:54 -!- sebbu has quit (Ping timeout: 240 seconds). 18:47:45 copumpkin: *Shiro.Accessor> (fstA ^= 2) (1,2) 18:47:46 (2,2) 18:48:07 > first (const 2) (1,2) 18:48:08 (2,2) 18:48:42 *Shiro.Accessor> [1,2,3] ^$ tos 18:48:42 1 18:48:42 *Shiro.Accessor> [] ^$ tos 18:48:42 0 18:48:42 Woot 18:49:06 > headDef 0 [1,2,3] 18:49:06 Not in scope: `headDef' 18:49:09 Bah 18:49:15 Deewiant: Yes, the point is that they're accessors. 18:49:24 I know :-P 18:49:27 Deewiant: So I don't need "modifyStack" and all that :P 18:49:53 haha, jix_wiggle3 is actually detecting defend7 in particular (by counting small decoys) and using a slower kill algo in order to beat it 18:50:19 Bleh, this is why we need MetaBFJoust 18:50:39 I could set up MetaBFJoust to just run the hill once every ten minutes plus once every time you ask for it :P 18:50:50 So it would change ON ITS OWN! 18:52:02 um the result between two bfjoust programs is deterministic, right? so no need to run the actual fights more than once? 18:52:19 oerjan: indeed 18:52:32 The output of a MetaBFJoust program is based on the programs in the last run of the hill (they are the input) 18:52:51 So potentially it changes every hill even if all the MBFJ programs are the same. 18:52:54 metabfjoust what? 18:53:26 also has wiggle even been updated since forever? 18:53:30 nescience: I had an idea to make a new hill where instead of writing BFJoust programs, you write programs in "any" language which /output/ BFJoust programs, given the previous hill's BFJoust programs as input. 18:53:38 nescience: no, it hasn't 18:53:47 -!- yiyus has quit (Ping timeout: 255 seconds). 18:53:49 but defend10 and defend7 both use a similar decoy structure 18:53:51 gregor: lol 18:54:03 so they're both detected and use the same counter-defend strategy 18:54:13 ais: he pretty much just messed with the numbers until they beat everything 18:54:16 > (-2) `rem` (-2) 18:54:16 nescience: Mainly because everybody talks about how their programs are optimized to other programs on the hill, and doing MBJS would make it possible to break that OR use it even more skillfully. 18:54:17 0 18:54:28 > (-2) `rem` (-2) == 0 18:54:29 True 18:54:35 gregor: interesting 18:54:43 Gregor: mine are rarely deliberately aimed at particular enemies 18:54:55 s/their /some / 18:54:59 actually, a bigger hill would mostly avoid the issue 18:55:07 I don't think most are written "against" certain enemies 18:55:08 What size wouldja like? 18:55:11 it's more like 18:55:13 because aiming for the leaders would leave you doing suboptimal things that made you vulnerable to riff-raff 18:55:16 -!- yiyus has joined. 18:55:26 20's beginning to get there at the moment 18:55:32 people enter things and then fiddle with them until they succeed more 18:55:37 nescience: indeed 18:56:05 if you look at wiggle3, though, it has a pretty explicit "use a slow clear algo upon encountering an enemy with exactly two decoys" 18:56:36 I'll have to read again 18:56:41 on the other hand, it turns out that even without that detection, wiggle3 beats defend10 on most tape lengths 18:56:44 unfamiliar with all the programs 18:57:05 for unrelated reasons 18:57:14 so that particular bit of targeting is actually unnecessary, at least in that case 18:57:51 I don't see the detect-two-decoys thing immediately 18:58:32 it first detects the first nonzero cell; then uses a different algo for clearing each of the next five 18:58:47 I see five slightly different attacks 18:59:00 that trigger on the first nonzero one after the next 18:59:03 right 18:59:27 -!- nescience has quit (Remote host closed the connection). 19:00:07 Vorpal: I have an O(1) wrapping function here you might like to use. 19:00:12 For rectangle bounds. 19:00:45 elliott: is that possible? 19:00:49 ais523: Yes. 19:01:04 ais523: The standard loop is just "Subtract delta, then subtract delta while in bounds, then add delta". 19:01:18 This reduces to a rather simple equation. 19:01:18 -!- nescience has joined. 19:01:23 oh, you mean for wrapping round the bounds, rather than calculating what the bounds are 19:01:28 Yes, indeed. 19:01:31 getting a little tired of phone crashing 19:01:57 elliott, hm what is the algorithm 19:02:00 nescience: a 3-cycle clear defeats defend10 and defend7, that's what's used on the third element 19:02:06 anyway I think there were like 3 or 4 defend programs on the hill at the time 19:02:13 Vorpal: It'll be easier for you to translate my Haskell than for me to explain it. It's very simple. 19:02:17 so I'm not surprised 19:02:27 Vorpal: http://hpaste.org/43786/wrapping 19:02:40 it's a more complicated version of what I was moving towards with slowrush 19:02:40 Vorpal: div is integer division. 19:02:46 elliott, raw link? df + browser = slow 19:02:51 Vorpal: http://hpaste.org/raw/43786/wrapping 19:02:54 thanks 19:03:21 it was more to target the strategy than a specific revision 19:04:02 > :t frac 19:04:03 : parse error on input `:' 19:04:05 what 19:04:11 Vorpal: I define it right there... 19:04:14 oh right 19:04:16 Also, it's ":t frac", not "> :t frac". 19:04:36 elliott, I find reading bottom to top a bit confusing still :P 19:04:46 elliott, does it pass mycology? 19:04:54 Vorpal: Yes. 19:04:59 chainmail beats wiggle3 because it only has one decoy (the tripwire) in front of the cell it locks the opponent on, and uses a 128-cycle rather than 256-cycle lock which is resistant to defense-detecting infinite loops like wiggle3 uses (probably accidentally) 19:05:01 Well, all the wrapping parts, yes :P 19:05:06 It doesn't pass because of o. 19:05:08 But that's my bug :P 19:05:12 elliott, where does it define the Ray type? 19:05:17 o doesn't need to be implemented, does it? 19:05:21 Vorpal: It doesn't, but it doesn't need to. 19:05:26 Vorpal: (x,y) is the current position, (dx,dy) is the current delta. 19:05:32 Vorpal: It doesn't, but it doesn't need to. <-- 19:05:33 what 19:05:36 was that to ais? 19:05:40 No. 19:05:43 It doesn't define the Ray type there. 19:05:46 ah 19:05:48 Because you don't need to see it to make sense of the algorithm :P 19:05:53 I just pass around rays because that's what I use. 19:05:57 ais523: no, but I do implement it 19:06:01 ais523: I just don't implement text mode output yet 19:06:11 elliott, and a ray is just x,y,dx,dy? 19:06:20 -!- asiekierka has quit (Ping timeout: 260 seconds). 19:06:22 Yes. 19:06:23 anyway, I think the reason wiggle3 does so well is that it has a sort of enhanced offset clear that detects multiple decoy sizes 19:07:03 copumpkin: hmm, I don't think I can implement Arrow Accessor 19:07:09 that works well against programs that are just adjusting their decoys to beat each other 19:07:09 (b -> c) -> Accessor b c 19:07:14 no way to modify 19:07:31 yeah. I wanted to do something similar but it was too late! 19:07:37 oh right 19:07:44 I remember now 19:07:54 it's less about attacking Defend decoys 19:08:06 and more about clearing common decoy patterns efficiently 19:08:14 yep 19:08:21 the numbers chosen worked best for the hill makeup at the time 19:08:41 but they are kind of specific 19:10:26 !bfjoust decoybooster (>)*8(+)*128(<(+)*128)*7(>)*7([(+)*30[-]]>)*21 19:10:49 Score for ais523_decoybooster: 8.4 19:10:57 hmm, I wonder why that did so badly? 19:11:22 Vorpal: Implemented it yet? :-P 19:12:00 elliott: If you're interested in CCBI's wrapping it's basically Dimension.rayIntersects in ccbi.space.utils 19:12:51 Deewiant: I'll take a look at it. How does slowdown.b98 slow down cfunge, btw? By making it iterate over tons of cells before it gets to the end of the line and wraps? 19:13:22 That's the main reason cfunge is noticeably slow there, yes 19:13:55 Deewiant: I was thinking I would store the bounds of each line and column, but then slowdown2.b98 could just fly instead. 19:14:07 So I guess I need your hideously complicated stuff at some point :P 19:14:29 If you insist :-P 19:14:39 elliott, no. Still playing df 19:14:46 Deewiant: Well, writing anything that falls down on flying things sucks. 19:14:47 elliott, I'm not in any hurry 19:15:01 Vorpal: OK, I'll just release Shiro 1.0: "Totally Better Than cfunge". 19:15:07 Deewiant: I hate special cases :P 19:15:11 (i.e. cardinality) 19:15:33 Fair warning: rayIntersects is 250 lines long, more than half of that being comments 19:15:42 elliott, well you are free to code name them whatever you want. Besides cfunge was 0.99 or such last I checked. Meaning it never claimed to be as stable as a 1,0 19:15:45 1.0* 19:16:20 or as good even 19:18:13 Deewiant: I'm reading this and my mind has basically turned off. 19:18:20 :-) 19:18:28 !bfjoust decoybooster (>)*8(+)*128(<(+)*128)*7(>)*7([(+)*5[-]]>)*21 19:18:32 Deewiant: Kudos, though :P 19:18:39 Score for ais523_decoybooster: 9.6 19:18:40 Cheers :-P 19:18:40 aha, the offset clear was just /too/ offset 19:18:48 to beat even simple programs 19:18:50 elliott: If you can O(1) that too I'd appreciate it 19:18:59 Deewiant: Gee, that sounds like fun. 19:19:13 copumpkin: Ha, Data.Lenses doesn't wrap Accessor. 19:19:42 Deewiant: I think yours might be inherently >O(1). 19:19:48 Deewiant: Because of your multiple-bounding-box stuff. 19:20:02 rayIntersects only works on one box 19:20:33 !bfjoust decoybooster (>)*8(+)*64<(-)*64(<(-)*64<(+)*64)*3(>)*7([(+)*5[-]]>)*21 19:20:49 But it's O(width of box) or something in the pathological case 19:20:57 Deewiant: Couldn't you use my wrap, then? 19:21:05 Or at least a modified version of it. 19:21:06 Score for ais523_decoybooster: 10.0 19:21:17 Your wrap solves a different problem 19:21:28 Yes, it does. 19:21:33 But it might be vaguely applicable :P 19:21:46 Again, I'd appreciate it if you can figure it out ;-) 19:21:59 Deewiant: I think you're vastly more qualified than me. 19:22:13 !bfjoust decoybooster (>)*7<(-)*64(<(-)*64<(+)*64)*3(>)*7([(+)*5[-]]>)*21 19:22:21 Score for ais523_decoybooster: 13.7 19:22:43 !bfjoust decoybooster (>)*7(-)*64(<(-)*64<(+)*64)*3(>)*7([(+)*5[-]]>)*21 19:22:53 Score for ais523_decoybooster: 15.9 19:23:35 decoybooster's beating more than it's losing to, but it's still last :) 19:23:40 -!- augur has quit (Remote host closed the connection). 19:23:43 !bfjoust decoybooster (>)*7(-)*64(<(-)*64<(+)*64)*3(>)*7([(+)*5[-.]]>)*21 19:23:51 Score for ais523_decoybooster: 30.6 19:24:47 whereas that made it beat fewer programs, but better programs, as I put a counter-defence offset clear in there 19:24:48 http://codu.org/eso/bfjoust/breakdown.txt <-- for your viewing pleasure, the breakdown for the latest program submitted. 19:24:56 yay, thanks 19:25:23 the < and > refer to the winner with each length? 19:25:29 And X is a tie? 19:25:45 The confusotron is divided by polarities then tape lengths (space separates polarities), < is left won, > is right won, X is tie 19:25:47 Yeah 19:26:13 I suppose you could break it down further by win reason, but that might be a little ridiculous 19:26:25 decoybooster won against EVERYTHING? 19:26:26 Donwanna :P 19:26:32 oh, no 19:26:37 no, not everything 19:26:41 !bfjoust talisman < 19:26:44 Score for elliott_talisman: 0.0 19:26:48 http://codu.org/eso/bfjoust/breakdown.txt :D 19:26:52 I could tweak it slightly to beat rushpolarity if I wanted to, but that feals like cheating 19:27:12 Gregor: Want to print the counts of <>X? 19:27:21 Deewiant: Nopw. 19:27:23 *Nope 19:27:23 Gregor: Err, why do you do four polarities? 19:27:25 It should only take two. 19:27:29 elliott: -- -+ +- ++ 19:27:36 Yes, but +- -+ should be enough. 19:27:37 elliott: To quote "SCORES" "for, uhh, completeness?" 19:27:41 :-D 19:28:02 Deewiant: Holy shit cfunge is slow at fungicide. 19:28:05 tweak it :P may as well! 19:28:31 elliott: Lookup tables are :-P 19:28:32 Deewiant: BTW, the graphs show in little tiny windows for me. 19:28:49 Little tiny scrollable windows. 19:29:07 :D @ mebioctets 19:29:51 If your browser can't handle then I weep for it 19:31:04 Heywait, the flag is always 127, right? Regardless of polarity? (I should be telling this, not asking it :P ) 19:31:16 Gregor: 128 19:31:23 Oh :P 19:31:27 Well that makes more sense X-P 19:31:30 which == -128, ofc 19:31:36 Yuh 19:31:45 You see where I was going with my totally-wrong thought though :P 19:31:51 tape[0] = tape[tapelen-1] = 128; 19:32:57 I'll leave decoybooster there, I think 19:32:59 !bfjoust dumdum (>(+)*254)*100 19:33:05 Score for coppro_dumdum: 0.0 19:33:07 elliott: cfunge mostly loses total time due to fork.b98 though, which has since been fixed AFAIK 19:33:08 :( 19:33:10 lol 19:33:15 coppro: two-cycle rules 19:33:19 If your browser can't handle then I weep for it 19:33:19 It does 19:33:23 It just doesn't make them the right size 19:33:24 (Chrome) 19:33:27 ais523: 19:33:30 Deewiant, indeed it has been fixed 19:33:33 pooppy: It tied against defend7 :P 19:33:35 err, d'oh 19:33:41 !bfjoust dumdum (>(+<>)*254)*100 19:33:41 it's a tactic that hasn't been used much yet (the only other program I've seen do something remoately similar is myndzi/nescience's 3pass, which is not really the same) 19:33:46 Score for coppro_dumdum: 18.9 19:33:49 O_o 19:33:51 also, you can use . to wait a cycle 19:34:00 !bfjoust dumdumwait (>(+.)*254)*100 19:34:05 Score for coppro_dumdumwait: 11.6 19:34:13 dumdum is a champ 19:34:14 strange how being slower and stupider worked better 19:34:19 I recommend .. over <>, anyway 19:34:23 ais523_tripstridewire.bfjoust vs coppro_dumdumwait.bfjoust: 19:34:24 <<><><><><><><><><><< <<><><><><><><><><><< <<><><><><><><><><><< <<><><><><><><><><><< 19:34:25 lol 19:34:28 !bfjoust dumdum (>(+..)*254)*100 19:34:34 Gregor: tripstridewire's like that 19:34:34 Score for coppro_dumdum: 18.9 19:34:44 I am amazed such a dumb program does so well 19:34:56 it tends to win just over or just under 50%; it's an exploit on the scoring system, really 19:35:20 Getting 18.9 does not count as an exploit in anything :P 19:35:39 Gregor: tripstridewire has 28.4 19:35:48 despite not actually being very good 19:35:59 Oh, I thought you were talking about dumdum :P 19:36:14 lol, it has negative points and a decent score X-D 19:36:33 coppro: aha, the difference between .. and . is that .. is the simplest timing that defeats my defence programs 19:36:34 copumpkin: I think I regret rolling my own :P 19:36:47 Gregor: let us make awesome things by making sure that ] happens after cells get updated on the current cycle >_> 19:36:48 I should come up with a defend11 that can beat a three-cycle clear, somehow 19:37:07 quintopia: That's a bug that was fixed. 19:37:07 that would be an actual substantive rules change; I'm not sure what to do about those on an old hill 19:37:11 quintopia: I'm not changing the rules ... 19:37:18 CHANGE 19:37:18 EVERY 19:37:19 RULE 19:37:20 Gregor: twas a joke, dogg 19:37:21 elliott: quintopia wants to exploit it 19:37:25 ais523: obviously 19:37:41 oh right, the []++++++ programs were /too/ good, weren't they? 19:37:51 and crowded out all the competition 19:37:58 !bfjoust wtf_do_I_think_Im_doing +[[(++.)*100]+] 19:38:14 Score for Gregor_wtf_do_I_think_Im_doing: 8.8 19:38:24 !bfjoust monorail (>+>-)*1>++>([(-)*9[+]]>)*20 19:38:29 Hah, I love defend v defend scores :P 19:38:30 Score for Deewiant_monorail: 2.9 19:38:40 !bfjoust monorail (>+>-)*4>++>([(-)*9[+]]>)*20 19:38:52 Score for Deewiant_monorail: 24.3 19:39:01 wow what happened to monorail 19:39:04 oh, Deewiant changed it 19:39:13 And back again 19:39:18 I was wondering how it suddenly dropped right down the rankings after being there for years 19:39:38 @hoogle Int -> a -> [a] -> [a] 19:39:38 Network.CGI.Protocol replace :: Eq a => a -> a -> [a] -> [a] 19:39:39 Prelude enumFromThenTo :: Enum a => a -> a -> a -> [a] 19:39:39 Data.IntMap findWithDefault :: a -> Key -> IntMap a -> a 19:39:41 Oh, woops 19:39:42 oh that's what monorail does. how very simple. 19:39:46 hmph 19:39:56 !bfjoust monorail (>+>-)*1>++>([(-)*9[+]]>)*26 19:40:03 quintopia: it is /just/ decoy, offset clear, defense detector 19:40:07 Score for Deewiant_monorail: 6.3 19:40:09 nice to see a program that simple do reasonably well 19:40:11 Oh well 19:40:15 !bfjoust monorail (>+>-)*4>++>([(-)*9[+]]>)*20 19:40:20 Score for Deewiant_monorail: 24.3 19:40:56 I'm beginning to think that all programs should use defence detectors 19:41:02 !bfjoust steamroller (>+>-)*4>++>([(-.)*9[+...]]>)*20 19:41:05 Score for Deewiant_steamroller: 17.4 19:41:18 !bfjoust defend_enemy_turf (>)*10(+)*128[[](+)*128] 19:41:18 because they hardly cost anything and can really help 19:41:25 !bfjoust slowmonorail (>+>-)*4>++>([(..-)*20[+]]>)*20 19:41:33 Yowza 19:41:49 Heh, steamroller beat only defend7, defend10, and chainmail, all of which beat monorail 19:42:01 Score for Gregor_defend_enemy_turf: 1.8 19:42:01 Score for quintopia_slowmonorail: 19.9 19:42:06 hmm 19:42:10 !bfjoust steamroller (>+>-)*4>++>([(-)*9[+...]]>)*20 19:42:15 Score for Deewiant_steamroller: 17.4 19:42:20 @hoogle MonadState 19:42:20 No results found 19:42:36 Deewiant: did it beat slowmonorail? 19:42:42 Didn't check 19:42:44 !bfjoust steamroller (>+>-)*4>++>([(-)*9[+..]]>)*20 19:42:48 Score for Deewiant_steamroller: 6.6 19:42:51 !bfjoust steamroller (>+>-)*4>++>([(-)*9[+.]]>)*20 19:42:59 Score for Deewiant_steamroller: 19.7 19:43:02 !bfjoust steamroller (>+>-)*4>++>([(-)*9[+....]]>)*20 19:43:10 BFJoust really ought to have threads. 19:43:17 Score for Deewiant_steamroller: 0.0 19:43:20 heh 19:43:24 Gregor: bf multi joust! 19:43:30 !bfjoust steamroller (>+>-)*4>++>([(-)*9[...+]]>)*20 19:43:33 Score for Deewiant_steamroller: 18.1 19:43:37 !bfjoust steamroller (>+>-)*4>++>([(-)*9[.+]]>)*20 19:43:41 Score for Deewiant_steamroller: 18.1 19:44:03 !bfjoust steamroller (>+>-)*4>++>([(.-)*9[+]]>)*20 19:44:09 Score for Deewiant_steamroller: 16.2 19:44:11 I think we're getting a genuine stone-paper-scissors in BF Joust 19:44:20 fast attack beats slow attack beats defence beats fast attack 19:44:34 !bfjoust steamroller (>+>-)*4>++>([(-+-)*9[.+]]>)*20 19:44:37 Score for Deewiant_steamroller: 18.1 19:44:44 !bfjoust steamroller (>+>-)*4>++>([(-+-)*9[+.]]>)*20 19:44:49 Score for Deewiant_steamroller: 18.1 19:44:57 ais523: is it possible to combine slow attack and defense? 19:44:58 !bfjoust steamroller (>+>-)*4>++>([(-)*9[+.]]>)*20 19:45:07 Score for Deewiant_steamroller: 18.1 19:45:08 quintopia: nescience was discussing that earlier 19:45:10 Oh well 19:45:11 the answer is, I'm not sure 19:45:28 although decoybooster was inspired by the conversation, it uses a different principle 19:45:35 (that of using decoys to set up bigger decoys) 19:45:37 This is ridiculous, I'm just reinventing data-accessor 19:45:46 !bfjoust steamroller (>+>-)*4>++>([(-)*3[+.]]>)*20 19:45:48 Score for Deewiant_steamroller: 18.8 19:46:00 -!- kar8nga has joined. 19:46:08 !bfjoust monorail (>+>-)*4>++>([(-)*3[+]]>)*20 19:46:19 Score for Deewiant_monorail: 18.4 19:46:27 !bfjoust monorail (>+>-)*4>++>([(-)*10[+]]>)*20 19:46:33 Score for Deewiant_monorail: 21.6 19:46:37 !bfjoust specifically_defeat_defend10_and_in_only_one_polarity (>)*9-[>-]>>[-] 19:46:46 Score for Gregor_specifically_defeat_defend10_and_in_only_one_polarity: 0.2 19:46:50 lul 19:46:50 lol 19:47:12 !bfjoust monorail (>+>-)*4>++>([(-)*11[+]]>)*20 19:47:18 Score for Deewiant_monorail: 19.0 19:47:24 !bfjoust specifically_defeat_defend10_and_in_only_one_polarity (>)*7-[>-]>>[-] 19:47:30 Score for Gregor_specifically_defeat_defend10_and_in_only_one_polarity: 0.0 19:47:38 !bfjoust monorail (>+>-)*4>++>([(-)*9[+]]>)*20 19:47:42 YESSS 19:47:45 Score for Deewiant_monorail: 22.2 19:47:50 if you make the hill bigger we should go back and fetch some variety 19:47:52 Gregor_specifically_defeat_defend10_and_in_only_one_polarity.bfjoust vs ais523_defend10.bfjoust: 19:47:52 <<<<<<<<<<<<<<<<<<<<< >>>>>>>>>>>>>>>>>>>>> >>>>>>>>>>>>>>>>>>>>> <<<<<<<<<<<<<<<<<<<<< 19:47:55 Can you say PERFECTION? 19:48:02 lol 19:48:03 !bfjoust steamroller (>+>-)*4>++>([(-)*4[+.]]>)*20 19:48:05 nice 19:48:06 Score for Deewiant_steamroller: 18.1 19:48:12 Gregor: haha 19:48:16 nescience, ais523: How big would you like the hill? 19:48:17 did it beat anything /else/? 19:48:34 Gregor: I'd say 30 or maybe 40 19:48:44 ais523: Why no, it defeated nothing else :P 19:48:50 no idea.. big enough that interesting programs have a chance to stay on when people screw around 19:48:54 And it didn't beat defend10 either, it tied since it's polarity-specific :P 19:49:12 and or maybe change the scoring to not be dependent on the score of the program that lost? 19:49:16 !bfjoust slowmonorail (>+>-)*4>++>([(..-)*20[..+]]>)*20 19:49:20 Score for quintopia_slowmonorail: 7.1 19:49:21 didn't we try that before though? 19:49:27 nescience: THE SCORING IS PERFECT, DO NOT QUESTION IT 19:49:27 !bfjoust slowmonorail (>+>-)*4>++>([(..-)*20[+]]>)*20 19:49:31 Score for quintopia_slowmonorail: 19.3 19:49:39 nescience: ... what does that mean? 19:49:43 (and actually I rather like the way the scoring atm works, it makes abuse quite difficult) 19:49:50 !bfjoust slowmonorail (>+>-)*4>++>([(..-)*9[+]]>)*20 19:49:54 Score for quintopia_slowmonorail: 10.1 19:49:59 lol 19:50:03 !bfjoust slowmonorail (>+>-)*4>++>([(..-)*3[+]]>)*20 19:50:07 Score for quintopia_slowmonorail: 16.2 19:50:09 Back. 19:50:16 !bfjoust slowmonorail (>+>-)*4>++>([(..-)*20[+]]>)*20 19:50:19 weren't you talking about getting o.n the hill just by targeting specific programs? 19:50:20 that's so weird 19:50:20 Score for quintopia_slowmonorail: 19.3 19:50:20 Still at the BF Joust‽ 19:50:34 nescience: and Gregor's program didn't get on the hill 19:50:36 copumpkin: I'm travelling to Henningland 19:50:49 _o_ 19:50:52 ais523: you got any idea why slowmonorail works best with that particular timing 19:50:54 tswett: o_o 19:50:55 ? 19:51:04 well it was a little too specific :P 19:51:26 myndzi\: _o_. :P 19:51:26 | 19:51:26 /| 19:51:32 Oh, I see. 19:51:40 I was too close to the left edge. 19:51:57 !bfjoust specifically_defeat_defend10_and_in_only_one_polarity (>)*7-[>-]>>[-] 19:52:00 Score for Gregor_specifically_defeat_defend10_and_in_only_one_polarity: 0.0 19:52:24 !bfjoust lets_fill_the_newly_resized_hill_with_stupid_garbage < 19:52:27 Score for Gregor_lets_fill_the_newly_resized_hill_with_stupid_garbage: 0.0 19:52:38 the hill is bigger? 19:52:41 Anyway, _o_ is the pose one of the disciples in Caravaggio's "The Supper at Emmaus" makes when he realizes he's sitting next to Jesus. 19:52:41 | 19:52:41 /< 19:52:42 how much? 19:52:49 You'll just have to find out :P 19:52:51 He goes "Holy crap!" and sticks his arms out. 19:52:59 I'll submit some of my old ones 19:53:07 !bfjoust tripwire_sensor >+>+++>+<[]<(.)*48[<(+)*100000]<(-)*100000 19:53:12 tswett: Who's Jesus. 19:53:26 !bfjoust nop . 19:53:27 elliott: a character in European mythology. 19:53:34 Score for ais523_tripwire_sensor: 5.2 19:53:37 !bfjoust defend9 http://sprunge.us/TjjN 19:53:40 Why'd you make the jesus-look 19:53:46 Score for quintopia_nop: 9.5 19:53:54 To show what the jesus-look looks like. 19:54:01 Gregor: what are your rates as a pianist? 19:54:10 he can't piano! 19:54:11 Depends on what I'm asked to play. 19:54:12 :P 19:54:20 Gregor: chopsticks? 19:54:36 quintopia: $16,000 for a low-quality MIDI with no inflection. 19:54:56 reasonable 19:55:08 Gregor: Gregor_specifically_defeat_defend10_and_in_only_one_polarity.bfjoust seems to beat defend10 overall; does it draw the other polarity? 19:55:19 also, I probably shouldn't have put defend9 on the hill, I forgot how evilly CPU-intensive it was 19:55:24 ais523: No, it wanders off the end and loses :P 19:55:32 so how does it win overall? 19:55:41 ais523: It doesn't. 19:55:50 (I'm checking an old report while the current one generates, perhaps it was a buggy version of the program) 19:56:03 Oh, yeah, the one where it got a 0.2 did stupid stuff. 19:56:15 Gregor: it's about as simple as Mozart's Minuet in F, K. 2. 19:56:16 The "correct" version gets 0.0 X-P 19:56:17 Yes, two. 19:56:40 Score for ais523_defend9: 30.1 19:56:52 Crap sandwiches man, that's a good score too. 19:57:02 (In principle it shouldn't be so bad in the future since it caches :P ) 19:57:13 Gregor: it was on the hill for ages, it only fell off recently 19:57:22 and I wanted to see how it did in the current environment 19:57:33 it was ahead of defend7 for quite a while until people started exploiting it 19:57:46 -!- augur has joined. 19:58:12 and it's way behind the other defenders, so obviously it's not smart eno 19:58:24 *so obviously it's not smart enough to survive in the current environment 19:58:28 I blame the rise of offset clears 19:58:41 Gregor: about as simple, half as short, and probably worse. 19:58:52 "half as short", so twice the length? 19:58:57 19:59:18 that's actually the way i read it 19:59:32 ambiguity of language: don't do it 19:59:36 Yes, if you play it a quarter times as slowly. 19:59:48 AGH 19:59:54 STOP IT :P 19:59:59 So, it's double as long if you play it four times faster than it ought to be played? 20:00:16 Good lord, are you asking me to play Handel's Messiah? 20:00:20 (for Piano) 20:00:26 Gregor: yes, if it takes half the time 20:00:33 so length increase at normal speeds is 8x? 20:00:35 -!- sixdej|sleep has changed nick to sixdej. 20:00:37 or is that 16x? 20:00:45 quintopia: 8x 20:00:55 Gregor: well, that's only true if you stretch it out by a factor of one sixteenth. 20:01:20 oh god 20:01:26 now it's 48x 20:01:31 http://codu.org/tmp/jungle-2011-02-08-1.ogg More music going into the dustbin :P 20:01:41 which is ... somewhere between messiah and carmina burana? 20:01:50 32x, isn't it? 20:02:17 oh you resized it eh 20:02:18 Gregor: this is awful 20:02:24 link me to superturing :P 20:02:25 lol 20:02:32 inb4 people lagging it to hell with submissions 20:02:33 So you can complain about it too :P 20:02:44 superturing was awesome 20:02:47 nescience: ais523 already lagged it to hell. 20:03:01 lol 20:03:04 I didn't feel so guilty back when defend9 was the best program on the hill 20:03:05 damn 20:03:06 quintopia: http://codu.org/tmp/cave-2011-02-07-2.ogg I link you to this instead. 20:03:16 I want to fetch some of my old ones too :) 20:03:29 -!- Sgeo has joined. 20:03:32 nescience: Nobody's stopping you. 20:03:33 are these for levels in SuperTuring? 20:03:43 quintopia: SuperTuring is not a game :P 20:03:52 yes it is 20:04:01 nescience: here's myndzi_keke2: ->>>>>>>>>(>[(-.+(-.)*256(+.)*256>)*20])*20 20:04:03 (But they are to be background music in a game, though jungle isn't) 20:04:03 it's the world's most computable platformer 20:04:10 it's the only one by you I have handy that isn't on the current hill 20:04:20 quintopia: It's SUPERTuring 20:04:24 Anyway. 48 beats, andante. 20:04:27 Gregor: FINE 20:04:41 FFFFFFFFFFFFFFFFFFFFFFFUUUUUUUUUUUUUUUUUUU 20:04:57 !bfjoust maglev (>(-)*10)*4(>(+)*10)*4>>-([([-])*2([+])*2>]+)*30 20:05:16 tswett: Send me the score later and I'll judge. 20:05:59 Gregor: we'll have to wait for Lymia to come back and fill the hill with evoprograms 20:06:04 !bfjoust slowmonorail (>+>-)*4>++>([(..-)*20[+]]>)*20 20:06:09 ha, later I'll dig through the history and see what got knocked off recentlyish 20:06:19 http://www.cis.gvsu.edu/~swettt/music/opl1.pdf 20:06:23 Deewiant: I swear I'll get Concurrent Funge done today. 20:06:26 Gregor: does this count as sending it to you later? :P 20:06:38 tswett: No. 20:06:44 I'm at schwork. 20:06:46 !bfjoust one_o_them_shudder_thangs (--+)*384000 20:06:49 Ah. 20:07:16 So, how does bfjoust work? Is there a page explaining it? 20:07:19 Wait for something to finish first X-D 20:07:23 ais523: defend9 is making this a pain :-P 20:07:28 Gregor: WAT GAME IS FOR 20:07:30 tswett: "BF Joust" on the wiki. 20:07:33 * tswett nods. 20:07:40 quintopia: 's in development. 20:07:40 http://esolangs.org/wiki/BF_Joust 20:07:47 (I have an esolangs.org shortcut in my IRC client) 20:07:51 Gregor: plaformer? has name? 20:08:20 quintopia: clearly, the null string, based on Gregor's last comment 20:08:26 -!- Sgeo has quit (Ping timeout: 255 seconds). 20:08:31 and that's a great name for a game, and probably a unique one too 20:08:32 quintopia: Platform/adventure. No enemies per se. No name yet. 's not my game. 20:08:48 I suppose you could call it ": the Game" if you wanted to make it clearer 20:08:55 Gregor: 2d or 3d? 20:09:18 Score for Deewiant_maglev: 11.6 20:09:19 Score for quintopia_one_o_them_shudder_thangs: 16.2 20:09:22 Score for quintopia_slowmonorail: 24.1 20:09:22 ais523: how about "The Best Game Named You've Ever Played" 20:09:24 quintopia: 2D movement in a 3D-rendered environment 20:09:35 ais523: But it would actually be "\0: the Game\0", so most languages wouldn't be able to display the name. 20:09:47 Meh, maglev used to be good 20:09:48 next project: distributed hill! 20:09:53 Gregor: null character != null string 20:10:01 Deewiant, I found a way to place chests on top of each other 20:10:06 quintopia: Piffle 20:10:09 Deewiant, if you want for your "wonders of the world" 20:10:15 Feel free :-P 20:10:17 let's name it (game)^ 20:10:22 i.e. minus the string "game" 20:10:28 -!- augur has quit (Remote host closed the connection). 20:10:38 antitext is something I invented for Cyclexa, but perhaps it has applications elsewhere 20:10:42 OK, maybe defend9 IS too slow X-D 20:10:55 Gregor: I don't mind massively if you remove it from the hill 20:11:17 although there isn't currently a program pending 20:11:25 does defend9 always use up the entire 384000 cycles? 20:11:32 no 20:11:33 Oh, there's not? I didn't see the scores go by :P 20:11:58 !bfjoust scoreboard_interpreted_as_program http://codu.org/eso/bfjoust/in_egobot/report.txt 20:12:14 ais523: How about !bfjoust defend9 < 20:12:15 ais523: mingle all the program sources together and submit that 20:12:17 so lots of + - and . 20:12:17 with code to balance []s 20:12:28 Score for ais523_scoreboard_interpreted_as_program: 7.6 20:12:31 Deewiant: I'll remove it if it becomes a problem 20:12:36 but that ran quickly enough 20:12:45 Hmm, true 20:12:47 because it sucked 20:12:58 it beat nop 20:13:02 ais523: lol 20:13:04 Deewiant, have you upgraded your railway for new less speedy boosters? 20:13:06 in score, taht is 20:13:07 *that is 20:13:12 Gregor: the scoreboard is better than both of your programs combined. 20:13:17 * ais523 looks at the breakdown 20:13:18 tswett: :( 20:13:19 Which is not saying much, since both of your programs have a negative score. 20:13:21 tswett: :'( 20:13:27 Vorpal: I pretty much haven't touched the boosters since they were built 20:14:04 quintopia: There's also http://codu.org/tmp/cave-tense-2011-02-07-2.ogg , which is cave with a "tension track" added, to be faded in during tense/dangerous moments as a cue. 20:14:11 It's better than the harmonic sum of your programs. How's that. 20:14:18 tswett: :'( 20:14:28 ais523_large_decoy_attack.bfjoust vs ais523_scoreboard_interpreted_as_program.bfjoust: ><>><><<<<>><<<<>>><< >><<><<<<><<><>><<<>< >><<><<<<><<><>><<<>< ><>><><<<<>><<<<>>><< ais523_large_decoy_attack.bfjoust wins 20:14:34 I think that's the reason 20:14:35 Of course, one of them loses against literally everything since its very first cycle is to step off the tape :P 20:14:46 !bfjoust farmer1 [>(+)*128>(+)*128<[-]>[-]<<] 20:14:54 the scoreboard gets intermittent wins against a program that's actually decent 20:14:59 in fact, that's a really crazy pattern of < and > 20:15:22 Deewiant, ah they still work 20:15:27 in fact, wtf? 20:15:40 large_decoy_attack vs. the scoreboard makes no sense at all 20:15:42 Score for Deewiant_farmer1: 1.0 20:15:49 !bfjoust breakdown_interpreted_as_program http://codu.org/eso/bfjoust/breakdown.txt 20:15:51 0.0 20:15:55 -!- augur has joined. 20:15:57 Score for Gregor_breakdown_interpreted_as_program: 0.1 20:15:58 Gregor: it probably starts with < 20:16:03 ais523: Yup ;) 20:16:06 hmm, perhaps not 20:16:23 but it goes left near the start, just late enough to beat suiciders 20:16:59 lol 20:17:37 !bfjoust log_interpreted_as_program http://tunes.org/~nef/logs/esoteric/11.02.07 20:17:39 the scoreboard will be insane for a while until all the joke programs are pushed off 20:17:42 Gregor: so it loses against itself? 20:17:53 Score for Gregor_log_interpreted_as_program: 0.0 20:17:56 Gregor: doesn't clog use in order to specify nicks? 20:17:58 Yessssssssssss 20:18:03 ais523: Yes :P 20:18:08 Herobrine's logs would work better for that 20:18:18 !bfjoust google_interpreted_as_program http://www.google.com/ 20:18:29 HTML tends to start with < 20:18:31 !bfjoust herobrine_log_interpreted_as_program http://208.78.103.223/2011-02-07.txt 20:18:34 Score for nescience_google_interpreted_as_program: 0.0 20:18:42 Score for ais523_herobrine_log_interpreted_as_program: 0.0 20:18:42 ya still 20:18:46 !bfjoust ogg_interpreted_as_program http://codu.org/tmp/cave-tense-2011-02-07-2.ogg 20:18:59 oh no, I've started a meme! 20:19:01 This one's gonna get big points. 20:19:02 Score for Gregor_ogg_interpreted_as_program: 0.0 20:19:03 !bfjoust opulus_1_interpreted_as_program http://www.cis.gvsu.edu/~swettt/music/opl1.pdf 20:19:07 D'AWWWW 20:19:16 Score for tswett_opulus_1_interpreted_as_program: 0.0 20:19:31 OK, I'm done interpreting stupid crap as programs :P 20:19:53 !bfjoust parseerror (])*1000000 20:19:57 Okay, let's see what wiggle3 looks like. 20:20:14 Gregor: the stupid crap tends to shunt defense progams down the leaderboard, incidentally 20:20:18 as they draw with it rather than beat it 20:20:26 ais523: Hyuk 20:20:27 Score for ais523_parseerror: 10.9 20:20:32 wait /what/? 20:20:37 ais523: good job! 20:20:51 ais523: You beat all the self-killers 20:20:53 i guess a program that errors out 20:20:54 is a nop 20:21:05 yep, it's interpreted as a nop, it seems 20:21:35 Gregor: how does specifically_beat_defend10_and_in_only_one_polarity work? tricking it into suiciding? 20:21:38 I think it only actually fails the parser if the metacommands don't match. 20:21:40 -!- Sgeo has joined. 20:21:59 ais523: No, it just looks for the first decoy, skips the second that you're watching, then depletes the flag. 20:22:06 ah 20:22:13 why does that only work in one polarity? 20:22:24 Because I'm using -[>-] to look for the decoy 20:23:58 you obviously put a lot of thought into that program! 20:24:09 -!- impomatic has joined. 20:24:17 hi impomatic 20:24:23 quite a lot of BF Joust motion today too 20:24:26 Yay eating on the computer in public 20:24:45 Hi :-) 20:25:17 and a larger hill, in order to avoid certain hill effects and cause others 20:25:20 Gregor, so it assumes there are 2 decoys, or am I misreading you? 20:25:25 we could do with some good old programs submitted 20:25:35 Sgeo: there are two decoys in defend10 20:25:38 Sgeo: It assumes there are two decoys because that's how defend10 works :P 20:25:45 did you not notice the program name? 20:25:49 ais523: I was playing with this >(-)*8>(+)*8>>>+[<-[>>]<]<< which is supposed to was for a cell to be set to zero but only for a limited time. 20:25:57 ais523, does this mean my crappy programs might get lower scores? 20:26:07 score can't go below 0 20:26:09 Doesn't work very well though :-( 20:26:22 ais523, I've gotten positive scores for jun 20:26:29 what's the length range again? 20:26:32 I submitted a new defence program (defend10) that works on a different principle to 7 and 9, it was at the top of the leaderboard for a while 20:26:34 And in one case, a resubmitted program got a wildly diffrent score 20:26:34 10-30 20:26:34 and 10-30 inclusive 20:26:44 0 -> non0 20:28:06 oh right, that idea wouldn't work whoops 20:28:29 !bfjoust mind_bogglingly_slow_rush [[>(+)*128..>(-)*128..]+] 20:28:40 Score for Gregor_mind_bogglingly_slow_rush: 21.6 20:28:45 8-D 20:29:15 the scoring algo gives everything generically higher scores on a larger hill 20:29:27 so that's not as impressive as 21.6 would be this morning 20:29:33 Ohyeah X-P 20:29:43 !bfjoust noop . 20:29:45 but wow, is that rush slow 20:29:54 Sgeo: quintopia submitted that already 20:29:56 Oh 20:30:09 What was the score? 20:30:14 Score for Sgeo_noop: 10.0 20:30:21 Just reading http://codu.org/eso/bfjoust/in_egobot/ais523_defend10.bfjoust :-) 20:30:59 hmm, the hill's still growing 20:31:01 I /hope/ it isn't infinite 20:31:15 !bfjoust mind_bogglingly_slow_rush_with_benefits (>)*9-[[+>(+)*128..>(-)*128..-]+] 20:31:21 Why is the hill so big? 20:31:24 Score for Gregor_mind_bogglingly_slow_rush_with_benefits: 24.7 20:31:27 ais523: It's not, but it's more than double what it was :P 20:31:36 so probably 50, then 20:31:41 impomatic: we thought it would be more interesting 20:31:50 It will be once there's less garbage on the hill. 20:31:50 although it needs to fill with sane programs for that to be a reason 20:32:10 !bfjoust attack1 [>[-]+] 20:32:13 my first program 20:32:22 Score for ais523_attack1: 15.3 20:32:31 ais523, so I should stop participating? 20:32:44 Sgeo: nah, the good programs push off the bad ones 20:32:46 so insane programs don't hurt 20:32:51 !bfjoust x < 20:32:58 !bfjoust x [.] 20:32:59 Score for elliott_x: 20:33:15 haha, the defend programs have fallen miles because of all the stupid programs 20:33:17 You got a ! 20:33:22 is a good score i think 20:33:24 that they draw with rather than beat 20:33:33 Score for elliott_x: 8.8 20:33:47 !bfjoust attack6 (>)*9+[>[-]+] 20:33:50 Why is that different from noop? 20:33:58 Sgeo: it uses more cpu 20:34:00 Score for ais523_attack6: 18.7 20:34:05 I should make a defend program that gives up waiting after a while and does a mindbogglingly slow rush or something like that 20:34:20 so it can beat other defends? 20:34:23 and stupids? 20:34:25 yep 20:35:12 on the basis that the opposing program is a defend or a nop if it still hasn't turned up by cycle 100000 or whatever 20:35:23 link to hill? 20:35:39 http://codu.org/eso/bfjoust/in_egobot/ 20:36:10 ais523: tried giving up waiting this morning but it didn't work too well :-( 20:36:13 you should make a defend that pushes out as far as it can to trap for faster winnage 20:36:19 impomatic: ? 20:36:27 nescience: why would winning faster matter? 20:36:36 just for fun! 20:36:50 and a slight advantage against programs that beat you 20:36:50 you could modify chainmail like that pretty easily, but that isn't mine 20:37:23 defend7/9/10 wouldn't benefit from that because they use the preinitialised-to-128 cell for its value of 128 20:37:39 ais523: I had a defend-style program that gave up waiting after a while 20:37:43 true enough, but you could fix that 20:37:52 "Left warrior failed to parse, right warrior wins!" 20:37:59 !bfjoust error [ 20:38:01 Sgeo: that's some of the junk interpreted as program programs 20:38:10 Ah 20:38:24 [ isn't a parse failure in egojoust, but a nop 20:38:37 Score for Sgeo_error: 8.1 20:39:07 !bfjoust mind_bogglingly_slow_rush_with_benefits (>)*8-[[+>(+)*128..>(-)*128..-]+] 20:39:18 Score for Gregor_mind_bogglingly_slow_rush_with_benefits: 27.6 20:39:37 Gregor: glad to see you making serious programs 20:39:45 What's the hill's maximum size now? 20:39:48 impomatic: hmm, what about resubmitting shortsword? 20:39:56 Deewiant: not stated, but I'm guessing 50 20:40:11 ais523: I can only be bitter about FYB for so long :P 20:40:26 $ cat impomatic_shortsword.bj (>++>--)*2(>)*6([-[+]]>)*20 20:40:57 (I deleted a newline) 20:41:05 Sgeo: that's some of the junk interpreted as program programs 20:41:07 !bfjoust sloth (+)*12((++-)*1024-(--+)*1024)*100(>)*8+([>[-]+])*100 20:41:07 program programs? 20:41:18 "junk-interpreted-as-program programs" 20:41:24 !bfjoust shortsword (>++>--)*2(>)*6([-[+]]>)*20 20:41:24 elliott: some of the (junk interpreted as program) programs 20:41:31 ah 20:41:38 impomatic: hmm, was that the first offset clear ever? 20:41:41 ais523: so you'd use ([)*100000 instead of [] as a tripwire? 20:41:50 !bfjoust nonstop_attack >+[[>+][-]+] 20:41:50 quintopia: pretty much 20:41:52 !bfjoust train2 (>(-)*10)*4(>(+)*10)*4>>+([[-][-]>+])*27 20:41:53 Score for Deewiant_sloth: 20.6 20:42:00 you need to duplicate the bit inside the brackets 100000 times too, though 20:42:04 which might annoy the interp 20:42:16 yeah 20:42:32 limiting the square bracket nesting depth sounds like it may be a good way to avoid non-BF-like abuses 20:42:34 perhaps to 16 or so 20:42:52 Score for Deewiant_train2: 23.3 20:42:52 Score for Sgeo_nonstop_attack: 2.3 20:42:53 Score for impomatic_shortsword: 34.5 20:43:16 ais523: not sure... apparently it was top of the hill with 100% wins on 22 May 2009 though :-) 20:43:29 Did my program at least do what I intended it to do, even if it was a bad idea? 20:43:54 Sgeo: looks like a suicide to me 20:44:02 Sgeo: I doubt it, the [>+] looks very dubious 20:44:04 Deewiant: At least I pass Mycology! 20:44:10 * elliott is regretting this code overhaul 20:44:14 you basically have to hit a -1 valued decoy to avoid suiciding 20:44:18 elliott: What, did you do concurrency? 20:44:18 ^ 20:44:19 ooh 20:44:25 Deewiant: No. 20:44:26 DIDN'T THINK SO 20:44:29 !bfjoust glacially_slow_rush (>->+)*4-[[+>(+)*128..>(-)*128..-]+] 20:44:37 Deewiant: I tried to move everything over to data-accessor and it's turning into a great big gob of mud. 20:44:42 What I wanted was to keep going and assume everything's a decoy 20:44:44 :/ 20:44:46 Deewiant: Solution: DON'T CLEAN UP UNTIL IT PASSES MYCOLOGY ENTIRELY 20:44:52 elliott: you have a backup from before, though, right? 20:44:56 ais523: thankfully, yes. 20:45:10 What about version control 20:45:24 Sgeo: What, do you have a scapegoat implementation? 20:45:34 What? 20:45:36 Oh 20:45:40 No? Then I'm not interested. 20:45:45 elliott: you know you can use other VCSes until sg is finished, right? 20:45:53 ais523: But they're all irritating. 20:45:58 indeed 20:46:00 You... won't use Version Control unless it's God's own version control? (Where you're God, apparently) 20:46:06 Deewiant: So is t totally easy? 20:46:09 Sgeo: *ais523's God 20:46:13 Sgeo: hey, /I/ invented sg, elliott just thought it was a good idea 20:46:18 oh, sorry 20:46:18 but I don't consider myself God as a result 20:46:26 Not "totally" the way stuff like + is 20:46:32 (elliott does though) 20:46:39 (I'd've said v but you managed to get that wrong) 20:46:44 And I'm still mad that your data dir isn't .(unicode goat) 20:46:45 [[Creating additional IP's is done with the t "Split" instruction, available in Concurrent Funge-98 only. It causes the current IP to be duplicated, and this duplicate is added to the IP list such that it is executed for the first time before the parent IP is next executed.]] 20:46:48 Deewiant: :-D 20:47:05 [[When a child IP is borne unto Funge-Space thus, its location, storage offset, and stack are all copied verbatim from the parent IP's. The child IP's delta is reversed (a la r) from its parent's, though.]] 20:47:11 Deewiant: It actually advances when created, right? 20:47:15 elliott: err, no 20:47:20 although everyone interprets it as yes 20:47:39 it is actually possible to use non-advancing t without a forkbomb loop, though, although difficult 20:47:42 !bfjoust why_is_this_broken http://pastebin.com/raw.php?i=nq4khGar 20:47:47 !bfjoust draw >+[]<[+] 20:47:51 !bfjoust farmhand (+-)*25000(-+)*25000 20:48:07 ais523: I'm asking for the common interpretation. 20:48:12 impomatic: wow, that's weird; also, [>>]? 20:48:13 Oh nose 20:48:23 elliott: it's commonly interpreted as advancing, even though the spec doesn't say that 20:49:00 Deewiant: Hmm, is having a "current IP" state sane, or would you pass the IP around everywhere? 20:49:16 elliott: the IP list should be a queue 20:49:21 and the current IP would be the head of the queue 20:49:22 why is report empty? 20:49:31 quintopia: because it's currently running programs 20:49:37 ais523: err, I don't see why I should mutate the IP list all the time 20:49:38 it only generates when the running programs have finished 20:49:43 Score for Gregor_glacially_slow_rush: 3.9 20:49:43 Score for Deewiant_draw: 4.2 20:49:54 Score for impomatic_why_is_this_broken: 0.4 20:49:55 elliott: semantics, I suppose 20:49:58 Score for Deewiant_farmhand: 9.1 20:50:01 !bfjoust test >+>->>>>>>>((-)*384(+)*384)*21 20:50:08 the report generator runs programs...it could wait til it has a new report to clear the old report, couldn't it? 20:50:13 ais523: for instance 20:50:22 ais523: it suppose to have 4 cells, zero / count / watch / zero. If decrements count and watches watch and attack when either reaches zero. 20:50:24 1 cell containing a unique ID for the current IP (ip) 20:50:25 Only significant for Concurrent Funge. This ID differentiates this IP from all others currently in the IP list. 20:50:29 ais523: that would always be 0, if i did it that way 20:50:40 ais523: which would make it useless 20:50:50 ais523: dumb idea though :-) 20:50:55 Score for nescience_test: 1.8 20:51:00 lol 20:51:18 impomatic: it has merit, but probably not implemented that way 20:51:23 !bfjoust test >+>->>>>>>>((-)*384)*21 20:51:29 oh crap 20:51:32 haha 20:51:33 I forgot > 20:51:36 no wonder 20:51:40 elliott: Please don't use list indices: even though it's not specced as such, everybody expects that old IDs don't change when you start a new thread with t :-P 20:51:43 ais523: reimplementing :-) 20:51:46 !bfjoust test >+>->>>>>>>(>(-)*384(+)*384)*21 20:51:57 also hey, distributed processing guise 20:52:02 I'll donate cycles 20:52:06 Score for nescience_test: 4.3 20:52:06 Score for nescience_test: 4.3 20:53:23 -!- elliott_ has joined. 20:53:30 elliott: Please don't use list indices: even though it's not specced as such, everybody expects that old IDs don't change when you start a new thread with t :-P 20:53:35 Deewiant: Right 20:53:37 So ais523's idea won't work. 20:53:39 Deewiant: I'll probably just use list indices and do (length list - index). 20:53:52 !bfjoust I_thought_the_scoreboard_had_more_programs_earlier >>>>>>>>(>[>[-]])*21 20:54:02 Score for ais523_I_thought_the_scoreboard_had_more_programs_earlier: 7.9 20:54:03 elliott_: would a thread be removed from the list when it executed @? 20:54:11 elliott: I don't see how that'll work 20:54:32 elliott: And ais523's idea works fine if you store the ID in the IP, which is kind of what I hinted at 20:54:35 !bfjoust test >+>->>>>>>>(>(-)*384)*21 20:54:39 Deewiant: Oh, fine. 20:54:44 @hoogle Queue 20:54:45 module Data.Graph.Inductive.Internal.Queue 20:54:45 Data.Graph.Inductive.Internal.Queue data Queue a 20:54:45 Data.Graph.Inductive.Internal.Queue queueEmpty :: Queue a -> Bool 20:54:48 >_< 20:54:54 Score for nescience_test: 1.4 20:54:56 I'LL USE A LIST 20:54:59 elliott_: Zippers 20:55:02 worser lol 20:55:10 !bfjoust test < 20:55:15 Deewiant: Wouldn't a list work? Well, I guess I'd need to append every tick, which would be slow. 20:55:18 should just be syntax for kill 20:55:19 elliott_: Seq is nice for queues 20:55:30 Deewiant: I'm still vaguely scared of zippers though, although I know they're the derivatives of types. 20:55:34 ais523_I_thought_the_scoreboard_had_more_programs_earlier.bfjoust vs nescience_shade.bfjoust: ><<<<<<<<<<<<<<<<<<<> ><<<>>>>>>>>>>>XX<<<> ><<<>>>>>>>>>>>XX<<<> ><<<<<<<<<<<<<<<<<<<> 20:55:34 It'd work, a zipper just seems natural for something you move through 20:55:40 that's nicely polarity-dependent 20:55:42 oerjan: seq from where? 20:55:47 Score for nescience_test: 0.0 20:55:52 elliott_: Data.Sequence 20:55:53 @hoogle Seq 20:55:53 Data.Sequence data Seq a 20:55:53 Prelude seq :: a -> b -> b 20:55:53 Control.Parallel.Strategies seqArr :: Ix b => Strategy a -> Strategy (Array b a) 20:56:00 -!- elliott has quit (Ping timeout: 250 seconds). 20:56:19 Gregor: scoreboard's at 45? 20:56:33 !bfjoust hmm (>[>>>>>>>>(-)*128])*22 20:57:06 quintopia: that's... an 8-cell tripwire 20:57:14 Score for quintopia_hmm: 4.0 20:57:36 -!- sebbu2 has changed nick to sebbu. 20:58:02 http://www.asciiartfarts.com/20110115.html 20:58:31 ais523: i was hoping it would beat wiggle3, but i must have missed something that one does 20:58:58 Gah, Google is useless for grepping #esoteric logs 20:59:01 * Sgeo angers 20:59:10 hg clone ... 20:59:15 grep 'foo' * 20:59:35 wget works too :P 20:59:49 Oh, site:codu.org works 20:59:56 Instead of tunes.org 20:59:58 >_< 20:59:58 * Sgeo is lazy 21:00:05 JUST DOWNLOAD THE REPOSITORY 21:00:33 Deewiant: What's a list zipper again? 21:00:38 a * [a] * [a]? 21:01:07 Yes, typically ([a],a,[a]) 21:02:16 Sgeo: yeah robots.txt has a Disallow: /~nef/logs/ 21:02:21 Hmm, so I need "further :: ([a],a,[a]) -> ([a],a,[a])". 21:02:24 It needs to be cyclic, right? 21:02:49 That's bizarre, especially considering I got some #haskell logs 21:03:01 elliott_: If you create it using cycle you just need [a], don't you 21:03:03 http://www.google.com/search?rlz=1C1TSND_enUS401US401&sourceid=chrome&ie=UTF-8&q=Atomo+site:tunes.org 21:03:07 yeah there are some occasional instances... 21:03:10 Well, bbl 21:03:11 Deewiant: Don't I need to know the current number of IPs for something? 21:03:19 Can't you store that separately? :-P 21:03:20 !bfjoust slightly_less_stupid_defender_clearer [>[-.]+] 21:03:27 Deewiant: :/ 21:03:32 Score for ais523_slightly_less_stupid_defender_clearer: 26.8 21:03:32 Deewiant: That seems a bit ugly. 21:04:20 oerjan: What was that about Seq? :-P 21:05:32 -!- myndzi\ has changed nick to myndzi. 21:05:42 right so how do i get this version control stuff on windows 21:05:47 elliott_: Seq is a slightly restricted finger tree structure, constant whatchamacallit time appending at both ends 21:05:50 myndzi: Step one, install Linux. 21:05:52 Sorry. 21:05:55 I'm such a troll. 21:05:58 ,,|,_ 21:06:05 :P 21:06:09 Step two, http://mercurial.selenic.com/ 21:06:11 i know it works because it's on my oldass laptop 21:06:11 Step three, http://mercurial.selenic.com/ 21:06:13 Step four, http://mercurial.selenic.com/ 21:06:15 Step five, http://mercurial.selenic.com/ 21:06:24 (it doesn't support FingerTree's general Monoid indexing 21:06:33 oerjan: hm can i do a cyclic queue with it :-P 21:06:45 the next question is going to be, "how do i download everything" 21:07:00 elliott_: um a cyclic queue is just appending after you pop off the beginning... 21:07:05 so sure 21:07:07 !bfjoust broken http://pastebin.com/raw.php?i=XVZqenNB 21:07:09 myndzi: hg clone someurliforgot-askgregor 21:07:09 and/or browse it 21:07:11 oerjan: well yeah 21:07:14 mk 21:07:15 Score for impomatic_broken: 2.3 21:07:50 Gregor: look at the line numbered 37 at the bottom on the scoreboard 21:07:56 it has "nothing changed" in the middle of it 21:08:38 oh hey it looks like i already had it 21:08:41 i thought i only did it on my laptop 21:08:43 -!- Sgeo has quit (Ping timeout: 255 seconds). 21:08:48 !bfjoust broken http://pastebin.com/raw.php?i=vkwD6XRB 21:08:58 Score for impomatic_broken: 2.3 21:09:15 !bfjoust keke2 ->>>>>>>>>(>[(-.+(-.)*256(+.)*256>)*20])*20 21:09:23 Score for myndzi_keke2: 29.5 21:09:41 !bfjoust allornothing >>(+)*19>(-)*19>>>>>>>>>>>(>(-)*127-.-.)*21 21:09:48 oerjan: hm i don't actually see a simple way to pop off a Seq 21:09:49 oh wiat 21:09:50 Score for myndzi_allornothing: 12.5 21:09:51 *wait 21:09:53 do you use viewl/viewr? 21:09:55 myndzi: is that a deliberate minlength overshoot? 21:09:58 elliott_: yep 21:10:07 ais523: the second? yeah 21:10:11 oerjan: er, but how do you turn the view back 21:10:19 you don't need to win the smallest ones to win, it was supposed to be faster this way 21:10:30 indeed 21:10:34 and that used to be a valid strategy 21:10:40 nowadays, it mostly seems to hurt rather than help 21:10:42 yeah, i'm just seeing how some old ones perform 21:10:45 yep 21:10:49 also putting stuff on the hill 21:10:52 now how do i get at the archives 21:10:58 what's the hg url 21:11:04 and how do i like, search for stuff lol 21:11:10 it's fun seeing my defend programs rise back through the ranking, anyway 21:11:13 myndzi: um when you check it out it just becomes a directory 21:11:17 also, VCs aren't designed to be particularly searchable 21:11:22 you can specify a certain revision if you want 21:11:25 hg log might come in handy 21:11:25 *VCSes 21:11:33 myndzi: the url is just the directory with all the warriors in 21:11:39 in_egobot 21:11:48 elliott_: <| and |> 21:11:57 !bfjoust broken http://pastebin.com/raw.php?i=Up0gHB7U 21:12:07 Score for impomatic_broken: 2.2 21:12:07 oerjan: hmm 21:12:13 :-( 21:12:17 !bfjoust death_to_no_ops (>)*8(>(-.)*256)*21 21:12:24 oerjan: i think i'm getting headache-clouded again >_< 21:12:29 hmmm 21:12:33 oshi, i just deltreed all the old stuff 21:12:36 but i can get it again i guess 21:12:37 elliott_: you probably don't want to turn back the _same_ view... 21:13:02 !bfjoust broken http://pastebin.com/raw.php?i=CxAYXwkA 21:14:04 oerjan: maybe figuring out how to do this as a zipper would be less confusing ;D 21:14:11 why is the command called 'hg' if the software is called mercurial anyway 21:14:18 chemical symbol for mercury 21:14:19 elliott_: lessee you could do something like rotate s = case viewl s of a :< r -> r |> a 21:14:28 oh right 21:14:32 i feel like i lost nerd points there 21:14:32 :P 21:14:36 !bfjoust flyingleap >(+)*40>->+(>[(>)*6(+)*3[-]>(-)*3[+]>[(-)*128[-]>+])*20 21:14:44 oerjan: rotate s | a :< r <- viewl s -> r |> a 21:14:45 pops off left, appends to right 21:14:47 oerjan: CONFUSION SET TO MAXIMUM 21:15:04 -!- iconmaster has joined. 21:15:06 oerjan: shouldn't it pop off right, append to left, i generally think of movement as going left to right :D 21:15:44 elliott_: well you'd be running the leftmost IP next wouldn't you? so you'd pop that off. 21:15:59 !bfjoust sicilian_defence http://pastebin.com/raw.php?i=2eubcLyw 21:16:11 oerjan: surely i'd run the ip just to the right 21:16:20 and then at the end go back to the leftmost ip 21:16:24 [a,b,c,d] -> a b c d a b c d ... 21:16:42 * iconmaster has came up with around 5,000 commands for Onecode! Yay repition. 21:16:46 impomatic: why do you use +. 21:16:48 elliott_: um the point is after you run a, the new list will be [b, c, d, a] 21:16:58 oerjan: right 21:17:01 and? 21:17:14 to do that you pop a off the left and append it to the right. 21:17:14 myndzi: ++ wouldn't leave the flag at 0 for two cycles 21:17:21 it has to be two cycles? 21:17:29 i totally forgot that 21:17:34 yep 21:17:37 or else it changed and i didn't know 21:17:37 haha 21:17:44 myndzi: where, in the first line or the others? 21:17:49 the others 21:17:54 ais answered my question though 21:17:58 impomatic: how does that differ from chainmail? use of the flag rather than a separate cell for locking? 21:18:00 oerjan: hm right 21:18:17 oerjan: but, otoh, I rarely want to pop 21:18:24 oerjan: usually I'd just want to look at the current one, and then at the end rotate it 21:19:01 ais523: yes, that's all. Just checking I haven't broken something (I'm still trying to limit the time it waits) 21:19:38 impomatic: it loses to NOPs and to defence programs 21:19:40 so it seems broken 21:20:20 Score for ais523_death_to_no_ops: 16.9 21:20:20 Score for impomatic_broken: 2.1 21:20:31 oerjan: so what's "head" on a seq? 21:20:32 Score for impomatic_sicilian_defence: 0.0 21:20:32 Score for quintopia_flyingleap: 1.1 21:20:49 headS s | a Seq.:< _ <- Seq.viewl s = a? 21:21:18 elliott_: the a in a :< r ? 21:21:27 oerjan: so (headS s | a Seq.:< _ <- Seq.viewl s = a) 21:21:49 -!- iconmaster has quit (Quit: Rooms • iPhone IRC Client • http://www.roomsapp.mobi). 21:22:08 -!- iconmaster has joined. 21:22:11 yeah 21:22:52 aw the scoreboard got cut off? 21:23:15 elliott_: mind you i don't know whether a zipper (i.e. two lists) would be less efficient in practice. it does have the need to reverse everything each time you get to the end... 21:23:29 -!- iconmaster has quit (Client Quit). 21:23:48 modifyCurrentIP :: (IP -> IP) -> Shiro () 21:23:49 modifyCurrentIP f = modify $ \st -> 21:23:49 case Seq.viewl (ips st) of 21:23:49 ip Seq.:< ips -> st{ ips = f ip Seq.|> ips } 21:23:49 "yikes" 21:23:49 but fingertrees are probably pretty heavyweight 21:23:56 WHY IS THE REPORT TAKING SO LONG TO FINISH WRITING 21:23:58 they are? 21:24:21 "the Yi text editor specializes finger trees to finger strings for efficient storage of buffer text" 21:24:24 oerjan: can't be that heavy-weight :-D 21:24:34 quintopia: myndzi's spamming test programs in PM 21:24:45 elliott_: well heavier than lists 21:24:51 !bfjoust sicilian_defence http://pastebin.com/raw.php?i=HHuDwWmq 21:24:53 data FingerTree a 21:24:54 = Empty 21:24:54 | Single a 21:24:54 | Deep {-# UNPACK #-} !Int !(Digit a) (FingerTree (Node a)) !(Digit a) 21:24:59 oerjan: doesn't seem excessively heavy at least 21:24:59 Score for impomatic_sicilian_defence: 0.0 21:25:07 yeah, i should just get the local EXE or something 21:25:08 ais523: i want to know if flyingleap beat wiggle3 ever. 21:25:14 viewl:: Seq a -> ViewL a 21:25:14 viewl (Seq xs)= case viewLTree xs of 21:25:14 Nothing2 -> EmptyL 21:25:14 Just2 (Elem x) xs' -> x :< Seq xs' 21:25:29 (|>):: Seq a -> a -> Seq a 21:25:29 Seq xs |> x= Seq (xs `snocTree` Elem x) 21:25:33 oerjan: viewl and (|>) look simple enough 21:25:58 Nobody's commented on how awesome my new concise report format is :( 21:26:06 Gregor: I noticed, it's awesome 21:26:16 impomatic: sicilian defence seems to be suiciding, but I can't see why 21:26:31 link? 21:26:50 -!- myndzi has changed nick to myndzi\. 21:27:13 http://codu.org/eso/bfjoust/in_egobot/report.txt 21:27:24 ah sorry i may have overwritten that 21:27:36 i thought i already nuke this one off but had to retry 21:27:38 -!- myndzi\ has changed nick to myndzi. 21:29:09 modifyCurrentIP :: (IP -> IP) -> Shiro () 21:29:09 modifyCurrentIP f = modifyIPs $ \is -> 21:29:09 case Seq.viewl is of 21:29:09 ip Seq.:< is' -> is' Seq.|> f ip 21:29:15 oerjan: is that correct? it's suspiciously close to your "rotate" 21:29:54 elliott_: well you'd always want to rotate after you've finished with an IP 21:30:16 oerjan: modifyCurrentIP can happen without the IP's tick finishing... 21:30:30 oerjan: is it impossible to just change the head of this queue? 21:30:32 without rotating? 21:30:43 elliott_: of course not, use <| instead 21:30:56 oerjan: what do you mean? 21:31:16 ip Seq.:< is' -> f ip Seq.<| is' 21:31:55 oerjan: how slow's that :P 21:32:12 elliott_: should be about the same as rotating? 21:32:26 oerjan: okay 21:32:39 oerjan: ideally i would process the ip and rotate simultaneously right? 21:32:45 yeah 21:32:51 !bfjoust antiwiggle3 (.)*48(>[>>>>>>>>(-)*128])*22 21:32:55 oerjan: that's not really possible with my code 21:33:13 Score for quintopia_antiwiggle3: 13.6 21:33:32 elliott_: well there's nothing preventing you from popping the ip, doing whatever it needs to do, and then appending afterwards. 21:33:49 oerjan: who says i pop :) 21:33:56 wow...it didn't work :P 21:34:32 elliott_: well since the view work such that if you even _look_ at the head, you also get the tail, it seems inefficient not to remember the tail... 21:34:36 ais523: TELL ME WHY IT DIDN'T WORKED 21:34:38 *works 21:34:42 Darn, my mind-bogglingly slow rushes have been pushed back down by legit programs :P 21:34:49 oerjan: yeah, but my code is not structured like this at all 21:35:29 !bfjoust sicilian_defence http://pastebin.com/raw.php?i=jKHD8KvG 21:35:51 Deewiant: Does one space take a tick in stringmode? 21:35:55 ok i am reading the help but having trouble.. how do i just, like, search for files that have existed with a matching file name through all revisions? 21:36:03 quintopia: wiggle3 leaves a trail behind as it moves 21:36:06 elliott_: Yes 21:36:20 Deewiant: >_< 21:36:22 so you need to ignore cells with value + or - 1 21:36:24 Deewiant: Wrong answer, man :P 21:36:40 elliott_: This kind of twiddling is the main reason why t is not so simple :-) 21:37:14 !bfjoust antiwiggle3 (.)*48(>[+[--[>>>>>>>>(-)*128]]])*21 21:37:19 elliott_: hm you _could_ store the queue in left view form, then you would always have quick access to the ip and could change it in the same form. then rotate would be a separate thing. 21:37:35 oerjan: wouldn't that essentially be the zipper solutio 21:37:36 n 21:37:44 no 21:38:07 ais523: oh, i missed that stupid + at the end of the decoy search :/ 21:38:25 Deewiant: OK, I'll have to make toNextIns behave differently with string mode. 21:38:31 elliott_: rotate (ip :< is') = viewl (is' |> ip) 21:38:32 also, egobot seems to have run one program then stopped 21:38:33 which is weird 21:38:40 Deewiant: A space counts as an instruction, *unless* the previous instruction (delta-wise) is also a space. 21:38:45 !bfjoust suicide < 21:39:00 again, one program then stopped 21:39:02 something seems broken 21:39:06 !bfjoust antiwiggle3 (.)*48(>[-[>>>>>>>>(-)*128]])*22 21:39:52 Gregor: I think we broke EgoBot 21:39:59 D: 21:40:00 IMPOSSIBLE 21:40:15 elliott_: and then just modifyCurrentIP f = modifyIPs $ \(ip :< is') -> f ip :< is' 21:40:20 top reports that egojoust is running 21:40:35 breakdown.txt doesn't 21:40:37 `run ps aux | grep ego 21:40:43 and it normally updates quite quickly while egojoust is running 21:40:45 That wasn't smart :P 21:40:58 sandboxed, surely? 21:41:04 ps isn't. 21:41:08 elliott_: well i guess it's a _tiny_ bit of zipping, just one element 21:41:10 5000 7247 0.0 0.0 3776 164 ? TN Feb07 0:00 ../report ../egojoust ../cache Deewiant_monorail.bfjoust Lymia_evo_1.bfjoust Patashu_rushpolarity.bfjoust Vorpal_shudder.bfjoust ais523_defend7.bfjoust ais523_large_decoy_attack.bfjoust ais523_stupid_defender_clearer.bfjoust ais523_tripstridewire.bfjoust 21:41:22 oerjan: do I even need finger trees at that point? :P 21:41:27 Feb07? 21:41:38 !bf ++++++++>++++++<[>[>+>+<<-]>>[<<+>>-]<-]. 21:42:10 Yes, the system seems overloaded, so let's throw more shit at it. 21:42:27 I'm wondering if it's stuck in a loop or a quadratic algo or something 21:42:36 well, just checking whether it's ego or just the bf joust interp 21:42:44 * impomatic didn't break it! 21:43:30 i just want to search for old programs :( 21:43:34 why is it so hard 21:43:41 fu hg 21:43:43 elliott_: um the finger trees are to get the efficient appending of an element at the end 21:44:07 oerjan: I think I might just use a zipper until Deewiant adds tenbillionthreads.b98 to Fungicide 21:44:10 Or is that what fork.b98 is? 21:44:11 Gregor: running a suicide program like mine or yours causes it to go almost instantly, and then get stuck 21:44:16 Yes, that's what it is :-) 21:44:17 `run ps aux | grep ego 21:44:18 5000 8915 0.0 0.0 9500 184 ? S Jan20 0:00 /bin/bash ./egobot \ 5000 15704 0.0 0.0 45960 980 ? S 20:10 0:00 su - egobot \ 5000 20832 0.0 0.0 33884 556 ? S Feb06 0:01 socat TCP4:irc.freenode.net:6667 EXEC:./multibot EgoBot egobot egobot.log \ 5000 20834 0.0 0.0 21:44:26 Deewiant: How many threads? :P 21:44:38 I think 64K at most 21:44:41 Can't remember 21:44:45 See the web page :-P 21:45:12 Unfortunately I can't check what's going on right now as I've gotta go >_> 21:45:42 oerjan: *Main> let foo = replicate 64 0 21:45:43 *Main> foldr seq () (reverse foo) 21:45:43 () 21:45:44 oerjan: Ran instantly. 21:45:45 Err. 21:45:50 *Main> let foo = replicate 64000 0 21:45:51 That is. 21:45:53 (Copied the wrong line) 21:46:03 oerjan: tl;dr I'm sure zippers will be fine :P 21:46:52 elliott_: O KAY. if you want a zipper, rotate ([ip], r) = (reverse r, [ip]); rotate ((ip:l), r) = (l, ip:r) . i think. 21:46:56 !bfjoust suicide < 21:47:03 `run ps aux | grep ego 21:47:04 5000 8915 0.0 0.0 9500 184 ? S Jan20 0:00 /bin/bash ./egobot \ 5000 15704 0.0 0.0 45960 980 ? S 20:10 0:00 su - egobot \ 5000 20832 0.0 0.0 33884 556 ? S Feb06 0:01 socat TCP4:irc.freenode.net:6667 EXEC:./multibot EgoBot egobot egobot.log \ 5000 20834 0.0 0.0 14468 332 ? 21:47:08 oerjan: well yes :P 21:47:15 oerjan: erm 21:47:20 oerjan: isn't it [a],a,[a] 21:47:22 not [a],a 21:48:00 elliott_: you don't need to store the ip separately from both lists but ok 21:48:19 oerjan: true. 21:49:58 -!- pikhq_ has joined. 21:50:00 -!- pikhq has quit (Ping timeout: 255 seconds). 21:50:11 elliott_: in fact it becomes more awkward if you split it: rotate (l, ip, []) | (ip':r') <- reverse l = ([ip], ip', r'); rotate (l, ip, ip':r) = (ip:l, ip', r) 21:50:17 * elliott_ wonders what started oerjan saying "O KAY" 21:50:19 oerjan: ew 21:50:43 because you need to extract the head at once 21:51:29 maybe ([], ip', r'++[ip]) is better for the first one 21:52:32 Gregor: give hackego root permissions and we'll gix it while you're gone 21:52:36 *fix 21:52:56 i guess my pair version above has the intuitively wrong order 21:53:13 `run ps aux | grep ego 21:53:16 5000 1148 0.5 0.1 8908 1244 ? S 22:14 0:00 /bin/bash PRIVMSG/tr_60.cmd PRIVMSG #esoteric `run ps aux | grep ego \ 5000 1173 0.0 0.0 8908 536 ? S 22:14 0:00 /bin/bash PRIVMSG/tr_60.cmd PRIVMSG #esoteric `run ps aux | grep ego \ 5000 1176 0.0 0.0 8912 508 ? S 22:14 21:53:28 /something/ is happening, at least 21:53:36 those numbres are different 21:53:59 `run ps aux | grep ego 21:54:00 5000 1496 0.0 0.1 8908 1244 ? S 22:15 0:00 /bin/bash PRIVMSG/tr_60.cmd PRIVMSG #esoteric `run ps aux | grep ego \ 5000 1576 0.0 0.0 8908 536 ? S 22:15 0:00 /bin/bash PRIVMSG/tr_60.cmd PRIVMSG #esoteric `run ps aux | grep ego \ 5000 1580 0.0 0.0 8912 508 ? S 22:15 21:54:05 !bfjoust dragon_variation http://pastebin.com/raw.php?i=GjATANq4 21:54:11 Deewiant: BTW, Mycology takes about 8-9 seconds for me right now, which is mostly spent in reading, i and o testing, and bounds shrinking. 21:54:21 oh, the grep is finding itself 21:54:29 `run ps aux | grep e\go 21:54:30 5000 1653 0.5 0.0 3640 388 ? SN 22:15 0:00 ../../../slox/slox 25 ../report ../egojoust ../cache Deewiant_farmhand.bfjoust Deewiant_maglev.bfjoust Deewiant_monorail.bfjoust Deewiant_sloth.bfjoust Deewiant_steamroller.bfjoust Deewiant_train2.bfjoust Gregor_mind_bogglingly_slow_rush.bfjoust 21:54:31 A pretty respectable speed if you ask me considering I've optimised it exactly twice :P 21:54:36 elliott_: Now make it 1000x faster and it'll be competitive 21:54:47 -!- nescience has quit (Remote host closed the connection). 21:54:58 so it is running a report 21:55:01 -!- poiuy_qwert has joined. 21:55:09 we just don't know which report :/ 21:55:13 Deewiant: Eh, if it took 1/100th of the time, it'd be just about the same as cfunge :P 21:55:18 What's the diagnosis? It ego being slow or broken? 21:55:26 I think it's caught in an infinite loop 21:55:28 `run ps aux | grep e\go 21:55:28 elliott_: You have to compare against cfunge without fingerprints, not with 21:55:29 5000 1653 0.5 0.0 3640 388 ? SN 22:15 0:00 ../../../slox/slox 25 ../report ../egojoust ../cache Deewiant_farmhand.bfjoust Deewiant_maglev.bfjoust Deewiant_monorail.bfjoust Deewiant_sloth.bfjoust Deewiant_steamroller.bfjoust Deewiant_train2.bfjoust Gregor_mind_bogglingly_slow_rush.bfjoust 21:55:38 i concur with ais523 21:55:40 Deewiant: I was. OK, 0.08 vs 0.03, but come on. 21:55:46 Deewiant: Really I don't expect to go below 1 to 2 seconds on Mycology. 21:55:59 `run ps aux | grep e\go | grep -v report 21:56:00 5000 1684 14.1 0.7 11984 8216 ? TN 22:15 0:15 ../egojoust Deewiant_farmhand.bfjoust impomatic_dragon_variation.bfjoust \ 1740149 2616 0.0 0.0 4324 904 ? SN 22:17 0:00 grep /bin/grep ego \ 5000 8915 0.0 0.0 9500 184 ? S Jan20 0:00 /bin/bash ./egobot \ 5000 15704 21:56:00 ais523: I'm pretty sure my loop stops just short of infinite. Not guilty! 21:56:02 Deewiant: Because Mycology does nothing intensive, frankly. And reading fungespace takes time unless you cheat. 21:56:06 Deewiant: (with a fixed area, say.) 21:56:11 Deewiant: Really I don't expect to go below 1 to 2 seconds on Mycology. <-- aha, you don't aim as high as me then 21:56:15 impomatic: it's dragon_variation that seems to be the issue 21:56:17 Vorpal: I aim higer. 21:56:19 *higher. 21:56:21 I'm going to beat your ass on Fungicide :P 21:56:24 could you replace it with a suicide for the time being 21:56:30 to see if it helps? 21:56:34 elliott_, well right. But that doesn't represent real world use cases 21:56:35 too bad we can't `kill 21:56:35 elliott_: On my machine cfunge is occasionally below 0.01 :-P 21:56:41 Vorpal: Nor does Mycology. 21:56:43 Vorpal: fungot does. 21:56:44 elliott_: basically it fnord and recursively. but i just don't get what call/ cc... :) the drawback of always reminding me of how to bugger the tests to go to the display from the data it works on my machine 21:56:49 then at least we'll know where the problem is 21:56:50 fungot's startup time is nearly irrelevant, you might note. 21:56:50 elliott_: magic johnson? ( random-integer 2)) 21:56:54 elliott_, and cfunge does decently on fungot iirc 21:56:54 Vorpal: hi gnomon :) hi bbls! 21:57:03 elliott_, anyway the fungicide stuff is outdated for cfunge afaik 21:57:07 Vorpal: But I will beat it. Or at least equalise it. 21:57:12 I don't care, I'm going to beat you anyway :P 21:57:19 elliott_, sure. why would I care 21:57:27 oh and yeah, will implement your algorithm tomorrow 21:57:29 Vorpal: Because you'll have to optimise. 21:57:32 it looks quite interesting 21:57:37 elliott_, what? 21:57:44 Vorpal: Otherwise I'll have taken your crown! 21:57:44 elliott_, I'm not competing with you 21:57:49 Suuuure 21:57:50 ais523: oh so you're blaming me! Oh well, I'm used to being in trouble for something... :-) 21:58:00 Hey ais523, what's the name of the best Funge interpreter ever. 21:58:05 elliott_, no, ccbi2 still beats cfunge due to it's insane stuff with various boxes and such. 21:58:05 impomatic: it may be egobot's fault, choking in something in your program 21:58:06 HINT: The answer is Shiro 21:58:08 ais523: http://pastebin.com/raw.php?i=GjATANq4 <- no infinite loops :-P 21:58:16 elliott_, that is what you have to beat to take the crown. 21:58:21 elliott_, or even beat jitfunge 21:58:21 so think of killing the program as a way of debugging egobot 21:58:23 Vorpal: I don't see what's so interesting about my wrapper, anyway 21:58:29 It's just the loop, made loopless 21:58:41 elliott_, indeed. But it saves thinking just looking at it :P 21:58:53 elliott_, you are using BSD license right? 21:58:55 impomatic: aha, egobot unrolls repetitions with unmatched [ or ] 21:58:56 Vorpal: tl;dr Obviously, there is a function that will tell us how many iterations the loop will take. 21:58:58 or is it some other one? 21:59:05 Vorpal: The loop is just the subtraction of delta from the coordinates. 21:59:07 which is obviously inefficient, but that's what's killing it, almost certainly 21:59:11 Vorpal: So this is obviously a minus-multiplication. 21:59:13 Done. 21:59:15 elliott_, yes indeed that function was the key to thus 21:59:16 this* 21:59:29 (telling us how many iterations) 21:59:29 Vorpal: The function is public domain or whatever, you can't copyright that algo. 21:59:31 -!- zzo38 has joined. 21:59:33 it would be nice if you'd unbreak it... 21:59:37 -!- kar8nga has quit (Remote host closed the connection). 21:59:43 ais523: egobot unrolls % 21:59:48 impomaticccccccccccccccccccccccccccc 21:59:50 elliott_: yep, but also ([)* 21:59:54 ais523, what did he do? 21:59:58 ais523: http://pastebin.com/raw.php?i=GjATANq4 <- no infinite loops :-P 22:00:01 impomatic: View source on that page. 22:00:04 impomatic: It's HTML. 22:00:05 Vorpal: submitted a program that's perfectly fine, but that egojoust chokes on 22:00:06 ais523: oh :-( It really is my fault! 22:00:10 impomatic: Your program is starting with < 22:00:13 because of impomatic: Use a pastebin that serves as text/plain. 22:00:23 impomatic: that explains why all your programs got 0, at least 22:00:26 Because that just won't work X-D 22:00:58 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 22:01:20 -!- MigoMipo has quit (Read error: Connection reset by peer). 22:01:22 but ya, kill it make it better impomatic 22:01:33 so given that we know the program will score 0, replacing it with a suicide will just save time 22:01:55 I think sprunge pastebin is serves as plain text (unless a syntax highlighter is specified) 22:02:05 it does 22:02:05 !bfjoust dragon_variation < 22:02:09 I used it earlier 22:02:13 `help 22:02:13 Runs arbitrary code in GNU/Linux. Type "`", or "`run " for full shell commands. "`fetch " downloads files. Files saved to $PWD are persistent, and $PWD/bin is in $PATH. $PWD is a mercurial repository, "`revert " can be used to revert to a revision. See http://codu.org/projects/hackbot/fshg/ 22:02:20 !bfjoust sicilian_defence < 22:02:33 I know it does because I often use it in that way, to copy a file there and then download it elsewhere using the command-line tools. 22:02:33 aha, it's running now 22:02:36 oerjan: modifyIPs :: (([IP],[IP]) -> ([IP],[IP])) -> Shiro () 22:02:38 oerjan: impressive type 22:02:41 `run echo a > b; sleep 2; echo c > b; 22:02:41 `run echo d > b 22:02:42 No output. 22:02:45 lets see what that does 22:02:50 No output. 22:02:54 `cat b 22:02:58 d 22:03:07 `rm b 22:03:07 oh so it doesn't run them side by side 22:03:08 No output. 22:03:19 quintopia, since it uses hg to track the file system 22:03:25 I wanted to see if that gave a collision 22:03:30 oerjan: rotate :: ([a],a) -> ([a],a) 22:03:30 rotate ([ip],r) = (reverse r, [ip]) 22:03:31 Occurs check: cannot construct the infinite type: a = [a] 22:03:33 When generalising the type(s) for `rotate' 22:03:39 quintopia: ais523_antiwiggle3.bfjoust vs jix_wiggle3.bfjoust: <<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<< <<<<<<<<<<<<<<<<<<<<< 22:03:42 `quote 22:03:42 `quote 22:03:42 `quote 22:03:48 103) So, I'm inside a bottle which is being carried by a robot. 22:03:49 57) ??? Are the cocks actually just implanted dildos? Or are there monster dildos and cocks? Or are both the dildos and cocks monster? 22:03:49 290) gah, why does lose keep winning? 22:03:59 ais523: and quintopia_antiwiggle3? 22:04:07 Gregor, why were you saying that. 22:04:14 hasn't processed yet 22:04:17 I am trying to think of a context and cannot. 22:04:18 ah 22:04:36 Score for quintopia_antiwiggle3: 14.4 22:04:36 Score for impomatic_sicilian_defence: 0.0 22:04:36 Score for impomatic_sicilian_defence: 0.0 22:04:36 Score for ais523_suicide: 0.0 22:04:36 http://codu.org/projects/hackbot/fshg/index.cgi/shortlog/07a7084dc9fc <-- heh the a, b one is missing 22:04:37 Score for ais523_suicide: 0.0 22:04:37 Score for impomatic_dragon_variation: 0.0 22:04:37 i don't really think the handling of -1 is necessary 22:04:37 google's logo today scares me 22:04:38 Score for ais523_antiwiggle3: 18.0 22:04:38 Score for impomatic_dragon_variation: 0.0 22:04:40 (requires js) 22:04:44 HELLO EGOBOT 22:04:59 *cough* *splutter* *hack* 22:05:02 quintopia: jix_wiggle3.bfjoust vs quintopia_antiwiggle3.bfjoust: >>>>>>>>>>>>>>>>>>>>> >>><<<<<<<<<<<<<<<<<> >>><<<<<<<<<<<<<<<<<> >>>>>>>>>>>>>>>>>>>>> quintopia_antiwiggle3.bfjoust wins 22:05:11 not a perfect victory like mine is, but still a victory 22:05:19 interesting 22:05:28 because you don't allow for polarity reversal on the decoy 22:05:35 ohhhhhh 22:05:44 mine's a modification of yours that does 22:05:49 right, that's how it could be made -1 22:05:56 oerjan your code is WRONGGG 22:06:01 oh 22:06:02 no 22:06:03 my type is wrong 22:06:04 :D 22:06:35 Deewiant: An IP advances at the end of its tick, but only moves to the next instruction at the start of its next tick, right? 22:06:35 so now the only problem is the scoreboard getting cut off on line 33 22:06:44 I am trying to think of a context and cannot. <-- you could grep logs. You might not want to. 22:06:48 !bfjoust suicide < 22:06:59 elliott_: Blargh... I forget 22:07:01 Score for ais523_suicide: 0.0 22:07:07 Gregor, why were you saying that. I am trying to think of a context and cannot. 22:07:15 -!- nescience has joined. 22:07:26 The context is Gracenotes releasing an illegal copy of a film about monster cock dildos. 22:07:26 my phone hates irc I guess 22:07:29 so now the only problem is the scoreboard getting cut off on line 33 <-- why did that happen 22:07:34 we'll have to wait for Gregor to fix that, I suppose 22:07:35 Or something :-P 22:07:37 oerjan: rotate :: ([a],a) -> ([a],a) <-- you mean rotate :: ([a],[a]) -> ([a],[a]) 22:07:38 Vorpal: my guess is some sort of timeout 22:07:43 on bytes output, perhaps 22:07:44 oerjan: MAYBE I DO 22:07:53 ais523, why are there so many? 22:07:56 elliott@elliott-MacBookAir:~/mycology$ ~/Code/shiro/shiro mycology.b98 22:07:57 shiro: Shiro/Monad.hs:81:32-60: Non-exhaustive patterns in lambda 22:08:02 Vorpal: the hill was expanded 22:08:07 ais523, why 22:08:17 to make it more interesting, when it fills up with decent programs 22:08:18 hm 22:08:21 elliott_: your patterns aren't exhausted yet! whip them some more 22:08:40 !bfjoust shudder (++-)*1000000 22:09:06 !bfjoust hmm (.)*48(>[-[++[>>>>>[>(+)*3[-]+]]]])*22 22:09:23 modifyCurrentIP :: (IP -> IP) -> Shiro () 22:09:24 modifyCurrentIP f = modifyIPs $ \(ip:xs, r) -> (f ip : xs, r) 22:09:31 Somehow, I have ended up with an empty list of IPs. 22:09:34 ais523, it seems to run too slow 22:09:35 oerjan: 22:09:40 rotate :: ([a],[a]) -> ([a],[a]) 22:09:41 rotate ([ip],r) = (reverse r, [ip]) 22:09:41 rotate ((ip:xs), r) = (xs, ip:r) 22:09:43 oerjan: when r is empty, this fails 22:09:46 Vorpal: it has lots of programs to run against, don't be impatient! 22:09:50 oerjan: consider the case where there's only one IP, ([ip],[]) 22:09:52 ais523, might have to shrink it to avoid combinatorial explosion 22:09:58 oerjan: rotate ([ip],[]) = ([],[ip]) 22:10:01 ais523, yes but I mean this current size of the board is too large 22:10:03 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]). 22:10:05 oerjan: meaning that you can't take the current ip any more 22:10:07 ais523, when it comes to speed 22:10:12 oerjan: or am i doin it rong 22:10:15 google's logo today scares me <-- try the handle on the right 22:10:20 oerjan: SCARES 22:10:21 ais523: i don't think it unrolls + and - 22:10:25 I think the issue is that the board never shrinks because it's so large that it crashes before cleaning up the old programs 22:10:27 *Vorpal 22:10:47 -!- impomatic has joined. 22:10:49 ais523: that doesn't sound right. 22:11:03 quintopia: it's an error, I think 22:11:31 `addquote The context is Gracenotes releasing an illegal copy of a film about monster cock dildos. 22:11:35 ais523: but it should clean up old programs after the crash regardless, if i read the script right 22:11:35 300) The context is Gracenotes releasing an illegal copy of a film about monster cock dildos. 22:11:42 Score for quintopia_hmm: 14.0 22:11:43 Score for Vorpal_shudder: 23.2 22:11:47 (what do you mean the quote is without context, it's right in there!) 22:11:48 quintopia: perhaps 22:11:52 it depends on what causes the crash 22:12:11 it cleaned up some, at least, and crashed on line 34 this time 22:13:33 !bfjoust sicilian_defence http://www.lichttuete.com/temp/a1.txt 22:13:44 http://www.lichttuete.com/ 22:13:47 impomatic turned German overnight. 22:14:02 google's logo today scares me <-- try the handle on the right <-- it's cool 22:14:08 lol german is such a funny language, maybe it's just because i'm pronouncing that page in a nazi voice 22:14:15 elliott_: i didn't think of that. try rotate ([ip],r) = (reverse r++[ip], []) instead 22:14:16 `quote 75 22:14:21 LICHTTÜTEN VERLEIHEN JEDEM *ABEND*!!!! 22:14:32 but dude, how much time did they spend on it 22:14:34 so hmm does beat wiggle3 and almost nothing else. needs more decoys ... 22:14:58 elliott_, German is the funniest language ever. 22:15:01 Deewiant: UNDEF: the empty string wrapped around the edge of space is empty 22:15:05 Deewiant: I'm unique. 22:15:08 !bfjoust hmm >(+)*23(-)*24(>[-[++[>>>>>[>(+)*3[-]+]]]])*22 22:15:16 Deewiant: Actually that's probably a bug isn't it. 22:15:19 elliott_: That's another of those that I think actually should be 1 space 22:15:28 75) ehird: every set can be well-ordered. corollary: every set s has the same diagram used from famous program talisman with fnord windows to cascade, someone i would never capitalize " i" 22:15:29 Deewiant: Yeah. I can special-case that, I suppose :-P 22:15:31 elliott_: I.e. it should be GOOD/BAD but I haven't bothered 22:15:35 You can say anything in an angry voice and it'll sound like you want to kill someone and beat their children to death with a rusty hammer. 22:16:04 !bfjoust attack7 (>)*5(+)*40<(-)*40(>)*4(>[+[+[+[+[-----[-[-[-[-](-)*122[-.]]]]]]]]])*21 22:16:10 Deewiant: I can't wait until you make absolute bounds GOOD/BAD, just to make Vorpal cry. 22:16:19 *exact bounds 22:16:19 Absolute bounds? 22:16:21 Score for impomatic_sicilian_defence: 18.7 22:16:22 Score for quintopia_hmm: 10.6 22:16:26 Deewiant: Exact bounds. 22:16:26 Aren't they already? 22:16:28 Deewiant: i.e. shrinking. 22:16:36 Deewiant: Oh right, they are, Vorpal just doesn't care :P 22:16:47 Deewiant: The # thing, then. 22:16:51 !bfjoust dragon_variation http://www.lichttuete.com/temp/a2.txt 22:16:52 UNDEF: # across left edge hits easternmost cell in file 22:16:52 UNDEF: # across left edge hits easternmost cell on line 22:16:54 /w/win 2 22:17:09 interesting. the decoys weren't enough, so i do worse because now i don't beat tripwires 22:17:18 Deewiant: The # thing, then. <-- I oppose since I believe the other behaviour is equally correct. 22:17:29 Score for impomatic_dragon_variation: 34.7 22:17:30 Score for ais523_attack7: 35.0 22:17:32 Vorpal: Is not. 22:17:39 elliott_, why 22:17:40 ais523_attack7.bfjoust vs myndzi_careless.bfjoust: <>>>>>>>>>><<<<<<<<<< <>>>>>>>>>>><<<<<<<<< <>>>>>>>>>>><<<<<<<<< <>>>>>>>>>><<<<<<<<<< Tie 22:17:42 Vorpal: It's only justifiable with the implementation detail of rectangle bounds. 22:17:44 myndzi: heh, I'm amused at that one 22:17:50 that's quite a precarious draw 22:17:51 Vorpal: From a Lahey-space point of view, # has only one behaviour, and it's that one. 22:17:53 !bfjoust defective http://www.lichttuete.com/temp/a3.txt 22:17:58 looks like my program favours longer tapes, there 22:18:09 !bfjoust hmm >(+)*23(-)*24(>[-[++[>>>>>[>(+)*3[[-]]+]]]])*22 22:18:17 Deewiant: UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces) 22:18:22 Deewiant: Fix't (it was actually a trivial bug in my code). 22:18:36 elliott_, shouldn't it contain a space? 22:18:55 Vorpal: Yes, it contains one space. 22:19:00 indeed 22:19:21 Score for quintopia_hmm: 11.2 22:19:21 Score for impomatic_defective: 31.6 22:19:23 !bfjoust self_aware_brainfuck http://www.lichttuete.com/temp/a4.txt 22:19:37 elliott_, what did fbbi do wrt # and edge 22:19:41 Score for impomatic_self_aware_brainfuck: 27.5 22:20:09 lolwtf 22:20:12 ooh, 48 programs on the hill now 22:20:17 !bfjoust sieg_heil http://www.lichttuete.com/temp/a5.txt 22:20:29 Gregor: sometimes report.txt cuts off around line 33; also, the size of the hill seems to change at random 22:20:48 Score for impomatic_sieg_heil: 22.2 22:21:05 ais523: The size is 47 + all programs submitted before it had time to finish, so 48 unless you submit fifty at once :P 22:21:13 I also noticed that sometimes files are saved and sometimes they are deleted, and sometimes they aren't saved. 22:21:19 That's the way it's always worked, btw, just with a different lowerbound. 22:21:20 elliott_, what did fbbi do wrt # and edge 22:21:23 Gregor: indeed 22:21:28 Probably go into an infinite loop. 22:21:32 elliott_, haha :D 22:21:36 And then segfault, continually. 22:21:42 :P 22:22:02 I believe it's official that everyone who isn't me hates http://codu.org/tmp/jungle-2011-02-08-1.ogg X-P 22:22:37 Gregor: How do I know? I have not listened to that file yet so I don't know. 22:22:38 !bfjoust nop . 22:22:42 Gregor, I will check it 22:22:52 Gregor: i need to hear superturing. y u no link. 22:22:59 Gregor, do you like it? 22:23:08 Gregor: that is amazing 22:23:10 Vorpal: I think it's a nice start :P 22:23:12 I believe it's official that everyone who isn't me hates http://codu.org/tmp/jungle-2011-02-08-1.ogg X-P <-- cool 22:23:18 Gregor, awesome start 22:23:27 quintopia: HAVE YOUR MOFO LINK http://codu.org/music/e/superturing/superturing.ogg 22:23:29 Gregor, a bit short yeah 22:23:39 Well it is just a start :P 22:23:46 !bfjoust spawn_of_evil http://www.lichttuete.com/temp/a6.txt 22:23:48 :D :D :D 22:24:09 I reaaaaally need to replace the trombone on that >_> 22:24:31 impomatic, can we wait for the previous ones to finish? 22:24:42 Score for Vorpal_nop: 7.8 22:24:43 Score for impomatic_spawn_of_evil: 33.3 22:24:46 !bfjoust in_the_dark_of_night http://www.lichttuete.com/temp/a7.txt 22:25:07 technically he did wait 22:25:09 impomatic: were you working on all those while egobot was down? 22:25:14 That's it for now... I daren't submit a8 or a9 :-( 22:25:34 Score for impomatic_in_the_dark_of_night: 29.5 22:25:37 oerjan: hmm where do I put a new IP 22:25:39 ais523: no, they're all the submissions that I messed up by submitting HTML! 22:25:42 oerjan: I want to insert an element in the zipper-queue before the current one 22:25:46 oerjan: cons to the second list? 22:25:49 impomatic: aha 22:25:53 elliott_: yeah 22:26:14 wow, defend10 is shooting back up the leaderboard 22:26:18 impomatic, that website looks very familiar! XD 22:26:24 Apart from the two which kill Egobot... (which I'm expecting to do well) 22:26:27 impomatic, that is "http://www.lichttuete.com/" 22:26:34 Deewiant: Cloned IPs get the same storage offset, right? 22:26:48 Right. 22:26:52 I'm pretty sure, anyway. 22:27:31 !bfjoust juggernaut_bitch (.)*48(>[-[++[>>>>>[>(+)*20[[-]]+]]]](+)*9)*22 22:27:44 Vorpal: I'm slowly translating it to various languages. Started with German because it covers quite a few counties :-) 22:27:45 elliott_, some fingerprints copy their IP specific data on clone. But not all 22:27:50 Score for quintopia_juggernaut_bitch: 16.9 22:27:53 Vorpal: You're kidding me. 22:27:54 elliott_, just something to considering when doing fingerprints later on 22:27:58 elliott_, no I'm not 22:28:03 Wonderful! 22:28:16 !bfjoust juggernaut_bitch (.)*48(>[-[++[>>>>>[>(+)*5[[-]]+]]]](+)*5)*22 22:28:17 Good thing my fingerprint mechanism is SO ELEGANT that I can just make it part of the class. 22:28:24 * Phantom_Hoover → sleep 22:28:24 -!- Phantom_Hoover has left (?). 22:28:29 elliott_, yeah better get that right from the start :P 22:28:32 Deewiant: Going to test concurrent execution with 2 IPs. 22:28:32 Assuming that instructions without any particular concurrency-related behaviour, such as ^>v<#, take one tick. 22:28:32 Will continue to produce textual output, so strings must work correctly where concurrency is concerned: "a b" should take 5 ticks, 'a should take 1. 22:28:34 [HANG] 22:28:35 impomatic: is that your day job? 22:28:37 Score for quintopia_juggernaut_bitch: 10.7 22:28:49 Vorpal: Actually it's pretty extensible. 22:29:02 !bfjoust juggernaut_bitch (.)*48(>[-[++[>>>>>[>(+)*20[[-]]+]]]](+)*5)*22 22:29:04 Vorpal: Since I plan to generate the instances with Template Haskell I can easily add in new bits to flip. 22:29:15 elliott_, in particular I think HRTI reset it's data. But not completely sure. 22:29:17 Score for quintopia_juggernaut_bitch: 12.0 22:29:19 I do remember some did at least 22:29:27 Deewiant: What does it mean if concurrent testing hangs? :P 22:29:42 elliott_, how will do you MODE? Will you at all? 22:29:44 elliott_: You keep rerunning the same IP, maybe? One of them goes to a >< 22:29:50 Vorpal: What does MODE do? 22:29:53 !bfjoust juggernaut_bitch (.)*48(>[-[++[>>>>>[>(+)*20[[-]]+]]]]+)*22 22:29:54 ais523: yes. Only takes a couple of hours per day though so I spend the rest of the day messing with old computers ;-) 22:30:00 oerjan: modifyIPs $ \(xs,ys) -> (xs, newIP:ys) 22:30:09 rotate ([ip],r) = (reverse r ++ [ip], []) 22:30:11 So it turns into 22:30:14 ([newIP,ip], []) 22:30:19 And then possibly 22:30:22 elliott_, it's feral. It adds mode where stuff behave differently. Like making > < ^ v "strafe" IP instead of turn it 22:30:23 Score for quintopia_juggernaut_bitch: 4.5 22:30:25 ([ip], [newIP]) 22:30:29 And so on. 22:30:30 So that looks fine. 22:30:38 elliott_, I'm pretty sure ccbi implements it 22:30:41 Lesse if I just broke everything. 22:30:43 it is catseye btw 22:30:49 !bfjoust suicide < 22:30:55 Vorpal: I plan to have some sort of feral mechanism for overloading core instructions. 22:30:58 elliott_: thought so. r is the set ip's already visited in this cycle. 22:31:03 Score for Gregor_suicide: 0.0 22:31:06 Vorpal: And hooking into the interpreter loop. 22:31:12 oerjan: right. so that's correct. 22:31:15 !bfjoust juggernaut_bitch (.)*48(>[-[++[>>>>>[>(+)*20[[-]]+]]]](+)*13>[-[++[>>>>>[>(+)*20[[-]]+]]]](-)*13)*11 22:31:15 elliott_, and isn't there one fingerprint that turn the stack into a double-ended queue 22:31:17 -!- pikhq_ has changed nick to pikhq. 22:31:19 * elliott_ tries printing the current ip 22:31:19 elliott_, yes I think there is 22:31:21 Vorpal: Seriously? 22:31:24 elliott_, yes 22:31:31 Vorpal: I'll just do that the inefficient way, because fuck that :P 22:31:33 elliott_, I don't implement it though. But CCBI does 22:31:33 Score for quintopia_juggernaut_bitch: 17.3 22:31:35 *+of 22:31:36 Gregor: it leaves the old report up while the new one generates? 22:31:42 :D 22:31:44 Deewiant: Do you implement MVRS? 22:31:48 ais523: That was the plan, but it now seems to leave the old report up forever :P 22:31:55 elliott_, you *know* the answer to that one 22:31:57 Haven't done it 22:32:00 Vorpal: "Yes"? 22:32:09 elliott_, oh I thought you said MKRY :P 22:32:11 It shouldn't be too much trouble though 22:32:20 Deewiant: Do you/will you implement MKRY? 22:32:24 How much can my bfjoust program expand to without crashing Egobot? I want to try something... 22:32:24 I can clarify the spec if you would like :D 22:32:25 No :-P 22:32:30 Deewiant: Why not 22:32:36 It'd take like 5 lines 22:32:38 It's a new level of pointlessness 22:32:54 Deewiant: As opposed to writing pages and pages of efficient wrapping code for an obscure esoteric language with almost no users 22:32:56 And it's really just a troll aimed at Mike :-P 22:33:19 Deewiant: Hey, I'm the one who defended RC/Funge :P 22:33:31 impomatic: note that ()* with matching parentheses doesn't expand 22:33:44 I think that sort of trolling nowadays is in bad taste 22:33:47 At least figuring out the AABB stuff was a fun mental exercise 22:33:52 ais523, I agree 22:33:54 !bfjoust suicide_again < 22:34:02 Deewiant, AABB? 22:34:13 Gregor: did anything change? 22:34:15 Score for Gregor_suicide_again: 0.0 22:34:26 Vorpal: Axis-aligned bounding box. 22:34:29 ais523: Doesn't seem so. 22:34:30 Deewiant, ah 22:34:33 Bleh, borklebork. 22:34:34 Deewiant: So is figuring out whether "3 to 15" is inclusive or exclusive on each end. 22:34:47 Deewiant: it must go to war with the Allied-aligned bounding box! 22:34:49 Deewiant: And whether that one instruction pushes eeeeeeeeeeeeeeee or eheheehhhhhehe. 22:34:51 elliott_: No, that's something that can be left to an RNG 22:35:01 elliott_, this is why you write (3,15] or such 22:35:02 ais523: Hah :-D 22:35:05 if that is what you mean 22:35:17 Vorpal: Because MKRY was designed to be clear and unambiguous! 22:35:18 ais523, "meh" 22:35:32 !bfjoust lol_that_script_didnt_parse < 22:35:41 Score for Gregor_lol_that_script_didnt_parse: 0.0 22:35:50 elliott_, I think that sort of trolling nowadays is in bad taste 22:35:52 !bfjoust test []->>>>>>>>>([-])*21 22:35:52 There we go. 22:36:04 !bfjoust egodeath http://www.lichttuete.com/temp/a10.txt 22:36:24 ais523: *shrug* I've never had any problem with Mike at all. :p 22:36:36 Score for nescience_test: 8.4 22:36:59 Gregor, yay it no longer blanks the scoreboard when running 22:37:01 Gregor++ 22:37:07 `run ps aux | grep e\go | grep -v report 22:37:09 5000 10296 0.0 0.1 45960 1440 ? S 22:46 0:00 su - egobot \ 5000 11850 0.0 0.1 9516 1532 ? S 22:57 0:00 /bin/bash PRIVMSG/tr_21.cmd PRIVMSG #esoteric !bfjoust egodeath http://www.lichttuete.com/temp/a10.txt \ 5000 11861 0.0 0.1 9532 1616 ? S 22:57 0:00 /bin/bash 22:37:30 Deewiant: Yay, I forgot to do all the things I need to do 22:37:30 `run ps aux | grep e\go | grep -v report | grep -v PRIVMSG 22:37:31 5000 10296 0.0 0.1 45960 1440 ? S 22:46 0:00 su - egobot \ 5000 11890 21.0 1.2 20176 12612 ? RN 22:57 0:17 ../egojoust Deewiant_maglev.bfjoust impomatic_egodeath.bfjoust \ 1208341 12162 0.0 0.0 4324 904 ? SN 22:58 0:00 grep /bin/grep ego \ 5000 20832 0.0 0.0 33884 22:37:45 yep, egodeath really does seem to give it problems 22:37:46 ais523, nice but somewhat verbose status report 22:37:52 !bfjoust test < 22:37:54 a pity, because I want to write that sort of program too 22:38:03 elliott_: Which ones 22:38:09 `run ps aux | grep PRIVMSG 22:38:12 5000 11850 0.0 0.1 9516 1532 ? S 22:57 0:00 /bin/bash PRIVMSG/tr_21.cmd PRIVMSG #esoteric !bfjoust egodeath http://www.lichttuete.com/temp/a10.txt \ 5000 11861 0.0 0.1 9532 1616 ? S 22:57 0:00 /bin/bash scmds/bfjoust bfjoust egodeath http://www.lichttuete.com/temp/a10.txt PRIVMSG 22:38:16 maybe I can figure out a way to patch the interp 22:38:17 aha 22:38:18 Deewiant: Thingsy things 22:38:31 !bfjoust egodeath < 22:38:38 lol I have avoided that kind of expansion because it's too evil 22:38:41 impomatic, won't help when running 22:38:46 Score for impomatic_egodeath: 0.0 22:38:47 Score for nescience_test: 0.0 22:38:47 Score for impomatic_egodeath: 0.0 22:38:48 `run ps aux | grep -i porn 22:38:53 ah 22:38:56 Gregor, that seems wrong 22:39:01 * oerjan whistles innocently 22:39:05 how could it score 0.0 (the original one) 22:39:08 `run ps aux | grep e\go | grep -v report | grep -v PRIVMSG 22:39:09 5000 12576 0.0 0.1 8908 1244 ? S 23:00 0:00 /bin/bash PRIVMSG/tr_60.cmd PRIVMSG #esoteric `run ps aux | grep -i porn \ 5000 12595 0.0 0.0 8908 536 ? S 23:00 0:00 /bin/bash PRIVMSG/tr_60.cmd PRIVMSG #esoteric `run ps aux | grep -i porn \ 5000 12598 0.0 0.0 8912 508 ? 22:39:10 5000 10296 0.0 0.1 45960 1440 ? S 22:46 0:00 su - egobot \ 5000 11890 19.9 1.2 20176 12708 ? TN 22:57 0:36 ../egojoust Deewiant_maglev.bfjoust impomatic_egodeath.bfjoust \ 5000 12251 17.1 1.2 20176 12584 ? RN 22:59 0:13 ../egojoust Deewiant_maglev.bfjoust impomatic_egodeath.bfjoust 22:39:13 I was thinking earlier you could add an instruction like 22:39:14 aha 22:39:14 Vorpal: cache effects 22:39:21 ais523, what? 22:39:33 "if zero break loop" 22:39:42 If you run it twice with the same name, it'll switch partway through and go crazy X_X 22:39:50 nescience, like "goto" in brainfuck XD 22:39:51 so that you don't need to do ridiculous nested [] expansions 22:40:06 Gregor, ouch 22:40:07 !bfjoust egodeath http://www.lichttuete.com/temp/a10.txt 22:40:15 I think I fixed my program :-) 22:40:17 except it'd only goto the appropriate ] 22:40:20 impomatic, let it run to end? 22:40:20 Gregor: :D 22:40:27 Gregor: omg you could make a program that wins on half 22:40:30 and one that wins on the other half 22:40:31 and swap it 22:40:36 impomatic: that was the sort of use I envisaged when I added % to the lang 22:40:38 nescience: The point of BF Joust is to stay close to Brainfuck 22:40:40 on the basis that interps could optimise it 22:40:41 nescience: Not doing that leads to FYB :P 22:40:44 elliott_, somewhat tricky to get timing right 22:40:50 elliott_, but sure could be done 22:40:56 alternatel evaluate % loops without expansion 22:41:02 elliott_: you can actually produce arbitrary control flow by making 2^n copies of your program 22:41:06 Deewiant: The IP's location after t, and the location that the created IP will start at, are the same, yes? 22:41:17 -!- oerjan has quit (Quit: Good night). 22:41:18 it seems egodeath is still killing egobot, though 22:41:26 ais523, they can't optimise it very well when you need to interleave turns 22:41:26 alternatel evaluate % loops without expansion 22:41:27 lance did thaaat 22:41:28 >_< 22:41:29 Used ( [ { something } ] something )%xxxx and hopefully it doesn't kill egobot 22:41:32 anyway it would be close to brainfuck though 22:41:33 elliott_: Er, no? One reverses, one doesn't? 22:41:42 Deewiant: ...oh :-D 22:41:44 impomatic: egojoust unrolls all %-loops 22:41:51 it may be patchable not to 22:41:51 oh that was the guy I was explaining it to I think 22:41:52 lance 22:42:07 it dedfinitely is doable 22:42:12 I worked it out before 22:42:17 my original bf joust interp expanded % loops lazily 22:42:31 nescience: that was the guy? 22:42:45 lance was the name of my bf joust interpreter, but egojoust got finished first, with the features i invented for lance 22:42:50 I remember explaining it to someone who used it 22:43:03 impomatic: try changing the 10000 to 100, to see if it helps 22:43:04 GOOD: basic concurrency seems to work 22:43:05 BAD: reflected IP didn't copy stack 22:43:05 PCahrielndt IIPP:: IIDD 0 22:43:05 1 22:43:05 BAD: parent IP executed prior to child IP 22:43:05 baADD: tBaAkDe:s ]l edsose stnh'atn w5o rtki cakts a 22:43:06 lask1eap B 22:43:08 oh, maybe I am confused. it sounded familiar like a name 22:43:08 ais523: ah, I guess I'd can't get egodeath to work then :-/ 22:43:08 : 22:43:10 GOO)OGO:elliott@elliott-MacBookAir:~/mycology$ 22:43:13 Deewiant: For your entertainment ^ 22:43:19 impomatic: I know, I'm upset for the same reason, as I wanted to do something much like that 22:43:19 elliott_: Wait'll you get to TRDS 22:43:25 baADD: tBaAkDe:s ]l edsose stnh'atn w5o rtki cakts a 22:43:27 awesome 22:43:49 elliott_, I seen this sort of things too (though not this exact one) 22:43:54 Deewiant: Whoo boy :P 22:43:55 lask1eap B 22:43:58 like flask but not lask 22:43:59 That's only two threads outputting, that's not that bad 22:44:24 impomatic: I know, I'm upset for the same reason, as I wanted to do something much like that <-- get Gregor to fix it? 22:44:31 let newIP = 22:44:31 ip{ ipNum = maxIPNum + 1 22:44:31 , ray = Ray (pos + reflection delta) (reflection delta) } 22:44:31 modify $ \fs -> fs{ maxIPNumber = maxIPNum + 1 } 22:44:33 ais523, or send him a patch! 22:44:33 it's far from a trivial fix 22:44:33 modifyIPs $ \(xs,ys) -> (xs, newIP:ys) 22:44:36 it'd make more sense to send a patch 22:44:38 Deewiant: I SEE NOTHING WRONG 22:44:40 Deewiant: Or, wai 22:44:41 *wait 22:44:46 Deewiant: Is (pos + reflection delta) wrong there? 22:44:55 Well 22:44:58 Apart from it being pos - delta >_< 22:45:04 elliott_, aren't you doing the fork bomb literal spec variant? 22:45:06 Cool, reflection is just negate now 22:45:18 Deewiant: TRDS would be easy with the time travel monad. :P 22:45:24 !bfjoust egodeath http://www.lichttuete.com/temp/a10.txt changed to 100 22:45:27 pikhq, :D 22:45:46 -!- amca has joined. 22:46:09 impomatic: at least it's running now 22:46:13 Vorpal: Not that I know of. 22:46:19 Vorpal: That's why I move the IP on spawn. 22:46:21 but it's tying with defend7, etc, so there's probably a logic error somewhere 22:46:24 Score for impomatic_egodeath: 8.4 22:46:25 Score for impomatic_egodeath: 8.4 22:46:29 elliott_, YOU MUST FOLLOW SPEC! 22:46:30 ;P 22:46:50 ais523: I use a lot of ( {} ) - maybe I can replace most of them with () () 22:46:56 Vorpal: I've long since realised that Mycology is Deewiant's sneaky tool to make everyone think the spec says what he wants it to say :P 22:47:06 elliott_: Shh! 22:47:15 Test suite my ass 22:47:18 elliott_, hah :P 22:47:21 impomatic: yep, it's probably best to use () () if there are no square brackets, and ({}) if there are 22:47:33 and (a{b}c)%n == (a)*nb(c)*n 22:47:52 elliott_, in part you are right in fact. In part it is a good test suite. Besides he did the sensible thing in many cases. 22:47:56 (though not all) 22:48:17 To be fair, when he does differently to the spec it's because the spec is downright useless. 22:48:24 Although I still think that form feeds should be read into fungespace. 22:48:48 elliott_, I think form feed handling is more consistent this way 22:48:56 Vorpal: But the spec doesn't even begin to say that. 22:48:58 elliott_, since for unefunge \n is skipped 22:49:19 Again, I'd prefer it only disagree with the spec when taking the spec's side would result in an absolutely useless language :P 22:49:20 elliott_, for befunge form feed should be skipped since form feed is for trefunge what \n is for befunge 22:49:29 Again, I'd prefer it only disagree with the spec when taking the spec's side would result in an absolutely useless language :P 22:49:42 elliott_, I read what you said and repeating it won't help 22:49:54 Again, I'd prefer it only disagree with the spec when taking the spec's side would result in an absolutely useless language :PAgain, I'd prefer it only disagree with the spec when taking the spec's side would result in an absolutely useless language :PAgain, I'd prefer it only disagree with the spec when taking the spec's side would result in an absolutely useless language :P 22:49:56 Whee 22:49:57 elliott_: Your _ annoys me 22:50:07 -!- elliott_ has changed nick to elliott__. 22:50:09 Is that better? 22:50:18 elliott__, besides it started with rc/funge incrementing the z coord in befunge mode! 22:50:19 Actually it is a bit 22:50:21 on form feed 22:50:25 Vorpal: :-D 22:51:09 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 22:51:15 elliott__, anyway do you handle the truncation-instead-of-overflow thing for & correctly yet? 22:51:26 Not yet. 22:51:50 elliott__, you might want to do it base-agnostic. Then you can reuse it when implementing the fingerprint BASE 22:52:00 $ ./egojoust defend7.bj impomatic_egodeath.bj 21 1 22:52:01 realloc: Cannot allocate memory 22:52:02 Reuse all 5 lines? 22:52:07 and that's with %100, not %10000 22:52:10 elliott__, oh right. Not C :P 22:52:27 Score for impomatic_egodeath: 42.9 22:52:39 impomatic: aha, that looks much better 22:52:41 what did you fix? 22:53:02 I blame oerjan for this 22:53:22 impomatic: Stop making things that beat monorail but lose to steamroller 22:53:31 Deewiant: Seriously though... when you spawn the new IP, you spawn it one delta backwards, right? 22:53:37 *one of your delta 22:53:40 With its delta negated. 22:53:48 Yeah, I'd say so 22:53:53 Deewiant: And then it goes to the next instruction (toNextIns, not advance) on its first tick? 22:53:57 i.e. skips over spaces. 22:54:12 Presumably 22:54:23 ais523: Increased the count to 300 which should wait long enough for some opponents some of the time. Need it higher really, not sure how high I can go. Also got rid of as many ( {} ) % n as possible 22:54:33 ah, I assumed there was a logic fix there too 22:54:39 Deewiant: So, uh, "reflected IP didn't copy stack" ... wait 22:54:40 WAIT 22:54:45 The stack is per-IP, isn't it? 22:54:48 Stop the presses!! 22:54:52 * elliott__ EPIC FUCKING FACEPALM 22:54:53 Yes, it is 22:55:01 Deewiant: Is the stack-stack per-IP? 22:55:03 Yes, it is 22:55:03 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 22:55:08 Deewiant: :D 22:55:11 Deewiant: Am I retarded? 22:55:14 Yes, it is 22:55:18 Yes, it am. 22:55:39 Deewiant: Stop laughing. 22:55:47 ahahahahahahahahahahahahaha.... 22:55:50 sorry can't stop 22:55:53 X-D 22:55:56 Vorpal: *ehehehehhehehhhehehe 22:56:02 ais523: I thought that was in poor taste 22:56:03 ais523, no I'm not him 22:56:14 elliott__: it's mocking you mocking Mike 22:56:20 ais523: Nice excuse :P 22:56:29 Mike used commas, not periods 22:56:31 Score for impomatic_egodeath: 41.7 22:56:36 Deewiant: Both 22:56:41 Mostly commas 22:56:43 But commas more often after (e|h)^n, yes. 22:57:12 -!- sixdej1 has joined. 22:57:12 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 22:58:32 Score for impomatic_egodeath: 42.6 22:58:40 -!- Mathnerd314 has quit (Ping timeout: 240 seconds). 22:59:06 !bfjoust defend11 http://sprunge.us/gdOE 22:59:08 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 22:59:08 Shiro/Monad.hs:127:0: 22:59:08 Couldn't match expected type `IP' 22:59:08 against inferred type `FungeState' 22:59:08 When using functional dependencies to combine 22:59:08 MonadState s (StateT s m), 22:59:09 arising from the dependency `m -> s' 22:59:11 That's what I like to hear! 23:00:14 -!- sixdej has quit (Ping timeout: 240 seconds). 23:00:30 impomatic: breakdown.txt's got all confused, somehow 23:01:01 I think it's writing in the middle of the file 23:01:04 seems to be running, though 23:01:47 Hmmm... I never noticed breakdown.txt before! 23:01:57 Deewiant: All concurrency tests passed. 23:01:57 -!- sixdej1 has changed nick to sixdej. 23:02:00 impomatic: It's new. 23:02:03 elliott__: Now do TRDS! 23:02:06 Deewiant: FUCK YEA, THAT WAS ACTUALLY PRETTY EASY -- NO 23:02:08 and apparently broken in a really odd way 23:02:17 Deewiant: So, I have one single BAD now (o doesn't do text mode yet). 23:02:27 Deewiant: The rest are all GOOD, or UNDEFs that you agree with. 23:02:43 real0m1.783s 23:02:43 Oh. 23:02:43 Score for impomatic_egodeath: 42.6 23:02:43 Score for ais523_defend11: 5.8 23:02:50 Deewiant: GUESS WHY IT'S SO FAST 23:02:53 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 23:02:59 elliott__: ghc -O2 instead of ghci? :-D 23:03:00 -- TODO: @ for multiple IPs 23:03:00 doCharIns '@' = io exitSuccess 23:03:03 Deewiant: ^ 23:03:06 Nope, I always use -O2. 23:03:07 Ha :-D 23:03:55 Score for impomatic_egodeath: 43.5 23:03:59 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 23:04:34 wow, defend9's shot up the leaderboard 23:04:59 Score for impomatic_egodeath: 47.0 23:05:02 it's even overtaken defend10 23:05:08 Most of impomatic's stuff appears to lose to it 23:05:10 where's the leaderboard? 23:05:25 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 23:05:34 http://codu.org/eso/bfjoust/report.txt 23:05:46 I guess the new programs are starting to be all too predictable again 23:06:24 Score for impomatic_egodeath: 43.7 23:06:28 -!- FireFly has quit (Quit: swatted to death). 23:07:13 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 23:07:24 where did mine go :( 23:07:46 !bfjoust dumdum (>(+..)*254)*100 23:08:10 Deewiant: I pass all concurrency tests and don't fail afterwards, woo 23:08:22 EgoBot is ignoring me :( 23:08:23 All you need is TRDS 23:08:27 About to test, using ROMA, whether t copies the parent IP's loaded fingerprint semantics to the child IP. 23:08:28 This is unmentioned in the specification, and thus is UNDEF. 23:08:30 Deewiant: What should I aim for 23:08:30 Score for impomatic_egodeath: 46.4 23:08:32 Score for coppro_dumdum: 19.0 23:08:53 elliott__: ccbi mycology.b98 23:09:01 Deewiant: Not biased I see 23:09:08 -!- Mathnerd314 has joined. 23:09:10 UNDEF: IVXLCDM didn't reflect: child IP has ROMA loaded 23:09:12 Agreed :P 23:09:12 elliott__: You asked for my "should aim for" on an UNDEF 23:09:13 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 23:09:19 !bfjoust defend11 http://sprunge.us/CBFF 23:09:22 elliott__: There is no unbiased answer to such a question 23:09:31 Deewiant: CCBI could fail to live up to your perfect expectations, I guess 23:09:46 elliott__: Sure, but you can't complain about bias whether I answer with ccbi or not 23:10:00 Shaddap :P 23:10:12 Okay hm. 23:10:26 Deewiant: Should I add text mode support to o or start with cleanup and fingerprints 23:10:27 Score for impomatic_egodeath: 44.6 23:10:48 elliott__: Go for TRDS if you want to do the least work 23:10:59 Score for ais523_defend11: 5.3 23:11:01 Deewiant: What kind of definition of "work" are you using here 23:11:07 -!- Sgeo has joined. 23:11:26 elliott__: I mean that you'll give up on Befunge-98 if you start doing it 23:11:34 :-D 23:11:51 !bfjoust egodeath http://www.lichttuete.com/temp/a11.txt 23:11:52 Deewiant: I do love how tiny the original TRDS spec is compared to the implementation guide. 23:11:59 Time travel, no big deal, we all know how to do that right? 23:12:11 The guide doesn't actually add that much, it mostly restates a bunch of the original 23:12:21 Deewiant: And hey -- this is my third day of constant work on it. This is *unprecedented* project commitment for me. 23:12:46 Hence I'm pushing you towards TRDS, to prevent the fourth 23:12:55 Deewiant: Do you not like Shiro? :-P 23:13:10 I'm just testing you :-D 23:13:25 Deewiant: I'll try TRDS, but not before I get everything else done :p 23:13:25 Score for impomatic_egodeath: 45.5 23:13:44 !bfjoust control http://www.lichttuete.com/temp/a12.txt 23:13:53 Deewiant: Do you implement text-mode IO in a more clever way than just preprocessing the binary mode output? 23:13:58 I want to know whether to feel bad about doing it like that. 23:14:22 I don't think there is another way 23:14:34 By "everything else", do you mean all other fingerprints? :-D 23:14:44 Because if so, that should take a while 23:15:28 Score for impomatic_control: 24.5 23:16:14 Deewiant: Pretty much, yes. 23:16:23 Deewiant: I can't imagine there's any fingerprints more difficult to implement than MVRS and TRDS. 23:16:24 !bfjoust defend11 http://sprunge.us/aTNI 23:16:37 Score for ais523_defend11: 0.0 23:16:41 Hmm 23:17:00 elliott__: IFFI? ;-) 23:17:13 Deewiant: Vorpal did IFFI and he won't do TRDS :-P 23:17:16 !bfjoust defend11 http://sprunge.us/WXfE 23:17:24 elliott__: Aye, but for Shiro in particular 23:17:40 Deewiant: First, implement INTERCAL in Haskell. Second, ... 23:17:45 -!- ais523 has quit (Remote host closed the connection). 23:17:54 elliott__: IPMD, potentially 23:18:04 What's IPMD 23:18:13 Switching between unefunge/befunge/trefunge at runtime 23:18:13 Interestingly Phucked Multiple-Dimensionality? 23:18:18 Hey, I was right. 23:18:23 ...I wasn't even trying to be right. 23:18:24 "IP dimension modes" 23:18:31 Yeah, but I got it right :P 23:18:34 Yep 23:18:45 Deewiant: Welp, I don't plan to implement 3D/1D/etc. soon. 23:18:53 Deewiant: Probably before TRDS though :-P 23:19:19 Deewiant: Ideally I'll get runtime N-dimensionality without non-negligible overhead 23:19:20 CCBI2's architecture makes IPMD enough of a pain that I probably won't do it 23:19:32 Switching sounds like a bitch though. 23:19:50 It'd have to copy over all of Funge-Space to a different structure whenever the dimensionality is switched 23:19:52 Score for ais523_defend11: 14.0 23:19:57 Which is just a bit silly 23:20:13 Rc/Funge-98 gets by because it always uses a 3D funge-space 23:20:18 Heh. 23:20:28 Maybe I'll just always use an infinite-dimensional fungespace. 23:20:32 [1,2,0,0,0,0,0,0,0,... 23:20:38 (That's a coordinate.) 23:20:52 elliott__, ooh yes you MUST do IFFI or you haven't taken the crown from cfunge :P 23:20:55 as you said 23:21:03 I'd rather take the crown from CCBI :-P 23:21:08 Or at least be throne buddies. 23:21:38 OK, time to do a bit of cleanup, and then start on fingerprints. 23:21:42 !bfjoust dont_wait http://www.lichttuete.com/temp/a12.txt 23:21:59 MACR may be tricky as well 23:22:48 -!- augur has quit (Remote host closed the connection). 23:22:49 Deewiant: Mini-Funge I doubt I'll do :P 23:22:58 That too 23:23:11 But yeah, that's not very relevant especially given the two conflicting specs 23:23:18 Eh? 23:23:25 For Mini-Funge 23:23:39 "S ('Shelled') pushes a 0 on the stack if the Perl language is already loaded (e.g. the interpreter is written in Perl). It pushes a 1 on the stack otherwise, indicating that the Perl language will be shelled when needed." 23:23:42 That is the most braindead... 23:23:55 Why's that 23:24:00 Because it's irrelevant? 23:24:10 It tells you how fast it is to call to Perl 23:24:21 You might want to do less of it if S is 1 23:24:23 Who cares about performance :P 23:24:28 -!- poiuy_qwert has joined. 23:24:31 Everybody 23:24:44 ORTH... RAGE 23:24:55 What's wrong with ORTH? :-D 23:24:58 I love how it fails to specify what the Orthogonal instructions do, you know, in case there's AMBIGUITY. 23:25:05 Oh, that :-D 23:25:06 Score for impomatic_dont_wait: 46.8 23:25:08 Just dig up the ORTH spec 23:25:10 Er 23:25:11 >>>Z?ramp if zero 23:25:11 WHAT THE FUCK IS RAMP 23:25:12 Orthogonal* 23:25:17 It's # 23:25:56 Does any fingerprint store global state independent of IPs? 23:26:02 Yes 23:26:06 >_< 23:26:07 e.g.? 23:26:16 Hmm 23:26:30 REFC 23:26:46 SUBR 23:26:48 TIME 23:26:49 TRDS 23:26:58 Deewiant: FML 23:27:07 New fingerprint: 23:27:08 HATE 23:27:09 !bfjoust dont_wait http://www.lichttuete.com/temp/a12.txt 23:27:09 TRDS shouldn't've been a surprise, at least ;-) 23:27:33 A-Z all take on random Funge-98 meanings. Every other instruction gets remapped so that it has a 1/10 chance of going to the start of program execution, 23:27:44 TRDS actually adds four fields to my FungeState struct 23:27:45 and repeating the program as if all operations that take two arguments took them in the wrong order, 23:27:58 and as if every vector popped was negated. 23:28:03 Well, three, if the tracer's compiled in 23:28:10 version (tracer) ulong tick = 0; 23:28:11 else version (TRDS) ulong tick = 0; 23:28:24 When program execution completes or the program goes into any kind of infinite loop, the instruction reflects in the present, and the stack generated by the re-run is pushed to the stack stack. 23:28:30 (ANY kind of infinite loop.) 23:28:46 Deewiant: When will it be implemented 23:28:53 Never 23:28:57 Deewiant: Why 23:29:03 Is it because you're lame? 23:29:04 Not very useful 23:29:11 Deewiant: You forgot "requires halting oracle" 23:29:19 Or is that no problem for CBBI 23:29:29 I actually didn't read the last two lines at all 23:29:41 :-D 23:29:50 Oh, and then there's the IO stuff that adds state 23:29:54 FILE, for instance 23:30:09 Deewiant, FILE handles *may* be local to an IP 23:30:14 X-D 23:30:14 it isn't really specced 23:30:19 True 23:30:23 I'm going to clean up my code and then integrate my fingerprint code. 23:30:26 But that doesn't seem like useful behaviour 23:30:49 I wonder what to split interpreter into 23:30:50 Deewiant, I planned a DS9K implementation of FILE in efunge. Adding tagged funge space values. So you can't just create that handle anyhow 23:30:52 Interpreter and CoreInstructions? 23:31:13 Deewiant, basically passing the whole FILE data required along with the value 23:31:30 Deewiant, would you hate that? 23:31:37 Deewiant, would mycology survive it? 23:31:49 I don't understand what you mean 23:31:54 -!- yorick has quit (Read error: Connection reset by peer). 23:31:56 A typed funge-space, instead of everything being a cell? 23:32:00 Deewiant, yep 23:32:04 Score for impomatic_dont_wait: 46.6 23:32:11 I don't think that's valid 23:32:11 Vorpal: That disobeys the spec. 23:32:13 Any questions? 23:32:19 elliott__, not the FILE spec 23:32:28 Vorpal: No, but it wouldn't be a Funge-98 implementation. 23:32:49 elliott__, but FILE is of course feral in this model! 23:32:53 I guess he could argue that his FILE is feral and messes up all other instructions 23:32:59 Deewiant, quite :P 23:33:08 Feral != breaks the spec 23:33:11 anyway it is too much work to do it that way 23:33:14 Feral == obeys the spec but breaks all kinds of sanity 23:33:17 elliott__, feral *might* break the spec 23:33:28 Really? So FNGR is just feral, not broken? 23:33:30 I don't think so. 23:33:31 elliott__, it is perfectly legal for it. But only when in use 23:33:32 Yes 23:33:36 MODE is similar 23:33:45 elliott__, correct since it is now defined to enter a separate mode 23:33:52 MODE changes how just about every instruction works 23:33:57 yeah 23:34:14 And that's even a Cat's Eye fingerprint, so you can't make too strong an argument against it ;-) 23:34:18 How many fingerprints did HsFunge implement? 23:34:24 None, I believe 23:34:27 Or maybe NULL and ROMA or so 23:34:35 Ha, Shiro is going to be like ten times better 23:34:41 Deewiant: How fast did it run Mycology? :-P 23:34:49 Okay, scratch that 23:34:54 !bfjoust dont_wait http://www.lichttuete.com/temp/a12.txt 23:35:07 I'm scratching it 23:35:23 HRTI MODE MODU NULL ORTH PERL REFC ROMA TOYS BASE CPLI DATE DIRF EVAR FILE FING FIXP FPDP FPSP FRTH IIPC IMAP INDV SETS STRN SUBR TIME JSTR 23:35:36 Deewiant: "None" 23:35:41 $ wc -l Fingerprints.hs 23:35:41 1376 Fingerprints.hs 23:35:45 I thought it was none :-P 23:35:47 Deewiant: How fast did HsFunge pass mycology? Like, without fingerprints :P 23:35:51 Deewiant: Fingerprints.hs? Pfft 23:35:55 I see he doesn't use my amazing system 23:36:04 I don't see a way of disabling fingerprints 23:36:07 $ ./Main --help 23:36:07 Main: --help: openFile: does not exist (No such file or directory) 23:36:14 Deewiant, anyway I argue that doing 0,1,2 and such for normal values but then doing surprises like {0,} for a file handle is perfectly okay. If funge code tries to output or increment or anything then the first member of the tuple gets modified. But the whole tuple is copied, written with p, fetched with g and so on 23:36:32 Deewiant: With fingerprints, then? 23:36:34 Deewiant, might give all open files the value 0 this way 23:36:36 Deewiant, :D 23:36:45 Main: mycology.b98: hGetContents: invalid argument (Invalid or incomplete multibyte or wide character) 23:36:49 Guess it doesn't run it at all 23:36:57 Maybe it will with a recompile from 6.12 23:36:57 Deewiant: Designed for older GHC 23:37:03 Deewiant: Try 6.8 23:37:10 It's built in 2010-05 23:37:10 Deewiant: You need a pre-Unicode IO system 23:37:18 elliott__, why don't you your self 23:37:24 yourself* 23:37:25 Vorpal: Umm, because he's the one who wants to test HsFunge 23:37:27 ah 23:37:30 Well 23:37:32 I want to know the answer 23:37:34 But he's the one doing it 23:37:36 s/ $// 23:37:36 elliott__, :P 23:37:45 Score for impomatic_dont_wait: 49.1 23:37:51 impomatic: congratulations 23:38:04 elliott__: I thought handles defaulted to latin1? 23:38:15 Deewiant: Nope, UTF-8 23:38:26 Deewiant: Try hSetBinaryMode fileHandle True 23:38:30 Deewiant: Or s/openFile/openBinaryFile/ 23:38:33 :t readBinaryFile 23:38:34 Not in scope: `readBinaryFile' 23:38:38 You might have to make it manually open the file. 23:38:42 If it uses readFile. 23:38:49 runFile file = readFile file >>= runString 23:39:08 Deewiant: runFile file = do fh <- openBinaryFile file; poop <- hGetContents fh; runString poop 23:39:12 That's a bit unfair, since it loads lazily 23:39:19 Deewiant: runFile file = do fh <- openBinaryFile file; poop <- hGetContents fh; print poop; runString poop 23:39:20 There 23:39:24 readFile loads lazily 23:39:29 Deewiant: Oh, right 23:39:32 The first then 23:39:39 elliott__: thanks :-) It was supposed to score worse than egodeath though to prove egodeath is effective :-( 23:40:41 runFile file = withBinaryFile file ReadMode (hGetContents >=> runString) 23:40:53 Deewiant: Deewiant "Fancy McFancyPants" Deewiant 23:41:03 elliott__, wtf is >=> 23:41:08 :t (>=>) 23:41:09 forall a (m :: * -> *) b c. (Monad m) => (a -> m b) -> (b -> m c) -> a -> m c 23:41:15 One of the 2398723498723947239479234 functor-applicative-or-monad combinators. 23:41:19 elliott__, :D 23:41:27 elliott__: 2.3 seconds and it crashes in the FING test 23:41:31 Vorpal: One exists for every purpose except the one thing you're trying to accomplish now. 23:41:33 elliott__, I believe that count was a bit on the low side 23:41:36 Deewiant: Gut Fingerprints.hs :P 23:41:51 4.5 seconds after removing *.tmp 23:42:29 Deewiant: How is it faster than me. 23:42:38 Deewiant: Does it shrink bounds? 23:42:42 -!- Ilari_antrcomp has quit (Ping timeout: 260 seconds). 23:42:42 -!- Ilari has quit (Ping timeout: 260 seconds). 23:42:48 No fingerprints: 4.12 seconds 23:42:53 Deewiant: Does it shrink bounds? 23:42:57 elliott__, does >=> have some descriptive name? I'm still not that good at figuring out what stuff does from the type signature alone 23:43:08 There's noticeable lag between BAD: form feed reflects and BAD: after spacing top-left corner, y should report greatest point as ( 182 910 ), not ( 181 910 ) 23:43:21 Vorpal: (someMonadicFunction >=> someMonadicFunctionTakingTheFirstOne'sResult) inputToFirstOne 23:43:27 --> result of second function 23:43:40 Deewiant: Good, so it's shit and Shiro is 10x better 23:43:42 It also says That the greatest point, relative to that point, is ( 181 910 ) BAD: should have been ( 183 911 ) 23:43:49 Ha ha ha 23:43:50 It's SHIT 23:43:54 Worst shit in the history of: shit 23:43:56 UNDEF: # across left edge skips easternmost cell in file, tut-tut 23:43:58 elliott__, I get "not in scope" for >=> locally 23:44:03 :i (>=>) 23:44:03 Vorpal: import Control.Monad 23:44:07 elliott__, aha 23:44:12 Deewiant: God 23:44:16 Deewiant: It's like someone decided 23:44:18 HEY I'MMA MAKE THE WORST FUNGE 23:44:20 AND THEN DID IT 23:44:20 SHIRO 23:44:21 !bfjoust Nyarlathotep http://www.lichttuete.com/temp/a12.txt 23:44:22 SHIRO IS WHAT YOU NEED 23:44:22 -!- augur has joined. 23:44:24 FOREVER SHIRO 23:44:28 !bfjoust dont_wait < 23:44:59 impomatic, dont_wait was good 23:45:01 impomatic, why remote it 23:45:21 Vorpal: the name was rubbish, just renaming it ;-) 23:45:35 impomatic, also is "Nyarlathotep" a pharaoh or something? 23:45:41 it sounds like it might be 23:45:56 A friend of Cthulhu :-) 23:46:00 oh 23:46:09 Having an Egyptian-sounding name does not one a pharaoh make 23:47:24 Totally does 23:47:25 !bfjoust hopscotch (>[(>[([>[-]])*31])*31])*31 23:47:55 this is hard to mess about with on a phone! 23:47:59 Strangely enough Nyarlathotep is known as the Black Pharaoh in one of the books :-) 23:48:38 Woo, Shiro is becoming a real program 23:48:42 They all have a billion names so I'm hardly surprised 23:48:43 i.e. main is moving out of Interpreter.hs 23:48:44 impomatic, it *sounds* very Egyptian 23:48:53 I'm even giving it 23:48:54 wait for it 23:48:56 COMMAND LINE ARGUMENTS 23:48:58 HOLY SHIT 23:49:14 -!- Ilari has joined. 23:49:16 elliott__, fix the y stuff then! 23:49:18 night → 23:49:25 Vorpal: It does the environment. 23:49:28 Score for impomatic_Nyarlathotep: 49.1 23:49:28 Score for impomatic_dont_wait: 0.0 23:49:29 elliott__, tell me when you put it in version control 23:49:31 It'll do arguments after this cleanup is through. 23:49:32 Score for nescience_hopscotch: 20.7 23:49:34 night! 23:49:35 Vorpal: That won't happen until 1.0. 23:49:36 -!- Ilari_antrcomp has joined. 23:49:41 I'm like Deewiant in that respect :P 23:49:42 wtf 23:49:59 I didn't version control CCBI until 1.0.4a 23:49:59 elliott__: you aren't registered 23:50:03 !bfjoust hopscotch (>[(>[([>[[-]]+])*31])*31])*31 23:50:15 And I didn't save old zips so I don't have anything older 23:50:18 Score for nescience_hopscotch: 28.0 23:51:22 Deewiant: DING DING DING NEW DEPENDENCY 23:52:49 elliott__: Does http://tar.us.to:1234/forks.b98 work? 23:53:02 Deewiant: Let me finish moving Main out first :P 23:53:06 Deewiant: I'm scared though. 23:53:27 Deewiant: How long will it take with a slow-ish t? 23:53:29 !bfjoust hound_of_tindalos (-)*999999(>)*9([-]>)*21 23:53:42 elliott__: If that takes long, good luck with Fungicide :-D 23:53:56 Spent: 21 ticks 23:53:56 Encountered: 292 instructions 23:54:16 Deewiant: Oh, that should work then. 23:54:29 Let me get a command-line first :P 23:55:18 -!- joo has joined. 23:55:22 Score for impomatic_hound_of_tindalos: 17.3 23:57:07 Module imports form a cycle for modules: 23:57:07 Shiro.Instructions (./Shiro/Instructions.hs) 23:57:07 imports: Shiro.Interpreter 23:57:07 Shiro.Interpreter (./Shiro/Interpreter.hs) 23:57:07 imports: Shiro.Instructions 23:57:09 Gah, that isn't allowed? 23:57:26 You need .hs-boot files 23:57:31 Or preferably, a lack of cycles 23:57:39 Deewiant: What should I name the file containing functions the interpreter uses, like nextPos, wrap, advance, reflect, but not the actual interpret function? 23:57:46 Utils 23:57:50 Deewiant: >_< 23:57:51 Okay. 23:59:40 Deewiant: Yay, I have an actual circular dependency.