←2014-01-30 2014-01-31 2014-02-01→ ↑2014 ↑all
00:15:29 -!- namaskar has quit (Ping timeout: 240 seconds).
00:21:56 -!- Sgeo has joined.
00:23:10 -!- namaskar has joined.
00:31:16 -!- miguel1 has joined.
00:45:36 <Bike> is this config option thing on by default i.e. should i worry
00:48:54 <kmc> i think recent Ubuntu kernels have it
00:49:12 <kmc> do you admin any systems where the separation between user and root accounts is an important security property?
00:50:12 <Bike> lol
00:50:28 <kmc> it's a serious question!
00:50:49 <Bike> yes, but the answer is no, i'm just a desktop luser
00:51:07 <int-e> google turned up http://seclists.org/oss-sec/2014/q1/187 which is fairly detailed (but doesn't say whether COMPAT_USE_64BIT_TIME is enabled by default)
00:51:08 <Sgeo> Curse of the Swine, a blue card, produces green tokens
00:51:35 <kmc> I suppose that it also matters if you're relying on certain kinds of sandboxing
00:52:04 <kmc> so it might diminish the security of chromium or something
00:52:29 <kmc> nelhage suggests using it to break out of docker containers
00:52:29 <miguel1> alguien de aragua
00:53:20 <kmc> `? welcome.es
00:53:21 <HackEgo> ​¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.)
00:55:09 <miguel1> naguara 72 personas y nadie hala
00:56:00 <kmc> no hablamos español :/
00:56:03 <kmc> (yo un poquito)
00:57:41 <quintopia> kmciao
00:57:49 <kmc> :)
00:58:30 <quintopia> isn't there a ...
00:58:45 <quintopia> `bienvenido miguel1
00:58:46 <HackEgo> miguel1: ¡Bienvenido al centro internacional para el diseño y despliegue de lenguajes de programación esotéricos! Por desgracia, la mayoría de nosotros no hablamos español. Para obtener más información, echa un vistazo a nuestro wiki: http://esolangs.org/. (Para el otro tipo de esoterismo, prueba #esoteric en irc.dal.net.)
00:58:52 <quintopia> there you go
00:59:08 <quintopia> clearly you don't know enough
00:59:21 <kmc> i should re-learn spanish
01:09:18 -!- tromp has joined.
01:13:33 <miguel1> mmmm ok
01:13:44 -!- yorick has quit (Remote host closed the connection).
01:20:07 -!- miguel1 has left.
01:28:07 <Bike> http://en.wikipedia.org/wiki/-oic_acid and i thought words like "bootstrapping" had convoluted origins. how silly of me.
01:37:57 -!- conehead has quit (Quit: Computer has gone to sleep.).
01:40:32 -!- nooodl has joined.
01:54:39 <pikhq> kmc: Ah, yes. struct timespec is different sizes in i386, x32, *and* x86_64.
01:55:24 <kmc> hilarious
01:55:27 <pikhq> timespec contains a time_t and a long. time_t is: i386 32 bits, x32 64 bits, x86_64 64 bits. long is: i386 32 bits, x32 32 bits, x86_64 64 bits.
01:55:27 * kmc -> dinner
01:55:30 <pikhq> Nasty, no?
01:56:45 <pikhq> Made worse by how the long has a max value of (1 sec in nanosec) - 1.
01:57:19 <pikhq> Soooo the damned system call doesn't even need to exist in x32, but it does anyways.
02:07:22 -!- Phantom_Hoover has quit (Remote host closed the connection).
02:48:38 <Sgeo> Is the "Manipulative Monstrosities" intro pack halfway decent?
02:48:45 <Sgeo> Although it's kind of too late to take back my purchase
02:48:52 -!- zzo38 has joined.
02:49:05 <Sgeo> MTGO doesn't seem to have 'event packs' which I heard are more competititve for things like Friday Night Magic
02:50:26 <coppro> is sgeo zzo38 today?
02:50:58 <Sgeo> I don't think I am, but you can decide for yourself if you want to
02:51:32 <coppro> you seem to be dropping non sequiturs
02:52:07 <zzo38> coppro: I don't think Sgeo is zzo38 today.
02:53:50 <pikhq> Sgeo is definitely not being zzo38 here. These aren't non sequiturs, but inquiries about a game that many of us play.
02:54:02 <pikhq> Though, zzo38 doesn't generally do non sequiturs either.
02:54:11 <pikhq> Linguistic oddness is his thing, not actual nonsense. :)
02:54:53 <Sgeo> I tend to be utterly off any topic anyone else is talking about, but (hopefully) coherent within whatever I'm talking about
02:55:22 <coppro> < Sgeo> Curse of the Swine, a blue card, produces green tokens <- is hardly a query
02:55:54 <coppro> and yes, I'm aware that many of us play Magic; I'm probably the worst of the lot
02:59:47 <zzo38> If new game are made we can avoid all of the problems with the rules of Magic: the Gathering since backward compatibility is no longer required, and make it more mathematically elegant, and fix other problems too (although other people disagree about what these problems are; my opinions are one and other people may disagree some of them). One thing I would do is throw away all of the rules dealing with Constructed format, and have Limited format be
03:01:19 -!- Bike has quit (Ping timeout: 260 seconds).
03:02:37 -!- namaskar has quit (Ping timeout: 272 seconds).
03:05:30 <Sgeo> Um. I think Magic Online thinks I'm missing basic lands for the intro pack I bought
03:10:41 <Sgeo> Apparently Duels of the Planeswalkers 2014 doesn't fully follow the rules? :(
03:11:23 -!- Sorella has quit (Quit: It is tiem!).
03:18:34 -!- nooodl has quit (Quit: Ik ga weg).
03:23:37 <zzo38> I have idea which is to make up a chess variant based on Famicom PPU.
03:27:30 <kmc> that's a very zzo38 idea
03:27:37 <kmc> how would it work
03:28:12 <zzo38> You can have only eight "sprites" pieces on each row, and the "tiles" pieces can only be one palette per 2x2 area.
03:37:16 <kmc> is there good software for prototyping chess variants
03:39:03 <zzo38> There is Zillions, but it is proprietary and Windows-only, and limited in many ways.
03:40:33 <Sgeo> On the plus side, Zillions has awesome music
03:41:10 <Sgeo> ... awesome might be stretching it
03:41:16 <Sgeo> Sounds classical, but I can't put a name to it
03:41:18 -!- ^v has quit (Quit: http://i.imgur.com/MHuW96t.gif).
03:42:31 <kmc> pikhq: why is long only 32 bits on x32? is it because there's a lot of code which assumes sizeof(long) == sizeof(void*) ?
03:43:02 <zzo38> However the source files are plain text, in a Lisp like format, so presumably you could make up another program which would be able to parse them and run them, without computer player, and one other feature also cannot be implemented without that capability, which is the rule which says you have to make multiple jumps which are the maximal total vaule of pieces (although this is a stupid feature anyways; it is too inflexible to be useful).
03:43:42 <Sgeo> http://codu.org/webmidi/gen/29809233003217/29809233003217.ogg
03:43:46 <kmc> build a distributed chess engine based on proof-of-work block chaining
03:44:58 <zzo38> kmc: How do you do that?
03:45:31 <kmc> i don't know but perhaps you do
03:45:35 <Sgeo> What song is that
03:46:45 <quintopia> kmc: "Why is it taking you so long to make your move?" "Actually, I submitted it ten minutes ago, but no one's found a hash yet!"
03:47:42 <kmc> yep
04:05:55 <kmc> unclear what the mining incentive is, unless it has an associated currency
04:05:56 <kmc> like namecoin
04:35:58 <quintopia> well, there doesn't really need to be a mining incentive really. just let the players find their own hashes. yes, the difficulty will be super-low, but the point isn't to prove you worked really super hard. just hard enough that it'd be hard to replicate it later
04:39:03 -!- frogsetsboy has quit (Ping timeout: 245 seconds).
04:48:28 <kmc> I think part of the point would be to have a public append-only history of all games that have been played
04:49:04 <kmc> in which case mining a block needs to be a lot harder than making a move (i.e. a transaction)
04:49:19 <kmc> otherwise somebody with only as much compute power as a few players can rewrite history
04:53:16 <zzo38> Are you trying to make up Bitcoin Chess?
04:53:41 <kmc> slightly
04:53:53 <kmc> `addquote <zzo38> I have idea which is to make up a chess variant based on Famicom PPU.
04:53:55 <HackEgo> 1164) <zzo38> I have idea which is to make up a chess variant based on Famicom PPU.
04:54:42 <kmc> quintopia: I think things also break if blocks get mined faster than they propagate through the P2P network
04:54:53 <kmc> that would make it hard to establish a consensus history wouldn't it
04:55:39 <quintopia> kmc: that's why difficulty resetting is part of the protocol
04:56:22 <quintopia> as it turns out, one can get by with mining speed of like 1min per block
04:56:45 <quintopia> though it does lead to forks slightly more often
04:56:50 <quintopia> or a lot
04:56:59 <quintopia> but consistency is maintained anyway
05:05:51 <kmc> yeah
05:05:58 <kmc> dogecoin has 60 second blocks
05:06:30 <kmc> and is the #3 coin by trade volume and #6 by market cap
05:06:47 <kmc> because the future is ridiculous
05:17:35 <kmc> also their blockchain is huge and growing huger
05:18:06 <quintopia> yeah i know a guy who made a fortune speculating doge
05:23:45 -!- copumpkin has joined.
05:26:34 <pikhq> kmc: Yes.
05:29:52 <quintopia> zzo38: yes
05:36:03 <Sgeo> Just saw someone target a negative seeming spell at themselves
05:36:10 <Sgeo> But guess it's a trade-off... Sign in Blood
05:36:50 <Sgeo> Um. Why is Magic Online claiming that a Swamp is summoning sick?
05:37:09 <pikhq> Did it come into play this turn?
05:37:16 <Sgeo> yes
05:37:19 <pikhq> Then it is.
05:37:32 * Sgeo twitches
05:37:36 <zzo38> Yes it still has summoning sickness, but it doesn't use if it isn't a creature.
05:37:43 <pikhq> If it becomes a creature, then that becomes relevant.
05:38:18 <Sgeo> Also, that player really likes foil Swamps
05:38:30 <Sgeo> Correction: Foil basic lands
05:38:38 <Sgeo> _Virtual_ foil cards
05:38:55 <Sgeo> The interest in virtual foil cards bothers me more than virtual cards in and of themselves
05:39:37 <Sgeo> I might buy a physical card for its prettiness, or a virual card for its gameplay, but can't imagine buying a virtual card for its prettiness
05:40:03 <zzo38> Maybe they drafted such card?
05:40:03 <Sgeo> Although maybe I should just try Cockatrice again
05:40:14 -!- tromp has quit (Remote host closed the connection).
05:40:34 <kmc> a swamp creature
05:40:47 -!- tromp has joined.
05:44:55 <pikhq> Sorry, it'd be Land Creature -- Swamp
05:45:15 -!- tromp has quit (Ping timeout: 252 seconds).
05:53:00 <zzo38> Is there a way to use appending linking of functions with GCC?
05:53:28 <kmc> what does that do
05:57:21 -!- Bike has joined.
05:58:15 <zzo38> I mean you can make many functions in different modules together that the main module can call.
05:59:06 <zzo38> Maybe constructor functions can be used to fill up an array, though
06:01:06 <kmc> you can build the table statically in a special section a la https://github.com/torvalds/linux/blob/v3.12/include/linux/export.h#L56-L65
06:02:11 <kmc> then a linker script will give you symbols for the start and end of that section
06:02:41 <zzo38> OK, although I do not want to be specific to Linux or any other operating system.
06:03:15 <kmc> sure, this is just the Linux kernel as one example of a C program using this trick
06:03:42 <kmc> it should work on any GCC platform where the object file format supports custom sections
06:05:08 <kmc> I was originally going to suggest something like #define EXPORT(fn) asm(".pushsection exported; .quad " #fn "; .popsection"); but emitting a struct from C is probably more reasonable
06:05:45 <kmc> with ld's pushsection/popsection and local numbered labels you can do some pretty cool shit
06:06:17 <kmc> er, as's
06:07:11 <zzo38> But, I don't want to be limited to specific instruction sets either.
06:07:19 <kmc> well, this isn't either
06:08:20 <zzo38> I also do not undersatnd how that export.h is working
06:10:02 <kmc> here is a simplified version
06:11:04 <kmc> struct kernel_symbol { void *value; const char *name; }; #define EXPORT_SYMBOL(sym) static const struct kernel_symbol __ksymtab_##sym __attribute__((section("__ksymtab"))) = { sym, #sym };
06:11:31 <kmc> then you would write something like EXPORT_SYMBOL(my_function); void my_function() { ... }
06:11:49 <kmc> and this arranges for a struct with a relocation to my_function as well as the string "my_function" to be placed into the section __ksymtab
06:11:57 <zzo38> OK, but I don't know how you would load it, and anyways that isn't quite what I am intending to do either
06:12:05 <kmc> and the linker will glue together all of these structs from all the object files
06:12:17 <kmc> and then you can iterate through them at runtime
06:12:25 <kmc> zzo38: OK, what are you intending to do?
06:14:05 <zzo38> To make all SQL functions and various other things defined in different modules linked with the program to be available to the main program all at once even if a new file is added you don't have to fix the main program.
06:14:30 <kmc> ok, it sounds like this mostly accomplishes that
06:14:40 <zzo38> I could do what I did in VGMCK, which is making constructor functions to add things at the beginning of a global linked list.
06:14:47 <kmc> the main function can look through this table and see the names of the other functions as well as pointers to them
06:15:13 <kmc> you can also use dlopen(NULL) and dlsym()
06:15:18 <kmc> depending
06:15:44 <zzo38> That's OK, although I don't need the names (unless they are the SQL names rather than C names)
06:17:40 <zzo38> I am probably doing just what I did in VGMCK; it doesn't require sections supporting
06:17:49 <zzo38> kmc: Depending what?
06:19:13 <kmc> well, you need to be using dynamic linking, and I don't know how to iterate over all the stuff in the file
06:19:19 <kmc> perhaps GNU's dl_iterate_phdr is useful
06:19:38 <Sgeo> I just introduced someone to Cockatrice :/
06:19:47 <Bike> you monster
07:00:52 -!- FreeFull has quit.
07:09:26 -!- SingingBoyo has quit (Quit: WeeChat 0.4.3-dev).
07:25:05 -!- Tritonio1 has quit (Ping timeout: 272 seconds).
07:30:26 -!- Bike has quit (Quit: sleep).
07:45:53 <Sgeo> Bought Duals of the Planeswalkers 2014
07:46:18 <kmc> cones of dunshire
07:48:03 <Sgeo> "the game, in reverse"
07:48:16 <Sgeo> Magic the Gathering had a card that triggered a game of Magic the Gathering within the game
07:48:29 <myname> what
07:48:30 <kmc> does it have a card that triggers a game of chess
07:48:34 <kmc> or chess-boxing
07:48:36 <kmc> or drinking chess
07:48:42 <myname> strip poker
07:49:21 <kmc> strip magic, each player starts with 20 items of clothing
07:49:29 <myname> hahaha
07:49:39 <Sgeo> http://gatherer.wizards.com/Pages/Card/Details.aspx?multiverseid=980&printed=true
07:49:50 <myname> you don't have to count points, very handy
07:50:03 <Sgeo> "Players must leave game in progress as it is and use the cards left in their libraries as decks with which to play a subgame of Magic. When subgame is over, players shuffle these cards, return them to libraries, and resume game in progress, with any loser of subgame halving his or her remaining life points, rounding down. Effects that prevent damage may not be used to counter this loss of life. The subgame has no ante; using less than forty
07:50:03 <Sgeo> cards may be necessary."
07:50:52 -!- oerjan has joined.
07:56:50 <myname> wondering if a strip munchkin would be possible
07:57:05 <myname> but it seems quite strange if the winner has to be naked
07:57:12 <myname> or if everyone has to start naked
07:59:30 <kmc> everyone gets naked and then they think of something more fun to do than play strip munchkin
07:59:39 <myname> :D
08:02:01 <ion> strip The Game
08:02:08 <kmc> haha
08:04:38 -!- conehead has joined.
08:18:42 -!- MindlessDrone has joined.
08:39:27 -!- Tritonio has joined.
08:43:33 -!- tromp has joined.
08:48:03 -!- tromp has quit (Ping timeout: 245 seconds).
08:55:05 <b_jonas> myname: http://www.xkcd.com/696/ ?
08:57:34 <kmc> Sgeo: it's written as "any loser", does that mean a game of M:tG can have more than one loser? even between two players?
08:58:07 <zzo38> I think it is possible both players will lose
08:58:15 <Sgeo> Games of Magic can have more than two players, and it's possible for all players to lose
08:58:25 <Sgeo> "At the start of the sub-game both players draw their initial hand (usually 7 cards). If one player has fewer cards than required, that player loses. If both have fewer than required, both players lose."
08:59:05 <zzo38> I think the rule is, if a player wins and loses simultaneously, they lose.
08:59:49 <kmc> life is a game where you often win and lose simultaneously
09:01:13 <b_jonas> kmc: yes. an M:tG game can have at most one team as a winner, but all people can lose
09:01:32 <b_jonas> kmc: even a two player game can end in a draw, in which case all players count as having lost
09:01:43 <kmc> ok
09:01:44 <olsner> kmc: I guess you saw the update on your x32 arbitrary write vulnerability? apparently it was a much more obvious problem than I thought
09:01:55 <kmc> i didn't see it
09:02:05 <b_jonas> kmc: the game is designed so that draws are rare in practice, but they still can happen and the rules must support them
09:02:06 <olsner> http://seclists.org/oss-sec/2014/q1/187
09:02:27 <b_jonas> the easiest way they can happen is all players losing life simultanously
09:02:56 <kmc> ok
09:03:11 <kmc> i see now
09:04:39 * kmc -> sleep
09:09:43 -!- conehead has quit (Quit: Computer has gone to sleep.).
09:22:48 -!- namaskar has joined.
09:34:34 <zzo38> What does the argument to the C "nan" function mean?
09:36:59 <FireFly> Probably the payload that goes in the mantissa of a NaN
09:37:52 <zzo38> But what does the payload do?
09:38:18 <FireFly> I don't think it has any meaning to the spec, but it's a way to attach metadata to a NaN (such as what caused it to become NaN)
09:38:49 <zzo38> OK; how long should the string be?
09:39:15 <FireFly> Some JS implementations use NaNs to store pointers/integers inside the payload
09:39:45 <zzo38> How does that help?
09:40:11 <FireFly> It means you don't have to store a tag separately, and therefore reduce the size that needs to be moved around
09:41:07 <FireFly> going by http://en.wikipedia.org/wiki/NaN#Floating_point the payload seems to be the size of the mantissa - 1 bit, so 22 bits for `float` and 52 for `double` I think
09:42:01 <FireFly> http://wingolog.org/archives/2011/05/18/value-representation-in-javascript-implementations has an explanation of NaN-boxing if you're interested in that
09:42:04 <zzo38> So is six bytes OK then?
09:43:21 <FireFly> I think so, for a double
09:43:32 <FireFly> I wonder if there's a function for reading the payload
09:44:27 <zzo38> Is NaN allowed in SQL?
09:44:42 <FireFly> no clue.
09:54:10 <fizzie> Based on a quick glance at the SQL-92 draft, it doesn't require NaNs or infinities for the "approximate numeric types". And there are no literals for them.
09:56:15 <fizzie> (And the meaning of the C nan() argument, and the xxx in "NAN(xxx)" for strtod et al. is implementation-defined.)
10:02:08 <zzo38> I am using SQLite rather than SQL-92 though.
10:06:18 <fizzie> Well, the SQLite data type page does say "floating point value, stored as an 8-byte IEEE floating point number", which certainly has NaNs.
10:22:19 -!- Tritonio1 has joined.
10:22:27 -!- Tritonio has quit (Ping timeout: 252 seconds).
10:24:10 -!- namaskar has quit (Ping timeout: 245 seconds).
11:01:08 -!- SeeNoEvil has joined.
11:03:15 -!- namaskar has joined.
11:11:54 -!- SeeNoEvil has left.
11:17:17 -!- nooodl has joined.
11:25:14 -!- Tritonio1 has quit (Quit: Tritonio1).
11:25:44 -!- Tritonio has joined.
11:36:05 -!- atriq has joined.
11:38:51 -!- jconn has quit (Ping timeout: 253 seconds).
11:41:23 -!- namaskar has quit (Ping timeout: 245 seconds).
11:48:55 -!- Phantom_Hoover has joined.
11:49:21 -!- nooodl has quit (Quit: Ik ga weg).
12:16:17 -!- augur has quit (Remote host closed the connection).
12:16:43 -!- augur has joined.
12:18:18 -!- augur_ has joined.
12:18:23 -!- augur has quit (Read error: Connection reset by peer).
12:33:51 -!- oerjan has quit (Quit: leaving).
12:41:05 -!- atriq has quit (Quit: Page closed).
12:44:28 <fizzie> I just tried to write a thing in the form "-- (a) foo, (b) bar and (c) baz --" to someone in Skype's IM thing, but it turned the (a) to an angel, (b) to a beer mug and (c) to a coffee cup.
12:45:32 <fizzie> ~metar EFHK
12:45:42 <fizzie> Aw.
12:48:02 <FireFly> Fancy enumeration, that
12:53:30 <fizzie> I don't know how it continues, but there's a high chance that (d) is a devil.
12:54:10 <fizzie> Oh, (according to Google) it seems to be "drink" (a Martini or some such) instead.
12:54:20 <fizzie> Skype seems to be a bit focused on drinkables.
12:55:17 <fizzie> (e) is an envelope/"email" icon, (f) is a flower, (g) doesn't exist on this page (but I think it might be an undocumented grin), (h) is a heart, and I'm bored now.
12:57:55 <int-e> The (^) is a lie.
12:58:27 -!- yorick has joined.
13:11:30 <FireFly> I've learned that (y) is a thumbs-up in MSN from people using it outside of MSN
13:11:34 <FireFly> At least, I think it is
13:14:41 <int-e> it is. (n) exists, too.
13:25:21 -!- DobleD has joined.
13:27:24 <DobleD> holaa
13:30:01 -!- boily has joined.
13:30:10 -!- metasepia has joined.
13:30:13 <boily> good wooden horse morning!
13:31:37 <int-e> oh, but the trojans are not amused.
13:32:13 <DobleD> ffgwe
13:32:15 <DobleD> fgwgkeww
13:32:18 <DobleD> ijgwfrkewqpoed
13:32:24 <DobleD> fmjeifgnmje3kowo0ki21,p0kwqs,oakd,lsfdkmo32kerdo,srkfd,oewlrdk3p2wqode,poekrde
13:32:31 <DobleD> dfioredlskfopewñslae3kpwosñwopsñd
13:32:35 <int-e> really
13:32:37 <DobleD> wsokafdlofkwepo0sñalkfepwsñkfop3ewkñlfk320pweñskf3pwq
13:32:38 <DobleD> :(
13:32:41 <int-e> `relcome DobleD
13:32:42 <HackEgo> DobleD: Welcome to the international hub for esoteric programming language design and deployment! For more information, check out our wiki: <http://esolangs.org/wiki/Main_Page>. (For the other kind of esoterica, try #esoteric on irc.dal.net.)
13:34:54 -!- DobleD has left.
13:35:03 <fizzie> Must've been some obscure esolang.
13:41:03 -!- augur_ has quit (Remote host closed the connection).
14:12:19 * boily rants against the completely useless and unusable permission system in OpenERP.
14:25:52 -!- Sgeo has quit (Read error: Connection reset by peer).
14:30:17 -!- jconn has joined.
14:31:39 -!- namaskar has joined.
14:39:07 -!- augur has joined.
14:41:38 -!- Sorella has joined.
14:54:32 -!- atriq has joined.
14:56:49 -!- augur has quit (Remote host closed the connection).
14:57:45 -!- augur has joined.
14:59:18 -!- augur has quit (Client Quit).
15:01:05 -!- tromp has joined.
15:12:45 -!- augur has joined.
15:20:51 <zzo38> boily: Then maybe might someone fix it if they want it more useful feature?
15:21:28 -!- Bike_ has joined.
15:22:33 <zzo38> Now I invented "Famicom PPU Chess": http://www.chessvariants.org/index/msdisplay.php?itemid=MSfamicomppuches
15:23:57 <zzo38> What is your opinion of this?
15:24:07 <quintopia> zzo38: it is a four player game?
15:25:18 <zzo38> quintopia: In two teams; you can play with just one person playing both colors of a team.
15:25:27 <boily> zzo38: to fix something in an Enterprise software? sadly not. it is more important to pile new features than to fix previous ones.
15:28:10 <zzo38> quintopia: Hopefully it is understandable?
15:29:00 <b_jonas> boily: you're getting that wrong. neither fixing bugs or adding new features is important. finding bugs and inventing creative misuses of them is the most important.
15:29:45 -!- Bike_ has changed nick to Bike.
15:34:38 <quintopia> yep it's about the most complicated variant I've met short of Chess 2, but it seems consistent.
15:35:47 <quintopia> zzo38: have you ever played mobius chess?
15:48:15 <zzo38> quintopia: I haven't played mobius chess.
15:48:41 <zzo38> (Actually most chess variants I haven't played, and I don't actually play chess much either.)
15:49:59 -!- AnotherTest has joined.
15:50:11 <zzo38> And there are several much more complicated variants than just those.
15:52:08 -!- sebbu has quit (Ping timeout: 265 seconds).
15:59:08 <FireFly> That reminds me, I want to try torus go someday
15:59:21 <FireFly> I can't imagine it being easy to make territory without any edges
15:59:36 <boily> b_jonas: they already do that, with magic numbers and implicit undocumented type conversions and stuff.
15:59:47 <boily> quinthellopia. are you still variating chess?
16:03:50 <quintopia> nope
16:03:53 <quintopia> that's zzo38
16:06:47 <boily> hezzo38. how do you vary?
16:11:49 <quintopia> did you get me a job boily :P
16:15:37 <zzo38> boily: I do not entirely understand your question.
16:17:55 <boily> quintopia: the contract is signed, I begin February 10, and I was told by the HR to bring my Magic decks.
16:18:19 <boily> zzo38: what chess variations are you trying and analysing and comparing and enjoying?
16:18:23 <quintopia> boily: yes but that's your job. what about mine?
16:18:38 <int-e> . o O ( Maybe HR will burn the decks and tell you to concentrate on the job. )
16:19:02 <quintopia> boily: he already linked Famicom PPU chess above, and said he doesn't play chess much
16:19:37 <boily> quintopia: oh. your job. uhm... >_>... <_<... v_v... ¬_¬...
16:19:52 <boily> ah hm. that'll teach me to only partially read the logs...
16:26:14 <zzo38> boily: Many, including many I made up
16:27:19 <zzo38> You can see which game I invented at http://www.chessvariants.org/index/mainquery.php?type=Any&orderby=Type&displayauthor=1&displayinventor=1&inventorid=zzo38computer and there are several others on same website, I have looked at as well.
16:28:20 <boily> only many? that's more than several manies!
16:28:49 <boily> (oh, ポケモン将棋! ^^)
16:39:04 -!- ais523 has joined.
16:43:49 <Bike> http://dealbook.nytimes.com/2014/01/31/start-up-aims-to-circumvent-rules-on-private-stock-sales/?_php=true&_type=blogs&module=BlogPost-Title&version=Blog%20Main&contentCollection=Venture%20Capital&action=Click&pgtype=Blogs&region=Body&_r=0 hahahaha
16:54:43 -!- Tritonio has quit (Ping timeout: 245 seconds).
17:05:29 <b_jonas> int-e: ouch, that would be bad
17:07:04 -!- callforjudgement has joined.
17:07:07 -!- ais523 has quit (Ping timeout: 272 seconds).
17:10:10 -!- sebbu has joined.
17:10:21 <atriq> `ello atriq
17:10:22 <HackEgo> atriqello
17:10:50 -!- sebbu has quit (Changing host).
17:10:50 -!- sebbu has joined.
17:35:38 -!- atriq has quit (Ping timeout: 245 seconds).
17:50:43 <boily> b_jonas: burning Magic decks is a Federal Offense punishable by up to 20 years in prison.
17:52:36 <fizzie> They had a thing in the nearby role-playing game convention where there was a man going around with a sign, and if you gave the man some money, he would give you some MtG cards that you were then suppose to destroy in an inventive fashion.
17:53:50 <kmc> why
17:54:09 <fizzie> I forget exactly. It was probably one of those things that only makes sense at conventions.
17:54:30 <kmc> what happens at role-playing game convention stays at role-playing game convention
17:54:30 <fizzie> I think it was some sort of a protest against Magic in favour of "actual" games.
17:55:25 * kmc rolls eyes
17:55:31 <kmc> what makes a game "actual" in this case
17:55:56 <fizzie> It doesn't involve collectible cards but traditional pen-and-paper stuff instead, I believe.
17:56:01 <fizzie> I'm trying (and failing) to find a picture of the thing.
17:56:23 <Bike> i'd totally do that though, if it wasn't too much money and if i was at a convention for some reason
17:56:38 <fizzie> I'm pretty sure it wasn't part of the official program, for the record, just some guy.
17:57:08 <callforjudgement> Bike: I think the least desired Magic cards in existence sell in bulk for 10 cents each, maybe even less from some sellers
17:57:11 <fizzie> I'm just finding photos of people actually playing Magic, and photos that don't seem to be relevant in any way.
17:57:33 -!- aergus has joined.
18:10:17 <b_jonas> callforjudgement: definitely less
18:10:24 <b_jonas> callforjudgement: nobody would pay 10 cents for Index
18:10:40 -!- FreeFull has joined.
18:11:06 <callforjudgement> b_jonas: I'm not sure, it's quite the combo with fetchlands
18:11:18 <b_jonas> wait wait
18:11:29 <b_jonas> Index is now reprinted in Standard
18:11:33 <b_jonas> so maybe that was a bad example
18:11:43 <b_jonas> it used to be one of the cheapest cards
18:11:47 <callforjudgement> the problem is, if cards get really /really/ terrible
18:11:53 <callforjudgement> people collect them just for the novelty value
18:13:20 <callforjudgement> (and cards which are mediocre but have memes about them are highly collected too, e.g. the cheapest versions of Storm Crow cost 15 cents)
18:16:11 <b_jonas> being bad is not enough
18:17:00 <b_jonas> but in any case, there are cards cheaper than 10 cent
18:17:01 -!- Slereah_ has joined.
18:17:05 <Slereah_> Hey folks
18:17:36 <Slereah_> Finished my assembly project, I can slack, yay~
18:18:44 -!- Slereah_ has quit (Read error: Connection reset by peer).
18:19:04 -!- Slereah_ has joined.
18:19:07 -!- augur has quit (Read error: Connection reset by peer).
18:21:29 * boily slacks Slereah_
18:26:18 -!- Phantom__Hoover has joined.
18:26:55 -!- Phantom_Hoover has quit (Ping timeout: 272 seconds).
18:27:22 -!- augur has joined.
18:30:12 -!- augur has quit (Read error: Connection reset by peer).
18:30:36 -!- augur has joined.
18:31:06 <quintopia> what's a regex that matches any string of characters which does not contain the sequence DONOTDELETE?
18:31:10 -!- augur has quit (Read error: Connection reset by peer).
18:31:28 -!- augur has joined.
18:35:13 <Slereah_> [^D][^O][^N][^O][^T][^D][^E][^L][^E][^T][^E]
18:35:13 <Slereah_> ?
18:35:47 <Bike> any string, not any string of that length
18:36:04 <Slereah_> $*[^D][^O][^N][^O][^T][^D][^E][^L][^E][^T][^E]*$
18:36:09 <Slereah_> Errr ^
18:36:11 <Slereah_> Or whatever
18:36:12 <Slereah_> i dunno
18:36:27 <Bike> that matches foobarbazbakDONOTDELETE
18:36:44 <Slereah_> Does it?
18:36:49 <Slereah_> i'm not very good at regexes
18:36:52 <zzo38> Maybe you should use some regex library which include negative matching function.
18:36:59 <Bike> well, with different characters
18:37:14 <Bike> ([^D][^O][^N][^O][^T][^D][^E][^L][^E][^T][^E])+ would work but only takes multiples of that length
18:37:28 <Bike> don't remember how to do "or match ends" off the top of my head and also it's ugly anyway
18:37:29 <boily> probably something with negative lookahead?
18:37:39 <zzo38> By adding a "but not" operator.
18:38:41 <Slereah_> Linux needs an unlimited grammar expression thing!
18:38:50 <Slereah_> Though i think awk is already that
18:39:49 <zzo38> In AWK you can use a regular expression it will just be used where a boolean expression is used
18:40:37 -!- augur has quit (Ping timeout: 248 seconds).
18:40:49 <Slereah_> doesn't it have extended regexes?
18:41:16 <quintopia> Bike: ah based on that i think (.*[^D][^O]...[^T][^E].*)* will work
18:41:29 <quintopia> (where ... is there rest of the character classes i didn't feel like typing)
18:42:18 <boily> or, maybe “not re.search(r'DONOTDELETE', the_string)”?
18:42:26 <quintopia> zzo38: is "but not" still regular?
18:42:28 <Bike> that will match DONOTDELETEaaaaaaaaaaaDONOTDELETE
18:42:44 <Slereah_> AAAAAAH
18:43:02 <quintopia> Bike: good point
18:43:11 <boily> AAAAAAAAAH :D
18:43:38 <Bike> oh so i guess just ([^D][^O][^N][^O][^T][^D][^E][^L][^E][^T][^E])+.{,10} almost
18:44:03 <Bike> except that matches aaaaaaaaaDONOTDELETE
18:44:11 <quintopia> yeah i was about to say
18:45:10 -!- augur has joined.
18:45:41 <Slereah_> Hello augur
18:45:43 <zzo38> quintopia: I don't know if it is still regular
18:46:01 <Bike> oh. just put it on the other side.
18:46:17 <Bike> well no then you just have prefi problems
18:46:20 <quintopia> wait what
18:46:28 <zzo38> Maybe you can use SNOBOL patterns?
18:46:30 -!- augur has quit (Remote host closed the connection).
18:46:30 <Bike> there's probably an easier way -_-
18:46:35 <quintopia> is "the set of strings which do not contain DONOTDELETE" even regular?
18:46:45 <Bike> i think it is
18:46:48 <quintopia> me too
18:46:56 <quintopia> i can kind of visualize the FSM for it
18:47:01 <int-e> of course.
18:47:12 <int-e> regular languages are closed under complement.
18:47:12 <olsner> I think perl regexpes have some funky lookahead thingies that work almost like negation
18:47:33 <quintopia> ah i think it's just D(?!ONOTDELETE) plus some other stuff
18:47:52 <olsner> int-e: no, iirc, they're *not* closed under complement
18:47:52 -!- atriq has joined.
18:48:03 <Slereah_> What about [^.]*
18:48:05 <Slereah_> NO STRINGS
18:48:09 <Slereah_> PROBLEM SOLVED
18:48:23 <Bike> "the set theoretic Boolean operations: union K \cup L, intersection K \cap L, and complement \bar{L}. From this also relative complement K-L follows.[3]"
18:48:23 <int-e> olsner: you remember incorrectly
18:48:26 <Bike> good enough for me
18:48:36 <quintopia> Slereah_: that solves the problem of matching all strings which don't contain DONOTDELETE? ALL STRINGS SECRETLY CONTAIN DONOTDELETE????
18:48:48 <Bike> the conspiracy
18:48:49 <Slereah_> No string is best string
18:48:53 <Slereah_> Kill them all I say
18:49:08 <Bike> well, Slereah_'s matches the empty string.
18:49:26 <Bike> false advertising. i want my money back.
18:49:28 <quintopia> the empty string stands alone
18:49:39 <atriq> Huh... I type better when looking out the window rather than at the keyboard
18:49:56 <boily> the Conspiracy Unmasqued! the Scandal is proving too much for the People! Revolts Abound! the End Times are Nigh!
18:49:58 <Bike> and i breathe better when i'm thinking about anything else
18:50:11 <quintopia> Bike: [^.]+
18:50:19 <Bike> that's more like it
18:50:22 <quintopia> Bike: unfortunately, it's still not right
18:50:32 <quintopia> Bike: unless you set your modes right, it still matches NEWLINE
18:50:57 <Bike> oh fuck that, if int-e can bring in actual math that's what i'm going to pretend to use
18:51:39 <atriq> What is the goal here?
18:51:54 <Bike> a regex matching all strings not containing "DONOTDELETE"
18:51:58 <FireFly> . in char classes in most regex flavours is treated literally
18:52:01 <Bike> or a regex containing no strings, for funnierness
18:52:06 <int-e> Bike: []
18:52:08 <FireFly> so [^.]+ matches plenty of strings
18:52:20 <Bike> int-e: your mother
18:52:27 <quintopia> so how about this: ([^D]*(D(?!ONOTDELETE))*)*
18:52:36 <Bike> i don't remember what ?! does lol
18:52:37 <int-e> Bike: $.^ ... lots of ways :)
18:52:39 <quintopia> FireFly: true
18:52:40 <FireFly> `run echo hi there | grep '[^\w\W]'
18:52:40 <HackEgo> hi there
18:52:48 <quintopia> . in character class means period yes
18:52:56 <FireFly> hm
18:52:59 <Bike> "yo momma so fat i had to come up with a new pumping lemma to get her out"?
18:53:02 <fizzie> quintopia: That seems overly complicated, compared to just ((?!DONOTDELETE).)*.
18:53:10 <FireFly> `run echo hi there | grep -o '[^\w\W]'
18:53:10 <HackEgo> h \ i \ \ t \ h \ e \ r \ e
18:53:16 <FireFly> whu..
18:53:17 <quintopia> fizzie: does that work?????
18:53:25 <kmc> "relative complement" is an interesting term for set differene
18:53:28 <kmc> difference too
18:53:38 <boily> fungot: do you even match, bro?
18:53:38 <Bike> it's common, isn't it?
18:53:38 <fungot> boily: sorry for my english and the queen's english, thanks. really looking forward to playing it
18:53:44 <Bike> since complement is relative to the universe, anyway
18:53:56 <FireFly> quintopia: it matches characters while the pattern DONOTDELETE doesn't match
18:53:57 <Bike> does fungot speak in RP? awesome.
18:53:57 <fungot> Bike: ( that 826 is for the absence of infix operators... it all depends on what scheme system?
18:54:06 <fizzie> quintopia: Why not? It's just "any character except DONOTDELETE can't be at any position. Though something like ^(?!.*DONOTDELETE).*$ could be more efficient, at least assuming a usual backtracking kind of thing.
18:54:31 <quintopia> fizzie: oh that second one does look better
18:54:34 <Bike> backtracking *shakes fist*
18:54:42 <atriq> My uni is doing a programming competition, right a program that is an AI for a variant of battleships
18:55:02 <Bike> neat.
18:55:07 <quintopia> fizzie: let's say i have a regular expression that has a .* in the middle of it. can i drop the regex in to replace that .* and have it work as expected?
18:55:22 <quintopia> (aka it matches all the strings the original one matched unless they have DONOTDELETE there
18:55:22 <atriq> One of my friends and I have entered (it has a weekly tournee). Last week we didn't do too well, but we've submittered a new version
18:55:23 <kmc> yeah I think it's easier to make a FSM for this complement and then turn it into a regex
18:55:25 <quintopia> _
18:55:27 <quintopia> )
18:56:00 <quintopia> fizzie: assuming i remove the ^ and $ of course
18:56:17 <quintopia> well no it won't
18:56:19 <int-e> something like ^([^D]|D*(D[^OD]|DO[^ND]|DON[^OD]|DONO[^TD]|(DONOT)*([^D]|D[^ED]|DE[^LD]|DEL[^ED]|DELE[^TD]|DELET[^ED])))*D*(D[^O]|DO[^N]|DON[^O]|DONO[^T]|(DONOT)*(|D[^E]|DE[^L]|DEL[^E]|DELE[^T]|DELET[^E])))*$
18:56:23 <FireFly> but shouldn't [^\w\W] match nothing? I thought it would
18:57:01 <Bike> int-e: you generated that automatically, right
18:57:02 <quintopia> fizzie: yeah it won't work as a drop-in replacement for .* because it looks ahead all the way to the end. but maybe the first one will?
18:57:05 <int-e> Bike: no.
18:57:13 <Bike> int-e: that's sad
18:57:15 <int-e> Bike: It's likely wrong. :)
18:57:24 <FireFly> int-e: you would probably like this code-trolling thing codegolf.stackexchange.com came up with
18:57:30 <int-e> (the two (DONOT)* should be (DONOT)+, for example)
18:57:32 <atriq> Only three teams have entered so far but it's restricted to 1st years and I know some not-first-years who want to enter
18:57:39 <atriq> That restriction'll be lifted soon
18:58:04 <fizzie> quintopia: The first one should work for that, I think. And yes, it's not quite a drop-in otherwise.
18:58:43 <kmc> I believe the string "DONOTDELETE" has the property that a match can't start in the middle of a prefix match
18:58:47 <kmc> which simplifies things
18:59:06 <kmc> compared to searching for, say, "ABABB"
18:59:21 <Bike> what about DONOTDONOTDELETE
18:59:29 <kmc> er that's true with one character of lookahead I mean
18:59:37 <quintopia> fizzie: it looks like the first one matches at least one character (the dot at the end). can i leave that off and have it match none also?
18:59:56 <Bike> oh, true
19:00:05 <fizzie> quintopia: The dot at the end was just a regular dot at the end of a sentence, actually.
19:00:12 <quintopia> fizzie: ok cool
19:00:19 <int-e> Bike: yes, that's why I need (DONOT)+ there.
19:00:59 <atriq> Surely DONOTDONOTDELETE could be deleted
19:01:17 <quintopia> int-e: that is way too complicated if fizzie's negative lookahead version works as expected
19:02:53 <int-e> quintopia: Oh I know, but those are not part of regular expressions as used in theoretical computer science (or POSIX).
19:03:03 -!- aergus has quit (Ping timeout: 265 seconds).
19:05:02 <quintopia> turns out the problem i was trying to solve here i had already solved in a different way and vforgot. but it's cgood to know the answer anyway
19:08:16 <fizzie> The negative lookahead thing isn't a terribly good thing, since it will probably attempt to match DONOTDELETE separately for each of the possible positions.
19:08:40 <FireFly> Is that all that bad?
19:08:44 <quintopia> so quadratic runtime or so?
19:08:54 <FireFly> Won't it fail at matching the D for each character?
19:08:59 <FireFly> until it matches a D, of course
19:08:59 <quintopia> not terrible for short strings
19:09:02 <int-e> the whole point is that negating regular expressions, while possible, is extremely error-prone and tedious.
19:09:43 <quintopia> FireFly: well it's terrible if your string contains a lot of DONOTDELETE prefixes
19:09:51 <FireFly> Well yes
19:15:22 -!- Slereah__ has joined.
19:17:12 <kmc> @tell Sgeo http://codu.org/webmidi/gen/29809233003217/29809233003217.ogg is Bach's Brandenburg Concerto No. 3 https://www.youtube.com/watch?v=hZ9qWpa2rIg
19:17:12 <lambdabot> Consider it noted.
19:18:23 -!- atriq has quit (Quit: Page closed).
19:18:29 -!- Slereah_ has quit (Ping timeout: 248 seconds).
19:20:58 <callforjudgement> what's the problem? matching all strings that /don't/ contain DONOTDELETE? in what regex syntax?
19:21:52 <fizzie> callforjudgement: Yes, Perl, and with the requirement for being a drop-in replacement for .* when it comes to other matters, like there being a DONOTDELETE in the string after the part the .* would match.
19:22:34 <callforjudgement> fizzie: hmm, that spec sounds like that might not be what you want
19:23:07 <callforjudgement> e.g. call this regex &, how should /&.*/ match "DONOTDELETE"? success or fail?
19:25:10 <callforjudgement> I was tempted to go for the very Prolog-like solution of (?:DONOTDELETE(*COMMIT)(*FAIL)|.*)
19:25:16 <callforjudgement> but I'm not sure it matches that spec
19:25:45 <fizzie> callforjudgement: Well, it's not my problem. But I guess what I envisioned is that /(&)(.*)/ would match with $1 = "", $2 = "DONOTDELETE".
19:26:17 <callforjudgement> so the only way to get a match failure is along the lines of /&a/ matching "DONOTDELETEa"
19:26:50 <FireFly> or fooDONOTDELETEa, no?
19:26:53 <callforjudgement> in that case I normally use (?:[^D]|D(?:[^O]|O(?:[^N]|N … ))).*
19:27:04 <Gregor> (!?^.*DONOTDELETE.*)
19:27:04 <callforjudgement> actually it needs to be anchored both ends
19:27:07 <Gregor> perl negative matching.
19:27:21 <FireFly> Gregor: that last .* is redundant, no?
19:27:22 <callforjudgement> Gregor: you mean ?!, but that also doesn't do what was requested
19:27:24 <Gregor> (That might be (?!) instead of (!?), I don't recall, but that's the idea)
19:27:27 <callforjudgement> even if you put a .* afterwards
19:27:31 <fizzie> callforjudgement: Well, I mean, the original context sounded something like /^foo.*bar$/ except that it should match fooblarbar but not fooblDONOTDELETEarbar.
19:27:41 <kmc> can you use ‽ instead
19:27:42 <Gregor> FireFly: I meant a $ after it, forgot about that :)
19:28:00 <callforjudgement> Gregor: still redundant
19:28:08 <callforjudgement> unless you want to exclude newlines in the rest of the string
19:28:11 <callforjudgement> and aren't using /s
19:28:12 <Gregor> callforjudgement: Not in a negative match.
19:28:14 <FireFly> kmc: propose that for Perl 6
19:28:20 <callforjudgement> Gregor: yeah, even in a negative match
19:28:32 <fizzie> Gregor: The "(?!.*DONOTDELETE) anchored at start" solution was sort of discussed.
19:28:38 <callforjudgement> /regex/s and /regex.*$/s always either both match or both don't match
19:28:46 <Gregor> callforjudgement: In a negative match, (?!DONOTDELETE) will be "any string which contains anything other than DONOTDELETE", and (?!^.*DONOTMATCH.*$) is "a string which does not contain DONOTDELETE whatsoever"
19:29:09 <callforjudgement> Gregor: you don't understand negative matche
19:29:11 <callforjudgement> *matches
19:29:27 <callforjudgement> specifically, (?!^…) always matches any non-start-of-the-string location
19:29:30 <callforjudgement> regardless of what the … is
19:29:43 <callforjudgement> because it isn't at the start of the string, thus "you can't match the start of the string here" satisfies
19:30:38 <FireFly> AIUI negative lookahead simply tries to match the pattern at the location, and succeeds (and matches nothing) if the lookahead match fails, and fails if the lookahead match matches
19:30:48 <FireFly> That sounded way more confusing than I thought it would >.>
19:30:51 <boily> ~duck AIUI
19:30:52 <metasepia> --- No relevant information
19:30:52 <Gregor> That's just the inner part of the solution, callforjudgement.
19:30:59 <Gregor> Obviously you need to wrap that in something that mandates line matching.
19:31:02 <FireFly> As I understand it
19:31:12 <Gregor> e.g. ^(?!^.*DONOTDELETE.*$)
19:31:13 <callforjudgement> $ perl -E '"ab" =~ /(?!^.*a.*)/ and say "[$`] [$&] [$'\'']"';
19:31:15 <callforjudgement> [a] [] [b]
19:31:30 <callforjudgement> Gregor: OK, if you put the ^ outside the (?!) too, then the inside ^ and .*$ are redundant
19:31:37 <Gregor> No, they're not X_X
19:31:38 <callforjudgement> but the match isn't entirely useless
19:31:57 <callforjudgement> Gregor: give me a string that matches ^(?!^.*DONOTDELETE.*$) and doesn't match ^(?!.*DONOTDELETE), or vice versa
19:31:59 -!- namaskar has quit (Ping timeout: 240 seconds).
19:32:08 <callforjudgement> and I will run it on Perl and either prove you wrong or prove myself wrong
19:33:08 <boily> FireFly: thanks. tdh.
19:33:15 <callforjudgement> you're claiming that the two are not equivalent, presumably it should be easy to find a counterexample
19:33:37 <fizzie> FireFly: Based on a really quick benchmark, given the string ("A"x$n)."foo".("B"x$n).$d.("C"x$n)."bar".("D"x$n) where $n = 10000000 and $d is either "DONOTDELETE" or "DONXTDELETE", it takes (on this system) about 0.38 seconds to match /foo.*bar/, and 1.33 or 0.77 seconds to match or not match /foo((?!DONOTDELETE).)*bar/ for the two variants, respectively.
19:34:11 <callforjudgement> fizzie: that simple example seems reasonable, but it won't work in particularly ridiculous contexts
19:34:15 <callforjudgement> err, regexes
19:34:19 <callforjudgement> like /foo&DELETE/
19:34:54 <callforjudgement> the & should be able to match "DONOT", but ((?!DONOTDELETE).)* doesn't match a DONOT that's followed by DELETE
19:35:22 <FireFly> fizzie: oh, okay
19:35:31 <fizzie> FireFly: Which wasn't all that bad, I guess.
19:40:00 <fizzie> callforjudgement: I guess that's true. I was trying to avoid the problem of anchored (?!.*DONOTDELETE).* that, for something like /foo&bar.*/, it wouldn't match "fooXXXbarDONOTDELETE", even though it should.
19:41:05 <callforjudgement> the (?:[^D]|D(?:[^O]|O(?:[^N]|N … ))).* solution definitely works, and is also maximally fast, but very verbose
19:41:18 <callforjudgement> err
19:41:26 <callforjudgement> (?:[^D]|D(?:[^O]|O(?:[^N]|N … )))*
19:44:29 <callforjudgement> hmm, I wonder if that can be abbreviated using (?>)
19:45:20 <FireFly> What is (?>) ?
19:45:32 <callforjudgement> (?>DONOTDELETE(*COMMIT)(*F)|.)* might work
19:45:59 <callforjudgement> FireFly: you can't backtrack into the internals
19:46:27 <callforjudgement> if it matches one way, it's never considered to match a different way
19:46:40 <callforjudgement> actually, on
19:46:42 <callforjudgement> *no
19:46:48 <callforjudgement> that construct has the same issue as one of fizzie's
19:48:15 <callforjudgement> doesn't match /a&DELETE/ against "aDONOTDELETE"
19:49:24 <fizzie> Huh, strange. I tried to expand it out, and what I got -- (?:[^D]|D(?:[^O]|O(?:[^N]|N(?:[^O]|O(?:[^T]|T(?:[^D]|D(?:[^E]|E(?:[^L]|L(?:[^E]|E(?:[^T]|T[^E]))))))))))* -- works separetely, but not in that benchmark I mentioned. I must be doing something wrong.
19:51:21 -!- MindlessDrone has quit (Quit: MindlessDrone).
19:52:40 -!- Slereah_ has joined.
19:53:23 <int-e> fizzie: that doesn't work
19:54:45 -!- Slereah__ has quit (Ping timeout: 248 seconds).
19:55:01 <int-e> fizzie: After adding ^ and $ around, it fails to match D; whenever you have a [^x], you also need to match the empty string ($). But even that is not enough; consider DDONOTDELETE. (The DD part matches D[^O])
19:55:40 <FireFly> callforjudgement: oh
19:55:55 <callforjudgement> int-e: oh, right
19:56:00 <callforjudgement> that suggestion was mine
19:56:10 <callforjudgement> but I use it to exclude a string at the /start/ of a match
19:56:15 <callforjudgement> I forgot it wouldn't work repeated
19:57:45 -!- Phantom__Hoover has quit (Quit: Leaving).
19:59:47 <int-e> I have now ended up with ^([^D]|D(D|.D|..D|...D|(ONOTD)+(D|.D|..D|...D|E...D))*($|[^DO]|O$|O[^DN]|ON$|ON[^DO]|ONO$|ONO[^DT]|ONOT(DONOT)*($|[^D]|D$|D[^OED]|DO$|DO[^ND]|DON$|DON[^OD]|DONO$|DONO[^TD]|DE$|DE[^LD]|DEL$|DEL[^ED]|DELE$|DELE[^TD]|DELET$|DELET[^ED])))*$
19:59:51 <int-e> which might be correct.
20:00:06 <int-e> (at least the corresponding DFA looks plausible)
20:00:13 -!- Slereah__ has joined.
20:01:09 <zzo38> When will they make the GNU BLISS compiler? Did they do it yet?
20:01:17 <FireFly> Is there a good reason why there isn't prettier syntax for "a series of characters not including the substring X"?
20:02:12 <FireFly> I guess translating it to a DFA is tricky
20:02:17 <int-e> regular expressions have a direct translation to nondeterministic finite automata; the complement is expensive on NFAs.
20:02:34 <fizzie> Perl regular expressions don't have a NFA translation, though.
20:02:59 -!- Slereah_ has quit (Ping timeout: 240 seconds).
20:07:05 <fizzie> I did also try out (.*)(?(?{ $1 =~ /DONOTDELETE/ })(*FAIL)) which worked as a drop-in .* in some contexts but not all; it has some backtracking-related subtlety I missed, I'm sure.
20:08:48 <fizzie> (It's conceptually pretty simple; "after capturing the .* FAIL this branch if the contents contain DONOTDELETE". But maybe there's something about $N inside the (?{..}) condition. Or maybe it's the inner regex.)
20:15:10 -!- augur has joined.
20:17:39 -!- Bike_ has joined.
20:17:45 -!- Bike has quit (Ping timeout: 272 seconds).
20:20:56 <augur> hi Slereah__ :P
20:27:00 -!- augur has quit (Read error: Connection reset by peer).
20:27:26 -!- augur has joined.
20:32:19 -!- tromp has quit (Remote host closed the connection).
20:32:55 -!- tromp has joined.
20:36:54 -!- callforjudgement has changed nick to ais523.
20:37:45 -!- tromp has quit (Ping timeout: 272 seconds).
20:38:27 -!- namaskar has joined.
20:38:34 -!- Slereah__ has quit (Read error: Connection reset by peer).
20:38:53 -!- Slereah_ has joined.
20:39:56 -!- andytoshi has joined.
20:41:30 -!- conehead has joined.
20:42:09 <kmc> int-e: regex of the day award
20:42:20 -!- augur has quit (Remote host closed the connection).
20:42:56 <kmc> fizzie: R E G E X C E P T I O N
20:43:14 -!- Slereah__ has joined.
20:44:29 -!- Bike_ has changed nick to Bike.
20:44:44 -!- oerjan has joined.
20:47:02 -!- Slereah_ has quit (Ping timeout: 264 seconds).
20:48:29 -!- Slereah_ has joined.
20:50:38 -!- Slereah__ has quit (Ping timeout: 264 seconds).
21:07:47 <FireFly> it's the regexception to the rule
21:08:58 <oerjan> <quintopia> fizzie: yeah it won't work as a drop-in replacement for .* because it looks ahead all the way to the end. but maybe the first one will? <-- not always
21:09:31 <oerjan> e.g. if you have a regexp like .*ELETE you cannot do that replacement for .*
21:09:54 <oerjan> because it would fail for the whole string being DONOTDELETE
21:10:22 <FireFly> I think that came up a bit later
21:10:23 <oerjan> i.e. you want something where the lookahead is also restricted to be inside the .*
21:10:27 <oerjan> oh ok
21:27:43 -!- augur has joined.
21:27:51 -!- augur has quit (Remote host closed the connection).
21:28:28 -!- augur has joined.
21:43:28 -!- Bike has quit (Ping timeout: 245 seconds).
21:44:12 -!- augur has quit (Quit: Leaving...).
21:48:11 -!- ais523 has quit.
21:50:05 -!- boily has quit (Quit: newYear :: Chicken -> Horse).
21:50:08 -!- metasepia has quit (Remote host closed the connection).
21:57:36 <Vorpal> Oh wow, someone combined Occulus Rift with Razor Edge. Neat.
21:57:54 <Vorpal> I guess it was just a question of time.
22:12:26 -!- int-e has quit (Quit: leaving).
22:12:39 -!- augur has joined.
22:12:48 -!- int-e has joined.
22:28:26 -!- AnotherTest has quit (Ping timeout: 264 seconds).
22:29:54 -!- Slereah__ has joined.
22:31:54 -!- Slereah_ has quit (Ping timeout: 252 seconds).
22:34:57 -!- aergus has joined.
22:42:00 -!- trout has changed nick to variable.
22:42:01 -!- variable has changed nick to constant.
22:42:21 <zzo38> Now I have added the new HWPL commands: DELIMIT, ENUMERATION, DIAGRAM, DURING, DURING NOT, LOWER, RAISE, GOTO, NEXT
22:43:38 <zzo38> DELIMIT and ENUMERATION are used for macros, while the others are used for state machines.
22:48:22 <zzo38> Now I added the ALWAYS command, but it isn't like the ALWAYS command in Verilog.
22:53:50 -!- andytoshi has left ("WeeChat 0.4.2").
23:14:16 -!- nisstyre has joined.
23:22:33 -!- oerjan has quit (Quit: nite).
←2014-01-30 2014-01-31 2014-02-01→ ↑2014 ↑all