←2014-11-08 2014-11-09 2014-11-10→ ↑2014 ↑all
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 <zzo38> 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 <nys> swipe tongue across roof of mouth to dismiss notification
00:39:10 <boily> the concept of a nothing-held computer is interesting. augmented reality, or holographic projection?
00:46:15 <oerjan> just have a projection from those mind-control satellites
00:47:56 <shachaf> "Unfortunately, there's a radio connected to my brain"
01:03:49 -!- Phantom_Hoover has quit (Remote host closed the connection).
01:04:14 <HackEgo> [wiki] [[Subleq]] M http://esolangs.org/w/index.php?diff=40814&oldid=40787 * Oerjan * (-1) /* Basic */ tpyo
01:11:51 <HackEgo> [wiki] [[CA-1]] M http://esolangs.org/w/index.php?diff=40815&oldid=40792 * Oerjan * (-3) fix format, grm
01:14:28 <HackEgo> [wiki] [[Replace]] M http://esolangs.org/w/index.php?diff=40816&oldid=40790 * Oerjan * (+13) fmt, links
01:18:29 <HackEgo> [wiki] [[Brainfuck]] http://esolangs.org/w/index.php?diff=40817&oldid=40798 * Oerjan * (+14) sp, no
01:25:28 <HackEgo> [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 <zzo38> 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 <shachaf> what's with prescriptivists telling me not to use the word "trinary"
03:47:04 -!- nys has quit (Quit: quit).
03:55:55 <zzo38> I don't know why?
04:03:03 <Gregor> Maybe it's Latin/Greek pedantry?
06:24:20 <zzo38> 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 <zzo38> How to easily skip past a bzip2 stream without attempting to decompress it?
07:05:16 <FreeFull> By figuring out its length somehow
07:06:23 -!- DTSCode has joined.
07:06:38 <zzo38> 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 <zzo38> 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 <centrinia> 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 <mroman> blsq ) %square={^^?*}9%square!
08:24:03 <mroman> 81
08:24:04 <mroman> yay
08:37:13 -!- bb010g has quit (Quit: Connection closed for inactivity).
08:42:31 <zzo38> centrinia: I do have the program in my computer already
08:43:20 <centrinia> So look at the source code.
08:54:51 <mroman> @type groupBy
08:54:52 <lambdabot> (a -> a -> Bool) -> [a] -> [[a]]
08:56:51 <fizzie> @hoogle Eq b => (a -> b) -> [a] -> [[a]]
08:56:51 <lambdabot> GHC.Exts groupWith :: Ord b => (a -> b) -> [a] -> [[a]]
08:56:51 <lambdabot> GHC.Exts sortWith :: Ord b => (a -> b) -> [a] -> [a]
08:56:51 <lambdabot> Prelude dropWhile :: (a -> Bool) -> [a] -> [a]
08:57:46 <fizzie> I guess groupWith f == groupBy ((==) `on` f) or something.
08:58:07 <fizzie> Er, s/==/=/
08:58:16 <mroman> wth is wrong with groupBy
08:58:23 <myname> wtf is "on"
08:58:35 <fizzie> @type on
08:58:36 <lambdabot> (b -> b -> c) -> (a -> b) -> a -> a -> c
08:58:45 <mroman> > groupBy (\c -> c % 2 == 0) [1,2,4,3,5,6,8,10,1]
08:58:46 <lambdabot> Couldn't match expected type ‘a -> GHC.Types.Bool’
08:58:46 <lambdabot> with actual type ‘GHC.Types.Bool’
08:58:46 <lambdabot> Relevant bindings include c :: a (bound at <interactive>:1:11)
08:59:10 <mroman> oh
08:59:11 <mroman> right
08:59:43 <mroman> Is there a version of group that allows to do that?
08:59:50 <mroman> groupBy (\c -> c % 2 == 0)
09:00:14 <mroman> should produce [[1],[2,4],[3,5],[6,8,10],1] actually
09:00:31 <mroman> @type groupWith
09:00:32 <lambdabot> Not in scope: ‘groupWith’
09:00:53 <fizzie> > groupBy ((==) `on` (%2)) [1,2,4,3,5,6,8,10,1]
09:00:55 <lambdabot> [[1],[2],[4],[3],[5],[6],[8],[10],[1]]
09:01:01 <fizzie> Aw.
09:01:14 <myname> *slowclap*
09:01:19 <fizzie> > groupBy ((==) `on` (`mod` 2)) [1,2,4,3,5,6,8,10,1]
09:01:21 <lambdabot> [[1],[2,4],[3,5],[6,8,10],[1]]
09:01:36 <fizzie> You confused me with your use of %, I blame that.
09:02:20 <myname> awesome
09:02:51 <fizzie> Oh, and you're not you.
09:03:06 <fizzie> (I thought it was still mroman speaking.)
09:03:19 <mroman> hu
09:03:23 <mroman> what's % then :D
09:03:27 <mroman> @src (%)
09:03:27 <lambdabot> x % y = reduce (x * signum y) (abs y)
09:03:31 <mroman> oh
09:03:33 <mroman> I see
09:03:59 <myname> you do?
09:04:33 <fizzie> > 16%6
09:04:35 <lambdabot> 8 % 3
09:04:44 <fizzie> It's that thing for those.
09:05:00 <myname> nice
09:05:16 <mroman> @hoogle on
09:05:16 <lambdabot> Data.Function on :: (b -> b -> c) -> (a -> b) -> a -> a -> c
09:05:16 <lambdabot> Control.Exception.Base onException :: IO a -> IO b -> IO a
09:05:16 <lambdabot> Control.Exception onException :: IO a -> IO b -> IO a
09:06:17 <fizzie> > 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 <lambdabot> [[1],[2,4],[3,5],[6,8,10],[1]]
09:07:51 <mroman> blsq ) {1 2 4 3 5 6 8 10 1}{2dv}gB
09:07:52 <mroman> {{1} {2 4} {3 5} {6 8 10} {1}}
09:07:54 <mroman> there we go :)
09:15:28 <mroman> http://codepad.org/qqf0pbRH
09:15:34 <mroman> ^- the new Burlesque :D
09:21:39 <mroman> fizzie: I'm familiar with the concept of `on` ;)
09:23:13 <fizzie> Yes, I mixed names all the way up there too.
09:28:25 <mroman> btw: Do you have some ideas how to make parsing practical in a stack-based language?
09:29:19 <zzo38> 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 <ais523> 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 <mroman> hm.
09:57:31 <ais523> 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 <ais523> dip in Underload is ~a*^
09:59:08 <mroman> "dip"?
10:01:45 <ais523> basically, "run the given code, using the tail of the stack as the stack"
10:02:03 <ais523> i.e. it basically "hides" the top stack element while running some code, and puts it back afterwards
10:02:20 <ais523> ^ul (a)(b)(c)(d)(e)SSSSS
10:02:21 <fungot> edcba
10:02:23 <ais523> ^ul (a)(b)(c)(d)(e)~SSSSS
10:02:24 <fungot> decba
10:02:29 <ais523> ^ul (a)(b)(c)(d)(e)(~)~a*^SSSSS
10:02:29 <fungot> ecdba
10:02:42 <ais523> that should give you a good idea of how dip works
10:03:13 <ais523> 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 <ais523> (the name "dip" comes from Joy)
10:03:31 <ais523> and ofc you can nest dips indefinitely
10:03:39 <ais523> ^ul (a)(b)(c)(d)(e)((~)~a*^)~a*^SSSSS
10:03:39 <fungot> edbca
10:11:58 <b_jonas> ais523: tha sounds like a strange operation. do you temporarily put the hidden element to the separate return stack?
10:12:36 <ais523> 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 <ais523> 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 <b_jonas> ah
10:13:35 <b_jonas> sure, the program stack can contain arbitrary data in postscript too, so that makes sense
10:14:43 <fizzie> I went to look for the Factor 'dip', but it's just a primitive.
10:14:57 <fizzie> Well, there's a definition -- : dip swap [ call ] dip ;
10:15:08 <fizzie> But it's a primitive when preceded by a literal quotation.
10:15:42 <ais523> wait, is it defined in terms of itself?
10:15:53 <fizzie> No, it's defined in terms of the primitive.
10:16:02 <ais523> in terms of a special case of itself, then
10:16:05 <ais523> right
10:16:05 <fizzie> Yes.
10:16:16 <fizzie> 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 <ais523> originally I was planning to have a separate stack for working in Overload
10:16:35 <ais523> thought I might need one in Underlambda too, but Underload is more elegant than I expected
10:16:50 <ais523> ~a*^ is a really elegant and neat definition, only four characters!
10:20:40 <fizzie> `forth 1 2 3 4 s" swap" rot >r evaluate r> ~~
10:20:41 <HackEgo> ​ \ *somewhere*:-1:<4> 1 3 2 4
10:20:45 <fizzie> Not quite as elegant.
10:21:09 <ais523> where is Forth storing the data?
10:21:19 <fizzie> The return stack, with >r and r>.
10:22:10 <ais523> 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 <ais523> just like storing local variables on the stack in C
10:23:29 <fizzie> 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 <ais523> 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 <fizzie> `forth : f 1 2 3 4 c" swap" swap >r count evaluate r> ; f ~~ ( alternatively )
10:25:44 <HackEgo> ​ \ *somewhere*:-1:<4> 1 3 2 4
10:26:01 <fizzie> For some reason s" ..." is okay in interpreter mode, but c" ..." is a compile-only word.
10:28:06 <ais523> hmm, I wonder how easy it is to write an Underload interpreter using Forth techniques (or in Forth directly)
10:29:21 <b_jonas> depends. do you want garbage collection?
10:29:37 <fizzie> `forth 1 2 3 4 ' swap swap >r execute r> ~~ ( a lot more elegant but only for a single word )
10:29:37 <HackEgo> ​ \ *somewhere*:-1:<4> 1 3 2 4
10:30:19 <fizzie> "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 <fizzie> Oh, gforth (I don't know if it's in ANS) has anonymous definitions.
10:31:43 <fizzie> `forth 1 2 3 4 :noname rot swap ; swap >r execute r> ~~
10:31:44 <HackEgo> ​ \ *somewhere*:-1:<4> 2 1 3 4
10:32:48 <fizzie> V. fancy.
10:45:08 -!- quintopia has quit (Remote host closed the connection).
11:01:36 <b_jonas> fungot, run the interpretation semantics denoted by the xt put on stack by ' swap.
11:01:36 <fungot> 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 <mroman> I fnorded a riddle once.
11:04:53 <b_jonas> 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 <fungot> 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 <b_jonas> carrots, fungot?
11:15:26 <fungot> 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 <b_jonas> 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 <Taneb> b_jonas, Mail Merge Times?
12:02:12 <b_jonas> yeah
12:06:13 <Taneb> What is that?
12:13:54 <Melvar> ( Z
12:13:54 <idris-bot> 0 : Nat
12:14:52 -!- oerjan has joined.
12:21:11 <Taneb> 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 <oerjan> @tell shachaf <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 <lambdabot> Consider it noted.
13:49:26 -!- shikhout has joined.
13:52:40 -!- shikhin has quit (Ping timeout: 265 seconds).
13:52:45 <oerjan> <fizzie> I guess groupWith f == groupBy ((==) `on` f) or something. <-- it's implemented a bit more efficiently for expensive functions, i think
13:55:35 <oerjan> fizzie: oh wait, it's actually sorting first, so not the same as groupBy ((==) `on` f) at all
13:57:03 <oerjan> 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 <fizzie> I didn't know it sorts first.
14:00:42 <oerjan> neither did i, but i just checked the code
14:00:54 <fizzie> The documentation does say.
14:01:03 <fizzie> "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 <fizzie> 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 <oerjan> well i had vaguely thought that it _constructed_ the tuple list internally, but it doesn't.
14:03:08 <oerjan> actually groupWith without sorting wouldn't need that.
14:03:27 <oerjan> it can just pass the last f x value recursively
14:03:46 <oerjan> sortWith would need to construct tuples, though
14:03:56 <oerjan> (to avoid f reevaluation)
14:04:02 <fizzie> `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 <HackEgo> ​[(1, [1]), (0, [2, 4]), (1, [3, 5]), (0, [6, 8, 10]), (1, [1])]
14:05:39 <fizzie> Silly amount of list()s to convert all those generator objects to something that print nicely.
14:05:57 <fizzie> `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 <HackEgo> ​[(1, <itertools._grouper object at 0x4013ec50>), (0, <itertools._grouper object at 0x4013ec90>), (1, <itertools._grouper object at 0x4013ecd0>), (0, <itertools._grouper object at 0x4013ed10>), (1, <itertools._grouper object at 0x4013ed50>)]
14:06:07 <fizzie> `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 <HackEgo> ​<itertools.groupby object at 0x4014b680>
14:06:29 -!- blsqbot2 has joined.
14:06:34 <mroman> !blsq {1 2 4 3 5 6 8 10}{2dv}gB
14:06:34 <blsqbot> ERROR: Unknown command: (gB)!
14:06:43 <mroman> !blsQ {1 2 4 3 5 6 8 10}{2dv}gB
14:06:43 <blsqbot2> {{1} {2 4} {3 5} {6 8 10}}
14:06:48 <b_jonas> hi, mroman
14:06:54 <mroman> hey
14:07:10 <mroman> !blsQ %var=5 %var?
14:07:10 <blsqbot2> 5
14:07:38 <mroman> !blsQ %deepReverse=q)<- {{1 2}} %deepReverse!
14:07:38 <blsqbot2> )
14:07:46 <mroman> !blsQ %deepReverse={)<-} {{1 2}} %deepReverse!
14:07:46 <blsqbot2> {{2 1}}
14:20:08 -!- blsqbot2 has quit (Read error: Connection reset by peer).
14:40:59 <nyuszika7h> Taneb: I read that as [Mail Merge] [times out]
14:42:29 <fizzie> I'm pretty sure that's the intended meaning.
14:42:42 <nyuszika7h> yeah me too
14:43:07 <ais523> why don't you mail out some merge times?
14:43:42 <nyuszika7h> haha
14:44:42 <Jafet> 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 <HackEgo> [wiki] [[Brainfuck algorithms]] http://esolangs.org/w/index.php?diff=40819&oldid=40806 * YoYoYonnY * (-124)
15:34:37 <FreeFull> !blsQ %deepReverse={)<-} {{1 2} {3 4}} %deepReverse!
15:43:41 -!- boily has quit (Quit: ISOCELES CHICKEN).
15:51:02 <oerjan> magnus!
16:01:51 -!- MDream has changed nick to MDude.
16:30:01 -!- blsqbot2 has joined.
16:30:12 <mroman> !blsQ %deepReverse={)<-} {{1 2} {3 4}} %deepReverse!
16:30:13 <blsqbot2> {{2 1} {4 3}}
16:30:35 <mroman> !blsQ |[1 2 3.+.+]|
16:30:35 <blsqbot2> {6}
16:30:44 <mroman> !blsQ |[1 2 3.+.+^^?*]|
16:30:45 <blsqbot2> {36}
16:30:51 <mroman> !blsQ |[1 2 3.+.+y^^?*Y]|
16:30:51 <blsqbot2> {6 ^^ ?*}
16:31:06 <mroman> !blsQ |[1 2 3.+.+y^^?*Y]|s0"0"ev
16:31:07 <blsqbot2> ERROR: Unknown command: (ev)!
16:31:12 <mroman> hm
16:31:40 <mroman> !blsQ |[1 2 3.+.+y^^?*Y]|s0"0"gve!
16:31:41 <blsqbot2> 36
16:31:54 <mroman> oh yeah
16:34:04 -!- drdanmaku has joined.
16:34:43 <mroman> !blsQ %data={1 2 3} |[%data?++]|
16:34:43 <blsqbot2> {6}
16:35:11 <mroman> !blsQ %data={10ro} |[%data!++]|
16:35:12 <blsqbot2> {55}
16:35:35 <mroman> !blsQ %q={%q!}%q!
16:35:36 <blsqbot2> Ain't nobody got time fo' dat!
16:38:44 <mroman> !blsQ %data=5 "data"Gv
16:38:44 <blsqbot2> ERROR: Unknown command: (Gv)!
16:38:46 <mroman> !blsQ %data=5 "data"gv
16:38:47 <blsqbot2> 5
16:50:33 -!- blsqbot2 has quit (Ping timeout: 265 seconds).
16:59:30 <HackEgo> [wiki] [[Brainfuck algorithms]] http://esolangs.org/w/index.php?diff=40820&oldid=40819 * Rdebath * (+906) Input Number
17:00:10 <HackEgo> [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 <b_jonas> ais523: oh no! it's multiplying
19:12:24 <b_jonas> ais523: TomPN has written a page about another language
19:12:38 <ais523> is it just as bad?
19:12:46 <b_jonas> dunno, I haven't looked yet
19:12:52 <b_jonas> want to see what he did with Musical Notes first
19:12:54 <ais523> ah right, I saw that come up in the RC feed, but didn't notice the author
19:13:02 <ais523> and the preview looked reasonable
19:13:26 <b_jonas> Musical notes still says "loops cannot be nested"
19:14:56 <ais523> 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 <ais523> oh, and loops /still/ don't nest (in Dimensions, that is)
19:15:48 <ais523> that said, the non-nestting version of Dimensions loops may actually be TC
19:15:50 <ais523> *nesting
19:15:59 <ais523> because each ] matches the most recently arriving [, which may be enough power
19:19:49 <b_jonas> 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 <ais523> instructions are still completely linear
19:20:18 <ais523> (note the unadorned "previous")
19:20:35 <ais523> 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 <b_jonas> yeah...
19:20:54 <ais523> 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 <b_jonas> Should we introduce the rule that you can create a new language only if you have ascended a previously existing language?
19:23:25 <nys> i say we burn him
19:23:35 <b_jonas> nys: no, we have to measure him to a duck first5
19:23:54 <ais523> <b_jonas> 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 <nys> touch
19:24:04 <b_jonas> ais523: no
19:24:09 <ais523> I guess you could define NetHack as a programming language, I've ascended that
19:24:17 <ais523> and am OK at defining arbitrary things to be programming languages
19:24:32 <ais523> actually I'd love to make NetHack 4 TC, but can't figure out how
19:24:43 <centrinia> HTML is a programming language!
19:24:48 <b_jonas> ais523: isn't it already TC?
19:24:50 <ais523> like, something involving rolling boulder traps dropping things between levels
19:25:01 <ais523> b_jonas: no infinite storage, and it's doubtful you can even construct a loop
19:25:10 <b_jonas> there is infinite storage in objects
19:25:37 <b_jonas> including nested containers
19:25:51 <b_jonas> I mean, it's probably not really infinite because you run out of address space eventually,
19:25:57 <b_jonas> but you probably don't want to change that, right?
19:27:18 <nys> settle for turing complete with fine print
19:28:11 <ais523> b_jonas: the problem is the complete lack of comoutation
19:28:13 <ais523> *computation
19:28:13 <b_jonas> 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 <ais523> you can't have one thing causing another thing to happen, directly
19:28:29 <ais523> only possibility I can think of is the monster AI
19:28:34 <b_jonas> yeah
19:28:36 <ais523> which has some Deadfish-like loopholes
19:28:43 <ais523> (have you read track.c, by the way?)
19:28:51 <ais523> (it's short, and hilariously buggy)
19:28:56 <b_jonas> we probably need some more special stuff for computation
19:29:05 <b_jonas> no, I haven't read track.c and I don't plan to either
19:29:15 <b_jonas> if I want to read the monster AI, I read muse.c, that's more sensible
19:29:36 <b_jonas> muse.c both determines the starting inventory of items and what items monsters will use and how they use them
19:29:57 <ais523> track.c determines how the monster tries to chase down the player
19:30:00 <b_jonas> that's how http://trac.nethack4.org/ticket/710 came up
19:30:02 <ais523> it is full of incorrect assuumptions
19:32:34 <b_jonas> 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 <ais523> I'd like the player to be able to set up Dwarf Fortress-like contraptions
19:33:47 <b_jonas> it doesn't really help computation, but I was thikning of a scroll of duplicate item
19:33:56 <b_jonas> (or a scroll effect, in any case)
19:34:08 -!- conehead has quit (Excess Flood).
19:34:30 <b_jonas> 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 <b_jonas> I should ticket that if I haven't yet
19:39:19 <shachaf> @messages-loud
19:39:19 <lambdabot> oerjan said 5h 52m 34s ago: <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
19:39:48 <shachaf> oerjan: good thing i'm not talking in latin hth
19:40:30 <ais523> let's annoy everyone by calling it "threenary"
19:42:22 <shachaf> 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 <b_jonas> ticketed it
20:02:09 <olsner> hm, what should trinary really be called then?
20:02:37 <b_jonas> olsner: base three.
20:02:50 <ais523> "ternary" is something I see quite a lot
20:03:05 <b_jonas> yeah, "ternary" is the usual name, but why bother, "base three" is clear enough
20:04:14 <shachaf> Why bother with "binary"?
20:05:04 <b_jonas> binary and hexadecimal are common bases, but nobody designs ternary computers anymore
20:05:20 <b_jonas> if you make an esolang with base 3 operations, like trintercal, then sure, call it ternary
20:06:12 <shachaf> surely you mean terntercal!!
20:06:27 <shachaf> just like a terangle
20:06:31 <b_jonas> threentercal
20:07:09 <ais523> TriINTERCAL is the official name, I believe
20:07:17 <b_jonas> ok
20:07:55 <b_jonas> what's the official name for the base 4, base 5, base 6, base 7 versions?
20:08:31 <ais523> also TriINTERCAL
20:08:48 <ais523> (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 <vanila> hi
20:24:37 <ais523> hi
20:25:22 -!- AndoDaan has joined.
20:25:38 <vanila> any ideas for simple VMs that could be used for targets for compression
20:25:46 <vanila> the first one is just emit char + backrefs
20:25:53 <ais523> what's being compressed here?
20:26:10 -!- Patashu has quit (Ping timeout: 260 seconds).
20:26:14 <vanila> any binary file - of course it will only compress some of them
20:26:23 <ais523> oh, you mean "any ideas for decompression algorithms, that I could invent matching compression algorithms for?"
20:26:39 <vanila> yeah, especially focused on making simple decompression VMs
20:26:43 <ais523> 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 <vanila> what sort of thing was it?
20:26:54 <ais523> it beat bzip2 but was worse than lzma, so I didn't continue using it
20:27:07 <b_jonas> vanila: are you compressing video? audio? text? they call for different decompression algorithms.
20:27:21 <ais523> and basically, you could define a symbol as a single letter, or recursively in terms of other symbols
20:27:32 <ais523> and the last symbol defined was the entire program
20:27:54 <vanila> straight line grammar?
20:28:01 <ais523> e.g. "aabaab" could be encoded as (in pseudocode, the actual compression was binary) "X=aa; Y=Xb; Z=YY"
20:28:10 <vanila> I see! I thoughht this was a really good approach
20:28:14 <vanila> I considered adding parameters
20:28:26 <vanila> e.g. tag(T,B) = <T>B</T>
20:28:32 <vanila> could be used to compress HTML maybe
20:28:33 <b_jonas> ais523: that sounds sort of like a compression with backreferences
20:28:45 <ais523> and then that in turn was compressed by referring to symbols using numbers depending on how recently they'd been used
20:29:16 <vanila> i see, a huffman like entropy based compression is good for post processing
20:29:16 <ais523> now, you have /huge/ scope for encoding optimizations, e.g. you can reorder symbol definitions to make the numbers smaller
20:29:32 <b_jonas> oh look, Mail Merge is now in post mortem
20:29:36 <ais523> the numbers themselves were "Huffman" coded, but with a fixed table based on the frequencies they normally showed up at
20:29:36 <b_jonas> let me look what the people did
20:31:39 <b_jonas> wow, nice! and this ruby solution doesn't even hard-code anything about this particular input instance
20:32:34 <ais523> 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 <b_jonas> what does the 0/ do in that?
20:33:29 <vanila> thats ok but thanks :)
20:33:34 <b_jonas> um, in the winner perl solution I mean
20:33:36 <ais523> fwiw, even if you use only minimal compression on the numbers, it still beats gzip, which surprised me
20:33:53 <b_jonas> oh, I see
20:33:57 <b_jonas> the 0/ quits at the end
20:33:58 <b_jonas> wow
20:34:01 <vanila> I think that grammar based compression could be really really powerful yeah
20:34:10 <b_jonas> nice trick
20:34:14 <vanila> but so hard to actually find the structure in text
20:34:22 <vanila> it's like parsing but you don't even know the AST yet
20:34:39 <zzo38> Actually I also have a decompression algorithm that I need a compressor for, too.
20:35:04 <zzo38> (Kind of)
20:35:07 <b_jonas> zzo38: go on
20:35:37 <zzo38> OK just a minute
20:35:47 <b_jonas> oh damn!
20:35:58 <b_jonas> how did I not notice that s///ger while doesn't need the spae
20:36:01 <ais523> 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 <b_jonas> that cost me a byte
20:36:35 <vanila> http://www.sequitur.info/ this has a linera time algorithm (not space though)
20:36:40 <vanila> and it's meant to be quite good
20:36:43 -!- centrinia has quit (Ping timeout: 244 seconds).
20:36:54 <vanila> but it targets quite restricted vm
20:37:08 <ais523> vanila: linear time implies linear space unless you're doing something like using the address space as a hash table
20:37:19 <ais523> in which case, it takes non-linear time to zero the memory in advance
20:37:22 <zzo38> The decompressor is part of the program http://zzo38computer.org/zmachine/interp/zorkmid.zip
20:37:33 <b_jonas> I'm not a professional golfer but I should have noticed that
20:37:36 <vanila> oh weird :S I guess they lie or I don't understand something
20:38:16 <zzo38> Look at the zprint() function.
20:38:32 <vanila> If you made a compression algorithm you could call it zzip38
20:38:37 <zzo38> I have already a way to encode a single string and ignoring the frequent words table.
20:39:28 <zzo38> However, I have a collection of strings, and want to create a frequent words table for it.
20:39:56 <elliott> winzzo38
20:40:33 <b_jonas> apparently teebee used a different approach for his perl solution: no s///ger, instead printf s//%s/gr
20:40:36 <b_jonas> nice
20:41:26 <zzo38> (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 <ais523> is it just me who replaces all the noneliminatable spaces in golfing submissions with unary +, because it looks linenoisier that way?
20:41:41 <zzo38> (Calls to warn() are also errors.)
20:42:10 <b_jonas> ais523: I think I sometimes do that
20:42:27 <b_jonas> ais523: commas work in some cases when pluses don't
20:44:46 <ais523> perl 6 has a unary concat, too
20:45:37 <b_jonas> 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 <b_jonas> hmm, maybe you can just put that into the pack
20:46:15 <b_jonas> let me try
20:46:22 <ais523> well, if you have the space /before/ the 0 too, you can enclose the 0 in parens
20:46:24 <zzo38> Do you understand my problem now?
20:46:39 <b_jonas> `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 <HackEgo> Just another Perl hacker,
20:46:41 <ais523> doesn't gold, but fewer spaces
20:46:52 <ais523> that trailing comma is so curious
20:47:02 <ais523> I wonder if there was a typo in an early JAPH, and everyone copied it
20:47:04 <b_jonas> ais523: one trick I used in that is to put one of the two newlines at an undelible space
20:47:37 <b_jonas> `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 <HackEgo> Too many arguments for unpack at -e line 1, near "])" \ Execution of -e aborted due to compilation errors.
20:47:43 <b_jonas> oh right, unpack, not pack
20:48:19 <b_jonas> ais523: so what would you do with the space after that zero? there's no space before it
20:48:26 <b_jonas> mind you, this isn't really golf
20:49:02 <ais523> oh, I was looking at the unobfuscated example
20:49:19 <ais523> what does pack 'b' do?
20:49:28 <b_jonas> `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 <HackEgo> Just another Perl hacker,
20:49:29 <ais523> there's a pack format for inserting zero bits
20:49:41 <b_jonas> ais523: no, all pack formats can output only bytes
20:49:47 <ais523> `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 <HackEgo> Invalid type 'z' in pack at -e line 1.
20:49:56 <ais523> `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 <HackEgo> 33333333333333333333333333.
20:50:03 <b_jonas> ais523: b* outupts a number of bits but pads that to whole bytes
20:50:25 <ais523> ah right, and you're relying on alignment properties somehow
20:50:47 <b_jonas> the... unobfuscated example? where?
20:50:54 <ais523> earlier on the page
20:51:04 <b_jonas> huh... that's just as obfuscated, but with a saner formattingh
20:51:14 <b_jonas> it's basically the same with more spaces and newlines
20:51:22 <b_jonas> maybe there's some other punctuation difference, but I don't think so
20:51:55 <ais523> oh, hmm, that 0 is an ASCII 0 (=48), rather than a binary 0
20:52:03 <ais523> so I can't replace it with x, which generates a byte's worth of zero bits
20:52:04 <b_jonas> oh yeah, there is, there's a prototype difference... wth does that do
20:52:28 <ais523> ah no, you're adding one bit's worth of zeroes?
20:52:31 <ais523> this is confusing -(
20:52:33 <ais523> * :-(
20:52:50 <b_jonas> ais523: yes, one bit.
20:52:56 -!- DTSCode has quit (Read error: Connection reset by peer).
20:53:11 <b_jonas> ais523: basically, it's storing a vector of GF(128) values in a string, one per byte,
20:53:27 <ais523> b_jonas: aha, well according to the pack docs, it just checks if the ASCII character is even or odd
20:53:40 <ais523> <b_jonas> `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 <b_jonas> 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 <ais523> `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 <HackEgo> Fb0.0.V
20:53:53 <ais523> hmm
20:54:02 <ais523> now what have I done wrong?
20:54:32 <b_jonas> dunno, it's a fragile japh,
20:54:47 <ais523> <b_jonas> `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 <ais523> `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 <HackEgo> Fb0.0.V
20:55:01 <ais523> oh, miscopied your perl-e
20:55:13 <ais523> `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 <HackEgo> Fb0.0.V
20:55:22 <ais523> OK this is silly
20:55:27 <ais523> how come, when I copy-and-paste your JAPH, it doesn't work for me?
20:56:04 <ais523> `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 <HackEgo> Too many arguments for unpack at -e line 1, near "])" \ Execution of -e aborted due to compilation errors.
20:56:27 <ais523> `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 <HackEgo> Fb0.0.V
20:56:35 <b_jonas> mind you, http://www.perlmonks.com/?node_id=581159 is more fragile. you can't modify it at all
20:56:52 <ais523> b_jonas: you post it again, if you can get it to work, change '0 .' to 'b.' and try again
20:57:17 <ais523> 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 <b_jonas> `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 <HackEgo> Just another Perl hacker,
20:57:36 <b_jonas> `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 <HackEgo> Just another Perl hacker,
20:57:40 <b_jonas> yeah, that works
20:57:43 <b_jonas> thanks
20:57:53 <ais523> how come, when I copy-and-paste your JAPH, it doesn't work?
20:57:55 <b_jonas> `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 <HackEgo> Just another Perl hacker,
20:58:03 <b_jonas> ais523: dunno, maybe you mispasted
20:58:08 <ais523> `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 <HackEgo> Fb0.0.V
20:58:24 <ais523> `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 <HackEgo> Fb0.0.V
20:58:29 <ais523> that's using both clipboards
20:58:34 <ais523> I'm going to look for differences in the log
20:59:17 <ais523> oh, oho
20:59:25 <ais523> `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 <HackEgo> Just another Perl hacker,
20:59:45 <ais523> apparently my client was interpreting the %O as a color code, I had to escape it
20:59:50 <b_jonas> ah!
21:00:02 <b_jonas> well,
21:00:14 <b_jonas> `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 <HackEgo> ​$* is no longer supported at (eval 1) line 1. \ Just another Perl hacker,
21:00:30 <b_jonas> be glad it's not this japh, this one basically can't be modified at all without breaking everything
21:00:36 <b_jonas> because it uses the whole string to compute the output
21:00:43 <b_jonas> except for the eval for part
21:00:44 -!- bb010g has joined.
21:00:48 <b_jonas> it's from http://www.perlmonks.com/?node_id=581159
21:01:01 <b_jonas> typo anything and it breaks
21:02:25 <b_jonas> `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 <HackEgo> Just another Perl hacker,
21:04:32 <ais523> `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 <HackEgo> Just another Perl hacker,
21:04:39 <ais523> I disagree
21:05:02 <b_jonas> yes, you can modify the part outside the string
21:06:20 <zzo38> 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 <ais523> 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 <ais523> to leave the spelling ambiguous
21:06:49 <ais523> 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 <ion> We have these things called quotation marks which let you write “Just another Perl hacker,” unambiguously.
21:10:57 <Lymia> What's the fun in that/
21:12:18 <ais523> ion: except it doesn't work
21:12:19 <zzo38> 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 <ais523> `perl -e print “Just another Perl hacker,”
21:12:27 <HackEgo> Unrecognized character \xE2; marked by <-- HERE after print <-- HERE near column 8 at -e line 1.
21:12:47 <ais523> `perl-e use utf8; print “Just another Perl hacker,”
21:12:48 <HackEgo> Unrecognized character \xE2; marked by <-- HERE after f8; print <-- HERE near column 17 at -e line 1.
21:13:05 <ais523> `perl -e use utf8; print “Just another Perl hacker,”
21:13:06 <HackEgo> Unrecognized character \xE2; marked by <-- HERE after f8; print <-- HERE near column 18 at -e line 1.
21:13:10 <ais523> hmm, weird
21:13:18 <ais523> maybe `perl is doing weird thing with encodings already
21:13:31 <Taneb> ais523, you had it coming by trying to run non-obfuscated Perl
21:13:55 -!- AnotherTest has joined.
21:14:01 <ais523> Taneb: no, I expected it to fail
21:14:09 <ais523> I just don't get why the error messages is the same in both cases
21:14:15 -!- serika has joined.
21:14:58 <ais523> `welcome serika
21:14:59 <HackEgo> serika: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/>. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
21:15:19 <serika> Hi!
21:15:20 -!- zzo38 has quit (Read error: Connection reset by peer).
21:17:08 <ais523> hi
21:17:33 <elliott> hi
21:17:39 <ion> hi
21:18:16 <AndoDaan> hi
21:19:58 <Taneb> hi
21:20:10 <AndoDaan> Taneb wins, i think
21:20:22 <Taneb> sweeeeeeeeeeeet
21:20:48 <AndoDaan> !blsq "hi"Q
21:20:48 <blsqbot> hi
21:20:56 <AndoDaan> nope it's blsqbot by a nose!
21:21:17 <ais523> ^ul (hi)S
21:21:18 <fungot> hi
21:21:50 <AndoDaan> dammit.
21:22:04 <ais523> there are plenty of other esolang bots
21:22:11 <ais523> but it has to be in an actual esolang to count
21:22:28 <b_jonas> [ hi
21:22:28 <j-bot> b_jonas: |value error: hi
21:22:31 <b_jonas> um
21:22:37 <b_jonas> [ t=.hi
21:22:37 <j-bot> b_jonas: |ok
21:22:40 <b_jonas> argh
21:22:49 <b_jonas> [ 'hi'
21:22:49 <j-bot> b_jonas: hi
21:22:51 <ais523> `! bf ++++++++++[->++++++++++<]>++++.+.
21:22:52 <HackEgo> hi
21:22:53 <ais523> like that
21:22:58 <AndoDaan> nice one.
21:23:13 <ais523> 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 <ais523> !bf8 ++[>+<+++++]>+.+.
21:23:44 <EgoBot> gh
21:23:49 <ais523> whoops
21:24:12 <ais523> !bf8 +[->-[<]>--]>-.+.
21:24:12 <EgoBot> hi
21:24:15 <ais523> there we go
21:24:20 <ais523> that was actually checking the wiki
21:24:29 <ais523> current shortest known hi
21:27:19 <elliott> wow, that's really short
21:28:44 -!- AndoDaan_ has joined.
21:29:15 <AndoDaan_> is there a way to prove some bf code is the shortest for a given task without an exhaustive search?
21:29:16 <DTSCode> hi
21:29:33 <ais523> AndoDaan_: in general, no
21:29:35 <b_jonas> AndoDaan_: no, and you can't prove even with an exhaustive search
21:29:38 <ais523> halting problem and all that
21:29:42 <b_jonas> at least for non-trivial tasks
21:29:43 <AndoDaan_> right.
21:29:46 <ais523> sometimes, the answer is yes in special cases
21:30:00 <b_jonas> 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 <b_jonas> and of course you probably have to assume a particular variant on what to allow (overflow, underflow, left from starting position)
21:31:14 <ais523> I said !bf8 explicitly for a reason :-)
21:31:37 <b_jonas> ais523: does that have an infinite tape both sides of the starting point?
21:31:40 <AndoDaan> hmm. I wrote a bf interpreter the other day, and so many option just for it's basic form...
21:31:43 <ais523> the wiki currently doesn't assume that left from starting position is legal, it adds extra > if necessary
21:31:51 <ais523> AndoDaan: right
21:31:58 <elliott> AndoDaan: see
21:32:02 <elliott> @google kolgomorov complexity
21:32:03 <lambdabot> http://en.wikipedia.org/wiki/Kolmogorov_complexity
21:32:03 <lambdabot> Title: Kolmogorov complexity - Wikipedia, the free encyclopedia
21:32:04 <ais523> hmm, did anything come of the Big BF Standardisation Vote?
21:32:48 <AndoDaan> i've read abpit kolgomorov a couple of times, interesting stuff.
21:32:50 <Bike> 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 <b_jonas> Bike: yep. that's what we were trying to say.
21:33:33 <vanila> you can write an search that prints out things it can't fully understand
21:33:48 <Bike> 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 <vanila> which you can then prove dont terminate or so manually or add extra features to the program
21:33:54 <Bike> tao said navier-stokes might be some turing garbage, too
21:34:05 <ais523> there is some limit below which an exhaustive search actually does work
21:34:15 <b_jonas> vanila: if you assume stuff like execution time within our lifetime, sure
21:34:17 <ais523> this may or may not be discoverable by exhaustive search
21:34:21 <vanila> since game of life is turing complete it's not hard to imagine navier stokes being too
21:34:32 <vanila> although it's really much more complex since it works on real number field
21:34:46 <vanila> (like just given that its automatically not computable, isn't it?)
21:34:47 <ais523> 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 <b_jonas> ais523: I'd guess it's quite short
21:35:08 <vanila> ais523, me too - I have an idea to find it
21:35:09 <ais523> working on reals doesn't /necessarily/ mean uncomputable, but doing anything nontrivial with them normally does
21:35:15 <Bike> vanila: no, lots of smooth operations on reals are computable
21:35:24 <vanila> Bike, oh ok interesting!
21:35:27 <Bike> it's not like you're asking whether water is moving exactly at 5 m/s, that would be impossible
21:35:30 <ais523> comparing them is particularly nasty
21:35:42 <vanila> ais523, can i PM you
21:35:50 <ais523> vanila: physically, yes
21:35:56 <elliott> I'm still interested in that too
21:36:00 <ais523> as for do I want you to PM me, that rather depends on what you're PMing me about
21:36:05 <elliott> I brought it up again recently
21:36:10 <vanila> finding short brainfuck programs
21:36:10 <ais523> if it's something that needs to be private, PM is fine
21:36:23 <ais523> if it's just "thing that would spam up the channel" but it's ontopic, the channel is better
21:36:44 <ais523> 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 <vanila> elliott, in what?
21:37:01 <elliott> vanila: in what?
21:37:02 <vanila> ok ill say it in -blah if anyone wants to hear
21:37:06 <vanila> <elliott> I'm still interested in that too
21:37:07 <elliott> oh
21:37:09 <elliott> the bf programs thing
21:37:12 <vanila> oh okay
21:37:22 <b_jonas> ais523: I achieved that with my bot that connects an emulated DOS machine to irc
21:37:45 <ais523> b_jonas: right, I remember that
21:37:51 <b_jonas> but I knew it's like that so I didn't even try to remember to bring it here
21:38:51 <b_jonas> s/remember to//
21:46:30 <FireFly> We have a -blah?
21:46:40 <elliott> we do very occasionally
21:46:49 <FireFly> Might as well idle there too
21:46:58 <Bike> i have no idea why short bf programs would not be a topic of discussion here
21:47:02 <ais523> nor do I
21:47:08 <ais523> the discussion isn't spammy enough to not hold here
21:47:17 <elliott> it's cosier
21:47:20 <FireFly> Sounds more on-topic than most discussion that takes place in here
21:47:24 <elliott> cozier? how does spelling work
21:47:24 <Bike> sinier
21:47:32 <FireFly> sinister?
21:48:13 <Bike> 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 <ais523> I think "cosier" is correct; at least, my spellchecker likes it
21:48:21 <Bike> cossackier
21:48:32 <ais523> Bike: the problem is, the existing constructions tend to be quite complex
21:48:41 <b_jonas> exactly. discuss short BF programs here unless that discussion would derail some more important discussion like one about nethack.
21:48:44 <ais523> basically because you have to embed the entire rules of the logic you're using in the program
21:48:58 <ais523> b_jonas: we already have #nethack4 for discussion about nethack, though
21:49:06 <Bike> i mean, something like "this program halts only if the goldbach conjecture is true", i can get that
21:49:23 <b_jonas> ais523: yeah, I know, I'm joined to like five nethack channels because people can't keep it together
21:49:36 <Bike> i guess making a program that halts only if the continuum hypothesis is true doesn't make much sense
21:49:55 <ais523> I'm currently in 8 NetHack channels, and parted #interhack (which would be the ninth) to make room for #esoteric-blah
21:50:03 <ais523> (I have a "only one screenful of channels" policy)
21:50:14 -!- DTSCode has changed nick to dTSCode.
21:50:27 <b_jonas> #esoteric #nethack4 #nethack #nethack-dev #devnull_nethack
21:50:39 <b_jonas> ais523: what does "one screenful" mean?
21:50:41 <Bike> #nethack-nethack, for discussion of implementing nethack in nethack
21:50:58 <vanila> "a program that can be proven to be impossible to prove the haltingness of"
21:51:01 <Bike> that reminds me, someone who is not a programmer linked to that nethack speedrun repo ais is in
21:51:04 <Bike> tripped me out
21:51:05 <ais523> Bike: that it's possible to fit all the tabs in the width of my screen, without scrolling
21:51:12 <Bike> wrong number
21:51:13 <vanila> you could write a proof checker for PA or so
21:51:15 <b_jonas> I see
21:51:20 <vanila> and diagonalize over it
21:51:23 <ais523> Bike: we think NetHack is sub-TC (and, in fact, unusable for programming)
21:51:26 <vanila> and then it would be impossible to prove that halts with PA
21:51:28 <ais523> but it's unclear /what/ the right channel for that is
21:51:31 <ais523> here or #nethack4, most likely
21:52:11 <Bike> 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 <int-e> Bike: The continuum hypothesis thing would amount to deriving an upper bound to counterexamples of the CH, I think.
21:52:29 <int-e> Bike: err
21:52:36 <Bike> i'm just thinking of it cos CH is independent of ZFC and all
21:52:42 <int-e> ignore this, I'll go hide under a stone.
21:52:43 <Bike> not that programs use ZFC or... something
21:52:49 <vanila> you couldn't use CH I think
21:52:56 <ais523> Bike: I normally don't focus on /who/ makes contributions
21:53:08 <ais523> the musical notes person made another language, and didn't spam it to the main page this time
21:53:11 <Bike> 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 <Bike> dumb question
21:53:25 <Bike> ais523: it was a talk page thing rather than a language, is probably why
21:53:30 <ais523> 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 <Bike> i have some esolang ideas but they'd be hard to describe sanely
21:53:35 <int-e> Bike: for some reason I was thinking of the Riemann Hypothesis, and I will not endeavour to find out why.
21:53:40 <Bike> heh.
21:53:45 <ais523> Bike: I was going to say "that's never stopped me"
21:53:48 <ais523> except, it actually has
21:53:58 <Bike> the language that must not be named
21:54:13 <b_jonas> 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 <Bike> 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 <ais523> 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 <ais523> gah, I hadn't been thinking about the issue for /months/
21:54:43 <ais523> and it's not something I want to think about right now
21:54:45 <Bike> uh, sorry i guess
21:54:47 <b_jonas> I think I'm probably not really an eso language _create_ type of guy
21:54:54 <b_jonas> I create other eso stuff
21:55:03 <b_jonas> or non-eso
21:55:17 <Bike> 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 <MDude> I'd like to make a reversible logic based thing.
21:55:39 <Bike> have you seen the crabputer
21:55:47 <Bike> that's not really related, i just want everyone to have seen the crabputer
21:56:04 <ais523> Bike: anyway, anything less complex than http://esolangs.org/wiki/Snowflake should be easy to describe by comparison
21:56:05 <b_jonas> what's that?
21:56:10 <b_jonas> Bike: linky?
21:56:14 <MDude> I'd rather try to make it non-esoteric, but it might end up as such regardless.
21:56:21 <Bike> http://arxiv.org/abs/1204.1749
21:56:25 <ais523> 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 <Bike> based on billiard ball computers which is how i thought of it
21:56:53 <int-e> real number just don't know when to stop
21:56:58 <int-e> *numbers
21:57:05 <Bike> 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 <ais523> 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 <b_jonas> Bike: crazy
21:57:30 <Bike> 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 <ais523> 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 <Bike> int-e: does alexandroff compactification constitute stopping
21:58:54 <b_jonas> what looks vaguely like brainfuck? befunge?
21:59:29 <Bike> the original (i think) paper on reversible computing is neat, btw, by landauer or whoever
21:59:35 <Bike> thermo~
21:59:47 <MDude> The idea I have is a language that's basically a way of describing a single huge reversible function.
22:00:02 <ais523> b_jonas: +[+[]-[]]
22:00:04 <ais523> that sort of thing
22:00:13 <ais523> it's mostly made of +-[] and the brackets match
22:00:21 <ais523> which makes it look like BF until you realise that it makes no sense as BF
22:00:35 <Bike> it's still a valid program innit
22:00:37 <Bike> if a boring one
22:01:04 <ais523> it's an infinite loop as BF
22:01:14 <ais523> !bfjoust snowflake +[+[]-[]]
22:01:16 <ais523> and a no-op as BF Joust
22:01:18 <zemhill> ais523.snowflake: points -30.67, score 3.72, rank 47/47
22:01:22 <EgoBot> ​Score for ais523_snowflake: 6.1
22:01:26 <MDude> So you have a few basic operations, an if statement, and the ability to call functions.
22:01:46 <b_jonas> 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 <b_jonas> the one that tried to pretend to be totalistic and Turing-complete, and pretend that lists and numbers are isomorphic
22:02:10 <ais523> b_jonas: I doubt any other language works quite like Snowflake
22:02:12 <b_jonas> dunno its name
22:02:17 <vanila> MDude, there are reversible programming languages - you can run them backwards and forwards
22:02:18 <ais523> most languages are not on a quest for self-perfection
22:02:21 <b_jonas> ais523: no, I just mean the +[+[]-[]] syntax
22:02:21 <int-e> Bike: I was thinking of individual numbers and their n-ary expansion.
22:02:26 <ais523> b_jonas: ah right
22:02:26 <MDude> I know.
22:02:47 <vanila> doesn't "if" destroy information
22:02:56 <MDude> Most of them have some kind of stack, though.
22:03:09 <int-e> Bike: or perhaps, rational approximations. just to clarify that rational numbers *are* nice. :P
22:03:29 <MDude> Rather than using a fixed set of memory addresses.
22:03:50 <vanila> it might not be turing complete if you restrict memory that much
22:04:02 <ais523> Snowflake's a good example of a reversible command set
22:04:09 <ais523> it had to be very 100% reversible because of how it works
22:04:21 <ais523> so loops and conditionals were implemented… oddly
22:04:44 <ais523> most operations can only be written reliably if you know, for certain, something that /isn't/ on top of the stack
22:04:53 <MDude> Oh, it won't be, unless you modify it to pretend it has an infinite repeating input structure.
22:04:57 <ais523> which is harder than it seems, as programs have to be quite good at editing their own source code
22:05:12 <MDude> Or infinitely repeating structure.
22:05:23 -!- Phantom_Hoover has joined.
22:06:28 <MDude> I'm going more for something that can be implimented as a digital signal processor, though.
22:08:26 <int-e> @tell oerjan Oh I didn't realize that golf.shinh.org allows omitting several trailing newlines...
22:08:27 <lambdabot> Consider it noted.
22:08:28 <MDude> So it'll likely be Harvard architecture, and thus unable to modify itself at all.
22:08:48 <FireFly> `js print(1)
22:08:50 <HackEgo> 1
22:09:03 <FireFly> `js print(+[+[]-[]]) // maybe it reminded you of JavaScript?
22:09:05 <HackEgo> 0
22:09:24 <FireFly> I don't think it's intended to be esoteric.
22:11:03 <MDude> vanila: That's the thing. "If" statements preserve reversability by locking out any change to the conditional variable while inside it.
22:11:05 <ais523> 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 <ais523> possible exception: if you're designing it to be used by other people
22:12:17 <vanila> MDude, that's interesting but I can't understan how?
22:12:21 <MDude> So it's "If (A), do [function] with variables (B, C, D,... etc.)."
22:12:51 <MDude> And then inside the function, you only have access to the variables passed to it.
22:13:13 <ais523> "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 <MDude> 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 <MDude> 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 <oerjan> @messages-
23:14:50 <lambdabot> 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 <oerjan> 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 <oerjan> maybe i was inspired by HackEgo, which does that same thing
23:19:30 <oerjan> *the
23:21:29 <oerjan> oh, i didn't remember i actually did manage to use pattern guards in that one
23:21:41 <oerjan> ACHIEVEMENT UNLOCKED
23:27:02 -!- zzo38 has joined.
23:27:32 <oerjan> 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 <zzo38> How many bits does a process ID have?
23:43:17 <b_jonas> zzo38: 15
23:43:34 <zzo38> OK
23:43:49 <Bike> posix seems to just say pid_t is a signed integer
23:44:05 <b_jonas> zzo38: well, that's typical range, don't take that a portably true everywhere
23:44:58 <zzo38> The clock sequence in a UUID is only 14-bits long though.
23:46:01 <Bike> oh: Under Linux, the maximum process ID is given by the pseudo-file /proc/sys/kernel/pid_max
23:46:33 <Bike> and yeah 15 here
23:48:37 -!- boily has joined.
23:49:58 <int-e> oerjan: as an idea of how to account where the "where": length "where" == length "cycle".
23:50:25 <int-e> s/where/for/
23:53:34 <zzo38> How do you send a message to IETF to tell them to add another UUID version?
23:53:37 <int-e> 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 <oerjan> hm
23:54:07 <zzo38> Someone told me that a missile address is 48-bits long, so that fits in the node field.
23:54:29 <zzo38> However if a process ID is 15-bits long then it is one bit too long for the clock sequence field.
23:55:47 <oerjan> 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 <int-e> oerjan: yeah.
23:57:07 <int-e> oerjan: I discarded the "cycle" idea because I didn't expect that to work ... lucky to have tied :)
23:57:30 <int-e> so now I can claim that my solution is better because it cheats less.
23:58:30 <int-e> (and once more it seems to be hard to combine any ideas to produce a smaller one)
23:58:55 <int-e> solution, that is.
←2014-11-08 2014-11-09 2014-11-10→ ↑2014 ↑all