←2007-01-07 2007-01-08 2007-01-09β†’ ↑2007 ↑all
00:12:37 -!- Sgeo has quit ("Ex-Chat").
00:27:11 <ihope_> ~pexec print "exvckhjo"
00:27:16 <ihope_> Wait, anonymous function?
00:29:48 <bsmntbombdood> ?
00:30:42 <ihope_> |<-- anonfunc has left chat.us.freenode.net (Connection timed out)
00:30:47 <bsmntbombdood> so?
00:30:48 <ihope_> Anonymous function.
00:31:34 <bsmntbombdood> ...
00:40:33 <bsmntbombdood> ~~~~~~~~
00:43:16 <bsmntbombdood> ~pexec while 1: self.raw("PRIVMSG #esoteric :It's %s" % time.asctime(time.gmtime())); __import__("time").sleep(60 * 30);
00:43:16 <bsmnt_bot_chroot> It's Mon Jan 8 00:37:35 2007
00:43:22 <bsmntbombdood> ~ps
00:43:23 <bsmnt_bot_chroot> 0: 'while 1: self.raw("PRIVMSG #esoteric :It\'s %s" % time.asctime(time.gmtime())); __import__("time").sleep(60 * 30);', 6.84 seconds
00:48:21 <bsmntbombdood> My bot is cool
00:49:53 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:49:56 -!- bsmnt_bot_chroot has joined.
00:52:42 <bsmntbombdood> very cool
00:54:53 <ihope_> What are asctime and gmtime?
00:55:12 <ihope_> Ascension time and game time?
00:55:13 <bsmntbombdood> gmtime == time from epoch
00:55:23 <bsmntbombdood> asctime formats it
00:55:32 <ihope_> I see.
00:55:37 <ihope_> And what's the logic behind those names?
00:55:45 <bsmntbombdood> dunno
00:56:02 <ihope_> Maybe they're... um...
00:56:18 <bsmntbombdood> ~pexec self.raw("PRIVMSG #esoteric :%s" % time.gmtime())
00:56:19 <bsmnt_bot_chroot> (2007, 1, 8, 0, 50, 37, 0, 8, 0)
00:56:27 <bsmntbombdood> oh right
00:56:38 <ihope_> Maybe "a" is the Spanish pronoun "a" which can mean "to", and "s" stands for "string" and "c" for "converted".
00:56:45 <bsmntbombdood> heh
00:56:50 <bsmntbombdood> http://docs.python.org/lib/module-time.html
00:56:53 <ihope_> And gmtime would be like in GMT.
00:57:41 <ihope_> Or maybe asctime is short for ASCII.
00:58:03 <bsmntbombdood> who knows
00:58:08 <bsmntbombdood> quien sabe
01:00:27 <oerjan> that would probably be "convertado" or something.
01:00:51 <ihope_> And what's "string"?
01:01:15 <oerjan> no, it's generalissimo morte, a reference to Franco (ref. Monty Python)
01:01:37 <ihope_> ...What?
01:01:44 <ihope_> Oh.
01:01:53 <ihope_> Does that mean "generally dead"?
01:02:07 <oerjan> no, it means the Generalissimo is dead.
01:02:39 <ihope_> What's a Generalissimo?
01:03:21 <oerjan> There is only one Generalissimo. You do know he died not very long after the epoch.
01:03:55 <oerjan> Although to some, it seemed like an eternity.
01:07:16 <bsmntbombdood> ~exec foo
01:07:23 * bsmntbombdood feels leet
01:07:24 <fizzie> The "gmtime" name quite likely comes from "GMT", since there's also "localtime" which returns a struct tm with the numbers in the local time zone.
01:08:20 <oerjan> but everyone knows it's called UTC nowadays. hmph.
01:08:28 <ihope_> ~exec self.foo
01:08:29 <bsmntbombdood> ~exec hmph
01:08:39 <bsmntbombdood> pexec...
01:08:51 <ihope_> Well, stop using ~exec~
01:08:55 <bsmntbombdood> fine
01:08:57 <ihope_> s/~/!/
01:09:01 <ihope_> ~pexec self.foo
01:09:18 <ihope_> ~pexec self.self.self.raw("JOIN #esoteric")
01:09:42 <bsmntbombdood> ...
01:09:51 <oerjan> you could switch exec and pexec, since p can be either "public" or "privileged" as you wish.
01:10:11 <bsmntbombdood> I suppose
01:10:13 <fizzie> I'm less sure about "asctime"; it might be about ascii, or the "as" might be something mysterious. After all, there's ctime() which does to time_t the same thing asctime does to a struct tm. (And the "c" _there_ is probably from "convert".)
01:10:17 <ihope_> I might well start using lots of ~pexec then.
01:10:33 <bsmntbombdood> ihope_: want me to switch?
01:10:44 <ihope_> Might as well.
01:10:54 <ihope_> And by that, I mean yes.
01:11:11 <bsmntbombdood> ~quit
01:11:11 -!- bsmnt_bot_chroot has quit.
01:11:14 -!- bsmnt_bot_chroot has joined.
01:11:17 <bsmntbombdood> there you go
01:13:49 <bsmntbombdood> ~exec print "fooasdf"
01:14:11 <ihope_> ~exec bot.exec_execer("bot.raw('PRIVMSG #esoteric foo')",(globals(),locals()))
01:14:12 <bsmnt_bot_chroot> foo
01:14:19 <ihope_> Always fun.
01:14:39 <bsmntbombdood> always
01:15:00 <ihope_> Every single time.
01:15:24 <bsmntbombdood> ~exec bot.exec_execer("try:\n raise "foo",(globals(),locals()))
01:15:28 <bsmntbombdood> erg
01:16:15 <bsmntbombdood> ~exec bot.exec_execer("try:\n raise \"foo\"\nexcept:\n print 'hi'",(globals(),locals()))
01:16:23 <bsmntbombdood> yay
01:58:13 -!- CakeProphet has joined.
01:59:06 <CakeProphet> .msg memoserv del 1
01:59:11 <CakeProphet> er...
02:02:46 <bsmntbombdood> ~raw PRIVMSG CakeProphet :Fail
02:02:50 <bsmntbombdood> :)
02:06:02 <CakeProphet> :(
02:07:39 <bsmntbombdood> :)
02:08:49 -!- ShadowHntr has quit ("End of line.").
02:14:20 <ihope_> :(
02:14:31 <ihope_> :)
02:14:41 <ihope_> Wait, what?
02:15:53 -!- pikhq has quit (Read error: 54 (Connection reset by peer)).
02:16:33 <bsmntbombdood> ~foo
02:16:48 <oerjan> !ps
02:16:52 <EgoBot> 2 oerjan: ps
02:17:11 <oerjan> !daemon cat bf ,[.,]
02:17:22 <oerjan> !cat food
02:17:26 <EgoBot> food
02:17:36 <oerjan> I just wanted to say that.
02:19:41 -!- pikhq has joined.
02:32:26 <bsmntbombdood> come on, someone do something clever with bsmnt_bot_chroot
02:33:30 <oerjan> ~exec bot.raw("PRIVMSG :Like what?")
02:33:55 <oerjan> well that didn't work.
02:34:03 <bsmntbombdood> You fail at the IRC protocol
02:34:15 <oerjan> argh!
02:34:30 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :Like this then?")
02:34:30 <bsmnt_bot_chroot> Like this then?
02:34:37 <bsmntbombdood> yep
02:43:58 <oerjan> ~exec argle = 3
02:44:24 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + argle)
02:44:41 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:44:57 <oerjan> hmm...
02:45:04 <oerjan> ~exec bot.argle = 3
02:45:08 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:45:37 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :Huh?")
02:45:37 <bsmnt_bot_chroot> Huh?
02:46:18 <oerjan> hmm..
02:46:24 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(bot.argle))
02:46:24 <bsmnt_bot_chroot> 3
02:46:29 <oerjan> whew
02:47:35 <bsmntbombdood> oerjan: might want to join #bsmnt_bot_chroot_errors to see your errors
02:48:07 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:53:41 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
02:54:07 -!- CakeProphet has joined.
03:11:53 <bsmnt_bot_chroot> 4
03:13:36 <bsmnt_bot_chroot> (1, 2)
03:40:52 -!- pikhq has quit ("leaving").
04:08:33 -!- ihope_ has quit (Connection timed out).
04:45:37 -!- bsmnt_bot_chroot has quit.
04:45:40 -!- bsmnt_bot_chroot has joined.
04:48:47 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:48:49 -!- bsmnt_bot_chroot has joined.
04:50:26 -!- bsmnt_bot_chroot has quit (Client Quit).
04:50:29 -!- bsmnt_bot_chroot has joined.
04:51:14 -!- bsmnt_bot_chroot has quit (Client Quit).
04:51:17 -!- bsmnt_bot_chroot has joined.
04:52:08 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:52:10 -!- bsmnt_bot_chroot has joined.
05:06:03 -!- CakeProphet has quit (Read error: 113 (No route to host)).
05:15:53 -!- oerjan has quit ("leaving").
05:24:04 <bsmntbombdood> mmm
05:24:16 <bsmntbombdood> I think I figured out how to do sandboxed execution in python
05:28:42 -!- RodgerTheGreat has quit.
05:34:53 -!- ShadowHntr has joined.
05:39:00 <bsmntbombdood> allowed_execs = copy.copy(__builtins__.__dict__)
05:39:18 <bsmntbombdood> allowed_execs["__import__"] = None
05:39:39 <bsmntbombdood> exec "importing anything here is impossible" in allowed_builtins
05:39:43 <bsmntbombdood> er
05:39:51 <bsmntbombdood> s/allowed_execs/allowed_builtins/
05:40:36 <bsmntbombdood> allowed_builtins["open"] = None
05:40:45 <bsmntbombdood> exec "importing or opening anything here is impossible" in allowed_builtins
05:57:11 <bsmntbombdood> I think
05:57:39 <bsmntbombdood> oops, nope
05:57:47 <bsmntbombdood> exec "exec 'print open(\"foo\")' in {}" in my_builtins
05:57:48 <bsmntbombdood> :(
05:57:59 <bsmntbombdood> that's a pity
06:01:17 <bsmntbombdood> And exec is a statement, so that can't be taken away
06:36:43 -!- calamari has joined.
06:41:54 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:28:58 -!- ShadowHntr has quit ("End of line.").
10:39:20 -!- ihope_ has joined.
10:39:46 -!- ihope_ has changed nick to ihope.
13:35:57 -!- ihope has quit (Connection timed out).
16:22:17 -!- FabioNET has joined.
16:49:51 -!- digital_me has joined.
16:53:49 -!- tgwizard has joined.
17:18:35 -!- FabioNET has quit (Connection timed out).
17:18:45 -!- RodgerTheGreat has joined.
17:18:52 <RodgerTheGreat> hi
17:46:52 -!- FabioNET has joined.
18:22:02 -!- FabioNET has quit (Client Quit).
18:34:36 -!- anonfunc_ has quit (Read error: 110 (Connection timed out)).
19:08:28 -!- jix__ has joined.
19:10:04 -!- jix__ has changed nick to ijx.
19:10:07 -!- ijx has changed nick to jix.
19:16:28 -!- RodgerTheGreat_ has joined.
19:16:28 -!- RodgerTheGreat has quit (Read error: 54 (Connection reset by peer)).
19:16:47 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
19:23:22 -!- ShadowHntr has joined.
19:27:41 <oklopol> http://esoteric.voxelperfect.net/wiki/PATH
19:27:49 <oklopol> can't be right
19:27:51 <oklopol> the example
19:52:17 <oklopol> http://esoteric.voxelperfect.net/wiki/BF-SC
19:52:39 <oklopol> this i don't understand, if you've got spare time, please tell me :)
19:53:03 <oklopol> ...what the silver coinage has to do with it
19:53:08 <oklopol> *sylver
19:59:49 -!- ShadowHntr has quit ("End of line.").
20:19:10 -!- pgimeno has changed nick to bobot.
20:19:28 -!- bobot has changed nick to pgimeno.
20:45:04 -!- oerjan has joined.
20:49:50 <bsmntbombdood> ~foo
20:54:20 -!- ihope_ has joined.
20:54:44 -!- ihope_ has changed nick to ihope.
20:56:04 -!- CakeProphet has joined.
20:56:32 <ihope> bsmnt!
20:56:38 <ihope> _bot_chroot!
20:59:19 <oklopol> i understand sylver coinage
20:59:26 <oklopol> not how it is related to that language
21:00:40 <oerjan> well, have you read the side effects of setting a cell, in the second paragraph under the box?
21:02:00 <ihope> Talking about BF-SC, I take it.
21:02:10 <oerjan> yep
21:02:34 <ihope> Yeah, setting a cell is like playing it.
21:05:03 -!- Spacerat3004 has joined.
21:05:52 <oklopol> yeah, what is the relation between sylver coinage and bf-sc?
21:06:03 <oklopol> why would 6 be set if i set 3?
21:06:17 <oerjan> because it says so in that paragraph.
21:06:30 <oklopol> oh
21:06:47 <oklopol> i thought it meant it's what automatically happens given those rules
21:07:12 <oerjan> hope that is cleared up now. :)
21:08:40 <oerjan> ok, away for a while
21:11:12 <bsmntbombdood> iho!
21:11:15 <bsmntbombdood> pe!
21:11:28 <ihope> :-
21:11:30 <ihope> )
21:11:59 <bsmntbombdood> ~exec self.print_callbacks()
21:12:06 <ihope> Let's add some games together!
21:12:17 <bsmntbombdood> ~exec bot.print_callbacks()
21:12:25 <bsmntbombdood> games?
21:12:31 <ihope> Yes, games.
21:12:45 <bsmntbombdood> I want to get scoping right for ~exec
21:12:57 <ihope> They can be added, as long as they're of the right kind.
21:13:18 <bsmntbombdood> huh?
21:13:20 <bsmntbombdood> ~quit
21:13:20 -!- bsmnt_bot_chroot has quit.
21:13:24 -!- bsmnt_bot_chroot has joined.
21:13:37 <ihope> Namely, the kind where each player has a set of moves, and each move changes the game to a different one.
21:14:17 <bsmntbombdood> ~exec self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % globals())
21:14:21 <bsmntbombdood> ~exec self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % locals())
21:14:46 <ihope> And the one who can't move loses.
21:16:20 <Spacerat3004> no IRP allowed
21:16:21 <ihope> Rather, the player who can't move if it's that players turn. If it's your turn and you can't move, you lose.
21:16:21 <Spacerat3004> damn
21:16:34 <ihope> Spacerat3004: I think #irp is for that.
21:16:38 <Spacerat3004> oh i see
21:16:42 <ihope> Also, you can do this:
21:16:48 -!- ihope has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - for brainfuck-specific discussion, go to ##brainfuck - IRP ALLOWED - Pastebin: http://pastebin.ca/.
21:16:56 <ihope> :-)
21:17:07 <bsmntbombdood> heh
21:18:46 <ihope> So why don't we... um, hmm.
21:19:02 <ihope> Let's add * to itself.
21:20:21 <ihope> * times 2 = the player who moves third loses
21:20:51 <ihope> 0 = the first player loses, * = the second player loses, * times 2 = the third player loses, * times 3 = the fourth player loses...
21:20:58 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:21:15 <CakeProphet> hmm... this is pretty cool..
21:21:52 <CakeProphet> I'm making an esolang for the sole purpose of dealing with cause-effect chains in a MUD
21:22:03 <CakeProphet> Just cool that I'll actually be -using- it.... a lot.
21:28:59 <ihope> It'll be an esolang?
21:29:16 <ihope> Surely being an esolang is the sole purpose of an esolang.
21:30:00 <ihope> Well, I guess it depends on how you define an esolang.
21:30:25 <ihope> I'd define it as a language that's intentionally weird in some way.
21:31:53 <CakeProphet> It's going to look something like ORK with coroutines, not quite so object-oriented, not quite so verboose, and with weirder syntax.
21:32:30 <CakeProphet> Right now I'm calling it "Sophia" (It's what I call almost all of my projects)
21:36:53 -!- Sgeo has joined.
21:38:51 <oerjan> Playing with nimbers, I see
21:39:23 <oerjan> Wait a minute...
21:39:36 <oerjan> third and fourth players?
21:42:23 <oerjan> Is this something different from Conway games?
21:44:41 <oerjan> Or is it just a different way of looking at symmetric ones?
21:46:50 <oklopol> http://esoteric.voxelperfect.net/wiki/Brainloller
21:47:07 <oklopol> rotate rigth?
21:47:11 <oklopol> *right
21:47:20 <oklopol> how the fuck do you rotate right?
21:47:25 <oklopol> is that clockwise?
21:48:02 <ihope> Yes.
21:48:12 <ihope> Right = clockwise, left = counter-clockwise.
21:49:08 <ihope> oerjan: if you have two players taking turns, third player = first player and fourth player = second player.
21:49:21 <ihope> The players who make the third and fourth moves.
21:52:18 <oerjan> right. i am used to considering all games where first player loses to be equivalent.
21:52:57 <ihope> They're not all equivalent if you want to add them together.
21:52:57 <oklopol> http://esoteric.voxelperfect.net/wiki/Brainfork
21:53:00 <oklopol> "Because Brainfork is a proper superset of Brainfuck, all Brainfuck programs are also valid Brainfork programs with identical semantics."
21:53:14 <oklopol> what about the brainfuck program Y?
21:53:20 <oerjan> i do think they are
21:53:24 <ihope> oklopol: except those containing Y :-)
21:53:27 <oklopol> :)
21:53:46 <oerjan> all _stripped_ brainfuck programs.
21:53:55 <ihope> Yeah, that.
21:54:02 <oklopol> yeah, i'm making a compendium of all bf-copies on the wiki site, if compendium means what i think it means
21:54:20 <ihope> A compendium of all whats?
21:54:25 <oklopol> yeah, i know what it meant, i don't know the use of saying that :)
21:54:34 <oklopol> bf-based langs
21:54:55 <oklopol> brainfuxxors
21:55:16 <oerjan> adding a game that the first player loses is an identity operation as far as outcome is concerned.
21:55:25 <oklopol> brainfork duplicates the memory, right?
21:55:37 <oerjan> as long as there are two players, at least.
21:55:41 <ihope> oklopol: I don't think so.
21:55:45 <oklopol> okay
21:55:57 <oklopol> "When a Y is encountered, the current thread forks, with the current cell being zeroed in the parent thread, and the pointer being moved one to the right and that cell set to 1 in the child."
21:56:01 <oklopol> what does that mean then?
21:56:08 <oklopol> i mean, when forking
21:56:19 <ihope> oerjan: well, if the second player can make a move, then adding it's not an identity operation.
21:56:44 <ihope> oklopol: um... uh, download the interpreter?
21:56:53 <oklopol> bah... k
21:56:55 <oklopol> :D
21:57:42 <ihope> I think each thread has its own tape pointer, but they share a tape.
21:57:50 <ihope> I mean, they have to share *something*, no?
21:58:28 -!- Spacerat3004 has quit.
21:58:38 <oklopol> dunno
21:58:41 <oklopol> i'll test
21:59:01 <oklopol> just don't understand "with the current cell being zeroed in the parent thread, and the pointer being moved one to the right and that cell set to 1 in the child"
21:59:07 <oklopol> set to 1 in the child
21:59:23 <oerjan> i mean the first player to move, of course. if that player loses immediately then the second player never gets to make a move.
21:59:42 <ihope> oerjan: losing is not being able to move.
22:01:24 <ihope> When simply playing a game, all games where the first player loses are the same, but not if you can add them together and such.
22:02:25 <ihope> Arithmetic, you know?
22:02:30 <oerjan> ihope: but they _are_ equivalent. note that i am saying this only for the first player, it is not true for the second.
22:03:37 <ihope> All games where the first player can't make any moves are the same from the point of view of the first player, until the second player makes a move.
22:04:29 <oerjan> i am saying this, precisely: if X is a game where the first player loses, and Y an arbitrary (symmetric) game, then X + Y has the same outcome as Y.
22:04:33 <bsmntbombdood> FOOOOOOOOOOOOOOOOOOO
22:04:55 <oerjan> i.e. the same player wins.
22:05:27 <oerjan> (assuming optimal play)
22:06:32 <bsmntbombdood> duck typing ftw
22:06:59 <oerjan> monads and multiparameter type classes ftw ;)
22:07:22 <ihope> oerjan: but the second player might be able to make a move in X, which might change things.
22:07:53 <ihope> If neither player can move in X, then you have the zero game, which is an additive identity.
22:08:27 <ihope> Actually, it's *the* additive identity, I think.
22:08:43 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:08:45 -!- bsmnt_bot_chroot has joined.
22:08:51 <bsmntbombdood> ~exec "error
22:08:57 <bsmntbombdood> ~exec "error
22:08:59 <oerjan> well you might think that, but then the first player can just do another move to turn the X part back into losing.
22:09:12 <bsmntbombdood> ~exec self.raw("PRIVMSG #esoteric :foo")
22:09:12 <bsmnt_bot_chroot> foo
22:09:25 <bsmntbombdood> ~exec raise ValueError
22:09:29 <bsmntbombdood> argh
22:10:13 <ihope> oerjan: yes, but that's certainly not the only thing the first player can do.
22:10:15 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:10:16 -!- bsmnt_bot_chroot has joined.
22:10:42 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:10:44 -!- bsmnt_bot_chroot has joined.
22:10:55 <oerjan> no. but if the first player wins Y, then he can win X+Y by using that strategy.
22:11:07 -!- bsmnt_bot_chroot has quit (Client Quit).
22:11:09 -!- bsmnt_bot_chroot has joined.
22:11:11 <ihope> Hmm...
22:11:17 <ihope> Yes, that's true.
22:11:35 <ihope> What if after the second player makes his/her move, the first player still can't move in X?
22:12:15 <oerjan> well then the second player cannot have moved in X, because any initial move in X turns that part into winning.
22:12:17 -!- bsmnt_bot_chroot has quit (Client Quit).
22:12:19 -!- bsmnt_bot_chroot has joined.
22:12:29 <ihope> What?
22:13:09 <ihope> Let's say the first player is L and the second player is R.
22:13:27 <ihope> And 0 = { | }. So what about if X = { | 0 }?
22:13:40 <ihope> The second player moves once, then X is done.
22:14:11 -!- bsmnt_bot_chroot has quit (Client Quit).
22:14:13 -!- bsmnt_bot_chroot has joined.
22:14:21 <oerjan> I thought we were considering symmetric games.
22:14:33 <ihope> Symmetric games?
22:14:53 <oerjan> where the left and right options are the same.
22:14:58 -!- bsmnt_bot_chroot has quit (Client Quit).
22:14:59 -!- bsmnt_bot_chroot has joined.
22:15:52 -!- bsmnt_bot_chroot has quit (Client Quit).
22:15:54 -!- bsmnt_bot_chroot has joined.
22:16:13 <oerjan> otherwise we need to be careful about distinguishing L and R from the first and second player to move. hmm...
22:16:27 <ihope> Well, if L moves first...
22:17:27 <oerjan> although for the particular case { | } at least, addition is exactly identity.
22:17:35 <ihope> Yeah.
22:18:57 <oerjan> let's see, in X, L loses if first.
22:20:01 <ihope> Well, { | 0 } is essentially "R is allowed to pass once" when used with addition.
22:20:39 <ihope> Is { | 0 } the same as, say, { | -1/2 }?
22:20:59 <oerjan> so let N be an arbitrary loss for the first player. If L moves first in X+N, he must move in the N part, then R can again respond with turning the N part back into losing.
22:21:04 <ihope> That is, { | {-1|0} } where -1 = { | 0 }?
22:22:17 <ihope> Well... { | 0 } is "R moves", so this one's either "R moves, L moves, R moves" or "R moves, R moves". Doesn't seem the same to me.
22:23:38 <oerjan> i think they are both -1 as surreal numbers.
22:23:41 <ihope> If N is a loss for the first player, then all moves by L can essentially be countered by R, meaning N is effectively not an option for L.
22:23:54 <ihope> As the surreal numbers, yes, but I guess it's not true for games.
22:24:22 <oerjan> so they have the same outcome as a single game.
22:24:50 <oerjan> whether they are the same when added to any game i am not sure.
22:25:29 <ihope> Well, N isn't an option for L, but there is still the stuff R can do. N may allow passes, which may be an advantage for R.
22:25:39 <ihope> N certainly isn't an advantage for L.
22:26:34 <oerjan> note that N is a loss for the first player _whether that is L or R_
22:26:47 <ihope> Oh, right...
22:27:30 <oerjan> so essentially they both will try to avoid it.
22:27:32 <ihope> So a player can effectively move only once in N.
22:27:47 <oerjan> yeah.
22:28:51 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:28:53 -!- bsmnt_bot_chroot has joined.
22:28:58 <bsmntbombdood> ~exec print "hi"
22:29:01 <bsmntbombdood> damn
22:29:32 <bsmntbombdood> ~exec print globals()["sys"]
22:29:35 <bsmntbombdood> argh
22:30:07 <bsmntbombdood> ~exec print "exception
22:30:26 <bsmntbombdood> ~exec print getattr(sys,"stdout")
22:30:32 <bsmntbombdood> ~exec print getattr(sys,"stdout").__name__
22:30:49 <bsmntbombdood> ~exec print getattr(sys,"stdout").__class__.__name__
22:30:52 <bsmntbombdood> hmmm
22:31:07 <bsmntbombdood> ~exec print sys.stdout.__class__.__name__
22:31:16 <bsmntbombdood> ~exec sys.stdout.write("foo")
22:31:16 <bsmnt_bot_chroot> foo
22:31:26 <bsmntbombdood> hmmm
22:31:30 <ihope> Well, wait.
22:31:44 <ihope> If a player moves in N, that player can't move again in N, but the other player can.
22:32:05 <oerjan> yes, and the other player will usually want to move N back to losing.
22:33:14 <oerjan> the only reason a player might want to move in N first is if he loses in X. but then the other player can always respond.
22:33:28 <bsmntbombdood> ~exec print sys.platform
22:33:32 <bsmntbombdood> ~exec print sys.platfasdfasdf
22:33:47 <bsmntbombdood> hehe, __getattr__ rocks
22:33:58 <ihope> Hmm...
22:34:53 <oerjan> i think my last sentence constitutes a proof. :)
22:35:11 <ihope> I guess so. If you move in N, then... wait...
22:36:25 <bsmntbombdood> ~exec print sys.__stdout__
22:36:30 <bsmntbombdood> ~exec print sys.stdout
22:37:14 <bsmntbombdood> argggh
22:37:19 <ihope> Well, if neither player moves in N, then X is lost by someone, then N won't help.
22:38:31 <bsmntbombdood> print must use some kind of global version of stdout
22:38:44 <ihope> Wait... did you say N is a first-player loss?
22:38:48 <bsmntbombdood> ~exec print >> sys.stdout, "hi"
22:38:48 <bsmnt_bot_chroot> hi
22:38:52 <oerjan> yes
22:38:57 <bsmntbombdood> ~exec print >> sys.__stdout__, "hi"
22:39:09 <ihope> Isn't 0 the only first-player loss, then?
22:39:26 <oerjan> no, consider {{0|0}|{0|0}}
22:39:33 <bsmntbombdood> odd
22:39:35 <ihope> Yeah, there's that, I guess.
22:40:15 <oerjan> and for symmetric games, X+X is a first-player loss.
22:40:42 <ihope> Oh, right. If one player moves in N, the other player can turn it back into another first-player loss.
22:40:51 <ihope> After all, it's a first-player loss.
22:41:03 <oerjan> yep.
22:41:17 <ihope> So are all first-player losses essentially equivalent to 0?
22:41:27 <oerjan> that's what i am saying :)
22:41:36 <bsmntbombdood> ~exec sys.stderr.write("foo")
22:41:39 <bsmntbombdood> ~exec sys.stdout.write("foo")
22:41:39 <bsmnt_bot_chroot> foo
22:42:01 <bsmntbombdood> well, now we have sys.stdout going to the current channel, and sys.stderr going to #bsmnt_bot_chroot_errors
22:42:18 <ihope> Yes, I see.
22:42:55 <oerjan> also, for surreal numbers, x + (­x) is a first-player loss.
22:42:58 <bsmntbombdood> but print isn't printing to sys.stdout :/
22:42:59 -!- ShadowHntr has joined.
22:43:16 <oerjan> i am not quite sure about x + (-x) in general.
22:43:54 <oerjan> in fact i have a recollection that some things break down then.
22:44:00 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:44:05 -!- bsmnt_bot_chroot has joined.
22:44:06 <bsmntbombdood> ~exec sys.stdout.write("foo")
22:44:10 <bsmnt_bot_chroot> foo
22:44:32 <bsmntbombdood> ~exec print "foo"
22:44:35 <bsmntbombdood> nooo
22:46:26 <oerjan> bsmntbombdood: Strange, as on python.org: "Standard output is defined as the file object named stdout in the built-in module sys."
22:46:54 <bsmntbombdood> yeah
22:46:56 <oerjan> (From http://docs.python.org/ref/print.html)
22:47:33 <bsmntbombdood> I think it is going from the real value of sys.stdout, not the value as defined in the enviroments given to exec
22:48:30 <ihope> oerjan: by x + (x), do you mean x + (-x)?
22:48:41 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:48:42 -!- bsmnt_bot_chroot has joined.
22:48:44 <bsmntbombdood> ~exec sys.stdout.write("foo")
22:48:44 <bsmnt_bot_chroot> foo
22:48:49 <oerjan> ihope: for symmetric games, -x = x
22:49:24 <ihope> Are all surreal numbers symmetric games?
22:49:32 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:33 <oerjan> none of them except 0.
22:49:33 -!- bsmnt_bot_chroot has joined.
22:49:34 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:36 -!- bsmnt_bot_chroot has joined.
22:49:38 <bsmntbombdood> ~exec sys.stdout.write("foo")
22:49:39 <bsmnt_bot_chroot> foo
22:49:43 <bsmntbombdood> ~exec print "foo"
22:49:47 <oerjan> the symmetric games correspond to the nimbers.
22:49:53 <bsmntbombdood> ~exec print >> sys.stdout, "foo"
22:49:54 <bsmnt_bot_chroot> foo
22:49:57 <bsmntbombdood> argh
22:50:55 <oerjan> they are games where the situation for L and R is always the same. only who goes first matters.
22:53:38 <ihope> And nim games are sums of star games.
22:56:15 <ihope> I take it that means *1 + *2 = *3.
22:56:26 <ihope> And *1 + *1 is, of course, 0.
22:56:40 <oerjan> addition is xor.
22:56:55 -!- bsmntbombdood has changed nick to xor.
22:56:59 <xor> xor!
22:57:05 -!- xor has changed nick to bsmntbombdood.
22:57:53 <ihope> Last Seen: 24 seconds ago (bsmntbombdood is online)
22:58:13 <ihope> I hope xor isn't yours, bsmntbombdood...
22:58:31 <bsmntbombdood> of course it is
22:58:36 <ihope> Is it?
22:58:41 <bsmntbombdood> yeah
22:58:55 <oerjan> i've seen it before.
22:59:22 <ihope> Erm, I didn't mean to do that.
22:59:40 <oerjan> do what?
22:59:55 <ihope> I accidentally sent a memo to bsmntbombdood.
23:00:11 <bsmntbombdood> yay! a memo!
23:00:27 <ihope> And you thought nobody used those things...
23:00:28 <ihope> ;-)
23:00:34 <oerjan> oh no! now he will be infected by the corporate virus!
23:01:25 <oerjan> apologies to anyone actually working at a corporation.
23:01:28 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
23:01:34 <ihope> What's it say, bsmntbombdood?
23:01:46 <bsmntbombdood> Foo!\
23:01:56 <ihope> And the other one?
23:02:04 <bsmntbombdood> there was only one
23:02:12 <ihope> I sent one to xor, too. :-)
23:02:18 -!- bsmntbombdood has changed nick to xor.
23:02:32 <xor> Foo!\
23:02:46 <xor> You're bsmntbombdood, then?
23:02:55 <ihope> Bingo.
23:03:03 -!- xor has changed nick to bsmntbombdood.
23:04:09 <ihope> Now, what does multiplication mean for games?
23:06:48 <oerjan> i don't think multiplication makes sense outside the surreal numbers. But i never got around to really understanding it.
23:07:35 <oerjan> basically i think the ordering of the subgames plays an essential role, which means only surreals work.
23:10:45 <oerjan> or it may have been something about multiplication not preserving the equivalence we have just discussed.
23:17:15 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
23:17:50 -!- RodgerTheGreat has joined.
23:18:34 -!- RodgerTheGreat has quit (Remote closed the connection).
23:19:07 -!- RodgerTheGreat has joined.
23:20:41 -!- RodgerTheGreat has quit (Remote closed the connection).
23:21:22 -!- RodgerTheGreat has joined.
23:22:58 <ihope> How great he is!
23:27:57 <CakeProphet> oh you crazies with your game theory.
23:30:52 -!- RodgerTheGreat has quit (Remote closed the connection).
23:31:32 -!- RodgerTheGreat has joined.
23:31:34 <CakeProphet> Anyone recommend a good IDE?
23:31:41 <CakeProphet> paticularly... one that supports Python stuff?
23:32:00 <CakeProphet> (bare in mind... I'm on XP)
23:34:20 <oerjan> Alas, I just use gVim (an editor) + WinHugs (for Haskell only)
23:41:45 <bsmntbombdood> CakeProphet: emacs
23:43:20 -!- bsmntbombdood has left (?).
23:43:25 -!- bsmntbombdood has joined.
23:44:32 <bsmntbombdood> ~~~~~~~~exec
23:46:34 <bsmntbombdood> fooo
23:46:51 <bsmntbombdood> ~exec print "Work"
23:46:54 <bsmntbombdood> argh
23:47:06 <bsmntbombdood> ~exec print >> sys.stdout, "Work"
23:47:06 <bsmnt_bot_chroot> Work
23:49:24 -!- tgwizard has quit (Remote closed the connection).
23:49:39 <bsmntbombdood> gar
23:55:21 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:55:25 -!- bsmnt_bot_chroot has joined.
23:55:30 <bsmntbombdood> ~exec print >> sys.stdout, "Work"
23:55:30 <bsmnt_bot_chroot> Work
23:59:08 <bsmntbombdood> ~exec "Work"
23:59:12 <bsmntbombdood> ~exec print "Work"
23:59:16 <bsmntbombdood> ugh
←2007-01-07 2007-01-08 2007-01-09β†’ ↑2007 ↑all