00:00:27 <oerjan> oklopol: the trick to calculating (a+bi)/(c+di) is to multiply by (c-di)/(c-di)
00:01:01 <oklopol> i'd never have come up with that
00:01:21 <SimonRC> I though it was a standard trick
00:01:33 <oerjan> basically you want your denominator to become real, and any number times its conjugate is real
00:01:39 <oklopol> but since i've never done math, it's not something i actually use
00:07:07 -!- sebbu2 has quit ("@+").
00:11:57 <oerjan> bobbens: many BF interpreters have a # debugging command that does print the whole tape.
00:12:27 * oerjan is working through the logs rather slowly today
00:13:09 <bsmntbombdood> "Diagnostics consist of two letters"...that's helpful
00:13:28 -!- poiuy_qwert has quit.
00:14:00 <oerjan> bsmntbombdood: is that B? probably it was written for seriously memory starved machines
00:16:40 <oerjan> the NVG computer club actually has a machine emulating a pdp-10 with TOPS-20
00:17:14 <oerjan> probably faster than the original :)
00:20:06 <SimonRC> ISTR there was once a C compiler that had only on error message: ? and a line number.
00:20:47 <oerjan> GregorR: fire up EgoBot, please :)
00:21:17 -!- Asztal has joined.
00:21:53 <oerjan> or bsmntbombdood fire up bsmnt_bot with bf, please
00:22:23 -!- bsmnt_bot has joined.
00:23:12 * oerjan has forgot the script-loading command for bsmnt_bot
00:23:59 <SimonRC> Things get really weird when you get rid of absolute coordinate systems.
00:24:33 <bsmntbombdood> ~bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
00:24:39 <SimonRC> I am fiddling with a game ATM that only has relative coordinate systems.
00:24:56 <bsmntbombdood> i think it'll break the bot with an infinite loop though
00:25:00 <Asztal> ~bf >+++.++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++...
00:25:01 <lament> SimonRC: the difference isn't exactly huge.
00:25:03 <oerjan> SimonRC: postscript sort of works like that
00:25:47 <oerjan> bsmntbombdood: you still haven't got it to run bf in its own thread?
00:25:57 -!- cmeme has quit ("Client terminated by server").
00:26:01 <SimonRC> space is made of blocks, and a position is defined as a transformation and the number of the spacial block whose coordinate system it is relative to.
00:26:07 -!- cmeme has joined.
00:26:26 <SimonRC> with minimal fiddling, you get flips and rotations for free
00:26:52 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
00:27:04 -!- bsmnt_bot has joined.
00:28:10 <oerjan> SimonRC: what about relativistic transformations? (hard for multiplayer games, i guess)
00:29:02 <oerjan> i mean, with a single player that could be nearly as simple
00:29:10 <lament> is there a single-player game that does relativistic effects?
00:29:23 <lament> i've seen a simple simulator but it wasn't a game
00:29:31 <Asztal> I've only ever seen a relativistic renderer
00:29:34 <SimonRC> can anyone think of a good abbreviation for "normalise"?
00:29:47 <erider> !bf +++++[>+++++++++<-]>+++.
00:30:19 <erider> ~bf +++++[>+++++++++<-]>+++.
00:31:00 <oerjan> ~exec execfile("/bot/scripts/bf.py")
00:31:11 <erider> ~bf +++++[>+++++++++<-]>+++.
00:31:57 <erider> first cell should be 0
00:33:10 <erider> ~bf ++++++++++[>+++++++<-]>+++++.
00:34:14 <erider> ~bf ++++++++++[>++++++<-]>+++++.
00:36:02 <oerjan> there is a list of shortest way to get numbers at http://esoteric.voxelperfect.net/wiki/Brainfuck_constants (large page)
00:36:04 <erider> oerjan: how to I copy from one cell to the next
00:36:53 <oerjan> you need 3 cells, first move from one to the two others, then move back from one of the others
00:37:06 <SimonRC> e.g. [->+>+<<]>>[-<<+>>]<<
00:37:37 <SimonRC> it is actually not much worse than Forth
00:38:21 <oerjan> this must be one of those famous British understatements :D
00:39:20 <SimonRC> well, in Forth, *everything* gets destroyed when you use it, so you have to dup everything
00:39:43 <SimonRC> other aspects of BF are indeed worse than Forth
00:40:15 <SimonRC> though if your data is all small words, you can translate a forth program into BF quite well
00:40:39 <SimonRC> unless it uses recursion or something like that
00:42:08 <oerjan> actually recursion could work pretty well
00:42:45 <oerjan> er, well you would confuse the two forth stacks
00:42:52 <erider> ~bf ++++++++++[>++++++>++++++<<-]>+++++>+++++<.>.
00:43:11 <oerjan> it's screaming! stop this abuse!
00:46:47 -!- crathman has quit (Read error: 113 (No route to host)).
00:47:29 <Pikhq> Obviously what you want is "@ a;@ temp;cons65 a : temp;out a"
00:47:46 <Pikhq> "source ^stdcons.bfm;@ a;@ temp;cons65 a : temp;out a"
00:47:57 <Pikhq> Add another out a. -_-'
00:48:32 <Pikhq> ~bf >----[<+>----]<++..
00:49:14 <Pikhq> I think it wants a newline.
00:49:56 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
00:49:59 <oerjan> Pikhq seemed to assume the interpreter was wrapping
00:50:01 -!- bsmnt_bot has joined.
00:50:24 <Pikhq> Which is a natural assumption; it damned well *should* be.
00:50:30 <oerjan> it probably uses Python integers
00:50:32 <Pikhq> And if it were up to me, it would.
00:50:48 <Pikhq> It should probably add a %255 in there.
00:50:54 <lament> this might come as a surprise to many of you, but integers don't wrap.
00:51:29 <Asztal> unless in modulo arithmetic :|
00:51:46 -!- bsmnt_bot has quit (Remote closed the connection).
00:51:47 <Pikhq> Thus why I'm saying "add a %255".
00:51:54 <lament> Asztal: those things aren't called integers.
00:51:57 <oerjan> although i don't know if Python converts to bignums or throws an exception on overflow, or perhaps the size is just so big it didn't reach wrap yet
00:52:14 <Pikhq> SimonRC: Erm. Right.
00:52:33 <SimonRC> oerjan: ISTR Python goes to bignums
00:53:14 -!- bsmnt_bot has joined.
00:54:09 -!- bsmnt_bot has quit (Remote closed the connection).
00:54:22 -!- bsmnt_bot has joined.
00:54:48 <bsmntbombdood> ~bf +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++.
00:55:22 <Asztal> if the integers in BF wrap at 256, doesn't that hurt indirection? is indirection even possible in BF?
00:55:53 <bsmntbombdood> it seems the thread is not giving up it's time slot
00:55:55 <oerjan> you mean storing pointers?
00:56:31 <oerjan> oh so python only does cooperative threading?
00:56:58 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
00:56:59 <lament> Asztal: the type of brainfuck cells is not specified.
00:57:08 -!- bsmnt_bot has joined.
00:57:23 <oerjan> put a yield operation in the loop command
00:58:09 <oerjan> (whatever python calls yield)
00:58:44 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
00:58:53 -!- bsmnt_bot has joined.
00:59:50 <oerjan> you could do pointers in bf with variable width arrays
01:00:54 <oerjan> although that would seem to require shuffling things to store values
01:03:23 -!- bsmnt_bot has quit (Read error: 131 (Connection reset by peer)).
01:03:39 <oerjan> however, since moving along the tape (especially if you are searching for something so it cannot be optimized away) takes linear time, moving things at the same time may only imply a constant factor overhead
01:03:44 <Asztal> seems to me that it's difficult to execute a "move to position X" operation though, since you can only read the target cell from the current cell... once you move off it, you don't know where you're moving to any more
01:04:10 <Asztal> you'd have to shuffle things, as you said, which might corrupt things along the way
01:04:35 <oerjan> you would need to bring the destination pointer with you
01:04:50 <oerjan> i am sure it can be done, it's just inefficient
01:05:04 <oerjan> not destroying, swapping
01:05:50 <Pikhq> I believe the means of storing arrays involve storing array cells with 2 bytes. . .
01:06:09 <bsmntbombdood> bsmnt_bot has been quitting in IRCFileWrapper.write
01:06:42 <Asztal> oerjan: and to avoid shifting all the cells inbetween, you'd have to go back and swap them again each time you finish a swap, perhaps?
01:07:20 <Asztal> you could decrement the "position" value each time you swap, once it reaches zero, you're there. and you've probably wasted millions of cycles getting there :)
01:08:09 <oerjan> not really, because the swapping would not change the order of anything other than the record you are bringing with you.
01:08:29 <oerjan> indeed, i imagine all pointers being relative
01:09:19 <oerjan> wasting millions of cycles is a given in brainfuck
01:10:11 <Asztal> I imagine it starting off as: DabcdefghijkT (d=pointer, a->k are values, T=target cell), then
01:10:12 <Asztal> DabcdefghijkT, aDbcdefghijkT, abDcdefghijkT, abcDdefghijkT, ..., abcdefghijkD
01:10:43 <oerjan> yep, that's what i am thinking too
01:11:12 <Asztal> I was thinking of some way of swapping them back but it hurts my brain
01:11:43 <oerjan> well, D would have to contain a pointer backwards too if you want that.
01:12:42 <oerjan> all pointers in D would be adjusted as you go. or perhaps it is better to keep them absolute apart from "current position"
01:12:54 <bsmntbombdood> that would move n cells right where n is the number in the current cell
01:13:33 <oerjan> bsmntbombdood: that works as long as pointers are small enough for a single cell
01:13:53 <erider> are you guys interesting in adding another language to you guys toolbox?
01:14:26 <erider> http://charleschilders.com:9812/
01:17:06 <SimonRC> Factor has the same fuck-around-with-the-system attitude as smalltalk.
01:18:42 <bsmntbombdood> forth is fuck-around-with-the-system-shoot-your-head-off to the max
01:20:04 <erider> have a look at the rosette code
01:22:52 * erider thinks SimonRC is interested
01:24:33 <SimonRC> actually I was going "hmm" at something else.
01:43:07 <SimonRC> bsmntbombdood: you have a radio station?
01:43:37 <bsmntbombdood> s/my radio station/an internet radio station i listen to/
04:30:36 -!- clog has joined.
04:30:36 -!- clog has joined.
04:47:47 -!- boily has joined.
04:49:34 -!- EgoBot has joined.
04:51:49 <Pikhq> !pebble inline {What do you mean, you don't have PEBBLE support?}
04:51:54 <oerjan> i see a remaining problem with your string handling: what happens with \ on an empty string?
04:52:15 <boily> it returns -1, leaving the empty string there
04:52:27 <boily> the only way to suppress a string is through _
04:54:23 <oerjan> also what happens if you do ? ... [ ... | ! ... ]
04:54:33 <boily> uh... just a minute...
04:55:14 * Pikhq should probably add PEBBLE support to EgoBot, just as soon as I'm satisfied for a PEBBLE 1.0 release
04:56:22 <oerjan> or for that matter ? ... ? ! ... !
04:57:08 <boily> he isn't nuts, he's beets
04:57:47 <boily> about oerjan's first question: it works. i do not know how nor why, but it works.
04:58:05 <boily> C3?5[,*+563|!C-c1] prints "!!!"
04:58:18 <oerjan> actually i am more wondering about _what_ it does :)
04:58:30 * Pikhq wonders: how many people care about PEBBLE?
04:58:38 <erider> Pikhq: what is PEBBLE?
04:58:40 * Pikhq is thinking that it's somewhere on the order of '1'.
04:59:01 <Pikhq> erider: PEBBLE is a language and compiler I devised which is designed to efficiently compile to Brainfuck.
04:59:05 * boily scratches his head
04:59:24 <Pikhq> It's currently a whole lot more efficient with the C backend, though.
05:00:14 <Pikhq> http://pikhq.nonlogic.org/esoteric.html is the closet I've got for now. . . It dates back to before I changed the name, but does give a good summary of the language.
05:01:21 <boily> talking about brainfuck, i coded an interpreter for fun this morning (june 4th)
05:01:33 <Pikhq> I kind of need to update the documentation. . .
05:02:32 <Pikhq> BTW, that link is wrong. . . http://pikhq.nonlogic.org/pebble-1.0-preview.tar.bz2 contains the latest PEBBLE build that's tarred up, and svn://nonlogic.org/pikhq/pebble/trunk contains the latest and not guaranteed to work.
05:05:40 * erider is reading about a time long long ago
05:06:09 <oerjan> boily: the interpreter link is wrong, leading to a completely unrelated page
05:07:04 <oerjan> it also occurs to me that pastebin pages can probably be edited by anyone...
05:07:49 <boily> yeah, it's just a temporary place. as soon as my friend's server is up, i'll host it there
05:08:05 <oerjan> although you can still find the original, just as on wikis
05:09:29 <boily> i corrected the link
05:11:07 <Pikhq> erider: BTW, http://pikhq.nonlogic.org/pfuck-1.0.tar.bz2 or svn://nonlogic.org/pikhq/pfuck/trunk include something somewhat useful written in the language.
05:12:00 <erider> Pikhq: your version of the language
05:12:51 <Pikhq> erider: Uh, by definition, any version of the language will be my version, at this point, simply because it's *my* language entirely. . .
05:13:54 * erider is reading about brainf**k algorithms
05:14:12 <Pikhq> Well, oerjan helped a good deal earlier on. . . That was *before* I did the rewrite of the compiler, making it multiple passes. . .
05:14:24 <Pikhq> I believe his most notable contribution as of *now* is the stdcons.bfm file.
05:15:37 <oerjan> which i mostly automatically translated from [[Brainfuck constants]] on the wiki.
05:25:56 <oerjan> oops. boily's ? ... [ ... | ! ... ] test was _not_ jumping
05:27:03 <oerjan> the interesting cases are when you _do_ jump into or out of a [ ... ]
05:27:26 * boily ponders on this particular problem...
05:27:33 <oerjan> if ? doesn't jump then it acts as a nop
05:29:07 <oerjan> i think it will be even more crazy if ? is the argument of something else
05:29:47 <oerjan> in fact that might be crazy even without [ ... ], if that something else requires more arguments
05:31:59 <oerjan> congratulations, i think you have made a language more twisted than you intended :)
05:35:38 <oerjan> i also think comments and strings containing ! should be used with care.
05:37:02 <boily> i don't know if i shall rejoice or flee.
05:37:33 <boily> i think the next step will be to hack a brainfuck interpreter in betterave...
05:38:19 <oerjan> i _think_ your language is relatively sensible apart from the ? ... ! effects
05:40:44 <oerjan> i don't think [ ... | ... ] has any issues with comments unless you put something after the | xxx expression
05:41:03 <oerjan> (or strings, but that would be useless anyhow
05:42:56 <oerjan> for non-esoteric uses however, this all should be a warning to keep your parsing and execution stages separate.
05:44:23 <Pikhq> You should have a parser that is modifiable at runtime!
05:45:15 <oerjan> ok that has its uses, but at least a command should be entirely parsed before executed
05:45:40 <Pikhq> Parsing should be part of the command.
05:46:40 <Pikhq> proc foo {args} {standard_parser; do stuff with $args};foo();bar();quuux!
05:51:45 <oerjan> something occurs to me. [ ... | ... ] is always executed at least once.
05:52:09 <oerjan> so you cannot avoid ? ... ! entirely.
05:55:32 <boily> that was one reason why i added ? ... ! to my language
05:58:19 <oerjan> hm |0] cancels the preceding [, no matter where it is
06:00:22 <oerjan> so you could exit a loop with ? ... ] ... ?!|0]1! or something like that
06:01:02 <boily> umm... not sure about the ?! part...
06:01:11 <Pikhq> boily: You, sir, are *way* too evil for your own good.
06:01:31 <boily> me? evil? bah, humbug!
06:01:42 <oerjan> because the last ? doesn't look for ! until the end of the test
06:04:39 -!- GregorR-L has joined.
06:11:55 <Asztal> the one who started my obsession over bismuth
06:11:55 <boily> um, pardon my ignorance, but what is bismuth?
06:12:04 <Pikhq> I'll second that question.
06:12:18 <oerjan> apart from a chemical element
06:12:32 <Asztal> bismuth is a heavy metal which makes awesome crystals
06:13:47 <Asztal> because of its density, he mentioned sending it back in business reply envelopes... then I had to go look it up, resulting later on in the purchase of http://i6.ebayimg.com/02/i/000/a0/38/eadf_1.JPG
06:15:10 <Asztal> it's like a fractal which I can touch!
06:17:20 -!- Pikhq has quit (Remote closed the connection).
06:17:40 -!- Pikhq has joined.
06:18:38 <GregorR-L> That is pretty rife with awesome :)
06:27:04 -!- boily has quit ("Bye!").
07:01:44 -!- Pikhq has quit (Remote closed the connection).
07:04:34 -!- Pikhq has joined.
07:16:25 -!- Pikhq has quit (Remote closed the connection).
07:17:15 -!- Pikhq has joined.
07:30:50 -!- GreaseMonkey has joined.
07:52:01 <GreaseMonkey> getting off now, here's my SKI interpreter if you want it: http://greasemonkey.nonlogic.org/poleski.zip
07:52:07 -!- GreaseMonkey has quit (Client Quit).
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
08:56:33 -!- GregorR-L has quit ("Leaving").
08:58:23 -!- GreaseMonkey has joined.
08:59:16 <GreaseMonkey> comments on my SKI interpreter? http://greasemonkey.nonlogic.org/poleski.zip
09:01:53 <GreaseMonkey> level 2 evaluates brackets before performing operations on them
09:02:57 <GreaseMonkey> everything is optional: Level 1/2, Empty-Bracket-Removal {on/loadtime only/off}, Lone-Bracket-Removal {on/off}, Forward-On-Dud (on a dud symbol, evaluate brackets after it) {on/off}, Lazy-I (don't evaluate bracket next to I) {on/off}
09:03:24 <GreaseMonkey> defaults: L2, LTLBR (Load-Time LBR), EBR, FOD, Lazy-I
09:36:00 -!- oerjan has quit ("Off to lunch").
10:51:07 <oklopol> <Pikhq> Thus why I'm saying "add a %255". <<< why not 256?
10:51:27 <oklopol> i should read further before saying anything
10:55:45 -!- GreaseMonkey has quit ("Crashing a computer only works if you add wheels to it.").
10:58:10 <oklopol> <oerjan> you would need to bring the destination pointer with you <<< i did something like having every second cell empty and [->+>>+<<<]>>>[-<<<+>>>]<<[[->>+<<]>>-]>
10:59:24 <oklopol> and bsmntbombdood also coded that after you said it, i'll stop commenting what i see :<
12:49:21 <oklopol> whuzz the regex way to say "replace every '.' in a string with ' ' if '.' is not preceded by a number"
12:49:33 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
12:51:54 -!- Asztal has joined.
12:52:14 -!- Asztal has quit (Read error: 104 (Connection reset by peer)).
12:53:05 -!- CakeProphet_ has joined.
12:54:14 -!- lament has quit (Remote closed the connection).
12:54:18 -!- lament has joined.
12:57:08 -!- Asztal has joined.
13:00:22 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
13:47:23 -!- jix_ has joined.
15:28:52 -!- crathman has joined.
15:39:32 -!- CakeProphet_ has changed nick to SilentScience.
15:47:52 -!- helios24 has quit (Remote closed the connection).
15:49:56 -!- helios24 has joined.
15:55:08 -!- boily has joined.
16:29:54 <SimonRC> I recommend that every here reads worsethanfailure.com
16:30:00 <SimonRC> their contest results are amazing
16:57:22 -!- sebbu has joined.
17:28:17 <lament> user friendly l of the day?
17:36:41 <lament> line? lameness? lament? lady?
17:43:08 -!- crathman has quit (Read error: 113 (No route to host)).
17:53:30 -!- boily has quit (Read error: 110 (Connection timed out)).
17:56:53 -!- crathman has joined.
17:57:57 -!- crathman has quit (Client Quit).
18:04:41 <GregorR> oklopol: s/([^0-9])\./\1/g
18:04:52 <GregorR> oklopol: s/([^0-9])\./\1 /g
18:06:34 -!- boily has joined.
18:47:00 <fizzie> GregorR; That's "if '.' is preceded by something that's not a number", not "-- not preceded by a number", which means it'll fail to replace the '.' at the beginning of the string. In perl-style regexps you can use a simple s/(?<!\d)\./ /g
18:48:05 <fizzie> s/([^0-9]|^)\./\1 /g probably works for less-endowed regexps.
19:09:27 -!- boily has quit (Read error: 110 (Connection timed out)).
19:44:08 -!- sebbu2 has joined.
19:54:31 <fizzie> Although in those systems you probably also need to escape the |.
19:54:52 <fizzie> My sed also has the 'extended regular expressions' argument -r.
19:55:23 <bsmntbombdood> it's annoying how everything has a different flavor of regexes
19:57:14 <fizzie> Perl, Java, anything using the PCRE library (like PHP's preg_* functions) at least are relatively close to each other.
19:59:50 <bsmntbombdood> regex handling should have gone into the libc from the beginning
20:11:27 -!- sebbu has quit (Read error: 110 (Connection timed out)).
20:11:27 -!- sebbu2 has changed nick to sebbu.
20:18:14 -!- GregorR-L has joined.
20:19:20 <bsmntbombdood> long i; for(i=1<<31; i; i >>= 1) while(malloc(i));
20:28:32 <oklopol> how come i end up being drunk 3 times a week though i hate drinking?
20:28:40 <oklopol> i have to filter my friends.
20:30:45 -!- sebbu has quit ("reboot").
20:37:25 -!- Pikhq has quit ("Leaving.").
20:38:08 -!- Pikhq has joined.
20:46:05 -!- sebbu has joined.
21:14:00 -!- GregorR-L has quit ("Leaving").
22:10:32 -!- jix_ has quit ("CommandQ").
22:32:28 * SimonRC goes to have a pizza then continue his sleeping experiments.
23:48:24 -!- sebbu has quit ("@+").