00:06:42 -!- BigZaphod has quit.
00:09:24 <pgimeno> jix: valgrind reports a couple of errors (use of uninitialized values mostly, but also reads/writes which are out-of-bounds)
00:10:10 <jix> yes uninitialized values that is a bug
00:10:23 <jix> and that's why mandelbrot.b moves <0
00:10:50 <pgimeno> incidentally, that was the bug with bff too
00:11:20 <pgimeno> graue: thanks for testing. Have you tried the patch which also replaces n with (n+1)?
00:17:15 <graue> no, I didn't know there was a new patch, where can I find it?
00:18:23 <pgimeno> it's in the same place, http://www.formauri.es/personal/pgimeno/temp/bff.patch
00:18:37 <pgimeno> the first version just added the memset's
00:19:31 <pgimeno> then I realized there was a problem at end of program, thus the n+1
00:28:41 <jix> updated a new version
00:29:52 <jix> pgimeno: can you test it with valgrind?
00:33:34 <pgimeno> things have changed; now uninitialized memory access no longer occurs but the out-of-bounds access is still happening
00:34:10 <jix> try hello-world
00:34:31 <pgimeno> sec, I've just recompiled with -O0 -g
00:35:37 <pgimeno> first line is mandelbrot.c:338
00:37:28 <jix> hmm why does it work here and on keymakers computer but not on your
00:37:41 <jix> and not on lindi's (with gcc 4 with 2 it works)
00:37:42 <pgimeno> it *does* work here, it's just valgrind complaining
00:37:57 <jix> pgimeno: mandelbrot does work?
00:38:20 <pgimeno> but it writes in an OOB address, which is dangerous
00:38:58 <pgimeno> probably lindi's libc can make a difference, since the problem can be malloc-related
00:39:15 <jix> can you tell me the position of m and m_srt?
00:39:27 <pgimeno> I was about to launch the debugger
00:39:40 <pgimeno> but expect the same as what lindi reported
00:40:13 <pgimeno> $1 = (unsigned char *) 0x1ba43026 ""
00:40:13 <pgimeno> $2 = (unsigned char *) 0x1ba43028 ""
00:40:57 <graue> pgimeno, bff still doesn't work for me
00:41:16 <jix> but i adjust the m start value for m[-7]
00:41:24 <pgimeno> graue: strange; now it works for jix
00:42:08 <jix> and if it accesses -7 for m < m_min it's mandebrot.b's fault
00:42:29 <graue> if I run it on brquine.b it prints a - and then freezes
00:42:45 <graue> if I run it on rot13.b it works until I press Ctrl-Z and Enter (end of file on win32), then it freezes
00:42:53 <graue> run on random.b, it seems to work
00:43:05 <graue> numwarp.b seems to work, without issue
00:43:16 <graue> dquine.b seems to work
00:43:37 <{^Raven^}> pgimeno: i'll have to make mine better
00:44:05 <jix> {^Raven^}: i too
00:44:06 <graue> mandelbrot is seemingly working okay
00:44:10 <pgimeno> {^Raven^}: guess so, but don't blame me, I'm just doing some timings :)
00:44:23 <graue> mandelbrot works fine, and very fast
00:44:48 <pgimeno> I misunderstood you since I thought that it also failed
00:45:01 <graue> I hadn't tried mandelbrot with it
00:45:43 -!- Aardwolf has quit ("Leaving").
00:45:55 <pgimeno> are these from http://esoteric.sange.fi/brainfuck/bf-source/prog/ ?
00:46:11 -!- kipple__ has quit (Read error: 110 (Connection timed out)).
00:46:35 <graue> they're from www.esolangs.org/files/brainfuck/src
00:50:21 <pgimeno> yeah, brquine.b fails here too
00:51:50 <pgimeno> jix: btw, valgrind reports an access to a position which is 9 bytes before the allocated block, just as expected
00:51:51 <jix> {^Raven^}: wait for stage 3 (not that the output is a lot faster with stage 3..but hey it's more code)
00:52:23 <jix> pgimeno: mandelbrot works with it.
00:52:37 <jix> so my compiler does only the things mandelbrot says.
00:52:53 <jix> and if m<m_min it's mandelbrot's fault
00:53:11 <pgimeno> jix: if m_srt is the start of memory, then I assure you that mandelbrot.b does not do any OOB access
00:53:26 <GregorR> I've almost got my compile-to-memory interpreter working, loops are a bit screwy right now.
00:53:34 <jix> m_srt is start of memory
00:53:53 <jix> m_min is the min position of m (only for debug reasons)
00:54:18 <pgimeno> my interpreter would report an attempt of <'ing at position 0 and it doesn't happen
00:54:20 <jix> and if m>=m_min it will never access OOB memory
00:54:43 <jix> yes i don't know what happens
00:55:04 <jix> is the output 100% correct?
00:56:51 <jix> i'm running collatz.rb in dbfi
00:59:00 <jix> pgimeno: can you check on what line m moves under m_min ?
00:59:08 <jix> dbfi in dbfi!
00:59:44 <pgimeno> jix: that's harder to do, I don't know gdb that well
01:01:18 <GregorR> Hmm, my compile-to-memory compiler segfaults for all non-trivial programs.
01:02:11 <pgimeno> nice, now you can say you're not using the wrong algorithm
01:02:52 <pgimeno> "If your program works at first attempt, you're probably using the wrong algorithm"
01:04:20 <graue> but that doesn't logically imply "If your program fails at first attempt, you're probably not using the wrong algorithm"
01:04:58 <jix> is there a way to get the current line number in c?
01:05:43 <graue> I think you can use __LINE__ and the preprocessor will put in the line number for you, but I'm not sure what header file that requires
01:06:06 <jix> seems to work without headers
01:06:40 <jix> line 50 moves m < m_min
01:07:26 <jix> #define REALLOC if(m<m_min)printf("\n\n%i\n\n",__LINE__);\
01:07:50 <jix> thats line 49 for you
01:08:45 <pgimeno> yeah but it's not troublesome
01:08:52 <jix> the loop that starts at 3:11 in mandelbrot.b
01:09:16 <pgimeno> I'd say the trouble is caused by line 333
01:10:13 <jix> line 49 moves m<m_min that's moving the pointer over the end of the tape
01:11:04 <pgimeno> that's not a problem if no access to that address occurs
01:11:14 <jix> yes but it's illegal in brainfuck
01:11:24 <jix> and your interpreter sais it doesn't move over the end of the tape
01:11:33 <jix> but my compiler sais it does.
01:12:02 <pgimeno> if your compiler keeps always m in range then yes, it's illegal, but I didn't know if that was the case
01:12:33 <pgimeno> your compiler might want to keep m temporarily out of range for optimization or something
01:12:36 <jix> i'm wrong your right
01:12:53 <jix> pgimeno: i only check for read's and write's
01:13:19 <pgimeno> that's what valgrind does and it reports a problem on line 338
01:14:33 <jix> i've an idea
01:14:35 <pgimeno> if that helps, moving line 340 at the top of that while seemed to fix the problem
01:14:52 <jix> does it still work?
01:15:18 <pgimeno> I haven't checked if the output is exactly the same though
01:15:32 <pgimeno> I mean moving line 30 to before line 337
01:16:36 <pgimeno> now the same problem happens in line 702
01:17:01 <jix> i think i know how to fix it
01:17:27 <jix> i just noticed another bug that slows down(but isn't harmfull)
01:17:31 <jix> but i have to sleep now
01:17:56 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
01:45:42 -!- heatsink has joined.
02:09:57 -!- BigZaphod has joined.
02:12:06 -!- BigZaphod has quit (Client Quit).
02:57:19 <GregorR> That was a thrilling conversation 8-D
03:17:00 <GregorR> AHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHHH!!!!!!!!!!!!!!!!!!!
03:17:04 <GregorR> YES YES YES YES YES!!!!!!!!!!!!!!!!!!!
03:17:10 <GregorR> egobfc2m just ran mandelbrot!!!!!!!!!!1
03:17:36 <graue> compiles to machinecode?
03:18:09 <graue> now you can make pa-risc and sparc64 versions :)
03:18:21 <GregorR> Actually, I set it up so that it would be relatively easy.
03:18:58 <GregorR> However, my only access to PA-RISC and ULTRASPARC boxes are at work, and I don't think they'd like me comendeering them for Brainfuck :)
03:19:09 <GregorR> Damn, Lost Kingdom segfaults :(
03:20:50 <GregorR> Oh, hehe, I just didn't give it a big enough program buffer ... (/me remakes the resizing stuff)
03:23:08 <graue> what is PA-RISC used for?
03:23:51 <GregorR> People who are unwilling to give up their antiquated ways :)
03:24:02 <GregorR> They're on their way out for the most part.
03:24:26 <graue> what's a cool non-i386-like architecture that isn't on its way out?
03:24:52 <GregorR> cool implies non-i386-like :)
03:25:14 <graue> I disagree, AMD64 is non-i386-like, but somewhat cool
03:26:36 <GregorR> Does Lost Kingdom use more than 30000 memory tiles?
03:28:53 <GregorR> Unfortunately, setting it to 300000 didn't help, so it's clearly my buggy code.
03:29:07 <graue> can't you fathom the idea that it may use more than 300000?
03:29:31 <graue> don't you have 4 GB of RAM?
03:29:37 <graue> all the cool kids have at least 4 GB of RAM
03:31:15 <GregorR> Awww, Gregor isn't a cool kid.
03:32:55 <GregorR> Hmm, is it worth it to make the memory expand if it halves the speed :(
03:34:00 <graue> will it become that much slower?
03:36:11 <GregorR> Only because I have to call an external function ... if I wrote the code into the machine code, it would be fasssssst.
03:39:08 <GregorR> OK, making a release though it's still unstable ...
03:46:58 <GregorR> http://gregorr.homelinux.org/egobf-0.5.tar.bz2
03:48:06 -!- int-e has joined.
04:11:45 <GregorR> time ./egobfi/egobfc2m tests/mandelbrot.b > /dev/null
04:11:45 <GregorR> 4.81user 0.00system 0:04.82elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
04:11:45 <GregorR> time ./bfi/bff.bin tests/mandelbrot.b > /dev/null
04:11:45 <GregorR> 16.72user 0.01system 0:16.78elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
04:13:22 <int-e> hmm, is converting brainfuck to C and then using gcc considered fair?
04:13:54 <GregorR> It compiles directly into memory and runs it, like java.
04:14:20 <GregorR> And actually, many bf->C->bin alternatives are slower than interpreters when you consider compilation time.
04:15:19 <GregorR> (Thanks to other members of this channel for pointing that out to me btw :) )
04:17:10 <int-e> I know. But I get user 0m2.131s for (my) bf2c then gcc and user 0m19.108s for bff :)
04:17:46 <int-e> (using mandelbrot.bf. and producing the same output.)
04:19:51 <GregorR> But how much time did it take to compile with gcc?
04:23:02 <int-e> ok. 5.611s total using -O3. -O1 is fastest and uses 3.821s total (compilation + runtime)
04:23:58 <GregorR> Also, I'm still working on producing optimal machine code.
04:27:33 <int-e> Yep I didn't want to do that so I decided to use C as my target when I wrote that converter.
04:28:20 <GregorR> Incidentally, BF2C is quite nice.
04:28:30 <GregorR> But not quite insane enough for my taste ;)
04:28:37 <GregorR> (awib is a bit too insane for my taste)
04:33:12 <GregorR> WOOOH! Got mandelbrot down to 3sec!
04:34:03 <graue> can you get it down to 0.0 sec?
04:34:34 <GregorR> I have one more optimization in the works.
04:35:00 * int-e wonders why bf2c-1.2.3 crashes on mandelbrot.bf. (segfaults)
04:36:30 <graue> did you know "chino" was a word? I didn't!
04:36:55 <graue> it's a coarse, tough, twilled cotton fabric used for uniforms or sports clothes
04:38:18 <GregorR> That's quite an esoteric bit of knowledge, graue :)
04:39:29 <graue> I just learned it thanks to my wonderful word guessing game
04:39:35 <graue> which is written in an esoteric language, Perl
04:40:06 <lament> perl, the original brainfuck
04:42:16 -!- graue has quit ("Donate a manual typewriter to ME for your only hope for a future!").
04:51:32 <GregorR> {^Raven^}: You've foiled EgoBFC2M!!!! I can't get it to run LostKingdomBF :(
05:05:27 <GregorR> OH WAIT!!!!!!!!!!! Does it need 16-bit words?
05:14:29 <GregorR> OK, the fastest I can get it (still doesn't run Lost Kingdom) http://gregorr.homelinux.org/egobf-0.6.tar.bz2
05:17:48 <lindi-> jix: m<m_srt happens because of that REALLOC
05:18:12 <lindi-> (i know jix isn't here but i said that so that i don't forget)
05:27:41 <GregorR> Are jix's speed tests posted?
05:46:56 -!- heatsink has quit ("Leaving").
06:08:00 <int-e> hmm. gregor, maybe realloc()ing the program memory area moves it in memory, invalidating the offsets of the call functions. maybe you could just allocate a new chunk and generate a jump at the end of the previous one instead.
06:09:36 <GregorR> If I'm not mistaking, I used offset from the beginning of the array, not an exact pointer.
06:09:45 <GregorR> pptr is an inaccurate name, it's an index into an array.
06:11:01 <int-e> the problem are the calls to the putchar and getchar wrappers together with the relative addressing of the call routines
06:11:07 <GregorR> I'm sorry, I see what you're saying.
06:11:27 <int-e> internal jumps or calls are not an issue.
06:11:43 <GregorR> You are 100% correct, that is broken.
06:11:55 <GregorR> That could very well be the problem with Lost Kingdom :P
06:13:53 <int-e> well, my to-c-converter has a bug apparantly - if I answer 'y' to the question for long descriptions, the program gets stuck in an infinite loop (as far as I can tell) :/ and the converter is almost 3 years old, I don't think I can find that bug, it's probably easier to write a new one *g*
06:14:24 <int-e> uhm - that's what happens when I convert the lostkingdomsbf game
06:14:30 <GregorR> Well, watch Lost Kingdom run perfectly!
06:14:41 * GregorR shoots himself in the foot.
06:15:28 <int-e> (not to mention that the converter's runtime suffers from using O(n^2) algorithms)
06:16:26 <GregorR> Thank you for the suggestion of making them into multiple functions, that is exactly what I'll do.
06:44:26 <GregorR> Thank you very much int-e! I don't know if I would have noticed that bug.
06:57:43 <GregorR> http://gregorr.homelinux.org/egobf-0.7.tar.bz2
06:58:25 <GregorR> There's only one problem ...
06:58:35 <GregorR> Now I can't find a BF program significant enough to challenge it :)
06:59:05 <GregorR> Lemme get a time output, just a sec.
06:59:21 <GregorR> time ./egobfi/egobfc2m ./tests/mandelbrot.b > /dev/null
06:59:21 <GregorR> 2.79user 0.00system 0:02.79elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
07:00:04 <GregorR> bff feels really slow now ...
07:00:15 <lindi-> yeah, but what about BF2C and gcc?
07:00:21 <GregorR> time ./bfi/bff.bin ./tests/mandelbrot.b > /dev/null
07:00:21 <GregorR> 16.28user 0.00system 0:16.29elapsed 99%CPU (0avgtext+0avgdata 0maxresident)k
07:00:38 <GregorR> Plus compilation time? -O1?
07:02:26 <GregorR> 0.00user 0.00system + 1.59user 0.04system + 2.41user 0.00system
07:02:39 <GregorR> A bit slower than egobfc2m, but not by a lot.
07:02:54 <int-e> hmm, which bf2c is that?
07:03:16 <GregorR> http://www.esolangs.org/files/brainfuck/impl/BF2C.c\
07:03:43 <int-e> http://bf2c.sourceforge.net/
07:03:55 <int-e> (crashes on mandelbrot.b)
07:04:14 <int-e> http://www.inf.tu-dresden.de/~bf3/brainfxxx/bf2c.hs -- my own one
07:04:23 <lindi-> argh, somebody should make sure these interpreters are named uniquely
07:04:39 <int-e> it's not my fault, I chose that name in 2002 ;)
07:04:49 <GregorR> Hmm, a bit difficult to convince it to use -O2 >_>
07:05:53 <lindi-> jix: m<m_srt is possible because line 47 does m+=-9;
07:06:06 <GregorR> Oh wait, something borked >_>
07:06:30 <int-e> ok, BF2C is boring :)
07:06:39 <lindi-> you could optimize mandelbrot.c to just printf("correct output here....");
07:06:55 <GregorR> Hmm, it's segfaulting for me ...
07:08:10 <int-e> ok, let's say BF2C.c is BF2C.c, the bf2c at sourceforge is bf2c.sf, and mine is bf2c.hs - now which one segfaults?
07:08:15 <GregorR> Yeah, I can't get it to not segfault
07:09:03 <int-e> you can remove one pass from bf2c.cc - pt->convertAbsoluteHeader();
07:09:08 <int-e> that's the one that segfaults
07:09:16 * int-e couldn't figure out what it does
07:09:29 <int-e> it's an optimization
07:10:44 <GregorR> 0.00user 0.00system + 1.01user 0.03system + 2.29user 0.00system
07:10:49 <GregorR> Still slower than egobfc2m :)
07:12:18 <GregorR> Oh, sorry, got a little bit zealous there.
07:12:22 <int-e> http://www.inf.tu-dresden.de/~bf3/mandelbrot.c is what bf2c.hs produces (runtime 0.031s here)
07:12:38 <int-e> that's the runtime for the conversion
07:12:50 <int-e> http://www.inf.tu-dresden.de/~bf3/brainfxxx/bf2c.hs
07:13:29 <GregorR> Not that it helps me without the appropriate compiler :P
07:13:31 <int-e> it's written in haskell, I compiled it using ghc, usage is bf2c < brainfuck-source > c-source. no options.
07:14:17 <GregorR> 0.92user 0.04system + 2.52user 0.00system
07:14:34 <int-e> yep, but not too bad either :)
07:14:54 <GregorR> And the time of the compiled program is better.
07:15:32 <GregorR> Incidentally, does anybody here have any non-i386 system that they can compile a simple file on and send back some results?
07:15:48 <GregorR> (That isn't incidental at all, is it?)
07:16:43 <int-e> sun4u sparc SUNW,Ultra-250
07:17:13 <GregorR> In egobf-0.7 there's a PORTING file with instructions on how to make ASM-and-hex output I could perhaps use to port egobfc2m.
07:17:46 <GregorR> It's basically just gcc -O0 -g test.c and objdump -S -t a.out
07:21:46 <int-e> hmm. now where did they hide objdump. grr. I hate SunOS.
07:22:11 <GregorR> It's part of binutils, so it ought to be somewhere XD
07:22:37 <int-e> gobjdump it is, and it's in /opt/sfw/bin where I also found the gcc.
07:22:54 <int-e> (sfw is 'Sun Free Software', IIRC)
07:24:53 <int-e> http://www.inf.tu-dresden.de/~bf3/dumps.tgz
07:25:20 <int-e> --> test0.dump, test1.dump, test2.dump
07:26:07 <int-e> Sparc is a Risc architecture, right.
07:27:01 <int-e> and I believe it has delay slots, so beware.
07:27:42 <GregorR> Like I said, sleepitime soon - I'll look at this port tomorrow.
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
11:15:38 -!- int-e has quit ("Bye!").
11:17:58 -!- kipple__ has joined.
11:39:00 -!- jix has joined.
11:43:16 -!- kipple__ has changed nick to kipple.
11:46:14 -!- puzzIet has joined.
11:46:28 -!- puzzIet has quit (Client Quit).
11:47:25 -!- Gs30ng has joined.
12:04:10 <Gs30ng> i've been interested about Esolang and tried to make one recently
12:05:22 <Gs30ng> it's a lauguage with bit variables
12:05:57 <Gs30ng> every characters that you can input are all variables
12:06:09 <Gs30ng> even space, tab, or newline
12:12:01 <Gs30ng> so when you type a character, it'll be identified as a variable, which means we cannot assign any instruction to a specific character
12:13:02 <jix> and how is it possible to program in it?
12:13:17 <Gs30ng> in current specification, patterns of characters, especially repeatation of a specific character will be an instruction
12:14:55 <Gs30ng> all variables are called 'switch', which can be turned on or turned off.
12:15:16 <Gs30ng> to turn on switch 'A', the source code will be: A
12:16:56 <Gs30ng> so when you type A, it's like ~A in C/C++. if 'A' is turned off, typing 'A' will turn on it. if it is turned on, typing 'A' will turn off it.
12:18:09 <Gs30ng> and when you type 'AA', it is meaningless, which mean we don't have any chance to type like that when we are to turn on/off the switch.
12:18:30 <Gs30ng> so i thought i can assign an instruction to the repeatation of one character.
12:20:17 <Gs30ng> i'm not sure that people here can understand me, because of my humble English
12:20:49 <Gs30ng> so please feel free to ask or correct me when you can't get me
12:25:38 <Gs30ng> the instruction, started by repeatation of a character, will be bitwise NAND operation, i think.
12:26:18 <Gs30ng> so 'AABC' does NAND between B and C and put the result to A
12:27:01 <Gs30ng> ......could this be turing-complete?
12:28:58 <jix> no because memory is limited to 256bit
12:29:14 <Gs30ng> i think we can use UTF-8 in this language
12:29:57 <Gs30ng> ...still not infinite switches but i think it's enough
12:30:19 <fizzie> You probably need at least some conditional-control-flow thing (a conditional jump or something). But encoding instructions like that should work.
12:31:35 <Gs30ng> hmm... OISC is turing complete, right?
12:32:36 <Gs30ng> how can it do that? i think this language can follow that way
12:33:24 <fizzie> The single instruction in OISC (at least one of them) is subtract-and-branch-if-negative, so you can use it for both arithmetics and control flow.
12:34:21 <Gs30ng> so that 'branch' does something related to control flow?
12:35:46 <fizzie> It's a jump, basically.
12:36:43 <Gs30ng> then how about assigning 'NAND-and-branch-if-negative' to 'AABC'?
12:37:12 <fizzie> Uh.. you need to be able to tell it where in code to branch to.
12:37:40 <fizzie> But you could devote some of the registers to serve as the "destination address" field for that instruction.
12:37:54 <Gs30ng> then i need at least 5 letters to do that
12:38:16 <Gs30ng> AA will be instruction, and BCD is operand...
12:40:11 <fizzie> You could have a fixed "memory location" (like registers '0'-'9') indicating where 'AABC' should jump. Then you'd just do 15789AABC to possibly-jump.
12:40:59 <fizzie> (With a single-bit register you can only specify two addresses. That might be a _bit_ too limited. (Gahh, the horrible pun.)
12:41:19 <Gs30ng> that sounds good too but i don't want to assign a letter to be something special. i want every characters to be impartial.
12:41:59 <Gs30ng> like, when you make a source code and replace every 'A' to '#' and '#' to 'A', it will still work
12:42:09 <fizzie> Hm. Then you just need to use enough bit-registers as operands for the jump command.
12:42:12 -!- grimace_ has joined.
12:42:44 <jix> jumps could be realtive
12:43:07 <Gs30ng> there must be some labels
12:43:30 <Gs30ng> which indicates the place to jump
12:44:09 <fizzie> A definitely sick syntax would be to use AABCD, AAABCDE, AAAABCDEF, ... (with 'D', 'DE', 'DEF' being the relative adddress to jump to)
12:44:27 <fizzie> That way for short jumps the instruction would be shorter.
12:44:36 <jix> you end the relative adress with two identical characters
12:45:07 <jix> like AABCDEE would A=B nand C if true jump to DE
12:45:34 <Gs30ng> and why do i need 2 Es?
12:45:47 <jix> Gs30ng: because it says that the instruction ends
12:46:00 <fizzie> So you can use AABCDEFGG to jump to DEFG, then.
12:46:13 <Gs30ng> but i think we don't need that
12:46:45 <Gs30ng> A=B nand C and if false jump to first D after this instruction
12:47:39 <Gs30ng> i don't want to assign a instruction-terminating instruction;;; there would be too much repeatation
12:47:42 <jix> whatif i want to jump backwards
12:48:20 <jix> idea: search the nearest D in both direction
12:48:48 <Gs30ng> maybe i can make a while() instruction
12:49:21 <jix> no if you search bidirectional there is no need for an extra instruction
12:51:09 <Gs30ng> i can make 'if false jump backward and if true jump forward' with it, right?
12:51:18 <Gs30ng> although the source code will be complicated
12:51:18 <jix> Gs30ng: yes
12:51:34 <jix> that's true for many esolangs
12:52:02 <Gs30ng> still i'm considering whether to use AABCD or not
12:52:14 <Gs30ng> because i think it's too long for an esolang like this
12:52:31 <Gs30ng> i need more simple way to start an instruction...
12:54:48 <Gs30ng> hey, we have a space for one more instruction
12:55:30 <Gs30ng> when we 'AAAAD', A nand A = A is definitely same with just 'A'
12:55:47 <Gs30ng> so i think we can assign input/output to AAAA
12:56:39 <jix> AAAABCDEFGHI to output BCDEFGHI if A and intput to BCDEFGHI if not A?
12:56:39 <Gs30ng> at least 8 different switches should follow AAAA
12:56:59 <Gs30ng> jix, we should not do that
12:57:24 <Gs30ng> the condition of A is forbidden to affect the instruction
12:57:50 <Gs30ng> because it is, the programmer is to...
12:58:03 <Gs30ng> 2. start the instruction
12:58:13 <Gs30ng> the source code will be like AAAAA
12:58:32 <Gs30ng> but first 4 A's will be identified
12:58:59 <Gs30ng> so the condition of A must not affect the instruction
12:59:21 <fizzie> Well, the programmed could always do AXAAAA...X, but perhaps it's not elegant.
13:00:10 <Gs30ng> we need one more useless switch to do an operation
13:01:50 <jix> pgimeno: are you here?
13:02:42 <Gs30ng> whoa, anyway, i have a lot more progresses with this language. this is great. the freenode channel #esoteric helps.
13:04:08 <Gs30ng> thanks for all you guys helped me, and i'll make a prototype specification in english
13:04:24 <jix> pgimeno: was a valgrind question
13:04:32 <jix> pgimeno: was a file-permission solution
13:05:03 <pgimeno> jix: the pointer one? I don't follow
13:05:16 <jix> no i had a question
13:05:44 <jix> 14:02:53<jix>pgimeno: are you here?
13:06:11 <jix> i didn't ask it because i noticed it was a wrong file permission setting
13:06:58 <pgimeno> next time you can note you're not going to ask by saying e.g. "never mind[...]"
13:08:13 <jix> i don't have much english irc experience;)
13:08:51 <pgimeno> sorry if I sounded picky, it was the result of my confusion :)
13:09:29 <jix> no you didn't sound picky (whatever picky is)
13:10:44 <Gs30ng> jix, how can you tell that if you don't know what is picky?
13:11:06 <Gs30ng> ..or am i misunderstanding a practical joke?
13:11:19 <jix> Gs30ng: because in that context it has to be something negative
13:12:13 <pgimeno> like, someone too worried about the details
13:13:00 <Gs30ng> like being fastidious?
13:13:31 <jix> nah i broke mandelbrot.b
13:13:44 <Gs30ng> then you totally didn't sound picky
13:14:01 <Gs30ng> ok sorry let's forget about this all picky stuffs
13:18:26 <jix> pgimeno: i reduced the REALLOC macro calls about 50%
13:18:37 <jix> if i decrement the pointer i don't have to check for overflows
13:20:46 <jix> hmm and valgrind doesn't complain anymore
13:20:53 <jix> (in the first 6 lines)
13:21:11 <jix> my linux box is slow
13:21:16 <lindi-> jix: 09:06:56 < lindi-> jix: m<m_srt is possible because line 47 does m+=-9;
13:21:17 <jix> with valgrind really slow
13:21:29 <lindi-> maybe you already fixed this, i was away
13:21:47 <jix> i have to move m around
13:21:58 <jix> [<] does this
13:22:07 <jix> and mandelbrot uses [<<<<<<<<<<] or something like that
13:22:52 <pgimeno> jix: I find it strange that now it doesn't complain... is the removal of REALLOC the only change?
13:23:13 <jix> pgimeno: no that's just a speedup because i had to work on that code anyway
13:23:50 <jix> i just added the maximum move-up+1 and maximum move-down+1 to the border space of the memory
13:24:42 <jix> is there a befunge mandelbrot?
13:25:47 <pgimeno> I have the feeling that there's something wrong with address (bottom - 9) being accessed anyway...
13:25:50 <Gs30ng> jix: i have a question
13:26:18 <Gs30ng> what if 'AAB' is 'A nand B and put the result to A'?
13:26:21 <jix> pgimeno: but i just do what mandelbrot.b tells
13:26:31 <jix> Gs30ng: that's shorter
13:26:43 <Gs30ng> the code will be shorter, but i'm not sure that still can do every operation
13:26:53 <lindi-> jix: i used the befunge fibonacci program in my benchmarks
13:27:22 <pgimeno> jix: google says there's a bef93 mandelbrot, yes
13:27:43 <pgimeno> http://quadium.net/funge/downloads/bef93src/mandel.bf
13:28:11 <jix> i want to write a mandelbrot for some esolang
13:28:58 <pgimeno> "When Benoit is to iterate..."
13:29:21 <jix> hey i have floats in ORK
13:30:52 <pgimeno> btw, that bef93 mandelbrot uses g and p quite a lot
13:32:06 <Gs30ng> i can't decide the name of this esolang.
13:32:53 <Gs30ng> i'm looking up my hometown language dictionary, but there's no proper word refers to 'switch'..
13:33:58 <Gs30ng> AAB programming language... that code does nothing
13:35:10 <Gs30ng> A and AAB does same thing
13:37:28 <Gs30ng> jix and fizzie helped me a lot so i could put those names into the name
13:37:32 <Gs30ng> ...this is not a good idea
13:37:51 <Gs30ng> ...Fizjix programming language?
13:39:51 <Gs30ng> Jiffy programming language.
13:40:09 <kipple> anyway, it sounds interesting, but I don't really understand it
13:40:57 <Gs30ng> kipple, i'll show you the prototype of specification in english ASAP.
14:32:11 <Gs30ng> Gee, this is too difficult to read
14:32:19 <Gs30ng> I'm not a good english writer
14:32:38 <Gs30ng> somebody correct this article to be read easily
14:32:42 <Gs30ng> http://gs30ng.exca.net/usg/CodenameSwitch
14:36:00 <Gs30ng> feel free to create an account since it's really easy
14:36:36 <kipple> how about using the Esolang wiki instead?
14:36:37 <kipple> http://www.esolangs.org/wiki/Main_Page
14:37:19 <Gs30ng> i'm a little bit nervous to do that...
14:37:33 <Gs30ng> this langauge is, right now, like stub
14:37:56 -!- int-e has joined.
14:39:25 <kipple> anyway, I think I get the language now. looks nice
14:39:35 <kipple> but storage is, of course, rather limited :)
14:41:50 <Gs30ng> of course we need UTF-8 charset to do something with this language
14:43:21 <Gs30ng> http://www.esolangs.org/wiki/Switch
14:45:11 -!- Aardwolf has joined.
14:47:16 <kipple> ok. I can probably correct it a bit later. But now I have to eat...
14:48:28 -!- GregorR has quit (Read error: 110 (Connection timed out)).
14:50:31 -!- tokigun has joined.
14:52:37 -!- int-e has quit ("Bye!").
14:52:40 -!- int-e has joined.
15:02:56 <Gs30ng> i didn't expected anyone i know at here
15:03:23 <Gs30ng> you are truly esoteric, tokigun.
15:05:02 <tokigun> my notebook computer didn't work
15:06:21 <Gs30ng> did you see the spec of my new language?
15:06:51 <Gs30ng> i'm writing input/output operation part and it sucks
15:08:36 <jix> bf2a version 0.2 is online at www.harderweb.de/jix/langs/brainfuck/bf2a.rb
15:13:50 <Gs30ng> http://www.esolangs.org/wiki/Switch
15:16:00 <Gs30ng> now i'm gonna cook a ramen
15:17:29 <Gs30ng> after eating that, i'll try to make a Switch code which prints "Hello Wolrd!"
15:18:03 <Gs30ng> ...i think it'll be easier, compared to Aheui
15:18:24 <tokigun> Gs30ng: is there Switch interpreter?
15:20:23 <Gs30ng> tokigun: ...do we need it?
15:21:16 <Gs30ng> there's no Switch interpreter yet
15:53:34 -!- Keymaker has joined.
15:54:08 <Keymaker> please, someone make interpreter, quick!
15:54:54 <Gs30ng> ...excuse me but would you tell me who you are? where did you got info about Switch?
15:55:39 <Keymaker> and i read #esoteric logs sometimes ;)
15:56:01 <Gs30ng> i feel pretty good that someone is interested of a langauge i suggested
15:56:02 <Keymaker> and check 'recent changes' in esolangs.org wiki daily
15:56:11 <Keymaker> yeah, it's really cool language
15:56:25 <Gs30ng> but i didn't expected thing like this;;
15:56:45 <Gs30ng> like, fanatical response
15:57:12 <Gs30ng> tokigun, would you make an interpreter for him?
15:58:07 <Gs30ng> the spec is not settled so i think it's too fast to make an interpreter
15:58:16 <Gs30ng> but there's demand about it
15:58:34 <Keymaker> good -- i was just going to ask
15:58:49 <Gs30ng> is there any mention about UTF-8?
15:59:03 <Keymaker> "Input/output operation takes 16 characters after it. If all 16 characters are turned off, then input operation will be performed. If not, it will print the UTF-8 character by that 16bit number."
15:59:03 <Gs30ng> we have 256bit of memory
15:59:45 <Gs30ng> so i think we must use UTF-8 system to guarantee enough memory space
16:00:09 <tokigun> it uses unicode... but it doesn't need to use utf-8 encoding
16:00:32 <Gs30ng> then i'll edit it to unicode
16:01:50 <Keymaker> hm. limited 256bit lang would be better. but that's just me..
16:02:39 <Gs30ng> i agree with you but i also want it to be turing tarpit
16:02:52 <Keymaker> would unicode make it turing tarpit?
16:03:33 <Gs30ng> but there will be a system that enables to store infinite characters
16:03:45 <int-e> hmm, has a certain feeling of SMETANA to it, in that every used variable has to be explicitely mentioned in the code.
16:03:47 <Gs30ng> then Switch will be turing complete. :(
16:04:16 <int-e> in the current state, without infinite storage devices.
16:04:28 <tokigun> Aardwolf: are you an inventor of Gammaplex? :)
16:04:59 <tokigun> i'm interested in it but its spec is somewhat... eh... anyway.
16:05:09 <jix> Gs30ng:no even with unlimited amount of switches switch is still not turing complete
16:05:33 <Gs30ng> then what more we need?
16:05:33 <tokigun> i couldn't understand some instructions.
16:05:44 <int-e> a way to address switches or a way to extend the program
16:05:51 <Aardwolf> Which one don't you understand?
16:06:03 <jix> because in a progrm of size n you can only use n switches
16:06:59 <Gs30ng> ...but is that a problem?
16:07:16 <tokigun> Gs30ng: if you wanna make turing tarpit.
16:07:28 <tokigun> Aardwolf: sorry, please wait a moment :)
16:07:47 <Gs30ng> well, since OISC is turing complete, i thought i can mimic it...
16:07:58 <jix> tokigun: i think i'll try to write mandelbrot for versert
16:08:41 <tokigun> Aardwolf: i couldn't understand stack program.
16:08:57 <Gs30ng> surprised. there's people tries to make something in Versert.
16:09:34 <Aardwolf> tokigun: oh yes, stack programs aren't that important actually, I wonder why I included it
16:10:29 <tokigun> Aardwolf: if source code of interpreter were in public, i could make some code in Gammaplex and so on... :(
16:10:45 <Gs30ng> jix: do you have any idea to fix that problem?
16:11:19 <Gs30ng> and how does OISC overcome that kind of problem?
16:11:19 <jix> Gs30ng: another instruction
16:11:36 <jix> Gs30ng: oisc has adresses for memory access
16:11:46 <Aardwolf> tokigun: the source code is public, and someone managed to compile it for macintosh
16:12:04 -!- cmeme has joined.
16:12:14 <tokigun> where is the source code? :S
16:12:15 <Aardwolf> it's in the zip file in the folder "src"
16:12:23 -!- cmeme has quit (Remote closed the connection).
16:12:39 <Aardwolf> in this file: http://www.student.kuleuven.ac.be/~m0216922/gammaplex/gammaplex.zip
16:12:48 <int-e> nearest C - what happens if there is no nearest C?
16:12:57 <jix> Aardwolf: /me managed it
16:13:09 <Gs30ng> that's the way to terminate the program
16:13:15 -!- cmeme has joined.
16:13:21 <tokigun> Aardwolf: oops... why i couldn't see it?
16:13:48 <Aardwolf> tokigun: it's only in there for a few weeks, maybe you had an older version?
16:14:06 <Aardwolf> tokigun: I also updated the spec when I added the src, maybe the new one is a bit clearer? :)
16:14:29 <tokigun> i downloaded it months ago.
16:14:41 <Aardwolf> all the colors and stuff are now gone from the page :)
16:15:48 <Aardwolf> I don't know why, but I feel like writing a mandelbrot program in gammaplex :)
16:16:19 <Gs30ng> in Switch we have addresses of each switch... isn't that enough? this obfuscates me...
16:18:34 <int-e> and I/O needs to specify which bit is the LSB
16:19:03 <jix> Gs30ng: yes but in oisc you can always adress another switch by incrementing the adress of an instrucion
16:19:33 <Gs30ng> int-e: i'm sorry but what is LSB?
16:19:46 <int-e> least significant bit
16:20:31 <Gs30ng> ...i should look up wikipedia
16:20:35 <int-e> I suppose your Q has value 1 and the A has value 32768
16:21:02 <int-e> but it's not really clear from your specification
16:22:25 <Gs30ng> well you mean the order of bits?
16:22:32 <Gs30ng> which one do you prefer to be LSB?
16:22:50 <int-e> I'd take the last one.
16:23:17 <Keymaker> Gs30ng: would you mind if I make an esolang based on the idea of switch? i'll naturally credit you
16:23:34 <tokigun> Aardwolf: i'm looking your interpreter. maybe i can make obfuscated Gammaplex interpreter now :)
16:24:24 <int-e> hehe, and it's not specified what the input operation does (although it's easy to guess the intention)
16:24:43 <Gs30ng> Keymaker: why don't you just do it in Switch? the language is opened for every opinion
16:25:06 <Keymaker> well, i'll write down the ideas/plan i have
16:25:14 <Keymaker> i'll let you see it when it's done
16:25:37 <Gs30ng> int-e: actually a GUI window will appear and force user to turn on or off 16 switches manually
16:26:26 <Gs30ng> Keymaker: i really appreciate it
16:27:20 <Aardwolf> tokigun: hehe make one in bf :)
16:27:30 <Gs30ng> int-e: i'm gonna make an example code that prints 'A'. then things will be clear, i think
16:28:18 <tokigun> i've make several obfuscated interpreter of whitespace and whirl in c... i like esoteric programming, but also obfuscated programming.
16:28:38 <Aardwolf> I find there are a lot of weird things about gammaplex because when I started on it I didn't yet know all the features I wanted to add, maybe I should make a successor that's more logical, or do you think it's fine the way it is? :)
16:28:47 <int-e> http://www.inf.tu-dresden.de/~bf3/switch.c ... quick and very dirty hack for posix systems, and it does not do unicode, just ascii, so it's very limited. but it should be good enough for some experiments.
16:29:06 <int-e> I hope there are no bugs (untested code, yay!)
16:29:53 <tokigun> Aardwolf: that's Gammaplex2? or... why not Deltaplex? :)
16:30:00 <Gs30ng> i have nothing to do but make specification... Jesus, how is it possible that interpreter is already made?
16:30:51 <Gs30ng> is there anyone make a Switch interpreter in python? i have no C interpreter
16:31:34 <tokigun> Gs30ng: how about using Dev-C++?
16:32:26 <int-e> BAAAAAAAAAAABAAAAAB prints a single A :)
16:32:41 <tokigun> Gs30ng: http://www.bloodshed.net/devcpp.html
16:34:07 <Gs30ng> int-e: it is forbidden to use same characters in one i/o operation
16:34:22 <Gs30ng> think about input operation and all characters are A
16:34:44 <int-e> so? undefined result, what's the problem?
16:35:13 <int-e> even 'serious' languages like C++ have no problem with undefined results :P
16:35:28 <tokigun> Aardwolf: how about many surfaces?
16:36:46 <tokigun> i don't like 8 by 8 font :)
16:37:04 <Aardwolf> it's better than dull console output :)
16:37:08 <Gs30ng> int-e: would there be no problem? are you sure? ok then i'll allow it
16:38:14 <tokigun> i thought how not to use font... and i thought bliting surface.
16:38:18 <int-e> well, the problem is maybe that you'll get programs that work on one implementation and not on another because they exploit that fact, but from the point of view of a specification I see no problem with simply stating that the result is undefined.
16:40:15 <Gs30ng> i want it to be turing complete! is there no way to do that without adding an instruction?
16:40:38 <tokigun> i mean if we didn't use internal font, we have to blit in order to print some string.
16:40:41 <int-e> allow infinte programs and use an infinite character set.
16:40:53 <Gs30ng> then it is turing complete?
16:41:11 <int-e> I'd expect it would be, but it wouldn't be practical.
16:41:17 <Aardwolf> in my recent projects I use opengl to draw bitmap fonts :)
16:41:29 <Keymaker> int-e: btw, nice to see another fellow brainfuck fan here. ;)
16:42:06 <Aardwolf> imagine, Deltaplex, allowing you to draw 3D opengl shapes...
16:42:40 <Aardwolf> maybe I should give it a go :)
16:43:45 <Keymaker> that'd be something never seen before..
16:43:48 -!- GregorR-W has joined.
16:43:56 <Keymaker> like esolang that uses 3d shapes as "output"
16:44:31 <GregorR-W> And unfortunately, since my home network is down, I can't send you egobf-0.7 :(
16:44:35 <Gs30ng> Keymaker: still writin' things down? i'm really interested
16:45:04 <GregorR-W> Umm, wouldn't Piet 3D take 3D /input/?
16:45:05 <int-e> hmm, it suffers from underspecification at one point.
16:45:14 <int-e> so there are incompatible interpreters :(
16:46:47 <Gs30ng> that underspecification thing
16:47:23 <jix> Aardwolf: is there an instruction for accessing the nth stack item?
16:47:31 <int-e> well, it means that some behaviour is not well-defined (but in that case it's not obvious that this is indeed the case)
16:48:18 <Gs30ng> i'm aware of only one problem
16:48:36 <int-e> there are basically three ways to deal with that: a) forbid the situation b) allow the situation but say its behaviour is undefined c) refine the specification so it fixes the behaviour.
16:48:49 <int-e> you said the next nearest C takes precedence
16:49:16 <Gs30ng> when a control is transfered to C
16:49:17 <tokigun> int-e: that's why is there no division instruction in Versert.
16:50:02 <Gs30ng> or not, considering it as a label?
16:50:38 <Keymaker> Gs30ng: takes a bit more time, i'll thing some stuff again.
16:50:52 <Gs30ng> Keymaker: take your time
16:51:41 * Gs30ng walks into the refridgerator
16:51:42 <int-e> right now my implementation would toggle C (assuming it's not actually part of a NAND or I/O instruction)
16:51:49 <jix> does anyone here now how to do an intersection test on a 4 dimensional fractal ?
16:51:59 <int-e> but yes, that's not really clear either and should be specified.
16:52:53 <Keymaker> grhh. i can't concentrate when listening trance. better listen some schranz.
16:53:07 <Gs30ng> i think we should not switch it... it's a label.
16:53:17 <GregorR-W> jix: BTW, are your benchmarking results posted somewhere?
16:54:10 <Gs30ng> but the backward C must be toggle at least once...
16:54:29 <Gs30ng> it really obfuscates me
16:56:26 <int-e> it's your language. try '[...] will jump to the operation immediately following the nearest C'
16:57:47 <Gs30ng> it collides with my design goal of Switch
16:58:07 <Gs30ng> i want all switches be impartial
16:58:20 <Gs30ng> like, you write a code
16:58:31 <Gs30ng> and replace all A to B and B to A
16:59:03 * int-e does not see why that's a problem here.
16:59:26 <Gs30ng> sorry i think i misread you
17:00:08 <Gs30ng> i thought [...] is a specific character
17:00:28 * Gs30ng bumps his head against the wall
17:01:30 * int-e sees the wall crumble to dust.
17:03:09 <GregorR-W> I clearly joined this conversation too late, the logs are completely not helping me understand this language.
17:03:35 <Gs30ng> and wiki isn't, either?
17:03:55 <GregorR-W> Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server.
17:03:56 <GregorR-W> Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2)
17:04:46 <GregorR-W> Hmm ... chatzilla has a really strange ;) icon .... is that his eyebrow or a tiny beret?
17:05:56 <Gs30ng> well... can you point the thing that you can't understand or you don't get the language wholly?
17:06:22 <GregorR-W> I just wholly don't understand the language, but then again I'm not devoting my attention to it, what with the being at work :P
17:07:05 <Gs30ng> then you can re-check the wiki later
17:07:10 <jix> GregorR-W: yes on http://www.harderweb.de/jix/langs/brainfuck/result2.txt but they are 2 days old
17:07:49 <GregorR-W> Heheh, need to add egobfc2m, it will rox0r their s0x0rzzzz.
17:08:14 <jix> hehe but i have bf2a
17:08:26 <Gs30ng> actually i'm too tired to explain the spec
17:08:37 <GregorR-W> However, I find it a bit strange that my times for egobfi-vs-everybody-else are significantly different ...
17:08:46 <Keymaker> you gotta chill out gregor! "all work and no play makes Gregor a dull boy"
17:09:04 -!- graue has joined.
17:09:56 <jix> GregorR-W: its 0.2 not 0.3 in the test
17:10:09 <Aardwolf> jix: appearantly not, there's one to roll down the nth value, but then it's removed form it's position
17:10:47 <Aardwolf> I will think about this if I ever make deltaplex :)
17:12:31 <Gs30ng> user inputs values again
17:12:34 <Gs30ng> computer records it again
17:12:42 <Gs30ng> repeat until user inputs 0
17:13:40 <Gs30ng> ...this is impossible in Switch, unless infinite switches are wrote in the code
17:14:08 <Gs30ng> and maybe this is related to the problem that jix told me
17:14:48 <int-e> having unlimited storage is a weaker requirement than turing completeness.
17:15:42 <int-e> and necessary to achieve turing completeness, so that's part of the problem.
17:16:18 <Gs30ng> i thought some solutions but no good and minmal one is among them
17:18:00 <Gs30ng> graue, it's an esolang being developed my me and people here
17:20:05 <int-e> hmm. associate a stack (initially filled with infinitely many zeroes) with each switch and add an ABAB operator which pops one item off A and pushes it on B
17:20:59 <Gs30ng> well i thought about it alone for about 2 weeks
17:21:17 <Gs30ng> and told people here about it today
17:21:28 <int-e> that's an idea but I admit that it changes the language in a fundamental way.
17:21:39 <int-e> so I'm not sure if I like it.
17:22:29 <Gs30ng> and i don't want any stack or something
17:22:38 <int-e> the infinite stack idea isn't new either, it was used in ... hmm ... what's that reversible calculation language again, kayak?
17:22:57 <Gs30ng> i want only switches to be the storage
17:23:25 <int-e> but you need a way to access arbitrarily many switches. :(
17:23:29 <Aardwolf> Sorry! The wiki is experiencing some technical difficulties, and cannot contact the database server.
17:23:48 <Gs30ng> if it's not, it's not the Switch programming language that i invented. it'll be like... Switchoid or something
17:24:46 <int-e> well, you need that way to allow one to write interesting programs without limitations - a finite program that reverses its input, say.
17:25:03 * int-e wonders how that 'way' got there.
17:25:30 * GregorR-W sneaks off with his bag full of misplaced words snickering.
17:25:44 <Gs30ng> each character has a numeric value in unicode, right?
17:26:09 <Gs30ng> and we can make that value by toggling or NANDing the switches
17:26:17 * int-e glares at GregorR-W
17:27:05 <int-e> I'll remember that, GregorR-W.
17:27:26 <Gs30ng> so adding instruction that takes several letters(probably 8 or 16 letters) and toggling the switch that 16 letters point
17:27:35 <Gs30ng> will solve this problem...
17:29:35 <int-e> hmm, just toggling it won't be enough, you need a way to test it, too. and 16 letters give you 2^16 addresses, you'll probably want more (32 should be enough for most 'practical' purposes. for theoretical purposes, this still isn't enough - it's still a (big!) finite state machine)
17:30:19 <int-e> (keep in mind that from a theoretical point of view, every existing computer is basically a very big finite state machine)
17:31:05 <int-e> unless you're a theoretical physicist. hehe ...
17:33:04 <Gs30ng> i remember that to be turing complete FSM needs 2 stacks
17:33:33 <graue> or one queue, if it has the proper facilities to handle it
17:33:47 <Gs30ng> and there's one more way.... 2 something enables FSM to be turing complete...
17:33:59 <int-e> unlimited integers
17:34:03 <graue> two memory cells with bignums
17:34:14 <int-e> although that construction is quite evil
17:34:36 <GregorR-W> It would be mind-bogglingly difficult to actually DO anything, but yeah, that's turing complete XD
17:34:55 <graue> you can have a Turing-complete machine with one register of unlimited integers
17:34:56 <int-e> use a bignum to represent 3 bignums in the form 2^a*3^b*5^c ...
17:35:02 <jix> graue: one memory cell with bugnum und mul + div + divtest
17:35:31 <int-e> well, the usual computational basis is inc and dec+test
17:35:52 <int-e> then you need 2 bignums to implement div+divtest+mul on top of that
17:35:55 <Gs30ng> graue, http://www.esolangs.org/wiki/Switch
17:37:01 <Gs30ng> you're already participating
17:41:27 <Gs30ng> with maintaining the concept that 'no specific character' thing, it's too hard to accomplish the turing completeness with minimal spec/instructions/operations.
17:42:36 -!- tokigun has quit ("zzz").
17:55:16 <Gs30ng> int-e, your interpreter in C takes 8 letters when I/O?
17:55:39 <int-e> I was faithful to the specification in that respect
17:55:57 <int-e> but it just truncates the characters to 8 bit for output
17:56:23 <Gs30ng> and LSB is still last one of 16 letters?
17:56:48 <Gs30ng> then first 8 letters are ignored?
17:57:44 <int-e> I test the whole 16 bits for 0 to check for the input operation
17:58:03 <int-e> and the input operation sets the corresponding switches to 0 (well, ok, that's a no-op)
18:00:21 <Gs30ng> Gee, my humble english... :(
18:01:22 <int-e> My code converts the whole 16 bits to a number
18:01:46 <int-e> checks this number for zero. if it's not equal to zero, it truncates the top 8 bits and outputs that character
18:02:18 <int-e> if it is zero, it inputs a (8 bit) character and converts its value back to 16 bits
18:02:58 <Gs30ng> still we don't have unicode here but useful enough to test
18:03:08 <int-e> yes, that was the idea
18:03:29 <Gs30ng> shoot me that A-priting-switch-code again
18:03:34 <int-e> it wasn't meant to be a full-fledged implementation
18:04:14 <int-e> BAAAAAAAAAAABAAAAAB
18:06:21 <Gs30ng> that code receives only 15 characters
18:06:33 <Gs30ng> 16 characters after AAA is needed
18:10:39 <int-e> oh, didn't count correctly. my thought was that A could as well serve as the first of those 16 bits
18:12:06 <int-e> so AAABCDEFGHIJKLMNOP would print character ABCDEFGHIJKLMNOP (read as a binary number) ... anyway I can change my program easily
18:12:22 <Gs30ng> yeah, but that kind of operation is something forbidden in Switch. suppose this:
18:12:51 <Gs30ng> 1. A affects the result of operation, so the programmer want to do this before starting operation: turing on A.
18:13:12 <Gs30ng> 2. Now the programmer tries to start input operation: AAA and something
18:13:22 <Gs30ng> the code will be like AAAA and something
18:13:31 <int-e> well, insert a dummy character
18:13:49 <Gs30ng> that's an idea but i don't want there a trash characters in source code
18:14:28 <int-e> anyway I really counted the letters on that line wrong, I'll change my program
18:15:04 <Keymaker> i haven't followed your discussions, but the version i'm thinking will be probably a lot different
18:16:31 <Gs30ng> and you know what i'm saying, when the operation is started with AAA or something, the value of A should not affect the operation, because then programmer will try to write A before AAA and it collides and we need some trash characters
18:16:51 <int-e> I'll be idle for a bit, I'll read and answer that in a few minutes
18:17:45 <Gs30ng> in AA(nandnp) the value of A affects the operation!
18:18:17 <Gs30ng> and D is the target place to jump when 0
18:22:36 <Gs30ng> AA -> just starts nandnp
18:22:54 <Gs30ng> D -> if B nand C is 0 then jump to D.
18:27:10 <Gs30ng> ...this is too major change
18:29:47 -!- grimace_ has left (?).
18:30:54 <Gs30ng> int-e, i'm sorry to bother you but you should change your code
18:31:06 <Gs30ng> there's a major change in spec
18:33:32 -!- kipple_ has joined.
18:34:30 -!- kipple has quit (Read error: 104 (Connection reset by peer)).
18:44:31 <Gs30ng> and i still cannot decide the name of this language
18:44:43 <Gs30ng> i don't like the name Switch
18:51:08 <Keymaker> i selected 'trigger' for my language
18:51:08 <Gs30ng> i like switch more than toggle. :(
18:51:40 <Keymaker> Gs30ng: i'll make it a new language..
18:52:21 <Gs30ng> Keymaker: Sure you can, but can't you still show me about it?
18:52:41 <Keymaker> i'll naturally make it public when it's ready :)
18:52:57 <Gs30ng> but i'd rather use my hometown language
18:56:34 <jix> there is a flip lang afaik
18:56:53 <jix> http://esolangs.org/wiki/Flip
18:57:29 <int-e> ah, didn't know that
19:02:28 <Gs30ng> it doesn't f*ck brein. :(
19:04:15 <GregorR-W> Sure it does, Brein isn't a real word, so it can mean whatever you want it to.
19:06:30 <int-e> any changes besides the NAND one?
19:08:11 <GregorR-W> One thing I'm confused about, by "AAAA" do you mean "any four of the same letter", or does it actually have to be "AAAA"?
19:08:56 <int-e> any four of the same letter
19:08:57 <Gs30ng> if a letter repeated for 4 times
19:09:13 <Gs30ng> I/O operation will be started
19:09:53 <int-e> I updated my switch interpreter and fixed a bug as well.
19:11:28 <Gs30ng> the name of this language is now Udage.
19:11:53 <Gs30ng> i think you'll wonder what's that
19:11:56 <Gs30ng> see http://esoteric.voxelperfect.net/wiki/Udage#Udage
19:17:05 <Gs30ng> new code that prints single A is like BAAAAAAAAAAAAABAAAAAB
19:17:29 <Gs30ng> add commas to read easy: B,AAAA,AAAA,AAAA,ABAA,AAAB
19:17:45 <Gs30ng> AAAA starts the I/O operation
19:18:34 <int-e> XYYYYYYYYYYYYYXYYYYYX works too :)
19:21:46 <Gs30ng> before trying to make a code prints "Hello, World!", we need an interpreter with unicode
19:22:31 <Gs30ng> ...unicode "Hello, World!" and ascii "Hello, World!" have same numeric value?
19:22:48 <int-e> these are all ascii characters
19:23:16 <int-e> and the first 128 Unicode values are mapped to ASCII
19:23:59 <GregorR-W> Yes, Unicode is 100% backwards-compatible to ASCII
19:24:14 <int-e> really. that's no accident, it's designed that way
19:24:22 <Gs30ng> ...why have i been thought they aren't? :(
19:24:32 <int-e> and UTF8 was designed in a way that allows to use ASCII without modifications.
19:24:51 <Gs30ng> then i'll try hello world
19:25:26 <Gs30ng> ...or there one among you guys is already trying?
19:25:53 <int-e> no. I'm not sure how to feed perl's unpack() to generate that code.
19:26:09 <GregorR-W> Pff, just write a quick C hack to do it.
19:26:55 <GregorR-W> for (i = 7; i >= 0; i--) if (inp & (1 << i)) putchar("A") else putchar("B");
19:27:15 <int-e> no, you need to start at 15
19:27:19 <GregorR-W> Whoops, putchar('A') and putchar('B')
19:27:25 <GregorR-W> This is assuming you just outputted "BBBBBBBB"
19:27:51 <int-e> actually putchar("A") and putchar("B") are very likely to produce a program that does what you want ;)
19:31:38 <GregorR-W> BAAAAAAAAAAAAABAABAAAAAAAAAAAAAAAABBAABABAAAAAAAAAAAAABBABBAAAAAAAAAAAAAAABBABBAAAAAAAAAAAAAAABBABBBBAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABABABBBAAAAAAAAAAAAABBABBBBAAAAAAAAAAAAABBBAABAAAAAAAAAAAAAABBABBAAAAAAAAAAAAAAABBAABAAAAAAAAAAAAAAAABAAAABAAAAAAAAAAAAAAAABABA
19:31:45 <GregorR-W> May or may not be correct *shrugs*
19:32:48 <Gs30ng> it just seems like a whirl code
19:32:55 <int-e> well it's missing a comma ;)
19:33:21 <Keymaker> here's hello world in Trigger:
19:33:22 <Keymaker> HHHeeellllllooo wwwooorrrlllddd!!!
19:33:37 <Keymaker> HHHeeelll lllooo wwwooorrrlllddd!!!
19:34:26 <int-e> `r`.!`.d`.l`.r`.o`.w`. `.,`.o`.l`.l`.e`.Hi
19:34:27 <Keymaker> if there's three same character in row, then putchar(that character)
19:35:29 <Keymaker> should the instruction pointer be able to go left and right
19:36:03 <Gs30ng> it must be possible to make a loop
19:36:20 <Keymaker> this uses the way original switch used (iirc)
19:36:26 -!- BigZaphod has joined.
19:36:56 <Keymaker> if there's two same characters in a row (aa) then search the nearest character that is the same than the one after aa (b)
19:36:58 <Gs30ng> if you have a while() thing, it's ok for instruction poiter to go just right
19:38:14 <Gs30ng> if you don't have anything like while(), you need the pointer to jump backward
19:38:15 <GregorR-W> While = if-jump-back, so if that jump is conditional, then it is while() ;)
19:39:18 <Gs30ng> Keymaker, i don't get your lang :(
19:40:11 <Keymaker> AAB = if A is 1 then search for nearest B left or right
19:40:22 <Keymaker> if A is 0 then just go on and do nothing
19:40:45 <GregorR-W> So how do you do binary (that is, two operands) logical operations?
19:40:48 <Keymaker> after jumping from some place to another, the trigger isn't flipped
19:41:05 -!- fungebob has quit ("Today is a good day to chat.").
19:41:16 <Keymaker> and when there's three same, like EEE, then print 'E'
19:41:25 <GregorR-W> If today is such a good day to chat, why are you leaving?
19:41:32 <Keymaker> and if there's four same, like BBBB then make it remove BBBB from code when executed
19:41:35 <int-e> AACBC <- toggle B if not A
19:41:59 <Keymaker> i was just going to say something like that
19:42:17 <Gs30ng> i don't get your language
19:42:19 <GregorR-W> I don't think toggle-b-if-not-a is powerful enough ...
19:42:47 <Gs30ng> the value of A affects the operation
19:42:49 <int-e> it's basically an xor, right
19:43:12 <Keymaker> the value of A affects to AAB operation
19:43:21 <Keymaker> if A is 0 that thing will be skipped
19:43:47 <int-e> but AAXBBYCXY basically toggles C if not A and not B ... we need a way to set some value to 0
19:43:57 <int-e> AAXAXA ... like this
19:44:36 <Gs30ng> the programmer will try to set A before trying AAB, because it affects the operation
19:44:43 <Gs30ng> then the code will be like AAAB
19:45:08 <Keymaker> add some other character between
19:45:17 <Gs30ng> we need a lot of trash in this language
19:45:20 <Keymaker> it's just another trigger that isn't used in the code
19:45:34 <int-e> no, one trash character is enough, and a few for labels
19:45:49 <int-e> labels are the real issue actually
19:45:50 <Gs30ng> int-e, that one trash character will appear a lot
19:46:19 <Keymaker> and besides, you can use new-line as a trash character
19:46:25 <Keymaker> it doesn't make the code look too bad
19:47:17 <int-e> you can just comment your code, I like that
19:47:30 <int-e> > ./a.out hello.sw
19:47:31 <int-e> BAAAAAAAAAAAAABAABAAAAAAAAAAAAAAAABBAABABAAAAAAAAAAAAABBABBAAAAAAAAAAAAAAABBABBAAAAAAAAAAAAAAABBABBBBAAAAAAAAAAAAAABAAAAAAAAAAAAAAAAAABABABBBAAAAAAAAAAAAABBABBBBAAAAAAAAAAAAABBBAABAAAAAAAAAAAAAABBABBAAAAAAAAAAAAAAABBAABAAAAAAAAAAAAAAAABAAAABAAAAAAAAAAAAAAAABABA
19:47:38 <Gs30ng> some operations that deeply related to each other will be divided in 2 line
19:47:45 <int-e> (ignore the missing ,)
19:47:58 <Keymaker> didn't get your commenting stuff int-e
19:48:06 <Gs30ng> and another operations that has no relation will be stuck
19:48:12 <int-e> just add some comment in the middle of your code
19:48:21 <int-e> like the Hello, world! line at the start of hello.sw
19:48:24 <Keymaker> you mean like a.aa# This code is written by me. #
19:48:46 <Gs30ng> That's something same with Udage
19:49:18 <Keymaker> int-e: do you think self-removing sequence FFFF is necessary?
19:50:10 <Keymaker> (wait, takes a bit time to make it up)
19:50:16 <Gs30ng> FFFF, then do an operation between F and F, then the result is always 0
19:50:34 <Keymaker> this language doesn't work that way
19:50:52 <Keymaker> if there is only one character F, it does the flip
19:51:01 <Gs30ng> then why do we need self-removing FFFF
19:51:05 <Keymaker> before that the interpreter checks if there's two F's in a row
19:51:41 <Keymaker> but that's why i asked int-e if he thinks it's necessary
19:51:51 <Gs30ng> why do we need self-removing FFFF?
19:52:03 <int-e> i need a quick summary. F toggles, FFL is a conditional jump, what else was there?
19:52:33 <Keymaker> and EEEE would remove 'EEEE' from the program
19:52:34 <Gs30ng> Keymaker, what about input
19:52:48 <Keymaker> that's a question i was going to ask here soon
19:52:57 <Keymaker> good, saves me from thinkin' ;)
19:53:08 <int-e> I don't see why you'd need that
19:53:22 <Keymaker> i've thought that as option as well
19:53:39 <Keymaker> in fact, when i started working on the language i thought i'll make it non-input one
19:53:59 <Keymaker> perhaps that's what i'll do, i can't find any elegant way storing input
19:54:16 <int-e> you can always introduce a special switch that reads a bit from input
19:54:19 <int-e> if you really need it
19:55:00 <Keymaker> one way could be to make for example EEEEE to store a bit from input to E
19:55:32 <Gs30ng> i can't like this language because of trash letters, but it could be more handy than Udage
19:55:51 <Keymaker> well, everyone's got their own opinions :)
19:56:04 <int-e> well, you have trash letters anyway in the moment that you introduced labels.
19:56:50 <int-e> Keymaker: no, Gs30ng
19:57:00 <Gs30ng> you can get more info about the name at http://www.esolangs.org/wiki/Udage#Udage
19:57:22 <int-e> I'm not worried about trash letters
19:58:17 <Gs30ng> but in real coding in Udage they probably would be trash
19:58:27 <int-e> well, leave eliminating trash letters as an exercise to the coder then.
19:58:54 <int-e> noone codes in esolangs because it's simple.
19:58:56 <Gs30ng> instead of trash letters, what about this
19:58:56 <Keymaker> int-e: so, do you think FFFF would be useful?
19:59:17 <int-e> no. it's weird, and it's not reversible.
19:59:21 <Gs30ng> interpreter interprets 4 letters in a time
19:59:28 <Gs30ng> or 3 letters or something
19:59:42 <Keymaker> int-e: do you think that should be replaced by "get one bit from input"?
19:59:43 <int-e> I think not being reversible is the real issue. it won't be useful in a loop.
20:00:00 <int-e> that would certainly be more useful
20:00:33 <Gs30ng> since Udage isn't done
20:00:48 <int-e> it's more like brother-of-Udage.
20:01:03 <Gs30ng> repeat until user inputs 0
20:01:21 <Keymaker> not many esolangs can access hard drive (thanks heaven)
20:01:27 <Keymaker> this won't be able to do that either
20:01:35 <Keymaker> this has user inputs and repeat until user inputs 0..
20:01:36 <Gs30ng> i haven't mentioned hard drive
20:01:41 <int-e> Trigger is not supposed to support infinite storage or be turing complete
20:02:28 <Gs30ng> you need a switch(right? or trigger) for a time
20:02:43 <Gs30ng> 32 times repeat, 32 triggers are needed
20:03:51 <Keymaker> but notice, this language is not meant to be a turing-complete
20:04:10 <Keymaker> therefore i don't really care if repeating needs so much work
20:04:36 <Gs30ng> but with a little addition it can do that, i think, although i don't know how
20:05:41 <Keymaker> i think it would require changes in the data storage stuff
20:06:26 <Keymaker> oh, what i forgot to say that when searching the nearest trigger, and if there's two triggers, one on left and one on right, then it will be random which one to choose
20:06:41 <Keymaker> so, there's small in-built randomness if user wants that
20:07:12 <Keymaker> what i meant to say there as well, is that
20:07:24 <Keymaker> that only happens if both the triggers are as far from
20:07:37 <Keymaker> the instruction sequence (for example "AAB")
20:07:42 <Gs30ng> it can be adopted into Udage
20:08:12 <Gs30ng> Keymaker, how can you get that kind of splendid idea?
20:08:34 <Keymaker> probably because i was thinking "should it go left or right"
20:08:54 <Keymaker> then "i can't decide".. "hey, i'll just make it random so i don't need to decide!"
20:09:29 <Keymaker> [although deciding it to be random was itself a decision]
20:09:59 <Gs30ng> i can apply that to nearest D toggle problem
20:10:44 <Gs30ng> and esolang wiki's dead again
20:10:59 <Keymaker> int-e: you have time to write an interpreter..? ;)
20:11:28 <Keymaker> i would do that myself but i can't really
20:11:40 <Gs30ng> Keymaker, before that why don't you confirm a specification and unveil it
20:12:02 <int-e> I was going to say: Gimme a spec. :)
20:15:17 <Gs30ng> Udage will take a lot more time to decide the spec, because of my desire to be turing complete
20:15:23 <Gs30ng> but Trigger doesn't, right?
20:15:58 <Gs30ng> so Trigger will make it's spec earlier than Udage
20:17:46 <Gs30ng> original comes after one originated from it
20:18:29 <Keymaker> do you want the name 'Gs30ng' to be credited or want me to use some other name?
20:19:19 <Gs30ng> it was amazing conversation
20:19:25 <Gs30ng> all you guys really helped me
20:19:44 -!- Gs30ng has quit ("quits").
20:41:17 -!- graue has quit ("Donate a manual typewriter to ME for your only hope for a future!").
21:25:52 <GregorR-W> If you write an interpreter in BF, you can use egobfi32 -unicode on to run it and get your unicode 8-D
21:26:20 <GregorR-W> (Then the only hard part is ... well, writing the interpreter in BF)
21:27:28 <GregorR-W> But heck, compared to s/char/wchar/, that's easy :P
21:30:11 <GregorR-W> Oh hey! int-e, do you happen to still have egobf-0.7.tar.bz2? I want to upload it elsewhere since my network at home is screwy.
21:31:34 <GregorR-W> Could you email it to AKAQuinn@hotmail.com ?
21:32:18 <int-e> get it at http://www.inf.tu-dresden.de/~bf3/egobf-0.7.tar.bz2
21:32:29 <int-e> I'll remove it afterwards
21:32:30 <GregorR-W> Ah, that works - rescue #3, you rock :)
21:35:34 <GregorR-W> http://www.codu.org/egobf-0.7.tar.bz2
21:41:00 -!- calamari has joined.
21:44:01 <GregorR-W> Oh, I still haven't posted a picture of me in the fez.
21:44:28 <GregorR-W> My randomizer told me to wear the fez tomorrow, so I'll have the opportunity.
21:46:18 <Keymaker> yeah, i noted you about that in your guestbook
21:46:29 <Keymaker> (that you should update your hat gallery)
21:46:42 <GregorR-W> Not that I ever read my guestbook :P
21:47:46 <GregorR-W> I also need to update the music page, and update the ORK page. I'm really just not much for updating my web pages :P
21:48:17 <calamari> yeah, I need to overhaul my webpages too.. not standard compliant
21:48:49 <GregorR-W> My main page is actually finally 100% compliant, just fixed it recently.
21:48:57 <calamari> I keep waiting until I write a program that will build the pages for me..
21:49:13 <calamari> other projects always seem like more fun than that ;)
21:49:48 <GregorR-W> The lazier I get the more pages I make run Giki.
21:50:18 <GregorR-W> Even if I don't let other people edit, it's still quicker than muddling with the HTML/PHP/CSS/etc.
21:58:30 <calamari> that's actaully not a bad idea
21:58:54 <calamari> perhaps a giki where the editing isn't visible without a special tag
21:59:44 <calamari> one of the things I've wanted is an auto site-map builder
22:16:52 <calamari> plugins must be very powerful if such a thing is possible via a plugin
22:17:17 -!- Aardwolf has quit ("Leaving").
22:17:59 <GregorR-W> Plugins switch between HTML, WikiSyntax and BBCode ...
22:18:55 * GregorR-W is searching for all the particularly powerful plugins :P
22:21:24 <calamari> http://giki.sourceforge.net/edit.php?title=Downloads#
22:22:11 <GregorR-W> Yes, the SourceForge element is a plugin too, but not particularly powerful :P
22:22:17 <calamari> clicking WikiSyntax shows a help page, but it doesn't seem to render correctly.. is this a bug?
22:22:34 <GregorR-W> Yes it is, however it's a known bug.
22:22:47 <GregorR-W> I switched the page to CSS instead of tables, and that got screwy.
22:23:44 <GregorR-W> However, I switched the default template too, so the default template is broken 8-D
22:26:02 <GregorR-W> (Only if you have the Subwindow rendering plugin)
22:41:51 <Keymaker> phew.. i'm almost ready with trigger specs
22:47:32 <Keymaker> now i'm trying to find some good quote
22:47:42 <GregorR-W> Come ooooooooooooon, write an interpreter in BF :)
22:47:54 <GregorR-W> All the cool kids write their interpreters in BF.
22:48:51 <Keymaker> actually bf interpreter for this language wouldn't be that hard
22:57:18 <int-e> I'll go to bed, see you tomorrow. I'll take a look at those specs then (if I can find them)
22:59:05 -!- int-e has left (?).
23:02:49 -!- graue has joined.
23:21:00 <Keymaker> TRIGGER SPECS (capitalized so int-e can notice them more easily)
23:21:01 <Keymaker> http://koti.mbnet.fi/yiap/trigger/trigger.html
23:21:15 <Keymaker> feel free to ask questions and point out the flaws
23:34:08 <GregorR-W> Ahhh, tense. Wouldn't it make sense if English conjugated tense? It makes me tense, the fence that isn't in the tense in Engl...ense.
23:39:38 <Keymaker> well, time to quit if i want to get up tomorrow.. arrgh. when i get home i'm staying up hours later..
23:39:57 -!- Keymaker has quit ("Funkadelic!").
23:42:35 * pgimeno catches up with the backlog and goes phewwww!
23:43:35 <graue> the backlog is smelly?
23:44:16 <pgimeno> maybe I should have used a different exclamation
23:48:49 <calamari> thought I had the item logic worked out for my game.. not good enough tho!
23:50:04 <kipple_> game? what game? are we talking about a game written in an esolang here? :)
23:50:14 -!- kipple_ has changed nick to kipple.
23:50:47 <calamari> working on my 2k adventure game entry
23:51:11 <graue> kipple would be a fun language for programming games in IF ONLY it had interactive I/O
23:51:41 <graue> or, alternately, if a program could call itself again
23:51:53 <graue> with the current o stack as the program's i stack next time
23:52:04 <graue> wait, that wouldn't work
23:52:10 <kipple> now THAT is an interesting suggestion...
23:52:11 <graue> I don't know, something like that
23:52:28 <graue> how would you do actual output to the user? or get actual input from the user?
23:52:41 <graue> if you could, say, preserve the r stack between executions, that might be something
23:53:15 <kipple> anyway, it will all be solved with the next version of Kipple (whenever that will be done.....)
23:54:29 <kipple> so, calamari, what are you coding the game in? assembler?
23:55:14 <kipple> is the 2k limit on the source code or the binary or both?
23:56:04 <calamari> for interpreted languages there is a different limit, I think it's 2899 bytes of source
23:56:18 <calamari> the source doesn't matter for compiled/assembled languages
23:56:42 <calamari> I can't remember the max binary size, but iirc more than 2048 bytes (which makes no sense)
23:57:17 <calamari> and you also get an 8k data file
23:58:19 <calamari> ahh here is the binary number, 2799 bytes
23:59:21 <calamari> then also, if you really want, you can use 2929 bytes for an interpreted source :)
23:59:45 <calamari> the rules of the contest are esoteric, at least.. hehe