00:07:04 @pl do x <- pop; push (if x == 0 then 1 else 0) 00:07:04 (line 1, column 12): 00:07:05 unexpected ";" 00:07:05 expecting letter or digit, variable, "(", "`", "!!", ".", operator or end of input 00:07:08 @undo do x <- pop; push (if x == 0 then 1 else 0) 00:07:08 pop >>= \ x -> push (if x == 0 then 1 else 0) 00:07:11 @pl pop >>= \ x -> push (if x == 0 then 1 else 0) 00:07:11 push . flip (flip if' 1 . (0 ==)) 0 =<< pop 00:07:20 @pl pop >>= \ x -> push (FOOP x) 00:07:20 push . FOOP =<< pop 00:07:26 :-D 00:07:26 Perl? 00:07:32 Lymia: Haskell. 00:07:36 Deewiant: It's how you selectively disable point-freeing! 00:07:39 PRETEND IT'S A CONSTRUCTOR 00:07:43 What does "pl" have to do with "Haskell 00:07:48 I know, I was just amused by "FOOP" 00:07:51 Lymia: Point-free code. Or point-less. 00:08:07 > fromEnum False 00:08:08 0 00:08:10 > fromEnum True 00:08:11 1 00:08:16 > fromEnum . not . toEnum 00:08:17 Overlapping instances for GHC.Show.Show 00:08:18 (GHC.T... 00:08:23 > (fromEnum . not . toEnum) 34 00:08:25 *Exception: Prelude.Enum.Bool.toEnum: bad argument 00:08:27 Aww. 00:08:29 HA HA 00:08:31 > (fromEnum . not . (==0)) 34 00:08:33 1 00:08:37 > (fromEnum . not . (/= 0)) 34 00:08:39 0 00:08:40 > (fromEnum . not . (/= 0)) 1 00:08:42 0 00:08:42 > (fromEnum . not . (/= 0)) 0 00:08:44 1 00:08:45 You can just drop the not, you know. 00:08:48 Oh yeah. 00:09:00 doCharIns '!' = push . fromEnum . (== 0) =<< pop 00:09:02 :D 00:09:09 !bfjoust evob +->>>--+.-..<>>-+--<>->-+-..--.->+++>>++++>>+>>(>--<>[+])*51-+.><++.+----. 00:09:15 Score for Lymia_evob: 6.1 00:09:41 Couldn't match expected type `Value' against inferred type `Int' 00:09:41 In the second argument of `(.)', namely `fromEnum . (== 0)' 00:09:41 In the second argument of `(>>=)', namely 00:09:41 `push . fromEnum . (== 0)' 00:09:41 In the expression: pop >>= push . fromEnum . (== 0) 00:09:48 @hoogle Enum a => a -> Int32 00:09:48 Prelude pred :: Enum a => a -> a 00:09:48 Prelude succ :: Enum a => a -> a 00:09:48 Prelude id :: a -> a 00:09:50 >_< 00:09:52 @hoogle Enum 00:09:52 Prelude class Enum a 00:09:52 Prelude enumFrom :: Enum a => a -> [a] 00:09:52 Prelude enumFromThen :: Enum a => a -> a -> [a] 00:09:56 @hoogle fromEnum 00:09:56 Prelude fromEnum :: Enum a => a -> Int 00:10:33 * elliott just writes enumValue instead 00:10:51 ?ty fromIntegral . fromEnum 00:10:52 forall b a. (Num b, Enum a) => a -> b 00:10:59 Yep. 00:11:02 That's the implementation. 00:11:04 Toggle stringmode: NNNO 00:11:14 Deewiant: Let me guess: # isn't as simple as pos <- pos + delta. 00:11:27 It should be, if your wrapping stuff works sensibly. :-P 00:11:30 YAY 00:14:57 HEY DEEWIANT 00:15:00 IS REMAINDER MODULO OR REMAINDER 00:15:08 Undef, I think. 00:15:15 Oh, remainder. 00:15:18 the % "Remainder" instruction, which pops two values, divides the second by the first using integer division, and pushes the remainder, of those. Remainder by zero is subject to the same rules as division by zero, but if either argument is negative, the result is implementation-defined. 00:15:25 I forgot that there was a long table too. 00:15:57 !bfjoust evoc ...->-+----->+..>---->-+>--+>-..--.-.->->>>---+>+...(>---.-[+])*54->->>>+.>.><. 00:16:03 Score for Lymia_evoc: 10.9 00:16:47 !bfjoust evoc_optimized ->----->+>---->>->----->->>>-->+(>[+])*1024 00:16:50 Score for Lymia_evoc_optimized: 2.0 00:17:39 !bfjoust evoc_optimized ->----->+>---->>->----->->>>-->+(>[+].)*1024 00:17:43 Score for Lymia_evoc_optimized: 1.7 00:17:46 >.< 00:18:17 Lymia: that actually looks like a decent early program 00:18:29 It's generation 2200 or something. 00:18:37 that's the sort of thing we were coming up with near the start of BF Joust play 00:18:39 you really need breeding, I think 00:18:44 Lymia: you could try it on an old hill 00:18:49 they're available via hg 00:18:50 the only reason it's doing badly on our hill is that all the programs are designed to beat that sort of thing 00:18:54 elliott, that might help. 00:18:57 ais523, heh. 00:19:00 Lymia: although not the report, just the program set 00:19:46 > (-3) rem 2 00:19:47 -3 00:19:51 > (-3) `rem` 2 00:19:52 -1 00:20:00 heh, how on earth did that first one parse 00:20:01 :t (-3) rem 00:20:02 forall t a. (Num ((a -> a -> a) -> t), Integral a) => t 00:20:05 :D 00:20:07 that's amazing 00:20:14 > rem :: Int 00:20:15 Couldn't match expected type `GHC.Types.Int' 00:20:15 against inferred type ... 00:20:21 :t \pop -> flip rem <$> pop <*> rem 00:20:23 forall a. (Integral (a -> a), Integral a) => (a -> a -> a) -> a -> a -> a 00:20:26 argh 00:20:27 :t rem + rem 00:20:28 forall a. (Integral a) => a -> a -> a 00:20:30 :t \pop -> (flip rem) <$> pop 00:20:31 forall a (f :: * -> *). (Integral a, Functor f) => f a -> f (a -> a) 00:20:58 @hoogle f (a -> b) -> f a -> f 00:20:59 Prelude (.) :: (b -> c) -> (a -> b) -> a -> c 00:20:59 Data.Function (.) :: (b -> c) -> (a -> b) -> a -> c 00:20:59 Prelude ($) :: (a -> b) -> a -> b 00:20:59 @hoogle f (a -> b) -> f a -> f b 00:20:59 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 00:21:00 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 00:21:01 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 00:21:05 :t \pop -> flip rem <$> pop <*> pop 00:21:06 forall a (f :: * -> *). (Integral a, Applicative f) => f a -> f a 00:21:08 yay! 00:21:21 I really need to learn Haskell. 00:21:21 :v 00:21:23 I should probably have a "binary rem" for that. 00:21:35 Well... 00:21:41 More haskell than "general syntax" 00:24:25 Deewiant: &~ should give 42 and 10 when provided with "42\n", right? 00:24:33 I'd try Mycology but I'm nowhere near running it yet. 00:24:36 i.e. does & consume a newline? 00:24:38 I forget. 00:24:53 What testsuites exists for other languages? 00:25:17 Deewiant: Ah, I see, you want me to get it to Mycology-level before asking questions :-P 00:25:29 :t getLine 00:25:30 IO String 00:25:47 No, I actually do forget. I spent some time messing with that. 00:25:58 Right. 00:26:01 -!- Behold has quit (Remote host closed the connection). 00:26:04 I have a feeling the \n actually is consumed. 00:29:01 hg clone *repo* right? 00:29:03 >> 00:29:44 Lymia: yep. 00:29:51 !bfjoust evod +>((+>.--+<)*6<+>+>+>-.--.>+<+>)*3<>.<<>>.+>--+.++<.->+>>+><>(>--[+])*55>+<>->.+>++ 00:29:55 Score for Lymia_evod: 9.3 00:30:05 9.3 isn't a bad score. 00:30:15 Hmm.. 00:30:16 Actually. 00:30:21 for so little thinking time (a couple thousand generations aren't much) 00:30:28 after all, it has no good strategies 00:30:31 just really basic one 00:30:32 s 00:30:48 Currently, it's picking the best fighter from within itself. 00:30:59 I could make it also count how well it does on the current hill for scoring. 00:31:13 Hey Deewiant. 00:31:14 ' 00:31:15 ^ full fungespace 00:31:20 That pushes the character ' forever, right? :D 00:31:25 No, it pushes a space 00:31:35 Conceptually, your program is embedded in an infinite sea of spaces 00:31:50 And ' fetches the next cell, not instruction. 00:32:39 Deewiant: Oh, I see. 00:32:42 Deewiant: So no wrapping there. 00:32:51 so 00:32:52 doCharIns '\'' = advance *> (push <$> peekHere) 00:32:54 Is wrong. 00:32:55 But I can fix it! 00:33:46 Note that this is also why # over the edge of the program shouldn't skip anything on the other side, IMO. (Mycology calls it an UNDEF because I haven't bothered to change it, and Vorpal might get pissed at me.) 00:34:24 doCharIns '#' = advance 00:34:26 Hmm. 00:34:37 Deewiant: You might be right. I'll add that as a TODO. 00:34:47 I have "advance" and "go to next instruction" as separate functions. :-) 00:36:16 -!- cheater- has joined. 00:36:22 doCharIns '\'' = do 00:36:23 IP (x,y) (dx,dy) <- ip <$> get 00:36:23 push =<< peek (x+dx, y+dy) 00:36:23 advance 00:36:27 This is easier than I expected. 00:36:49 Redundant computation of x+dx and y+dy!! 00:37:02 Deewiant: OH NOES 00:39:35 -!- cheater00 has quit (Ping timeout: 240 seconds). 00:39:45 @do flip f <$> pop <*> pop >>= push 00:39:45 do { a <- flip f <$> pop <*> pop; push a} 00:39:47 Yay 00:40:09 Deewiant: Hang on, what happens on underflow/overflow? 00:40:10 Use fmap and ap and @unpl 00:40:20 Please tell me I don't have to saturate or something. 00:40:22 Also, what do you mean? 00:40:27 I was just checking whether it parsed right. 00:40:40 I thought you were wondering whether the <$> and <*> do the right thing 00:40:45 Nope. 00:40:48 I knew that part was right :) 00:40:50 What do you mean, underflow/overflow 00:41:22 Deewiant: i.e. (2^32 - 1) + 1 00:41:26 46.Output Integera writeint(a) 00:41:28 Bet that means no newline 00:41:33 It means space 00:41:37 Deewiant: ...Seriously? 00:41:43 Yes, and that's specced 00:41:46 Oh :P 00:41:49 I forgot this has an actual spec. 00:42:20 But, under/overflow is, if not specced, either UNDEF or universally enough agreed to be 2's complement that it might as well be defined 00:42:25 Right. 00:42:40 [[These instructions will act as r does, should the standard output fail for any reason.]] 00:42:42 TODO: That. FML. 00:43:06 `catch` \(_ :: IOException) -> reflect 00:43:27 No output. 00:43:34 NO RLY 00:44:17 Is it worth it to uninstall OOo and install LibreOffice? 00:44:37 Too late anyway, but still 00:45:12 Sgeo: it'll make basically no difference either way atm 00:45:12 `run shut up 00:45:13 No output. 00:45:17 `run make love 00:45:20 No output. 00:45:21 they'll be a bit more different in a bit 00:45:23 :< 00:45:24 Deewiant: Now I get to write ;. 00:45:32 Deewiant: I'm really scared of k because I'll have to handle ; too :P 00:45:37 Maybe I should have a nextSemicolon function. 00:45:54 Deewiant: behaviour of fungespace ";" = ? 00:45:57 "goto next instruction" as I said :-D 00:46:03 Same as fungespace "", infloop 00:46:39 !bfjoust evoe >>((+<->>->>.>>)*1.+<->>+->[].>+.>+.)*1-+<+<+>..>-...+>>.+--->>-(.+>[+])*61..<-..>.--.< 00:46:49 Score for Lymia_evoe: 0.4 00:47:01 Lv 00:47:02 :v 00:47:10 * Lymia kills the evolver process 00:49:13 Deewiant: Fingerprint draft: Floating-point delta 00:49:21 "would you mind letting me in?" "Yeah, sure." and then they let them in, just after saying they'd mind... 00:49:22 Fuck you, too 00:49:47 "20 minutes" "You've got 10" 00:49:53 Deewiant: :D 00:49:56 I wonder how many managers get ideas from that sort of thing 00:50:15 * Sgeo answers the OOo uninstaller survey. I just put "LibreOffice" for everything 00:50:20 Err, don't [ and ] actually rotate by 45 degrees? 00:50:25 Wait, no. 00:50:28 They just swap dx and dy. 00:50:33 ...no they don't. 00:50:45 Turn left negates... 00:50:47 Oh my god Deewiant. 00:50:49 I've become retarded. 00:51:05 90 degrees, not 45. 00:51:12 "become", you say 00:51:29 olsner: >_> 00:51:41 If you can't do it in your head, get a piece of paper, draw triangles and compute sines and cosines. :-D 00:51:48 Deewiant: :D 00:53:46 Deewiant: it sets dx = -dy, dy = dx, right? sorry i'm not going to get out a piece of paper, that would be surrendering to my 1am-brain 00:53:50 which is like my normal brain but _even stupider_ 00:54:15 That's ] 00:54:19 :D right 00:54:38 [ just swaps dx and dy 00:54:41 it's a stupider brain, but it would have paper 00:54:42 unless i'm really mistaken 00:54:49 [ does the converse 00:54:57 oh 00:55:02 dx = dy, dy = -dx 00:55:03 right 00:55:14 -!- jcp has quit (Excess Flood). 00:56:56 @undo do x <- pop; y <- pop; push x; push y 00:56:56 pop >>= \ x -> pop >>= \ y -> push x >> push y 00:57:02 @pop pop >>= \ x -> pop >>= \ y -> push x >> push y 00:57:02 Maybe you meant: do map pl yow 00:57:04 @pl pop >>= \ x -> pop >>= \ y -> push x >> push y 00:57:04 (pop >>=) . (. push) . (>>) . push =<< pop 00:57:06 How long does hg clone usually take? 00:57:10 Lymia: not long 00:57:11 few minutes 00:57:15 :/ 00:58:05 elliott: @. pl undo 00:58:06 -!- jcp has joined. 00:58:13 Deewiant: FANCY SCHMANCY 00:59:34 @undo do x <- pop; if x == 0 then go east else go west 00:59:34 pop >>= \ x -> if x == 0 then go east else go west 00:59:38 @pl pop >>= \ x -> if x == 0 then go east else go west 00:59:38 flip (flip if' (go east) . (0 ==)) (go west) =<< pop 00:59:40 :D 01:00:11 @pl pop >>= \x -> go (if x == 0 then east else west) 01:00:12 go . flip (flip if' east . (0 ==)) west =<< pop 01:00:18 nice pointless soupo 01:00:24 *soup 01:00:49 @pl pop >>= \x -> go ([east,west] !! (fromEnum (x /= 0))) 01:00:49 go . ([east, west] !!) . fromEnum . (0 /=) =<< pop 01:01:38 aww, was just about to suggest the (... !!).fromEnum solution 01:03:48 :D 01:04:01 lambdabot could replace everyone at Galois 01:04:17 maybe lambdabot is just galois' shared irc account 01:04:19 Deewiant: Does h do nothing or reflect in Befunge 01:04:25 reflect 01:04:26 "not available in" 01:04:27 Right. 01:04:41 the only things that do nothing in Befunge are things specifically specced to do nothing 01:04:51 Deewiant: So is j a minetrap like k is? 01:04:54 I guess not. 01:05:09 j is just like a generalized # 01:05:23 Right. 01:05:27 :t replicateM 01:05:28 forall (m :: * -> *) a. (Monad m) => Int -> m a -> m [a] 01:05:37 doCharIns 'j' = pop >>= flip replicateM advance 01:05:37 :D 01:06:34 ?ty replicateM_ 01:06:35 forall (m :: * -> *) a. (Monad m) => Int -> m a -> m () 01:07:10 -!- hagb4rd has quit (Ping timeout: 240 seconds). 01:12:38 Indeed. 01:12:49 Shiro/Interpreter.hs:127:16: 01:12:49 Couldn't match expected type `()' against inferred type `FM ()' 01:12:49 In the first argument of `(<$>)', namely `flip poke' 01:12:49 In the first argument of `(<*>)', namely `flip poke <$> pop' 01:12:50 what 01:13:02 Sleep -> 01:15:59 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 01:16:25 @hoogle (a -> b) -> m a -> m b 01:16:26 Data.Traversable fmapDefault :: Traversable t => (a -> b) -> t a -> t b 01:16:26 Prelude fmap :: Functor f => (a -> b) -> f a -> f b 01:16:26 Control.Applicative (<$>) :: Functor f => (a -> b) -> f a -> f b 01:16:37 @hoogle m (a -> b) -> m a -> m b 01:16:37 Control.Applicative (<*>) :: Applicative f => f (a -> b) -> f a -> f b 01:16:38 Control.Monad ap :: Monad m => m (a -> b) -> m a -> m b 01:16:38 Control.Applicative (<**>) :: Applicative f => f a -> f (a -> b) -> f b 01:17:00 wtff 01:18:22 yes, there are at least 3 functions for doing that :) 01:19:19 115sStore Character/98c store-funge-space(position+delta,v) 01:19:20 What? 01:19:22 TODO: Figure out what. 01:19:53 The u "Stack under Stack" instruction pops a count and transfers that many cells from the SOSS to the TOSS. It transfers these cells in a pop-push loop. In other words, the order is not preserved during transfer, it is reversed. 01:19:57 *eurgh* 01:22:55 119wCompare/98/2Da b if (a>b) ']' elsif (a lol 01:32:26 $ runhaskell Shiro/Interpreter.hs 01:32:26 Interpreter.hs: WTF? Executed 32. (Infinite wrapping loop?) 01:32:27 on sanity.bf 01:32:28 TODO: fix 01:32:29 for now: sleep 01:32:59 TODO: sleep 01:33:18 good me, now I can postpone sleep for however long I want, it's on the TODO 01:34:57 :D 01:34:58 -!- elliott has left (?). 01:39:45 -!- variable has quit (Quit: Daemon escaped from pentagram). 01:42:42 -!- variable has joined. 02:10:20 -!- Lymia_ has joined. 02:10:45 -!- ais523 has quit (Remote host closed the connection). 02:11:20 -!- Lymia has quit (Disconnected by services). 02:11:21 -!- Lymia_ has changed nick to Lymia. 02:11:21 -!- Lymia has quit (Changing host). 02:11:22 -!- Lymia has joined. 02:25:12 -!- poiuy_qwert has joined. 02:26:00 !bfjoust darwin-49-0 +>((-.><-<>->+)*1+<-.>+->[].++.>)*3-..-+>+++>->..---..+->>>--(><>-[+])*58+.>+-.>>->>-.< 02:26:56 Score for Lymia_darwin-49-0: 1.2 02:30:13 Lymia: did you remove ()* yet? 02:30:25 ? 02:31:02 for evolving programs 02:36:32 -!- TLUL has quit (Read error: Connection reset by peer). 02:36:58 -!- TLUL has joined. 02:45:45 -!- sftp has quit (Ping timeout: 250 seconds). 02:49:13 !bfjoust darwin-151-0 +>(-(---<-+>->+)*1+<-->->.->[].++.>)*2>-.>-+<>..>->>+.-++..>-.>---(><>(-)*5[+])*57+<>>-+.<<>>>+.< 02:49:17 Score for Lymia_darwin-151-0: 5.9 02:50:17 what does the number mean? fitness score? 02:51:40 Generation. 02:51:48 The second is ranking within the generation. 02:54:36 My music build setup is now 100% repeatable :) 02:54:56 wat 02:55:10 Lymia: so 0 is the highest ranking? 02:55:16 When I type 'make', I get bit-per-bit identical FLAC files every time. 02:55:34 did the bits wiggle before? 02:55:46 Not a lot, but enough *shrugs* 02:55:56 Not noticeably of course, but I want `cmp` to say they're the same :P 03:02:38 I hate hate hate the way everyone teaches percents 03:02:52 The formula for XYZ is whatever% times this divided by 100 03:03:38 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 03:03:38 huh 03:03:46 i do not know what you are talking about 03:03:56 and i don't remember ever being taught percent 03:04:01 certainly not in college 03:04:53 Or is it *100? I don't even remember, because it's such a STUPID way to think about things with percents 03:05:15 -!- poiuy_qwert has joined. 03:08:05 !bfjoust darwin-232-0 +>(.-(---<.+>-->+)*1+<--<>->.>>[]-.->>)*1>-.>++<>...->>+..-+.+->>.>---(+>(-)*9[+])*61+<>.<>.+<+>><-. 03:08:15 Score for Lymia_darwin-232-0: 11.8 03:09:45 wow...they really are improving 03:10:25 Are their only competitors themselves? 03:10:45 The hill too. 03:10:53 Ah, good. 03:13:36 but that one answers my question about getting rid of ()* in the evolution code :P 03:14:38 I'll do that sometime later 03:14:38 =p 03:14:39 Maybe. 03:15:16 !bfjoust darwin-264-0 .>(-(----<.+>-.->+)*1+<--<>->.->[].--<>)*1>-.>-+<><..->>+..++.+<>>>>---(.>(-)*9[+])*58.<>...+<+>>+-. 03:15:24 Score for Lymia_darwin-264-0: 18.6 03:15:33 !bfjoust darwin-264-7 .>(-(----<.+>-.->+)*1+<--<>->.->[].--<>)*1>-.>-+<><..->>++..++.+<>>>--+(+.>(-)*9[+])*58.<>...+<+>>+-. 03:15:54 Score for Lymia_darwin-264-7: 14.4 03:18:49 you doing any crossover? 03:19:43 No. 03:21:46 Gregor, hill is being climed. 03:21:47 =p 03:21:49 climbed* 03:22:23 so it's purely "take the top performers on each generation and mutate them slightly"? 03:22:27 Yes. 03:22:34 -!- TLUL has changed nick to TLUL|afk. 03:23:23 you make me want to write a bfj ga and try to do it better >_> 03:23:48 what's the mutation rate? 03:26:21 I don't exactly have a single number for mutation. 03:26:31 quintopia, if you want to try, good luck. 03:26:32 =) 03:26:41 It'd be an intresting compitition. 03:27:58 i'd feel bad about it tho because i could be using that time working on an assignment i'm already way behind on anyway... 03:32:50 !bfjoust darwin-341-0 ++>(-(---<---.>-->-)*4>-..<.+-<<-+-+-<-)*4+++>>>->..+<>+++>--+--.>>---(>(-)*6[+])*58>+>..-->++<.+-< 03:32:55 Score for Lymia_darwin-341-0: 27.7 03:33:04 !bfjoust darwin-341-7 >>(-(--<--.>-->-)*4><...<+-+<-<-+-<>)*5<+.>>+>>..+><>+>+>+-+--.>>--.(>(-)*8[+])*57+->..-<><+>.+-< 03:33:17 Score for Lymia_darwin-341-7: 10.0 03:33:36 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 03:35:15 -!- poiuy_qwert has joined. 03:38:27 The Darwin series rises. 03:38:32 =D 03:38:54 If you can't make them, grow them. 03:44:11 -!- azaq23 has joined. 03:46:02 -!- azaq231 has quit (Ping timeout: 246 seconds). 03:46:24 !bfjoust darwin-403 >(-(----<--.>--->-)*6><..<+-<<.<-+-<-)*4++..>+>+..+>>><>++.->--.>>>-<(>(-)*4[+])*60++<..+><+>.>-< 03:46:31 Score for Lymia_darwin-403: 22.2 03:46:40 Bluh. 03:48:49 -!- Lymia_ has joined. 03:48:54 -!- Lymia has quit (Disconnected by services). 03:48:56 -!- Lymia_ has changed nick to Lymia. 03:48:58 -!- Lymia has quit (Changing host). 03:48:58 -!- Lymia has joined. 03:50:40 quintopia, so. 03:50:43 How's your evolver going? 03:50:49 If you're working on it at all. 03:51:25 oh 03:51:28 i am 03:51:40 i'm writing the bf interpreter 03:51:45 it'll be a while 03:51:57 BF interpreter? 03:52:10 >.< 03:52:19 private def runEgojoust(a:String, b:String) = rt.exec(Array[String](egojoustExecutable,a,b)).waitFor 03:52:23 Need I say more? 03:53:36 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 03:55:14 -!- poiuy_qwert has joined. 03:56:06 yes. i didn't know the existence of this executable 03:57:37 -!- nrkn has joined. 03:57:47 !bfjoust darwin-454-0 >(-(----<--->--->-)*5><..<+-<><.<-+--)*4>+..>+<+..+>>><>++..>--<>>>-<(>(-)*5[+])*59++<..+><+>.>-< 03:57:51 Score for Lymia_darwin-454-0: 14.0 03:58:05 !bfjoust darwin-454-7 >((----<--->---->-)*5><..<+<>><.<-+--)*3>+.--><+..>>><++..>--<>>.<(>(-)*3[+])*61++<..>><.-.>-> 03:58:09 Score for Lymia_darwin-454-7: 12.1 03:59:12 Lymia: what's the command for checking out the bfjoust? 03:59:20 ? 03:59:51 the executable you're calling. 04:00:09 i'm sure it's in gregor's hg repos somewhere but i don't know anything about hg 04:00:30 hg clone *repo* 04:09:15 !bfjoust darwin-507-0 >((----<--->--->-)*5><..<<-<><.<--)*3>+.-+><++.>.>.++..>--.>>>-<(>(-)*1[+])*60++<..><<+-.>-> 04:09:22 Score for Lymia_darwin-507-0: 14.6 04:13:35 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 04:15:16 -!- poiuy_qwert has joined. 04:20:03 okay, got the executable and the hill downloaded...maybe it won't take as long now 04:20:07 quintopia, oh, I forgot to ask. 04:20:10 What language are you using? 04:20:24 to make it a fair battle of wits, what size generation are you using? 04:20:34 8 bots. 04:21:01 I would use more if it wasn't so expensive to battle the bots agienst eachother. 04:22:35 * pikhq cleans the live autotune out of his ears. 04:23:38 you watched the fergiebowl? 04:23:47 OW OW OW OW OW. 04:24:59 Would it kill them to get *competent* musicians for a broadcast watched by a third of the country? 04:24:59 8? wow. yeah. that's low. i'll do it that way anyway :P 04:25:34 Oh, wait. That would require there to be a competent and highly popular musician that's fairly recent. 04:25:37 pikhq: meh, it's only one third of one country, and it's the third we don't care about so... 04:25:41 Which ain't happening. 04:26:02 quintopia: I actually like football. 04:26:13 We are programmers! 04:26:18 Why would we like anything of that nature? 04:26:20 D= 04:26:22 pikhq: watching sports on tv does not have the hacker nature 04:26:29 quintopia: No, no it doesn't. 04:26:32 quintopia: I'm weird, mmkay? 04:27:25 quintopia: But, anyways, Fergie should be banned. 04:27:28 i like watching high school football though...i just can't be arsed to care about these people who get paid millions 04:27:30 For? 04:27:47 Lymia: Raping the ears of a third of the nation. 04:27:55 Heh. 04:28:45 She couldn't even hit a note *with autotune*. 04:31:04 Heh. 04:31:07 I just realized. 04:31:21 It would be a quick modification to make this evolver work for FYB. 04:33:34 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 04:34:23 Lymia: what parameters is ./egojoust expecting? 04:34:39 ./egojoust [program 1] [program 2] 04:34:44 It's return value is the number of wins program 2 had. 04:34:50 Well. 04:35:04 It's return value is the number of times program two won minus the number of times program 1 won. 04:35:15 -!- poiuy_qwert has joined. 04:35:33 how do i run a program against the entire hill in /programs? 04:35:55 What programming language are you using. 04:36:09 java 04:36:16 Figure out the solution 04:36:23 is it not done already in some program? 04:36:24 There isn't a builtin function for that. 04:36:35 eh, egobot does it 04:36:40 * quintopia pokes around 04:36:43 The code I wrote does target the JVM, but it's in Scala. 04:36:53 It also uses alot of functional programming concepts. 04:36:59 i.e. dosn't translate well into java at all 04:43:40 !bfjoust darwin-667-0 >-(----<--->--->-)*7<>+.-..<.<<-+<<->.>>>+>..-.>>+-++>-<><>.>---(>-[+])*59.++-><->..+<>- 04:43:47 Score for Lymia_darwin-667-0: 18.2 04:44:01 !bfjoust darwin-667-7 >-(----<--->--->-)*7.>+....<.<<-+<<->.>->+>..-.>>+-++>-<><>.>---(>--[+])*59.+--><-<..<<>- 04:44:05 Score for Lymia_darwin-667-7: 14.9 04:44:09 -!- azaq23 has quit (Ping timeout: 240 seconds). 04:52:38 found the command for running the whole tournament 04:53:24 Didn't use it. 04:57:15 well i'm gonna. beats computing scores myself :P 04:58:16 !bfjoust dawkings-50-0 >(-(----<--->--->-)*7<<+.<.+<..<<+-<-)*7>.>->+>.-+>>>>->+>>><.+>>>>+.->(.>-[+])*59+++.>+>>-<><-< 04:58:20 Score for Lymia_dawkings-50-0: 3.5 04:58:25 :v 04:58:27 You know what. 04:58:30 I'm going to restart the entire sim. 04:58:37 And see if it comes up with something different. 05:00:45 annnnnnd...i'm not gonna write this program right now :P 05:01:38 -!- azaq23 has joined. 05:01:59 You have any idea how to? 05:02:00 =p 05:02:26 (It's not that hard. Mine is 308 lines of code, but.. well... you're using Java) 05:03:12 i know exactly how i'd do it, but i already feel guilty i'm not working on that other thing 05:03:40 and it would be many more than 308 lines the way i conceived it 05:04:49 quintopia, it might have alot to do with the langauge I'm using too. 05:05:14 programs = select(new File(outputDir,"generation-"+i),targets,(programs map mutate) ++ programs) 05:05:40 This line binds the selection code, the mutation code, and handles part of preventing regressions. 05:06:50 mm 05:08:59 ◕ ◡◡ ◕ 05:09:42 ohay, i'm still second on the hill haha 05:09:51 though it looks like there's a new first 05:10:02 myndzi, I intend on pushing you off. 05:10:02 :< 05:10:09 lies 05:10:35 wow i have a lot of losses now 05:10:39 With the power of natrualartifical selection. 05:10:41 it used to be 100% wins or something 05:10:53 with the exception of wiggle or whatever but he just kept counteroptimizing and that was boring 05:11:24 myndzi, I'm using an evolotionary algorithm to optimize agienst the entire hill. 05:11:25 = 05:11:26 =p 05:11:41 s/optimize/flood/ 05:11:52 Well. 05:11:57 That's one outcome of it! 05:12:02 if your entries have an edit distance of like 3, i think that's a little stupid :P 05:12:12 myndzi, heh. 05:12:25 I'm going run it for a night, and maybe a school day and see what comes out. 05:12:26 myndzi: you're actually in 3rd place now 05:12:38 8 62.94 10.33 ais523_defend7.bfjoust 05:12:39 19 56.86 7.50 myndzi_slowrush.bfjoust 05:12:39 i don't really care much though, i mean, i wrote that like years ago 05:12:41 That is third place? 05:12:53 there's only one above me? 05:13:06 1st is patashu_rushpolarity, and 2nd is nescience_shade 05:13:15 what link are you looking at 05:13:24 ....? 05:13:25 i'm looking here -> http://codu.org/eso/bfjoust/report.txt 05:13:27 a report i generated myself on my own machine 05:13:32 oh 05:13:34 well i'm nescience too 05:13:35 :) 05:13:37 from the files on the hill at present 05:13:42 and patashu's is just mine but reversed 05:13:42 well then you are in second! 05:13:43 so! 05:13:49 reversed? 05:13:55 weird 05:13:55 +s for -s and vice versa 05:13:57 lol 05:14:04 he kept submitting "polar" opposites of existing entries 05:14:16 actually i don't know if i wrote 'rush', maybe rushpolarity is different from slowrush 05:14:20 interesting that he beat you tho 05:14:47 ah, it is different 05:14:59 well, polarity shouldn't matter anymore 05:15:04 the program tries programs both ways 05:15:08 against all starting positions 05:15:09 last i remember 05:15:15 so every combination and one simple alteration 05:15:18 !bfjoust cirno (>+)*10([-]+>)*20 05:15:22 myndzi, so. 05:15:22 Score for Lymia_cirno: 10.5 05:15:23 rushpolarity does look different from slowrush 05:15:24 that's what i was gonna say 05:15:29 i don't remember if i wrote rush though or not haha, it's not on there anymore 05:15:30 Was it submitted because of that person? 05:15:47 most of the entries took on the same appearance after a while 05:15:56 and really to win you just rearranged until you got wins 05:15:59 !bfjoust cirno (>+>-)*5([-]+>[+]->)*5 05:16:00 then someone else did the same 05:16:02 and it was circular 05:16:06 Ah. 05:16:15 !bfjoust cirno (>+>-)*5([-]+>[+]->)*10 05:16:17 i'm not surprised defend7 is on top, because i don't think any of the entries are new 05:16:18 haha 05:16:28 Score for Lymia_cirno: 05:16:29 though defend had a unique strategy 05:16:36 compared to the rest of the hill at the time i remember playing it 05:16:39 myndzi, it tried to make rushes fall off the edge, no? 05:16:51 the original one basically sat on its own flag 05:16:55 and decreased it repeatedly 05:16:59 so that it couldn't be put to 0 in one turn 05:17:06 something like that anyway 05:17:12 and then it got more complex 05:17:24 like, in the later ones he tries to detect the speed of decrementing of whatever is attacking 05:17:29 so as to optimally defend against it 05:17:40 i looked at 7 05:17:45 Score for Lymia_cirno: 0.0 05:17:59 he used a tripwire on the original one, and people began 'jumping' over the first thing they encountered instead of zeroing it 05:17:59 it's not that intelligent as to how to increase its own 05:18:04 that kind of thing went back and forth for a while 05:18:10 it just does (+)*128 every now and then 05:18:22 yeah, it probably wasn't worth the effort of what i mentioned 05:18:22 while going through the board and zeroing everything else 05:18:25 not reliable enough 05:18:41 anyway, he got the constants right for the current hill makeup 05:18:48 and it probably works well against simple programs too 05:18:48 !bfjoust cirno [](+)*128(>+>-)*5([-]+>[+]->)*10 05:19:01 but all the defend ones could be countered fairly simply if you did it specifically against them 05:19:04 myndzi, so, optimize until everything else drops? 05:19:06 wiggle wound up being quite an interesting program in how it worked 05:19:11 Score for Lymia_cirno: 5.6 05:19:11 haha basically that's how it went 05:19:15 not as robust as like, corewars 05:19:22 Heh. 05:19:24 Not as bad as FYB. 05:19:26 if you take the best few programs 05:19:30 you could make any of them be on top 05:19:46 so i guess a better gauge of "goodness" is if it can stay on against a wide variety 05:19:49 so you think that there can never be a tomcat in bfj? it'll always be people building programs to specifically counter other programs and no one will ever be on top? 05:19:53 which is why spam annoys me 05:20:01 maybe they should get rid of the hill idea 05:20:06 well, you don't exactly "specifically counter" 05:20:10 all programs survive even if they suck 05:20:17 but the way to make your program win is just to adjust the constants a little 05:20:25 so that you get a set that wins against all the bots on the hill 05:20:36 then new ones come on and you start to lose if they are good 05:20:44 And repeat? 05:20:46 and usually whoever puts it up on the hill is doing the same thing - optimizing it to win 05:20:49 so it'd be better without the hill right? 05:20:57 i don't know, what would you use in its place 05:21:04 like i said, it seems that the programs mostly took the same shape 05:21:13 i think defend is an exception, and probably also wiggle 05:21:17 it's been so long i don't remember well 05:21:28 i guess what i'm saying is that the logic of the program doesn't play an important enough role 05:21:35 you can't get a program that will always win by using only better logic 05:21:38 it's too simple a game 05:21:39 the game is too simplistic 05:21:41 yeah 05:21:51 Hmm... 05:21:52 I wonder. 05:21:55 so you'd rather corewars 05:21:56 Corewars has the SPL instruction. 05:21:58 so basically, if you keep this up lymia 05:22:04 you're just gonna spam everything off 05:22:04 How would something similar work on BF Joust. 05:22:08 and it won't even be partially interesting 05:22:08 Anybody know of a high-level esolang with an emphasis on terseness? ie. get a lot done in very little chars, sorta opposite of brainfuck, get a little done in a shitload of chars. Also hi :) Just asking because I'm writing one 05:22:17 because you'll just wind up with a bunch of extremely similar programs each that is slightly different 05:22:19 golfscript 05:22:27 nrkn, Perl. 05:22:34 eventually you'll hit a group that trumps the top ones and that "species" will take over 05:22:37 that's what i think will happen anyway 05:22:42 myndzi, eh. 05:22:49 what did SPL do again? 05:22:53 I wrote an evolover because it seemed intresting. 05:22:55 quintopia, make a new 'thread' 05:22:56 splits a process off 05:23:03 ah right 05:23:07 It would alternate through the threads every tick. 05:23:07 Lymia: yeah, i'm just suggesting you stop spamming the hill with the results 05:23:11 right 05:23:14 at least when they are very similar variants 05:23:14 myndzi, will do. 05:23:15 =) 05:23:21 i think fyb should have gone that rout 05:23:21 thank you, that is kind :) 05:23:22 e 05:23:26 Lymia: Haha yeah perl, mine is terser :) 05:23:31 Looking at golfscript now 05:23:36 quintopia, FYB had a big screwup. 05:23:45 the @@ thing? 05:23:48 Yeah. 05:23:55 It's worse than that. 05:24:04 If you eliminate each ! in the enemy code. 05:24:06 They're sitting ducks. 05:24:11 Let that sink in for a moment. 05:24:13 c@@ thing? 05:24:34 You can directly target a bot agienst another. 05:24:37 And expect very good results. 05:26:07 so did you ever read that paper where they created a language and a self-replicating program and put it in a limited memory buffer, then added mutation, and let the programs copying themselves serve to handle natural selection (implicitly selecting for space efficiency and maintaining control of the cpu) 05:26:10 myndzi, I guess "once every 100 generations" would be spam? 05:26:11 =p 05:26:16 OK golfscript works quite a lot like mine except it's still a lot more verbose. Aiming for terseness/does a lot as primary feature. But I'm going to play with it a bit more, probs a lot I can steal 05:26:21 -!- sftp has joined. 05:26:43 quintopia, sounds kinda like CoreWars. 05:27:00 so you didn't read the paper eh 05:27:01 you should 05:27:07 Except it's an orgy. 05:27:11 i think they language they used would make a great battle language 05:27:11 Lymia: eh, i don't know. with human written code you can tell when it's a different intent 05:27:16 maybe you should check edit distances :P 05:27:26 myndzi, heh. 05:27:46 I don't expect the general method to change once one has set in, at least without massive amounts of time. 05:27:57 I expect this general method to be a rush 05:28:00 that's kind of what i think too, which is why i said something about it 05:28:11 but you know, it's not like anyone plays the hill, i just thought it would be unfortunate to see it become all one t hing 05:28:46 [>(-)*10<] 05:28:48 Eh? 05:28:51 What the crap is this? 05:28:52 myndzi: how about a random tournament instead of the hill. each new program plays a random subset of ALL programs ever submitted, and an average score for each program is maintained over time? 05:28:53 `-` 05:28:58 No attack. 05:29:04 Yet it has something to the effect of decoy making? 05:29:44 i'm not really sure 05:29:53 myndzi: that way you cannot target specific programs and try to beat them, because you don't know who you'll be playing 05:30:01 No output. 05:30:35 myndzi, that would have the effect of making a decoy, no? 05:30:36 is that a program on the current hill? 05:30:36 Well... 05:30:45 If the initial cell wasn't 0. 05:30:52 myndzi, it's not. 05:31:00 I killed off the last batch. 05:31:07 no, i mean, that code 05:31:08 where's the code from 05:31:17 your program? 05:31:20 myndzi, yeah. 05:31:25 and it's doing good? 05:31:27 Dunno. 05:31:30 lol 05:31:39 well yeah, it wouldn't win unless the other program ran off the edge 05:31:48 It's optimal among the programs. 05:31:51 your flag starts at 128, so it wouldn't do anything really? 05:31:56 which actually makes sense 05:32:01 since you don't lose if you run out of code 05:32:02 i think 05:32:04 you just don't do anything 05:32:13 the other programs are just killing themselves 05:32:13 lol. 05:32:53 quintopia: i don't like the random thing because really, it's just gonna noisy up the results; maybe just make an infinite hill 05:33:10 i'd think that would have the effect at least of logic triumphing over specifics 05:33:11 myndzi: that is intractible 05:33:15 'cause it could have lots of variants ;P 05:33:27 true enough, but random sampling? not everyone's gonna get something good lol 05:33:33 myndzi. 05:33:45 Main issue I see with my current code is that only one strain is in the system at one time. 05:33:54 I have no clue how to fix this. 05:33:55 >.> 05:34:01 * myndzi shrugs 05:34:10 i probably don't even belong in this channel ;) 05:34:15 =p 05:34:18 in fact i started idling because i was here from bf joust haha 05:34:24 =p =p 05:34:25 which i learned about from impomatic in #corewars 05:34:27 myndzi: over time it'll all even out though 05:34:43 yeah, after each program has played almost everything, which is basically "infinite hill" anyway 05:34:44 :) 05:34:58 no, each program will never play everything :P 05:35:11 given a long enough time, it will! 05:35:20 they only get an opportunity to play new programs after they are first entered 05:35:45 so if you submit a program after a good one you don't have to play it? o_O 05:36:02 well...you never know 05:36:17 but it will over time get higher scores than you anyway because it's better 05:36:31 * myndzi shrugs 05:36:49 i forget what the length range on bf joust is 05:36:57 10 to 40 or something? 05:37:02 10 to 30 05:37:05 all of them 05:37:13 -!- nrkn has quit (Quit: Page closed). 05:37:14 ok, so that's 44 runs per pair 05:37:25 corewars hills run way more than that, and isn't there an infinite corewars hill? 05:37:28 i'm getting 42 05:37:36 you're right 05:37:46 i doubled my double 05:37:46 :P 05:38:14 but yeah 05:38:26 i guess the biggest difference is that corewars players uhh.. spend a lot of time on one submission and enter it 05:38:26 it takes like 3 or 4 seconds already to run the current hill size 05:38:30 rather than submit like 20 variants 05:38:30 ;) 05:38:36 which means...16 seconds if you double the hill size 05:38:59 is there still cw activity these days? 05:39:04 i haven't checked in a while 05:39:10 last i heard, tomcat was on top 05:39:13 i did see a couple new guys who got into it 05:39:23 it's a land of diminishing returns 05:39:31 i like the game but doing anything fun doesn't really net real results 05:39:45 it seems the only way to do that is to do boring things 05:39:47 haha 05:39:57 and i have little enough motivation to spend that it's infeasible for me to really participate ;) 05:39:59 myndzi, hmm... 05:40:14 One thing I could do is to completely scamble a program every once in a while. 05:40:27 Given that there's a small chance that it comes out different, but still workable. 05:40:41 i don't really know, i have little experience with evolvers 05:40:47 the code is so dependent on position though 05:40:58 completely scrambling a program would certainly ruin it 05:41:06 besides brackets not necessarily matching up etc. 05:41:14 Scrambling to mean means running the mutation routine on it a few times. 05:41:15 i don't know how i would approach this 05:41:20 to me* 05:41:24 ah 05:41:32 Basicly scrambling it enough to maybe get it out of a local minima. 05:41:33 well don't most genetic algorithms do something like 05:41:34 With enough time that is. 05:41:41 local maxima* 05:41:48 populate the pool with mutations of the best N, and also some random ones? 05:41:51 Please tell me I don't have to saturate or something. <-- iirc you do for input! 05:42:10 myndzi, that's a horrible idea. 05:42:21 why so? 05:42:39 it starts out randomly yeah?+ 05:42:42 You know how the sim always seems to start out, right? 05:42:47 so you just keep throwing randoms into it? 05:43:01 on the off chance you get something worthwhile and fresh 05:43:02 i dunno 05:43:20 which sim 05:43:22 Phase 1) Which one manages to live the longest before killing itself. 05:43:37 Phase 2) Programs with [] or something similar sticking it in one place 05:43:44 -!- p_q has joined. 05:43:54 Phase 3) Programs getting better and better at rushing the enemy flag 05:44:09 (And setting decoys I guess) 05:44:16 makes sense enough 05:44:23 i don't know how you would evolve something like defend, haha 05:44:41 so then, keep running from phase 1 and when you get something phase 3-worthy, mix em up 05:44:45 A basic defence? 05:44:57 [+] on your home cell 05:45:01 no, i mean the Defend series of programs 05:45:07 which behave in some pretty specific ways 05:45:18 If that is set up, and works, it might start expanding on the idea... 05:45:23 Then die out because it beats all the rushers. 05:45:45 you're the one writing an evolver, not me ;) 05:45:47 i'll take your word for it 05:45:56 Eh... 05:46:04 It might work better with a larger hill. 05:46:11 But I'm battling everything agienst everthing. 05:46:18 That's O(n^2) to hill size. 05:46:19 :s 05:46:28 nobody ever claimed evolution was fast :) 05:46:37 -!- poiuy_qwert has quit (Ping timeout: 240 seconds). 05:46:45 Well, evolotion is counted in generations. 05:46:46 :) 05:48:48 you might try evolving simple units and concatenating them, actually 05:48:56 or, defining simple units 05:49:06 5376 battles per generation. 05:49:06 :s 05:49:14 myndzi, in Brainfuck? 05:49:19 Would work better in FYB or CoreWars. 05:49:29 yes, in brainfuck 05:49:38 the programs i wrote tended to have separate distinct sections 05:49:39 The modules wouldn't fit together. 05:49:45 myndzi, well. 05:49:50 Depends on how you do it guess. 05:49:54 sometimes looping through them all etc. 05:50:04 If you define it as three seperate program segments [start][middle][end] or something, it could work. 05:50:08 but i mean things like [-] or >+*(10) and whatever 05:50:20 myndzi, those ould be made pesudoopcodes. 05:50:20 =p 05:50:30 [-] and [+] in particular. 05:50:38 * myndzi shrugs 05:50:51 i just mean that there are some simple strategies that work against simple opponents 05:50:57 and they can be incorporated into more complex strategies 05:51:31 also i am thinking about the interpreter and if it ever wound up implementing my solution for the * loops 05:51:36 so that it didn't have to expand things 05:51:44 Well. 05:51:44 maybe there are some slow programs in your hill 05:51:54 15 times longer time per generation. 05:51:56 i sorta forget how it all worked anymore 05:51:56 -!- p_q has changed nick to poiuy_qwert. 05:52:00 I'll leave it on for a long time though. 05:52:02 Hopefully this changes things. 05:52:17 but speeding up the interpreter would probably be a good idea for you if you want to run lots of battles 05:52:34 can you tell if it expands all the programs in memory before running them? 05:53:25 -!- Mathnerd314 has quit (Remote host closed the connection). 05:53:42 Yeah. 05:53:49 Well. 05:53:52 ah, never got implemented then 05:53:52 If it uses {} 05:53:53 And mine dosn't. 05:54:02 what about the ones you are fighting against 05:54:09 or you are just running evolved vs evolved right now 05:54:10 Those do. 05:54:20 so i guess it's a moot point 05:54:32 you don't really need to evolve ({}) anyway 05:54:32 egojoust is a C program, compiled to native code 05:54:43 My evolver is a Scala program, compiled to Java bytecode. 05:54:47 Figure out how that works. 05:54:50 Yeah. 05:54:54 heh :P 05:55:29 obviously both should be rewritten in brainfuck 05:55:33 and compiled to the game of life 05:55:36 ... 05:55:41 I just had an amusing idea. 05:56:25 Start the evolver... with the hill programs as the starting state. 05:57:36 that's only a good idea if one of my programs evolves to be the ruler 05:57:36 ;p 05:57:42 =p 05:58:38 private val numPrograms = 32 05:58:45 I should make this 1024 and have it be real life evolotion speed. 05:58:52 I'm going to bed. 05:58:59 Hopefully this isn't a completely bad idea. 05:59:29 have fun 05:59:53 By my cacluations, each generation should now be 15 times or so longer than before. 06:00:00 Hopefully I didn't underestimate. 06:02:54 Oh hey 06:03:01 [] popped up in /one generation/ 06:03:04 Looks like it was a good idea. 06:04:38 -!- azaq23 has quit (Quit: Leaving.). 06:06:27 remind me folks 06:06:38 what is the return value of var*=2? 06:07:35 -!- asiekierka has joined. 06:19:27 quintopia, void. 06:20:11 nah. 06:20:39 It's identical in meaning to var = var * 2 06:21:27 It seems to act exactly identical to var = var * 2 06:21:32 Therefore, it should return var * 2 06:21:52 kthx 06:22:34 -!- TLUL|afk has quit (Quit: *disappears in a puff of orange smoke*). 06:33:51 !bfjoust i_would_rather_kill_myself []< 06:34:08 lol 06:34:13 Score for Lymia_i_would_rather_kill_myself: 5.6 06:34:27 you beat tripwire! congrats! 06:34:36 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 06:35:24 !bfjoust //_> < 06:35:26 Score for quintopia_____: 0.0 06:35:40 that's not the name i gave! 06:36:11 -!- poiuy_qwert has joined. 06:41:52 -!- asiekierka has quit (Ping timeout: 240 seconds). 06:43:30 -!- nrkn has joined. 06:45:04 So I looked at golfscript, what other langs are good for golf? Making my own, some good stuff in golfscript but I feel can be improved upon for terseness. Au fait with lisp, perl etc., still too verbose. Also trying to do something that's reasonably mnemonic, ie short but not toooo cryptic 06:47:46 There's goruby, but that's I guess mostly just a identifier-shortened Ruby. 06:47:47 nrkn: take a look a j 06:47:56 And of course J, yes. 06:48:25 J seems like a terrible thing to google haha. I'll try esolang first? 06:48:33 And FlogScript. 06:48:36 -!- oerjan has joined. 06:48:38 And goruby. Know a bit of Ruby 06:48:50 OK FlogScript, will look at 06:48:51 Brb 06:50:06 z80 also seems to result in small bytecodes for a lot of things :P 06:51:07 http://golf.shinh.org/lranking.rb may give some sort of a golfability indication, though I think it's more about language popularity. 06:51:36 -!- asiekierka has joined. 06:52:06 Would be more useful if it were sorted by the "Avg." column. 06:52:47 would it 06:52:59 i feel like people use the best language for each problem 06:53:06 and don't use it if it's gonna be long 06:53:50 Well, or alternatively choose only moderately popular languages and take the set of problems solved in all of them. 06:54:49 some people just always use the same language tho 06:55:01 I always just use Befunge. :p 06:55:29 Yeah if it's a matter of how many chars you use measured in bytes you have so many operators available where in unicode it's only one byte, provided you use the letter chars (including accented etc) as vars, and then mapping the most common symbols to operators 06:55:34 how is the size of befunge determined? non-whitespace? 06:55:51 But it has to be reasonably high level to get a lot done, definitely not the case with brainfuck etc. 06:56:01 At least at anagolf it's determined like the others, which means it's a very bad idea to leave whitespace at the beginning of lines. 06:56:08 :s 06:56:14 Generation 12 running. 06:56:17 oh so all whitespace is significant? 06:56:19 God a hill size of 32 is slow. 06:56:26 i thought you were asleep lymia 06:56:32 I'm supposed to be. 06:56:39 quintopia: All bytes count, even the terminating newline if you sillily leave one in. 06:56:44 huh 06:56:45 I don't use whitespace at all except that newlines are equiv to statement terminators, also semicolons, all whitespace ignored except in string literals 06:56:54 Lymia: find someone to cuddle you to sleep eh? 06:56:58 Nah. 06:57:04 -!- zzo38 has joined. 06:57:10 k 06:57:14 hello zzo38 06:57:16 I'm not even in college yet. Extrapoliate from that why I'm supposed to be asleep. 06:57:16 =p 06:57:20 Have you ever heard of Purple Motion of Future Crew? 06:57:26 oh. you're so young 06:57:31 no 06:57:34 is that a music group 06:57:56 Purple Motion is a single person who is part of the group Future Crew. 06:58:10 ahm 06:58:15 what does the group do 06:58:27 Music, mostly. 06:58:35 Using .MOD and .S3M formats, mostly. 06:58:54 I don't think Future Crew does really anything nowadays. 06:59:11 -!- asiekierka has quit (Ping timeout: 260 seconds). 06:59:17 They made Second Reality, it's pretty famous. 07:00:19 oh 07:00:29 my favorite formats! 07:00:31 after .it 07:00:35 :P 07:00:57 They also made Scream Tracker itself. 07:01:11 hmm 07:01:21 It's a demoscene group. Well, "was". 07:01:32 Yes I know they made Scream Tracker. 07:01:48 I was just trying to think about what they'd be known for. 07:02:28 i' 07:02:34 i've not heard of scream tracker 07:02:44 demoscene implies windows 07:02:48 was it a windows tracker 07:03:03 I guess my goals are a) terse, b) high level, c) mnemonic. I mean, you could just look at the classes of problems that are most commonly solved and map value types and operators to unicode chars according to most used, but it would be really hard to remember how to do anything, so the mnemonic part is important 07:03:03 This was in 1993; it was for DOS. 07:03:09 oh 07:03:10 wow 07:03:14 no wonder :P 07:03:20 And it's the tracker .s3m is the format of. 07:03:25 Yes I have heard of the demo 07:03:27 (And .stm.) 07:03:45 yeah i don't really follow ancient history 07:03:58 You're making me feel old, and I'm not even all that old. 07:04:09 Demoscene doesn't imply Windows anyway; we just took a look, and pouet has something like six or seven Solaris demos. 07:04:15 Demoscene is not always for Windows (or necessarily any other system). These demos have been written for many different systems, including NES and Pokemon Mini. 07:05:16 Interesting how much demoscene stuff in the last (x) years has relied on OS API calls though 07:05:17 Isn't the demoscene *older* than Windows? 07:05:32 fizzie: how old? 07:05:34 nrkn: Just certain forms of demos. 07:05:48 nrkn: You can still find stuff like, say, C64 demos. 07:06:17 zzo38: it pretty much implies windows nowadays tho. i had thought we were talking about a modern group 07:06:21 Demos are still written for various old systems. 07:06:41 not the bleeding edge fancy ones 07:06:43 pikhq: I don't think there's an exact "starting date" for demoscene; Windows 1 seems to be from 1985, I'd say demoscene is mostly from around the same age. 07:06:54 quintopia: Uh, err, 27, I think. 07:07:05 Yeah is true. But uh what was the nice Quake, Q2ish one done in 64k? But with windows apis. kkreiger or whatevs 07:07:12 Or was it 128 07:07:18 quintopia: No, even today, there are often a lot of other demos for other systems, including ones which are no longer in production (and sometimes (but rarely) non-existent systems). 07:07:28 fizzie: so you were 10 years old in 93? yeah, i'm sure that was kinda before your time too :P 07:07:30 quintopia: Perhaps some of the stuff *you* notice is for Windows. Probably because a lot of that is positively *stunning*. 07:07:50 nrkn: .kkrieger was 96k, which is a strange in-between size. 07:07:51 pikhq: it's the stuff that gets high traffic youtube vids 07:08:00 it's the stuff that wins prizes at demoscene cons 07:08:24 quintopia: You do realise that demoscene cons tend to be categorised by system, right? :P 07:08:39 quintopia: Maybe those two things are true. But demoscene is still done with many other systems too. 07:08:40 oh they don't have a best in show? :P 07:09:01 also 07:09:04 Okay, I'd imagine they also have best in show, but the point still stands that there's demos done for a lot of systems. 07:09:06 fizzie: Yeah they had a cool procedural texturing thing around perlin noise if I remember correctly 07:09:07 quintopia: Well, 1993 perhaps a bit; but DOS demos definitely weren't "before my time", though; I don't think Windows was really a serious demo platform before '98 or so. 07:09:13 are there still demoscene cons? didn't they run out of money? :P 07:09:21 quintopia: Yes. 07:09:40 Man i haven't been on irc for years, this is great 07:09:53 nrkn: They've released the cool procedural texturing bit (werkkzeug) for everyone: http://www.theprodukkt.com/werkkzeug_3_te 07:10:08 (BytePusher is such a system that has no hardware implementation, only emulators exist) 07:10:26 someone should build a bytepusher 07:10:34 Assembly (from 1992 onwards) still gets organized, and every year people gripe about how it's all about gamers nowadays. 07:10:37 it would be so light and efficient 07:10:53 fizzie: Which is why it's now two different cons, one of which is for gamers. :P 07:11:02 fizzie: yeah I remember looking at that years ago but haven't for a while. carmac is big on procedural. why i'm aways impressed by his engines more than ones that look better but are hardcore manually scripted rather than procedural 07:11:26 pikhq: Yes, well, that's just "in theory"; there's still quite a lot of gamers in the "summer" event too. 07:11:45 Shame it's hard to get to most of those for me. 07:12:16 Damned Europe having all the *interesting* programmers. 07:12:23 Many other big ones are still going, I guess; at least Breakpoint, the Gathering, Evoke were organized in 2010. 07:12:29 And Altparty, of course. 07:12:36 wAMMA has sent a demo disk to Alex Papadimoulis in 2008; I looked at the files and most are DOS except one which is a .NES ROM file. In NTSC mode it executes invalid CPU instructions and crashes. In PAL mode it works. 07:12:40 Which is at least different. 07:12:43 also, i should really get a arduino(clone) and make cool shit. if only i had the willpower to get things done when i need to... 07:13:57 Admittedly the list of directories in http://www.scene.org/dir.php?dir=%2Fparties%2F2010/ is quite a lot shorter than in http://www.scene.org/dir.php?dir=%2Fparties%2F1996/ 07:14:25 -!- augur has quit (Remote host closed the connection). 07:14:35 there is no breakpoint '11 yes? 07:14:41 no sponsors? 07:15:13 Yeah, I guess they decided not to continue. 07:16:12 going, you're all good quality, be back 07:17:18 If/when I make the new computer system (codenamed POWERXY), I might try to make a demoscene of it. 07:17:26 Assembly 2011 is going to be the 20th year for them, and it still has the same main organizers; wonder when they're going to get fed up. (A 20-year anniversary could be a "natural" point to stop, but they haven't at least said anything about it.) 07:17:47 -!- Sgeo has quit (Ping timeout: 240 seconds). 07:17:52 -!- augur has joined. 07:18:26 (The same people keep winning, too.) 07:18:40 fizzie: 20 years is almost nothing in history of asm tho :) sure there's life in that dog yet 07:18:43 seeya al anyways 07:18:44 they could hand it over to someone else at any time, and that's the kind of announcement you save for the event yes? 07:18:51 lata 07:18:55 *al 07:18:59 *argh all 07:19:13 -!- nrkn has quit (Quit: Page closed). 07:20:01 "FloatingPoint - demoparty on a boat!" 07:21:24 That sounds a bit... hazardous. :p 07:23:39 -!- augur has quit (Remote host closed the connection). 07:25:16 -!- augur has joined. 07:26:29 i should go to bed i think 07:26:43 not tired tho :/ 07:34:34 -!- cheater- has quit (Ping timeout: 240 seconds). 07:35:40 -!- cheater- has joined. 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 08:09:17 -!- zzo38 has quit (Remote host closed the connection). 08:17:55 -!- Lymia_ has joined. 08:20:57 -!- Lymia has quit (Ping timeout: 240 seconds). 08:25:06 -!- impomatic has joined. 08:25:18 !bfjoust simple (>)*8(>[-])*21 08:25:22 Score for impomatic_simple: 9.9 08:28:49 -!- Lymia__ has joined. 08:28:56 !bfjoust simple (>)*8(>[-])*21 08:28:58 Score for impomatic_simple: 9.9 08:30:46 !bfjoust simple > 08:30:52 Score for impomatic_simple: 5.6 08:31:06 !bfjoust smile (>)*8(>[-])*21 08:31:10 Score for impomatic_smile: 9.9 08:32:08 -!- Lymia_ has quit (Ping timeout: 240 seconds). 08:49:51 APNIC: 1 735 168 addresses (0.103 blocks) IPv4 addresses allocated/assigned this month. 1 769 480 IPv4 /48s allocated/assigned (25.75ppm of a block). Granted, there's not a lot of activity, probably because of Chinese new year... 08:50:00 !bfjoust ink >(+>+<)*9999999999 08:50:05 *IPv6 /48s 08:50:24 Score for impomatic_ink: 0.0 08:50:42 One would expect it to pick pace again after this week. 08:52:08 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]). 08:58:00 Inetcore now has X-day estimate of 1st August. 09:04:04 Except that the Huston prediction which it is based looks seriously buggered base on the graphs. 09:06:01 *based 09:19:47 -!- maximum_yellow has quit (Ping timeout: 240 seconds). 09:21:52 -!- maximum_yellow has joined. 09:46:39 -!- oerjan has quit (Quit: Lost terminal). 10:02:53 -!- Lymia_ has joined. 10:06:06 -!- Lymia__ has quit (Ping timeout: 240 seconds). 10:13:42 -!- BeholdMyGlory has joined. 10:19:13 -!- Behold has joined. 10:19:53 -!- BeholdMyGlory has quit (Ping timeout: 255 seconds). 10:46:45 -!- BeholdMyGlory has joined. 10:47:11 -!- Behold has quit (Read error: Operation timed out). 10:57:41 -!- Lymia__ has joined. 11:00:52 -!- Lymia_ has quit (Ping timeout: 240 seconds). 11:05:51 -!- elliott has joined. 11:05:57 04:54:29 What programming language are you using. 11:05:59 04:54:44 java 11:06:01 the exit is that way -> 11:06:22 -!- ais523 has joined. 11:06:24 05:23:25 quintopia, it might have alot to do with the langauge I'm using too. 11:06:24 05:23:49 programs = select(new File(outputDir,"generation-"+i),targets,(programs map mutate) ++ programs) 11:06:30 Lymia__: you _would_ really like Haskell 11:06:42 it's like Scala's functional parts, except even moreso 11:06:44 hi ais523 11:06:55 hi elliott 11:07:09 also, every programmer deserves to know at least a moderate amount of Haskell even if they never use it 11:07:50 elliott: Through sanity.bf without crashing yet? 11:08:10 Deewiant: dude, i'm not even awake yet 11:08:27 Deewiant: i realised what the problem is when i was trying to sleep and failing, though 11:08:41 basically, if we're not at an edge, advance just gives the new coords. which can be spaces 11:08:47 conclusion: I need nextIns like you said 11:10:19 ais523: to explain this conversation, I've given in to the INTENSE BEFUNGE-98 FEVER. 11:10:44 elliott: I figured that out from your talk yesterday 11:10:55 ah 11:11:02 still, it's an understandable fever, befunge-98 is atm the only practical esolang 11:11:33 oh, it's more that the test suite and performance things Deewiant made are so hilariously comprehensive that how could you not try and win? 11:11:50 also, uh, I'm tired of cfunge's reign of fixed-initial-size-copterror 11:11:56 elliott: I expect a full pass on mycotrds by tomorrow 11:11:56 *coupled-with-hash-map-of-slowness terror 11:11:59 Deewiant: Oh totally. 11:12:15 Deewiant: Actually TRDS should not be that hard considering that a tick is pretty solidly defined as an atomic action in this code. 11:12:27 "TRDS should not be that hard" :-D 11:12:40 Deewiant: LET ME LIVE IN TRANQUILITY 11:12:58 Deewiant: I've also fleshed out a plan to do fingerprints nicely. 11:13:09 Of course since you're living in Haskell-land you can just remember all old fungestates 11:13:16 :-D 11:13:17 PRECISELY 11:13:20 HistoricalStateT 11:13:30 Wonder how much memory that would end up using 11:13:30 No wait, that's just ContT StateT, I think. 11:13:33 Or StateT ContT. 11:13:35 Deewiant: LOTS 11:13:37 Deewiant: *NOT ENOUGH 11:13:57 05:23:25 quintopia, it might have alot to do with the langauge I'm using too. 11:13:57 05:23:49 programs = select(new File(outputDir,"generation-"+i),targets,(programs map mutate) ++ programs) 11:13:58 . 11:13:59 oops 11:14:01 Notes to time travelling ips: 11:14:01 Usage of time travel can be very punishing on the performance of the funge interpreter. If travel is performed to the past, the interpreter must be capable of reproducing all conditions that existed at the destination time, which includes all ips, stacks, and funge space cells. Some interpreters may only store time snapshots from only so far back (The furthest point in the past that can be jumped to can be determined with the P command). 11:14:05 Some interpreters CHEAT 11:14:30 CCBI does what I think is reasonable: it allows you to travel back up to the time when you loaded TRDS, but not before 11:14:49 That way TRDS has very little performance impact unless you actually use it. 11:15:51 Deewiant: Think I'll have a --trds-very-slow for going before that. :P 11:16:19 I suppose I could add that too. 11:16:37 You know, because it's an important use case. 11:16:45 Deewiant: Absolutely. 11:17:07 Deewiant: BTW, I expect a test for -2kabcd jumping to c in Mycology, stat. 11:17:10 all you /actually/ need to do is store past input up to that point 11:17:20 then, if TRDS is loaded, you can rerun the program from scratch to see what it did 11:17:27 11:17:36 ais523: * 11:17:43 *Theoretical Computer (ok, that's the only kind) 11:17:43 (note: Feather's name has the property that it starts with a capital F even on IRC) 11:17:49 All you /actually/ need to do is store the initial state. 11:17:55 elliott: well, that's what Feather does for /everything/ 11:18:01 But that's expensive, which is why it's not done at the start. :-P 11:18:31 * elliott renames the FM monad to Shiro 11:18:33 PRIORITIES 11:18:42 Deewiant: Does sanity.bf use \r\n newlines? 11:19:04 elliott: Run 'file sanity.bf' and see! 11:19:11 SO FUCKING TIRED okay. 11:19:15 Actually I'll just fix my parse. 11:19:17 *parser. 11:19:46 Dude, you were gone for over 9 hours, how can you be tired 11:19:59 I spent like two of those sleeping. 11:20:09 The others were spent being unable to sleep and thinking way more about Befunge than I wanted to. 11:20:27 As such, I've practically got a few hours of code buffered up in my head, but am barely in any state to write it at all. 11:20:36 heh 11:21:07 am I right in thinking that a 1-counter nondeterministic Minsky machine is not just TC, but so far from TC that it doesn't even resemble it? 11:21:28 ais523: I think so 11:21:31 (the "nondeterministic" bit makes it not quite obvious) 11:21:34 but I think so too 11:21:41 *not just not TC 11:21:43 -- these functions should arguably go in Shiro.Monad 11:21:43 this is my way of telling myself that these really belong in Shiro.Monad and to move them 11:22:03 is Shiro going to end up almost as overengineered as jettyplay? 11:22:15 not really, I already have the basic instructions down 11:22:18 and fungespace and all that 11:22:24 I'm starting out really simple and stupid until I pass Mycology 11:22:27 and only then will I optimise in any way 11:22:33 unless I really need it to execute all of Deewiant's tests 11:22:40 then fingerprints come 11:22:50 (got a rather nice typeclass system for those :P) 11:23:25 in jettyplay, I had to start the optimisations pretty early 11:23:34 because it used to leak enough memory to crash after a few minutes 11:23:47 I blame Java 11:23:53 it turned out the memory leak bug was actually in the Java stdlib (arguably not a bug, but an insane restriction) 11:23:57 but I figured out how to work around it 11:24:11 wow, I'm irritable 11:24:14 before I discovered that, though, I'd optimised the memory usage for all the rest of the code first 11:24:22 mergeByteString (ox,oy) fs = snd . foldl' line (oy,fs) . B8.lines . B.filter (/= ff) 11:24:22 where line (y,fs) s = (y+1, snd $ B.foldl' (byte y) (ox,fs) s) 11:24:22 byte y (x,fs) w = (x+1, if w == space then fs else insertFS (x,y) (fromIntegral w) fs) 11:24:23 TODO: 11:24:24 remove filter 11:24:26 remove B8.lines 11:24:30 make this the most insane fold ever 11:25:24 hmm, seeing that on my IRC client gives me the idea of writing code in a proportional-width font, and using all the whitespace characters in Unicode to make it line up perfectly anyway 11:25:39 except vertical tab, because nobody seems to know what it's meant to do any more, and it's normally just interpreted as newline 11:27:37 mergeByteString :: Vector -> FungeSpace -> ByteString -> FungeSpace 11:27:38 mergeByteString (ox,oy) fs = snd . foldl' byte ((ox,oy),fs,False) 11:27:38 where byte (p@(x,y),fs,lastWasCR) w 11:27:38 | w == ff || (w == lf && lastWasCR) = (p, fs, False) 11:27:38 | w == cr || w == lf = ((x,y+1), fs, w == cr) 11:27:38 | w == space = ((x+1,y), fs, False) 11:27:40 | otherwise = ((x+1,y), insertFS p (fromIntegral w) fs, False) 11:27:42 that should do it 11:27:44 ais523: like myndzi? \o/ 11:27:44 | 11:27:45 /< 11:27:53 that uses special characters to make it line up in mIRC 11:27:59 ah, I didn't know 11:28:03 no wonder it never seems to line up for me 11:28:12 ais523: well, no, it's for monospaced mIRC users 11:28:14 ais523: also, IIRC the Emacs source code has ^Ls in it 11:28:22 elliott: those are page breaks 11:28:34 oh, right 11:28:41 ais523: that's still pretty crazy, though 11:28:44 they have various semantic value in code 11:28:51 page breaks between functions are natural, if you think about it 11:29:01 indeed, but still quite insane 11:29:04 and they're "whitespace", so C-like langs should ignore them 11:29:04 I wonder what it looks like in Emacs itself? 11:29:11 and it just shows ^L, in red 11:29:14 "Why doesn’t this exist yet: Syntax-aware merge" helloooo, Scapegoat! 11:29:31 (title of blog post by founder of Freenet who also does a lot of other things seemingly) 11:29:43 "Well, just such a problem has been floating around for several years, and is as-yet unanswered. I proposed it two years ago, and others have suggested it several years before that." it's because we're all waiting for scapegot 11:29:45 *scapegoat 11:29:47 elliott: snd works on pairs, not triples 11:29:55 anyway, my lecture this morning made me internally facepalm a bit 11:29:57 Deewiant: fucking fuck >_< 11:30:06 you can't see it, but my eyes are drooping 11:30:41 mergeByteString :: Vector -> FungeSpace -> ByteString -> FungeSpace 11:30:41 mergeByteString (ox,oy) fs s = fs' 11:30:42 where (_,fs',_) = B.foldl' byte ((ox,oy),fs,False) s 11:30:42 byte (p@(x,y),fs,lastWasCR) w 11:30:42 | w == ff || (w == lf && lastWasCR) = (p, fs, False) 11:30:42 | w == cr || w == lf = ((x,y+1), fs, w == cr) 11:30:44 | w == space = ((x+1,y), fs, False) 11:30:48 | otherwise = ((x+1,y), insertFS p (fromIntegral w) fs, False) 11:30:50 even supports \r\n as two newlines, I think 11:31:01 Yep 11:31:02 to start with, they were showing code samples on a projector, but the interesting part is that the projector was connected to a Mac laptop, connected via a wireless network to two levels of ssh -X (one to get inside a firewall, one to get to the actual target machine which was just one of the machines in the undergraduate computing labs) and used to run xterm 11:31:19 N-tuples: the quick-and-dirty state monad! 11:31:21 just so that the code would work exactly the same way as it did for the undergrads 11:31:25 *N-tuple folds: 11:31:29 ais523: :D 11:31:35 ais523: ("badly"?) 11:31:57 ok, now to move things outside of Interpreter.hs 11:32:01 then write nextInsPos / goToNextIns 11:33:07 then, actually using the terminal, there were similar insanities 11:33:15 the most minor was using control-Z followed by bg to exit less 11:33:34 (control-Z on less can make sense, but not this time, as the same file was immediately opened in an editor; bg on less can't) 11:34:07 and then the rest of the session he put & on everything but make and running the resulting executables, to background it 11:34:14 including cd, which of course doesn't work very well backgrounded 11:34:16 "that would depend on how you define 'proprietary'. I consider the GNU ecosystem code lock-in to be a form of proprietary (since the BSD's, anything under MIT, Illumos, etc can't take advantage of it)" 11:34:17 oh my god, shut up 11:34:27 every fucking time on /r/programming someone mentions that the gpl is Free in any way 11:34:28 elliott: they can, by converting to GPL 11:34:30 all 11:34:31 the 11:34:32 fucking 11:34:32 whiners 11:34:35 come out of the woodwork 11:34:58 I even basically agree with them but they're all annoying [expletive]s about it >_< 11:35:03 elliott: it's interesting hearing that from someone who thinks BSD > GPL, anyway 11:35:22 btw, I wonder what would happen if someone made a career about making GPLed improvements to BSDed code? 11:35:29 I think the GPL is perfectly Free, I just don't use it myself, and therefore dislike GPL libraries because I can't use them at all 11:35:39 ais523: probably the FSF would love them and the projects would hate them 11:35:44 and if the people who owned the BSDed code complained, said that their license was specifically designed to let them do that? 11:35:54 I wouldn't mind, actually 11:36:18 I'm a little annoyed because I often end up choosing GPLv2 out of practicality (existing libraries, and not annoying GPLv3 haters) 11:36:26 even though it's a crazy license in that it has known bugs 11:36:35 which people have taken to be features, somehow 11:36:39 ais523: If I was satisfied with my software before and someone releases an improved version under an incompatible license, it doesn't really matter 11:36:45 I'm almost certainly going to be able to implement the same improvements 11:36:52 elliott: in that case, BSD possibly is the right license for you 11:37:01 And I don't really code for having the perfect piece of software, anyway, fun takes priority usually. 11:37:42 ais523: it's like when a third-party seller started selling Mark Pilgrim's Creative Commons-licensed-but-traditionally-published book, without giving him any of the money, he just wrote a blog post about it saying he didn't care :-P 11:38:06 indeed, and I don't even see why he should 11:38:06 Deewiant: Weird how the only comparison functions are z and `. 11:38:12 Or, er, w. 11:38:21 And of them, w is weird. 11:38:23 _ and |. 11:38:30 it's like Red Hat publishing my improvements to the Nibbles AI 11:38:31 Deewiant: Those aren't really comparisons. :P 11:38:52 (although, only as part of a mass import of other things, really) 11:39:00 -| is like checking for equality. 11:39:14 Deewiant: Good point. 11:39:17 AESTHETICALLY PLEASING, TOO! 11:39:22 hmm, Gnome seem not to require copyright assignment, at least I don't remember any legal papers wrt that when I submitted patches to them 11:39:27 Deewiant: If I start talking about nested k will you run away? 11:39:28 I usually use -#v_ :-P 11:39:35 in fact, I don't even think I explicitly remembered to mark the patches GPL, perhaps they thought it was obvious 11:39:38 No, but I won't talk about it much either 11:39:54 Deewiant: Because I'm totally convinced that all nested ks see the same instruction, which will be a k. 11:40:06 ...unless you change IP direction half-way through, but I'm not even going to think about that. 11:40:17 elliott: so you think kk is /always/ an infinite loop, except if given 0 as an arg? 11:40:22 well, multiple 0s 11:40:27 ais523: _not_ an infinite loop 11:40:34 ah, wait, it'd exhaust the stack eventually 11:40:36 ouch 11:40:36 yep 11:40:40 and then skip forwards 11:40:53 after five ticks, 34kk56 yields the stack "5 6" 11:40:56 _in my opinion_ 11:41:03 Deewiant's seems to differ, but that's because he's wrong :-) 11:41:04 hmm, I think you're right there, actually 11:41:14 given that k is always run at the k itself 11:41:16 ais523: the ambiguity is easily traceable to one sentence 11:41:24 The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space in the path of the IP (note that this cannot be a marker such as space or ;), treats it as an instruction, executing it n times. This takes only one tick with respect to concurrent operation. 11:41:29 ais523: "Then it finds the next instruction in Funge-space in the path of the IP" 11:41:37 ais523: is this the next instruction after the k, or the next instruction after the IP? 11:41:41 "next" is ambiguous here 11:41:43 because of the previous sentence 11:41:57 ah, yes 11:42:16 wait, isn't the IP always treated as being at the k anyway? 11:42:20 so it doesn't make any difference? 11:42:28 ais523: no 11:42:30 ais523: because the second k 11:42:41 oh, ouch 11:42:48 does it look at the instruction to the right of the IP (itself, "k") or to the right of the k ("5")? 11:42:58 so for kk, the question is which k has its location treated as containing the IP? 11:43:06 ais523: apparently, Vorpal special-cases nested "k"s, which suggests to me that his interpretation is probably objectively wrong, so I'm not going to try and find out what it is :P 11:43:10 ais523: not really 11:43:13 the IP is objectively on the first k 11:43:18 indeed 11:43:24 and that's true no matter what instruction you execute 11:43:25 but the question is whether the sentence tells you to look for the first instruction after the IP 11:43:29 e.g. ^ turns upwards from the first k 11:43:29 or after the current k 11:43:37 so the "current k" is always the first one 11:43:39 ais523: oh, and here's some fun for you 11:43:45 whether it's executing ^ or k or # or whatever 11:43:47 ais523: what happens if you change IP direction half-way through the "k"s? 11:43:52 elliott: I'm not sure you /can/ 11:44:12 ais523: if we go by the next-instruction-after-the-k, then consider 22kk< 11:44:14 oh, you mean like 4k] or whatever, nothing to do with nested k? 11:44:28 so let's trace this 11:44:31 22kk | stk: 11:44:34 erm 11:44:35 elliott: "next instruction after the k" is the second k, because "the k" is always the first one 11:44:36 i'll put the ip 11:44:40 with | before the thing that will be executed next 11:44:45 ais523: erm, I mean after the current k 11:44:48 Deewiant: what does 4k" do? 11:44:50 "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction" 11:44:54 ais523: see ^ 11:44:56 elliott: the "current k" is always at the location of the first k 11:44:58 ais523: wrong 11:44:59 "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction" 11:45:02 ais523: it could mean 11:45:03 elliott: here: 1ky 11:45:06 Then it finds the next instruction [after the k] 11:45:11 what location will the y command push onto the stack? 11:45:11 ais523: see? 11:45:15 for the IP location? 11:45:17 ais523: no, you don't understand 11:45:21 ais523: where the IP is might be irrelevant 11:45:22 elliott: no, /you/ don't understand 11:45:25 *sigh* 11:45:30 not this again 11:45:33 elliott: what I'm saying is, the /y is in the same position as the k/ 11:45:36 when running inside the loop 11:45:42 ais523: wrong 11:45:45 say k took the command to loop from the stack, rather than fungespace 11:45:46 ais523: the IP is where the k is 11:45:48 let's call this K 11:45:48 the "y" isn't anywhere 11:45:57 and we do 1"y"K 11:45:58 ais523: an instruction at (x,y) can execute at a place that is not (x,y) 11:46:05 this does not mean that instructions are at that location for their execution! 11:46:12 Deewiant: tell him he's insane :P 11:46:13 elliott: the fact that the instruction is at (x,y) is completely irrelevant 11:46:18 ais523: no, it _isn't 11:46:19 _ 11:46:25 "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space [...]" 11:46:32 it's as irrelevant as the fact that the instruction's at 0x12400 or whatever 11:46:41 umm, *0x1f2400 11:46:47 I need to make that look like a legitimate pointer! 11:47:29 what k doesn't do is cause the instruction to run itself displaced, somehow, but remembering where it is in fungespace 11:47:36 as there's nothing in the spec that implies that that makes sense at all 11:47:42 yes, there is 11:47:43 it looks at fungespace to see which instruction to run 11:47:47 ok, ais523 11:47:49 not "which instruction and its location and all its metadata" 11:47:52 just "which opcode" 11:47:55 stop and try and understand the alternate position for a second 11:48:16 rather than defending your interpretation because of the tautological "it's what the spec says!" 11:48:19 *circular 11:48:21 not tautological 11:48:23 "The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space [...]" 11:48:30 ais523: consider this sentence 11:48:33 the alternate position is, I suppose, that instructions intrinsically memorise where they are in fungespace, so that if you run them indirectly, via k or an eval fingerprint or whatever, they remember where they were just to make the definition of k ambiguous 11:48:40 ais523: We take an instruction. Then we take the next instruction, in the path of the IP. 11:48:52 ais523: to me, the latter sentence could _easily_ be referring to the next instruction after the _first one_ in the path of the IP 11:48:55 where's the "we take an instruction" 11:49:00 ais523: IT'S AN EXAMPLE 11:49:01 you're implying that into the spec, it doesn't say that at all 11:49:12 * elliott bashes his head into the brick wall that is ais523. 11:49:13 the spec says what k does, not what k at (5,10) does 11:49:32 ais523: some instructions in Funge-98 make no fucking sense and require pieces of state that no other part of the language does 11:49:37 this should not surprise you. 11:49:43 it's defining the concept of k instructions (think class in OO programming), not a specific k instruction individually (think object in OO programming) 11:49:44 and it's not a reason to discount an interpretation 11:49:55 I'm just reading the plain language of what it says 11:49:55 the fact that doing it that way is insane is irrelevant 11:49:59 the question is what the spec literally says 11:50:02 which is ambiguous in this instance 11:50:10 hmm, what are instructions defined /as/? 11:50:16 they're not 11:50:21 at all? 11:50:36 well 11:50:36 All standard instructions are one character long and range from ASCII 32 (space) to ASCII 126 (~). There are no multicharacter instructions in Funge. 11:50:41 ais523: it tells you a lot of things about instructions 11:50:44 but not what an instruction actually is 11:50:47 An instruction is executed by an IP every tick. The IP executed is the one at the current position of the IP. Only after that does the IP moves by its delta to a new position. 11:50:48 etc. 11:51:11 hmm, why is the funge-98 spec not linked from the wiki? 11:51:23 elliott: they range from 32 to 126 11:51:28 do any of those numbers contain position metadata? 11:51:36 *sigh* 11:51:55 Where the k is is part of execution state, not instruction state. The specification creates plenty of tracking of additional state without explicitly stating that it is doing so. 11:52:03 elliott: you can't claim that "instruction" includes "position in the source" 11:52:06 It does so with off-hand notes, e.g. fields of y that require whole-interpreter tracking to satisfy. 11:52:25 The spec is incredibly ambiguous and you're basically saying "don't be silly, that would require things to be insane to make sense", but they _are_. 11:52:26 ais523: http://catseye.tc/projects/funge98/doc/funge98.html 11:52:48 what I'm saying is, that "next instruction" can't have an implied "after the original position in the fungespace that that copy of the instruction was copied from", because "instruction" is specified not to include that data 11:53:14 Deewiant: I'm actually curious to the answer to ais523's question, what does 5k" do? 11:53:24 " just toggles stringmode 11:53:33 Deewiant: also, /please/ tell me that "hello;bar;quux" is the same as "helloquux" 11:53:39 It's not 11:53:45 Deewiant: i fucking hate stringmode. :) 11:53:46 Deewiant: but what does being in stringmode do to the subsequent "s? 11:53:56 as in, does it cause them to quote themselves? or to toggle stringmode? 11:53:57 ais523: in stringmode, " still toggles stringmode 11:53:57 In stringmode, " turns off stringmode. 11:53:59 ah 11:54:03 ofc 11:54:04 Deewiant: *hi5* 11:54:24 hmm, doesn't b98 have a quote-one-char command? ' or something like that? 11:54:32 yes 11:54:42 There is also a ' "Fetch Character" instruction in Funge-98. This pushes the Funge character value of the next encountered cell (position + delta) onto the stack, then adds the delta to the position (like #), skipping over the character (in no ticks). For example, the following two snippets perform the same function, printing a Q: 11:54:45 so 5k' is similarly interesting 11:54:55 I think there's a note about k' in the Mycology readme. 11:54:57 and you've even got a definition of "next encountered cell" there 11:55:13 Hmm, no. 11:55:16 Deewiant: What does k' do. 11:55:17 it's also an insane one 11:55:25 ais523: it's not 11:55:28 ais523: except for not wrapping 11:55:30 elliott: it doesn't allow for wrapping 11:55:33 or SGML spaces 11:55:34 or ; 11:55:38 what does '; do, for instance? 11:55:41 what about ; .... ' 11:55:42 pushes ; 11:55:44 around a line? 11:55:55 ais523: pushes space forever 11:56:06 I'm inclined to say "pushes 32", but that's one of the ambiguities that Mycology has as UNDEF, IIRC 11:56:09 I love how much longer the TRDS extended spec is than the TRDS spec. 11:56:29 ais523: a lot of Mycology actually-bads are UNDEFs to shut Vorpal up 11:56:31 ;) 11:57:08 anyway, what 1k' does is clearly to push ' onto the stack at the k, and then execute the ' again (because k doesn't skip it) and push the next char onto the stack too 11:57:22 the position+delta specification makes that completely unambiguous regardless of what k actually does, even to you 11:57:36 indeed 11:57:45 ais523: hey, I *support* your interpretation of k 11:57:49 I just think that the other one is basically as valid 11:57:53 oh, "skipping over the character", hmm 11:58:00 that does seem to imply position metadata 11:58:03 HA 11:58:05 TOLD YOU 11:58:13 so does 5k' jump 5 chars forwards? or to just after the '? 11:58:27 well 11:58:28 let's say 11:58:33 1k'xy 11:58:38 the first time, the ' pushes ' 11:58:41 and therefore skips over the ' 11:58:44 and therefore executes xy 11:58:52 yep, I think I agree with that 11:58:57 but 2k'xy instantly becomes insane 11:59:01 let me think about it 11:59:02 2k'xy 11:59:04 the ' pushes ' 11:59:06 the first time, ' pushes ', then skips over the ' 11:59:07 and therefore skips over the ' 11:59:11 elliott: Nested k debug printfs, figure it out 11:59:11 and then executes x 11:59:13 and now k comes in 11:59:17 no wait 11:59:19 Except that you need to shut up for the pastespam 11:59:23 skipping over the ' took one tick 11:59:28 Deewiant: ? 11:59:33 IP hit k at (2,0); moved to (3,0) 11:59:33 Moved to next instruction at (3,0) and found 107 11:59:33 Executing 'k' 4 times at (2,0)... 11:59:33 IP hit k at (2,0); moved to (3,0) 11:59:33 Moved to next instruction at (3,0) and found 107 11:59:35 the thing is, there's a contradiction in the spec here 11:59:35 Executing 'k' 3 times at (2,0)... 11:59:37 IP hit k at (2,0); moved to (3,0) 11:59:40 Argument is zero or negative: skipping instruction, position left as (3,0) 11:59:42 IP hit k at (3,0); moved to (4,0) 11:59:45 Argument is zero or negative: skipping instruction, position left as (4,0) 11:59:47 Deewiant: I'm just asking about 5k' 11:59:47 IP hit k at (4,0); moved to (5,0) 11:59:50 Argument is zero or negative: skipping instruction, position left as (5,0) 11:59:50 shut up >_< 11:59:52 hmm, the location at which the k executes is not the location at which the IP is 11:59:53 Done executing 'k' 3 times at (5,0) 11:59:53 I'm trying to work out 2k' 11:59:55 IP hit k at (5,0); moved to (6,0) 11:59:58 Argument is zero or negative: skipping instruction, position left as (6,0) 11:59:59 aargh 12:00:00 IP hit k at (6,0); moved to (7,0) 12:00:03 Argument is zero or negative: skipping instruction, position left as (7,0) 12:00:05 IP hit k at (7,0); moved to (8,0) 12:00:08 Argument is zero or negative: skipping instruction, position left as (8,0) 12:00:08 couldn't you have pastebinned that rather than doing it right as i try and trace an execution 12:00:10 Done executing 'k' 4 times at (8,0) 12:00:13 That's for your 34kk56 12:00:14 obviously, in the case of, say, 5k# 12:00:15 No 12:00:27 2k'xy 12:00:27 the ' pushes ' 12:00:27 and therefore skips over the ' 12:00:29 AND THAT TAKES ONE TICK 12:00:32 so k comes in 12:00:33 but note 12:00:35 the IP is now at the x 12:00:40 so k looks one right of the IP 12:00:42 finds y 12:00:44 executes y 12:00:45 and finishes 12:00:45 k' is like k# except that you push the chars 12:00:51 No? 12:00:53 ais523: (that's with the k-is-based-on-IP interpretation) 12:01:12 Deewiant: Yes; I believe your interpretation of k is wrong. 12:01:13 and ais523 agrees :P 12:01:18 although I think it's not wrong 12:01:21 I think it's legitimately ambiguous 12:01:32 Deewiant: [[The k "Iterate" instruction pops a value n off the stack. Then it finds the next instruction in Funge-space in the path of the IP]] 12:01:32 elliott: k definitely remembers the instruction it's executing, based on the stack 12:01:37 In the spec, it is a bit ambiguous 12:01:39 Deewiant: does it mean the literal /next instruction in the path of the IP? 12:01:40 */? 12:01:43 But it's been discussed and there's consensus 12:01:44 e.g. 5k' always runs ' five times 12:01:45 Deewiant: or the instruction after the k? 12:01:47 even though the IP's moving 12:01:49 Deewiant: it's ambiguous 12:01:54 And we brought Pressey in on it so it's not wrong :-P 12:01:57 ais523: hmm, indeed 12:02:10 Deewiant: but I don't see any justification of your interpretation, it seems less literal than mine 12:02:17 elliott: actually, what k does is finds the next instruction and treats it as an instruction 12:02:21 Deewiant: also, that requires special-casing k 12:02:24 elliott: What part of "my interpretation" 12:02:33 does treating an instruction as an instruction change anything about it? 12:02:34 Deewiant: the bit where "the next instruction" means "after the k" 12:02:39 elliott: It doesn't mean that 12:02:45 Deewiant: then it means "after the IP" 12:02:47 I was wrong and tired last time. 12:02:48 also, the definition of k isn't actually a sentence 12:02:53 The inner k finds itself, the first time. 12:02:53 Deewiant: and since the IP is on the k for the entire duration of k execution 12:02:56 the subordinate clauses don't nest properly 12:03:00 Deewiant: the /first/ time? 12:03:08 Deewiant: wait, does k move the IP somehow??? 12:03:10 elliott: See the execution trace I pasted. 12:03:16 Deewiant: yes, it doesn't make any sense 12:03:34 Deewiant: why is the inner execution moving the IP forwards each time? 12:03:35 Deewiant: I don't want an execution trace, I want a justification of it, because as far as I can tell implementing that in my k would be non-trivial because it makes no sense at all 12:03:50 The IP moves forward to get to the next cell. 12:03:53 because all instructions move the IP forwards when executed? 12:04:08 If the argument is nonzero, it finds the next instruction and executes it N times. 12:04:11 oh, you're treating "finds the next instruction in the path of the IP" as actually moving the IP? 12:04:13 If the argument is zero, it instead does nothing. 12:04:21 now /that's/ insane 12:04:23 Because 0kx is specced as skipping the x. 12:04:26 I didn't even realise that was a valid interpretation 12:04:35 It doesn't matter whether it actually moves the IP or not. 12:04:44 Deewiant: oh, you're right 12:04:45 The IP moves back before anything can tell the difference. 12:04:56 that bit of the spec is completely contradictory to anything else in it, and I remember you complaining about it at the time 12:05:09 so were you just trying to find an interpretation that complied with everything the spec said, somehow? 12:05:20 But the thing with nested k is that when the stack runs out and you start hitting zeroes, every execution of the inner k will move the IP forward like a #. 12:05:38 Pretty much, yes, that's been the idea. :-P 12:05:43 because k, for some reason, acts like # if it pops a 0 12:05:52 and you're treating that as a special case because the spec says so? 12:06:02 in that case, I don't think you actually disagree with elliott in anything 12:06:11 Deewiant: I think I've figured out why Vorpal wanted to make a new specification. 12:06:11 other than that elliott missed one insane special case that ends up coming up quite a lot 12:06:14 Deewiant: Because he hates FUN LIKE THIS. 12:06:28 (that I completely forgot about) 12:06:50 Oh, it's k-time again?-) 12:06:55 elliott: For the record, this behaviour follows from the impl "move IP; if (arg==0) return; get next instruction; move IP back; while (arg--) execute instruction;" 12:06:59 hmm, where does the spec say that k executes at itself anyway? 12:07:06 fizzie: :D 12:07:07 Where does it say it doesn't? 12:07:13 Deewiant: You're SO IMPERATIVE. 12:07:14 There's no reason to think it moves the IP 12:07:17 indeed 12:07:35 elliott: It matches CCBI so it was already in my head :-P 12:07:38 but with elliott's alternative reading, it'd execute the instruction at itself, I think 12:08:03 fungeStateWithFungeSpaceFromByteString :: ByteString -> FungeState 12:08:06 I really need a better name for that. 12:08:10 btw, I think I've deduced what the intended semantics of k probably were, although they contradict the spec: k transforms the next instruction temporarily into a copy of itself 12:08:37 as in, 4k5 changes the 5 into a "push four 5s" instruction until the next time it starts executing 12:09:05 that also has sane semantics wrt everything in Befunge, and fits the given examples 12:09:28 seriously, rename that function X-D 12:09:39 I was under the impression that 1kv was unambiguously defined to start going down from the k (not the v), but I can't find it in the spec. 12:09:42 elliott: initializeFungeStateFromString 12:09:50 ais523: that's even worse 12:10:00 it's shorter, and just as clear 12:10:03 fizzie: It's unambiguously not defined as something else 12:10:05 ais523: (1) a ByteString is not a String in the slightest, they are two very different things, that is _not_ clear, 12:10:06 (mostly because it's easier to parse) 12:10:12 ais523: (2) "ize", 12:10:12 elliott: oh, misread 12:10:19 elliott: initFSFromBS 12:10:21 ais523: (3) it's initialising the fungespace _in the funge state_ from a string 12:10:28 *bytestring 12:10:38 initFSinFSfromBS 12:10:38 ais523: there are any number of items of state that could be bytestrings 12:10:39 elliott: it's creating a new FungeState, and initialising the fungespace in it from a bytestring 12:10:42 e.g., in fingerprints 12:10:43 Deewiant: :D 12:10:57 for comparison, the function that actually does the fungespace loading is 12:11:00 mergeByteString :: Vector -> FungeSpace -> ByteString -> FungeSpace 12:11:03 called with (0,0) and emptyFungeSpace 12:11:21 BTW, you'll need to amend that to return the end Vector when you do i 12:11:27 Deewiant: >_< 12:11:31 Deewiant: Easy enough, at least 12:11:36 hmm, it could be kind-of tricky for sg to handle Befunge and Trefunge (Unefunge would be easy enough, except for possibly a need to correct jump offsets) 12:11:45 Done. 12:12:44 initialFungeState{ fungeSpace = snd $ mergeByteString (0,0) emptyFungeSpace s } 12:12:48 Over 80 fucking columns :P 12:13:10 You don't need the word 'funge' in 'fungespace' 12:13:29 Deewiant: The type is called FungeSpace :P 12:13:36 You don't need to call it that :-P 12:13:43 Deewiant: I already have :P 12:13:45 :P :P :P 12:13:54 modifyFungeSpace :: (FungeSpace -> FungeSpace) -> FM () 12:13:54 modifyFungeSpace f = modify $ \st -> st{ fungeSpace = f (fungeSpace st) } 12:13:54 modifyStackStack :: (StackStack -> StackStack) -> FM () 12:13:54 modifyStackStack f = modify $ \st -> st{ stackStack = f (stackStack st) } 12:14:03 how would these functions align perfectly in a monospaced font if I didn't call it FungeSpace? 12:14:06 HOW, I ASK YOU 12:14:07 what's with the braces? 12:14:11 oops, that should be Shiro () 12:14:15 ais523: Haskell's record system 12:14:22 ais523: if you haven't seen it before, it's because it sucks major ass 12:14:23 ah, it's a syntax I was unaware of 12:14:27 and so nobody uses it 12:14:32 is that basically "make a copy with one value changed"? 12:14:34 ais523: yes 12:14:44 data FungeState = 12:14:44 FungeState { stackStack :: StackStack 12:14:44 , fungeSpace :: FungeSpace 12:14:46 , ip :: IP } -- TODO: Multiple IPs 12:14:48 deriving (Show) 12:14:57 and laziness causes that to not be inefficient because the intermediate copies are never actually constructed 12:15:03 as they're only accessed fieldwise 12:15:19 ais523: Well, ostensibly. :p 12:15:56 hmm, looking at links from the Befunge page on the wiki, I came across Spunge, which is a Scheme-subset to Befunge compiler written in Common Lisp 12:16:10 *Sponge 12:16:12 Sponge, not Spunge 12:16:12 and yes, we know of it 12:16:13 I'm commenting mostly because who uses Scheme as an input to a Common Lisp program? that's like using vim to edit .emacs 12:16:17 elliott: err, typo 12:16:34 ais523: because Scheme is a tiny useless toy language good for compiling to an esolang ;-) 12:16:57 it's clearly Yet Another Blatant Attack As Part of the Lisp Wars That Have Plagued McCarthy For A Very Long Time Now. 12:17:06 YABAAPLWTHPMFAVLTN. 12:17:35 Your capitalization makes no sense. 12:17:43 "iPod touch. The perfect Valentine's Day gift." <-- Apple, you're coming really close to my "unsubscribe from spam" threshold, and that's _really_ high. 12:17:46 Deewiant: That's what she said. 12:17:52 Deewiant: I did it on the fly, okay :P 12:17:54 (That's what she said.) 12:18:20 doCharIns 'p' = do -- Doesn't work, don't know why: flip poke <$> pop <*> popVec 12:18:21 val <- pop 12:18:21 pos <- popVec 12:18:21 poke pos val 12:18:22 What, you think an iPod is a poor Valentine's Day gift? 12:18:25 I still don't know why. 12:18:37 Deewiant: :-D 12:18:48 I use :-D like 10x more when Deewiant is talking, even if he's not saying :-D. 12:18:48 ?. pl undo do val <- pop; pos <- popVec; poke pos val 12:18:48 (popVec >>=) . flip poke =<< pop 12:18:50 I think my brain is broken. 12:20:00 why ?. not @? 12:20:02 -!- cheater- has quit (Ping timeout: 240 seconds). 12:20:21 ?. pl unpl flip poke `liftM` pop `ap` popVec 12:20:21 (popVec >>=) . (return .) =<< fmap (flip poke) pop 12:20:34 That's why it doesn't work. 12:20:37 oh, it lets you chain @-commands? 12:20:44 ais523: @. does that too 12:20:44 ? = @ 12:20:45 ais523: I got used to typing ? at some point. 12:20:48 elliott: ah 12:20:50 Deewiant: Oh. Fix it then. :p 12:21:02 I think join $ might fix it, but _eh_. 12:21:04 how dare lambdabot take up two punctuation mark prefixes, there's only a finite supply 12:21:06 Probably back when my keyboard required alt gr to press @, but shift for ?. 12:21:19 -!- cheater- has joined. 12:21:21 presumably we'll have to shift to Unicode (bot prefix v6) when ASCII (bot prefix v4) runs out 12:21:37 or move to letters, so we can have bots respond on random sentences that happen to begin with v or whatever 12:21:56 ¬botsnack 12:22:06 elliott: liftM2 (flip poke) pop popVec 12:22:15 Deewiant: ITYM liftA2 12:22:16 Maybe 12:22:24 ITIDC 12:23:44 Couldn't match expected type `()' against inferred type `Shiro ()' 12:23:44 In the first argument of `liftA2', namely `(flip poke)' 12:23:44 In the expression: liftA2 (flip poke) pop popVec 12:23:50 ITIDC? 12:24:03 ... I Don't Care 12:24:06 IDC = I don't care, perhaps the IT was just copying ITYM? 12:24:16 oh 12:24:28 Oh right, lift* does a lift and not just the binary op 12:24:53 @hoogle (a -> b -> m c) -> m a -> m b -> m c 12:24:54 Control.Monad zipWithM :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m [c] 12:24:54 Control.Monad zipWithM_ :: Monad m => (a -> b -> m c) -> [a] -> [b] -> m () 12:24:54 Control.Monad foldM :: Monad m => (a -> b -> m a) -> a -> [b] -> m a 12:24:54 ORLY :P 12:25:07 Ohwellz 12:25:25 elliott: Isn't the <$> usually in the end position anyway 12:25:30 No 12:25:41 :t \f x y -> f <$> x <*> y 12:25:42 forall a a1 b (f :: * -> *). (Applicative f) => (a -> a1 -> b) -> f a -> f a1 -> f b 12:25:50 Right, that's liftA2 12:25:53 Right. 12:26:28 I tend to prefer the <$><*>y way for some reason. 12:27:28 -!- BeholdMyGlory has quit (Ping timeout: 240 seconds). 12:27:33 Now to write nextInsPos. :p 12:28:04 Deewiant: BTW, say this line starts at (-1,0), and the IP starts at the location after the imaginary marker |: 12:28:10 a|bcde 12:28:18 Er, no. 12:28:19 a|bcd 12:28:29 If the delta is (2,0), then after hitting the d, does the IP end up at a or b? 12:28:33 b 12:28:34 I can kind of see arguments for both. 12:28:36 Right. 12:31:13 -!- cheater- has quit (Ping timeout: 240 seconds). 12:31:34 -!- cheater- has joined. 12:33:01 # is go to next instruction, not advance, right? :p 12:33:31 # skips one cell, not one instruction 12:33:38 i.e. # space does the same as space space 12:34:00 Hmm, indeed. 12:34:11 # off the edge of fungespace is vaguely insane for that reason, as it's unclear what sort of wrapping should be used 12:34:14 What about '? The same I think. 12:34:54 yep 12:35:01 (I had to look it up to check, but it's cell-based too) 12:35:18 so you can use # or ' to jump over a ; 12:36:18 Couldn't match expected type `IP' 12:36:18 against inferred type `(Value, Value)' 12:36:18 Expected type: IP 12:36:18 Inferred type: Vector 12:36:18 wat 12:36:26 nextPos takes an IP ... 12:37:10 "The name plays on the fungal theme that has attached itself to Befunge" Oh yes Deewiant, that totally wasn't a one-man crusade. 12:37:28 It wasn't my idea. 12:37:28 (I'm just reading to see how AWESOMELY FAST my interpreter is going to be.) 12:37:37 Deewiant: Who do we blame, then? :-) 12:37:37 -!- cheater- has quit (Ping timeout: 240 seconds). 12:37:40 Fungus was the original third-party test suite. 12:37:44 True. 12:38:18 And now we've got stinkhorn and whatnot. 12:38:34 Where is Asztal, anyway. 12:38:42 He seems to have fallen of the face of the earthterwebs. 12:38:53 hmm, last seen 2010-04 12:39:37 ais523: I've come to think that # off the edge is pretty easy, just think of the program as surrounded by spaces on all sides 12:39:50 -!- BeholdMyGlory has joined. 12:39:56 -!- BeholdMyGlory has quit (Changing host). 12:39:56 -!- BeholdMyGlory has joined. 12:40:02 Then # just skips one of the 2^31-ish spaces and you arrive on the other side normally 12:40:03 Deewiant: "Think of"; it IS :P 12:40:22 Well, you still need to think of it 12:40:43 Deewiant: indeed; although arguably, the bounding box stuff in y implies that # past the bounding box should wrap 12:40:48 http://d.puremagic.com/issues/show_bug.cgi?id=3001 <-- This issue is well attended-to 12:41:07 Yep 12:41:14 what does y on positive do? 12:41:16 UNDEF? 12:41:21 y on positive? 12:41:28 The y "Get SysInfo" instruction, only available in Funge-98, pops one value off the stack. If the value is zero or negative, y tells you far more than you ever really want to know about the underlying Funge interpreter, operating system, and computer (and is thus usually followed soon after by a n instruction). 12:41:36 See below. 12:41:48 Oh :P 12:41:57 That's boering. 12:42:06 I wonder what fun fun thing I can make = do. 12:42:17 Ooh, maybe interpret it as elisp and start Emacs with it. 12:42:25 Or give it to ghci :) 12:43:03 y on positive is a pick instruction 12:43:11 which can even pick below the sysinfo, if you can somehow work out how big it is 12:43:24 wow, that's brilliant 12:43:39 most inefficient pick ever? 12:43:49 Pretty much yes 12:43:52 1 cell containing the number of bytes per cell (global env). 12:43:53 aka cell size. Typically 4, could also be 2, 8, really really large, infinity, etc. 12:44:00 I like how it states you have to put it in a cell, and then tells you it might be infinity. 12:44:16 Deewiant: What is that team number crap anyway :-P 12:44:18 More precisely, wtf is NetFunge. 12:44:24 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 12:44:29 elliott: I think efunge pushes -1 for bignum 12:44:31 Something that never really got anywhere 12:44:38 Deewiant: You mean like Befunge? 12:44:50 ais523: no, clearly that's for a TURKEY BOMB Funge-98 interpreter 12:44:52 Closer to Unefunge 12:45:26 -!- invariable has joined. 12:45:36 Deewiant: I like how it says that y can push basically anything for what = does, so long as it's in the registry. Chris should have used the tired-and-tested route of burdening IANA with handling the assignments. 12:45:42 *tried, but also tired 12:46:01 -!- poiuy_qwert has joined. 12:46:09 BeGlad is Befunge Gladiators, NetFunge I don't think I've heard anything else about 12:46:15 elliott: isn't IANA's sole purpose to handle random assignment registries for the IETF? 12:46:20 ais523: precisely! 12:46:34 thus, burdening them with it is what you're meant to do, they exist to stop other people being burdened with them 12:47:11 ais523: I bet when they gave the IPv4 space to IANA they were like "yeah, manage our toy until we get a production-ready implementation" 12:47:26 heh 12:47:32 "shouldn't be too hard" 12:47:36 what about DNS, though? 12:47:51 -!- variable has quit (Ping timeout: 260 seconds). 12:47:55 [[The following sentence: 12:47:55 The word "Befunge" started life as a typographical error for the word "before," typed by Curtis Coleman at 4AM on a BBS chat system. 12:47:56 Was changed by User:Aardwolf (by moving the comma) to: 12:47:56 The word "Befunge" started life as a typographical error for the word "before", typed by Curtis Coleman at 4AM on a BBS chat system. 12:47:56 And then reverted by Graue, who suggested that Aardwolf 'leave the pedantry to those of us who know the rules'.]] --Talk:Befunge 12:47:59 I'm not entirely clear on how ICANN vs. IANA works on that 12:48:08 Maybe Graue should leave the pedantry to those of us who realise that the British exist. 12:48:16 -!- invariable has quit (Read error: Operation timed out). 12:48:24 ais523: isn't ICANN controlled by IANA? 12:48:30 I don't know 12:48:36 that's why I said I wasn't entirely clear on it 12:48:39 The Internet Corporation for Assigned Names and Numbers (ICANN, pronounced /ˈaɪkæn/ EYE-kan) is a non-profit corporation headquartered in Marina del Rey, California, United States that was created on September 18, 1998, and incorporated on September 30, 1998[1] to oversee a number of Internet-related tasks previously performed directly on behalf of the U.S. government by other organizations, notably the Internet Assigned Numbers Authority (IAN 12:48:39 Er, isn't it just the opposite way around? 12:48:40 A). 12:48:44 seemingly, yes 12:48:55 "The technical work of ICANN is referred to as the IANA function." 12:50:35 -!- cheater- has joined. 12:51:05 hmm, wtf 12:51:16 no, really 12:51:17 wtf? 12:51:25 oh 12:51:26 durrrr 12:51:28 :)) 12:52:14 Deewiant: good news!!!! 12:52:19 my interpreter now goes into a loop on sanity.bf!! 12:52:26 Looking at IPv6 hall of shame (sites with AAAA records that just plain can't work): 12:52:30 That's mediocre news at best 12:52:53 -!- variable has joined. 12:52:53 Deewiant: That's GREAT news!!!!!! 12:52:59 Exclamation marks!!!!!!!! 12:53:18 Ilari: how does that happen? sites wanting to look IPv6 compatible? 12:54:02 Deewiant: Oh, I see the problem. 12:54:09 The problem is that I'm retarded, if anyone wants to know. 12:54:30 *Shiro.Interpreter> main 12:54:30 HERE BE: 9 12:54:30 HERE BE: 9 12:54:30 HERE BE: 9 12:54:30 HERE BE: 9 12:54:31 HERE BE: 9 12:54:32 HERE BE: 9 12:54:34 see the problem? 12:54:53 *** Exception: ExitSuccess 12:54:56 EXCEPTIONAL SUCCESS 12:55:00 *rimshot* 12:55:42 Deewiant: What has four legs, three arms, and hangs on mycology.b98? 12:56:00 You tell me 12:56:05 Deewiant: Shiro 12:56:08 But with four legs 12:56:10 and three arms. 12:56:23 ais523: Perhaps they're anti-IPv6, and want to avoid being connected by people with IPv6 connectivity. Perhaps the AAAA records contain v6 addresses full of nasty messages. 12:56:29 Is it just taking five minutes to load the file?-) 12:56:38 Deewiant: Nope, took less than a second for that, I checked :P 12:56:53 And it didn't print anything? 12:56:55 fizzie: or INTERCAL programs 12:57:00 Deewiant: It, uh, isn't executing instructions, though. 12:57:03 esr was working on a spec to encode INTERCAL into IPv6 addresses 12:57:04 My debug prints aren't running. 12:57:10 I conclude that toNextIns is bugged or something. 12:57:16 Mainly addresses from 6bone range (6bone is DEAD), ULA addresses, link-local addresses, loopback, addresses in compat ranges, addresses in IETF-reserved ranges (obviously made up), etc... 12:57:19 elliott: It took less than a second for it to start loading the file, but it hasn't evaluated it yet 12:57:27 Deewiant: I `seq`'d it. 12:57:40 Maybe I need DeepSeq :P 12:57:41 `seq` on something like a Map doesn't help much ;-) 12:57:45 Ilari: hmm, do any sites have v4 addresses for loopback? 12:57:53 and would browsers respect them if they did? 12:57:54 I used to have a 3ffe::/16 address. 12:57:55 You need rnf or Map.size or whatever 12:58:07 print (elems (fungeSpace st)) 12:58:10 Hmm, right, Map.size should do it. 12:58:13 No output. 12:58:22 Some do, but probably not those. 12:58:23 * elliott decides to not do it with runhaskell. 12:58:58 ghc -O2 -finline-functions 12:59:09 ais523: Quite a lot of "internal" zones have a A record of 127.0.0.1 for the host "loopback", to make the word "loopback" always work even if some piece of code appends a domain search suffix in. I wouldn't be surprised if some of those records would be Internet-visible too. 12:59:11 There's also some site that has AAAA nameservers set to ::1, which causes trouble. 12:59:24 elliott@elliott-MacBookAir:~/Code/shiro$ ./shiro 12:59:24 75489 12:59:27 Deewiant: That's... not right. 12:59:40 Deewiant: Or is it? 12:59:43 The size of the map? 12:59:46 Yes. 12:59:57 $ tr -d ' \n' < mycology.b98 | wc -c 12:59:57 76400 12:59:58 I don't know, sed away the spaces and wc it 12:59:59 Guess it's right then. 13:00:03 tr, man, tr! 13:00:16 Okay, so it's definitely toNextIns probably. 13:00:27 Oh wait, at the start I want "toNextInsOnlyIfIt'sASpace". 13:00:37 If you'd added \r to that you might have got pretty close 13:00:39 The "definitely -- probably" construction, one of my favourite parts of natural languages. 13:01:15 elliott: It's much handier if toNextIns can be called unconditionally :-P 13:01:33 Deewiant: Yes, but then it'd skip over the _valid_ first instruction. 13:01:35 Obviously. 13:01:40 Because you call it from the previous instruction. 13:01:44 No? 13:01:52 $ tr -d ' \f\r\n' < mycology.b98| wc -c 13:01:53 75489 13:01:56 why don't you start the IP at the end of the first line? 13:02:00 to avoid the special case? 13:02:06 There are programs that use unified IPv4/IPv6 space. Disable IPv6 support on host and these just plain break (they don't need IPv6 addresses, but do need IPv6 support). 13:02:10 ais523: It's important to manage my ticks properly. 13:02:11 elliott: My toNextIns doesn't move if it's on an instruction. 13:02:20 Deewiant: Oh, so you do "advance; toNextIns"? 13:02:25 That... makes sense, yeah :P 13:02:28 elliott: start the tick counter at -1, then 13:02:34 Well. 13:02:37 "toNextIns; ...; advance" 13:02:40 Sometimes you want advance, sometimes toNextIns, sometimes both. 13:03:07 Deewiant: BTW, ghc doesn't have -finline-functions. :D 13:03:21 I was poking fun at gcc -funroll-loops. 13:03:24 I know. 13:03:57 The j "Jump Forward" instruction pops a value off the stack, and jumps over that many spaces. If there is a 1 on the stack, j will work like # does. e.g. 2j789. would print 9 and leave an empty stack. Negative values are legal arguments for j, such that 04-j@ is an infinite loop. 13:04:01 Deewiant: j can only jump over spaces, discuss. 13:04:11 Reread the examples. 13:04:18 Deewiant: It was a joke. 13:04:22 I know. 13:04:23 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 13:04:30 Deewiant: OOH THE SNARK 13:04:34 You'd've done better pasting only the first sentence. :-P 13:04:39 LAZE 13:04:55 doNextIns = do 13:04:56 print 999999 13:04:56 toNextIns 13:04:56 haskel debagging 13:04:59 -!- aloril has quit (*.net *.split). 13:05:05 *io $ print 999999 13:05:18 traceShow 999999 13:05:20 Yep, toNextIns hangs. 13:05:26 Deewiant: Mr. Fancy "Pants" FancyMcPants 13:05:52 OK, so first instruction is 0. 13:05:58 Oh, durrr. 13:06:02 -!- poiuy_qwert has joined. 13:06:06 0.#@ etc IIRC. 13:06:13 elliott@elliott-MacBookAir:~/Code/shiro$ ./shiro75489 13:06:13 999999 13:06:13 HERE BE: 0 13:06:13 999999 13:06:14 It's a start. 13:06:30 75489? :-P 13:06:35 Version number? 13:06:48 Deewiant: That's the first line of output, my terminal went all weird. 13:06:50 But: YES VERSION NUMBER 13:08:28 At least now I have no idea what's wrong. 13:08:29 That's reassuring. 13:09:07 999999 13:09:07 HERE BE: 13:09:08 That's not. 13:09:10 The readme walks you through the start, if it's dying really early. 13:09:45 Deewiant: I don't think that will help, I think my actual advance code is broken :P 13:09:59 -!- Behold has joined. 13:10:03 Which is weird because sanity.bf worked. 13:10:21 Deewiant: I should probably get stringmode soon. 13:10:33 If it printed only 0, vertical movement is broken. 13:10:54 Deewiant: Define broken :P 13:11:08 Interesting, I... don't have ^. 13:11:10 Well 13:12:06 The code is, off the top of my head, something like 0#@>.1#@v followed by . in the vertical direction 13:12:20 Deewiant: Yeah, but that isn't even the problem, I print for every instruction: this thing isn't executing more than one instruction. 13:12:31 This thing is hanging trying to find the next instruction after it advances which for some reason leaves it on a space. 13:13:20 -!- BeholdMyGlory has quit (Ping timeout: 250 seconds). 13:13:52 If you hang on 0# that's pretty impressive :-D 13:16:13 75489 13:16:13 (0,0) 13:16:13 (0,0) 13:16:13 0(136130,0) 13:16:19 Nice 13:16:21 Deewiant: Mycology is 136130 wide, right? 13:16:27 And starts with 0 and then a bunch of spaces? 13:16:28 Not quite, no 13:16:31 Darn 13:16:51 I conclude that nextPos is amusingly fucked... or my loading code which I haven't even tested once, do you think it could be that? 13:17:16 Just print out the first line 13:17:25 *Main> fungeStateFromByteString "ab" 13:17:25 FungeState {stackStack = [], fungeSpace = FungeSpace (fromList [((0,0),97),((1,0),98)]), ip = IP (0,0) (-1,0)} 13:17:26 Wait what. 13:17:28 "(-1,0)" 13:17:39 "Whoops" 13:17:50 initialIP :: IP 13:17:50 initialIP = IP origin west 13:17:51 HURF 13:17:52 DURF 13:18:04 HURFY 13:18:05 DURFY 13:18:06 DURF 13:18:10 Maybe I should've put an @ at the end of sanity.bf :-D 13:18:26 Deewiant: That might be a good idea :P 13:18:29 I guess I didn't expect you'd have working movement and wrapping but an IP that moves in the wrong direction 13:18:33 :-D 13:18:38 nah, sanity.bf should really print out 7654321 if you start the IP going backwards 13:18:58 Deewiant: It reflected because of t, it looks like. 13:19:03 Yep 13:19:06 :-D 13:19:12 That's so amazingly perfect. 13:19:16 I am laughinh. 13:19:18 *laughing. 13:19:52 Deewiant: Hey, it's back to printing nothing again. 13:20:12 Ah. 13:20:16 It hangs on the elusive instruction known only as "v". 13:20:19 I could also have done what I'd do these days and terminate the comment with a ., that way it'd print an extraneous 0 13:20:27 KNOWN ONLY AS V 13:20:33 doCharIns 'v' = go south 13:20:47 south :: Vector 13:20:47 south = (0,-1) 13:20:50 That's not right is it Deewiant. 13:20:57 Nope 13:21:15 Deewiant: ALL MY BUGS ARE IN MY HELPER VALUES 13:21:16 Unless your origin is internally represented as the bottom left corner 13:21:19 Nope :P 13:22:00 Deewiant: Heh, it's just printing 0 now. But only when I press ^C. I need to flush stdout after each print >_< 13:22:24 It'll print newlines eventually 13:22:37 Deewiant: Isn't that hideously inefficient, flushing after each print? Does CCBI do that? :P 13:22:43 Of course it doesn't 13:22:53 CCBI's output buffer is like 10x the size of cfunge's, too 13:22:59 It flushes a lot less 13:23:02 Deewiant: For EFFICIENCY? 13:23:10 Mostly by coincidence 13:24:23 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 13:25:40 Deewiant: I'm going to leave it for a minute and see if it outputs something that isn't 0. :p 13:25:52 I have a feeling wrapping might be quite slow because Mycology is IIRC very wide. 13:26:00 -!- poiuy_qwert has joined. 13:26:03 It shouldn't be wrapping for a long time. 13:26:07 Deewiant: SHUT UP :P 13:27:16 ("beforeToNextIns",(9,0),'v') 13:27:16 ("afterToNextIns",(9,0),'v') 13:27:16 ("beforeToNextIns",(9,1),' ') 13:27:27 Yet it succeeded before: 13:27:32 ("beforeToNextIns",(5,0),' ') 13:27:33 ("afterToNextIns",(6,0),'1') 13:27:42 (9,1) is a . 13:29:26 *Shiro.Interpreter> nextInsPos fs (IP (9,1) (0,1)) 13:29:26 [hang] 13:29:27 **sigh** 13:30:06 Why does your map have a ' ' at (9,1) 13:30:13 *Shiro.Interpreter> fs !@@ nextInsPos fs (IP (9,0) (0,1)) 13:30:13 118 13:30:13 *Shiro.Interpreter> chr 118 13:30:13 'v' 13:30:13 *Shiro.Interpreter> fs !@@ nextPos fs (IP (9,1) (0,1)) 13:30:13 32 13:30:15 *Shiro.Interpreter> chr 32 13:30:18 ' ' 13:30:19 *Shiro.Interpreter> fs !@@ nextPos fs (IP (9,2) (0,1)) 13:30:21 32 13:30:23 *Shiro.Interpreter> fs !@@ nextPos fs (IP (9,3) (0,1)) 13:30:25 32 13:30:28 *Shiro.Interpreter> fs !@@ nextPos fs (IP (9,4) (0,1)) 13:30:29 Your loader is broken 13:30:30 32 13:30:32 Deewiant: THAT'S A VERY GOOD QUESTION, TEN POINTS TO THE GENTLEMAN 13:30:34 Should've stuck with the B8.lines 13:30:34 YOU DON'T SAY 13:30:49 *Shiro.Interpreter> fungeStateFromByteString "abc\ndef" 13:30:49 FungeState {stackStack = [], fungeSpace = FungeSpace (fromList [((0,0),97),((1,0),98),((2,0),99),((3,1),100),((4,1),101),((5,1),102)]), ip = IP (0,0) (1,0)} 13:30:54 Deewiant: This is what we call "hurf durf". 13:30:56 "Whoops" 13:31:04 | w == ff || (w == lf && lastWasCR) = (p, fs, False) 13:31:04 | w == cr || w == lf = ((x,y+1), fs, w == cr) 13:31:05 SPOT BUG 13:31:05 That explains the 136130 13:31:18 s/x/0/ 13:31:27 elliott: heh, it's interpreting \n DOS-style 13:31:34 Or, well, I don't know 13:31:35 Deewiant: *ox 13:31:40 -!- BeholdMyGlory has joined. 13:31:41 ais523: Sorry, they're \r\ns 13:31:41 I'm i-ready. 13:31:45 Hey, hey, whoa, it executed @ after 4. 13:31:47 What does that mean. 13:31:48 elliott: Right, I didn't see that bit 13:31:52 elliott: See readme. 13:31:52 It's printed up to 4. 13:31:55 Deewiant: OKAY OKAY OKAY 13:31:59 I just prefer the personal touch. 13:32:25 Deewiant: but the readme's more than 80 characters wide! 13:32:33 Deewiant: Man, printing "0 1 2 3 4 " takes a whole second. 13:32:40 Only if your tabs are wide 13:32:41 Deewiant: Is that slower than Language::Befunge? 13:32:51 Deewiant: Prepare for ais523 to tell you that all tabs ever are 8 characters. 13:32:52 Yes, I'd say it's quite a bit slower 13:32:55 Deewiant: Tabs are 8 characters. 13:33:00 fizzie: No they're not. 13:33:01 Deewiant: tabs are always 8 characters 13:33:08 fizzie: For one, even if they were, they'd not be. 13:33:11 Tabs are, at the most, 13:33:16 MOVES to a column divisible by 8. 13:33:20 how else would you expect cat to interpret them? 13:33:21 That's not the same as 8 spaces. 13:33:27 Also, tabs aren't "multiple characters". 13:33:31 and yes, I mean divisible by 8, = 8 characters at the start of a line 13:33:40 I thought you said "always 8 characters". 13:33:44 (What characters, I wonder?) 13:33:49 elliott: I was mimicking you 13:33:53 and they're rendered to spaces by the terminal 13:34:09 Ah. So if I made cat output "abcdefgh" on a tab that'd be valid? :) 13:34:11 elliott: You can always get Language::Befunge and compare, maybe your machine is slow enough that they're comparable 13:34:14 It's eight characters. 13:34:39 Deewiant: ~2.1 GHz Core 2 Duo, 4 gigs of RAM and an SSD, I think its slowness can't be put down to my machine :P 13:34:43 -!- Behold has quit (Ping timeout: 255 seconds). 13:34:55 elliott: anyway, failing after 4 means stringmode isn't working 13:34:58 I doubt the extra Hz does too much to Befunge-98 interpreters. 13:35:04 oh, it does? 13:35:07 i don't have stringmode 13:35:09 so that's understandable :D 13:35:32 Ugh, ... I think I have to include stringmodeness in the IP structure. 13:35:40 You're right 13:35:56 Deewiant: But an IP is such a pure thing right now! 13:35:59 Position and delta! 13:36:02 It's like PHYSCIS! 13:36:04 Also, I'm amused that ais is doing the readme-reading for you 13:36:05 PHYSCIS!!!!! 13:36:10 Deewiant: He's my cat(1). 13:36:19 I do have the readme up, I'm just not taking any of it in :P 13:36:40 elliott: and being cat(1), I effectively expand tabs at the start of a line to eight spaces then complain about the width 13:36:43 :D 13:36:45 5 34 " Toggle Stringmode If no reflection on the instruction 13:36:45 occurs, but the string's contents are 13:36:46 interpreted as instructions, a second 13:36:46 "4 " is output before exiting. 13:36:49 Deewiant: That's odd. 13:36:52 Deewiant: My " should reflect. 13:36:55 I don't have an implementation, so. 13:37:06 -!- aloril has joined. 13:37:08 So? 13:37:15 Deewiant: And unimplemented instructions reflect. 13:37:16 Your " reflects and that's why you get 0-4 13:37:20 Problem? 13:37:23 Deewiant: 13:37:23 5 34 " Toggle Stringmode If no reflection on the instruction 13:37:24 occurs, but the string's contents are 13:37:24 interpreted as instructions, a second 13:37:24 "4 " is output before exiting. 13:37:26 Read carefully. 13:37:30 "If *no* reflection ..." 13:37:44 YOUR README IS WRONG, HOW CAN I TRUST IT. 13:37:45 'a *second* "4 "' 13:37:45 Well, did you get a second 4? 13:37:56 elliott: if " reflects, you get one 4; if " doesn't reflect, you get two 4s 13:37:57 Oh. 13:38:04 Read carefully :-P 13:38:05 Stop prejudicing me just because I'm stupid. 13:38:36 Deewiant: What would you call a (position,delta) pair, as part of an IP? 13:38:44 I think I want to separate it out so that functions like advance can still take it. 13:39:07 I don't call it anything 13:39:11 But I'm going home now -> 13:39:32 ais523: Nasty piece of work, that Deewiant! 13:39:33 I'd call it "momentum", it's hilariously unaccurate and misleading. 13:39:45 fizzie: You're a funny one. :p 13:39:48 fizzie: that almost made me laugh, but I'm at work 13:39:58 "unaccurate" makes it. 13:40:06 you could make a Heisenburg reference 13:40:11 omg 13:40:13 quantum funge 13:40:23 fucking yes 13:44:00 maybe i'll call it a posta 13:44:02 it's like position 13:44:03 plus delta 13:44:22 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 13:45:51 Deposition. :p 13:45:53 ais523: oerjan is right dammit 13:45:56 I just started reading a random log 13:45:57 and 13:46:00 -!- poiuy_qwert has joined. 13:46:01 06:21:47 ehird: coding a Befunge-98 interp in Haskell? 13:46:01 06:21:54 that is my intention, yep 13:46:20 what date? 13:46:26 09.01.14 13:46:32 over a year ago 13:46:34 (in the #esoteric Date Format) 13:46:38 ais523: two years ago 13:46:42 ais523: to be exact 13:46:42 hmm, good intentions come to those who wait 13:46:43 :P 13:46:45 and oh right, 2011 13:46:51 "Oh right, a year passed." 13:46:57 shit, that was 2 years ago? 13:46:58 -!- copumpkin has quit (Quit: Computer has gone to sleep.). 13:47:12 2010 is kind of like a big chunk of nothingness from my perspective since I was at the unit for like 11 months 13:47:13 well 13:47:18 more like 9 months in 2010, but yeah 13:47:27 So 2009 is as good as "last year" to me :P 13:48:17 ais523: do you have a copy of the MKRY spec? 13:48:22 I want to be the first to implement it 13:48:36 no, I don't 13:49:22 Here's another suggestion, in case you didn't like the "deposition" ("deltion"?): "plane". Since, you see, it's two vectors, and that defines a plane. Logic, it's what's for dinner. 13:50:13 `addquote Deewiant: What would you call a (position,delta) pair, as part of an IP? I'd call it "momentum", it's hilariously unaccurate and misleading. [...] Deposition. :p [...] Here's another suggestion, in case you didn't like the "deposition" ("deltion"?): "plane". Since, you see, it's two vectors, and that defines a plane. Logic, it's what's for dinner. 13:50:14 295) Deewiant: What would you call a (position,delta) pair, as part of an IP? I'd call it "momentum", it's hilariously unaccurate and misleading. [...] Deposition. :p [...] Here's another suggestion, in case you didn't like the "deposition" ("deltion"?): "plane". Since, you see, it's two 13:50:19 yay, it all fit -- argh 13:50:22 `quote 295 13:50:24 295) Deewiant: What would you call a (position,delta) pair, as part of an IP? I'd call it "momentum", it's hilariously unaccurate and misleading. [...] Deposition. :p [...] Here's another suggestion, in case you didn't like the "deposition" ("deltion"?): "plane". Since, you see, it's two 13:50:31 `delquote 295 13:50:32 *poof* 13:50:34 elliott: that doesn't use two spaces everywhere 13:50:54 ais523: yes it does 13:50:57 the [...] goes in-between the two spaces 13:51:22 `echo " Deewiant: What would you call a (position,delta) pair, as part of an IP? I'd call it \"momentum\", it's hilariously unaccurate and misleading. [...] Deposition. :p [...] Here's another suggestion, in case you didn't like the \"deposition\" (\"deltion\"?): \"plane\". Since, you see, it's two vectors, and that defines a plane. Logic, it's what's for dinner." >>quotes 13:51:24 " Deewiant: What would you call a (position,delta) pair, as part of an IP? I'd call it \"momentum\", it's hilariously unaccurate and misleading. [...] Deposition. :p [...] Here's another suggestion, in case you didn't like the \"deposition\" (\"deltion\"?): \"plane\". Since, you see, it's 13:51:25 that's some insane logic you have there 13:51:28 `run echo " Deewiant: What would you call a (position,delta) pair, as part of an IP? I'd call it \"momentum\", it's hilariously unaccurate and misleading. [...] Deposition. :p [...] Here's another suggestion, in case you didn't like the \"deposition\" (\"deltion\"?): \"plane\". Since, you see, it's two vectors, and that defines a plane. Logic, it's what's for dinner." >>quotes 13:51:31 No output. 13:51:36 `quote 295 13:51:37 295) Deewiant: What would you call a (position,delta) pair, as part of an IP? I'd call it "momentum", it's hilariously unaccurate and misleading. [...] Deposition. :p [...] Here's another suggestion, in case you didn't like the "deposition" ("deltion"?): "plane". Since, you see, it's two 13:51:39 bah 13:51:41 `delquote 295 13:51:43 *poof* 13:53:32 `quote 295 13:53:32 No output. 13:53:41 In other news (of the "abusing environments" series), \theoremstyle{definition} \newtheorem{problem}{Problem} ... \begin{problem} ... \end{problem} seems to make a reasonably nice environment for denoting questions in an exercise paper. 13:54:10 fizzie: Problem? 13:54:19 ais523: my quote system is too robust to break like that! 13:54:20 Problem 1, problem 2, etc. 13:54:25 fizzie: whoosh 13:54:39 06:32:10
13:54:40 06:32:12
C ( -- c... ) 13:54:40 06:32:14
Push ','s 13:54:40 06:32:16
D ( -- c... ) 13:54:40 06:32:18
Push '.'s 13:54:40 06:32:20
E ( -- c... ) 13:54:42 It doesn't do much, but it does do auto-numbering and a bit of \paragraph{}-style emphasis for the numbers. 13:54:44 06:32:22
Push 'e' and 'h' (random) 13:54:46 06:32:24
13:54:48 06:32:26

All pushes from 3 to 15.

13:54:50 there we go 13:54:52 the relevant parts, anyway 13:55:14 fizzie: I was RIFFING on the trollface-"problem?". 13:55:29 ais523: my quote system is too robust to break like that! <--- you appended /two/ lines, I'm wondering if you added a 296 and it got renumbered 295 after the delquote 13:55:32 `quote 296 13:55:33 O, I C. 13:55:34 No output. 13:55:37 ais523: I appended one line. 13:55:41 ais523: It's just that HackEgo cut it off. 13:55:44 when requoting 13:55:45 ah, in that case I misread 13:55:51 ais523: I said "`echo ... >>x" 13:55:54 but ` isn't interpreted by shell 13:55:56 you need `run for that 13:55:58 I thought you were trying to append the second part of the line to the bit that got cut off 13:56:01 heh 14:00:12 ais523: meanwhile, a new high in the abuse of Wikipedia's User namespace: http://en.wikipedia.org/wiki/User:Purpy_Pupple/Maze 14:00:55 ais523: apparently, justified against [[Wikipedia:User pages#Excessive unrelated content]] because its output is used in [[Maze generation]] and because of [[Wikipedia:Featured picture candidates/Maze Generation 2]] 14:01:02 which doesn't really make any sense to me 14:01:13 elliott: you saw that on reddit 14:01:22 ais523: yes, yes I did 14:01:23 :) 14:01:26 in fact, the reddit thread turned into an impromptu MfD 14:01:38 haha 14:01:41 you mean on WP? 14:01:42 I'm surprised it hasn't been nominated, in fact 14:01:45 elliott: no, on reddit 14:01:50 hmm, only one small thread 14:02:03 it resembled an MfD in quite a lot of ways, except for the lack of bolded comments and being a reddit thread rather than a wiki page 14:02:44 "I like keeping my programs as efficient as possible and it would seem to me that this would cause the program to evaluate something it really shouldn't have to. Does the compiler recognize this and not include it in the final compiled code or is there something I don't understand about do-while's?" 14:02:49 after someone suggested using do ... while (0) for a macro 14:02:50 * elliott rage 14:03:20 well, the do just sets a label, which doesn't appear in the final machine code; there's a valid point about the while, except that constant branches are really easy to optimise 14:03:36 even stupidcc would optimise that out 14:04:21 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 14:04:30 ais523: hey, i just thought of another argument why [[Fork bomb]] shouldn't have 70 (hyperbole) almost-identical examples, apart from that merely being a stupid waste of space 14:04:35 (ok, thought of = saw on reddit) 14:04:40 most of those are original research! :) 14:05:59 -!- poiuy_qwert has joined. 14:12:50 -!- augur has quit (Remote host closed the connection). 14:15:59 ais523: what would _you_ call it? 14:16:04 development is blocked on this name :D 14:16:15 I don't have much of an idea, really 14:16:17 FungeIP would do 14:16:38 ais523: no, an IP inclues stringmode 14:16:42 I just mean a pair of (position, delta) 14:16:46 -!- cheater- has quit (Ping timeout: 240 seconds). 14:16:57 Come to think of it; back in the y2k there were "year 19100"s, and possibly some "19910"s, and maybe even some "1900"s and "1990"s, but at least I didn't see any "199:"s. 14:17:17 -!- Lymia__ has quit (Read error: Connection reset by peer). 14:17:32 I think 199: has happened. 14:17:49 -!- cheater- has joined. 14:17:52 elliott: the Windows 3.1 file manager did 19:0 14:18:04 Heh. 14:18:18 wat 14:18:27 No carry for the second digit, I see. 14:18:28 -!- Lymia__ has joined. 14:19:23 "Crashed my entire computer! Great job." --reddit 14:19:39 elliott: it's '1' '9' '0'+((year-1900)/10) '0'+((year-1900)%10) 14:19:50 right 14:20:09 http://esolangs.org/w/index.php?title=Brainfuck&curid=961&diff=20990&oldid=20786 *sigh* 14:20:22 Well, in a few places where the position/delta values have had a name like "Vector", I've seen the pos/delta pair called boringly "Vector2" or some other such. (But it does sound a bit too much like a 2-component vector.) 14:20:23 the links section on the brainfuck article is insane 14:20:38 fizzie: They are in fact called Vector; Vector2 seems a bit odd. 14:20:46 fizzie: But I mean the field name. 14:20:59 What, I think it sounds more even than odd! (Eh eh ee ehehe eh.) 14:21:01 data IP = IP { posdelt :: (Vector, Vector); ... } or whatever 14:21:08 fizzie: ehehehhehehhhehehee,,,, 14:21:18 Sponsored by MKRY, the fingerprint you can trust 14:21:42 hmm, what about a taylor? 14:22:00 on the basis that you've basically got a position and its derivative, which are the basis of the first two terms of a taylor series 14:22:16 That's almost as far-fetched as the "plane", really. 14:22:19 fizzie: did you see when i linked you do that site with a glfunge binary for HP-UX? 14:22:23 quite impressive 14:22:25 ais523: X-D 14:22:44 Clearly we need to figure out what the singular of the plural "taylor" is. 14:22:48 tayle? 14:23:45 fizzie: except that "plane" is incorrect there, as a plane through the origin is defined by two unit vectors, and I think other planes need one unit vector and one ordinary vector 14:23:56 Yes, I noticed; I had google-my-name-found it earlier, too. I didn't have anything to do with the HP-UX packaging; I'm in fact a bit ashamed that my mistakes are so prominent. Maybe some day I'll actually finally do the 3d-glitzy befunge I was envisioning back then. (At least now we've got programmable shaders and all that fluff.) 14:24:21 -!- poiuy_qwert has quit (Read error: Connection reset by peer). 14:24:59 ais523: Well, maybe a "disc" then? One vector for the position, other for the normal, and the length of the normal to specify area/radius? 14:25:06 elliott: I like "tayle" 14:25:18 ais523: Yes, but unfortunately nobody will know what the fuck it means. :p 14:25:29 especially as it's a cool-sounding word as it is, and you don't need to tell people the etymology 14:25:42 fizzie: err, wow 14:25:49 ais523: I'll go with "tayle" if I can't think of a more reasonable name. 14:25:50 fizzie: ... 14:25:53 I think that fails in dimensions other than 3 14:25:59 -!- poiuy_qwert has joined. 14:26:00 ais523: Do you think we could get someone to kickban fizzie? 14:26:04 He really deserves it. 14:26:05 * Ilari remembers he has some messy esolang interpretters for self-designed esolangs. 14:26:09 e.g. it'd be a (3-dimensional) sphere in hyperspace 14:26:24 I should upload my improved 1cnis interp some time, when I finish it 14:26:34 fizzie: Heh, SCKE is yours? 14:26:37 (I had to remove a couple of features in order to improve efficiency) 14:26:46 elliott: Yes, and I'm not proud of that either. :p 14:26:52 fizzie: Holy shit, the GLfunge site has a VA Linux advert (it's a broken image). 14:26:54 elliott: I just needed a hostname lookup and something else. 14:27:02 Isn't SCKE better than SOCK? 14:27:11 But more importantly: VA Linux! Shit! 14:27:15 It's an extension. 14:27:22 And you got some sort of points from that banner. :p 14:27:25 0.9.01 (first version) 14:27:26 * Funge98 works, with the following exceptions: {, }, u, l, h, m, (, ). 14:27:33 Seriously? You wrote the website when it was that incomplete? :-D 14:27:50 HA HA SHAME 14:27:53 Stop being like that. 14:28:03 Sorry, it's just so COMICAL. 14:28:03 The email address is worng too. 14:28:08 fizzie: So SOCK is an extension of SCKE? 14:28:27 No, SCKE just adds a few more commands; you plonk it on after loading SOCK, usually. 14:28:38 elliott: picking on fizzie is rather unlike you... 14:28:54 Do either of those support IPv6? :-) 14:28:55 ais523: It's not serious picking! 14:29:07 It's just gosh-fizzie-truly-is-a-pathetic-excuse-for-a-hu maybe I won't finish this sentence!! 14:29:09 MAYBE I WON'T 14:29:10 Ilari: CLC-INTERCAL supports IPv6 nowadays 14:29:10 Ilari: No; Vorpal's NSCK should, though. 14:29:26 and the way it does it is beautifully insane too, as it's transparent for IPv4 applications 14:29:37 ais523: heh, how does it do it? maybe i'll implement it in SOCK and SCKE :D 14:29:43 SCKE just adds a v4-only gethostbyname() instruction ('H') and a poll command ('P'). 14:29:44 the way it works is, if you DNS lookup an IPv6 address, it returns an IPv4 address in the multicast region 14:29:58 and then translates between them NAT-style 14:30:07 umm, until the application exits, I think 14:30:25 -!- poiuy_qwert has quit (Client Quit). 14:30:30 so IPv4 programs can use IPv6 without any modification at all 14:31:02 fizzie: hmm, what does H's return look like? 14:31:36 elliott: Whatever I returns; usually an integer-mapped IPv4 address. 14:31:39 I suggest the CLC-INTERCAL method be adopted in all other esolangs too, also real-life operating systems 14:31:48 ais523: There's a Internet-Draft for that mechanism. 14:31:55 ais523: http://tools.ietf.org/html/draft-liu-behave-nat46-02 14:31:59 fizzie: what if the hostname ends with %ipv6, it returns instead an IPv6 address? 14:32:08 CLC-INTERCAL: Implementing innovative Internet-Drafts. 14:32:45 hmm, that one isn't numbered 14:32:50 hasn't even been requested for comment yet 14:32:56 I wonder if clc came up with the idea independently? 14:33:24 elliott: If you have bignum cells, maybe. The problem with retrofitting IPv6 into SOCK is that the addresses won't fit in single cells; so you either use some sort of a handle system (with the garbage-collection problems) or have a problem. 14:33:31 also, those page breaks are irritating 14:33:39 fizzie: I'd just push two cells. 14:33:41 and the draft is expired (on sep 8 2010) 14:33:42 Because, you know, radical. 14:33:50 fizzie: how did you find that so quickly? or even know it existed? 14:34:06 ais523: Purely based on the far more popular (and sane) NAT64/DNS64 approach. 14:34:14 also, it seems it was written entirely by China Mobile employees 14:34:17 ais523: Just thought if someone made it, surely they'd call it the obvious "nat46". 14:34:31 ais523: This is the man who found an Ozy and Millie comic something like 10 seconds after vaguely quoting it. 14:34:42 By using Google Book Search and then binary searching a specific year of archives. 14:34:46 His searching power is INFINITE. 14:34:56 and doesn't even mention the range of IPv4 addresses that should be used (maybe that's what the "reserved" addresses up the top can be used for? the IPs wouldn't need to be routable) 14:35:07 (fizzie: Is your searching power infinite? That would be cool.) 14:35:10 elliott: this is why IRC > Google 14:35:18 ais523: but he did it with Google! 14:35:46 yes, but a whole IRC channel full of people who are good with Google and also vaguely remember what they're looking for > one person trying to find it on their own 14:36:48 ais523: yes, but bugging a random IRC channel with something that only you want == no results 14:37:26 There seems to also be a draft with the same name (but from different folks, Alain Durand from SUN Microsystems,inc) from 2002. 14:37:26 elliott: luckily, #esoteric isn't a random IRC channel 14:37:28 Equally expired. 14:37:50 ais523: but it would not be amused if i just told it all my google searches 14:38:03 elliott: it probably wouldn't mind with mine, they're so rare 14:38:19 ais523: well, exactly 14:38:20 the search box in my browser is rarely set to Google at all 14:38:34 generally, it's set to NetHackWiki or Wikipedia, although it's set to Esolang atm 14:38:40 mine's set to BING 14:38:48 note: lies 14:38:49 But BING == Google. 14:38:54 Or at least =~. 14:39:03 (Not the Perl operator.) 14:39:03 there was a modified Bing logo with "powered by Google" in it on reddit :) 14:39:13 so Bing powers Yahoo, and Google powers Bing 14:39:15 ergo, Yahoo is Google 14:39:22 now what's Lycos? 14:39:25 ("Dead.") 14:39:28 And where's Altavista? 14:39:32 fizzie: oh, I interpreted "Not the Perl operator" without the "not" for a moment 14:39:39 altavista is merged with yahoo nowadays, isn't it? 14:39:43 "the most comprehensive search experience on the Web". 14:39:55 hmm, perhaps not 14:40:04 altavista still looks like it always used to, which is pretty nice 14:40:21 I'll search it for INTERCAL as normal, that's my typical nonscientific test to test search engines 14:40:31 Yes, it's nice to have some semblance of stability in this modern, confusing world. 14:40:32 I thought altavista died recently 14:40:35 wait, no, that was some other old engine 14:40:45 ais523: the results page itself is web 2.0'd up 14:40:47 which is quite upsetting 14:40:50 hmm, the search results are copyright Yahoo 14:40:52 it looks like Yahoo's with the logo swapped 14:40:54 *Yahoo! 14:40:57 ais523: er, yes, Yahoo own AltaVista 14:41:01 ais523: and thus Babelfish 14:41:09 Yes, it does redirect itself into a yahoo.com address after searching. 14:41:12 indeed, I think it's just a reskin of Yahoo! nowadays 14:41:14 What a scam. 14:41:20 at least the home page loads quickly :D 14:41:31 http://uk.altavista.com/news/default 14:41:31 oh wow 14:41:33 that is so 2000 14:41:35 that whole page 14:41:54 elliott: either that, or around 1990 14:42:06 "What are Matt’s thoughts on the security of the Vista kernel? 14:42:06 Clearly he wasn’t impressed with NT, but since its technically obsolete I would be very interested to hear an ex-adware coder’s views on the “infectability” of Vista’s kernel." :what: 14:42:13 ais523: heh? 14:42:22 I think they went back to the early-90s style in 2000 or so in order to escape from the horror that was mid-90s 14:42:25 (think Myspace) 14:42:27 My unscientific "my own surname" search finds my name in Microsoft Academic Search -- http://academic.research.microsoft.com/Author/8260699 -- and my Master's thesis in there. 14:42:30 That's bizarroid. 14:42:45 -!- cheater- has quit (Ping timeout: 240 seconds). 14:43:02 it's not that 1990 anyway, less than half the text is linked 14:43:17 back in 1990, typically search engines, as well as the search box, would have a sort of index structure 14:43:24 ais523: nah, 2000 style is very distinctive 14:43:42 ais523: it's WinAmp, it's small pixel fonts, it's custom image buttons that just draw their own pixelly button 14:43:55 it's white on medium-darkish blue, or black on white with bad shades of blue around 14:43:57 it's web safe colours 14:44:03 ah, web safe colors 14:44:19 it's WebMonkey 14:44:22 I remember writing computer games in GDI16, aimed at 256-color screens 14:44:29 which was more than the 16-color I'd previously used 14:44:35 wow fizzie, I'm on page ii of your Master's and I'm already bored 14:44:42 that computer might actually have /been/ 256-color, although I think it was up to 16-bit by then 14:44:46 elliott: It's not exactly terribly exciting stuff. 14:44:48 how is that even possible? :D 14:44:51 -!- cheater- has joined. 14:44:59 I'm not sure if my masters' is online anywhere 14:45:31 fizzie: you neglected to get yourself nicknamed "DIRTY OLD MAN", how are you ever going to win the 2011 PhD challenge two years before it's announced now? 14:45:41 also, you neglected to make it a PhD thesis instead of a Master's 14:45:44 sheesh! 14:45:58 But do note that the FFT spectrum in the flowchart of page 13 (page 23 of PDF) in fact does match the resulting MFCC coefficients at the end. 14:46:02 Google finds no results on a search for the title, anyway 14:46:07 That's the sort of attention to detail you need. 14:46:10 ais523: what about Bing? 14:46:22 oh, I forgot it existed 14:46:23 fizzie: When does the text turn into "blah blah blah blah blah ..."? 14:46:26 ais523: try Cuil too! 14:46:43 "Speech is for the most a natural means of communication" 14:46:44 Also the speech waveform input is bona-fide real data, though the MFCCs and the spectrum are obviously just from one frame. 14:46:46 fizzie: what does that even mean? 14:46:51 I think you accidentally a word 14:47:06 in the first sentence :D 14:47:17 no results on Bing either, although the results it found by trying without the quotes were more relevant 14:47:18 Just substitute in whatever word you like. 14:47:20 "and certainly 14:47:20 it would be advantageous if we could use spoken language as the medium 14:47:20 also when interfacing with computer systems." 14:47:23 can i just state the obvious before I go on 14:47:25 no it wouldn't 14:47:28 and Cuil no longer exists; a pity, in a way (it used to be my default search engine) 14:47:33 Yes, it would. 14:47:37 ais523: lmao, why? 14:47:39 fizzie: no, it wouldn't 14:47:43 Yes, it would. 14:47:49 fizzie: no, it wouldn't :D 14:47:51 Yes, it would. 14:47:52 -!- FireFly has joined. 14:47:52 elliott: because the results were reasonable, and I trusted them more than most of the competition 14:47:53 fizzie: no, it wouldn't :D 14:47:54 Yes, it would. 14:47:56 ais523: tell him he's wrong 14:48:22 It's not saying that you'd need to replace everything with speech; just that there's real use cases for it. 14:48:28 like minecraft 14:48:30 elliott: well, surely it'd be advantageous if you could, just out of academic interest; and surely also advantageous if you never actually used it 14:48:31 jump forwards 14:48:31 jump 14:48:32 jump 14:48:35 look down 14:48:38 jump build jump build jump build 14:48:42 hit creeper 14:48:43 hit creeper 14:48:44 hit creeper 14:49:01 elliott: haha, you saying that over IRC reminds me of commercial voice-control programs 14:49:12 I tried out the one that came with Windows XP for a while, mostly for amusement value 14:49:19 OS X's is ... interesting. 14:49:24 It tends to do whatever you didn't tell it to. 14:49:26 Transcribing large audio/video corpuses so that you can do textual search on them is quite popular now. 14:49:37 elliott: Yes, I kept saying "switch to FireFox" and it instead every time opened iPhoto. 14:49:46 fizzie: textual search? AUDIO SEARCH 14:49:46 But at least it was consistent. 14:49:54 no wait 14:49:57 video search 14:50:06 spectate swamp video search! 14:50:12 ah, that's the one flaw of spectate swamp search 14:50:16 its input is text, rather than another video 14:50:18 So you act out the scene you're looking for in front of a camera? 14:50:26 yes 14:50:28 precisely 14:51:45 ais523: seriously! (position,delta)! name it! i have naming disease! 14:51:48 i can't code until i get names! 14:52:02 I did already, did you not like my name? 14:52:05 What does cfunge call a structure like that?-) 14:52:22 fizzie: probably it doesn't, it's too lame to have like, functions 14:52:26 it's just a bunch of macros basically 14:52:29 ais523: i did not :P 14:52:37 -!- poiuy_qwert has joined. 14:53:33 Yes, it seems it's just funge_vector position; funge_vector delta;. 14:53:49 elliott: So you're stuck on the name and no progress has been made? 14:53:54 Deewiant: YES 14:53:57 THIS IS MY DISEASE 14:54:21 elliott: It's a Ray 14:54:27 elliott: what about ip_pos_delta? 14:54:32 it's the name used by cfunge 14:54:33 Deewiant: ...that...actually makes an upsetting amount of sense 14:54:38 ais523: haha, really? 14:54:45 Or HalfLine, but I prefer Ray 14:54:47 -!- poiuy_qwert has quit (Client Quit). 14:54:52 void ick_save_ip_pos_delta(struct ick_ipposdeltatype* ippd) 14:54:55 Deewiant: Half of an infinite line. Classic. 14:55:01 actually, maybe just IFFI 14:55:15 I just picked a random Funge interp I had handy... 14:55:21 I like Ray too, though 14:55:32 Yes, ray is not bad. 14:55:34 even though it should have an indication of speed 14:55:36 ais523: wanna help me implement IFFI at some point :P 14:55:39 Whelps, off to do some shopping. -> 14:55:40 FastRay 14:55:51 elliott: as long as it doesn't actually involve writing code, sure 14:56:00 ais523: of course it does, C-INTERCAL glue 14:56:06 i'm not touching that code :-D 14:56:06 note that the semantics of IFFI don't require the actual existence of an INTERCAL interp 14:56:10 ais523: It does have an indication of speed, that's the delta('s magnitude) 14:56:12 really? 14:56:18 Deewiant: Yes, but the name Ray doesn't. 14:56:20 Deewiant: I know, it's the name I was talking about 14:56:25 It's the same ray no matter how fast you're travelling. 14:56:52 elliott: it's just a fingerprint for INTERCAL control flow semantics 14:57:09 ais523: why on earth was it implemented by ... right, of course. 14:57:10 :p 14:57:21 plus, an allowance for line numbers to be shared between the Funge program and a different program 14:57:23 which gives you an FFI 14:57:24 ais523: but you had an intercal->funge ffi, didn't you? 14:57:25 right 14:57:42 it's a useful fingerprint even if not used as an FFI, anyway 14:57:46 for certain values of "useful" 14:58:00 but the real merit is in hooking up other programs to the same control system 14:58:03 Maybe I should write an INTERCAL interp so I could do IFFI 14:58:06 so you can jump around between them via COME FROM 14:58:22 and NEXT, etc 14:58:39 Deewiant: :D 14:58:49 Deewiant: does D not have an FFI? ;) 14:59:08 elliott: it probably doesn't have one that works like /that/ 14:59:19 I mean a C FFI 14:59:23 so that he could bind it to C-INTERCAL 14:59:24 C-INTERCAL has some cfunge-only bits, I'd rather be NIH-y and write my own than add CCBI-only stuff to something else entirely 14:59:33 Deewiant: C-INTERCAL doesn't include IFFI, IIRC 14:59:39 So it'd be blank-slatey. 14:59:49 Unless I've misunderstood the extent of the connection between cfunge and its companion 14:59:50 Deewiant: OK, better idea: do it to CLC-INTERCAL using Perl's XS. 15:00:03 Deewiant: IFFI is I think just a big patch to C-INTERCAL but I might be wrong. 15:00:11 as well as the fingerprint implementation in cfunge 15:00:16 Well, "big" 15:00:43 Right, but I thought that the C-INTERCAL bits were at least partly cfunge-specific and not very pluggable to arbitrary interps 15:00:57 elliott: wrong way round, it's actually a patch to cfunge to make it fit into ick's FFI 15:01:03 -!- asiekierka has joined. 15:01:06 plus an expansion library to ick to implement the other side 15:01:08 ah 15:01:14 Deewiant: That's true, yes. 15:01:20 Deewiant: Thus CLC-INTERCAL. 15:01:26 Or for COMPLIANCE, J-INTERCAL. 15:01:34 -!- Sgeo has joined. 15:01:46 I'm alive! I'm alive! 15:01:56 in theory, you could just generate a library and a compiler to .cio and ick wouldn't need to know about the existence of the Befunge side at all 15:01:57 [Note: I am not an it] 15:02:14 Compiling Befunge to INTERCAL? 15:02:26 Or what now? 15:02:50 you made me sing "sick day" by weird al sgeo (in my head) 15:02:53 Deewiant: not exactly; it compiles Befunge to C (via the expedient of generating a program from a template that's pretty much just uses cfunge as a library and calls it) 15:03:46 also, not quite C either; it's a .cio file (which is best explained like this: executable : linker : object file :: C : ick(1) : .cio file) 15:03:54 * elliott reads AnMaster argue against More Readable Use of Cat with 08:44:37 ehird, "can not create process: limit exceeded" 15:04:09 elliott: Mess with your Rays instead 15:04:11 the INTERCAL program is also compiled to .cio, and the two are linked together, then the resulting C file compiled and linked 15:04:33 Deewiant: Needs a better name, Ray would just be the point 15:04:34 Not the delta 15:04:36 Deewiant: Well 15:04:38 No 15:04:44 A ray is specifically the two put together 15:04:46 Deewiant: Ray wouldn't distinguish (1,0) and (2,0) 15:04:55 Deewiant: err, does that explain it? the whole thing's a little tricky to explain 15:05:07 also, I had some sort of idea that some day the .cio files would be reusable, so you didn't have to compile the whole thing in one go 15:05:12 elliott: If it's a ray in a discrete space, like it is, it arguably does 15:05:13 but atm they aren't, and I forget why 15:05:22 ais523: Well enough 15:05:48 Deewiant: Fair enough then. 15:06:09 -!- augur has joined. 15:07:08 so anyway, if you compile INTERCAL and Befunge-98 together, the command line looks like this: "ick -e program.i program2.b98", and it generates program.cio and program2.cio, linking them together with libick.a and libick_ecto_b98.a to form program (.exe, on DOS) 15:07:31 I'm not entirely sure what happens if both the INTERCAL and Befunge programs have the same basename, I think it's a "so don't do that then" 15:08:13 you could also link in one or C programs and an expansion libraries if you liked, along the lines of "ick -e program.i program2.b98 program3.c syslibc" 15:08:23 assuming I've got that arg list in the right order, I'm not sure if it's sensitive to that 15:08:54 but you're only allowed one INTERCAL input file (if you had multiples, you could just concatenate them); and one Befunge file (as it serves as the entry point if it's present) 15:09:00 and other-dimensional Funges aren't supported 15:09:13 (nor is Befunge-93 due to the lack of fingerprints) 15:11:39 @hoogle (a -> b) -> (b -> a) -> (b -> b) -> a -> a 15:11:39 Control.Parallel.Strategies (.|) :: (b -> c) -> Strategy b -> (a -> b) -> a -> c 15:11:40 Control.Parallel.Strategies (.||) :: (b -> c) -> Strategy b -> (a -> b) -> a -> c 15:11:40 Control.Parallel.Strategies (-|) :: (a -> b) -> Strategy b -> (b -> c) -> a -> c 15:11:46 gah 15:11:52 the above is the "within" function, if anyone's curious 15:11:52 @djinn (a -> b) -> (b -> a) -> (b -> b) -> a -> a 15:11:52 f a b _ c = b (a c) 15:12:05 Deewiant: that's not right 15:12:06 it's 15:12:19 f fro to f x = to (f (fro x)) 15:12:28 if we take the first two arguments as a tuple 15:12:31 then it's "within" 15:12:32 ?ty \fro to f x -> to . f . fro $ x 15:12:33 forall a b a1 a2. (a2 -> a1) -> (a -> b) -> (a1 -> a) -> a2 -> b 15:12:39 whatever :P 15:12:45 @djinn (a2 -> a1) -> (a -> b) -> (a1 -> a) -> a2 -> b 15:12:45 f a b c d = b (c (a d)) 15:12:50 @pl \fro to f x -> to . f . fro $ x 15:12:50 flip ((.) . (.)) . flip (.) 15:12:54 for instance 15:13:04 type Accessor a b = ((a -> b), (b -> a)) 15:13:09 ray :: Accessor IP Ray 15:13:14 flip (.:) . (>>>) 15:13:18 er 15:13:19 it's actually 15:13:23 type Accessor a b = ((a -> b), (a -> b -> a)) 15:13:30 ray = (\(IP r _) -> r, \(IP _ s) r -> IP r s) 15:13:33 then you can say 15:13:39 within ray transformRaySomehow someIP 15:13:41 and it's the same as 15:13:48 someIP{ ray = transformRaySomehow (ray someIP) } 15:13:58 you can also define all the setters and stuff based on this 15:14:01 TODO: hack that into Shiro 15:15:48 ip <- ip <$> get 15:15:52 I SHOULD RENAME THAT FIELD 15:15:55 To ips, probably :P 15:15:59 When I implement t. 15:16:23 elliott: s/ip <$> get/gets ip/ 15:16:45 Deewiant: Fuck. I forgot that one space != two spaces in string mode. 15:16:50 I also forgot that spaces take a tick in non-string-mode. 15:16:55 * Sgeo suddenly has VB flashbacks 15:17:09 They don't take a tick in non-string-mode. 15:17:32 -!- MigoMipo has joined. 15:17:54 elliott: one space == two spaces even in string mode, in Befunge-98 15:17:54 Deewiant: Not even a single tick? 15:18:00 ais523: i mean 15:18:02 and they don't take time outside stringmode 15:18:02 one space != zero spaces 15:18:07 err, indeed 15:19:06 elliott: No, not even one. 15:19:35 Deewiant was wroooong. 15:19:38 foo <$> get != gets foo. 15:19:47 Or at least... 15:19:51 Couldn't match expected type `StateT FungeState IO Value' 15:19:51 against inferred type `a -> Value' 15:19:52 In the expression: (!@ k) . gets fungeSpace 15:19:52 In the definition of `peek': peek k = (!@ k) . gets fungeSpace 15:19:59 OH. 15:20:00 Duh. 15:20:04 Should be <$> 15:20:39 Deewiant was riiiight. 15:23:01 Now let's see how Mycology does when spaces are stripped from strings. 15:23:10 0 1 2 3 4 5 5 15:23:16 HEY AIS523 ;) 15:23:27 What is with Reddit and Chrome? 15:23:32 Maybe it's the plugins I use? 15:23:41 6 95 _ East-West If If the comparison is done incorrectly 15:23:41 (i.e. the wrong direction is taken) 15:23:41 an additional "5 " is output. 15:23:41 elliott: _ went the wrong way, perhaps due to reversing the comparison 15:23:49 doCharIns '_' = do x <- pop; if x == 0 then go west else go east 15:23:55 so X-Y if is X if true, Y if false? 15:23:58 erm 15:24:00 *X-Y if 15:24:11 doCharIns '|' = do x <- pop; if x == 0 then go north else go south 15:24:14 is that flipped? 15:24:39 95 _ East-West If b delta <- if (b) (-1,0) else (1,0) 15:24:47 124 | North-South If/2D b delta <- if (b) (0,-1) else (0,1) 15:24:50 Deewiant: Oh my god, you need this binary. It is hilarious watching it type out each letter painstakingly. 15:24:56 elliott@elliott-MacBookAir:~/Code/shiro$ ./shiro 15:24:57 75489 15:24:57 0 1 2 3 4 5 6 7 15:24:57 GOOD:,works 15:24:57 4 GOOD::duplicates 15:24:57 BAD:emptystackpopsnonzero 15:24:59 That took about a minute. 15:25:16 That 4 is suspicious 15:25:20 This is the slowest interpreter ever. 15:25:25 Deewiant: Yeees, I'm not sure what that is. 15:25:30 Maybe some debug. :p 15:25:41 How does it test empty stack popping non-zero? 15:25:42 Given the space it looks like it came from a . 15:25:42 i.e. what instruction 15:25:50 It shouldn't matter 15:25:54 Probably _ 15:25:58 Maybe | 15:26:19 Except that it hasn't tested | yet, so probably _ 15:26:20 Then likely my | is flipped too. 15:26:25 Oh. 15:26:41 Well, it just uses pop. 15:26:46 Oh wait. 15:26:51 tos :: Shiro Value 15:26:51 tos = headOr space <$> toss 15:26:52 SPOT ERROR 15:27:16 Deewiant: That 4 just came again without the space. 15:27:19 I like how you just use the wrong constants everywhere 15:27:27 Yes, it's the source of all my bugs. 15:27:47 Deewiant: It gets slower every single character. I'm not sure why. 15:27:53 Bounds checking? 15:28:25 Seriously, this thing is impressively slow. 15:28:28 Sounds like some big expression getting built up and not forced 15:28:36 Deewiant: Yeah, I have absolutely no strictness annotations. 15:28:42 Dear god it's at 101% CPU. 15:28:46 And doing very little :P 15:28:50 Well, | works. 15:28:52 Ooh, something else works! 15:28:53 What is it! 15:28:54 0! = 1. 15:28:58 SOMETHING ELSE WORKS 15:29:03 It takes a while to figure out what it is though :P 15:29:24 Deewiant: Is it possible to pass Mycology with a stringmode as broken as mine? 15:29:28 I fear it may be. 15:29:35 elliott: in what way is it broken? 15:29:37 No, it's not. 15:29:41 ais523: GOOD:emptystackpopszero 15:29:45 It'll look at spaces eventually. 15:29:47 elliott: heh 15:29:50 BAD:900pgdoesn'tget9 15:29:52 NOOOOOOOOOOOOOOOOOOOOOOO 15:29:54 HA 15:30:06 elliott: are p/g meant to work? 15:30:11 doCharIns 'g' = popVec >>= peek >>= push 15:30:11 doCharIns 'p' = do val <- pop; pos <- popVec; poke pos val 15:30:12 yes 15:30:19 and as far as I can tell, they _should_ 15:30:29 elliott: Wrong order of pop/popVec 15:30:35 Aargh :P 15:30:57 ?. undo pl do pos <- popVec; val <- pop; poke pos val 15:30:57 Parse error at "lette..." (column 47) 15:31:08 ?. pl undo do pos <- popVec; val <- pop; poke pos val 15:31:09 (pop >>=) . poke =<< popVec 15:31:19 Deewiant: But hey, this isn't bad for my second day of coding, if you ask me. Admittedly I asked you a lot of things. 15:31:33 But I figured out most of the instructions myself! And I haven't copy-pasted a single line from CCBI, which is innovative for this channel. 15:32:13 Deewiant: This thing is gonna go bezerk testing my negative k behaviour, isn't it. 15:32:27 n <- pop 15:32:27 advance 15:32:27 toNextIns 15:32:27 if n <= 0 15:32:27 then replicateM_ (fromIntegral (abs n)) advance 15:32:28 else do Ray pos _ <- gets (ray . ip) 15:32:30 replicateM_ (fromIntegral n) (doIns =<< peek pos) 15:32:41 If you get lucky it'll UNDEF 15:32:42 -!- copumpkin has joined. 15:32:42 Arguably it should be advance >> toNextIns that it replicates. 15:32:55 Arguably enough that I'm fixing it now. 15:33:25 No, arguably it shouldn't be 15:33:29 Deewiant: Why not 15:33:31 0k x hits the x 15:33:44 Deewiant: It already does that 15:33:45 I think, anyway 15:33:51 If you make it toNextIns it won't 15:33:55 Deewiant: (advance >> toNextIns). 15:33:59 Yes it would. 15:34:09 Deewiant: Note that 0 is a nop for the replicateM_. 15:34:13 It just starts off with "advance; toNextIns". 15:34:17 Oh right, you do that earlier 15:34:19 It's logical that it would continue to do so for smaller values. 15:34:26 Well 15:34:36 If your code is a nop for zero than any behaviour at all is arguable 15:34:38 For negatives 15:34:46 Or rather, they're all equally un-arguable 15:34:49 Deewiant: I think the main slowness here is that it's calculating the bounds for the entire fungespace every single move. 15:34:53 :-D 15:34:54 Including multiple times for a stream of spaces. 15:34:58 That can't be fast :P 15:35:11 Or rather, they're all equally un-arguable 15:35:15 Hey, mine is, like, continuous. 15:35:18 Looping through 80000 Map nodes every instruction won't be fast, no :-D 15:35:25 And doing it twice, too, I guess 15:35:49 f(n) | n > 0 = normal k behaviour; | otherwise = advance to next instruction |n|+1 times 15:35:49 elliott: replicateM_ (fromIntegral (abs n)) launchTheMissiles matches the spec too 15:35:52 f(n) | n > 0 = normal k behaviour; | otherwise = advance to next instruction |n|+1 times 15:35:56 Deewiant: But mine captures the 0 behaviour ELEGANTLY. 15:36:02 UNDEF:#acrossleftedgeskipseasternmostcellinfile 15:36:07 elliott: No it doesn't, because your thing is just a nop for 0 15:36:10 Deewiant: That's the behaviour you think should be BAD if not for Vorpal, right? 15:36:13 Also, no it's not. 15:36:20 I do "advance; toNextIns" beforehand in k. 15:36:28 Your code for n <= 0 is a nop for 0 15:36:32 -_- 15:36:35 So you can put whatever you like in there 15:36:43 Deewiant: Yes, but I mean the algorithm behind it. 15:36:50 I just moved it above since the else branch would use it too. 15:37:02 UNDEF:#acrossleftedgeskipseasternmostcellinfile 15:37:02 UNDEF:#acrossleftedgehitseasternmostcellonline 15:37:06 Deewiant: That's the behaviour you think should be BAD if not for Vorpal, right? 15:37:12 elliott: those look like IRC channels 15:37:24 I think the fact that you need to do it in both cases just proves that it's not sensible to somehow extend it to negatives :-P 15:37:33 And more or less yes 15:37:35 elliott: that's the naive behavoiur, isn't it? 15:37:38 *behaviour 15:37:41 ais523: I think so 15:37:43 although it's dubious semantically 15:37:47 Not just "for Vorpal" but more that I'm lazy 15:37:50 Deewiant: My # is just "advance" 15:37:56 Should it be advance >> toNextIns? 15:37:57 Or what? 15:38:00 Or a special function? 15:38:03 Your data structure should be better :-P 15:38:09 I can see a case for skips, hits; but skips, skips is more reasonable 15:38:23 hits, hits is what I'd like 15:38:24 GOOD:0k^doesn'texecute^ 15:38:24 D:1k[turnsleftat[ 15:38:26 Deewiant: ...D? 15:38:31 Deewiant: err, I meant hits, hits 15:38:45 elliott: it's not GOOD or BAD, it's just D 15:38:52 It's hung :P 15:38:58 obviously k did something so insane that it hit a random part of fungespace 15:39:25 Deewiant I have no idea what is going on 15:39:31 But I think this means k is broken. 15:39:51 The reason it doesn't say BAD is because your stringmode is broken 15:40:05 Yay :P 15:40:12 Deewiant: I thought the CCBI behaviour _was_ to advance before executing it. 15:40:16 Or is it advance _after_? 15:40:18 Deewiant: apparently you don't check for broken stringmode early enough 15:40:29 ais523: it takes skill to break stringmode as badly as I have 15:40:33 -!- ais523 has left (?). 15:40:36 I know, I forgot to do it for the Befunge-98 half so I inserted it after k 15:40:41 -!- ais523 has joined. 15:40:42 I know, I forgot to do it for the Befunge-98 half so I inserted it after k 15:40:49 EgoBot: I thought you just ignored spaces? 15:41:00 *elliott: 15:41:22 Yay, I think I've fixed it. 15:42:09 Hmm, I wonder if I can get away with ; instead of " there 15:42:31 Couldn't match expected type `s -> a' against inferred type `IP' 15:42:32 have you tested ; by that point? 15:42:32 In the first argument of `gets', namely `ip' 15:42:33 What... 15:42:41 I'm not sure I have 15:42:45 elliott: never use gets, it's deprecated and inherently a security hole 15:42:49 -!- Phantom_Hoover has joined. 15:42:52 ais523: ... 15:42:56 Evidently I have 15:42:58 ais523: :-D 15:43:05 Deewiant: I just hope he's actually joking :P 15:43:10 elliott: I am, obviously 15:43:13 *phew* 15:43:23 ais523: hey, 2007-you would have said that seriously. maybe. 15:43:28 the "deprecated" was intended to make sure 15:43:48 but even a C-style gets would be safe in Haskell 15:43:52 oh duh 15:43:57 Yeah, it seems ; is fine 15:44:07 the second gets uses the first ip as the function 15:44:10 because of the name clash :D 15:44:45 stringmode works 15:45:34 what's wrong with fngr 15:45:37 idgi 15:46:23 "For all fingerprints involving vectors, RC/Funge-98 doesn't, for some 15:46:23 reason, use the IP's storage offset." 15:46:23 eh? 15:46:34 In practice, though, I'd expect people to fix their "" as soon as they see the messed up messages. :-P 15:47:00 i'm too hardcore for that 15:47:06 Deewiant: ooh just realised something 15:47:12 Deewiant: my removing spaces from fungespace on load is a fail 15:47:23 Deewiant: because it means it has to go through the is-it-in-the-map procedure before returning 32 15:47:24 wait no 15:47:29 almost identical behaviour i think 15:47:32 for returning a default 15:47:34 since it exploits Ord 15:47:36 That's actually out of date 15:47:37 never mind :P 15:47:41 Deewiant: ? 15:47:53 The tests don't assume that behaviour, but neither do they depend on it 15:47:57 Re. storage offset 15:48:23 Deewiant: Hmm, I disagree with your interpretation of # 15:48:31 Consider an IP starting at (0,0) with a delta of (2,0) 15:48:40 It STANDS TO REASON that the IP's position is always (2n,0) for integer n. 15:48:43 -!- Phantom_Hoover has quit (Ping timeout: 240 seconds). 15:48:53 elliott: doesn't Deewiant's # interpretation do that? 15:48:54 Therefore, after traversing the infinite Lahey space line magic, it arrives at the other side at (0,0). 15:48:58 ais523: Hmm, right. 15:49:05 I don't see how wrapping and # are any different, though. 15:49:06 (0,0) is (2n,0) with n = 0. 15:49:09 I don't see how wrapping and # are any different, though. 15:49:22 Why does wrapping end up past the start of the line because of the delta, and # not? 15:49:31 Huh? 15:49:35 loop (x,y) (dx,dy) (mx,my) 15:49:35 | x `ltx` mx && y `lty` my = (mx+dx, my+dy) 15:49:37 From my loop. 15:49:41 i.e., for positive dx and dy: 15:49:45 if x < maximumx and y < maximumy 15:49:50 # is just movement 15:49:52 er 15:49:52 You wrap thereafter 15:49:53 *minimum 15:49:59 then resulting position is (minimum x + dx, minimum y + dy) 15:50:00 You don't necessarily hit the start of the line 15:50:11 But with a delta of (1,0) you of course do 15:50:54 Deewiant: Then I don't see why my interpretation of # as advance is wrong. Sure, it wraps but OHHH 15:51:07 It can advance, making it wrap, and will then go to the next instruction. 15:51:09 OK, I think I can fix that. 15:51:53 doCharIns '#' = modifyRay (\Ray (x,y) (dx,dy) -> (x+dx,y+dy)) 15:51:54 TADA 15:52:00 BAD: 1k[ turns left at [ 15:52:04 Baf 15:52:04 # as advance is completely correct, it's just that the way you do wrapping with the bounds rectangle it works a bit weirdly 15:52:05 *Bah 15:52:21 Deewiant: I thought your trace showed that k did advance to the instruction before executing it. 15:52:39 2011-02-07 14:25:42 ( Deewiant) elliott: For the record, this behaviour follows from the impl "move IP; if (arg==0) return; get next instruction; move IP back; while (arg--) execute instruction;" 15:52:49 Move IP back. Right. 15:52:54 -!- Phantom_Hoover has joined. 15:54:31 I've removed the flush and it seems to be going slower because I don't see the incremental character-typing. :P 15:56:45 So add it back, it's more fun that way :-P 15:57:31 You make a good case. 15:58:14 Strangely, the "GOOD: , works" line appears faster than the "GOOD: : duplicates" one. :D 15:58:32 GOOD: , works can't rely on : working yet, so it can't use a loop. 15:58:51 flushes hardly slow down a program that isn't I/O bound anyway 15:58:53 Deewiant: ...That is amazing. 15:59:01 Deewiant: That is possibly my favourite slowdown ever. 15:59:04 So it outputs at 1 char/tick instead of 1 char/7 ticks or so, I forget the loop's speed 15:59:10 :-D 15:59:10 I use them in pretty much all my esolang interps, on the basis that esolangs are basically never I/O-bound 15:59:17 If it's the right-to-left loop it's like 1 char/11 ticks 15:59:25 ais523: Befunge-98 IO is character-based, though. 15:59:35 So flushing is quite more dramatic than e.g. flushing after Underload's S :P 15:59:44 Flushes aren't exactly zero-cost for CPU anyway. 15:59:53 Deewiant: I think my talk about no premature optimisation was a bit much. 16:00:00 How long is the typical Mycology output? :P 16:00:04 When fully passed. 16:00:04 Deewiant: no, but the length of time they take is proportional to the amount of I/O you do 16:00:16 so they hurt I/O-bound programs much more than CPU-bound programs 16:00:45 (this morning, I was learning about GPU-bound programs, and how they can either be memory-bound or thread-bound) 16:00:51 There are plenty CPU-bound programs that do a lot of IO while computing. :P 16:00:55 $ ccbi -f-all mycology.b98| wc -c 16:00:57 11060 16:01:02 Deewiant: In lines? 16:01:10 Shouldn't take long to check, since your interpreter is INSTANT and all. 16:01:13 $ ccbi -f-all mycology.b98| wc 16:01:15 287 1485 11168 16:01:35 G O O D : i n s t r u c t i o n s b e t w e e n ; a r e s k i p p e d 16:01:39 ^ Representation of how slow this is going. 16:01:40 If you remove all the tmp files 16:01:44 284 1470 11005 16:01:48 (I.e. first run) 16:01:56 Deewiant: It changes depending on the run? :P 16:02:06 Well, 284 isn't bad. 16:02:10 Without FILE it can't remove the tmp files that it uses to test i and o 16:02:15 I'm assuming that's the line count. Wait, no. 16:02:18 Or was it FILE; whatever. 16:02:21 What are wc's counts again? 16:02:28 Lines words chars 16:02:29 Oh, lines, words, bytes. 16:02:30 284 lines then. 16:02:39 I forgot that wc can count actual words. :P 16:02:43 UNDEF: # across left edge hits easternmost cell in file 16:02:43 UNDEF: # across left edge hits easternmost cell on line 16:02:50 Deewiant: That's the way, uh-huh uh-huh, you like it, uh-huh uh-huh? 16:02:56 Ayup. 16:03:00 BAD: 0k^ executes ^ at ^ 16:03:00 lol i broked it 16:03:51 Oh, duh. 16:04:03 Deewiant: Ha, it now does the 0 as part of the ORTHOGONAL case. 16:04:10 n <- pop 16:04:11 if n <= 0 16:04:11 then replicateM_ (fromIntegral (abs n + 1)) (advance >> toNextIns) 16:04:11 else do st <- get 16:04:11 let fs = fungeSpace st 16:04:11 let insIP = nextInsPos fs (nextIPPos fs (ip st)) 16:04:13 let Ray pos _ = ray insIP 16:04:15 replicateM_ (fromIntegral n) (doIns =<< peek pos) 16:05:08 s/fromIntegral (abs n + 1)/fromEnum (n == 0)/ and you're good to go 16:05:20 Deewiant: My behaviour is perfectly legal! 16:05:30 Deewiant: Also, that would make -1kx execute x. 16:05:32 Once. 16:05:33 elliott: see if you can get your interp powerful enough to handle fungot reliably 16:05:34 ais523: before learning your second language, have a huge pile of ideas in my head 16:05:37 Which I guess is appealing, in a way :P 16:05:40 *01-kx 16:05:41 I should say. 16:05:49 fungot: it's a little late for that... 16:05:49 ais523: you can still scroll the waves forward until the cone positions match 16:05:56 Deewiant: Wanna run this on your machine so I can find out what's the next thing that's wrong before the sun goes cold? :-D 16:06:01 *that's wrong is 16:06:11 ais523: fungot is mainly an exercise in implementing fingerprints. 16:06:12 elliott: i don't know 16:06:12 Mine probably won't be that much faster, but sure, if you want. 16:06:23 elliott: indeed, although you need to get the basics working too 16:06:38 IIRC it uses TOYS 16:06:44 which was possibly meant to be a joke 16:07:13 Deewiant: Uploading shiro to sprunge now. 16:07:23 I would feel guilty about the abuse of web space, but it's Google's. 16:07:26 So I don't. :P 16:07:35 elliott@elliott-MacBookAir:~/Code/shiro$ uuencode shiro 755 elliott@elliott-MacBookAir:~/Code/shiro$ 16:07:35 :( 16:07:38 it gave up 16:08:00 Deewiant: Got the ability to set up an nc -l -e 'cat >file' on a port? :P 16:08:05 I'm so ghetto. 16:08:09 -!- zzo38 has joined. 16:08:17 http://catseye.tc/projects/funge98/library/TOYS.html aaaargh 16:08:18 elliott: why is pastebinning an interp an abuse of web space? 16:08:25 elliott: tar.us.to:1234 16:08:43 Deewiant: 16:08:45 elliott@elliott-MacBookAir:~/Code/shiro$ cat shiro | nc tar.us.to 1234 16:08:46 elliott@elliott-MacBookAir:~/Code/shiro$ 16:08:48 That was a bit ... quick. 16:08:53 ais523: because it was a uuencoded binary 16:08:59 I just ran that command, I don't know how nc works 16:09:07 elliott: of a Haskell program? 16:09:12 ais523: yes 16:09:18 ais523: a 1.5 megabyte-before-uuencoding binary 16:09:19 why not send source? 16:09:21 Deewiant: I'll just upload it :P 16:09:23 Oh, it took that as a hostname 16:09:24 Try again 16:09:26 ais523: Requires more than a few lirbaries. 16:09:28 *libraries. 16:09:35 Deewiant: It's running. 16:09:51 Deewiant: 1541637 bytes according to wc -c is the magic number you need to kill it at. 16:09:59 Erm. 16:10:00 It's finished already? 16:10:02 -!- asiekierka has quit (Ping timeout: 250 seconds). 16:10:11 1541637 /tmp/shiro 16:10:29 Deewiant: Now cd to mycology.b98 and run it. 16:10:35 (The directory with mycology.b98 in it, that is.) 16:10:38 ../shiro: error while loading shared libraries: libgmp.so.3: cannot open shared object file: No such file or directory 16:10:44 BZZT, try again 16:10:52 Deewiant: You want a static binary? :P 16:10:58 I have libgmp.so.10 16:11:06 Deewiant: Oh, I'm sorry, I'm just OLD-FASHIONED. 16:11:22 So yeah, I suggest the static binary :-P 16:11:53 Deewiant: Well, it's 2.6 megs. 16:11:57 Suspiciously small. 16:12:00 Set up the cat again :P 16:12:04 strip -s it 16:12:06 And it's setup 16:12:17 Deewiant: IIRC Haskell binaries do not like being stripped. 16:12:27 If you say so 16:12:30 I always strip them 16:12:30 Sending the non-stripped one now. 16:13:10 Deewiant: Sent. 16:13:25 I see you use the basename of the path 16:13:30 $ time ../shiro ~/programming/projects/mycology/mycology.b98 16:13:30 shiro: mycology.b98: openBinaryFile: does not exist (No such file or directory) 16:13:39 Deewiant: Now cd to mycology.b98 and run it. 16:13:40 (The directory with mycology.b98 in it, that is.) 16:13:44 There's no command-line interface. 16:13:46 As I said, ghetto. 16:13:56 Oh, it doesn't take a parameter at all, heh. 16:14:00 Enjoy the experience :P 16:14:07 Exciting stuff. 16:14:37 -!- oerjan has joined. 16:14:42 I can quite conclusively say that Language::Befunge is not this slow. 16:14:46 I nearly facepalmed to death today due to misinterpreting what someone said 16:15:05 Deewiant: Yes. For maximum slowness, you need Shiro! 16:15:12 ais523: ? 16:15:15 they'd done a crazy hack that involved mapping someone else's hostname to 127.0.0.1, thus using their own computer as a proxy to it by setting up a tunnel there on port 443 16:15:16 ais523: did you get a concussion? 16:15:24 what ... 16:15:25 -!- asiekierka has joined. 16:15:36 but I heard it backwards, and thought that what they'd said was that they'd remapped 127.0.0.1 to instead go to the other person's website 16:15:37 how did you misinterpret it? 16:15:39 haha 16:15:49 Deewiant: HAS IT CRASHED YET 16:15:52 which would have been truly insane 16:17:28 Shiro has in fact slowed down time as experienced by Deewiant. 16:17:29 and my thoughts were along the lines of "is that even possible" and "what effect would that have on a computer" 16:17:58 I'm half-tempted to actually figure out how to do it and do it to see what happens, but I don't really want to and anyway wouldn't put in enough effort to accomplish anything 16:18:05 14:04:44 ais523: oerjan is right dammit 16:18:05 14:04:47 I just started reading a random log 16:18:08 um wat 16:18:11 oerjan: synchronicity 16:18:29 oerjan: elliott read you talking to him about how he started and never finished Befunge-98 interps in Haskell 16:18:30 elliott: It's gone a bit quiet after 4k # 16:18:31 over a year ago 16:18:41 oerjan: pick a random log the day after I start writing a befunge-98 interpreter in Haskell while talking to ais523, it's me talking to ais523 about implementing a befunge-98 interpreter in haskell 16:18:43 two years ago 16:18:48 heh 16:18:50 Deewiant: Paste the last few lines? 16:18:58 GOOD: 1k[ turns left from k 16:18:58 GOOD: 4k # jumps 4 times from k 16:19:07 Deewiant: Do you know what the next test is? :P 16:19:28 $ ccbi mycology.b98| head -n30 | tail -n5 16:19:33 GOOD: 1k[ turns left from k 16:19:33 GOOD: 4k # jumps 4 times from k 16:19:34 GOOD: 2k ;;;5 executes 5 thrice 16:19:34 GOOD: 2k# jumps twice from k 16:19:34 GOOD: ak47k$ leaves 3 fours on stack 16:20:06 Deewiant: Likely I have a bug in my ;-skipper, then. 16:20:15 That ;;;; is like /**//**/, right? 16:20:21 i.e. two empty comments. 16:20:25 That's three ;, not four 16:20:36 Deewiant: huh? 16:20:39 Then the 5 is commented. 16:21:04 The "comment" started by the third ; is closed by the first ; after wraparound 16:21:16 Deewiant: That's... disgusting :-D 16:21:43 Deewiant: Is it still running? 16:21:48 I think it's running to the right edge of the playfield. 16:21:50 Very, very slowly. 16:21:52 I ^C'd it to get you that output. 16:21:58 Deewiant: OK, let me explain. 16:22:02 Deewiant: You know how slow one tick goes? 16:22:06 i.e. the first GOOD output. 16:22:21 Deewiant: It's doing that, times the width of the playfield at the point. 16:22:25 Deewiant: Which is O(slow). 16:22:32 Deewiant: Think you've got the patience to wait it out? :-P 16:22:40 It should be far less instructions than have been run at that point. 16:22:49 And ; should be faster than running something anyway 16:22:52 Deewiant: Yes, but it's going to be silent all the way. 16:22:53 Deewiant: No. 16:22:55 I am bored. I am a goban. 16:22:56 Deewiant: It's not about the running. 16:22:58 Deewiant: The actual execution is fast. 16:23:05 Deewiant: It's the fact that every time you go forwards, it re-calculates the bounds. 16:23:09 Including as part of the loop. 16:23:13 >_< 16:23:17 SOME MIGHT SAY that this is retarded. 16:23:25 SOME MIGHT SAY that I might fix it right now. 16:23:33 Deewiant: But do you wanna wait it out while I fix it? :P 16:23:39 It'll be faster for you to fix it than for me to run it until it gets further 16:23:44 It'll just be a temporary fix, since the real thing to do is: 16:23:49 It was at 6 minutes when I killed it 16:23:54 -!- cheater- has quit (Ping timeout: 240 seconds). 16:23:55 TODO: Add cached bounds arrays indexed by row and column. 16:24:40 And my procrastination is successful again. 16:24:46 This may be bad. 16:24:50 -!- cheater- has joined. 16:25:12 I keep getting rewarded for putting stuff off until the last minute by being able to actually get it done without trouble. 16:25:37 wow: http://www.schneier.com/blog/archives/2011/02/uk_immigration.html 16:26:15 summary: someone working for UK immigration put his wife on the no-fly list while she was abroad, in order to get rid of her 16:26:26 pikhq, welcome to my world 16:26:46 Deewiant: Open the port again :P 16:26:49 Sgeo: Oh, shaddup, you aren't even getting a real degree. 16:26:56 Done 16:27:02 although people have accused Schneier's sources of being unreliable 16:27:08 He's getting a cheap plastic imitation of a degree! 16:27:13 16:27:19 Deewiant: Uploading. 16:27:27 elliott, everyone here gets the reference 16:27:50 elliott: :) 16:28:33 Deewiant: ENJOY 16:30:38 Deewiant: ... 16:31:21 Now it did the 4k # 16:31:27 'Bout three minutes 16:31:44 Deewiant: It should wrap pretty quickly. 16:31:49 It's just busy-looping, basically. 16:31:53 Rather than bound-counting. 16:32:03 Deewiant: Most of it should just be a straight addition loop until it wraps. 16:33:27 Deewiant: OMGGGGGGGGGGG HOW IS IT DOIIIIIINGGGG 16:33:28 ais523: Do you think his wife will go on the boat if she is not allowed in airplane flying? 16:33:42 Yes. 16:33:43 On the boat. 16:33:51 Clearly she will go on the boat. 16:33:54 zzo38: who knows 16:33:59 elliott: 4k # 16:34:15 how does it take three minutes to do "4k #"? 16:34:20 ais523: it already did that 16:34:28 ais523: it's 2k ;;;5 which takes a long time 16:34:36 I was looking upwards 16:34:50 also, 2k ;;;5 on a line by itself? ouch 16:34:55 ais523: no 16:34:57 ais523: on a line with other things 16:35:05 any of them semicolons? 16:35:18 No :-P 16:35:27 Deewiant: Are you having fun 16:35:50 I'm not exactly staring at it waiting for something to happen 16:36:00 Deewiant: YOU SHOULD BE 16:38:20 I'm unconvinced that anything's going to happen today; how're your optimizations doing 16:38:35 Deewiant: Seriously, this should be not too slow... 16:38:38 It's basically a busyloop. 16:38:55 Sure it's not an infinite busyloop with the semicolons like that? :-P 16:38:59 ais523: what do you think of my recent changes to the Underload page? 16:39:15 oerjan: I like them, it's an improvement 16:39:18 Deewiant: I very much doubt it. 16:39:24 oerjan: eek, you changed things? 16:39:28 good 16:39:31 although you don't mention explicitly that stacks go bottom at the left to top at the right, which is the Underload convention 16:39:35 ew, it's ugly now :( >_> 16:39:39 elliott: he improved the documentation on the basic commands 16:39:41 You're right, it's not infinite, but it is slow 16:39:44 well specifically the Commands section 16:39:45 Deewiant: It finished? 16:39:47 (I tested on a small file) 16:39:56 Deewiant: You STOPPED IT? HOW COULD YOU 16:40:01 I didn't stop it 16:40:05 Oh. 16:40:11 But it's at 12 minutes of CPU time 16:40:18 * elliott resists urge to revert oerjan's change 16:40:40 elliott: i copied the layout from the Glass page, although the stack effect notation is slightly changed (similarly to in my "lambda" notation, they are of course related) 16:40:48 ALWAYS WITH THE EXCUSES FOR UGLINESS 16:41:14 elliott: Seriously, profile it :-P 16:41:26 elliott: of course i was the one who made that layout for the Glass page in the first place 16:41:26 Deewiant: I have absolutely no idea how to do profiling with ghc. 16:41:38 http://www.google.com/search?q=ghc%20profiling oh look it's the first result 16:41:49 Deewiant: Sorry, let me rephrase: Fuck you :P 16:41:51 (Okay, I'll profile.) 16:41:57 Compile with -prof -auto-all 16:42:13 And then use +RTS -p, I think 16:42:34 Deewiant: Will that work if I ^C it? 16:42:36 And grab like only the befunge-93 area of Mycology because that'll take a while 16:42:39 I dunno 16:42:47 Yes. 16:43:05 CAF Main 274 61 0.0 0.0 98.5 98.4 16:43:05 <*>_a4Zn Shiro.Monad 414 1 0.0 0.0 0.0 0.0 16:43:05 stackStack Shiro.Monad 425 2 0.0 0.0 0.0 0.0 16:43:06 lol 16:43:21 Deewiant: Err, is this thing ordered by any useful metric at all? 16:43:39 I *think* it's higher is more used. 16:43:40 Beats me 16:43:45 Bounds time is 86% which is no surprise. 16:43:47 insertFS is 11%. 16:43:50 I'll try strictness-peppering. 16:44:23 Get rid of the bounds crap :-P 16:44:31 Deewiant: That would be Really Hard. 16:44:36 Deewiant: As in, not right now :P 16:44:42 At least don't do it on every iteration of loop 16:44:47 I don't. 16:44:49 That's what I fixed. 16:44:58 Okay 16:45:02 Wiat. 16:45:03 Wait. 16:45:18 Deewiant: If you just remove *.o files and not *.hi files, does it not recompie? 16:45:24 Oh, no, .hi is just the interface. 16:45:32 Or, wait, no, is it? 16:45:48 If it says [ 1 of 1] compiling foo.hs then it recompiles 16:45:55 What do you need to enable to be able to use !Foo in types again? 16:46:00 If it just says "linking exec" then it didn't 16:46:02 ais523: i put parentheses around the variables because i think it's more intuitively useful in practice, it gives the whole stack change/lambda notation a meaning of "running this command/program after the program to the left changes the result into the program on the right." Although the S case slightly breaks that. 16:46:13 I don't know, I don't use types that much :-P 16:46:21 Use more newtypes 16:46:39 oerjan: indeed, my first Underload interp actually worked more or less directly on the principle there 16:46:48 it's just, it probably needs to be explained to people who don't know Underload 16:47:17 on the basis that they're the people who need to be told how the lang works, people who do know Underload already know 16:47:58 Deewiant: OK, I give in, I'll add bounds information. 16:48:00 !bf joust test >>(+)*100000 16:48:24 elliott: how did you get as far as you could without it? 16:48:28 !bfjoust test >>(+)*100000 16:48:35 ais523: hm do you mean you used those as rewriting rules on the program? because that should be possible. 16:48:39 ais523: By calculating bounds all-the-fucking-tmie. 16:48:41 *time. 16:48:41 oerjan: yep, pretty much 16:48:43 ais523: He recalculated it every time anything moved 16:48:51 by looping over every cell in fungespace? 16:48:51 I.e. the IP or any intermediate vector 16:48:54 Yep 16:48:54 *time. 16:48:55 ais523: Yes. 16:49:02 also, when the /IP/ moves? 16:49:04 wow 16:49:15 It was impressively slow. :) 16:49:16 And in k, presumably, when fetching the next instruction etc 16:49:32 Now to go from rowBounds and colBounds to bounds. 16:50:11 Hmm. 16:50:15 , rowBounds :: Map Value (Value,Value) -- min, max 16:50:16 , colBounds :: Map Value (Value,Value) } 16:50:19 That's not the ideal structure, is it? 16:50:23 -!- impomatic has joined. 16:50:25 I don't see how to go from that to minimum and maximum coordinates. 16:50:32 Score for ais523_test: 0.0 16:50:37 HI AIS523 16:51:12 hmm, naturally 16:51:17 I think it draws some runs and loses others 16:51:21 I was just curious to see what would happen 16:51:30 actually, wait, why doesn't that draw with defend7? 16:51:48 oh, it does 16:51:51 just doesn't score any points from that 16:52:17 heh, there are a couple of new programs by impomatic on the hill since I last looked 16:52:22 any particular ingenious strategies in them? 16:52:42 No :-( 16:52:46 oh, and some of Lymia__'s evo programs finally got onto the leaderboard 16:53:22 the side-effects seem to be the death of defend9 and vibration (finally), and defend7 winning 16:53:48 :t maybe 16:53:49 forall b a. b -> (a -> b) -> Maybe a -> b 16:54:26 Although I got a confusing score from one of the new ones -> http://twitpic.com/3xcqje 16:54:27 elliott: cpressey replied to your questions on the wiki, btw 16:54:39 ah, thanks 16:54:52 -!- Sgeo has quit (Ping timeout: 255 seconds). 16:54:55 impomatic: looks like you have the same client bug as Mibbit 16:55:37 I should try to come up with another jouster along the lines of defend7/defend9, but it's hard to improve on the relative simplicity of the defend7 formula 16:55:44 9.9 " 9 . 9 " displays as a smilie 16:56:11 Couldn't match expected type `Map Value (Value, Value)' 16:56:12 against inferred type `Map 16:56:12 (Map Value (Value, Value)) (Value, Value) 16:56:12 -> Map (Map Value (Value, Value)) (Value, Value)' 16:56:18 in fact, I only recently realised why defend7 works as well as it does (it's mostly because 256 is a power of 2) 16:56:37 O RLY 16:57:53 even so, it's beaten by various slow rushes; it's just that slow-rushing seems to be quite a bad strategy on the current hill for whatever reason 16:57:53 -!- Behold has joined. 16:58:08 (even though myndzi_slowrush is second; it must be a very good slow rush) 16:58:27 :t Map.alert 16:58:29 Couldn't find qualified module. 16:58:29 :t Map.alter 16:58:30 Couldn't find qualified module. 16:58:33 :t Data.Map.alter 16:58:34 forall a k. (Ord k) => (Maybe a -> Maybe a) -> k -> M.Map k a -> M.Map k a 16:59:25 wow, defend7 has been on the hill for over a year 16:59:52 along with a few other programs that aren't mine 17:00:04 hmm, I have a feeling my row code is broken 17:01:09 -!- BeholdMyGlory has quit (Ping timeout: 250 seconds). 17:01:21 Xe180He8O0PW118eeeQQQ118Q1O 08DO 17:01:29 ais523: ok now it got _really_ ugly, is there a better way to format that... 17:01:39 yes, by killing it with fire :D 17:01:41 FIIIRE 17:01:48 oerjan: context? 17:01:54 ais523: underload page 17:01:56 oh, the wiki 17:02:23 Wonder what TECO would do with code like that. 17:02:38 i considered a table, except i vaguely recall i considered it for glass and decided against it... 17:02:39 I only poll that every 15 minutes or so 17:02:54 Oh, I appear to have the oldest on the hill, survived 21 months :-) 17:03:21 ais523: well i didn't think the conversation had ended properly, so i didn't bother adding context... 17:03:56 it hadn't, just I'd dumped the conversation state from mental cache in order to make room for other things 17:04:09 so I needed to reload the information that would have been cached from other users of the channel 17:04:18 INSUFFICIENT SHORT-TERM MEMORY FOR IRCING 17:06:13 Deewiant: Jumps straight to 17:06:14 GOOD: 4k # jumps 4 times from k 17:06:15 now 17:06:16 where it hangs 17:06:18 :/ 17:06:23 literally, jumps 17:06:51 I'll assume this is an infloop then 17:07:10 39 minutes aaand ^C 17:07:26 Deewiant: :-D 17:07:33 Deewiant: Time to add debugge magick. 17:09:03 Deewiant: Queer, it finds the end of the semicolon. 17:09:38 And hangs on a space. 17:09:51 Wretched spaces. 17:10:48 hmm, are Lymia__'s evobots based on the current hill? or an old hill? or something else? 17:11:17 The top 10 from a short while ago IIRC 17:11:35 ah 17:11:41 no, on ais523's 17:11:43 i think 17:11:44 on the assumption that they can push off the bottom 10? 17:11:53 Ugh, it's even buggy, For some reason it's doin' it rong. 17:12:03 if they're based on mine, it's a little hilarious that they pushed defend7 up to the top 17:12:06 afterSemicolon IP {ray = Ray (606,40) (1,0), isStringMode = False} (32) 17:12:06 afterSemicolon IP {ray = Ray (607,40) (1,0), isStringMode = False} (32) 17:12:06 afterSemicolon IP {ray = Ray (608,40) (1,0), isStringMode = False} (32) 17:12:06 afterSemicolon IP {ray = Ray (609,40) (1,0), isStringMode = False} (32) 17:12:06 afterSemicolon IP {ray = Ray (610,40) (1,0), isStringMode = False} (32) 17:12:06 afterSemicolon IP {ray = Ray (611,40) (1,0), isStringMode = False} (32) 17:12:08 as that program was in the set 17:12:08 afterSemicolon IP {ray = Ray (612,40) (1,0), isStringMode = False} (32) 17:12:13 Oh, I think I'm not taking advantage of my special bounds functions. 17:12:15 TODO: fix. 17:12:27 The end is at around 768 17:12:33 909 for me. 17:12:34 Well, in the y-direction 17:12:34 God knows why. 17:12:39 In the x-direction it's at 180 :-P 17:12:40 Oh, x. 17:12:43 Well, 909! 17:13:06 I'm going to assume that nextIPPosWithBounds is broken. 17:15:18 loop (-1528,40) (1,0) (0,0) 17:15:22 O-kayy. 17:15:31 loop (-3436,40) (1,0) (0,0) 17:15:43 LOOKS RIGHT TO ME 17:16:02 loop :: Vector -> Vector -> Vector -> Vector 17:16:02 loop (x,y) (dx,dy) (mx,my) 17:16:02 | trace ("loop " ++ show (x,y) ++ " " ++ show (dx,dy) ++ " " ++ show (mx,my)) False = undefined 17:16:02 | x `ltx` mx && y `lty` my = (mx+dx, my+dy) 17:16:02 | x `gtx` mx || y `gtx` my = loop (x-dx, y-dy) (dx,dy) (mx,my) 17:16:03 | otherwise = (x,y) 17:16:07 where ltx, gtx, lty, gty :: Value -> Value -> Bool 17:16:09 ltx = posneg dx (<) (>) 17:16:11 gtx = posneg dx (>) (<) 17:16:13 lty = posneg dy (<) (>) 17:16:15 gty = posneg dy (>) (<) 17:16:17 ANY IDEAS DEEWIANT 17:16:23 where 17:16:26 let mx = posneg dx mnx mxx 17:16:26 my = posneg dy mny mxy 17:16:40 so let's see 17:16:46 m = mx 17:16:50 and lt/gt are lt/gt 17:16:50 so 17:16:57 x < mnx && y < mnx 17:16:57 aha 17:16:59 needs to be || 17:17:03 although i recall that broke something 17:17:04 but whatever 17:17:47 About to test division by zero... 17:17:47 GOOD: 1 / 0 = 0 17:17:47 shiro: divide by zero 17:17:50 Deewiant: It's totally bitchin' fast now. 17:17:58 !bfjoust tripwire3 >(-)*5>(+)*5(>)*7[(>)*3(>[-]+)*5(.)*100000](>[>[-]+])*18>>[[+]] 17:18:03 Score for ais523_tripwire3: 3.9 17:18:08 hmm 17:18:16 (.)*100000 seems a bit... excessive 17:18:20 Deewiant: Although I don't currently shrink bounds. 17:18:34 that one seems good vs. Lymia__ and impomatic, and bad vs. everyone else 17:18:43 Deewiant: What should rem-0 be in funge? Taking /0 = 0 and thus 0? 17:19:08 "Remainder by zero is subject to the same rules as division by zero" 17:19:11 Yep. 17:19:16 BAD: 21w doesn't turn 17:19:24 Wait. 17:19:30 It doesn't _push_ ], z, [ to the stack. 17:19:32 It _executes_ them 17:19:33 *them. 17:19:34 X-D 17:20:40 !bfjoust wait >+[]<[](+)*128 17:20:47 Score for impomatic_wait: 0.0 17:20:48 BAD: wraparound with non-cardinal delta doesn't work 17:20:49 BAD: { reflected, maybe ran out of memory 17:20:49 elliott: w makes more sense now? :-D 17:20:56 Deewiant: I haven't implemented {, but that first one... ffffuuu 17:21:00 Also, yes, a lot more sense :P 17:21:12 I thought you were meant to like, p it somewhere in your path. 17:21:33 !bfjoust stridewire (>)*9[(-----[+]>)*20[[+]]]>>[(-----[+]>)*18[[+]]]>>[(-----[+]>)*16[[+]]]>>[(-----[+]>)*14[[+]]]>>[(-----[+]>)*12[[+]]]>>[(-----[+]>)*10[[+]]]>>[(-----[+]>)*8[[+]]]>>[(-----[+]>)*6[[+]]]>>[(-----[+]>)*4[[+]]]>>[(-----[+]>)*2[[+]]]>[[+]]>[[+]]>[[+]] 17:21:36 Score for ais523_stridewire: 21.6 17:21:40 hmm, not bad 17:22:54 I wonder if I change the stride to 3? 17:23:08 Deewiant: I like that "maybe ran out of memory" part. 17:23:13 A LIKELY STORY 17:23:37 !bfjoust stridewire (>)*9[(-----[+]>)*20[[+]]]>>>[(-----[+]>)*17[[+]]]>>>[(-----[+]>)*14[[+]]]>>>[(-----[+]>)*11[[+]]]>>>[(-----[+]>)*8[[+]]]<>>[(-----[+]>)*5[[+]]]>>>[(-----[+]>)*2[[+]]]>[[+]]>[[+]]>[[+]] 17:23:39 Score for ais523_stridewire: 19.2 17:23:48 yep, 2's probably better there 17:23:53 !bfjoust stridewire (>)*9[(-----[+]>)*20[[+]]]>>[(-----[+]>)*18[[+]]]>>[(-----[+]>)*16[[+]]]>>[(-----[+]>)*14[[+]]]>>[(-----[+]>)*12[[+]]]>>[(-----[+]>)*10[[+]]]>>[(-----[+]>)*8[[+]]]>>[(-----[+]>)*6[[+]]]>>[(-----[+]>)*4[[+]]]>>[(-----[+]>)*2[[+]]]>[[+]]>[[+]]>[[+]] 17:23:57 Score for ais523_stridewire: 21.4 17:24:09 elliott: Well, it's specced 17:24:23 !bfjoust wait [](+)*128(>[-])*30 17:24:29 Score for impomatic_wait: 5.4 17:25:00 because sacrificing 1/3 of the games for a small improvement on the other 2/3 makes it worse against bots it was close to beforehand 17:25:05 what about if I add decoys? 17:25:24 !bfjoust stridewire >>++>--(>)*6[(-----[+]>)*20[[+]]]>>[(-----[+]>)*18[[+]]]>>[(-----[+]>)*16[[+]]]>>[(-----[+]>)*14[[+]]]>>[(-----[+]>)*12[[+]]]>>[(-----[+]>)*10[[+]]]>>[(-----[+]>)*8[[+]]]>>[(-----[+]>)*6[[+]]]>>[(-----[+]>)*4[[+]]]>>[(-----[+]>)*2[[+]]]>[[+]]>[[+]]>[[+]] 17:25:28 Score for ais523_stridewire: 14.9 17:25:52 heh, it's surprising how much worse the small decoys make it, although that doesn't surprise me at all given the principle behind stridewire 17:25:57 !bfjoust stridewire >>>--(>)*6[(-----[+]>)*20[[+]]]>>[(-----[+]>)*18[[+]]]>>[(-----[+]>)*16[[+]]]>>[(-----[+]>)*14[[+]]]>>[(-----[+]>)*12[[+]]]>>[(-----[+]>)*10[[+]]]>>[(-----[+]>)*8[[+]]]>>[(-----[+]>)*6[[+]]]>>[(-----[+]>)*4[[+]]]>>[(-----[+]>)*2[[+]]]>[[+]]>[[+]]>[[+]] 17:26:01 Score for ais523_stridewire: 15.4 17:26:13 !bfjoust stridewire (>)*9[(-----[+]>)*20[[+]]]>>[(-----[+]>)*18[[+]]]>>[(-----[+]>)*16[[+]]]>>[(-----[+]>)*14[[+]]]>>[(-----[+]>)*12[[+]]]>>[(-----[+]>)*10[[+]]]>>[(-----[+]>)*8[[+]]]>>[(-----[+]>)*6[[+]]]>>[(-----[+]>)*4[[+]]]>>[(-----[+]>)*2[[+]]]>[[+]]>[[+]]>[[+]] 17:26:16 Score for ais523_stridewire: 21.4 17:26:27 first time I've ever seen a BF Joust program drop significantly in the ranking upon adding decoys 17:27:23 Deewiant: What the fuck is { for? 17:27:31 !bfjoust stridewire_faster (>)*9[([+]>)*20[[+]]]>>[([+]>)*18[[+]]]>>[([+]>)*16[[+]]]>>[([+]>)*14[[+]]]>>[([+]>)*12[[+]]]>>[([+]>)*10[[+]]]>>[([+]>)*8[[+]]]>>[([+]>)*6[[+]]]>>[([+]>)*4[[+]]]>>[([+]>)*2[[+]]]>>[[+]]>[[+]]>[[+]] 17:27:32 Subprograms, basically 17:27:35 Score for ais523_stridewire_faster: 13.7 17:27:40 Deewiant: It sucks :P 17:27:49 It's actually a lot more useful than I first thought it would be 17:28:10 !bfjoust stridewire_faster (>)*11[([+]>)*18[[+]]]>>[([+]>)*16[[+]]]>>[([+]>)*14[[+]]]>>[([+]>)*12[[+]]]>>[([+]>)*10[[+]]]>>[([+]>)*8[[+]]]>>[([+]>)*6[[+]]]>>[([+]>)*4[[+]]]>>[([+]>)*2[[+]]]>>[[+]]>[[+]]>[[+]] 17:28:11 I use it throughout the fingerprint testing code now so that I can add a fingerprint in between (so that it's in alphabetical order) without breaking all the g/p positioning 17:28:13 Score for ais523_stridewire_faster: 7.5 17:28:27 OK, it really does need to work on /all/ tape lengths, I think 17:28:30 !bfjoust stridewire_faster (>)*9[([+]>)*20[[+]]]>>[([+]>)*18[[+]]]>>[([+]>)*16[[+]]]>>[([+]>)*14[[+]]]>>[([+]>)*12[[+]]]>>[([+]>)*10[[+]]]>>[([+]>)*8[[+]]]>>[([+]>)*6[[+]]]>>[([+]>)*4[[+]]]>>[([+]>)*2[[+]]]>>[[+]]>[[+]]>[[+]] 17:28:34 Score for ais523_stridewire_faster: 13.7 17:28:50 !bfjoust wait []+.+.+.+.(+)*128(>[-])*30 17:28:55 Deewiant: Wait, nobody told me I'd have to keep track of a storage vector. 17:28:57 Score for impomatic_wait: 5.4 17:28:58 Deewiant: Why didn't you tell me this. 17:29:03 *offset 17:29:04 !bfjoust wait [](+)*128(>[-])*30 17:29:13 Score for impomatic_wait: 5.4 17:29:15 also, I don't get how defend7 beats stridewire 17:29:16 oh, yes I do 17:29:38 !bfjoust stridewire (>)*9[(-----[+]>)*20[[+]]]>>[(-----[+]>)*18[[+]]]>>[(-----[+]>)*16[[+]]]>>[(-----[+]>)*14[[+]]]>>[(-----[+]>)*12[[+]]]>>[(-----[+]>)*10[[+]]]>>[(-----[+]>)*8[[+]]]>>[(-----[+]>)*6[[+]]]>>[(-----[+]>)*4[[+]]]>>[(-----[+]>)*2[[+]]]>>[[+]]>[[+]] 17:29:43 Deewiant is laughing now. 17:29:45 Score for ais523_stridewire: 21.4 17:29:51 hmm, maybe I don't 17:29:53 elliott: I was going to tell you about it when you said you need stringmode but then you distracted me with the position+delta naming thing 17:29:57 :D 17:30:03 I may run that one offline to see what happens 17:30:05 Deewiant: Is this offset stuff per-IP? 17:30:09 Yes 17:30:25 Your IP structure is only going to grow, live with it :-P 17:30:29 Deewiant: Have I ever told you how much I hate you? :D 17:30:41 Deewiant: I might want to make IP extensible in the same way as the generic state structure, for fingerprints, the way this is going... 17:30:50 !bfjoust wait []+ 17:30:57 Score for impomatic_wait: 5.4 17:30:57 You'll need in addition to what you have currently at least a thread ID and a set of fingerprint semantics stacks 17:32:18 And actually I'm pretty sure that's all you'll need, assuming no fingerprints and concurrent funge-98 17:32:24 (+)*50000(>)*9([- 17:32:43 impomatic: i thought about doing that, but i realized it will frequently take two instructions to get to the + so you end up losing... 17:32:49 !bfjoust wait (+)*50000(>)*9([-]>)*21 17:33:05 Score for impomatic_wait: 11.0 17:33:22 quintopia: Hmmm... will have to think of something different :-) 17:34:46 Deewiant: Aaaargh. 17:34:50 Deewiant: I HATE SYOU 17:34:51 *HATES YOU 17:34:55 * elliott makes (!@@@) 17:34:59 yes, three @s 17:35:15 Why is growing your IP such a problem 17:35:53 Deewiant: Nothing, just all the damn offsets I need EVERYWHERE because of this 17:36:12 I recommend a "pop offset vector" function 17:36:14 APNIC last day: 0.04 blocks allocated. 17:36:49 Deewiant: There's a STACK of them?!?!?!?! 17:37:01 Deewiant: Can't I just keep them on the actual stack like it says, and store only the top in the IP? 17:37:06 Uh? 17:37:14 I meant, pop a vector and apply the offset to it 17:37:21 Deewiant: Oh. 17:37:26 Deewiant: I'm implementing it in my peek and poke functions instead. 17:37:28 Is that bad? :p 17:37:35 aha, defend7 beats stridewire because of its anti-tripwire decoy 17:37:38 It'll get inconvenient 17:37:44 You'll need it more later on 17:37:59 Deewiant: Why :P 17:38:06 i, for instance 17:38:11 Just about everything that uses vectors :-P 17:39:00 !bfjoust stridewire_faster (>)*9[(-----[+]>>)*10[[+]]]>>[(-----[+]>>)*9[[+]]]>>[(-----[+]>>)*8[[+]]]>>[(-----[+]>>)*7[[+]]]>>[(-----[+]>>)*6[[+]]]>>[(-----[+]>>)*5[[+]]]>>[(-----[+]>>)*4[[+]]]>>[(-----[+]>>)*3[[+]]]>>[(-----[+]>>)*2[[+]]]>>[(-----[+]>>)*1[[+]]]>[[+]]>[[+]]>[[+]] 17:39:02 Score for ais523_stridewire_faster: 7.6 17:39:05 I predict a low score for that 17:39:11 not as low as I'd thought, actually 17:39:14 Deewiant: But that's the thing 17:39:19 Deewiant: Every single peek and poke is now offset 17:39:24 Deewiant: So I don't have to think about it at all 17:39:27 at least it beats defend7 17:39:33 peek and poke are not the only things that are offset 17:39:46 Deewiant: Everything apart from file loading goes through peek and poke. 17:39:55 but that's the only improvement over regular stridewire 17:39:58 Only things that touch funge-space go through peek and poke 17:40:00 !bfjoust stridewire < 17:40:02 Score for ais523_stridewire: 0.0 17:40:07 Deewiant: Um ... 17:40:08 And that "apart" is already one place you need to apply an offset :-P 17:40:09 haha, bfjoust is active again eh ;) 17:40:12 Deewiant: Isn't that what the storage offset is. 17:40:20 Funge-space only? 17:40:34 There are things that push vectors that have been offset onto the stack 17:41:14 Deewiant: FML 17:41:15 !bfjoust tripstridewire (>)*9[>(-----[+]>)*19[[+]]]>>[>(-----[+]>)*17[[+]]]>>[>(-----[+]>)*15[[+]]]>>[>(-----[+]>)*13[[+]]]>>[>(-----[+]>)*11[[+]]]>>[>(-----[+]>)*9[[+]]]>>[>(-----[+]>)*7[[+]]]>>[>(-----[+]>)*5[[+]]]>>[>(-----[+]>)*3[[+]]]>>[>(-----[+]>)*1[[+]]]>[[+]]>[[+]]>[[+]] 17:41:17 Deewiant: In fingerprints, you mean? 17:41:18 Score for ais523_tripstridewire: 26.7 17:41:28 At least in fingerprints 17:41:35 -!- BeholdMyGlory has joined. 17:41:44 whoops, I deleted the original stridewire by mistake 17:41:52 !bfjoust stridewire (>)*9[(-----[+]>)*20[[+]]]>>[(-----[+]>)*18[[+]]]>>[(-----[+]>)*16[[+]]]>>[(-----[+]>)*14[[+]]]>>[(-----[+]>)*12[[+]]]>>[(-----[+]>)*10[[+]]]>>[(-----[+]>)*8[[+]]]>>[(-----[+]>)*6[[+]]]>>[(-----[+]>)*4[[+]]]>>[(-----[+]>)*2[[+]]]>[[+]]>[[+]]>[[+]] 17:41:56 Score for ais523_stridewire: 22.0 17:41:58 !bfjoust stridewire_faster < 17:42:03 Score for ais523_stridewire_faster: 0.0 17:42:12 A /13 to South Korea, a /14 to China, a /18, two /19s, a /20 and a /21 to Japan, a /18 to Pakistan, a /22 and a /24 to Australia, a /24 to Indonesia. 17:42:37 -!- Behold has quit (Read error: Operation timed out). 17:43:07 "then sets the new storage offset to the location to be executed next by the IP (storage offset <- position + delta)" 17:43:07 On IPv6 front: a /32 to Japan and a /32 to Indonesia, 17:43:10 Deewiant: How behave with wrap 17:43:11 :P 17:43:25 How whu what 17:44:25 xD 17:44:30 BAD: wraparound with non-cardinal delta doesn't work 17:44:30 shiro: WTF? Executed 32. 17:44:39 Deewiant: You don't handle { working but } reflecting. 17:45:01 "} acts like r if a stack-stack underflow would otherwise occur (i.e. when there is only one stack on the stack-stack.)" 17:45:09 Deewiant: I thought you said that the stack-stack was filled with infinite stacks. 17:45:15 Gregor: this is confusing: stridewire and tripstridewire each beat the same set of programs, except that stridewire beats tripstridewire. So why is tripstridewire beating stridewire on points? 17:45:20 elliott: I didn't say that, you said that. 17:45:23 I argued against it. :-P 17:45:46 Deewiant: So what happens on "u" with only one stack on the stack stack? 17:45:47 And I do handle } reflecting 17:45:48 Reflect? 17:45:53 IIRC yes 17:46:07 Woooo 17:46:17 myndzi: I just came up with a new tactic 17:46:30 which does really well against pretty much everyone but impomatic, who it fails horribly against 17:46:41 I wonder if it's because impomatic uses a different sort of decoy, generally speaking? 17:48:57 haha, I see what I did wrong 17:49:50 !bfjoust tripstridewire (>)*9[(-----[+]>)*20[[+]]]>>[>(-----[+]>)*17[[+]]]>>[>(-----[+]>)*15[[+]]]>>[>(-----[+]>)*13[[+]]]>>[>(-----[+]>)*11[[+]]]>>[>(-----[+]>)*9[[+]]]>>[>(-----[+]>)*7[[+]]]>>[>(-----[+]>)*5[[+]]]>>[>(-----[+]>)*3[[+]]]>>[>(-----[+]>)*1[[+]]]>[[+]]>[[+]]>[[+]] 17:50:15 Deewiant: If wraparound with non-cardinal delta doesn't work, does the { test fail or something? :P 17:50:24 It shouldn't :-P 17:50:40 Score for ais523_tripstridewire: 28.5 17:51:14 Deewiant: Oh, I think I see the problem. 17:51:31 Deewiant: I need to set the IP's position to (0,0) after changing the storage offset, right? 17:51:41 Uh, no? 17:52:04 Well, if all your funge-space access such as movement and stuff now uses the offset... 17:52:08 Starting to see why that's a bad idea? :-D 17:52:17 Deewiant: FML 17:52:23 FML FML FML 17:52:27 Okay right 17:52:28 Code! 17:52:31 I have done this before 17:52:32 Coding, that is 17:52:36 I am sure I can do it some more 17:53:48 -!- asiekierka has quit (Read error: Operation timed out). 17:54:04 Deewiant: Is x's vector offset? :P 17:54:11 (Joke.) 17:54:53 BAD: { transfers cells incorrectly 17:54:53 10 0 0 Stopping due to fear of corrupt stack stack 17:55:12 Deewiant: I did a bad! 17:55:17 That bit is fairly robust and careful :-D 17:55:31 Deewiant: Does that mean I fucked it up incredibly badly? :D 17:55:34 elliott: Is "stack stack" a joke, or a semi-intentional result of stack corruption? 17:55:41 Gregor: Neither. 17:55:47 It's a stack of stacks 17:55:49 Gregor: Funge-98 has an actual, honest to god, stack of stacks. 17:55:55 You fucked it up badly enough that I haven't predicted that result 17:55:56 Called the stack stack. 17:55:58 Deewiant: :-D 17:56:06 n <- pop 17:56:06 pushStack [] 17:56:06 if n >= 0 17:56:06 then transfer (fromIntegral n) 17:56:06 else replicateM_ (fromIntegral (abs n)) $ modifySOSS (0:) 17:56:07 ip <- gets ip 17:56:09 let Ray (x,y) (dx,dy) = ray ip 17:56:11 let (ox,oy) = storageOffset ip 17:56:13 modifySOSS $ (oy:) . (ox:) 17:56:15 modifyIP $ \ip -> ip{ storageOffset = (x+dx, y+dy) } 17:56:16 Honestly, I don't think I have any specific checks there 17:56:24 Just correctly/incorrectly, and if incorrectly -> bail 17:57:44 !bfjoust wait >+++>++[]<((+)*128(>)*8(+.)*56(<)*8)*3((+)*128(>)*9(+.)*55(<)*9)*3((+)*128(>)*10(+.)*54(<)*10)*3((+)*128(>)*11(+.)*53(<)*11)*3((+)*128(>)*12(+.)*52(<)*12)*3((+)*128(>)*13(+.)*51(<)*13)*3((+)*128(>)*14(+.)*50(<)*14)*3((+)*128(>)*15(+.)*49(<)*15)*3((+)*128(>)*16(+.)*48(<)*16)*3((+)*128(>)*17(+.)*47(<)*17)*3((+)*128(>)*18(+.)*46(<)*18)*3((+)*128(>)*19(+.)*45(<)*19)*3((+)*128(>)*20(+.)*4 17:57:46 4(<)*20)*3(>[-])*30 17:57:47 Score for impomatic_wait: 0.0 17:57:54 impomatic: lawl 17:58:03 impomatic: I am truly impressed. 17:58:03 impomatic: TOOOOOOOO BIIIIIIIIIIIIIIIG 17:58:05 PROVIDE URL 17:58:16 !bfjoust awful + 17:58:25 Score for coppro_awful: 8.7 17:58:28 O_o 17:58:32 Deewiant: It's oy:ox:rest of stack, right? 17:58:39 Deewiant: i.e. TOS oy ox ... BOS 17:58:44 For pushing the offset. 17:58:58 coppro: You can cause other competitors to wander off the tepe while you do nothing. 17:59:02 I forget, probably yes. 17:59:11 DAMN IT 17:59:12 Gregor: apparently 17:59:12 pooppy: You can cause other competitors to wander off the tepe while you do nothing. 17:59:20 !bfjoust tripstridewire < 17:59:23 Score for ais523_tripstridewire: 0.0 18:00:03 Brilliant :P 18:00:05 Gregor: Why would they wonder of the tepee? 18:00:07 !bfjoust tripwire_antidecoy (>)*9[((-)*10[+]>)*20[[+]]]>>[((-)*10[+]>)*18[[+]]]>>[((-)*10[+]>)*16[[+]]]>>[((-)*10[+]>)*14[[+]]]>>[((-)*10[+]>)*12[[+]]]>>[((-)*10[+]>)*10[[+]]]>>[((-)*10[+]>)*8[[+]]]>>[((-)*10[+]>)*6[[+]]]>>[((-)*10[+]>)*4[[+]]]>>[((-)*10[+]>)*2[[+]]]>>[[+]]>[[+]] 18:00:11 Score for ais523_tripwire_antidecoy: 24.2 18:00:21 elliott: They didn't find any tripwires, but were expecting them. 18:00:41 !bfjoust tripwire_antidecoy < 18:00:44 Score for ais523_tripwire_antidecoy: 0.0 18:00:47 umm, that was meant to be stridewire_antidecoy 18:00:52 Deewiant: Ohwait, they're transferred as a block >_< 18:01:10 but nonetheless, making it better against impomatic hurts it against Lymia and jix 18:01:13 !bfjoust wtf >+[(+)*126>+] 18:01:18 Score for Gregor_wtf: 0.2 18:01:19 Deewiant: I LIKE THE PART WHERE { AND U BEHAVE TOTALLY DIFFERENTLY 18:01:45 Going to quit before you're done?-) 18:01:49 Deewiant: NOPE 18:01:54 http://www.amazon.com/FarmVille-Dummies-Angela-Morales/dp/1118016963 18:01:59 Oh dear Christ. 18:02:02 WE ARE ALL GOING TO DIE 18:02:09 Deewiant: Current plan: Get it totally passing Mycology. Clean things up. Optimise a little bit. Get fingerprint infrastructure. Implement a bunch. Clean up & optimise. 18:02:17 -!- MigoMipo has quit (Ping timeout: 245 seconds). 18:02:25 Phantom_Hoover: I ... I do not want to live in this world. 18:02:28 If you start with TRDS you can cut down "a bunch" to "none" 18:02:29 interesting fact: stridewire wins 1/21 against defend7; tripstridewire wins 10/21 18:02:32 Gregor, NOR I 18:02:37 which is why it was scoring better 18:02:43 Gnomeo and Juliet *and* this? 18:03:00 FarmVille is like Minecraft except with social interaction. 18:03:05 TROLL TROLL TROLL 18:03:13 elliott, THERE IS NO MINECRAFT FOR DUMMIES 18:03:25 yes there is 18:03:27 it's called minecraft 18:03:28 HURHURHUHRUHRUR 18:04:05 wait. Isn't minecraft just Dwarf Fortress for dummies? 18:04:27 Anyway, Gnomeo and Juliet must be stopped at the source. 18:04:34 Phantom_Hoover: 288 pages 18:04:38 We must go back in time and kill William Shakespeare. 18:04:40 Phantom_Hoover, "Gnomeo"? 18:05:06 Gregor, ah, but killing Shakespeare will alter the course of history sufficiently that Mark Zuckerberg won't even be born. 18:05:12 I recall having a book once titled "The Complete Idiots Guide for Dummies" 18:05:14 It was pretty funny. 18:05:28 Deewiant: What IS the point of that pushing zeroes on the SOSS for negatives thing? 18:05:39 Vorpal: Google. 18:05:51 Googlemio 18:05:54 *meo 18:06:02 Deewiant: It hangs now!!!!! 18:06:09 elliott: At least it's specced instead of undefined 18:06:10 !bfjoust tripstridewire (>)*9[(-----[+]>)*20[[+]]]>>[>(-----[+]>)*17[[+]]]>>[>(-----[+]>)*15[[+]]]>>[>(-----[+]>)*13[[+]]]>>[>(-----[+]>)*11[[+]]]>>[>(-----[+]>)*9[[+]]]>>[>(-----[+]>)*7[[+]]]>>[>(-----[+]>)*5[[+]]]>>[>(-----[+]>)*3[[+]]]>>[>(-----[+]>)*1[[+]]]>[[+]]>[[+]] 18:06:13 Score for ais523_tripstridewire: 28.3 18:06:15 oh my. what the heck 18:06:36 Vorpal: why the fuck is { so crazy 18:06:41 luckily the actual site is flash so I can't see anything! 18:06:46 elliott, uh is it? 18:06:55 Vorpal: um yes 18:07:05 elliott, which part of it in specific? 18:07:16 ALL OF IT 18:07:17 Especially the 18:07:22 30-{ 18:07:27 pushing 3 zeroes on the SOSS 18:07:27 thing 18:07:35 elliott, "because the spec says so" 18:07:41 CRAZY 18:07:49 aha, the reason that tripstridewire does better than stridewire on the leaderboard is that it wins just below 50%, rather than 0%, against certain enemys 18:07:51 *enemies 18:07:55 like defend7, and some of impomatic's 18:08:26 ais523: doesn't tripstridewire fall off the end after (>)*9[(-----[+]>)*20 18:08:45 impomatic: that's 29 spaces 18:08:50 Deewiant: Does it tell you that { is good before failing at }? 18:09:04 It probably should, yes 18:09:05 although that's a good point; if it encounters something after 9 spaces, clearly the actual flag must be within another 9 18:09:13 Deewiant: Indeed. 18:09:18 ais523, where is the score board now again? 18:09:31 Deewiant: I have a contraversial opinion to tell. 18:09:36 o* 18:09:44 Deewiant: I think Funge-98 is fucking nuts and was invented by crackheaded monkeys on crack. 18:09:48 !bfjoust tripstridewire (>)*9[(-----[+]>)*9[[+]]]>>[>(-----[+]>)*11[[+]]]>>[>(-----[+]>)*13[[+]]]>>[>(-----[+]>)*13[[+]]]>>[>(-----[+]>)*11[[+]]]>>[>(-----[+]>)*9[[+]]]>>[>(-----[+]>)*7[[+]]]>>[>(-----[+]>)*5[[+]]]>>[>(-----[+]>)*3[[+]]]>>[>(-----[+]>)*1[[+]]]>[[+]]>[[+]] 18:09:51 Score for ais523_tripstridewire: 28.5 18:09:59 You may not be entirely wrong 18:09:59 Vorpal: http://codu.org/eso/bfjoust/report.txt 18:10:03 But then, most esolangs are like that 18:10:08 !bfjoust test (-)*1000 18:10:15 Score for Vorpal_test: 12.9 18:10:19 !bfjoust test (-)*10000 18:10:24 impomatic: it turned out to make basically no difference, but it helped very slightly, there must be a corner case where that's useful 18:10:26 Score for Vorpal_test: 12.9 18:10:27 Deewiant: At least with most of them, implementation is a brief experience of pain. 18:10:29 yay 18:10:43 Deewiant: As opposed to a week-long experience of pain with direct access to the guy who's already read the mushy tea leaves. 18:10:47 Vorpal: oh come on, what does that beat? apart from tripstridewire? 18:11:01 `addquote !bfjoust test (-)*10000 Score for Vorpal_test: 12.9 yay 18:11:03 ais523: anything that [-] on the flag before > 18:11:07 ais523, I was wondering 18:11:15 elliott: That's because they're all boringly simple 18:11:16 oh, also regular stridewire 18:11:25 Deewiant: Underload is boring and simple? :p 18:11:38 and large_decoy_attack, and shade 18:11:51 ais523, I was actually interested in if that would help with the "0 at the end of two turns" thing 18:11:56 elliott: If it can be implemented in befunge-98 without too much trouble, it's simple :-D 18:11:57 the moment I put tripwire programs in, everyone suddenly busts out the anti-tripwire programs 18:12:00 and indeed it does 18:12:09 I think one of my early defense programs work a bit like that 18:12:10 ais523, and yeah 18:12:18 and defend7 does it too, but only in contexts where it knows it's likely to help 18:12:24 *works a bit like that 18:12:28 !bfjoust simple (>)*9(-----[+]>)*21 18:12:31 ais523: i think most of the programs on the hill are over a year old 18:12:31 295) !bfjoust test (-)*10000 Score for Vorpal_test: 12.9 yay 18:12:36 Score for impomatic_simple: 6.0 18:12:40 i don't think anyone has been busting out "anti-tripwire" programs on you ;p 18:12:40 Vorpal: set the repeat coutn up to a million 18:12:49 but because defend did well, that got incorporated into most of the active programs 18:12:55 ais523, why? 18:13:02 and to be honest it doesn't usually hurt anything 18:13:07 myndzi: "anti-tripwire" is any stupid simple program that doesn't set up decoys in order to make tripwires suicide 18:13:10 but here we go 18:13:10 !bfjoust test (-)*1000000 18:13:17 !bfjoust durptarded [[(+)*10000(-)*10000]+] 18:13:28 i thought tripwire was prettty much the opposite? 18:13:30 Vorpal: so the interp times out as a draw, rather than your program losing when it runs out of repeats 18:13:32 waiting on a cell to change and then acting 18:13:37 ais523, aha 18:13:38 myndzi: no, that's defend7, etc 18:13:45 ais523, it seems to take a while 18:13:47 Score for Vorpal_test: 12.3 18:13:47 tripwire looks for the first nonzero value, assumes it's a decoy, and skips it 18:13:48 Score for Gregor_durptarded: 11.7 18:13:48 which is what i remember us calling a 'tripwire' 18:13:49 I wonder why 18:13:56 ais523, wait, why did that preform worse? 18:14:04 some programs really were going ot the end 18:14:07 then itt's reverse-named ;p 18:14:21 and I think because it changed the relative standings of some of the others 18:14:26 myndzi: indeed, it's a tripwire avoider 18:14:29 shortened to "tripwire" 18:14:31 ais523, ah 18:14:36 well there you go 18:14:40 and it's a little late to change the name now 18:14:41 i thought you meant anti-tripwire the technique 18:14:46 not anti-tripwire the program 18:14:46 haha 18:14:52 you could nuke it and rename it 18:14:53 ;) 18:15:07 !bfjoust test (++-)*1000000 18:15:24 probably will suck 18:15:26 Score for Vorpal_test: 30.4 18:15:27 it's fun to see the programs i wrote so long ago still there, but not as fun when i realize it's because nobody played in all that time ;D 18:15:28 what 18:15:31 :O 18:15:32 that's amazing 18:15:39 wow, tripstridewire vs. mirage is really bizarre 18:15:48 `addquote !bfjoust test (++-)*1000000 probably will suck Score for Vorpal_test: 30.4 what 18:15:49 296) !bfjoust test (++-)*1000000 probably will suck Score for Vorpal_test: 30.4 what 18:15:50 ais523, see the last score 18:15:52 Vorpal: because it changes the timing 18:15:59 elliott: i was about to quote that too 18:16:03 myndzi, true, but I didn't expect it to do that much 18:16:05 !bfjoust (++++--)*1000000 18:16:05 Use: !bfjoust . Scoreboard, programs, and a description of score calculation are at http://codu.org/eso/bfjoust/ 18:16:08 see if you are going - every time 18:16:13 !bfjoust probably_will_suck (++++--)*1000000 18:16:16 and some program is looping on - every other 18:16:24 maybe the loop never ends, depending on timings 18:16:26 Score for elliott_probably_will_suck: 13.1 18:16:28 try it yourself, see what will happen 18:16:33 but since you add some wobble.. :) 18:16:42 !bfjoust probably_will_suck ((+)*19(-)*18)*1000000 18:16:55 Score for elliott_probably_will_suck: 13.5 18:16:57 i dunno, i forget exactly how ] is determined when two programs write to the same cell 18:17:20 Vorpal_test is an ais523-beater, it loses to more or less everyone else 18:17:20 ++- is better because lots of [-] or [+] 18:17:24 it decrements every other 18:17:28 thanks for pushing me right down the leaderboard, Vorpal! 18:17:32 lol. 18:17:36 elliott, guess I hit a sweet spot with the numbers there 18:17:47 Vorpal: rather, i think it's because your test program beat ais523 only 18:17:51 and now ais523 is low down the leaderboard 18:17:52 ais523, not intended. Also: For science! 18:17:53 so it can't be repeated 18:17:57 !bfjoust definitely_will_suck [--]+[[+-]+]+ 18:17:58 !bfjoust probably_will_suck (++-)*1000000 18:18:06 elliott, actually a bit more than just ais it seems 18:18:10 Vorpal: obviously, but it's still amusing 18:18:24 i didn't think that your score depended on the score of the opponents, just how many wins you get? 18:18:25 anyway, it beat /all/ my programs, apart from defend7 which was a rather obvious draw 18:18:29 ais didn't get knocked off so..? 18:18:29 I notice there are no evolved programs on the chart :P 18:18:30 myndzi: nope, it does 18:18:36 oh 18:18:38 Score for quintopia_definitely_will_suck: 9.4 18:18:39 Score for elliott_probably_will_suck: 26.5 18:18:42 Vorpal: see? 18:18:43 well 18:18:44 not bad :P 18:18:46 but not as good 18:18:46 Gregor: there are two 18:18:51 the two by Lymia__ 18:18:54 !bfjoust probably_will_suck (-++)*1000000 18:19:02 elliott: isn't that just what Vorpal did? 18:19:04 Holy fekk there are O_O 18:19:07 I didn't notice those X-P 18:19:09 except backwards 18:19:13 i wonder what definitely_will_suck beat 18:19:14 One's got 24 points O_O 18:19:16 elliott, you pushed mine down too 18:19:17 Gregor: :-D 18:19:18 Score for elliott_probably_will_suck: 23.4 18:19:25 Gregor: Is this invalidating your life-long creationist beliefs? 18:19:27 o yeah, thanks 18:19:29 ;) 18:19:31 elliott: YES 18:19:34 Gregor: :D 18:19:35 and just like that, stridewire fell back off the leaderboard 18:19:47 !bfjoust test >+>+<<(++-)*1000000 18:19:49 tripstridewire is definitely an interesting concept, though; I'll have to look into it more 18:19:53 we have a creationist here? Hersey! 18:19:57 elliott: Actually it's invalidating my punctuated design beliefs since I haven't seen a punctuation yet :P 18:20:04 variable: I'm kidding, I'm not a retard. 18:20:07 and yes - I know that's a chocolate 18:20:10 Score for Vorpal_test: 20.3 18:20:11 hmm, i think i had more than one on by nescience, what fell off? 18:20:16 Gregor, you missed the joke 18:20:23 !bfjoust tripstridewire_faster (>)*9[(-[+]>)*9[[+]]]>>[>(-[+]>)*11[[+]]]>>[>(-[+]>)*13[[+]]]>>[>(-[+]>)*13[[+]]]>>[>(-[+]>)*11[[+]]]>>[>(-[+]>)*9[[+]]]>>[>(-[+]>)*7[[+]]]>>[>(-[+]>)*5[[+]]]>>[>(-[+]>)*3[[+]]]>>[>(-[+]>)*1[[+]]]>[[+]]>[[+]] 18:20:25 isn't theere an archive somewhere 18:20:27 Score for ais523_tripstridewire_faster: 24.5 18:20:35 io$print "hi" 18:20:35 mapM_ push (padTake 0 n s) 18:20:36 io$print "alas, the eve of donkeys is not at hand" 18:20:36 I looooove my debug statements. 18:20:41 oh right it was like, a git repository or something 18:20:45 i don't have any of that shit set up here 18:20:46 myndzi: hg 18:20:47 variable: Also, that's not a chocolate, that's an adjective meaning "similar to a hearse" 18:20:51 !bfjoust test (--+)*1000000 18:20:52 that's because u suk lol 18:20:56 very similar score, but the wins and losses are in different places 18:20:59 or because i never use it :P 18:21:05 it's on my old laptop at work 18:21:16 !bfjoust tripstridewire_faster (>)*9[(--[+]>)*9[[+]]]>>[>(--[+]>)*11[[+]]]>>[>(--[+]>)*13[[+]]]>>[>(--[+]>)*13[[+]]]>>[>(--[+]>)*11[[+]]]>>[>(--[+]>)*9[[+]]]>>[>(--[+]>)*7[[+]]]>>[>(--[+]>)*5[[+]]]>>[>(--[+]>)*3[[+]]]>>[>(--[+]>)*1[[+]]]>[[+]]>[[+]] 18:21:17 Deewiant: Woo, now it's back to being incorrect 18:21:24 Woo 18:21:33 Score for Vorpal_test: 22.5 18:21:33 Score for ais523_tripstridewire_faster: 19.5 18:21:35 (see what i was talking about yesterday about fiddling constants until you win, then someone else does it? ;) 18:21:36 Deewiant: IT WORKS 18:21:38 ^____^^^^^^^^ 18:21:48 !bfjoust tripstridewire_faster (>)*9[(-[+]>)*9[[+]]]>>[>(-[+]>)*11[[+]]]>>[>(-[+]>)*13[[+]]]>>[>(-[+]>)*13[[+]]]>>[>(-[+]>)*11[[+]]]>>[>(-[+]>)*9[[+]]]>>[>(-[+]>)*7[[+]]]>>[>(-[+]>)*5[[+]]]>>[>(-[+]>)*3[[+]]]>>[>(-[+]>)*1[[+]]]>[[+]]>[[+]] 18:21:48 too bad there's no 'age' statistic 18:21:50 myndzi: clearly it should try your program with every constant 18:21:53 :D 18:21:53 Score for ais523_tripstridewire_faster: 22.6 18:21:58 elliott: well, it's not that simple 18:22:00 elliott: Which one, {? 18:22:01 it was a joke 18:22:02 see 18:22:03 myndzi: there is, just look at the last-modified in egobot 18:22:03 ha ha, laugh 18:22:05 Deewiant: yep 18:22:10 GOOD: { transfers cells correctly 18:22:10 GOOD: { sets storage offset correctly, and p uses it 18:22:11 several of the programs are over a year old 18:22:14 i mean, that there's not exactly "constants" to fiddle 18:22:18 myndzi: precisely 18:22:19 of course it was a joke :P 18:22:23 myndzi: it would end up just trying all programs :D 18:22:24 but there are some, too 18:22:25 lol 18:22:25 and averaging the result 18:22:31 haha 18:22:32 "you got a square 50%!" 18:22:35 obviously mine would win then! 18:22:42 it would be every program vs. every program :D 18:22:46 because in the end it would have beat every program! ;) 18:22:50 !bfjoust definitely_will_suck >+>+<<(-)*128+[[+-]+]+ 18:22:51 you know, any successful program ends up pushing what it beats off the hill, and then getting worse 18:22:54 shh, your logic has no place here 18:23:01 that's what happened to stridewire; really quickly, programs it beat got pushed off 18:23:04 ais523: clearly need a bigger hill 18:23:11 Score for quintopia_definitely_will_suck: 4.3 18:23:15 or less similar programs 18:23:19 perhaps 18:23:27 !bfjoust most_definitely_will_suck < 18:23:30 Score for myndzi_most_definitely_will_suck: 0.0 18:23:33 oh yeah 18:23:33 i win 18:23:34 !bfjoust definitely_will_suck (-)*128+[[+-]+]+ 18:23:37 when I first came up with stridewire, it beat everyone but impomatic; now, it's not really beating anyone but myndzi 18:23:44 lol 18:23:48 !bfjoust suckitude_personified <+ 18:23:53 i didn't quite even read what it did 18:23:57 !bfjoust tripstridewire_faster < 18:23:59 Score for Vorpal_suckitude_personified: 0.0 18:23:59 but 18:23:59 Score for quintopia_definitely_will_suck: 12.3 18:24:00 Score for ais523_tripstridewire_faster: 0.0 18:24:03 i haven't modified any of my programs 18:24:06 I'm going to remove duplicates of my programs in order to help the others survive longer 18:24:07 argh myndzi beat me to it 18:24:10 so i'm not surprised that a program written to beat them all...? 18:24:20 it wasn't written to beat them all, I was just trying out a new strategy 18:24:31 and it was hilarious seeing how it did much better against some people's programs than others 18:24:33 ah, well that's good, i hope it can stay 18:24:37 different people have different styles, it seems 18:24:38 8 0.00 -20.00 ais523_tripstridewire_faster.bfjoust 18:24:39 what 18:24:39 i should read about it later 18:24:48 (also of note: tripstridewire would do well in BF Joust 1, the original) 18:24:50 oh there 18:24:51 -!- kar8nga has joined. 18:24:53 well, it seems like lots of the programs wound up being very similar from different people 18:24:55 you canceled it 18:25:07 like, i realized that if i messed around with slowrush it would wind up being more like wiggle lol 18:25:08 and vice versa 18:25:19 or something, i forget precisely which programs were involved at the time 18:25:28 tripstridewire is basically a really /really/ aggressive rush program 18:25:36 it's faster than a typical fast-rush program by a factor of 2 18:25:42 because it only checks every second tape cell 18:25:47 !bfjoust test (-)*128+[+-](+)*128>>>>>>>>+[>[-]+] 18:25:52 ais523, why every second? 18:25:55 then, when it finds one, it starts zeroing from the cell after that 18:26:01 Score for quintopia_test: 7.5 18:26:06 Vorpal: to give extra speed at the expense of reliability 18:26:08 interesante 18:26:13 ais523 ah 18:26:26 it can often start attacking the flag while the opponent is still setting up its decoys 18:26:28 thus it works better on short tapes, worse on longer ones 18:26:35 ais523: "would do well in BF Joust 1" weren't the changes YOUR idea? :P 18:26:42 Gregor: yes 18:26:44 i wonder if i ever wrote something that set up the decoys backwards 18:26:49 I know I did 18:26:50 maybe never had a reason tto 18:26:57 defend9 did, I think 18:27:10 in because it needed decoys just to have time to set up its other decoys 18:27:14 s/in // 18:27:19 yeah 18:27:23 well that would apply to any program 18:27:27 the decoys were the entire point, rather than just slowing the opponent down 18:27:27 -!- Behold has joined. 18:27:27 !bfjoust test >>>-<+<-(--+)*1000000 18:27:29 of course it nets you a loss in speed eventually 18:27:30 err 18:27:33 !bfjoust test >>>-<+<<(--+)*1000000 18:27:35 of course 18:27:36 but not by all that much 18:27:37 as they needed to be at specific values in order for its strategy to work 18:27:42 rather than just slowing the opponent 18:27:43 Deewiant: What's the test after "{ with negative argument works"? 18:27:54 (to be precise, it set up a range of decoys, then timed them in order to deduce the opponent's strategy) 18:27:59 elliott: Read the source :-P 18:28:01 Score for Vorpal_test: 15.4 18:28:01 Score for Vorpal_test: 15.4 18:28:02 yeah 18:28:04 Deewiant: >_< 18:28:05 BAD: s reflects 18:28:06 BAD: 04-j jumps forward 18:28:08 elliott: Or get a binary that works :-P 18:28:11 TODO: Fix 18:28:11 that's the one i was thinking about the other day 18:28:13 -!- kar8nga has quit (Excess Flood). 18:28:19 wiggle gets around it in an interesting way 18:28:24 Deewiant: Link me to your site :P 18:28:26 !bfjoust test >>>-<-<<(--+)*1000000 18:28:26 Vorpal: it fails to kill tripwire now that you added decoys 18:28:27 by basically using different timings for every attack 18:28:28 that was defend9; it was on the hill for ages, but collapsed eventually 18:28:35 quintopia, yes indeed 18:28:42 quintopia, I'm just checking what different decoys do 18:28:43 due to programs like wiggle that do that, and programs like slowrush which just use really bizarre timings 18:28:50 ;D 18:28:52 Score for Vorpal_test: 15.4 18:28:59 -!- kar8nga has joined. 18:29:01 !bfjoust test < 18:29:05 Score for Vorpal_test: 0.0 18:29:09 and rush programs often got there before the decoys were set up correctly 18:29:10 elliott: iki.fi/deewiant 18:29:11 !bfjoust shudder (--+)*1000000 18:29:18 (I'd like to rename it) 18:29:26 not to mention tripwire-avoiders completely screwing up the whole concept 18:29:32 lol 18:29:38 damn those enemy programs for not playing by your rules 18:29:38 !bfjoust test >+<(++-)*1000000 18:29:39 :) 18:29:39 Score for Vorpal_shudder: 18.2 18:30:03 defend7's a lot more robust, as it doesn't need to detect the enemy loops but rather uses mathematics to ensure that most common timings won't make the flag fall 18:30:08 Score for quintopia_test: 15.8 18:30:27 !bfjoust shudder (++-)*1000000 18:30:28 !bfjoust wiggles_woggle_but_they_dont_fall_down (>--+<+--)*1000000 18:30:36 Score for Vorpal_shudder: 17.5 18:30:40 Score for elliott_wiggles_woggle_but_they_dont_fall_down: 0.0 18:30:48 -!- BeholdMyGlory has quit (Ping timeout: 250 seconds). 18:30:54 !bfjoust test < 18:30:57 Score for quintopia_test: 0.0 18:31:05 !bfjoust shudder (--+)*1000000 18:31:09 so that one was better 18:31:10 hm 18:31:15 !bfjoust wiggles_woggle_but_they_dont_fall_down (>--+<+--)*100000 18:31:17 !bfjoust stupid_defender_clearer (>)*8(>[[+]])*21 18:31:33 GOOD: } reflects when stack stack has only one stack 18:31:33 Aha 18:31:37 Score for elliott_wiggles_woggle_but_they_dont_fall_down: 0.2 18:31:38 Score for ais523_stupid_defender_clearer: 13.2 18:31:38 Score for Vorpal_shudder: 19.3 18:31:58 ... I can't compare if everyone keep submitting :P 18:32:02 !bfjoust shudder (++-)*1000000 18:32:23 unfortunately, stupid_defender_clearer doesn't do well enough against the non-shudder-style programs to clear the shudder-style programs as well as it should 18:32:41 Score for Vorpal_shudder: 18.2 18:32:46 !bfjoust lole (>+)*8([>][-][>][--][>][---])*4 18:32:48 okay so other one is better 18:32:52 !bfjoust shudder (--+)*1000000 18:32:58 (and I'm done for today) 18:33:04 --+ is the same as ++- 18:33:10 it tests both of them in the fight 18:33:15 ugh, report.txt seems blank 18:33:16 myndzi, what? 18:33:23 Score for myndzi_lole: 0.0 18:33:23 It's blank because it's running 18:33:23 Score for Vorpal_shudder: 18.3 18:33:26 Vorpal: swapping + and - is done automatically, and the scores for both averaged 18:33:26 myndzi, it inverts everything and tests? 18:33:28 !bfjoust sex_bobomb [-](+-)*1000000 18:33:29 yes 18:33:31 ais523, aha 18:33:39 ais523, so why did I get different results for them 18:33:44 because peeople were just taking existing programs and swapping them 18:33:47 (* polarity) 18:33:54 so now it tests it both ways 18:33:56 Score for quintopia_sex_bobomb: 8.9 18:34:07 Vorpal: because the scoreboard was different due to you pushing stupid test programs off the leaderboard in between 18:34:08 what di i break with that program, i didn't expect it to do anything useful but 0 lol 18:34:24 ais523, ah 18:34:34 i think i forgot everything i knew about this ;D 18:34:38 GOOD: u with a positive count transfers cells correctly 18:34:38 BAD: u with a positive count transfers cells incorrectly 18:34:39 Deewiant: ^ 18:34:44 :-D 18:34:51 With a blank line in-between, no less. 18:35:05 !bfjoust sex_bobomb [[[-](+)*5]+] 18:35:07 BAD: fedcba0{05-} doesn't leave 15 on stack 18:35:17 Deewiant: I don't even 18:35:19 elliott, next time try making it swap BAD and GOOD compared to the rest of the line 18:35:22 myndzi: the [>] is a bad idea, if you hit an opposing decoy-chain it's almost guaranteed to run off the tape 18:35:29 elliott, what is the problem 18:35:30 Score for quintopia_sex_bobomb: 7.4 18:35:30 and you don't run [-] except immediately after [>] 18:35:38 Vorpal: I have no idea why my code would not be doing that 18:35:46 so basically, you're searching for a position where [>] will cause you to die, then running [>] 18:35:47 oh right, i think i got loops backwards 18:35:48 haha 18:35:52 which is a little counterintuitive... 18:36:00 elliott: Jumping to the BAD is likely a result of your x not quite working, or movement with a noncardinal in general 18:36:08 ais523: "-- asked around in #nethack to see if anyone knew why it had been pulled. aid523 said that it was because the version of Spork on NAO was --" ... could it be your long-lost almost-identical (edit distance 1!) twin brother!? 18:36:11 -!- MigoMipo has joined. 18:36:13 what was the code that moved to the first nonzero and skipped it 18:36:22 Deewiant: BAD: wraparound with non-cardinal delta doesn't work 18:36:26 oh, need nested brackets for that huh 18:36:26 fizzie: I'm a regular in #nethack, and have also posted on rgrn 18:36:30 and that was meant to be ais523, but a typo 18:36:32 Deewiant: But "BAD: fedcba0{05-} doesn't leave 15 on stack" is an actual problem, right? 18:36:40 fizzie: What's that from? 18:36:49 elliott, hard to tell. It could be jumping incorrectly 18:36:52 elliott: I don't think I ever use wraparound with a non-cardinal intentionally, it's too much of a headache to figure it out compared to just jumping directly to the right place :-P 18:36:53 elliott, better fix x first? 18:36:59 And yes, it's an actual problem 18:37:00 Vorpal: x isn't broken. 18:37:04 !bfjoust infinite_shudder [[(++-)*1000000]+] 18:37:04 ais523: That's so boringly prosaic explanation. I think I'll rather believe mine. 18:37:06 Deewiant, I thought you tested it? 18:37:06 Vorpal: My wraparound is broken ever since I fixed it. 18:37:10 elliott: RGRN. 18:37:13 elliott, XD 18:37:18 Vorpal: Yes, I meant other than that 18:37:23 Deewiant, ah 18:37:31 yeah uhh, just keep adding more * numbers to make the hill slower >:( 18:37:31 Score for quintopia_infinite_shudder: 17.9 18:37:32 Vorpal: I hire you to fix my wrap-around algorithm 18:37:38 elliott, I refuse 18:37:53 wat. why is that not as good as shudder? 18:37:54 Vorpal: Ah, I don't think we quite understand each other: I hire you to fix my wrap-around algorithm 18:37:59 quintopia: takes cycles at start 18:38:05 elliott, and I don't think you understand me. 18:38:10 * Vorpal fires a bullet 18:38:23 fizzie: were you aware I was active in the NetHack community, btw? I wasn't aware you read rgrn 18:38:58 elliott: why does shifting the actual shuddering by 2 cycles a make-or-break issue? 18:39:02 quintopia: Because 18:39:05 :/ 18:39:15 -!- Sgeo has joined. 18:39:30 quintopia: because it depends on when opposing programs reach you 18:39:57 you could put it back by also shifting the ++- pattern probably 18:39:59 quintopia, actually you pushed mine down 18:40:02 make it -++ ? 18:40:03 lol 18:40:16 that'd start - at the same time as it would have otherwise 18:40:45 ais523: Yes, your nethackitude has been revealed on-channel often enough that I had caught it. 18:41:00 hmm, it's not that often in this channel 18:41:07 (much more often in #nethack, occasionally in ##nomic) 18:41:28 also, ais523_stupid_defender_clearer is still hanging on somehow 18:41:40 presumably because people keep trying stupid defenders 18:41:42 Vorpal: yeah i just looked at the chart and noticed that 18:41:42 it's doing its job, anyway 18:41:45 lol 18:42:00 ah no, it was just pushed off 18:42:02 loop (x,y) (dx,dy) (mx,my) 18:42:02 | x `ltx` mx || y `lty` my = 18:42:03 (if x `ltx` mx then mx+dx else x, 18:42:03 if y `lty` my then my+dy else y) 18:42:03 | x `gtx` mx || y `gtx` my = loop (x-dx, y-dy) (dx,dy) (mx,my) 18:42:03 | otherwise = (x,y) 18:42:03 oughtta go all forum style on this and "pin" warriors ;) 18:42:06 Deewiant, where's my obvious bug 18:42:14 when unique ones show up, stick em there! 18:42:15 :P 18:42:18 Ohh 18:42:18 On your neck! Look out! 18:42:20 I think I see it 18:42:22 INFINITE HILL 18:42:25 NEEDS TO HAPPEN 18:42:37 i confess to being curious how this would stack up 18:42:42 also, how did stupid_defender_clearer beat shade? 18:42:48 i think some work on the interpreter could be done though 18:42:51 it wasn't meant to beat anything but stupid defenders (and tripstridewire)... 18:42:56 ais523: i don't even remember how anything i wrote works anymore 18:43:01 lol 18:43:05 i think shade skips a tripwire 18:43:10 shade was written by nescience 18:43:15 but if it's tripwire-skipping, that explains it 18:43:15 that was my altnick at work 18:43:19 aha 18:43:27 quintopia: I like the finite one as it is 18:43:37 the hill is inherently resistant to masses of clone programs 18:43:42 unless they're /really good/ clone programs, I suppose 18:43:44 ais523: so? who was suggesting replacing it? 18:43:52 you were suggesting an infinite hill 18:43:53 it is really l ong 18:43:54 haha 18:44:02 myndzi, that is nes science right? as in NES. 18:44:05 yes, in addition to the finite one 18:44:10 nah 18:44:12 nescience 18:44:19 http://www.m-w.com/cgi-bin/dictionary?book=Dictionary&va=nescience 18:44:29 ais523: "2010-02-26 22:08:26 < scarf!~scarf@unaffiliated/ais523: fizzie: you read rgrn?" -- it seems we did in fact sort of already have this discussion. 18:44:32 although the page isn't loading for me haha 18:44:40 it's ~= ignorance 18:44:47 (I'm not entirely sure I ever answered, though.) 18:44:52 myndzi, oh I preferred my explanation! 18:44:56 fizzie: wow, that was quite a memory from ages ago 18:45:44 ah well, sorry :) 18:45:48 i like interesting words 18:46:14 -!- Lymia_ has joined. 18:46:46 yeah, i think shade is just a fairly simple tripwire skip thing 18:46:58 with an offset clear 18:47:06 offset clear? 18:47:06 -!- ais523 has quit (Read error: Connection reset by peer). 18:47:09 it's so long because it couldn't be shorthanded 18:48:27 -!- poiuy_qwert has joined. 18:48:40 -!- ais523 has joined. 18:48:42 i mean like, i add 10 before subtract looping; so if it's a -10 or less decoy, it gets cleared quickly 18:48:47 fizzie, there? 18:49:05 myndzi: yep, I figured it out but my connection dropped, so you didn't see that I figured it out 18:49:21 [19:06] offset clears are a little arms race in themselves; you can set it high to beat impomatic, or low to beat everyone else 18:49:22 [19:06] because impomatic tends to use unusually large decoys, which leave him a bit vulnerable on short tapes but more powerful on long ones 18:49:24 fizzie, any progress on jitfunge recently? 18:49:28 decoys: (>(-)*9)*2>(>-)*4 tripwire skip: >[ attack: >(+)*10[-] (times 20) 18:49:34 i guess i could have shorthanded the attack 18:49:39 oh, you set decoys of 9 too? 18:49:41 oh, except you can't nest it right? 18:49:43 ais523, just wondering. Is Feather completely dead or do you think you will resume it at some point? 18:49:49 and shorthanding is just a convenience to make it easier over IRC 18:49:54 Vorpal: it's not dead 18:49:54 basically 18:49:56 and easier to read 18:50:00 -!- Lymia__ has quit (Ping timeout: 276 seconds). 18:50:00 ais523, ah :) 18:50:06 in fact, I even managed to create a constant without it going into an infinite loop 18:50:12 i worked out a method to interpret the shorthand code without expanding itt 18:50:14 which is a huge achievement in Feather terms 18:50:15 ais523, how? 18:50:16 in a way which allowed nesting 18:50:33 but i don't think it ever got implemented 18:50:35 myndzi: that's what egojoust does 18:50:49 maybe it did then? i asked someone last night and he said it expanded in memory 18:50:56 Vorpal: I can't remember, but I think it involved a crazy bootstrapping using multiple other constants, and being simultaneously metacircular and not metacircular wrt Scheme by detecting which any particular constant used 18:50:57 which is the old behavior 18:51:07 who, Gregor? 18:51:13 sure, the constants just sit there and don't do anything, but at least they exist 18:51:20 myndzi: egojoust uses some pretty clever optimisation code there 18:51:23 ais523, how would you get those bootstrapping constants? 18:51:35 I think it works by detecting that the combined effect of two programs made no change, and just fastforwarding the loop 18:51:35 ais523: it may be the result of my work then! 18:51:36 :D 18:51:43 Vorpal: err, it's a mess 18:51:46 let me find the file 18:51:46 oh wait i see what you mean 18:51:52 ais523, cool 18:52:20 what i was talking about is different from that, and maybe it is hard to combine them, unsure 18:52:39 what's a good pastebin for Scheme? 18:52:43 i remember there being limitations like you couldn't nest shorthand 18:52:47 ais523: sprunge.us 18:52:53 you can nest shorthand 18:52:55 and it wasn't being interpreted in-place 18:53:05 ais523, sprunge.us, add ?scheme to end of url iirc 18:53:07 it was being expanded into a string buffer or something 18:53:11 which took a while 18:53:18 so i worked out how to process it in-place 18:53:26 but now i don't quite remember ;) it was pretty simple though 18:53:29 elliott: It expands it if it contains [ or ] or is a %-loop, so only simple *-loops remain. 18:53:32 http://sprunge.us/NQXK?scheme 18:53:45 ah, well there you go 18:53:53 %-loops was the thing i solved 18:54:01 that's the (a{b}c)%n right? 18:54:02 Gregor: %-loops were actually designed to be interpretable without expansion in the presence of [ and ], that's their purpose 18:54:04 yeo 18:54:05 *yep 18:54:07 myndzi: Yeah 18:54:12 but they didn't really catch on 18:54:15 Vorpal: ^ 18:54:18 ais523: I like that original program 18:54:29 ais523: Well, I'm lazy :P 18:54:29 ais523, yeah I was reading 18:54:31 elliott: it's the mockingbird combinator 18:54:32 it hurts XD 18:54:37 i dunno, i just remember last it was discussed there was a problem with it somehow 18:54:37 ais523: yep 18:54:43 ais523: is that the initial Feather interpreter? 18:54:47 so i can do 18:54:48 Feather embeds untyped lambda calculus 18:54:50 and it's just a test 18:54:52 aww 18:54:55 it should be the initial interprete 18:54:55 r 18:54:56 (>(+)*10[-])*20? 18:54:56 although it's a metacircular test 18:54:58 that would be beautifu 18:54:58 l 18:55:03 and indeed it would, but I doubt that helps 18:55:09 perhaps you can retroactively make it do that later 18:55:09 ais523: your scheme style is horrible 18:55:11 ais523, okay that hurts my brain to read. Impressive. 18:55:21 perhaps it is 18:55:26 what in particular's unidiomatic about it? 18:55:27 it definitely is :) 18:55:30 (I hardly know Scheme) 18:55:33 ais523: well, right off the bat, you have 18:55:34 (define 18:55:35 (foo) 18:55:36 where it should be 18:55:38 (define (foo) 18:55:50 ais523, no, it isn't that. It is the feather bit that hurts. And yeah what elliott said 18:55:55 ais523: secondly, "addmethod" -> "add-method", "feather_blah" -> "feather-blah", etc. 18:56:12 also, you have an awful lot of nesting, but in an interpreter that's probably unavoidable 18:56:19 although, returning (remainder parsed) is wrong 18:56:22 return (remainder . parsed) 18:56:36 tuple rather than list? 18:56:49 lists are easier to read once it generalises past two elements 18:56:58 myndzi: what does slowrush do? 18:57:05 i ... don't remember 18:57:09 ais523, a list is made out of tuples though (cons cells are 2-tuples) 18:57:25 by its name, i assume it is just a straight attack but slower 18:57:27 ais523: yes, but you only have two elements 18:57:28 myndzi: IIRC, it's an attack program, but one that moves slowly setting up lots of decoys, and tries not to fall for standard tricks 18:57:30 which threw off defend versions at the time 18:57:31 ais523: and car/cdr are nice accessors 18:57:46 that feels like abuse of cons to me 18:57:52 although I know schemers do that all the time 18:57:55 well it's short enough: >(+)*19>(-)*19(>++++++>------)*1>+>->->+(>[[-(+)*22[-]]+>[+(-)*22[+]]->]+)*21 18:58:03 ais523, you are more used to comon lisp? 18:58:05 I prefer my lang, mentally, to be based on lists rather than conses, for whatever reason 18:58:05 common* 18:58:18 Vorpal: not really, I'm not a big Lisp user at all 18:58:22 ah 18:58:30 it's just that Scheme had pretty much exactly the right feature set for Feather 18:58:32 it alternates its attack 18:58:41 to average the results from polarized decoys 18:58:48 i don't know why -(+)*22 18:58:52 maybe to trip tripwires? 18:58:54 ais523, I find the indention somewhat confusing too. Especially around your let statements. 18:59:00 ais523, ON THE TOPIC OF FEATHER 18:59:10 but it was too long ago I did scheme, I don't remember how it should be done 18:59:19 that indentation is correct, I think it's crazy because the line breaks are in the wrong place 18:59:20 however Emacs does it is correct 18:59:29 ais523, that could be it 18:59:34 Emacs is always right. 19:00:01 i wish i remembered why i did that haha 19:00:06 it's probably something tricky! ;) 19:00:06 !bfjoust adlout [>[[-]]+] 19:00:07 How do I submit a BFJoust program from a file? 19:00:10 it also leaves a decoy trail 19:00:16 i think it took urls? 19:00:22 Score for quintopia_adlout: 2.1 19:00:37 ais523: any chance you know why i would have done that? :P 19:00:42 it's gonna bother me all day now haha 19:00:48 impomatic: post the file online, submit a program starting http:// 19:00:56 and it'll detect that it looks like an URL and download it rather than using it raw 19:01:17 myndzi: it may well have been specifically to defeat defend9 19:01:32 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]). 19:01:40 I don't think that alone makes any difference to defend7 19:01:45 perhaps 19:01:53 did defend9 leave off-by-1 decoys? 19:02:00 a single + or - 19:02:16 no, but it worked based on timings 19:02:37 hum, it wouldn't matter with the decoys anyway, just tripwires that sit on 1 or -1 19:02:39 I suspect that + to trip confused its timing when combined with the 22 19:02:58 oh yeah, it was to trip tripwires 19:03:00 i remember now 19:03:04 because it trips them either way if they sit on 1 19:03:05 which gives the appearance of having been programmed specifically to give a timing that caused defend9 to mis-ID the strategy 19:03:13 -1 becomes -2 -1 0 19:03:16 1 becomes 0 1 2 19:03:20 so they both hit 0 19:03:30 defend9 could ID [-] pretty easily normally, but the 22 was probably just enough to make it think it was something else 19:03:38 i don't know 19:03:41 -!- impomatic has joined. 19:03:52 one thing I don't get is why it beats defend7 19:03:54 the 22 was just an offset clear of about 20 19:04:06 or 21 19:04:07 whatever 19:04:12 Grrrr... Chatzilla crashes every time I click a link. It's about time I installed something else 19:04:18 i'm pretty sure i only chose it to tackle decoys of up to 20 in size 19:04:25 it beats it for every possible timing, too 19:04:35 lol 19:04:40 impomatic: indeed, especially if you have a tendency to click links 19:05:02 anyway, likely the only reason slowrush wins is those massive decoys at the start 19:05:04 !bfjoust scimitar http://candlebags.co.uk/temp/1.txt 19:05:12 Deewiant: getting wrapping right + headache = awesome? 19:05:13 anyway, that's the 'slow' part 19:05:17 myndzi: lol@ ()*1 19:05:21 elliott: Ish 19:05:33 Score for impomatic_scimitar: 44.1 19:05:35 it was easier than editing it out ;) i think it used to be 2 or something 19:05:44 plus i could change it later 19:06:54 it's instructive to look at the summary for tripstridewire vs slowrush (which I ran in a locally modified egojoust to print the loss reasons for each length); tripstridewire wins alternate lengths for short programs, but loses on the long ones 19:07:16 because it's just a case of whether it can get over to your flag before your setup is complete 19:07:21 yeah i don't get why it beats defend7 either :P it looks ridiculously stupid. has something to do with the creating big decoys out of nowhere and then destroying them probably 19:07:47 haha 19:07:53 there is that too, i guess 19:07:58 i mean, i leave behind simple decoys 19:08:06 but if you ran into it while i was in a loop, i dunno what happen 19:08:47 Deewiant: Man, per-line-and-per-column bounds are really tricky to do wrapping with. 19:08:53 yeah i just meant in terms of defend7's strategy of going out into the world and cycling every cell through all its values 19:08:54 but it would only do that on a cell that had been altered so... 19:09:05 elliott, why are you doing it that way 19:09:08 elliott: I've never done that, so I wouldn't know. 19:09:10 Vorpal: Because that's how I store bounds? 19:09:11 elliott, it won't work for non-cardinal anyway 19:09:16 Vorpal: Why not? 19:09:23 yeah, defend can't depend on the value of any cell 19:09:28 elliott, you would have to check if it went outside then insid 19:09:29 it has to get home in time for lunch 19:09:30 side* 19:09:32 Vorpal: 19:09:34 let x' = x + dx 19:09:34 y' = y + dy 19:09:34 (minX,maxX) = Map.findWithDefault undefined y' (rowBounds fs) 19:09:35 (minY,maxY) = Map.findWithDefault undefined x' (colBounds fs) 19:09:36 so it takes a long time to w in 19:09:37 in if x' < minX || x' > maxX || y' < minY || y' > maxY then ... 19:09:38 elliott, like one line being shorter than another 19:09:50 hm 19:10:02 I'm pretty sure that will definitely work. 19:10:04 elliott, oh is this for non-cardinal? 19:10:08 Vorpal: It's for both. :p 19:10:12 I don't do special cases. 19:10:12 oh okay 19:10:20 !bfjoust scimitar http://candlebags.co.uk/temp/1.txt 19:10:23 oh you know what 19:10:27 i remember designing one to make defend suicide 19:10:28 ;) 19:10:28 impomatic: what the heck is that doing? 19:10:36 Score for impomatic_scimitar: 46.6 19:10:39 slowrush may have been designed with that in mind but i don't think it's the one 19:10:41 winning 19:10:42 it was an earlier defend version 19:10:43 that's what 19:10:49 trip the tripwire then just take your time gettting there 19:10:59 Crap sandwiches, man! 19:11:00 defend decs its flag until it loses 19:11:04 that was fun. 19:11:09 quintopia: unfortunately it turns out I've recreated defend from scratch. :-( 19:11:17 myndzi: aha: what happens is that the extra pair of square brackets around the attack in slowrush serves as a defend7 detector 19:11:27 -!- pikhq_ has joined. 19:11:28 INTELLIGENT DESIGN IN ACTION 19:11:29 -!- pikhq has quit (Ping timeout: 260 seconds). 19:11:41 !bfjoust test (+-)*1000000 19:11:46 slowrush notices that [+] went past 0 but didn't stay there the cycle afterwards, and does the whole 22-offset thing again 19:11:55 Score for Vorpal_test: 8.6 19:11:58 oh shit i was misreading the nesting 19:12:13 i thought thte two were separate and it was just alternating the attacks 19:12:18 didn't remember they were tied together 19:12:26 no, they're not tied 19:12:34 [[-(+)*22[-]] 19:12:35 Deewiant: Hmm, Mycology wraps right after printing the first 0? 19:12:40 i mean the -+ and the +- 19:12:42 that has one more pair of square brackets than normal 19:12:54 >(+)*19>(-)*19(>++++++>------)*1>+>->->+(>[[-(+)*22[-]]+>[+(-)*22[+]]->]+)*21 19:12:59 elliott: Mycology wraps after "Befunge-98 detected" 19:12:59 !bfjoust aaaaah_motherland (>)*10((+)*127<)*10 19:13:01 so the [-]], if it doesn't leave the loop, means you hit a defense program that's trying to lock you in place 19:13:13 $ ./shiro 19:13:13 (75489,181,884) 19:13:13 0 shiro: wrap 19:13:14 Score for Gregor_aaaaah_motherland: 1.6 19:13:15 they are tied togethter 19:13:17 Deewiant: To differ, I beg 19:13:18 Yessssssssssssssss 19:13:20 the forward and backward one 19:13:23 in a loop 19:13:25 they are indeed tied together ais523 19:13:25 definitely slow 19:13:35 so, yeah, ridic slow 19:13:35 i was reading it as something like 19:13:41 and the ingenious part is, that bit only runs against defense programs 19:13:45 !bfjoust test ] 19:13:46 well, something without those bracketts 19:13:52 yeah, i'm pretty sure i did that intentionally ;p 19:13:55 so you use your own decoy-clear code as a timing-randomiser against defend7 19:13:57 Score for Vorpal_test: 8.1 19:13:59 elliott: Er, right; before 19:13:59 i just couldn't remember what i was doing haha 19:14:00 wait what 19:14:04 Deewiant: Right. :p 19:14:06 that's a syntax error 19:14:10 how can it get any points 19:14:20 it just sits there 19:14:23 impomatic: is scimitar just a defend7 clone? 19:14:26 and programs that skip tripwires suicide 19:14:29 Oh, I forgot to write MetaBFJoust :P 19:14:29 Vorpal: it draws with everything, IIRC 19:14:38 ais523, I thought that was fixed 19:14:48 3 | - - - 0 - + 0 - - 0 - - - - - - - - + 0 | 8.1 | -11.7 | Vorpal_test.bfjoust 19:14:49 yeah 19:14:51 ais523: I haven't checked exactly, but I think it's pretty similar. 19:15:02 !bfjoust test >[+ 19:15:11 pretty ... scimilar 19:15:11 HAR 19:15:13 Score for Vorpal_test: 8.1 19:15:15 should be same score 19:15:18 yeah 19:15:31 try !bfjoust test . 19:15:33 it'll be the same 19:15:35 in the same places ;p 19:15:46 you don't lose for running out of code 19:15:53 !bfjoust test . 19:15:58 ] doesn't try to loop because the cell is nonzero 19:16:00 impomatic: it's not quite; the differences: defend7 uses its flag to lock the opponent, scimitar uses the cell after; and defend7 has an extra decoy for tripping anti-tripwires 19:16:03 Gregor: aka, submit programs that generate bfjoust programs, give them the programs they fought to learn from, and iterate? 19:16:04 so even though it's a syntax error.. lol 19:16:05 myndzi, I thought syntax error wouldn't do that 19:16:05 Score for Vorpal_test: 8.1 19:16:34 ais523, does tripwire set up decoys? 19:16:36 -!- copumpkin has quit (Ping timeout: 240 seconds). 19:16:56 tripwire itself, I can't remember 19:16:57 ais523: i have an idea on a similar concept actually now 19:16:59 tripstridewire doesn't 19:16:59 i'll have to try later 19:17:02 i have to go 19:17:20 i think the metabfjoust tourney would be the best thing ever 19:17:28 !bfjoust test (>[-].)* 19:17:31 wait 19:17:34 !bfjoust test (>[-].)*20 19:17:39 way to specify a repeat count 19:17:41 Score for Vorpal_test: 8.3 19:17:41 Score for Vorpal_test: 8.3 19:17:47 ais523, yeah XD 19:18:15 quintopia: Yeah 19:18:29 hmm, slowrush shows huge signs of being optimised specifically to beat its main competitors at the time 19:18:43 -!- poiuy_qwert has quit (Quit: This computer has gone to sleep). 19:18:51 also interesting: defend7 beats a lot more than scimitar, but scimitar tends to beat better programs 19:18:51 ais523: And yet, it's still on the top of the hill :P 19:19:00 ^ 19:19:00 -!- copumpkin has joined. 19:19:02 (and ofc, they draw with each other) 19:19:04 Gregor: indeed 19:19:15 And no claiming that my score-calculation algorithm is unfair :P 19:19:30 I think slowrush took a generically good program, and tweaked it to beat a bunch of specific strategies that beat it 19:19:35 which is of course a legitimate thing to do 19:19:42 so the scoring system gives you a better ranking for beating better programs? 19:19:45 yep 19:20:10 quintopia: http://codu.org/eso/bfjoust/SCORES 19:20:52 Gregor: tripstridewire is a bit of an exploit of your scoring algo, btw, seeing as it normally loses overall but is optimised for short tapes and so doesn't lose very badly to most programs 19:20:56 Deewiant: The essential trickiness seems to be that whenever I say "foo < minFoo", I actually mean "foo > maxFoo" if dfoo is negative, and my headache isn't showing any signs of going away. 19:21:01 thus it doesn't lose so many points 19:21:20 elliott: Just separate the two dfoo cases? 19:21:27 elliott, try aspirin? 19:21:35 ais523: If you have suggestions for a better scoring algorithm ... TOO BAD, mine is perfect by definition. 19:21:42 Vorpal: Aspirin is nasty. 19:21:46 I don't, it's part of the game 19:21:48 ais523: what do you think of having a "gauntlet" of simple programs that never get deleted that contribute to the program's score in addition to the hill battles? 19:21:50 Deewiant: Yeah, except that when I do that, it fails :-D 19:21:53 elliott, in taste or what? 19:21:58 Vorpal: In side-effects. 19:22:02 we could pick and choose which programs go in the "gauntlet" 19:22:04 quintopia: people might just exploit specific failings of them 19:22:08 elliott, I thought Alvedon was the really bad one when it came to side effects? 19:22:14 elliott: You're doing it wrong :-P 19:22:18 I think the "gauntlet" is made up atm by the programs that have been there over a year 19:22:23 anyway, time to go home 19:22:24 -!- ais523 has quit (Remote host closed the connection). 19:22:26 Vorpal: http://en.wikipedia.org/wiki/Aspirin#Adverse_effects 19:23:48 and yet every now and then ... stupid programs get added that do much better than they should... and there's no way to prevent a single strategy from taking over half of the hill 19:23:58 elliott, hm they are all more or less bad it seems 19:24:07 !bfjoust scimitar http://candlebags.co.uk/temp/1.txt 19:24:21 -!- pumpkin has joined. 19:24:45 Score for impomatic_scimitar: 0.0 19:24:49 Vorpal: Adverse effects, bad? Never! 19:24:56 elliott, XD 19:25:06 quintopia, they aren't stupid if they work :P 19:25:30 quintopia, besides there is beauty in simplicity 19:25:35 Deewiant: What does it means if I get "0 4 ". 19:25:37 Vorpal: they only work against specific opponents though, but that's enough to take over half the hill 19:25:37 (or something) 19:25:50 !bfjoust scimitar http://candlebags.co.uk/temp/1.txt 19:25:54 quintopia, that's the scoring code that is problematic then 19:25:58 elliott: You're fucked? :-D 19:26:10 Gregor: I suggest that you weight programs such that a program gets penalised more heavily for not beating more of the hill. 19:26:16 Gregor: Perhaps make it exponential or something. 19:26:24 yeah that would work 19:26:28 Gregor: (But make sure to take into account not penalising for losing to really bad programs) 19:26:34 but I find the specialised ones quite interesting 19:26:35 Score for impomatic_scimitar: 37.7 19:26:37 -!- copumpkin has quit (Ping timeout: 240 seconds). 19:26:58 elliott: Your v moves southwest instead of south? 19:27:08 Deewiant: No, all I've changed is my wrapping code :-D 19:27:18 !bfjoust scimitar http://candlebags.co.uk/temp/1.txt 19:27:23 Your wrapping code should have no effect until before "Befunge-98 detected" 19:27:48 Deewiant: Well... it "wraps" after you output 0 for me. 19:27:57 elliott, you are doing it wrong then 19:28:04 elliott: Find the wrap: 0#@>. 1#@v 19:28:08 Score for impomatic_scimitar: 46.6 19:28:09 Hint: it's not to be found 19:28:19 Then something is fucked HOORAY 19:28:41 -!- Sgeo has quit (Ping timeout: 255 seconds). 19:29:12 Deewiant: Fixed by doing something that makes no sense!!! 19:29:21 (updateBounds x y rb) 19:29:22 (updateBounds y x cb) 19:29:22 where updateBounds k v = 19:29:22 Map.alter (\x -> Just $ maybe (v,v) (\(minv,maxv) -> 19:29:22 (if v < minv then v else minv, 19:29:22 if v > maxv then v else maxv)) x) k 19:29:23 impomatic, why do you do >->+[]< hm... 19:29:24 rb = row bounds 19:29:26 cb = column bounds 19:29:32 Now, stop me if I'm wrong. 19:29:40 But surely the row bounds should be indexed by y? 19:29:48 impomatic, oh you defend the first decoy after? 19:30:13 Vorpal: defend on the first cell after the flag. 19:30:18 impomatic, right 19:31:45 elliott, v < minv? Not the other way around? 19:32:01 Apparently defend7 defends on the flag, but if I try that next I'll probably end up with the same code :-( 19:32:05 Vorpal: If the new value is lower than the minimum bound, the new value is the new minimum bound. 19:32:06 No? 19:32:14 oh 19:32:36 elliott, wait. If v is less that minumum, then v 19:32:52 oh wait update *duh* 19:32:58 thought it was wrapping 19:33:26 Vorpal: But the thing is, I'm indexing the _ROW_ bounds with x which is the _column_ 19:33:28 so wtf 19:33:36 and that makes it work 19:33:37 !bfjoust scimitar2 http://candlebags.co.uk/temp/2.txt 19:33:41 but if i swap it it fails 19:33:58 Score for impomatic_scimitar2: 42.4 19:35:41 Gregor, why http://codu.org/eso/bfjoust/report-2009-05-29-20-17.mp4 19:35:56 Vorpal: Because I felt like it? :P 19:36:01 Gregor, ah 19:36:42 ??? 19:36:49 Oh, right 19:37:07 !bfjoust scimitar2 http://candlebags.co.uk/temp/3.txt 19:37:20 Score for impomatic_scimitar2: 0.0 19:37:38 !bfjoust scimitar2 + 19:37:42 impomatic: Why in god's name do you have /temp/ access to candlebags.co.uk? 19:37:54 Score for impomatic_scimitar2: 8.9 19:37:58 (Note the decapitalization of "god" that makes the above phrase totally meaningless) 19:38:11 Candlebags is actually a street name for crack cocaine. 19:38:14 The more you know! 19:38:19 (Note: Lies.) 19:38:23 Gregor: just one of my websites 19:38:23 *stars fly over our heads8 19:38:25 * 19:38:28 TRUE Lies 19:38:38 impomatic, you sell the stuff in http://candlebags.co.uk/ ? 19:38:52 No. He sells crack cocaine POSING as that. (Note: Also lies) 19:39:02 It's actually just uncut pure cocaine. 19:39:38 He isn't denying it! 19:39:56 Vorpal: yes, candles etc 19:40:14 "Candles" 19:40:22 Gregor, I'd like mine in a rose cut 19:40:27 Elliott: no crack, that'd be my other website 19:40:31 PEOPLE WHO BELIEVE IMPOMATIC'S COVER STORY: 0 19:40:40 PEOPLE WHO DON'T BELIEVE IMPOMATIC'S COVER STORY: All of them 19:40:41 crackcocaineforyouhooray.co.uk 19:40:49 Gregor: A+++ would buy from similarly-named sites again 19:40:54 X-D 19:43:37 Gregor, what does codu stand for 19:43:39 in codu.org 19:43:48 Vorpal: Nothing 19:43:52 oh 19:45:09 Crack Orgies? Dtotally Usoldhere 19:46:05 elliott, XD 19:48:13 -!- Lymia__ has joined. 19:49:25 -!- elliott_ has joined. 19:49:28 Deewiant; So does CCBI really solve diophantines for wrapping? 19:49:34 -!- elliott has quit (Read error: Connection reset by peer). 19:49:34 Yes 19:49:46 Deewiant: What license is CCBI under again? 19:49:50 BSD 19:50:06 elliott_, are you going to just copy what he wrote? 19:50:07 :P 19:50:07 Deewiant: How imperative is the code :P 19:50:11 Vorpal: Maybe this once. 19:50:15 does [-] decrement every 3 cycles or every other cycle? 19:50:19 At least until I can figure out wtf is wrong. 19:50:21 Um, fairly? I dunno 19:50:28 It's pretty complicated though :-P 19:51:24 -!- Lymia_ has quit (Ping timeout: 240 seconds). 19:51:38 -!- copumpkin has joined. 19:52:05 -!- pumpkin has quit (Ping timeout: 255 seconds). 19:56:36 Deewiant; So does CCBI really solve diophantines for wrapping? <-- do you think I would lie? 19:56:44 No, but I think you might misunderstand :P 19:56:59 elliott_, unlikely. 19:57:33 I think my wrapping is broken again X_X 19:57:37 Why is this so fucking hard to get right 19:57:49 elliott_, why are you not doing it as a single bounding box? 19:57:50 Why don't you implement the trivial algorithm straight from the spec 19:57:54 It's those stupid fucking non-cardinal directions. 19:57:59 Deewiant: I am and it isn't working :P 19:58:05 Deewiant: Because of the awy I store bounds. 19:58:08 Vorpal: Because that doesn't allow for shrinking. 19:58:14 elliott_, it does! 19:58:15 If you fall outside bounds, turn around and move until you fall outside bounds again, and then reverse 19:58:16 Well, not sanely. 19:58:29 Deewiant: That's what I've been doing. 19:58:33 elliott_, just keep member counts for each column and row 19:59:04 elliott_, that won't work for jagged bounds. Think of one short line between two really long ones. Or a situation where funge space is: 19:59:06 x 19:59:07 x 19:59:15 *way 19:59:31 Deewiant: Meh, I'll just store bounds as a rectangle, Vorpal is right for once. 19:59:42 elliott_, *as usual 19:59:46 *for once 19:59:52 *as usual 20:00:02 -!- copumpkin has quit (Ping timeout: 250 seconds). 20:00:08 it is patently obvious anyway 20:02:00 Not when you have a headache 20:02:18 elliott_, maybe you should go rest then 20:02:28 Meh 20:03:11 -!- copumpkin has joined. 20:03:18 elliott_, take DRUGS 20:03:29 IT IS A GOOD THING IT IS AFTER THE 60s NOW 20:03:32 Okay. 20:03:38 DAMN YOU PEER PRESSURE 20:04:00 Deewiant: OK, it now wraps after "p modifies space" which is indeed the correct place. 20:05:49 -!- myndzi_ has joined. 20:05:58 hey finally worked 20:06:02 stupid sasl 20:06:23 myndzi_, what did? 20:06:31 sasl? 20:06:32 Deewiant: Do you stop moving when *one* coord goes out of bounds, or when *both* go out of bounds? 20:06:37 what is the point of that 20:06:43 I mean, on irc 20:06:44 over ssl 20:06:50 it seems a bit pointless to me 20:07:01 oh wait, you aren't using ssl to freenode myndzi_? 20:07:40 elliott_, you mean for wrapping? 20:07:44 Yes. 20:07:47 elliott_, one coord I believe 20:08:33 What if both are out of bounds? Do you correct both to be in-bounds, or just one? 20:08:36 elliott_, at least with the simple bounding box model that should work 20:08:36 elliott_: One, of course 20:08:40 elliott_: And both, of course 20:08:41 What if both are out of bounds? Do you correct both to be in-bounds, or just one? 20:08:43 Okay. :p 20:08:46 I'm a bit 'tarded. 20:08:56 `addquote I'm a bit 'tarded. 20:08:57 297) I'm a bit 'tarded. 20:09:03 (NOTHING PERSONAL!) 20:09:26 `addquote ( Vorpal) `addquote I'm a bit 'tarded. ( Vorpal) (NOTHING PERSONAL!) 20:09:26 298) ( Vorpal) `addquote I'm a bit 'tarded. ( Vorpal) (NOTHING PERSONAL!) 20:09:31 myndzi_: [-] <--how many cycles per dec? 20:09:37 Deewiant, fair enough 20:09:58 Deewiant: That... worst nickname format ever. 20:10:11 `run sed -i 's/( Vorpal)//g' quotes 20:10:12 No output. 20:10:13 `quote 298 20:10:13 and I agree with elliott_ on that one 20:10:15 -!- GreaseMonkey has joined. 20:10:17 298) `addquote I'm a bit 'tarded. (NOTHING PERSONAL!) 20:10:20 multi-line quotes always end up so ugly :/ 20:10:28 Only because MORONS DON'T PUT TWO SPACES BETWEEN MESSAGES 20:10:40 `run sed -i s'/tarded. No output. 20:10:42 `quote 298 20:10:44 298) `addquote I'm a bit 'tarded. (NOTHING PERSONAL!) 20:10:48 I am a magical. 20:11:07 you're a bit of a 'tard, obviously 20:11:26 More than a bit, my friend 20:11:36 !bfjoust scimitar2 http://candlebags.co.uk/temp/3.txt 20:11:38 Hey Deewiant, what has three ducks and quacks like hanging after "GOOD: p modifies space" 20:12:30 Score for impomatic_scimitar2: 43.9 20:12:33 damn annoying WM bug, the taskbar loses the ability to change focus 20:12:47 clicking just starts the "wants attention" animation 20:13:45 Deewiant: Seriously though, what's wrong with this logic: If the coordinate oversteps either current boundary, jump it to the opposite one. 20:13:57 olsner, what WM? 20:13:57 !bfjoust scimitar2 + 20:13:59 That's pathological if you e.g. go off the end of the right and there's 2 billion spaces before the single instruction before the end. 20:14:05 But it seems like it'd normally be faster. 20:14:07 Score for impomatic_scimitar2: 8.9 20:14:08 Vorpal: xfce 20:14:21 elliott_, that works for cardinal? 20:14:27 Vorpal: Oh, is that cardinal-only? 20:14:28 Darn. 20:14:33 olsner: xfwm is really bad IME 20:14:33 elliott_, not for flying of course 20:14:47 elliott_, see the reversing algorithm for flying! 20:14:54 BAD: wraparound with non-cardinal delta doesn't work 20:14:56 YOU'RE FUCKING JOKING 20:15:04 it seems time-related, but I dunno if it's about uptime or just about more opportunities for the right case to happen 20:15:08 Deewiant, it works PERFECTLY. 20:15:25 elliott_, Why don't you just do the flying algorithm from the spec 20:15:30 Vorpal: I *did*. 20:15:31 *Directly*. 20:15:32 2 on [-] 20:15:39 elliott_: why so? except for this bug I think it's as good as any wm I've tried 20:15:41 elliott_, on boxy bounds? 20:15:43 wrap minXY@(minX,minY) maxXY@(maxX,maxY) (Ray (x,y) d@(dx,dy)) 20:15:43 | oobX || oobY = Ray (if oobX then x+dx else x, if oobY then y+dx else y) d 20:15:43 | otherwise = wrap minXY maxXY (Ray (x-dx,y-dy) d) 20:15:43 where oobX = x < minX || x > maxX 20:15:43 oobY = y < minY || y > maxY 20:15:45 Vorpal: Yes. 20:15:45 elliott_, or on jagged ones? 20:15:45 if it wasn't already answered 20:15:47 Vorpal: Boxy. 20:15:50 right 20:15:52 Big ol' frickin' box of boxshit. 20:15:59 sasl not ssl 20:16:00 Hmm, wait. 20:16:02 FungeSpace (Map.insert k v m) 20:16:02 at least in the "normal" category of WM's, with floating windows and stuff 20:16:02 (if x < minX then x else minX, if y < minY then y else minY) 20:16:02 (if x > maxX then x else maxX, if y > maxY then y else maxY) 20:16:06 That update algorithm might be wrong. 20:16:07 Wait, no. 20:16:07 elliott_, well I'm not sure. But cfunge implements that one 20:16:10 freenode wouldn't let me connect without it on my phone 20:16:10 It's perfectly correct. 20:16:11 in case you want to check 20:16:16 it's authentication 20:16:18 elliott_, rather than solving equations 20:16:28 my pass is a hash so it was a pain in the ass ;) 20:16:48 Vorpal: Can't read cfunge, it's GPL'd. If you grant me a license to read that code and rewrite a derivative-in-algorithm without restrictions... 20:16:49 -!- myndzi_ has changed nick to nescience. 20:16:52 myndzi_, err. Why not on your phone? 20:17:00 o this is registered? 20:17:07 -!- nescience has changed nick to evitable. 20:17:12 maybe to me, check later 20:17:14 elliott_, alas I can't. Other copyrightholders 20:17:18 elliott_, including you and ais 20:17:18 evitable: you can't evit the inevitable 20:17:25 elliott_: which window manager would you recommend though? 20:17:26 Vorpal: They haven't touched the wrapping code. 20:17:31 Vorpal: I mean just this single algorithm. 20:17:33 I don't know, I think bot protection 20:17:36 olsner: They all suck. 20:17:39 elliott_, remember when you ported it to cygwin! 20:17:44 maybe my ip falls in a restricted block 20:17:44 olsner: Although dwm is quite nice. :p 20:17:53 or - oh - probably because no ident 20:17:55 Vorpal: I grant myself the appropriate license. And as ais523 hasn't touched the wrapping code... 20:17:58 elliott_, wait, let me rewrite it in asm! 20:18:01 elliott_: dwm is a tiling wm, right? 20:18:05 elliott_, actually you didn't touch wrapping code 20:18:11 elliott_, anyway it is rather imperative 20:18:11 olsner: Well, yes, but it's dynamic tiling. 20:18:30 Vorpal: That's okay, I just want to see the damn thing :P 20:18:35 Because I'm implementing this perfectly. 20:18:36 elliott_, well sure 20:18:42 YAY 20:18:51 elliott_, just remember to mention me in credits! 20:19:00 Vorpal: That's not a no-restrictions license. 20:19:10 But hey, that's all right, you can't copyright an algorithm anyway. 20:19:10 elliott_, indeed it is BSDish 20:19:21 I thought the SASL-auth thing only applied to people connecting via Tor. I mean, quite a few people don't have a reachable identd. 20:19:33 // NOTE: This has been duplicated in funge-space.c for speed reasons. 20:19:34 * elliott_ facepalms 20:19:56 I love FUNGE_ATTR_FAST. 20:20:00 It just MAKES THE FUNCTION FASTER. 20:20:02 :D 20:20:08 elliott_, actually the inlining helped 20:20:12 elliott_, I did profile it 20:20:17 and we are talking about a 20% 20:20:20 difference 20:20:23 What is it with Befunge implementers and profiling. 20:20:28 Vorpal: You could have put it in a C file to be #included :P 20:20:28 Googling freenode + sasl only finds that recent "be safe out there" blog-post that they have in the MOTD, which says "One form of spam, popular recently, claims that freenode will require SASL to connect." 20:20:31 Rather than duplicating code. 20:20:35 elliott_, that too 20:20:51 elliott_, anyway it is fungespace_wrap you want to check 20:20:55 I know. 20:20:56 I like how you have a CFUN_OBEY_THE_SPECIFICATION define. 20:21:06 // FIXME, HACK: Why are the +1/-1 needed? 20:21:09 FEELING GOOD ABOUT THIS CODE GUYS 20:21:20 elliott_, that is for cardinal :P 20:21:36 elliott_, you only need the section after 20:21:39 with the do-while loop 20:22:25 As far as I can tell, your code shouldn't be able to work. 20:22:29 BAD: wraparound skips easternmost cell 20:22:34 elliott_, mine does? 20:22:39 Because you increment the x and y by the delta unconditionally... 20:22:43 elliott_, uh that is not BAD 20:22:46 it is UNDEF 20:22:47 whereas you should surely only do it for those coordinates that are out of bounds. 20:22:48 I saw that too fizzie, but it disconnects me and says this server requires sasl 20:22:49 Vorpal: That's BAD. 20:22:50 at least was last I checked 20:22:55 Deewiant: Facepalm Vorpal for me. 20:22:58 elliott_, not when I wrote the code. Why is it bad now 20:23:01 Or just give him the ability to read. 20:23:03 oh wait 20:23:10 elliott_, I thought you said something else 20:23:13 OTHER THINGS THAT HELP VORPAL UNDERSTAND: Mocking. 20:23:15 it doesn't do it on my home computer 20:23:16 Added to list. 20:23:21 Because you increment the x and y by the delta unconditionally... <-- what else should you do 20:23:22 I think it must be ident 20:23:27 if you don't what the heck are you doing 20:23:28 and/or my ip block 20:23:31 Vorpal: Increment only the coordinates that are out of bounds. 20:23:32 or maybe a proxy scan 20:23:39 elliott_, *why* 20:23:45 elliott_, that is a bug obviously 20:23:52 Vorpal: Because otherwise you skip the first cell? 20:23:59 elliott_, *blink* 20:24:00 elliott_: You have to move by the delta :-P 20:24:07 wrap minXY@(minX,minY) maxXY@(maxX,maxY) (Ray (x,y) d@(dx,dy)) 20:24:07 | oobX || oobY = Ray (x+dx, y+dx) d 20:24:07 | otherwise = wrap minXY maxXY (Ray (x-dx,y-dy) d) 20:24:07 where oobX = x < minX || x > maxX 20:24:07 oobY = y < minY || y > maxY 20:24:12 Deewiant: SERIOUSLY, HOW CAN THIS CODE NOT BE PERFECT 20:24:13 elliott_, 'tard-a-lot 20:24:18 :lindbohm.freenode.net NOTICE * :*** No Ident response ← but it didn't really matter, it let me in just fine. 20:24:20 IT'S NOT TARDULOUS IN THE SLIGHTEST 20:24:23 IT'S THE SIMPLEST FUCKING 20:24:35 -!- fizzie3 has joined. 20:24:40 Hi fizzie3! 20:24:44 Your username is ~1. 20:25:06 :Yes, I always type "USER 1 2 3 4" when I can't be bothered to remember the parameters. :p 20:25:18 fizzie3: EXTRA COLON 20:25:21 My realname is also "4". 20:25:29 Hi 4. 20:25:36 Yet I am not a number! I am a free man! 20:25:40 "My real name is 4, but I go by fizzie3 on the Internet. I log in as 1." 20:25:48 -!- fizzie3 has quit (Client Quit). 20:25:56 Yay, WM got broken again. 20:26:09 elliott_, WM as in window manager? 20:26:26 elliott_, anyway do you move by delta now 20:26:42 or do you still do the "only mess with one out of bounds" weirdness 20:26:42 No, because that, as I said, breaks it. 20:26:46 Now let me fix my fucking WM >_< 20:26:59 elliott_, well the correct thing is to move by delta always 20:27:01 that will fix it 20:27:19 I fucking do. Argh, it has a typo. LET ME FIX MY WM stop talking okay how do i kil lthis thing 20:27:33 elliott_, try /quit 20:27:42 (unhelpful) 20:28:28 -!- elliott_ has quit (Remote host closed the connection). 20:28:32 -!- elliott has joined. 20:28:54 It fucking passes! O Joy! 20:29:05 TODO: Shrinking. 20:29:18 What'd you do 20:29:21 elliott, that is trivial with cfunge's algorithm! 20:29:33 *the spec's algorithm 20:29:34 That's the algorithm I'm using you asswipe. :P 20:29:45 elliott, for shrinking? It has one? 20:29:51 No... 20:29:57 -!- ais523 has joined. 20:29:59 elliott, that was what I was talking about 20:30:00 ais523, hello! 20:30:14 Use CCBI's algorithms, they're highly nontrivial but at least they're FAST 20:30:20 wb me 20:30:54 Deewiant: I'd have to convince myself that solving diophantines for wrapping is actually something a sane person could think of before doing that. 20:31:01 And that will take a very, very long time. 20:31:28 Oh yes. Deewiant: What the fuck does "s" do. I can't find it in the spec. Only in the reference. 20:31:28 hmm, hopefully they aren't generalised diophantines 20:31:39 Solving diophantines in the sense that you're solving differential equations when you write distance = speed * time 20:31:39 Why is it that whenever I put music anywhere, there's a bunch of indifferent people, one or two people who like it, and one audiophile douchetard who complains about the reverb effect or a particular synth instrument. 20:31:45 "s "Store Character" is the mirror image of the ' instruction: this instead pops a value off the stack and writes it into (position + delta). 20:31:46 " 20:31:47 Aha. 20:31:56 Deewiant: Right. 20:31:57 Gregor: is it the same audiophile every time? 20:31:59 Gregor: Hey, I like your music 20:32:04 ais523: No. 20:32:09 elliott: You're not the audiophile douchetard :P 20:32:12 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]). 20:32:37 Gregor: elliott will just claim that the filename's written in Arial rather than Helvetica on the virtual album cover 20:32:45 wat 20:32:48 X-D 20:33:08 elliott: a friend of mine from work said that a certain range of PostScript printers actually detected that you were trying to print something in Arial and silently substituted Helvetica 20:33:15 which is both evil and awesome 20:33:22 I approve 20:33:26 (presumably it was to make the output look better than that of other printers') 20:33:27 not that anyone would notice :P 20:34:48 Deewiant: Holy shit @ negative j. 20:34:55 elliott: It also skips over the newly written character, which is a bit of a shame; I used to hope 's' was sort-of an "execute from stack" thing. 20:35:06 Deewiant: Wait, j skips over *spaces*. So is it actually indifferent to speed? 20:35:18 j is like # but with an argument. 20:35:31 Suuure :P 20:36:08 ah, xfwm4 can be restarted without logging out, which fixed the taskbar bug 20:36:12 Uhhh, are Arial and Helvetica even metric-compatible? I guess they must be ... 20:36:16 most WMs can, actually 20:36:17 Gregor: they are 20:36:18 Gregor: They're almost identical. 20:36:27 Gregor: Except whenever they differ, Helvetica is significantly less ugly :P 20:36:36 Especially R. 20:36:38 *"R". 20:36:41 -!- pumpkin has joined. 20:36:52 I love the joyous life of being neither a typefaceofile nor an audiophile :P 20:37:06 I'll stick with better philias thank you very much. 20:37:18 elliott, >1j is same as ># 20:37:37 Have you ever tried to design typefaces using METAFONT or any other program? 20:37:38 (where > shows direction of entry) 20:37:57 BAD: 'vs doesn't place v 20:37:57 zzo38: I've designed a couple of very small ones in pixel editors (MS Paint-like programs) 20:37:58 Yes it does. 20:38:07 Gregor: Like paedo? 20:38:08 elliott, not where it should 20:38:15 elliott, which is directly after the s 20:38:20 zzo38: http://codu.org/gregor_handwriting.ttf BEST TYPEFACE EVER 20:38:22 Vorpal: What, even ignoring the delta? 20:38:27 elliott, err no 20:38:34 elliott, directly after wrt delta of course 20:38:35 doCharIns 's' = do 20:38:35 x <- pop 20:38:35 Ray (x,y) (dx,dy) <- gets (ray . ip) 20:38:35 poke (x+dx,y+dy) x 20:38:35 advance 20:38:45 Looks fine to me, bitches. 20:38:46 Remember to skip over it. 20:38:50 fizzie: "advance" 20:38:51 Versus: 20:38:53 doCharIns '\'' = do 20:38:53 Ray (x,y) (dx,dy) <- gets (ray . ip) 20:38:53 push =<< peek (x+dx, y+dy) 20:38:53 advance 20:38:55 elliott: If p[a]ed means both "foot" and "child", then what's the proper name for a foot fetish? ANSWER ME THAT 20:38:57 Direct inversions. 20:39:03 Gregor: PRECISELY 20:39:13 -!- copumpkin has quit (Ping timeout: 240 seconds). 20:39:18 Gregor: "Footfetish". 20:39:26 how zzo 20:39:29 *Paedophilia 20:39:38 `addquote HELLWORLD! It's like HELLO WORLD, except not *quite*. There is more agony. 20:39:39 299) HELLWORLD! It's like HELLO WORLD, except not *quite*. There is more agony. 20:40:09 OH 20:40:13 x <- pop 20:40:13 Ray (x,y) (dx,dy) <- gets (ray . ip) 20:40:13 poke (x+dx,y+dy) x 20:40:13 advance 20:40:14 Vorpal: Spot the bug. 20:40:20 Look at the poke line. 20:40:21 Heh, x. 20:40:28 DON'T GIVE IT AWAY :D 20:40:29 hah 20:40:50 Did notice it before the "poke line" comment, but only now on the second look. 20:40:53 BAD: 04-j jumps forward 20:40:54 elliott, why aren't you using coq for all but the main loop? 20:40:56 Fuckin' doesn't >_< 20:40:59 Vorpal: LET ME THIN 20:41:00 *THINK 20:41:04 Doesn't your compilator give a "x hides x" sort of warnings?-) 20:41:11 if n >= 0 20:41:11 then replicateM_ (fromIntegral n) advance 20:41:11 else replicateM_ (fromIntegral n) retreat 20:41:12 SPOT THE FAIL 20:41:13 fizzie :D 20:41:17 fizzie: Err, yes, I have -Wall turned off. 20:41:19 Why is that X-D 20:41:33 Holy shit so many warnings 20:41:39 elliott, hahaha 20:41:47 What would happen if you have some program to make music from a METAFONT output? 20:41:49 Mostly because I use ip as the accessor name and variable name. 20:41:54 Which will fix itself when I introduce Concurrent Funge. 20:41:57 Because it'll turn into "ips". 20:42:29 Hey Deewiant, I fixed it but your thing says it's still not-fixed, what givens 20:42:50 You fixened it wrongly 20:42:59 n <- pop 20:42:59 if n >= 0 20:42:59 then replicateM_ (fromIntegral n) advance 20:42:59 else replicateM_ (fromIntegral (abs n)) retreat 20:42:59 where retreat = do 20:42:59 fs <- gets fungeSpace 20:43:01 modifyRay (\(Ray (x,y) (dx,dy)) -> nextPos fs (Ray (x,y) (-dx,-dy))) 20:43:03 Your mom is wrongly 20:43:07 Oh 20:43:10 That flips the delta permanently 20:43:11 Durrrr 20:43:15 elliott, so is your code! 20:43:41 I like how somehow Deewiant's code can recover from the delta flipping on negative j. 20:44:51 elliott, it is a test suite 20:45:06 it has to be able to give you errors 20:45:18 :t foldlM 20:45:19 Not in scope: `foldlM' 20:45:21 :t foldM 20:45:22 forall a b (m :: * -> *). (Monad m) => (a -> b -> m a) -> a -> [b] -> m a 20:45:24 elliott, and then I guess it just happens to go with > or such to the same place 20:45:54 It's an obvious mistake to make. 20:46:09 Deewiant: Obvious howso :P 20:46:20 I think I made it :-D 20:46:30 BAD: u doesn't reflect when stack stack has only one stack 20:46:30 ...yes it does you stupid thing 20:46:39 ss <- gets stackStack 20:46:39 case ss of 20:46:39 [] -> reflect 20:46:39 _ -> do 20:46:49 elliott, is that u or } ? 20:46:50 [_] -> reflect ?-) 20:47:10 and what Deewiant said 20:47:13 seems obvious 20:47:41 Deewiant: Oh X-D 20:47:47 Vorpal: Seems obvious because you didn't write it 20:47:48 -!- Lymia_ has joined. 20:47:49 Deewiant, u doesn't reverse does it? 20:47:58 Clearly does 20:47:59 elliott, I know 20:48:11 okay so if u reverse, is it { and } that don't? 20:48:25 I know ONE of them doesn't 20:48:26 { reflects on out-of-memory. 20:48:29 } reflects on empty stack stack. 20:48:33 elliott, I mean when copying 20:48:34 Err, *less than two elemented stack stack. 20:48:36 Oh. 20:48:45 -!- impomatic has joined. 20:48:49 Neither reflects when copying, I don't think, 20:48:50 *think. 20:48:53 elliott, I would have said reflect otherwise 20:48:54 :P 20:49:08 "If count is negative, |count| cells are transferred (similarly in a pop-push loop) from the TOSS to the SOSS." 20:49:11 fffuuu 20:49:20 elliott, I'm pretty sure u and {,} do different things for the order of copying 20:49:23 one is like reversing 20:49:27 the other is like memcpy 20:50:07 yep I even use memcpy to do the job 20:50:25 in { 20:50:38 elliott, anyway u doesn't copy in the same order as { and } 20:50:45 I know. 20:50:46 BAD: fedcba0{05-} doesn't leave 15 on stack 20:50:50 OK, I had better fix this before going on any further. 20:50:58 -!- Lymia__ has quit (Ping timeout: 240 seconds). 20:51:10 elliott, would be useful if it printed what it left on instead 20:51:15 Yes, yes it would. 20:52:43 Deewiant: You really need something in the readme about that error :P 20:52:49 I have no idea what kind of bug it implies in my {} impl. 20:53:07 elliott, copy to another file. Add a print statement. Check. 20:53:21 It doesn't even have a corresponding GOOD 20:53:30 Deewiant: What's the desired result? 20:53:37 15 on the stack? :-D 20:53:40 Vorpal: Knowing what the stack ends with wouldn't help. Knowing what it should end with would. 20:53:42 Deewiant, why on earth? 20:53:47 Deewiant: I don't understand :P 20:53:48 It looks like the 0{ doesn't do anything 20:53:48 elliott, 15 20:53:55 And then the 05-} drops 5 cells from the SOSS 20:53:59 And drops the TOSS 20:54:01 Leaving 15 on the TOSS 20:54:09 if n >= 0 20:54:09 then transferBlock (fromIntegral n) 20:54:09 else replicateM_ (fromIntegral (abs n)) $ push 0 20:54:11 From }. 20:54:19 elliott, that's for { not for } 20:54:22 No. 20:54:23 That's from }. 20:54:29 elliott, they do different things for negative arguments... 20:54:41 Argh, so they do. 20:54:49 } doesn't push stuff with negative args 20:54:56 it pops yeah 20:55:09 -!- oerjan has quit (Quit: Good night). 20:55:16 Great, now I need to make y not reflect. 20:55:22 elliott, have *fun* 20:55:32 Ehh, y doesn't sound that hard. 20:55:41 elliott, y takes a lot of time to implement. Not because it is hard. But because it is a chore. 20:55:56 elliott, though the y-as-pick can be tricky to get right 20:56:17 Least Significant Bit 0 (0x01): high if t is implemented. (is this Concurrent Funge-98?) 20:56:17 Bit 1 (0x02): high if i is implemented. 20:56:18 Bit 2 (0x04): high if o is implemented. 20:56:20 Bit 3 (0x08): high if = is implemented. 20:56:28 Deewiant: Will Mycology only test t if I say it supports it? 20:56:36 Yes 20:56:38 I plan to implement all of those, so I'd prefer to just construct one flag :P 20:56:40 Deewiant: HATE YOU 20:56:53 Erm? 20:57:04 Something wrong with just pushing 0b1111 now? 20:57:18 Deewiant: Because it'll probably die after shit fails? :P 20:57:36 elliott, so push 0 for now and then change when it implements stuff 20:57:46 What would you prefer? 20:57:57 That I always treat it as though you pushed 0b1111? :-P 20:58:04 Deewiant: Yes :P 20:58:08 :t sizeOf 20:58:09 Not in scope: `sizeOf' 20:58:11 elliott, that would make no sense 20:58:12 :info Enum 20:58:14 :info Bounded 20:58:20 Why is that better than you just pushing it 20:58:36 :t logBase 20:58:37 forall a. (Floating a) => a -> a -> a 20:58:45 > logBase 2 (maxBound :: Int32) 20:58:46 No instance for (GHC.Float.Floating GHC.Int.Int32) 20:58:46 arising from a use of... 20:58:50 >_< 20:59:20 elliott, I'm not very surprised at that error 20:59:25 !bfjoust chainmail http://candlebags.co.uk/temp/3.txt 20:59:30 > logBase 2 (fromIntegral $ maxBound :: Int32) 20:59:31 No instance for (GHC.Float.Floating GHC.Int.Int32) 20:59:31 arising from a use of... 20:59:35 static void push_yval(funge_cell request, instructionPointer * restrict ip, funge_stack * restrict pushStack) 20:59:35 {switch (request) { 20:59:36 what the 20:59:38 I wrote that? 20:59:39 wtf 20:59:42 @hoogle Int32 -> Double 20:59:42 Prelude fromIntegral :: (Integral a, Num b) => a -> b 20:59:42 Prelude realToFrac :: (Real a, Fractional b) => a -> b 20:59:42 Unsafe.Coerce unsafeCoerce :: a -> b 20:59:44 Vorpal: Nice indentation style. 20:59:46 Score for impomatic_chainmail: 43.9 20:59:54 > logBase 2 (fromIntegral $ (maxBound :: Int32)) 20:59:55 30.999999999328196 20:59:56 elliott: :: binds looser than $ 20:59:57 elliott, indeed! 20:59:58 Right 21:00:00 elliott, will fix it 21:00:06 Int32 is 31-bit? 21:00:08 Oh, wait, no. 21:00:13 > ceil (logBase 2 (fromIntegral $ (maxBound :: Int32)) + 1) 21:00:14 Not in scope: `ceil' 21:00:17 > ceiling (logBase 2 (fromIntegral $ (maxBound :: Int32)) + 1) 21:00:18 32 21:00:26 elliott: Data.Bits.bitSize 21:00:35 jix: COULDA HELPED ME BEFORE I RESORTED TO #HASKELL :P 21:01:02 I'm not following here ;) 21:01:09 that's your fault :D 21:01:10 well that's fixed then 21:01:40 0x5348524F. 21:01:43 Write that down. 21:02:07 elliott, you remember that y will have to act as pick into stack if you request a value past the range of y? 21:02:22 Yes. 21:02:29 elliott, also that the parameter is *cell*-based. Not "request"-based 21:02:34 -!- cheater- has quit (Ping timeout: 240 seconds). 21:03:19 And some requests are variable-size. 21:03:31 -!- cheater- has joined. 21:03:47 Deewiant, I remember I managed to speed up mycology a lot by optimising the stuff HRTI used as a wait loop. I think you changed that since though. 21:03:48 fizzie: oh joy 21:04:02 ff*kyn 21:04:12 I don't think I changed it, maybe I did 21:04:28 Deewiant, hm. The thing is to do the two values it end up sending to y there fast 21:04:33 lmao 21:04:40 dons just thought i was a galois guy 21:04:41 (elliottt) 21:05:29 !bfjoust test >(-{}>)*7(>+++[[-]])*21 21:06:32 1 vector containing the least point which contains a non-space cell, relative to the origin (env) 21:06:32 guys 21:06:36 that isn't the corner of the rectangle 21:06:42 not even the minimal rectangle 21:06:44 do you see? 21:06:54 it has to contain a non-space cell 21:07:26 elliott, that is the inner border of the infinitely thin rectangle between space and non-space 21:07:37 or what do you mean 21:07:45 Vorpal: if you have 21:07:45 Score for impomatic_test: 5.6 21:07:48 a 21:07:48 21:07:48 21:07:48 21:07:49 21:07:50 b 21:07:53 then you can't have 21:07:57 (0,0) as that value 21:07:59 it has to be 21:08:02 elliott, of course not 21:08:04 (3,0) 21:08:05 wait 21:08:07 what 21:08:08 well nobody told me you had to keep track of that 21:08:13 Vorpal: 1 vector containing the least point which contains a non-space cell, relative to the origin (env) 21:08:18 containing the least point which CONTAINS A NON-SPACE CELL 21:08:19 Deewiant 21:08:24 Deewiant, are we in trouble here? 21:08:25 LOL UR ALL FUKED 21:08:26 2 minutes for bfjoust results :-( It seemed like I was waiting forever. ;-) 21:08:29 FUKED FUKED FUKED 21:08:34 :DDDDDDDDDDD 21:08:41 * elliott lolling 21:08:45 elliott, looks like it. But just do what everyone else does 21:08:46 What's going on 21:08:49 Deewiant: lol 21:08:51 Vorpal: 1 vector containing the least point which contains a non-space cell, relative to the origin (env) 21:08:52 containing the least point which CONTAINS A NON-SPACE CELL 21:08:55 Deewiant: it's not the rectangle bounds 21:08:59 I think most people would just apply a smidgeon of sanity there. 21:08:59 Deewiant: it's even more crazy 21:09:10 god damn 21:09:15 fizzie: That's *not* *what* *it* *says*. The fact that 0k does two less than 1k is also insane :P 21:09:19 elliott, it contradicts itself too 21:09:19 HAHAHAHA 21:09:26 elliott, because it says it is suitable for use with o 21:09:28 somewhere 21:09:28 Vorpal: lmao 21:09:32 1 vector containing the least point which contains a non-space cell, relative to the origin (env) 21:09:32 1 vector containing the greatest point which contains a non-space cell, relative to the least point (env) 21:09:32 These two vectors are useful to give to the o instruction to output the entire program source as a text file. 21:09:33 no, no they're not 21:09:36 elliott, and it no longer is with your way of reading it 21:09:42 elliott: These two vectors are useful to give to the o instruction to output the entire program source as a text file. 21:09:48 Deewiant: So? That's just a remark. 21:09:50 "Useful" is subjective. 21:09:53 For that to work, they can't be as described 21:09:57 What it says isn't subjective. 21:10:03 You are wilfully breaking the direct, clear specification. 21:10:06 There is no single "least point containing a non-space cell" 21:10:11 Sure there is. 21:10:14 The point closest to the border. 21:10:14 a 21:10:15 a 21:10:18 I guess you could have two equidistant :P 21:10:19 Which is it 21:10:21 Exactly 21:10:30 Deewiant: I don't like how we ignore the spec when it makes no sense :P 21:10:34 Deewiant, actually you mean 21:10:35 a 21:10:35 a 21:10:39 rather than the other one 21:10:47 Doesn't everyone already ignore the direct, clear specification when it comes to t?-) 21:10:48 Whatever 21:10:52 And yes 21:10:54 1 cell containing current ((year - 1900) * 256 * 256) + (month * 256) + (day of month) (env) 21:10:56 ffffff 21:11:01 elliott: According to the spec, t is a forkbomb 21:11:05 Going to implement that? 21:11:06 Deewiant: Yes 21:11:08 Okay 21:11:10 Have fun 21:11:11 :D 21:11:12 !bfjoust scimitar > 21:11:23 Score for impomatic_scimitar: 8.9 21:11:38 Deewiant: Is time local or UTC? 21:11:46 elliott, UTC I think? 21:11:47 no? 21:11:51 Undef, I think I give UTC because there's no way of giving tz info 21:11:55 Okay. 21:12:02 at least that I use UTC 21:17:24 elliott: According to the spec, t is a forkbomb <--- does it not advance the IP in one of the threads? 21:17:50 ais523, exactly 21:17:54 Not according to the spec :-) 21:18:06 hmm, fingerprint suggestion: a feral fingerprint that changes the semantics of commands like k and t to something sane, and otherwise leaves everything much the same 21:18:11 The child's delta is reversed but the position is unchanged 21:18:39 Deewiant, you could have a thread overwrite the t? 21:18:54 No, because the child is executed first 21:19:07 Deewiant, yes so you get two threads 21:19:22 Vorpal: no, the child is executed first, and executes t 21:19:42 hmm, then what executes next? the grandchild, or original parent? 21:19:46 I thought it was executed before parent is executed again but after other threads are executed 21:19:48 if it's original parent, there's hope for t yet 21:20:03 > 256^2 21:20:03 65536 21:20:09 > 2^256 21:20:09 115792089237316195423570985008687907853269984665640564039457584007913129639... 21:20:10 elliott: err, what? 21:20:14 nothing :D 21:20:19 s 21:20:23 also, 1cnis does bignum now 21:20:34 lcnis? 21:20:37 [[size-of-stack-stack cells containing size of each stack, listed from TOSS to BOSS (ip)]] 21:20:38 MOST 21:20:39 "use bignum;" isn't enough, I have to work out exactly where to use bignits 21:20:39 FAILINGEST 21:20:40 THING 21:20:41 EVER 21:20:41 Vorpal: geta better font 21:21:02 ais523, my question remains even when spelling is corrected: 1cnis? 21:21:08 http://esolangs.org/wiki/1cnis 21:21:16 *get a 21:21:22 [[a series of sequences of characters (strings), each terminated by a null, the series terminated by an additional double null, containing the command-line arguments. (env) 21:21:22 This means any isolated argument can be a null string, but no two consecutive arguments may be null strings - a rather contrived scenario, null string arguments being rare in themselves. 21:21:22 The first string is the name of the Funge source program being run.]] 21:21:28 You're kidding me. 21:21:28 elliott, why does that thing fail 21:21:34 Vorpal: dynamic size 21:21:38 elliott, hah 21:21:38 But I repeat: 21:21:39 You're kidding me. 21:21:50 elliott: I have interps which accept two consecutive null strings as args, usefully 21:21:55 elliott, and then there is the cmd line args ant the environment variables 21:21:56 So what do you do if you get two consecutive null args 21:21:58 Error out? 21:22:06 not Befunge interps, though 21:22:19 elliott, generally the befunge program becomes confused 21:22:22 !bfjoust voodoo >(-{}>)*8([(>[-])*21]>)*21 21:22:26 Score for impomatic_voodoo: 20.6 21:22:29 -- PLACEHOLDER: ARGUMENTS 21:22:29 push 98 21:22:29 push 0 21:22:29 push 0 21:22:50 elliott, what about environment variables!? 21:24:22 Vorpal: push 0 21:24:38 elliott, you need do provide it at some point 21:25:02 elliott, don't you have a push-gnirts function yet? 21:25:16 Nope. 21:25:23 heh, I looked back at the scoreboard trying to figure out if tripstridewire had fallen off yet, and concluded that it had because I couldn't see it near the bottom 21:25:26 elliott, it is even more useful for fingerprints 21:25:29 But more importantly, I'd like to preprocess the arguments. 21:25:33 !bfjoust voodoo >(-{>}+)*8(>)*7([(>[-])*21]>)*21 21:25:37 it seems it's somehow ended up doing much better while I went home 21:25:38 Score for impomatic_voodoo: 1.5 21:25:42 Vorpal: As I said, I refuse to make anything cleaner until it passes Mycology. 21:25:43 elliott, well yes taking flags for program or such? 21:25:49 Vorpal: And rejecting '' ''. 21:26:05 that draw with mirage is still amazing, though 21:26:10 toGregorian :: Day -> (Integer, Int, Int)Source 21:26:10 convert to proleptic Gregorian calendar. First element of result is year, second month number (1-12), third day (1-31). 21:26:12 I like that Integer year. 21:26:12 given that it's not symmetrical at all 21:26:17 elliott, generally we have this situation: ./interpreter -flags program.b98 argument1 argument2. The program should not get the flags 21:26:18 You know, for the Y2^64 problem. 21:26:29 it should get: program.b98 argument1 argument2 21:26:30 The Church of Scientology is under investigation for slave labour. 21:26:34 You couldn't make this up. 21:26:48 elliott, -1900 21:26:54 Phantom_Hoover, link... 21:27:22 type Pico = Fixed E12Source 21:27:22 resolution of 10^-12 = .000000000001 21:27:23 Heh. 21:27:23 Well, human trafficking. 21:27:24 Sill. 21:27:28 !bfjoust voodoo >(-)*8>(+)*8(>)*7([(>[-])*21]>)*21 21:27:30 http://gawker.com/#!5753356/the-fbi-is-investigating-scientology-for-human-trafficking 21:27:34 Score for impomatic_voodoo: 8.2 21:27:41 Phantom_Hoover, even more extreme 21:27:42 That's actually more reliable than my initial source. 21:27:45 !bfjoust idea_stolen_from_quintopia ([](+)*99)*100000 21:27:53 Score for ais523_idea_stolen_from_quintopia: 17.6 21:28:01 TODO: Make alias for (push . fromIntegral). 21:28:03 -!- zzo38 has quit (Remote host closed the connection). 21:28:06 Phantom_Hoover: When Gawker is more reliable than your original source... 21:28:12 Also, jesus, that redesign. 21:28:27 elliott, the new page seems to need javascript! 21:28:30 impomatic: what happened to scimitar? did you rename it? 21:28:30 how fun 21:28:31 It does, yes. 21:28:32 !bfjoust voodoo >(-{}>)*8([(>[-])*21]>)*21 21:28:35 elliott, yes, I know. 21:28:36 Score for impomatic_voodoo: 20.4 21:28:36 Vorpal: Read Engadget, folks! 21:28:43 elliott, sometimes I do that 21:28:50 That the system's path separator is 21:28:51 O RLY 21:28:56 elliott, you fail :P 21:28:58 That the number of bytes per cell is 0 21:28:59 O RLY 21:29:02 that's a great path separator 21:29:02 That's an Adrian Chen article, as well. 21:29:05 That the interpreter's handprint is 0 21:29:05 That the interpreter's version is 98 21:29:06 O RLY (haha 98) 21:29:11 That the behaviour of = is unavailable 21:29:11 O RLY 21:29:13 omg 21:29:16 That this Funge has 1388334 dimensions 21:29:18 That this Funge has 1388334 dimensions 21:29:20 That this Funge has 1388334 dimensions 21:29:22 1388334funge 21:29:23 -!- pikhq_ has quit (Read error: Operation timed out). 21:29:24 elliott, you are off by something 21:29:27 Yes, the original source was pretty damn unreliable. 21:29:29 and the best: 21:29:31 That the ID of the current IP is shiro: <> 21:29:43 that dimension report makes no sense for being in the spec 21:29:45 elliott, "shiro"? It said that? 21:29:52 Vorpal: it looks to be a Haskell error 21:29:52 Oh, forgot to push IP ID. 21:29:54 ais523, why not? 21:29:55 ais523: well it beat tripstridewire at least 21:29:55 infinite loop detected 21:30:00 Vorpal: "foo: <>" is when you make a really stupid infinite loop. 21:30:08 elliott, oh 21:30:09 hah 21:30:12 ais523: I tried replacing ((-)*128(>{(+.)*56}<)%8)*5 with ((-)*128(>{(+...)*28}<)%8)*10 etc all the way through thinking it might score better, but it scored exactly the same. I left the new version on (chainmail) 21:30:15 elliott, haven't run into that yet 21:30:33 impomatic: it would be very surprising if there were a difference 21:30:40 After an execution of y with a non-positive argument, the stack contains many more cells (listed from top to bottom:) 21:30:41 given the way the program works 21:30:45 Turns out my whole thing is back-to-front. 21:30:55 Say it with me now: FFFFFFFUUUUUUUUUUU 21:31:04 elliott, YAAAAY 21:31:05 -!- pikhq has joined. 21:31:12 FUUUUYAAAY that's it? 21:31:14 isn't it? 21:31:33 elliott: that seems easily fixable 21:31:48 yes, but very irritating 21:32:10 ais523: now I'm trying to write a program they score differently against! 21:32:45 impomatic: it'd have to, umm, give up if it tried for too long to sink the flag 21:32:47 that dimension report makes no sense for being in the spec <-- why not 21:32:58 Vorpal: because you can't interpret the result of y without knowing the dimension anyway 21:32:59 or do you mean that specific value 21:33:08 That the stack sizes are [ 1 0 98 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 ... 21:33:13 ais523, you can? 21:33:14 (infinite 0s) 21:33:20 (well, almost infinite) 21:33:21 unless, I suppose, it's above all the vectors 21:33:25 elliott, you fail at counting stack stacks 21:33:52 ais523, it is 21:34:18 why did I call comment that with "// Scalars / vector" 21:34:25 while accurate that is a damn strange way to describe it 21:35:46 elliott, does it work better now? 21:35:46 -!- augur has quit (Remote host closed the connection). 21:37:08 !bfjoust oneshot >(-{}>)*7(>[[>](>)*8([-])*21])*21 21:37:10 Score for impomatic_oneshot: 0.0 21:37:23 impomatic: (-{}>)*7? 21:37:29 that doesn't look like valid syntax 21:37:36 !bfjoust oneshot >(-{-}>)*7(>[[>](>)*8([-])*21])*21 21:37:41 Score for impomatic_oneshot: 0.0 21:37:41 http://www.mathfail.com/math-pic-8.png 21:37:46 also, [>] is incredibly dubious in BF Joust, it generally either does nothing or suicides 21:37:49 That is in itself a math fail. 21:38:09 Going to test concurrent execution with 2 IPs. 21:38:14 Deewiant, you never test with 3? 21:38:22 Nope 21:38:28 Not explicitly, anyway 21:38:36 I do use more than 2 at some points, I think 21:38:36 Deewiant, hard to make sure you have the right order then 21:38:36 Particularly: the complex numbers aren't a superset of the hyperreals, and it seems to be saying thatt there are non-transcendental, non-algebraic reals. 21:38:39 Deewiant: You should test with 0, 1 and infinity. 21:38:40 Deewiant, hm okay 21:38:48 fizzie: You forgot -24. 21:38:51 Vorpal: But only in fingerprints 21:38:52 It's the fourth and final number. 21:38:53 !bfjoust oneshot >(-{-}>)*7(>[[>](>)*7([-])*21])*21 21:38:56 fizzie, what about jitfunge? Any progress? 21:38:58 Score for impomatic_oneshot: 0.0 21:39:00 Deewiant, which one(s)? 21:39:07 impomatic: you mean (-{-}>)%7, surely? 21:39:07 Phantom_Hoover: COUNTING NUMBERS 21:39:14 Vorpal: The ones that do stuff with IPs. :-P 21:39:18 I like how integers aren't whole somehow. 21:39:19 IIPC, TRDS, maybe others. 21:39:20 Vorpal: I'm pretty sure I'll blerb about it on-channel if I manage to make any process. Unfortunately, no. 21:39:22 ais523: that's it, thanks! 21:39:31 fizzie, ah 21:39:35 !bfjoust oneshot >(-{-}>)%7(>[[>](>)*7([-])*21])*21 21:39:36 elliott, well, the subsets of Z are a point of much contention. 21:39:38 Score for impomatic_oneshot: 0.0 21:39:41 or just (-)*8(>)*7 21:39:58 even so, that program looks doomed to suicide off the right end of the tape 21:40:00 push 0x5348524F -- SHRO 21:40:00 That the interpreter's handprint is 1397248591 21:40:01 !bfjoust oneshot >(-)*8(>)*7(>[[>](>)*7([-])*21])*21 21:40:01 fizzie, I don't know llvm asm, and I hate x86 asm. Otherwise I might give it a stab 21:40:04 Score for impomatic_oneshot: 0.0 21:40:10 fizzie, something like AVR would be cool as a target 21:40:10 Deewiant: is that decimal? 21:40:12 what it does is, when it finds a flag or decoy, keeps moving right until it finds an empty cell 21:40:12 fun to write for 21:40:13 -!- augur has joined. 21:40:21 which is likely to be off the end of the tape, as programs rarely leave gaps in their decoys 21:40:25 elliott: Yes, . only outputs decimal. 21:40:26 http://www.mathfail.com/math-notes-2.jpg 21:40:31 !bfjoust oneshot >(-)*8(>)*7(>[[>](>)*2(>[-])*21])*21 21:40:33 I've seen that Cantor image before. 21:40:34 Score for impomatic_oneshot: 1.8 21:40:35 That the greatest point, relative to that point, is ( 180 909 ) 21:40:35 BAD: should have been ( 183 911 ) 21:40:37 o_O 21:40:39 That's not good. 21:40:42 Oddly, it was on a statistics book. 21:40:45 Oh. 21:40:47 Relative to that point. 21:40:50 That is the fucking stupidest... 21:40:51 ais523: I was looking for a gap... perhaps not a very good strategy :-( 21:41:03 elliott, :D 21:41:03 I can imagine programs it would beat, but IIRC there aren't any on the hill 21:41:15 I can't think of any programs that leave gaps in decoys 21:41:20 ais523, < for example 21:41:30 Vorpal: ? 21:41:37 ais523, everything beats that program 21:41:42 oh, right 21:41:53 that's not on the hill 21:41:59 elliott, indeed! 21:42:18 That the least point containing a non-space cell is ( -3 -2 ) 21:42:18 That the greatest point, relative to that point, is ( 0 0 ) 21:42:18 BAD: should have been ( 183 911 ) 21:42:18 I can't think of any programs that leave gaps in decoys <-- one of my test ones did 21:42:21 I was looking for a program with no decoy that leaves a trail, e.g. (>)*9 ([-]+>)*21 21:42:29 elliott, yep you fail :P 21:42:42 impomatic: oh, I see 21:42:56 Compare: 21:42:58 !bfjoust target (>)*9 ([-]+>)*21 21:43:00 oh 21:43:01 Score for impomatic_target: 9.1 21:43:03 Vorpal: 21:43:06 let (minX,minY) = minCoords (fungeSpace st) 21:43:06 let (maxX,maxY) = minCoords (fungeSpace st) 21:43:06 pushVec (maxX-minX,maxY-minY) 21:43:06 pushVec (minX,minY) 21:43:07 spot the bug 21:43:21 elliott, the second line 21:43:21 hmm 21:43:23 ais523: idea 21:43:24 elliott: You already know where the bug is, why do you do this 21:43:31 We realize you make stupid mistakes :-P 21:43:33 Deewiant: to mock myself :D 21:43:34 elliott, minCoords should be maxCoords 21:43:42 It was obvious from the output anyway 21:43:43 ais523: an IDE which shows things that are both close and have low edit distance as REALLY NOTICEABLE 21:43:43 !bfjoust oneshot >(-)*8(>)*7(>[[>](>)*7(>[-])*21])*21 21:43:45 Score for impomatic_oneshot: 0.0 21:43:49 that way, close mistakes would stick out :D 21:43:58 Although I expected maxX-maxX,maxY-maxY 21:44:14 elliott: I had that idea already 21:44:19 That the command-line arguments were: [ "b" null ] 21:44:21 in fact, it would be 3D syntax coloring 21:44:21 Err... 21:44:25 It's 98 0 0 21:44:27 Why is there a null string there? 21:44:31 giving redness, blueness, greenness according to similarity on other parts of code 21:44:32 Or is that how it always displays? 21:44:59 Nope 21:45:03 !bfjoust oneshot >(-)*8(>)*7(>[[>](>)*1(>[-])*21])*21 21:45:07 Did you push a zero after that? 21:45:08 Score for impomatic_oneshot: 0.0 21:45:13 elliott, obvious! 21:45:24 elliott, 0 terminates string, 00 terminates list 21:45:27 Deewiant: Yes, as the complete lack of command-line arguments. 21:45:32 elliott, to terminate string and list you need 000 21:45:35 erm 21:45:38 Deewiant: Yes, as the complete lack of environment variables. 21:45:39 98 0 0 0 21:45:50 !bfjoust idea_stolen_from_quintopia ([](+)*256)*100000 21:45:52 Right, and it can't know where what ends. 21:46:04 Score for ais523_idea_stolen_from_quintopia: 11.5 21:46:07 So it treats that as a null argument at the end. 21:46:09 Deewiant: You can, with magic. 21:46:15 It has no magic. 21:46:18 The magic is gone. 21:46:46 !bfjoust oneshot >(-)*8(>)*7(>[[>](>)*8[-](.)*1000000])*21 21:46:49 Score for impomatic_oneshot: 0.0 21:47:16 impomatic: let me test that against some programs on my local "why a program loses" interp 21:47:30 Deewiant, how comes you added a test for "GOOD: : on empty stack makes stack size 2 according to y" 21:47:36 ais523: thanks... 21:47:40 Deewiant, it ruins the nice bit about peek and push ;P 21:47:43 Vorpal: Because you implemented it as push(top) 21:47:58 Deewiant, oh you added it after me? 21:48:08 I'm pretty sure I did 21:48:11 heh 21:48:21 Similarly \ 21:48:23 yeah 21:48:28 Deewiant, how comes you added a test for "GOOD: : on empty stack makes stack size 2 according to y" 21:48:30 Deewiant, actually I never did \ that way 21:48:30 is that /meant/ to happen? 21:48:39 elliott, what? Yes 21:48:42 i'll have to fix that then :P 21:48:47 elliott, haha 21:49:01 elliott, it is defined as pop,push,push 21:49:24 Vorpal: Hey, still... this is only my second day and it's already passing a large part of the stock-standard-Befunge Mycology, and quickly no less. 21:49:28 Admittedly I had Deewiant on hand. 21:49:29 But still :P 21:49:43 elliott, well sure this far is easy to get 21:49:49 elliott, t will require another day 21:49:59 elliott, and also you aren't doing it in C. That helps. 21:50:20 elliott, you don't have to spend time debugging memory leaks in stack and so on 21:50:22 Vorpal: Have I mentioned that apart from file load, which isn't very optimised, Mycology up to this point displays instantly? :P 21:50:28 FUCK YEAH GHC 21:50:43 elliott, well it does for cfunge too including file load 21:50:45 !bfjoust oneshot (>)*7(>[[>](>)*8[-]+[]])*22 21:50:51 Vorpal: Yes, but cfunge is optimised to shit :P 21:50:53 elliott, I hope you will mmap the file, since you love mmap 21:50:59 Fingerprints will be fun if you ask me... of course I'm using a fancy modern language so I don't dread managing state. :) 21:51:05 Vorpal: I might. 21:51:21 elliott, in other words you will copy cfunge :P 21:51:34 Vorpal: I'm not gonna use asm. 21:51:55 elliott, it doesn't for that 21:52:44 impomatic: it seems your program is failing to sink the flag, even when it identifies it correctly 21:52:56 elliott, do you reflect in { if you run out of memory btw? 21:53:08 ah, no 21:53:11 it's just really finicky 21:53:17 ais523: hmmm... I mist have messed something up then 21:53:23 Score for impomatic_oneshot: 3.6 21:53:26 the thing is, skip then trail is a reasonably bad strategy as-is 21:53:36 /and/, the natural implementation of skip-then-trail leaves a gap of 7 not 8 21:53:49 because otherwise it doesn't go into the loop properly 21:54:05 the other issue is, there's a chance you end up overtaking the trail 21:54:11 !bfjoust oneshot (>)*7(>[[>](>)*7[-]+[]])*22 21:54:16 Score for impomatic_oneshot: 3.6 21:54:17 which always happens on short tapes, and a reasonable proportion of the time even on longer tapes 21:54:41 elliott, cfunge reflects on OOM in { 21:54:43 elliott, DO YOU!? 21:54:48 !bfjoust when_will_it_explode [](+)*111(>)*9(-)*64(<)*9[](+)*128(>)*9[-](<)*9[](+)*111(>)*10(-)*64(<)*10[](+)*128(>)*10[-](<)*10[](+)*111(>)*11(-)*64(<)*11[](+)*128(>)*11[-](<)*11[](+)*111(>)*12(-)*64(<)*12[](+)*128(>)*12[-](<)*12[](+)*111(>)*13(-)*64(<)*13[](+)*128(>)*13[-](<)*13[](+)*111(>)*14(-)*64(<)*14[](+)*128(>)*14[-](<)*14[](+)*111 21:54:55 Vorpal: No; Haskell's semantic model is based on a machine with infinite memory. 21:55:00 Score for quintopia_when_will_it_explode: 11.5 21:55:03 It's not my fault if your implementation incorrectly uses a finite amount. 21:55:06 quintopia: interesting twist on defence 21:55:09 elliott, but in practise that won't be the case 21:55:19 Vorpal: Is it my fault that the universe implements Haskell incorrectly? 21:55:24 ais523: i should try the full version eh? 21:55:25 elliott, YES! 21:55:38 ais523: I think I'll give up on oneshot :-) 21:55:43 quintopia: atm, it's only beating tripwire-dodgers and oneshot 21:55:53 but I like the strategy, I'm just not sure why it isn't working 21:56:07 ais523, you are fast at reading bfjoust! 21:56:10 ais523: it can't kill anyone on tapes longer than 14 atm :P 21:56:15 *15 21:56:20 UNDEF: can't test o without working i, may overwrite some existing file 21:56:25 Deewiant: You could just ask the user for a filename. :p 21:56:40 Nah 21:56:55 Deewiant: Easier than checking if a file is empty or not :-D 21:57:00 quintopia: I know what's wrong 21:57:04 Deewiant, wasn't it efunge that found you didn't handle o without i? 21:57:11 it's because ] checks the value with the wrong timing 21:57:13 or was it i without o 21:57:38 ais523: how is it doing it? 21:57:39 elliott, mycology.b98 contains no user input 21:57:44 Meh :P 21:57:46 elliott, you want mycouser.b98 for that 21:57:46 so []+++ doesn't add in time, as although the ] could catch the zeroising in time, it reads the value before the decrement 21:57:58 i.e. on the cycle it decreases from 1 to 0, it reads 1 21:57:59 It could just ask for input if i isn't implemented, but whatever. 21:58:03 oh 21:58:08 that would explain it 21:58:09 BAD: ( reflects without popping correctly 21:58:10 the cycle after, it stays at 0, it reads 0 but it's too late 21:58:16 pity, the whole strategy seems not to work as a result 21:58:19 elliott, that is fingerprint loading 21:58:21 perhaps we should change that bit of the spec? 21:58:22 Ah. 21:58:35 elliott, this comes after: GOOD: null byte in string and zero compare as equal 21:58:47 GOOD: \ on empty stack makes stack size 2 according to y 21:58:47 BAD: ( reflects without popping correctly 21:58:47 elliott, also handling of k with negative argument 21:58:49 Does not :P 21:59:02 elliott, just pop n, then pop n bytes. Then refect 21:59:02 ais523: yes it does seem like ] should check the value at the end of the cycle and not the beginning 21:59:04 reflect* 21:59:04 UNDEF: can't test o without working i, may overwrite some existing file 21:59:04 1y says this is not Concurrent Funge-98, won't test t... 21:59:04 GOOD: y acts as pick instruction if given large enough argument 21:59:04 GOOD: ] turns flying IP right 21:59:04 GOOD: : on empty stack makes stack size 2 according to y 21:59:04 GOOD: \ on empty stack makes stack size 2 according to y 21:59:05 elliott, for now 21:59:06 BAD: ( reflects without popping correctly 21:59:08 Comes after y testing. 21:59:10 Vorpal: Indeed. 21:59:14 elliott, yes I meant after ( test 21:59:15 duh 22:00:32 The Mycology Befunge-98 test suite is practically done. 22:00:32 Trying to quit with q. If the return status is 15, consider it GOOD... 22:00:32 elliott@elliott-MacBookAir:~/Code/shiro$ echo $? 22:00:32 15 22:00:35 :fuck yea: 22:00:39 Oh wait, there's bads :P 22:00:52 UNDEF: k with a negative argument executes more often than the absolute value of the argument 22:00:53 Deewiant: False 22:00:57 False false false 22:01:04 My k does the only logical thing 22:01:14 If n <= 0, then it advances to the next instruction |n| + 1 times. 22:01:20 That handles 0k without any ugly SPECIAL CASES. 22:01:33 Vorpal: Best semantics or best semantics? 22:01:51 UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces) 22:01:53 elliott: I'm pretty sure Deewiant was just trying to cover all possibilities when working out that 22:01:54 Deewiant: Hmm, what... 22:01:55 UNDEF: k with a negative argument reflects 22:01:57 elliott, that is what I have 22:01:59 -!- impomatic has quit (Quit: ChatZilla 0.9.86 [Firefox 3.5.16/20101130074636]). 22:02:02 Vorpal: Lame. 22:02:08 Yours has special cases and stuff. 22:02:10 UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces) 22:02:14 Shouldn't that be 0, "platonically"? 22:02:18 UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces) 22:02:20 elliott: so does yours, you just extended a special case from 0 to an entire halfspace 22:02:20 same 22:02:24 Deewiant: you? 22:02:32 elliott, what about 22:02:33 UNDEF: ( with a negative count reflects and pops 0 times or less than the absolute value of the count 22:02:33 UNDEF: ) with a negative count reflects and pops 0 times or less than the absolute value of the count 22:02:36 ais523: That's more like a single branch. 22:02:42 ais523: Which is better than an explicit special case. 22:02:49 UNDEF: ( with a negative count reflects and pops 0 times or less than the absolute value of the count 22:02:49 UNDEF: ) with a negative count reflects and pops 0 times or less than the absolute value of the count 22:02:57 I should make it parse some AMICEDs. 22:03:00 :-) 22:03:13 I'll make negative ( and ) reflect. 22:03:18 Seems the sane thing to do. 22:03:23 elliott, just to be different than me? 22:03:33 Wait, I already do. 22:03:36 By virtue of always reflecting. 22:03:37 GOOD ENOUGH FOR ME 22:03:46 elliott: do you pop first? 22:03:50 like you should? 22:03:53 yes 22:03:54 BAD: after spacing top-left corner, y should report least point as ( -2 -1 ), not ( -10 -2 ) 22:03:54 BAD: after spacing top-left corner, y should report greatest point as ( 182 910 ), not ( 190 911 ) 22:03:54 BAD: after spacing right edge, least point reported by y should remain ( -2 -1 ) 22:03:54 BAD: after spacing right edge, y should report greatest point as ( 181 910 ), not ( 190 911 ) 22:03:54 BAD: after spacing bottom edge, y should report greatest point as ( 181 909 ), not ( 190 911 ) 22:03:56 also, is the program vaguely optimised yet? 22:04:09 elliott, that is to do with shrinking bounds 22:04:09 elliott: aha, the evil bounds recalculation 22:04:14 yep 22:04:18 ais523: It runs Mycology with no fingerprints or concurrent testing pretty much instantly after it loads, so it's fast enough for now. 22:04:23 Testing fingerprint HRTI... loaded. 22:04:23 UNDEF: G gives clock granularity as 1 microseconds 22:04:23 GOOD: T reflected when called before M 22:04:23 UNDEF: S pushed 461923 22:04:23 UNDEF: T after M pushed 9 and a second T, after 675 ys, pushed 13819 22:04:25 GOOD: ET reflected 22:04:28 elliott, waiting for you to say that! 22:04:29 ;P 22:04:33 that's a huge improvement 22:04:36 Vorpal: How hard can it be. 22:04:46 ais523: Yes, I did the revolutionary thing of "cache the bounds rather than recalculate them constantly". 22:04:49 elliott, well fingerprints semantics takes a bit of work 22:05:08 elliott: and your reward was a bunch of BAD: 22:05:10 elliott, I suggest this fingerprint implementation order: NULL, ROMA, MODU 22:05:10 Vorpal: Yeah, but I've already worked out how to do it from the Haskell-side where every fingerprint can store its own state in both the global interpreter state and per-IP state. 22:05:12 Type-safe. 22:05:14 Booyah. 22:05:21 elliott, they are simple and they help you work out the fingerprint system 22:05:22 ais523: pretty much, yep 22:05:27 ais523: and having to rewrite my wrapping code 22:05:27 DID YOU KNOW: you need different work visas to teach in Edinburgh and Fife. 22:05:29 elliott, see two last tests 22:05:34 for why you want ROMA and MODU early on 22:05:35 I suggest TRDS, TOYS 22:05:44 elliott: you could recalculate bounds whenever y ran, I suppose 22:05:44 Deewiant, ... that's unhelpful 22:05:49 or on every p 22:05:52 Is TOYS actually hard? 22:05:54 Because we don't want that Fife scum coming over and stealing our jobs, evidently. 22:06:03 elliott: not massively, but it's a lot of work 22:06:07 elliott, no but TOYS cover every letter! 22:06:08 Googling "TOYS befunge": "Befunge - Minecraft Forums" 22:06:11 Blood pressure about to rise. 22:06:18 "CHECK OUT #BEFUNGE ON IRC.ESPER.NET" HOW ABOUT NO 22:06:19 now that seems like an interesting thread 22:06:32 are people actually trying to do Minecraft funges/ 22:06:41 ais523: no 22:06:43 ais523, sponge* 22:06:45 ais523: it's just in the off-topic forum or whatever 22:06:50 boring 22:06:56 ais523: which, for a forum with as stupid a population as the minecraft forum's, is a bad idea 22:06:59 to have 22:07:12 Does anyone have a copy of the TOYS specification that isn't HTML sent as XHTML? 22:07:15 So that I can read the damn thing. 22:07:20 Gosh. 22:07:32 Deewiant: You need to top this (wow, 2002): http://www.mail-archive.com/inline@perl.org/msg01110.html 22:07:43 elliott, no I don't 22:07:46 elliott, just wget it 22:07:49 and open it locally 22:07:51 *sigh* Okay. 22:08:16 elliott, http://catseye.tc/projects/funge98/library/MODU.html http://catseye.tc/projects/funge98/library/ROMA.html and http://catseye.tc/projects/funge98/library/NULL.html 22:08:22 elliott, they are good to start with 22:08:23 "Under development." Comforting. 22:08:28 Vorpal: I want to get all GOODs first. 22:08:39 Vorpal: Which means bounds shrinking. 22:08:40 elliott, Don't start with TOYS. It is not well defined 22:08:44 elliott, good idea! 22:08:50 What the fuck is a low-order and high-order copy of Funge-space. 22:08:57 Have fun :-D 22:08:59 elliott, the butterfly operator mentioned in TOYS is cargo cult! 22:09:27 Deewiant: Seriously though, what :-D 22:09:31 That's worse than MKRY specifications. 22:09:43 elliott, yes for TOYS 22:10:02 elliott, I invite you to GPL your program by not reinventing the wheel! 22:10:17 I could just steal it from CCBI 22:10:21 elliott, or that 22:10:28 And it'd have less inline assembly, too :P 22:11:42 elliott, not THAT file 22:11:53 elliott, it is just part of the funge space setup code 22:11:57 that has inline asm 22:12:00 Suuer 22:12:02 *Suure 22:12:05 elliott, yep 22:12:44 elliott, the television antenna instruction in TOYS is quite useful 22:12:47 Does anyone want to see the most bloated Haskell file ever? 22:13:01 Full of IRC quotes of Deewiant mocking Vorpal! Okay, one, and it's barely mocking. 22:13:24 http://sprunge.us/EfNb 22:13:25 BEHOLD 22:13:27 SHIRO/INTERPRETER.HS 22:13:40 Also, lots of outdated comments. 22:13:45 For instance, k is now fully fixed :P 22:14:26 -- Deewiant: Fuck. I forgot that one space != two spaces in string mode. 22:14:28 uh they are 22:14:40 yes yes 22:14:41 i meant 22:14:43 one space != zero spaces 22:14:53 that's why alltheoutputfromMycologylookedlikethistostartwith 22:15:07 elliott, hahaha 22:15:22 Vorpal: and it was so slow because of the bounds, plus the fact that i flushed every character 22:15:25 Vorpal: so you saw it typing out 22:15:29 GOOD::duplicatestopofstack 22:15:29 and the like 22:15:33 slooowly 22:15:50 Vorpal: in fact, I could tell the difference between the , works test and the : duplicates test 22:15:53 elliott, what you don't have a switch for fully buffered output? 22:16:01 Vorpal: because the "GOOD: , works" is printed out manually 22:16:03 and the rest use a loop 22:16:07 so the first was like 7 times faster to type 22:16:10 -!- MigoMipo has quit (Read error: Connection reset by peer). 22:16:12 Vorpal: I use fully buffered output always now. 22:16:14 But I didn't then. 22:16:17 Because it was so fucking slow. 22:16:32 elliott, no you probably use line buffered 22:16:35 rather than unbuffered 22:16:38 Vorpal: Well, yes. 22:16:43 _That_ I'm not changing. 22:16:46 Make a fingerprint to switch it in-program. :) 22:16:51 elliott, cfunge has an option for fully buffered 22:16:54 (command line) 22:16:57 Useless :P 22:17:02 Apart from inflating benchmark results. 22:17:05 elliott, nifty and useful 22:17:10 "Nifty". 22:18:26 elliott, you need to fix those placeholders too 22:18:32 even if they don't say BAD as such 22:18:34 Vorpal: Which? 22:18:37 And yeah, I know. 22:18:39 -- PLACEHOLDER: ENVIRONMENT VARIABLES 22:18:39 push 0 22:18:39 -- PLACEHOLDER: ARGUMENTS 22:18:40 those 22:18:49 That's for when I actually have an interface, instead of: 22:18:55 -- test 22:18:55 main :: IO () 22:18:55 main = do 22:18:55 mycology <- B.readFile "mycology.b98" 22:18:55 let st = fungeStateFromByteString mycology 22:18:56 let FungeSpace m minXY maxXY = fungeSpace st in print $ (Map.size m, minXY, maxXY) 22:18:57 ignore (evalShiro interpret st) 22:19:06 elliott, env you can easily get hold of? 22:19:26 Yes, but it's not exactly high-priority. :P 22:21:07 elliott, will you render TURT to an svg? 22:21:27 elliott, if so may I suggest efunge as state-of-the-art 22:21:28 Vorpal: SDL and SVG. 22:21:35 SDL is priority. 22:21:39 elliott, in svg rendering 22:21:50 I'm sure there's a Haskell library for that :P 22:22:08 elliott, efunge is state-of-the-art in svg backends for TURT 22:22:19 Isn't cfunge that 22:22:29 elliott, no cfunge has a tiny bug in overlapping lines and dots 22:22:31 well bugs 22:22:32 not bug 22:22:41 it isn't specified really 22:22:42 X-D 22:22:46 but efunge does it better 22:23:00 (if x == minX || x == maxX || y == minY || y == maxY then 22:23:01 trace "foo" () 22:23:01 else 22:23:01 ()) `seq` 22:23:01 FungeSpace (Map.delete k m) minXY maxXY -- TODO: Shrink 22:23:03 This is how I check things 22:23:13 elliott, look, cfunge assumes that dots go on top of lines. efunge does it in order of drawing :P 22:23:27 elliott, thus cfunge uses a magic pen for the turtle robot 22:23:32 thus it is correct. As well. 22:23:43 :T min 22:23:44 :t max 22:23:45 forall a. (Ord a) => a -> a -> a 22:23:58 * elliott gets really confused 22:24:03 * Phantom_Hoover → sleep 22:24:05 Shrinking bounds really does need a population count, right? 22:24:06 -!- Phantom_Hoover has quit (Quit: Leaving). 22:24:13 elliott, why 22:24:25 elliott, you could just recalculate them the hard way 22:24:26 Because I'm too stupid to see how to do it even vaguely-efficiently otherwise. 22:24:43 elliott, cfunge uses pop could per row and column yes 22:25:02 elliott, no clue what ccbi does 22:25:11 elliott, presumably it involves a CAS! 22:25:20 Vorpal: An array of population count things 22:25:26 Vorpal: But he wants to make it a something something k-d tree of them 22:25:30 -!- nrkn has joined. 22:25:35 elliott, XD 22:25:47 Isn't that right Deewiant "Computer Science Is My One True Love, Especially If It's Needlessly Academic" Deewiant 22:25:49 I don't keep population counts, just the space itself 22:26:02 Deewiant, so how do you shrink bounds 22:26:11 Oh hi there, Vorpal "I Saved One Cycle In 2000 Lines, The Code Is Better Now" Vorpal. 22:26:16 *With 2000 22:26:20 By looping through the space 22:26:21 elliott, XD 22:26:28 heh 22:27:00 elliott, I actually iterate through my hash table if the bounds are large instead. This is because I suspect it to be rather sparse 22:27:07 so enumerating the values is better 22:27:12 this generally works 22:27:37 elliott, more importantly it makes slowdown.b98 work 22:28:43 oh that is of course the hash table for column/row counts I enumerate 22:28:47 not the full thing 22:29:06 given small bounds I just try to shrink step by step 22:29:12 better for dense code 22:30:15 BAD: after spacing right edge, y should report greatest point as ( 181 910 ), not ( 182 910 ) 22:30:25 But I do... 22:30:34 if x == minX || y == minY || x == maxY || y == maxY then [RECALCULATE INCREDIBLY SLOWLY] 22:30:48 Or is that not enough. 22:31:16 elliott, off by one error I suspect 22:31:19 in your checks 22:31:47 Meanwhile 22:31:48 https://github.com/github/github-services/issues/closed#issue/54 22:31:58 GitHub, the premier free website host! 22:32:47 elliott, XD 22:33:49 No off-by-one error that I can see. 22:34:01 elliott, you are doing it wrong btw. You aren't lazy in recalculating the bounds! 22:34:08 Who says? 22:34:14 I actually am, just that they get forced immediately after :P 22:34:20 By the moving code 22:34:26 elliott, well you don't defer it until you need it for y or for wrapping 22:34:36 I actually do, I think 22:34:37 (not that wrapping needs exact bounds) 22:34:41 elliott, oh? 22:34:43 Except I guess GHC decides to optimise it into strictness 22:34:51 -!- kar8nga has quit (Remote host closed the connection). 22:34:56 elliott, cfunge doesn't do it until required 22:35:49 Aha 22:36:00 Vorpal: Look at the code snippet I pasted 22:36:01 Spot the bug 22:36:03 if x == minX || y == minY || x == maxY || y == maxY then [RECALCULATE INCREDIBLY SLOWLY] 22:36:05 THE BUG, SPOT IT 22:36:08 elliott, oh right 22:36:10 I see it 22:36:11 maxY 22:36:12 GOOD: y reports shrunk bounds correctly after spacing top-left corner 22:36:13 BAD: after spacing right edge, y should report greatest point as ( 181 910 ), not ( 182 910 ) 22:36:15 GOOD: y reports shrunk bounds correctly after spacing bottom edge 22:36:20 elliott, maxY 22:36:23 yep 22:36:46 $ time ./shiro >/dev/null 22:36:46 real0m3.230s 22:36:50 Reading takes a bit under a second though 22:36:53 So ehh, it's not too bad 22:36:56 I can optimise it later 22:37:12 $ time env -i build/cfunge -SF mycology/mycology.b98 >/dev/null 22:37:12 real0m0.107s 22:37:16 Yeah yeah yeah 22:37:18 elliott, that is approx the same as your 22:37:26 Vorpal: ...by what metric? 22:37:28 elliott, no env args, no fingerprints, no i and o 22:37:32 Mine is 3s, not 0.3s :P 22:37:40 oh 22:37:43 elliott, I meant approx the same work done 22:37:43 Vorpal: Was it that fast and compliant on day 2? 22:37:57 The fact that you can disable _features_ after it's _compliant and fast_ is irrelevant :P 22:38:03 elliott, no. Day 4 more like it. I mean it's C 22:38:19 elliott, anyway -F disables fingerprints only 22:38:21 I doubt that's possible, unless you had as direct a connection to Deewiant as I have 22:38:22 Which I doubt 22:38:41 elliott, I didn't until a bit later. So like a few weeks 22:38:56 Let's see where I am in a few weeks :P 22:39:04 elliott, anyway. your cpu is faster 22:39:11 elliott, this is a sempron at 2 GHz 22:39:11 Oh come on 22:39:21 Deewiant: How does CCBI do: UNDEF: the empty string wrapped around the edge of space contains 1 character(s) (hopefully spaces) 22:39:21 0? 22:39:26 elliott, sempron has 128 kB cache 22:39:34 I think I'd prefer to make it 0, either that or 2^32 - 1 :P 22:39:37 elliott: Didn't you grab CCBI already? 22:39:41 Anyway, 1 22:39:43 Deewiant: Oh right 22:39:45 Hmm 22:39:47 We're all 1 buddies 22:39:49 I'll keep it then 22:40:21 elliott, YOU KNOW WHAT? 22:40:25 WAT 22:40:31 elliott, I timed a debug build -O0 -ggdb3 22:40:32 XD 22:40:39 I thought it was slow 22:40:40 lmao 22:40:43 SO SLOW 22:40:58 Vorpal: Sloccount 22:40:59 SLOCDirectorySLOC-by-Language (Sorted) 22:41:00 482 shiro haskell=482 22:41:00 $ time env -i build_opt/cfunge -SF mycology/mycology.b98 >/dev/null 22:41:00 real0m0.068s 22:41:00 Your move 22:41:02 that is more like it 22:41:04 YOUR MOVE 22:41:11 elliott, I implement fingerprints too 22:41:18 elliott, and env args and so on 22:41:21 Vorpal: cp those files out before doing it 22:41:21 elliott, so not fair at all 22:41:27 Err, mv them out 22:41:42 elliott, what tool did you use 22:41:42 Env args, sure, but that's a few lines. 22:41:48 Vorpal: sloccount. 22:41:51 The David A. Wheeler one. 22:41:57 It should be "sloccount" in your nearest repository. 22:42:11 It is quite noisy in its output but the relevant statistic is the one that looks like what I pasted. 22:42:16 elliott, not in pacman. Too much work. But iirc with fingerprints and everything it is about 9000 lines of code. 22:42:27 Sloccount isn't in pacman?? 22:42:32 oh wait it is 22:42:36 I typoed search 22:42:49 I was about to say, didn't think the repos were THAT bad :D 22:42:55 elliott, anyway about 9000 lines of code + external code adding another 1000 or so 22:42:55 *;D 22:43:01 Vorpal: sloccount ignores whitespace and comments 22:43:04 so it's fairer. 22:43:08 elliott, I used ohcount to get that iirc 22:43:42 elliott, anyway I cache a stack with env vars and cmd line arguments so I can just memcpy it onto the stack if required :P 22:43:47 elliott, take that 22:44:00 But what if the environment variables change? 22:44:05 elliott, they can't 22:44:11 Fingerprint? =? 22:44:12 elliott, I don't implement ENVR or whatever it is 22:44:16 elliott, so a non-issue 22:44:23 Ah, so yours is less useful 22:44:30 elliott, not at all 22:44:35 Sure 22:44:39 elliott, not compared to *current* state 22:44:40 Deewiant: CCBI *hi5* 22:44:43 of the interpreters 22:44:45 which is what counts 22:44:58 oh sure compared to CCBI I do fewer fingerprints 22:45:08 elliott, when did you last build CCBI from source? 22:45:09 Do you implement MKRY? 22:45:16 elliott, no... nor does ccbi 22:45:22 Funny. Shiro will. 22:45:34 elliott, I implement some that CCBI doesn't 22:45:37 FING iirc 22:45:41 and a few more 22:45:51 CCBI has FING. 22:46:03 elliott, well mycology doesn't test it. Or didn't last I looked 22:46:13 New fingerprints, from Rc/Funge-98: 22:46:13 FING 22:46:14 REXP 22:46:17 --2010-04-06 22:46:24 elliott, does mycology test them? 22:46:29 elliott, I implement those two 22:46:29 Does that matter? 22:46:38 Deewiant: Can FNGR be reconciled with the specification? 22:46:43 elliott, no 22:46:45 Yes, and it has been 22:46:49 Deewiant, what 22:46:53 And called FING? :P 22:46:57 How does it contradict? 22:47:00 FNGR just enables FNGR-mode or some such 22:47:06 oh you mean the "spec no longer used bit" 22:47:07 yeah 22:47:42 How does it contradict? 22:47:44 -!- pumpkin has quit (Quit: Computer has gone to sleep.). 22:48:09 oh EVAR, not ENVR 22:48:34 elliott, anyway you will have less embedded asm. This is bad. 22:48:41 Portability 22:48:48 elliott, #ifdef :P 22:48:49 This probably even runs on Windows 22:48:53 Vorpal: Bug: cpp 22:48:54 -!- evitable has quit (Read error: Connection reset by peer). 22:48:57 Solution: Don't use cpp 22:49:05 elliott, bug: cpp isn't lisp macros 22:49:14 Bug: cpp exists 22:49:17 Solution: Destroy cpp 22:49:20 solution: use workaround (using cpp) 22:49:39 elliott, bug: no preprocessor 22:49:44 solution: use m4 22:49:49 Vorpal: Solution: Template Haskell 22:49:53 elliott, m4! 22:49:57 All the elegance of Haskell with all the pain of Haskell's AST 22:50:03 elliott, or. A literate perl script! 22:50:08 -!- myndzi_ has joined. 22:50:11 GHC is a literate Perl script based on regexps. 22:50:12 elliott, that munges your stuff 22:50:16 Don't believe the lies. 22:50:24 elliott, :P 22:50:44 yeah anyway. Night → 22:56:17 Deewiant: I'm TOTALLY optimising. 22:56:21 File loading, to be specific :P 22:56:47 "Note: this operation may break referential transparency! If any other process on the system changes the file when it is mapped into Haskell, the contents of your ByteString will change." 22:56:49 Deewiant: AM I CRAZY YET 23:04:56 -!- Laugarhraun has joined. 23:05:26 Deewiant: I need dependent types :D 23:06:38 "Hey, @jonharrop is following me. Unrelated hasn't Common Lisp been scientifically measured as being 10 times as awesome as OCaml or F#?" --James Iry 23:10:15 -!- Lymia_ has changed nick to Lymia. 23:10:16 -!- Lymia has quit (Changing host). 23:10:16 -!- Lymia has joined. 23:12:16 Oh hey. 23:12:23 My BF Joust evolver hasn't crashed. 23:12:23 :s 23:12:51 :D 23:12:54 Give us some results! 23:13:06 !bfjoust evolved-1006-0 -.+-><-.-[..[.++.]]+><.++>-.-<<..-.+[.+<.><]--<-.>.<>.+<.--<->>(+<>..>><>)*1>><->-<++.-..+-.<+.->>+<-<<>(+++<+-++..[>[.].]..+.-<<<.<>[<-][]>-[].<>-<..[>-<<-][]-.)*3> 23:13:10 In before it completely flunks. 23:13:45 Score for Lymia_evolved-1006-0: 20.4 23:13:52 :o 23:14:31 (If you must ask, evo-1 is an attempt to evolve the hill, instead of starting from scratch) 23:15:26 Lymia: wow, that was good 23:15:58 I do believe that's ~16 or so hours of evolving. 23:16:05 ... 23:16:09 Is that a defensive bot? 23:16:17 Might just be. 23:16:25 Yep... I think it is. 23:16:32 Lymia: suggestion: download the current hill, and after, say, 1000 generations, introduce the best warrior left from the hill every 100 or so generations 23:16:33 i.e. 23:16:41 generation 1000 - best warrior from the current hill is added 23:16:45 generation 1100 - second-best warrior from the current hill is added 23:16:47 ... 23:16:54 From the egobot hill? 23:16:59 yes, the current one as it is now 23:16:59 that way, your warriors start to evolve against the current competition 23:17:04 Lymia: oh, omit the evolved ones though 23:17:05 obviously 23:17:08 (that are on the current hill) 23:17:10 anyway 23:17:17 Eh. 23:17:21 that way, once the warriors start getting good, they gradually have to fight against the current hill 23:17:23 I might just make it autoupdate the targets. 23:17:38 elliott, it's coded so that the hill dosn't actually get into the evolver's generations. 23:17:42 But they are counted as part of the score. 23:18:16 +><.++>-.-<< 23:18:19 wat? 23:18:27 ... 23:18:29 Lymia: Oh, so it is fighting against the current hill? 23:18:31 That's okay then. 23:18:37 It goes off the tape as soon as [..[.++.]] exits. 23:18:40 -!- myndzi_ has quit (Quit: -a-). 23:18:59 Lymia: you might want to modify egobot to print when some code is never executed when fighting against the hill 23:19:01 so that you can strip it off 23:19:03 to avoid gunk 23:19:13 otherwise it'll keep mutating dead code 23:19:36 Deewiant: Erm. 23:19:47 Deewiant: When you pop an 0gnirts, the first thing you pop is the start of the string, right? 23:19:50 elliott, and output it into what? 23:19:51 A file? 23:19:55 Lymia: Sure. :p 23:20:00 Lymia: Or stdout, if that's not already being used. 23:20:04 No. 23:20:08 I'm using the return value only. 23:20:10 -!- nrkn has quit (Quit: Page closed). 23:20:32 Actually. 23:20:45 I could just manually strip off dead code before posting it to egobot. 23:20:59 Mutation is basicly the quickest process. 23:22:49 Deewiant: Also, if the least significant bit of the flags cell is high, i treats the file as a binary file; that is, EOL and FF sequences are stored in Funge-space instead of causing the dimension counters to be reset and incremented. 23:22:51 Deewiant: WHYYYYYY 23:23:17 elliott, hmm... 23:23:20 Actually. 23:23:30 Right now, it only reads the hill when it's started up. 23:23:48 This is obviously a problem. 23:23:49 =p 23:25:01 Deewiant: Aaarrgh! I just discovered something even worse. 23:25:08 Lymia: not really, it won't change that much 23:25:24 elliott, meh. 23:25:31 I could make it update every 100 generations or so. 23:25:34 Deewiant: I can't just return the last (x,y). 23:25:39 Lymia: Way too often, try every 500. 23:25:56 100 generations is often 23:25:58 ?* 23:25:58 Maybe you meant: . ? @ v 23:26:09 Considering how long a generation takes, it's not that fast. 23:26:30 :t max 23:26:32 forall a. (Ord a) => a -> a -> a 23:31:05 Deewiant: Can mycology test i without o? :p 23:31:07 -!- TLUL has joined. 23:32:18 > 0x02 + 0x04 + 0x08 23:32:19 14 23:33:21 > 0xFFFFFFFF + 1 23:33:22 4294967296 23:33:30 > 0xFFFFFFFFFFFFFFFF + 1 23:33:30 18446744073709551616 23:33:40 > 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF + 1 23:33:40 340282366920938463463374607431768211456 23:33:45 Screw you and your bignums. 23:33:46 :< 23:33:58 :t B.empty 23:33:59 Couldn't find qualified module. 23:34:04 Lymia: 23:34:08 > 2^64 :: Int64 23:34:09 0 23:34:25 :t 0xFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF 23:34:26 forall t. (Num t) => t 23:34:37 Lymia: If you want to put off learning Haskell, just look at that code I pasted ealier. 23:34:38 *earlier. 23:34:47 @hoogle empty ByteString 23:34:47 No results found 23:34:49 @hoogle empty 23:34:49 Control.Applicative empty :: Alternative f => f a 23:34:50 Data.ByteString empty :: ByteString 23:34:50 Data.IntMap empty :: IntMap a 23:35:51 -!- Sgeo has joined. 23:35:55 -!- augur has quit (Remote host closed the connection). 23:36:38 -!- augur has joined. 23:37:36 -!- augur has quit (Remote host closed the connection). 23:37:49 -!- calamari has joined. 23:39:07 Deewiant: What happens if you use o on a section of fungespace with non-ASCII bytes? 23:42:38 Ok. Maybe it's a bad idea to try to teach someone bad at math my mental shortcut of trying to see how to get units to fit together in order to figure out what to do 23:42:58 methinks that Deewiant is away 23:45:17 -!- ais523 has quit (Ping timeout: 240 seconds). 23:47:51 hmm 23:47:56 all the people who know anything have disappeared 23:49:09 -!- cheater00 has joined. 23:51:03 elliott, I'm still here 23:52:29 -!- cheater- has quit (Ping timeout: 240 seconds). 23:57:33 http://scientopia.org/blogs/goodmath/2011/02/06/computability/ --> may interest people here