00:01:23 -!- Bike has quit (Ping timeout: 265 seconds). 00:01:56 -!- Bike has joined. 00:13:30 -!- ^v has quit (Read error: Connection timed out). 00:28:52 I dreamt of a new kind of handheld computer system that although it included several buttons as well as a touch-screen, many things were controlled by gestures that aren't touching it; for example to slide up a menu by sliding your finger against your fingernail. 00:36:00 swipe tongue across roof of mouth to dismiss notification 00:39:10 the concept of a nothing-held computer is interesting. augmented reality, or holographic projection? 00:46:15 just have a projection from those mind-control satellites 00:47:56 "Unfortunately, there's a radio connected to my brain" 01:03:49 -!- Phantom_Hoover has quit (Remote host closed the connection). 01:04:14 [wiki] [[Subleq]] M http://esolangs.org/w/index.php?diff=40814&oldid=40787 * Oerjan * (-1) /* Basic */ tpyo 01:11:51 [wiki] [[CA-1]] M http://esolangs.org/w/index.php?diff=40815&oldid=40792 * Oerjan * (-3) fix format, grm 01:14:28 [wiki] [[Replace]] M http://esolangs.org/w/index.php?diff=40816&oldid=40790 * Oerjan * (+13) fmt, links 01:18:29 [wiki] [[Brainfuck]] http://esolangs.org/w/index.php?diff=40817&oldid=40798 * Oerjan * (+14) sp, no 01:25:28 [wiki] [[Dimensions]] http://esolangs.org/w/index.php?diff=40818&oldid=40812 * Oerjan * (+8) links 01:45:52 -!- vanila has quit (Quit: Leaving). 01:49:16 -!- shikhout has joined. 01:52:33 -!- shikhin has quit (Ping timeout: 265 seconds). 02:10:57 How many bits are there in a ICBM address (including elevation)? 02:35:46 -!- boily has quit (Quit: WEREWOLF CHICKEN). 03:09:43 -!- oerjan has quit (Quit: WERECHICKEN WOLF). 03:14:40 -!- centrinia has joined. 03:29:19 -!- ^v has joined. 03:43:42 what's with prescriptivists telling me not to use the word "trinary" 03:47:04 -!- nys has quit (Quit: quit). 03:55:55 I don't know why? 04:03:03 Maybe it's Latin/Greek pedantry? 06:24:20 Some things say it is requiring use of OSI-approved licenses (and other things say it requires FSF-approved licenses). But this is problem; some are only one and not the other. 06:37:05 How to easily skip past a bzip2 stream without attempting to decompress it? 07:05:16 By figuring out its length somehow 07:06:23 -!- DTSCode has joined. 07:06:38 Yes, I thought, but I don't know the format; the bzip2 documentation tells only the API and doesn't document the format. 07:42:31 -!- Sprocklem has quit (Ping timeout: 245 seconds). 07:43:14 -!- DTSCode has quit (Read error: Connection reset by peer). 07:46:56 I have not updated level20.tex in a while. What footnote do you want to put next? 07:48:42 -!- DTSCode has joined. 07:49:14 -!- shikhin has joined. 07:52:24 -!- shikhout has quit (Ping timeout: 255 seconds). 07:53:49 -!- ais523 has joined. 08:06:47 Could you look at http://www.bzip.org/1.0.6/bzip2-1.0.6.tar.gz to determine the file format? 08:07:34 -!- DTSCode has quit (Remote host closed the connection). 08:08:14 -!- DTSCode has joined. 08:11:02 -!- drdanmaku has quit (Quit: Connection closed for inactivity). 08:22:42 -!- MoALTz has joined. 08:24:02 blsq ) %square={^^?*}9%square! 08:24:03 81 08:24:04 yay 08:37:13 -!- bb010g has quit (Quit: Connection closed for inactivity). 08:42:31 centrinia: I do have the program in my computer already 08:43:20 So look at the source code. 08:54:51 @type groupBy 08:54:52 (a -> a -> Bool) -> [a] -> [[a]] 08:56:51 @hoogle Eq b => (a -> b) -> [a] -> [[a]] 08:56:51 GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]] 08:56:51 GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a] 08:56:51 Prelude dropWhile :: (a -> Bool) -> [a] -> [a] 08:57:46 I guess groupWith f == groupBy ((==) `on` f) or something. 08:58:07 Er, s/==/=/ 08:58:16 wth is wrong with groupBy 08:58:23 wtf is "on" 08:58:35 @type on 08:58:36 (b -> b -> c) -> (a -> b) -> a -> a -> c 08:58:45 > groupBy (\c -> c % 2 == 0) [1,2,4,3,5,6,8,10,1] 08:58:46 Couldn't match expected type ‘a -> GHC.Types.Bool’ 08:58:46 with actual type ‘GHC.Types.Bool’ 08:58:46 Relevant bindings include c :: a (bound at :1:11) 08:59:10 oh 08:59:11 right 08:59:43 Is there a version of group that allows to do that? 08:59:50 groupBy (\c -> c % 2 == 0) 09:00:14 should produce [[1],[2,4],[3,5],[6,8,10],1] actually 09:00:31 @type groupWith 09:00:32 Not in scope: ‘groupWith’ 09:00:53 > groupBy ((==) `on` (%2)) [1,2,4,3,5,6,8,10,1] 09:00:55 [[1],[2],[4],[3],[5],[6],[8],[10],[1]] 09:01:01 Aw. 09:01:14 *slowclap* 09:01:19 > groupBy ((==) `on` (`mod` 2)) [1,2,4,3,5,6,8,10,1] 09:01:21 [[1],[2,4],[3,5],[6,8,10],[1]] 09:01:36 You confused me with your use of %, I blame that. 09:02:20 awesome 09:02:51 Oh, and you're not you. 09:03:06 (I thought it was still mroman speaking.) 09:03:19 hu 09:03:23 what's % then :D 09:03:27 @src (%) 09:03:27 x % y = reduce (x * signum y) (abs y) 09:03:31 oh 09:03:33 I see 09:03:59 you do? 09:04:33 > 16%6 09:04:35 8 % 3 09:04:44 It's that thing for those. 09:05:00 nice 09:05:16 @hoogle on 09:05:16 Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c 09:05:16 Control.Exception.Base onException :: IO a -> IO b -> IO a 09:05:16 Control.Exception onException :: IO a -> IO b -> IO a 09:06:17 > groupBy (\a b -> (a `mod` 2) == (b `mod` 2)) [1,2,4,3,5,6,8,10,1] -- if you want it spelled out 09:06:18 [[1],[2,4],[3,5],[6,8,10],[1]] 09:07:51 blsq ) {1 2 4 3 5 6 8 10 1}{2dv}gB 09:07:52 {{1} {2 4} {3 5} {6 8 10} {1}} 09:07:54 there we go :) 09:15:28 http://codepad.org/qqf0pbRH 09:15:34 ^- the new Burlesque :D 09:21:39 fizzie: I'm familiar with the concept of `on` ;) 09:23:13 Yes, I mixed names all the way up there too. 09:28:25 btw: Do you have some ideas how to make parsing practical in a stack-based language? 09:29:19 What is a grammar called having the properties: [1] There is a finite number of possible tokens and none of them have extra information associated with them. [2] Each production has a list of zero or more action symbols associated with them. [3] When a production is matched, the list of action symbols is appended to an output buffer and does nothing else; it does not affect further input or change what is already written to the output buffer. 09:32:35 mroman: well, some classes of parsers (e.g. LR parsers) are stack-based already, but they normally assume that the input is somewhere other than the stack 09:48:39 hm. 09:57:31 you might be able to use the Underload/Joy trick of keeping the remaining input to consume on top of the stack, and just manipulating the stack beneath it, with dip instructions 09:57:47 dip in Underload is ~a*^ 09:59:08 "dip"? 10:01:45 basically, "run the given code, using the tail of the stack as the stack" 10:02:03 i.e. it basically "hides" the top stack element while running some code, and puts it back afterwards 10:02:20 ^ul (a)(b)(c)(d)(e)SSSSS 10:02:21 edcba 10:02:23 ^ul (a)(b)(c)(d)(e)~SSSSS 10:02:24 decba 10:02:29 ^ul (a)(b)(c)(d)(e)(~)~a*^SSSSS 10:02:29 ecdba 10:02:42 that should give you a good idea of how dip works 10:03:13 in underlambda (which is vaporware), I use _ for dip, because it's one of the more useful and fundamental operations you can do in a stack language 10:03:17 (the name "dip" comes from Joy) 10:03:31 and ofc you can nest dips indefinitely 10:03:39 ^ul (a)(b)(c)(d)(e)((~)~a*^)~a*^SSSSS 10:03:39 edbca 10:11:58 ais523: tha sounds like a strange operation. do you temporarily put the hidden element to the separate return stack? 10:12:36 b_jonas: the ~a*^ implementation basically puts a command to push the hidden element onto the stack at the end of the code you're running 10:12:59 so it's effectively being stored in the "program stack" (which looks like a stack if you ever look at Underload in a debugger) 10:13:08 ah 10:13:35 sure, the program stack can contain arbitrary data in postscript too, so that makes sense 10:14:43 I went to look for the Factor 'dip', but it's just a primitive. 10:14:57 Well, there's a definition -- : dip swap [ call ] dip ; 10:15:08 But it's a primitive when preceded by a literal quotation. 10:15:42 wait, is it defined in terms of itself? 10:15:53 No, it's defined in terms of the primitive. 10:16:02 in terms of a special case of itself, then 10:16:05 right 10:16:05 Yes. 10:16:16 The primitive only applies if it follows a literal quotation, so the definition is only involved when it's something else than a literal. 10:16:18 originally I was planning to have a separate stack for working in Overload 10:16:35 thought I might need one in Underlambda too, but Underload is more elegant than I expected 10:16:50 ~a*^ is a really elegant and neat definition, only four characters! 10:20:40 `forth 1 2 3 4 s" swap" rot >r evaluate r> ~~ 10:20:41 ​ \ *somewhere*:-1:<4> 1 3 2 4 10:20:45 Not quite as elegant. 10:21:09 where is Forth storing the data? 10:21:19 The return stack, with >r and r>. 10:22:10 oh, which is safe because code won't tamper with the area below where you are on the return stack without giving you a chance to run 10:22:18 just like storing local variables on the stack in C 10:23:29 And the rot there is logically speaking a swap, it's just that s" foo" results in two cells (address and count). 10:24:49 come to think of it, that Forth definition is pretty much a direct translation of the Underload, allowing for differences in culture between the languages 10:25:43 `forth : f 1 2 3 4 c" swap" swap >r count evaluate r> ; f ~~ ( alternatively ) 10:25:44 ​ \ *somewhere*:-1:<4> 1 3 2 4 10:26:01 For some reason s" ..." is okay in interpreter mode, but c" ..." is a compile-only word. 10:28:06 hmm, I wonder how easy it is to write an Underload interpreter using Forth techniques (or in Forth directly) 10:29:21 depends. do you want garbage collection? 10:29:37 `forth 1 2 3 4 ' swap swap >r execute r> ~~ ( a lot more elegant but only for a single word ) 10:29:37 ​ \ *somewhere*:-1:<4> 1 3 2 4 10:30:19 "evaluate" is arbitrary "read source code from string", execute just runs the interpretation semantics denoted by the xt put on stack by ' swap. 10:31:13 Oh, gforth (I don't know if it's in ANS) has anonymous definitions. 10:31:43 `forth 1 2 3 4 :noname rot swap ; swap >r execute r> ~~ 10:31:44 ​ \ *somewhere*:-1:<4> 2 1 3 4 10:32:48 V. fancy. 10:45:08 -!- quintopia has quit (Remote host closed the connection). 11:01:36 fungot, run the interpretation semantics denoted by the xt put on stack by ' swap. 11:01:36 b_jonas: " it is a very inconvenient habit of kittens ( alice had once made the remark) that, though she looked back once or fnord the riddle?' 11:01:55 I fnorded a riddle once. 11:04:53 fungot, on what x86 cpus exactly does loading 16 bytes of unaligned memory with the MOVDQU instruction carry no penalty as long as that memory is never written (it's a constant table) and it doesn't cross a 64 byte cache line boundary? 11:04:54 b_jonas: " oh mocking magic watch!" i exclaimed. " human free-will is an exception to the system of fixed law. eric said something like that went on all through this fnord shall we say ' animals'? and, as my tears could never bring the friendly phantom back, it seemed impossible!" he said. 11:09:45 -!- ais523 has quit. 11:15:26 carrots, fungot? 11:15:26 b_jonas: " i--i didn't mean to grin. see, there are a good plan!" he said dreamily: " fnord sylvie?" bruno impatiently interrupted me. " why," said the gardener. 11:32:27 Mail Merge times out today. Now I'll have to consider whether to post another challenge. 11:46:18 -!- ais523 has joined. 11:50:00 -!- yiyus has quit (Ping timeout: 244 seconds). 11:51:42 -!- yiyus has joined. 12:01:54 b_jonas, Mail Merge Times? 12:02:12 yeah 12:06:13 What is that? 12:13:54 ( Z 12:13:54 0 : Nat 12:14:52 -!- oerjan has joined. 12:21:11 I don't think the Mail Merge Times is 0 : Nat 12:34:08 -!- boily has joined. 12:34:21 -!- Patashu has quit (Ping timeout: 250 seconds). 12:43:33 -!- centrinia has quit (Ping timeout: 255 seconds). 13:05:14 -!- impomatic_ has joined. 13:06:24 -!- CADD_ has joined. 13:26:44 -!- vanila has joined. 13:46:45 @tell shachaf what's with prescriptivists telling me not to use the word "trinary" <-- from a latin viewpoint, it's about like saying "threeth" in english 13:46:45 Consider it noted. 13:49:26 -!- shikhout has joined. 13:52:40 -!- shikhin has quit (Ping timeout: 265 seconds). 13:52:45 I guess groupWith f == groupBy ((==) `on` f) or something. <-- it's implemented a bit more efficiently for expensive functions, i think 13:55:35 fizzie: oh wait, it's actually sorting first, so not the same as groupBy ((==) `on` f) at all 13:57:03 oh and even sortWith isn't _actually_ using the trick to evaluate expensive functions less, hm 13:58:17 * oerjan is a bit tired in the brain 14:00:25 I didn't know it sorts first. 14:00:42 neither did i, but i just checked the code 14:00:54 The documentation does say. 14:01:03 "The groupWith function uses the user supplied function which projects an element out of every list element in order to first sort the input list and then to form groups by equality on these projected elements." 14:02:01 It doesn't do the Python itertools.groupby thing of returning tuples that contain both the value of the projection function as well as the group. 14:02:52 well i had vaguely thought that it _constructed_ the tuple list internally, but it doesn't. 14:03:08 actually groupWith without sorting wouldn't need that. 14:03:27 it can just pass the last f x value recursively 14:03:46 sortWith would need to construct tuples, though 14:03:56 (to avoid f reevaluation) 14:04:02 `run python -c 'from itertools import groupby; print(list((k, list(g)) for k, g in groupby([1,2,4,3,5,6,8,10,1], lambda x: x%2)))' 14:04:03 ​[(1, [1]), (0, [2, 4]), (1, [3, 5]), (0, [6, 8, 10]), (1, [1])] 14:05:39 Silly amount of list()s to convert all those generator objects to something that print nicely. 14:05:57 `run python -c 'from itertools import groupby; print(list(groupby([1,2,4,3,5,6,8,10,1], lambda x: x%2)))' 14:05:58 ​[(1, ), (0, ), (1, ), (0, ), (1, )] 14:06:07 `run python -c 'from itertools import groupby; print(groupby([1,2,4,3,5,6,8,10,1], lambda x: x%2))' 14:06:08 14:06:29 -!- blsqbot2 has joined. 14:06:34 !blsq {1 2 4 3 5 6 8 10}{2dv}gB 14:06:34 ERROR: Unknown command: (gB)! 14:06:43 !blsQ {1 2 4 3 5 6 8 10}{2dv}gB 14:06:43 {{1} {2 4} {3 5} {6 8 10}} 14:06:48 hi, mroman 14:06:54 hey 14:07:10 !blsQ %var=5 %var? 14:07:10 5 14:07:38 !blsQ %deepReverse=q)<- {{1 2}} %deepReverse! 14:07:38 ) 14:07:46 !blsQ %deepReverse={)<-} {{1 2}} %deepReverse! 14:07:46 {{2 1}} 14:20:08 -!- blsqbot2 has quit (Read error: Connection reset by peer). 14:40:59 Taneb: I read that as [Mail Merge] [times out] 14:42:29 I'm pretty sure that's the intended meaning. 14:42:42 yeah me too 14:43:07 why don't you mail out some merge times? 14:43:42 haha 14:44:42 So, you're not a reporter from the Mail Merge Times. 14:44:42 -!- shikhout has changed nick to shikhin. 14:55:10 -!- nys has joined. 15:04:06 [wiki] [[Brainfuck algorithms]] http://esolangs.org/w/index.php?diff=40819&oldid=40806 * YoYoYonnY * (-124) 15:34:37 !blsQ %deepReverse={)<-} {{1 2} {3 4}} %deepReverse! 15:43:41 -!- boily has quit (Quit: ISOCELES CHICKEN). 15:51:02 magnus! 16:01:51 -!- MDream has changed nick to MDude. 16:30:01 -!- blsqbot2 has joined. 16:30:12 !blsQ %deepReverse={)<-} {{1 2} {3 4}} %deepReverse! 16:30:13 {{2 1} {4 3}} 16:30:35 !blsQ |[1 2 3.+.+]| 16:30:35 {6} 16:30:44 !blsQ |[1 2 3.+.+^^?*]| 16:30:45 {36} 16:30:51 !blsQ |[1 2 3.+.+y^^?*Y]| 16:30:51 {6 ^^ ?*} 16:31:06 !blsQ |[1 2 3.+.+y^^?*Y]|s0"0"ev 16:31:07 ERROR: Unknown command: (ev)! 16:31:12 hm 16:31:40 !blsQ |[1 2 3.+.+y^^?*Y]|s0"0"gve! 16:31:41 36 16:31:54 oh yeah 16:34:04 -!- drdanmaku has joined. 16:34:43 !blsQ %data={1 2 3} |[%data?++]| 16:34:43 {6} 16:35:11 !blsQ %data={10ro} |[%data!++]| 16:35:12 {55} 16:35:35 !blsQ %q={%q!}%q! 16:35:36 Ain't nobody got time fo' dat! 16:38:44 !blsQ %data=5 "data"Gv 16:38:44 ERROR: Unknown command: (Gv)! 16:38:46 !blsQ %data=5 "data"gv 16:38:47 5 16:50:33 -!- blsqbot2 has quit (Ping timeout: 265 seconds). 16:59:30 [wiki] [[Brainfuck algorithms]] http://esolangs.org/w/index.php?diff=40820&oldid=40819 * Rdebath * (+906) Input Number 17:00:10 [wiki] [[Brainfuck algorithms]] M http://esolangs.org/w/index.php?diff=40821&oldid=40820 * Rdebath * (-2) Sigh 17:17:20 -!- oerjan has quit (Quit: Later). 17:58:48 -!- ais523 has quit. 17:59:00 -!- ais523 has joined. 18:21:34 -!- Sprocklem has joined. 18:44:45 -!- AndoDaan has joined. 18:45:58 -!- centrinia has joined. 18:57:53 -!- AndoDaan has quit. 19:12:14 ais523: oh no! it's multiplying 19:12:24 ais523: TomPN has written a page about another language 19:12:38 is it just as bad? 19:12:46 dunno, I haven't looked yet 19:12:52 want to see what he did with Musical Notes first 19:12:54 ah right, I saw that come up in the RC feed, but didn't notice the author 19:13:02 and the preview looked reasonable 19:13:26 Musical notes still says "loops cannot be nested" 19:14:56 the first oddity I notice about Dimensions, which is about halfway down the page, is that the command for reading a velocity set from memory is lumped in with I/O instructions for no sane reason at all 19:15:40 oh, and loops /still/ don't nest (in Dimensions, that is) 19:15:48 that said, the non-nestting version of Dimensions loops may actually be TC 19:15:50 *nesting 19:15:59 because each ] matches the most recently arriving [, which may be enough power 19:19:49 ais523: this description of Dimension seems to be unclear the same way as that of Musical Notes. is it only the data memory and data pointer that moves in a 52 dimensional array, or also the instruction pointer somehow? And what's the global topology? 19:20:14 instructions are still completely linear 19:20:18 (note the unadorned "previous") 19:20:35 I currently consider TomPN to be in the category of "trying to make something beyond a BF derivative but has no idea how" 19:20:52 yeah... 19:20:54 e.g. they don't seem to realise that adding more dimensions to the data storage simply makes programming easier, as you don't have to use them 19:22:40 Should we introduce the rule that you can create a new language only if you have ascended a previously existing language? 19:23:25 i say we burn him 19:23:35 nys: no, we have to measure him to a duck first5 19:23:54 Should we introduce the rule that you can create a new language only if you have ascended a previously existing language? ← does that even make sense? 19:24:02 touch 19:24:04 ais523: no 19:24:09 I guess you could define NetHack as a programming language, I've ascended that 19:24:17 and am OK at defining arbitrary things to be programming languages 19:24:32 actually I'd love to make NetHack 4 TC, but can't figure out how 19:24:43 HTML is a programming language! 19:24:48 ais523: isn't it already TC? 19:24:50 like, something involving rolling boulder traps dropping things between levels 19:25:01 b_jonas: no infinite storage, and it's doubtful you can even construct a loop 19:25:10 there is infinite storage in objects 19:25:37 including nested containers 19:25:51 I mean, it's probably not really infinite because you run out of address space eventually, 19:25:57 but you probably don't want to change that, right? 19:27:18 settle for turing complete with fine print 19:28:11 b_jonas: the problem is the complete lack of comoutation 19:28:13 *computation 19:28:13 as for loop, I think you can, um, polymorph to a non-eating sessile monster and put on an amulet of unchanging while you still have movement points 19:28:22 you can't have one thing causing another thing to happen, directly 19:28:29 only possibility I can think of is the monster AI 19:28:34 yeah 19:28:36 which has some Deadfish-like loopholes 19:28:43 (have you read track.c, by the way?) 19:28:51 (it's short, and hilariously buggy) 19:28:56 we probably need some more special stuff for computation 19:29:05 no, I haven't read track.c and I don't plan to either 19:29:15 if I want to read the monster AI, I read muse.c, that's more sensible 19:29:36 muse.c both determines the starting inventory of items and what items monsters will use and how they use them 19:29:57 track.c determines how the monster tries to chase down the player 19:30:00 that's how http://trac.nethack4.org/ticket/710 came up 19:30:02 it is full of incorrect assuumptions 19:32:34 the difficulty is that monsters don't interact with containers. they don't even pick them up, though a nymph may steal one. 19:33:09 I'd like the player to be able to set up Dwarf Fortress-like contraptions 19:33:47 it doesn't really help computation, but I was thikning of a scroll of duplicate item 19:33:56 (or a scroll effect, in any case) 19:34:08 -!- conehead has quit (Excess Flood). 19:34:30 which lets you choose an existing item and create a cancelled copy, unless it's unique or an artifact 19:34:47 -!- conehead has joined. 19:34:50 I should ticket that if I haven't yet 19:39:19 @messages-loud 19:39:19 oerjan said 5h 52m 34s ago: what's with prescriptivists telling me not to use the word "trinary" <-- from a latin viewpoint, it's about like saying "threeth" in english 19:39:48 oerjan: good thing i'm not talking in latin hth 19:40:30 let's annoy everyone by calling it "threenary" 19:42:22 3-nary is a reasonable name and would not annoy me 19:49:37 -!- shikhout has joined. 19:52:51 -!- shikhin has quit (Ping timeout: 255 seconds). 20:01:03 -!- Patashu has joined. 20:01:36 ticketed it 20:02:09 hm, what should trinary really be called then? 20:02:37 olsner: base three. 20:02:50 "ternary" is something I see quite a lot 20:03:05 yeah, "ternary" is the usual name, but why bother, "base three" is clear enough 20:04:14 Why bother with "binary"? 20:05:04 binary and hexadecimal are common bases, but nobody designs ternary computers anymore 20:05:20 if you make an esolang with base 3 operations, like trintercal, then sure, call it ternary 20:06:12 surely you mean terntercal!! 20:06:27 just like a terangle 20:06:31 threentercal 20:07:09 TriINTERCAL is the official name, I believe 20:07:17 ok 20:07:55 what's the official name for the base 4, base 5, base 6, base 7 versions? 20:08:31 also TriINTERCAL 20:08:48 (if you expected it to make sense, you picked the wrong language) 20:23:40 -!- nortti has quit (Ping timeout: 250 seconds). 20:23:49 -!- nortti has joined. 20:24:00 hi 20:24:37 hi 20:25:22 -!- AndoDaan has joined. 20:25:38 any ideas for simple VMs that could be used for targets for compression 20:25:46 the first one is just emit char + backrefs 20:25:53 what's being compressed here? 20:26:10 -!- Patashu has quit (Ping timeout: 260 seconds). 20:26:14 any binary file - of course it will only compress some of them 20:26:23 oh, you mean "any ideas for decompression algorithms, that I could invent matching compression algorithms for?" 20:26:39 yeah, especially focused on making simple decompression VMs 20:26:43 I actually was working on a compression algorithm of my own a while back; the decompressor was very simple, but the compressor quite complex 20:26:51 what sort of thing was it? 20:26:54 it beat bzip2 but was worse than lzma, so I didn't continue using it 20:27:07 vanila: are you compressing video? audio? text? they call for different decompression algorithms. 20:27:21 and basically, you could define a symbol as a single letter, or recursively in terms of other symbols 20:27:32 and the last symbol defined was the entire program 20:27:54 straight line grammar? 20:28:01 e.g. "aabaab" could be encoded as (in pseudocode, the actual compression was binary) "X=aa; Y=Xb; Z=YY" 20:28:10 I see! I thoughht this was a really good approach 20:28:14 I considered adding parameters 20:28:26 e.g. tag(T,B) = B 20:28:32 could be used to compress HTML maybe 20:28:33 ais523: that sounds sort of like a compression with backreferences 20:28:45 and then that in turn was compressed by referring to symbols using numbers depending on how recently they'd been used 20:29:16 i see, a huffman like entropy based compression is good for post processing 20:29:16 now, you have /huge/ scope for encoding optimizations, e.g. you can reorder symbol definitions to make the numbers smaller 20:29:32 oh look, Mail Merge is now in post mortem 20:29:36 the numbers themselves were "Huffman" coded, but with a fixed table based on the frequencies they normally showed up at 20:29:36 let me look what the people did 20:31:39 wow, nice! and this ruby solution doesn't even hard-code anything about this particular input instance 20:32:34 vanila: if you like I'll send you a copy of the decompressor and you can try to make a good compressor for it 20:33:27 what does the 0/ do in that? 20:33:29 thats ok but thanks :) 20:33:34 um, in the winner perl solution I mean 20:33:36 fwiw, even if you use only minimal compression on the numbers, it still beats gzip, which surprised me 20:33:53 oh, I see 20:33:57 the 0/ quits at the end 20:33:58 wow 20:34:01 I think that grammar based compression could be really really powerful yeah 20:34:10 nice trick 20:34:14 but so hard to actually find the structure in text 20:34:22 it's like parsing but you don't even know the AST yet 20:34:39 Actually I also have a decompression algorithm that I need a compressor for, too. 20:35:04 (Kind of) 20:35:07 zzo38: go on 20:35:37 OK just a minute 20:35:47 oh damn! 20:35:58 how did I not notice that s///ger while doesn't need the spae 20:36:01 vanila: right; eventually I was reaching the point where compression took hours and only saved a few bytes compared to much faster encoders 20:36:07 that cost me a byte 20:36:35 http://www.sequitur.info/ this has a linera time algorithm (not space though) 20:36:40 and it's meant to be quite good 20:36:43 -!- centrinia has quit (Ping timeout: 244 seconds). 20:36:54 but it targets quite restricted vm 20:37:08 vanila: linear time implies linear space unless you're doing something like using the address space as a hash table 20:37:19 in which case, it takes non-linear time to zero the memory in advance 20:37:22 The decompressor is part of the program http://zzo38computer.org/zmachine/interp/zorkmid.zip 20:37:33 I'm not a professional golfer but I should have noticed that 20:37:36 oh weird :S I guess they lie or I don't understand something 20:38:16 Look at the zprint() function. 20:38:32 If you made a compression algorithm you could call it zzip38 20:38:37 I have already a way to encode a single string and ignoring the frequent words table. 20:39:28 However, I have a collection of strings, and want to create a frequent words table for it. 20:39:56 winzzo38 20:40:33 apparently teebee used a different approach for his perl solution: no s///ger, instead printf s//%s/gr 20:40:36 nice 20:41:26 (In addition, there is also suffix optimization and other stuff. Note that the frequent words table can point inside of another string as long as the other string contains no fwords itself; any call to debugger() indicates an error.) 20:41:40 is it just me who replaces all the noneliminatable spaces in golfing submissions with unary +, because it looks linenoisier that way? 20:41:41 (Calls to warn() are also errors.) 20:42:10 ais523: I think I sometimes do that 20:42:27 ais523: commas work in some cases when pluses don't 20:44:46 perl 6 has a unary concat, too 20:45:37 ais523: what can you do with the space after the 0 in the block version of http://www.perlmonks.com/?node_id=863110 ? 20:46:14 hmm, maybe you can just put that into the pack 20:46:15 let me try 20:46:22 well, if you have the space /before/ the 0 too, you can enclose the 0 in parens 20:46:24 Do you understand my problem now? 20:46:39 `perl -e sub h($){($_=$_[0]=pack b208,0 .unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r 20:46:40 Just another Perl hacker, 20:46:41 doesn't gold, but fewer spaces 20:46:52 that trailing comma is so curious 20:47:02 I wonder if there was a typo in an early JAPH, and everyone copied it 20:47:04 ais523: one trick I used in that is to put one of the two newlines at an undelible space 20:47:37 `perl -e sub h($){($_=$_[0]=pack b208,unpack+ab362,0,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r 20:47:38 Too many arguments for unpack at -e line 1, near "])" \ Execution of -e aborted due to compilation errors. 20:47:43 oh right, unpack, not pack 20:48:19 ais523: so what would you do with the space after that zero? there's no space before it 20:48:26 mind you, this isn't really golf 20:49:02 oh, I was looking at the unobfuscated example 20:49:19 what does pack 'b' do? 20:49:28 `perl -e sub h($){($_=$_[0]=pack b208,0 .unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r 20:49:28 Just another Perl hacker, 20:49:29 there's a pack format for inserting zero bits 20:49:41 ais523: no, all pack formats can output only bytes 20:49:47 `perl -e sub h($){($_=$_[0]=pack zb208,unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:49:48 Invalid type 'z' in pack at -e line 1. 20:49:56 `perl -e sub h($){($_=$_[0]=pack xb208,unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:49:57 33333333333333333333333333. 20:50:03 ais523: b* outupts a number of bits but pads that to whole bytes 20:50:25 ah right, and you're relying on alignment properties somehow 20:50:47 the... unobfuscated example? where? 20:50:54 earlier on the page 20:51:04 huh... that's just as obfuscated, but with a saner formattingh 20:51:14 it's basically the same with more spaces and newlines 20:51:22 maybe there's some other punctuation difference, but I don't think so 20:51:55 oh, hmm, that 0 is an ASCII 0 (=48), rather than a binary 0 20:52:03 so I can't replace it with x, which generates a byte's worth of zero bits 20:52:04 oh yeah, there is, there's a prototype difference... wth does that do 20:52:28 ah no, you're adding one bit's worth of zeroes? 20:52:31 this is confusing -( 20:52:33 * :-( 20:52:50 ais523: yes, one bit. 20:52:56 -!- DTSCode has quit (Read error: Connection reset by peer). 20:53:11 ais523: basically, it's storing a vector of GF(128) values in a string, one per byte, 20:53:27 b_jonas: aha, well according to the pack docs, it just checks if the ASCII character is even or odd 20:53:40 `perl -e sub h($){($_=$_[0]=pack b208,b.unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:53:43 so I shift each of those left by unpacking to bits, adding a single bit, repacking 20:53:46 -!- DTSCode has joined. 20:53:49 `perl -e sub h($){($_=$_[0]=pack b208,b.unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:53:50 Fb0.0.V 20:53:53 hmm 20:54:02 now what have I done wrong? 20:54:32 dunno, it's a fragile japh, 20:54:47 `perl -e sub h($){($_=$_[0]=pack b208,0 .unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:54:55 `perl -e sub h($){($_=$_[0]=pack b208,0 .unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:54:55 Fb0.0.V 20:55:01 oh, miscopied your perl-e 20:55:13 `perl -e sub h($){($_=$_[0]=pack b208,0 .unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:55:13 Fb0.0.V 20:55:22 OK this is silly 20:55:27 how come, when I copy-and-paste your JAPH, it doesn't work for me? 20:56:04 `perl -e sub h($){($_=$_[0]=pack b208,unpack+ab362,0,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:56:04 Too many arguments for unpack at -e line 1, near "])" \ Execution of -e aborted due to compilation errors. 20:56:27 `perl -e sub h($){($_=$_[0]=pack b208,0 .unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:56:28 Fb0.0.V 20:56:35 mind you, http://www.perlmonks.com/?node_id=581159 is more fragile. you can't modify it at all 20:56:52 b_jonas: you post it again, if you can get it to work, change '0 .' to 'b.' and try again 20:57:17 also I think you can save another space by changing $y to some unused special variable (I don't think you're using $.) 20:57:23 `perl -e sub h($){($_=$_[0]=pack b208,0 .unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r 20:57:23 Just another Perl hacker, 20:57:36 `perl -e sub h($){($_=$_[0]=pack b208,b.unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r 20:57:37 Just another Perl hacker, 20:57:40 yeah, that works 20:57:43 thanks 20:57:53 how come, when I copy-and-paste your JAPH, it doesn't work? 20:57:55 `perl -e sub h($){($_=$_[0]=pack b208,b.unpack+b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y,for+0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r 20:57:56 Just another Perl hacker, 20:58:03 ais523: dunno, maybe you mispasted 20:58:08 `perl -e sub h($){($_=$_[0]=pack b208,b.unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:58:08 Fb0.0.V 20:58:24 `perl -e sub h($){($_=$_[0]=pack b208,b.unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLBx)Z]n0*zf\0I3"=~/./g;print$r 20:58:25 Fb0.0.V 20:58:29 that's using both clipboards 20:58:34 I'm going to look for differences in the log 20:59:17 oh, oho 20:59:25 `perl -e sub h($){($_=$_[0]=pack b208,b.unpack b362,$_[0])=~tr/\0-\c?/\0/;tr/\0/\377/c;$_}do{$y=$r;$v=join$r='',a..z;$r^=h$r&"\217"x26^h$v&$y for 0..6;$r^=$_ x26}for"k6sNP2B}({ambrusLB%Ox)Z]n0*zf\0I3"=~/./g;print$r 20:59:26 Just another Perl hacker, 20:59:45 apparently my client was interpreting the %O as a color code, I had to escape it 20:59:50 ah! 21:00:02 well, 21:00:14 `perl -e eval for'for$=(2..27){$*=0;$*=($**$=+ord)%127,for/./gs;print+chr$*}'."\n#ig\\tq\24^-/v\c^l,\23\$%\3\ta2\tk\b\c\)\x18 -- ambrus" 21:00:15 ​$* is no longer supported at (eval 1) line 1. \ Just another Perl hacker, 21:00:30 be glad it's not this japh, this one basically can't be modified at all without breaking everything 21:00:36 because it uses the whole string to compute the output 21:00:43 except for the eval for part 21:00:44 -!- bb010g has joined. 21:00:48 it's from http://www.perlmonks.com/?node_id=581159 21:01:01 typo anything and it breaks 21:02:25 `perl -Xe eval for'for$=(2..27){$*=0;$*=($**$=+ord)%127,for/./gs;print+chr$*}'."\n#ig\\tq\24^-/v\c^l,\23\$%\3\ta2\tk\b\c\)\x18 -- ambrus" 21:02:25 Just another Perl hacker, 21:04:32 `perl -Xe eval for'for$=(2..27){$*=0;$*=($**$=+ord)%127,for/./gs;print+chr$*}' . "\n#ig\\tq\24^-/v\c^l,\23\$%\3\ta2\tk\b\c\)\x18 -- ambrus" 21:04:33 Just another Perl hacker, 21:04:39 I disagree 21:05:02 yes, you can modify the part outside the string 21:06:20 Did you see the decompression algorithm I had and needed a compressor for? (It isn't a very good compression, but you can do better than Infocom did.) Also, for a compression algorithm that works for a single string if the frequent words table is already filled in, see http://zzo38computer.org/zmachine/doc/tricky.txt under "Black-Johansen". 21:06:34 also, I declare it a new #esoteric tradition that when talking about a JAPH, you ensure that the word comes just before a place where you'd naturally put a comma anyway 21:06:38 to leave the spelling ambiguous 21:06:49 just like the original brainfuck spec never used the word at the start of a sentence 21:07:10 -!- AndoDaan has left. 21:07:20 -!- AndoDaan has joined. 21:09:55 We have these things called quotation marks which let you write “Just another Perl hacker,” unambiguously. 21:10:57 What's the fun in that/ 21:12:18 ion: except it doesn't work 21:12:19 If you don't like those kind of qutation marks then you can also use ASCII quotations marks. (Assuming that you want to use quotations marks at all, which you don't.) 21:12:26 `perl -e print “Just another Perl hacker,” 21:12:27 Unrecognized character \xE2; marked by <-- HERE after print <-- HERE near column 8 at -e line 1. 21:12:47 `perl-e use utf8; print “Just another Perl hacker,” 21:12:48 Unrecognized character \xE2; marked by <-- HERE after f8; print <-- HERE near column 17 at -e line 1. 21:13:05 `perl -e use utf8; print “Just another Perl hacker,” 21:13:06 Unrecognized character \xE2; marked by <-- HERE after f8; print <-- HERE near column 18 at -e line 1. 21:13:10 hmm, weird 21:13:18 maybe `perl is doing weird thing with encodings already 21:13:31 ais523, you had it coming by trying to run non-obfuscated Perl 21:13:55 -!- AnotherTest has joined. 21:14:01 Taneb: no, I expected it to fail 21:14:09 I just don't get why the error messages is the same in both cases 21:14:15 -!- serika has joined. 21:14:58 `welcome serika 21:14:59 serika: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: . (For the other kind of esoterica, try #esoteric on irc.dal.net.) 21:15:19 Hi! 21:15:20 -!- zzo38 has quit (Read error: Connection reset by peer). 21:17:08 hi 21:17:33 hi 21:17:39 hi 21:18:16 hi 21:19:58 hi 21:20:10 Taneb wins, i think 21:20:22 sweeeeeeeeeeeet 21:20:48 !blsq "hi"Q 21:20:48 hi 21:20:56 nope it's blsqbot by a nose! 21:21:17 ^ul (hi)S 21:21:18 hi 21:21:50 dammit. 21:22:04 there are plenty of other esolang bots 21:22:11 but it has to be in an actual esolang to count 21:22:28 [ hi 21:22:28 b_jonas: |value error: hi 21:22:31 um 21:22:37 [ t=.hi 21:22:37 b_jonas: |ok 21:22:40 argh 21:22:49 [ 'hi' 21:22:49 b_jonas: hi 21:22:51 `! bf ++++++++++[->++++++++++<]>++++.+. 21:22:52 hi 21:22:53 like that 21:22:58 nice one. 21:23:13 that can almost certainly be done shorter, but I was trying to do it mentally and don't have the constants table memorized 21:23:42 !bf8 ++[>+<+++++]>+.+. 21:23:44 gh 21:23:49 whoops 21:24:12 !bf8 +[->-[<]>--]>-.+. 21:24:12 hi 21:24:15 there we go 21:24:20 that was actually checking the wiki 21:24:29 current shortest known hi 21:27:19 wow, that's really short 21:28:44 -!- AndoDaan_ has joined. 21:29:15 is there a way to prove some bf code is the shortest for a given task without an exhaustive search? 21:29:16 hi 21:29:33 AndoDaan_: in general, no 21:29:35 AndoDaan_: no, and you can't prove even with an exhaustive search 21:29:38 halting problem and all that 21:29:42 at least for non-trivial tasks 21:29:43 right. 21:29:46 sometimes, the answer is yes in special cases 21:30:00 right, for very short programs you could be sure 21:30:17 -!- AndoDaan has quit (Ping timeout: 272 seconds). 21:30:22 -!- AndoDaan_ has changed nick to AndoDaan. 21:30:49 and of course you probably have to assume a particular variant on what to allow (overflow, underflow, left from starting position) 21:31:14 I said !bf8 explicitly for a reason :-) 21:31:37 ais523: does that have an infinite tape both sides of the starting point? 21:31:40 hmm. I wrote a bf interpreter the other day, and so many option just for it's basic form... 21:31:43 the wiki currently doesn't assume that left from starting position is legal, it adds extra > if necessary 21:31:51 AndoDaan: right 21:31:58 AndoDaan: see 21:32:02 @google kolgomorov complexity 21:32:03 http://en.wikipedia.org/wiki/Kolmogorov_complexity 21:32:03 Title: Kolmogorov complexity - Wikipedia, the free encyclopedia 21:32:04 hmm, did anything come of the Big BF Standardisation Vote? 21:32:48 i've read abpit kolgomorov a couple of times, interesting stuff. 21:32:50 technically an exhaustive search won't work either, since you can't prove a given partial function is implemented by a given program. math 21:33:11 Bike: yep. that's what we were trying to say. 21:33:33 you can write an search that prints out things it can't fully understand 21:33:48 i've been trying to figure more about kolmogorov and turbulence but the book is checke dout from the library, it sucks 21:33:50 which you can then prove dont terminate or so manually or add extra features to the program 21:33:54 tao said navier-stokes might be some turing garbage, too 21:34:05 there is some limit below which an exhaustive search actually does work 21:34:15 vanila: if you assume stuff like execution time within our lifetime, sure 21:34:17 this may or may not be discoverable by exhaustive search 21:34:21 since game of life is turing complete it's not hard to imagine navier stokes being too 21:34:32 although it's really much more complex since it works on real number field 21:34:46 (like just given that its automatically not computable, isn't it?) 21:34:47 I'm still interested in the "what's the shortest BF program that's beyond human ability to determine whether it halts" problem 21:35:06 ais523: I'd guess it's quite short 21:35:08 ais523, me too - I have an idea to find it 21:35:09 working on reals doesn't /necessarily/ mean uncomputable, but doing anything nontrivial with them normally does 21:35:15 vanila: no, lots of smooth operations on reals are computable 21:35:24 Bike, oh ok interesting! 21:35:27 it's not like you're asking whether water is moving exactly at 5 m/s, that would be impossible 21:35:30 comparing them is particularly nasty 21:35:42 ais523, can i PM you 21:35:50 vanila: physically, yes 21:35:56 I'm still interested in that too 21:36:00 as for do I want you to PM me, that rather depends on what you're PMing me about 21:36:05 I brought it up again recently 21:36:10 finding short brainfuck programs 21:36:10 if it's something that needs to be private, PM is fine 21:36:23 if it's just "thing that would spam up the channel" but it's ontopic, the channel is better 21:36:44 if it's particularly spammy, like you're going to paste 100-line programs, we have #esoteric-blah but a pastebin is better 21:36:46 elliott, in what? 21:37:01 vanila: in what? 21:37:02 ok ill say it in -blah if anyone wants to hear 21:37:06 I'm still interested in that too 21:37:07 oh 21:37:09 the bf programs thing 21:37:12 oh okay 21:37:22 ais523: I achieved that with my bot that connects an emulated DOS machine to irc 21:37:45 b_jonas: right, I remember that 21:37:51 but I knew it's like that so I didn't even try to remember to bring it here 21:38:51 s/remember to// 21:46:30 We have a -blah? 21:46:40 we do very occasionally 21:46:49 Might as well idle there too 21:46:58 i have no idea why short bf programs would not be a topic of discussion here 21:47:02 nor do I 21:47:08 the discussion isn't spammy enough to not hold here 21:47:17 it's cosier 21:47:20 Sounds more on-topic than most discussion that takes place in here 21:47:24 cozier? how does spelling work 21:47:24 sinier 21:47:32 sinister? 21:48:13 anyway, if you come up with a program that can be proven to be impossible to prove the haltingness of, do share, i've never been able to understand that intuitively despite my math powerz 21:48:14 I think "cosier" is correct; at least, my spellchecker likes it 21:48:21 cossackier 21:48:32 Bike: the problem is, the existing constructions tend to be quite complex 21:48:41 exactly. discuss short BF programs here unless that discussion would derail some more important discussion like one about nethack. 21:48:44 basically because you have to embed the entire rules of the logic you're using in the program 21:48:58 b_jonas: we already have #nethack4 for discussion about nethack, though 21:49:06 i mean, something like "this program halts only if the goldbach conjecture is true", i can get that 21:49:23 ais523: yeah, I know, I'm joined to like five nethack channels because people can't keep it together 21:49:36 i guess making a program that halts only if the continuum hypothesis is true doesn't make much sense 21:49:55 I'm currently in 8 NetHack channels, and parted #interhack (which would be the ninth) to make room for #esoteric-blah 21:50:03 (I have a "only one screenful of channels" policy) 21:50:14 -!- DTSCode has changed nick to dTSCode. 21:50:27 #esoteric #nethack4 #nethack #nethack-dev #devnull_nethack 21:50:39 ais523: what does "one screenful" mean? 21:50:41 #nethack-nethack, for discussion of implementing nethack in nethack 21:50:58 "a program that can be proven to be impossible to prove the haltingness of" 21:51:01 that reminds me, someone who is not a programmer linked to that nethack speedrun repo ais is in 21:51:04 tripped me out 21:51:05 Bike: that it's possible to fit all the tabs in the width of my screen, without scrolling 21:51:12 wrong number 21:51:13 you could write a proof checker for PA or so 21:51:15 I see 21:51:20 and diagonalize over it 21:51:23 Bike: we think NetHack is sub-TC (and, in fact, unusable for programming) 21:51:26 and then it would be impossible to prove that halts with PA 21:51:28 but it's unclear /what/ the right channel for that is 21:51:31 here or #nethack4, most likely 21:52:11 this reminds me that nobody's commentd on the one contribution to the esolang wiki i've actually made, so out of spite i'll just have to go back to talking about nothing 21:52:16 Bike: The continuum hypothesis thing would amount to deriving an upper bound to counterexamples of the CH, I think. 21:52:29 Bike: err 21:52:36 i'm just thinking of it cos CH is independent of ZFC and all 21:52:42 ignore this, I'll go hide under a stone. 21:52:43 not that programs use ZFC or... something 21:52:49 you couldn't use CH I think 21:52:56 Bike: I normally don't focus on /who/ makes contributions 21:53:08 the musical notes person made another language, and didn't spam it to the main page this time 21:53:11 could you have a program that can be proven to halt under some axiom set but not another, well i mean of course you can 21:53:15 dumb question 21:53:25 ais523: it was a talk page thing rather than a language, is probably why 21:53:30 it does a decent job of trying not to be a BF derivative, while being stuck in an utterly low-level imperative mindset 21:53:33 i have some esolang ideas but they'd be hard to describe sanely 21:53:35 Bike: for some reason I was thinking of the Riemann Hypothesis, and I will not endeavour to find out why. 21:53:40 heh. 21:53:45 Bike: I was going to say "that's never stopped me" 21:53:48 except, it actually has 21:53:58 the language that must not be named 21:54:13 I have an esolang idea too, but it doesn't work out well and isn't very eso too (not that that's stopped some people) 21:54:16 mainly the problem is that i don't have enough experience with auto mechanics to think of a good description language, but oh well 21:54:22 I'll revise it to "it takes quite a while before I eventually give up, and when I do, I give up really strongly, and bind other people to never speak of the issue again" 21:54:37 gah, I hadn't been thinking about the issue for /months/ 21:54:43 and it's not something I want to think about right now 21:54:45 uh, sorry i guess 21:54:47 I think I'm probably not really an eso language _create_ type of guy 21:54:54 I create other eso stuff 21:55:03 or non-eso 21:55:17 the issue might be that i'm more into real numbers than most people here, which is kind of a hilarious thing to say or think but oh well 21:55:28 I'd like to make a reversible logic based thing. 21:55:39 have you seen the crabputer 21:55:47 that's not really related, i just want everyone to have seen the crabputer 21:56:04 Bike: anyway, anything less complex than http://esolangs.org/wiki/Snowflake should be easy to describe by comparison 21:56:05 what's that? 21:56:10 Bike: linky? 21:56:14 I'd rather try to make it non-esoteric, but it might end up as such regardless. 21:56:21 http://arxiv.org/abs/1204.1749 21:56:25 the big problem now is, I need a Snowflake impl, on the basis that as far as I know, nobody else has managed to successfully read the resulting description 21:56:28 based on billiard ball computers which is how i thought of it 21:56:53 real number just don't know when to stop 21:56:58 *numbers 21:57:05 it's not really a matter of complexity so much as... i guess i don't know how to constrain it in an interesting way 21:57:11 also, one thing I love about Snowflake is that it's not reversible just for fun, but because the purpose of the language can only (AFAICT) be implemented via reversibility 21:57:22 Bike: crazy 21:57:30 basically the idea is the "program" is a fire control computer schematic, but the problem is i can't think of a way to describe that without just having arbitrary schematics, which is just boring 21:57:36 hmm, the fact that it looks vaguely like brainfuck despite having an entirely unrelated meaning is also good 21:57:38 -!- MoALTz has quit (Ping timeout: 260 seconds). 21:58:39 int-e: does alexandroff compactification constitute stopping 21:58:54 what looks vaguely like brainfuck? befunge? 21:59:29 the original (i think) paper on reversible computing is neat, btw, by landauer or whoever 21:59:35 thermo~ 21:59:47 The idea I have is a language that's basically a way of describing a single huge reversible function. 22:00:02 b_jonas: +[+[]-[]] 22:00:04 that sort of thing 22:00:13 it's mostly made of +-[] and the brackets match 22:00:21 which makes it look like BF until you realise that it makes no sense as BF 22:00:35 it's still a valid program innit 22:00:37 if a boring one 22:01:04 it's an infinite loop as BF 22:01:14 !bfjoust snowflake +[+[]-[]] 22:01:16 and a no-op as BF Joust 22:01:18 ais523.snowflake: points -30.67, score 3.72, rank 47/47 22:01:22 ​Score for ais523_snowflake: 6.1 22:01:26 So you have a few basic operations, an if statement, and the ability to call functions. 22:01:46 ais523: hmm, that looks like that strange language (not intended to be esoteric I think, but it sure looked like one) I've once seen 22:02:06 the one that tried to pretend to be totalistic and Turing-complete, and pretend that lists and numbers are isomorphic 22:02:10 b_jonas: I doubt any other language works quite like Snowflake 22:02:12 dunno its name 22:02:17 MDude, there are reversible programming languages - you can run them backwards and forwards 22:02:18 most languages are not on a quest for self-perfection 22:02:21 ais523: no, I just mean the +[+[]-[]] syntax 22:02:21 Bike: I was thinking of individual numbers and their n-ary expansion. 22:02:26 b_jonas: ah right 22:02:26 I know. 22:02:47 doesn't "if" destroy information 22:02:56 Most of them have some kind of stack, though. 22:03:09 Bike: or perhaps, rational approximations. just to clarify that rational numbers *are* nice. :P 22:03:29 Rather than using a fixed set of memory addresses. 22:03:50 it might not be turing complete if you restrict memory that much 22:04:02 Snowflake's a good example of a reversible command set 22:04:09 it had to be very 100% reversible because of how it works 22:04:21 so loops and conditionals were implemented… oddly 22:04:44 most operations can only be written reliably if you know, for certain, something that /isn't/ on top of the stack 22:04:53 Oh, it won't be, unless you modify it to pretend it has an infinite repeating input structure. 22:04:57 which is harder than it seems, as programs have to be quite good at editing their own source code 22:05:12 Or infinitely repeating structure. 22:05:23 -!- Phantom_Hoover has joined. 22:06:28 I'm going more for something that can be implimented as a digital signal processor, though. 22:08:26 @tell oerjan Oh I didn't realize that golf.shinh.org allows omitting several trailing newlines... 22:08:27 Consider it noted. 22:08:28 So it'll likely be Harvard architecture, and thus unable to modify itself at all. 22:08:48 `js print(1) 22:08:50 1 22:09:03 `js print(+[+[]-[]]) // maybe it reminded you of JavaScript? 22:09:05 0 22:09:24 I don't think it's intended to be esoteric. 22:11:03 vanila: That's the thing. "If" statements preserve reversability by locking out any change to the conditional variable while inside it. 22:11:05 IMO, if you're designing a new language and don't intend it to be esoteric, you don't have a sufficient grip on the problem you're trying to solve 22:11:17 possible exception: if you're designing it to be used by other people 22:12:17 MDude, that's interesting but I can't understan how? 22:12:21 So it's "If (A), do [function] with variables (B, C, D,... etc.)." 22:12:51 And then inside the function, you only have access to the variables passed to it. 22:13:13 "for division, you multiply the list by the number you want to divide by, then cut the product down to the size of the original list, and then undo the multiplication" 22:13:40 So you can't make a recursive function unless it's parametric, allowing each iteration to have at least one variable less than the one calling it. 22:17:25 I should just make diagrams, or implement the language. 22:30:21 -!- AndoDaan_ has joined. 22:30:26 -!- AndoDaan has quit (Ping timeout: 258 seconds). 22:32:51 -!- AndoDaan_ has changed nick to AndoDaan. 22:36:40 -!- oerjan has joined. 22:54:09 -!- Sprocklem has quit (Ping timeout: 244 seconds). 22:54:41 -!- ais523 has quit. 22:56:22 -!- Sprocklem has joined. 22:56:58 -!- AnotherTest has quit (Ping timeout: 264 seconds). 23:02:43 -!- dTSCode has quit (Ping timeout: 244 seconds). 23:03:51 -!- kcm1700 has quit (Remote host closed the connection). 23:11:11 -!- kcm1700 has joined. 23:14:50 @messages- 23:14:50 int-e said 1h 6m 23s ago: Oh I didn't realize that golf.shinh.org allows omitting several trailing newlines... 23:14:51 -!- Vorpal_ has changed nick to Vorpal. 23:18:42 int-e: well i noticed how it always leaves off the final newline when displaying output, so it seemed logical to check if that happened for any number... 23:19:10 maybe i was inspired by HackEgo, which does that same thing 23:19:30 *the 23:21:29 oh, i didn't remember i actually did manage to use pattern guards in that one 23:21:41 ACHIEVEMENT UNLOCKED 23:27:02 -!- zzo38 has joined. 23:27:32 oh and that's where you used that "where" that i was hinting that you might improve with pattern guards, funny how it tied 23:41:37 How many bits does a process ID have? 23:43:17 zzo38: 15 23:43:34 OK 23:43:49 posix seems to just say pid_t is a signed integer 23:44:05 zzo38: well, that's typical range, don't take that a portably true everywhere 23:44:58 The clock sequence in a UUID is only 14-bits long though. 23:46:01 oh: Under Linux, the maximum process ID is given by the pseudo-file /proc/sys/kernel/pid_max 23:46:33 and yeah 15 here 23:48:37 -!- boily has joined. 23:49:58 oerjan: as an idea of how to account where the "where": length "where" == length "cycle". 23:50:25 s/where/for/ 23:53:34 How do you send a message to IETF to tell them to add another UUID version? 23:53:37 oerjan: I'm saying that because they serve approximately the same purpose: making the mail body available to the worker loop multiple times. 23:54:01 hm 23:54:07 Someone told me that a missile address is 48-bits long, so that fits in the node field. 23:54:29 However if a process ID is 15-bits long then it is one bit too long for the clock sequence field. 23:55:47 int-e: ah right, that's the part which only works because anagolf ignores trailing newlines _and_ the last @i is only followed by newlines 23:56:38 oerjan: yeah. 23:57:07 oerjan: I discarded the "cycle" idea because I didn't expect that to work ... lucky to have tied :) 23:57:30 so now I can claim that my solution is better because it cheats less. 23:58:30 (and once more it seems to be hard to combine any ideas to produce a smaller one) 23:58:55 solution, that is.