00:07:19 Yay! I got a working 99 bottles of beer in Chef :) 00:07:50 now the code only needs a facelift 00:13:38 Mmmmmmmmmmmmmmmmmmmmmm, cookin' up some bottles-o-beer. 00:15:18 and it has more than 3 times the code lines of the ORK version... 00:24:36 hmm. there seems to be some serious performance issues... 00:25:02 5 verses takes 11 secs. 10 verses takes 35s, and 25 verses takes 2m35s!!! 00:25:14 AHAHAHA 00:26:26 now running 50 00:42:28 It really ought to take about .01secs :P 00:46:56 accoriding to my calculations 99 should take about 40 mins :D 00:48:27 I plotted the times for 5, 10, 25 and 50 verses into my calculator, and had it find a function for it. the number of secs is: 0.3x^2-1.66x+16.1 (where x is number of verses) 00:50:29 sorry. slight miscalculation. should take 47 minutes 00:51:22 and it doesn't produce any output until it's done 00:51:38 That's pretty terrible :P 00:52:02 well, it's a very slow computer, but still.... 00:52:29 I wonder if it's the interpreter, or if I've done something really stupid in the code... 00:52:56 while (1) { (interpret-interpret); sleep(5); } 00:53:22 that would not account for a quadratic increase in time 00:53:28 Hmm 00:53:42 for (i = 0; ; i++) { (interpret); sleep(i); } 00:53:44 Not quite though. 00:54:45 woo! 10 verses in 1.2 secs! 00:55:15 argh. no, it crashed 01:23:08 I think it is the sub-recipes that's the problem. Each sub-recipe call results in all the stacks being copied every time 01:51:04 yay. I got 99 verses down to 20 secs!! 01:51:21 Warning: sub-recipes in Chef are EXTREMELY inefficient 01:55:44 Next time I'm doing intensive Chef programs I'll remember that ;) 01:56:47 a performance increase with a factor of 135 is quite a lot :D 02:05:41 -!- GregorR-L has quit ("Leaving"). 02:09:43 -!- pgimeno has quit (Read error: 104 (Connection reset by peer)). 02:12:05 -!- graue has joined. 02:20:13 -!- pgimeno has joined. 05:39:02 -!- kipple has quit (Read error: 110 (Connection timed out)). 06:15:57 -!- graue_ has joined. 06:16:20 i see, from the log, apparently the esolang wiki was down this morning? 06:16:24 what was wrong with it? 07:59:59 -!- clog has quit (ended). 08:00:00 -!- clog has joined. 10:10:19 -!- graue_ has left (?). 12:31:12 ((x % y) - x) % (1 - y) 12:31:27 er, sorry 12:31:32 ((x % y) - x) / (1 - y) 12:31:45 returns 1 if x >= y and 0 otherwise 12:36:07 can't you count with MAX() and MIN() functions? 12:36:32 I doubt that. x = 1000, y = 10: ((x % y) - x) = ((1000 % 10) - 1000) = -1000; (1 - y) = (1 - 10) = -9; -1000/-9 = 111. Perhaps it would work with /(1-x). 12:42:29 -!- kipple has joined. 12:42:39 hmm *checks maths again* 12:43:28 oh, right, I messed something up with the mod, it would seem 12:43:47 only works for a certain range 12:44:09 (and I meant just -y, not 1-y) 12:44:45 then it'd be the same as (x - (x%y)) / y 12:45:05 is it integer division? are the variables integer? 12:46:24 is the division defined for a denominator of 0? 12:48:10 graue: about the down time: Don't know what was wrong. I got a "Could not locate remote server" error. But it didn't last long 12:48:39 probably a server mainteinance; that happens also in my server 13:03:22 -!- malaprop has joined. 14:00:14 -!- jix has joined. 14:00:50 moin 14:01:21 hi 14:05:04 so, hows that esolang of your coming along, jix? 14:05:25 was it decl it was called? 14:08:20 i'm still working on the parser 14:08:29 no spec? 14:10:34 not yet 14:45:53 what's the crazy math for, CXI? 14:46:19 well, I've been idly wondering if it's possible to make a language based on maths with no conditions 14:46:38 oh, cool 14:46:55 but first I have to work out how to replace things with maths 14:47:03 have you seen SMITH? 14:47:30 it has no if() or while(), and makes you simulate both by copying instructions forward in memory 14:54:40 -!- Keymaker has joined. 14:55:14 interesting 15:07:57 jix: how do i use that interpreter? 15:08:01 (cipple) 15:27:29 keymaker: cipple filename.k 15:28:03 though if the program doesn't use input you should use cipple filename.k < /dev/null 15:28:35 ok 15:28:38 now it worked 15:28:39 :) 15:28:41 otherwise it will block for input (which you can stop with CTRL-D) 15:28:50 oh 15:29:03 cheers 15:29:07 didn't know that 15:29:11 now it works as should 15:29:13 fast interpreter 15:29:26 that's an unfortunate effect of the kipple design, that the interpreter has to wait for input, even though the program doesn't use it :( 15:29:40 :\ 15:30:58 hmm. perhaps the interpreter could analyze the code, and check if input is used... 15:31:18 by the way, is 1>b<1>b<1 valid kipple? 15:31:28 sure 15:31:41 so it would finally have 1 1 1 in b stack? 15:32:00 no it would have 1 1 1 1 in the b stack 15:32:07 oh yes 15:32:08 sorry 15:32:10 meant that :) 16:05:40 kipple: how does input work? 16:06:08 all input is pushed onto the i stack BEFORE the program is executed 16:06:42 input while the program is running is not possible (at least not in the first version of Kipple) 16:06:48 can't that be implemented as lazy input? 16:06:58 what's that? 16:07:18 "lazy" is a term meaning that the actual action is delayed just until needed 16:07:52 but since the input is asked before, that isn't really delaying it until needed :p 16:08:05 hmm. not that easy I think 16:08:16 whenever a program tries to use the input stack for the first time, the input will be read 16:09:00 that will change the behaviour, though 16:09:11 the problem is that the input stack might be used for other purposes (it is not exclusively for input) 16:09:36 well, when the first character coming from input is to be used 16:09:58 not following you... 16:10:32 why don't you not block for a keypress until an operation is done that needs to know whether more input is left? 16:11:04 kipple: imagine that you keep a count of elements on the 'i' stack 16:11:34 when it's about to become negative for the first time, you push all input 16:11:38 it's be weird for the interpreter to pause for input when code tries to push onto the input stack. 16:11:51 it'd* 16:12:17 I think it's not good for writing interactive programs 16:13:15 as it is now it is perfectly legal to pop from an empty stack (will return 0). so you can easily check if the program has recieved any input. this will not work if a pop will result in a getchar() 16:13:35 anyway, if you want interactive programs, use something else :) Like Kipple 05 for instance... 16:14:59 I don't see the problem; if all input is pushed at the beginning of the program, how is that different from what I've described? 16:15:51 if you pop from the 'i' stack and there's input, you don't receive a 0 16:16:36 why would the interpreter have to pause for input when code pushes on the input stack? 16:16:38 similarly, if you pop from the 'i' stack in 'lazy input' mode, then all input is gathered and pushed and you don't receive a 0 either 16:16:50 as far as I understood your solution, if you pop the i stack and it's empty, then you would trigger a getchar(), no? 16:17:07 it would trigger the whole input stream to be read 16:17:08 yes 16:17:49 then it would behave differently than the spec says. that's the problem... 16:18:06 of course, it would work, it would just be different 16:18:13 * Keymaker goes to buy hamburger with fries. 16:18:17 -!- Keymaker has left (?). 16:18:47 you could have a -pedantic switch, which no one would use, for following the spec completely 16:18:49 different in what sense? the only difference I see is that some output can be shown before performing the actual input, but it's otherwise indistinguishable 16:19:28 that's the whole principle of "lazy" operation which is implemented in so many places 16:19:44 the difference being that you cannot pop the i stack, and find out if any input was passed to the program, because that would trigger input to be read 16:20:16 yeah, and if no input was passed to the program then that input won't be read anyway 16:20:54 the idea is just delaying the action until it's needed 16:21:07 yeah, I get that. 16:21:52 that way you don't perform input unless it's needed 16:22:10 which was what you suggested anyway 16:24:12 consider the following program: it checks to see if there is any input by popping the i stack, and checking for 0. if 0 then print "please provide input!" and terminates. else it performs some operations on the input 16:24:35 how would you do that with lazy input? (am I missing something?) 16:25:24 instead of reading the input at the beginning of the program, you do that when the program does the pop and before returning the result 16:25:31 print "please provide inpurt: ", pop input stack 16:26:06 but then it would print "pleas provide input" every time, no? 16:26:31 It would want input every time, no? 16:26:45 not if there's input because it will be pushed at that moment and return the first byte of the input 16:27:21 malaprop: yes, but only prompt for it if it doesn't get any at execution 16:29:04 kipple: in other words, it's the implementation of the pop operation the one which reads the input: if the instruction is a pop, and the stack is 'i', and the number of elements is 0, then read the input (if any) and return the first byte (or 0 if none); otherwise perform as any other stack pop 16:30:08 pgimeno: And, if stack is empty and no input is given, the stack stays empty and future calls don't try to get input. 16:30:31 that's it 16:30:56 hmm. 16:31:05 and if it's used as any other stack but it never is popped when empty, no input will be read 16:31:22 s/never is popped/is never popped/ 16:32:23 it might work, though I still have a suspicion it would change the behavior of some programs 16:33:14 lazy techniques are used quite often; e.g. some text editors load fonts when you press the key that needs them 16:34:14 the only difference from the user's point of view is that some output can be shown before any input is read 16:34:26 that would only make a difference in the console 16:35:14 no. no output is shown before the program is finished anyway :) 16:35:56 the interpreter itself has no concept of I/O 16:36:17 oh, right 16:36:26 then it would make absolutely no difference 16:36:40 oh, and there's java "just-in-time" compiling which is the same concept 16:37:17 the difference would be that you can not check whether input was provided, because that would trigger input to be provided ;) 16:38:05 That's not so different from now, where every run triggers input to be provided. 16:38:19 unless you use the -n switch 16:38:34 which causes input to be ignored 16:38:36 well, it must behave exactly the same as is currently done at the beginning of the program 16:39:36 yes. I will think more on this, and consider it for Kipple 05 16:40:05 thanks for the ideas guys :) 16:40:14 np 16:40:20 * kipple is off for dinner 16:41:27 actually it can be implemented in any current kipple compiler 16:41:34 er, interpreter 16:45:24 how many stacks does a language need to be Turing-complete? 16:45:36 Two. 16:47:18 so a single deque would be enough, since it can be treated as two stacks, right? 16:47:32 I would assume so. 16:48:53 Actually a single queue (not a deque) should suffice. 16:49:13 According to some googling there is a working representation of two stacks in a single queue. 16:51:44 btw, infinite minesweeper is turing-complete 16:53:29 it'd be nice to use minesweeper to perform calculations :) 16:56:28 I'm not sure how that's supposed to work. 16:58:21 a deque-based language would be boring anyway 16:59:26 well, the Turing tape is expressed as cells 17:00:49 http://web.mat.bham.ac.uk/R.W.Kaye/minesw/miesw.htm#infinite%20minesweeper 17:01:40 oops 17:01:47 http://web.mat.bham.ac.uk/R.W.Kaye/minesw/minesw.htm#infinite%20minesweeper 17:08:46 Heh, that's quite far from ordinary minesweeper, but intresting still. 17:11:46 not that far in my opinion but yes, quite interesting :) 17:28:04 -!- Keymaker2 has joined. 17:28:15 yah 17:28:21 by the way 17:28:31 "According to some googling there is a working representation of two stacks in a single queue." 17:28:34 link? 17:30:41 Well, http://jackson.cs.miami.edu/~burt/papers/1993.1/Saq-JAIIO-2.ps has a proof of the queue-automata-is-equivalent-to-turing-machine thing, but it doesn't (unless I misread, I just briefly looked at it) use two-stacks-in-a-queue, that one was a CS assignment or something. 17:48:15 i think i just got a great esolang idea 17:50:39 -!- sp3tt has joined. 17:52:08 graue: well, tell us already! :) 17:54:06 sounds fun 17:56:05 when i'm sure it works 17:56:40 lol. I write 99 bottles in Chef, come on here, and it's been done a day before XD 17:57:07 LOL. 17:57:13 what a coincidence! 17:57:29 Yeah. 17:57:46 I wrote the interpreter too :) 17:57:59 http://rename.noll8.nu/sp3tt/Beer.chef 17:58:12 you've written a new interpreter? 17:58:21 Lowercase b* 17:58:25 Yes, in python. 17:58:39 It can't handle stir and serve with yet though. 17:58:44 ok 17:58:57 I am a bit unsure of how to implement serve with. 17:59:00 that's my biggest issue with the old one. It so extremely SLOW on serve with 17:59:28 If the sous-chef changes the mixing bowls, does that affect the main chef? 17:59:33 no 17:59:59 But the sous-chef's mixing bowls are passed to the main-chef? 18:00:01 but the contents of the sous chef's bowl #1 is added to the main bowl #1 IIRC 18:00:17 That makes sense. 18:00:56 "When the auxiliary recipe is finished, the ingredients in its first mixing bowl are placed in the same order into the calling chef's first mixing bowl." 18:01:14 the problem is the copying of ALL the stacks each time a sous chef is called 18:01:18 True. 18:01:49 I was thinking of making the execute() function return the mixing bowls... 18:02:01 well, if you have read the logs here you've probably seen my performance issues :) 18:02:30 Yes.... 47 minutes for 99 bottles XD 18:02:50 it's on an old 187 MHz, but still... 18:03:41 47minutes to 20 secs is definately the best optimization I've ever done! 18:04:29 Haha. 18:04:32 How did you do that? 18:04:40 put all code into the main recipe 18:04:52 :) 18:04:56 and fired all the sous chefs 18:05:11 They deserved that! 18:06:39 :) 18:06:50 i should take a better look at chef 18:06:55 seems like an interesting language 18:07:07 anyway, your version doesn't work in the perl interpreter 18:07:19 Keymaker: it's actually a bit like Kipple :) 18:08:12 hehe 18:08:36 though a tad more verbose... 18:09:52 Doesn 18:10:08 't work in the perl interpreter... 18:10:11 Hmm, it can't find the loop. 18:10:42 strange. but the perl interpreter is buggy 18:10:52 Ah... it is case-sensitive. 18:10:58 yes 18:11:03 Change Drinked to drinked. 18:12:03 runs in 20 secs (same as mine) 18:12:08 :) 18:12:36 Runs almost instantly on my machine, but then again it is a 3.8GHz >_> 18:12:55 but it says "1 bottles" in the 98th verse :P 18:14:49 :/ 18:19:44 -!- comet_11 has joined. 18:20:22 -!- CXI has quit (Nick collision from services.). 18:20:28 -!- comet_11 has changed nick to CXI. 18:22:03 -!- cpressey has quit (brown.freenode.net irc.freenode.net). 18:22:03 -!- fizzie has quit (brown.freenode.net irc.freenode.net). 18:22:05 -!- sp3tt has quit (brown.freenode.net irc.freenode.net). 18:22:12 -!- Keymaker2 has quit (brown.freenode.net irc.freenode.net). 18:22:12 -!- kipple has quit (brown.freenode.net irc.freenode.net). 18:22:13 -!- lindi- has quit (brown.freenode.net irc.freenode.net). 18:24:37 -!- fizzie has joined. 18:25:44 -!- sp3tt_ has joined. 18:25:44 -!- sp3tt has joined. 18:25:44 -!- Keymaker2 has joined. 18:25:44 -!- kipple has joined. 18:25:44 -!- lindi- has joined. 18:25:44 -!- cpressey has joined. 18:26:24 -!- sp3tt has quit (brown.freenode.net irc.freenode.net). 18:26:26 -!- sp3tt_ has changed nick to sp3tt. 18:28:28 back 18:43:43 must go. 18:43:43 :) 18:43:43 -!- Keymaker2 has quit ("Freedom!"). 18:45:12 http://news.zdnet.co.uk/software/applications/0,39020384,39200357,00.htm ?? 18:46:11 i'm going to write a language that tries to use as many m$ patents as possible 18:46:58 it's objects are stored as xml... a program is an object.. i make havy use of the isNot operator.. (.. searching for m$ patents) 18:53:29 lol... Tried to run the fibonacci program from chef's website. 18:53:29 Maximum recursion depth exceeded XD 19:06:52 sp3tt: I've finally updated by beer.chef with proper ingredient names. here it is: http://rune.krokodille.com/lang/code/beer.chef 19:08:13 btw, have you submitted your to the 99 bottles of beer page? 19:11:43 Yes! 19:12:04 darn! ;) 19:16:52 "1 level tablespoon extract" is a 'proper ingredient'? Is that just generic "extract", or is it one "level" of the elusive tablespoon extract? 19:18:05 1 is the value. level tablespoon is the type declaration (int) and extract is variable name 19:18:34 I know (I've looked at the spec), but I don't think "extract" is a sensible food ingredient. 19:18:42 ah 19:18:43 "Any unspecified extract will do." 19:18:52 well, it's not, but it looks good in the recipe 19:19:22 I can have statements like "Stir the extract until boiled." 19:20:10 I didn't expect anyone to actually try to make beer with this recipe, you know :) 19:20:20 Stupid regexps. 19:26:45 What about an esoteric language based on brainfuck, but inputs are md5:ed? That would be so evil XD 19:27:23 Two hexadecimal digits for every brainfuck operation. 19:29:35 sounds silly 19:29:36 So to actually write a program, you'd have to brute-force an md5-hash. 19:36:19 0 g ale yeast ^^ 19:37:00 :) 20:02:47 ... 20:20:56 -!- sp3tt has quit ("Chatzilla 0.9.68a [Firefox 1.0.4/20050511]"). 20:25:21 -!- pgimeno has left (?). 20:25:24 -!- pgimeno has joined. 20:29:33 here is a rough draft of a spec for my new, as yet unnamed esolang: http://illegal.coffeestops.net:3703/sort.txt 20:29:47 it is presently unnamed, and likely contains many flaws 20:30:28 i am going to the bank; i challenge any interested persons to resolve ambiguities and contradictions in the document (if any exist) and implement an interpreter or compiler before i return 20:41:01 Well, there's an obvious bug: "If the string is non-empty, [sensible action]. If an expression evaluates to a non-empty string, it is deleted and removed from the list." 20:45:52 Also the operator table lists ~ as concatenation, ? as regular-expression-matching, but the description below reads "The regular expression matcher, ~, --" 21:57:32 graue: interesting concept :) 22:01:09 no interpreters? 22:01:33 No interpreters, sorry. 22:01:56 fixed both bugs 22:02:28 i just got US$10,000 and i was going to wire it to anyone who wrote an interpreter before i got back 22:02:29 oh well 22:05:56 quoted from 99-bottles-of-beer.net: "What the fuck is going on here? In fact we got two Chef submissons within a couple of hours. As soon as I have some time on my hands, I will add support for showing several examples for each language cuz I don't want to be the one who decides which is the better one etc. For now I activated the first submission." :D 22:06:12 ahahah 22:11:31 heh 22:18:57 graue: oh, I wrote the interpreter before you came but I was afk when you arrived :) 22:19:07 seriously? 22:19:12 where is it? 22:19:28 hehe, no but it would have been nice to get these 10,000 ;) 22:20:00 darn 22:26:32 kipple: i made a kipple syntax coloring mode for SubEthaEdit 22:26:58 never heard about it. but cool :) 22:27:28 it's osx only.. but i'm using it and i like syntax coloring 22:27:35 as always, I'm happy to put Kipple related files on the web site 22:27:50 www.harderweb.de/jix/langs/seemodes/Kipple.mode.zip 22:30:01 my dns server is down again... 22:30:03 hrmm 22:32:00 got it 22:35:30 hmm. weird idea: how about a language based on IKEA assembly manuals? 22:36:05 (for those not familiar with IKEA manuals: they do not contain a single written word. only symbols!) 22:36:08 LOL 22:37:27 and a program must have a name of a swedish word ^^ 22:38:58 ha!. as a norwegian that would not be espacially esoteric for me, though :) 22:39:12 hmm. espacially. is that a new word? 22:39:34 no idea, but it doesn't sound swedish ^^ 22:40:03 no. that would be särskilt 22:40:22 We see enough swedish words here in finland too for them to be non-esoteric. Picture-based languages are less common. Would you have to draw the picutres yourself for the interpreter to interpret? 22:41:03 just the NAME of the program has to be a swedish word... 22:41:27 ok. so the interpreter has to include a swedish dictionary. interesting :) 22:41:54 kipple: And a Swedish stemmer, eh? 22:42:11 what's a stemmer? 22:42:12 markow chain test.. not 100% perfect but.. it ensures that the word sounds swedish 22:42:42 Stemmers remove the inflection from words. 22:43:12 Wahh, I want a working stemmer for Finnish, the snowball one isn't very good at all. 22:43:20 kipple: Does conjucations -- for English, would take "hat" and spit out "hats", take "complete" and spit out "completeness", "completion", etc. 22:43:22 inflection is also not in my english vocabulary. sorry 22:43:32 conjugations* 22:43:34 ah. I see 22:46:08 In norwegian we use the norwegian word for bending :) I.e. bending a verb 22:46:27 The snowball stemmer thinks 'innostua', 'innostuessaan', 'innostuimme', 'innostuisivat', 'innostuksissaan', 'innostuneena', 'innostunut' are all different words (they're not). 22:46:41 Heh, it's "taivuttaa" (to bend) in finnish too. 22:47:10 well, finnish grammar was never meant to be easy, now was it? 22:47:44 I assume electronic spell checkers have even more trouble with finnish than with norwegian 22:48:43 finish ingredients declarations are very long compared to the other ones 22:49:22 heh. I know only one finnish sentence: "Ei saa peittaa" 22:49:45 written on almost every electical oven in Norway :) 22:49:47 With umlauts. Peittää. 22:50:00 sorry 22:50:06 At least it should be. I haven't examined the ovens in Norway. (Only been there once.) 22:50:28 ümläütß rulz 22:50:44 ß too 22:50:58 those characters didn't come throgh to me.. what were they? 22:51:06 through 22:51:20 hm, UTF8 ought to be standard in this network 22:51:31 maybe it's my client 22:51:42 /charset utf-8 on xchat 22:51:46 I got fizzie's umlauts though 22:51:54 wee 22:52:10 jix: I didn't know it was changeable on-the-fly. Thanks dude! 22:52:21 Mine were probably latin-1 (or 15), since that (sadly) seems to be the de-facto irc standard. 22:52:27 hehe i didn't know it for a long time 22:52:35 Er, latin-9. ISO-8859-15. Not latin-15. 22:52:46 fizzie: but not on freenode 22:52:46 so, do you guys get these? æøå 22:52:51 kipple: yes 22:52:53 jix: http://www.befunge.org/fyb/fyb/exa/logicex-2.fyb 22:53:03 AHHH GregorR strikes back 22:53:09 >:) 22:53:21 Hm... does freenode have an official policy on this? 22:53:36 (Back to work *cough*) 22:54:18 my client (Trillian) doesn't seem to have any charset settings :( 22:54:34 kipple: windows? 22:54:38 yup 22:54:45 GregorR: arghh.. now i can't sleep this night until i write a better program 22:54:48 windows still has some trouble with utf-8 support 22:56:30 gnight anyway ... 22:57:04 GregorR: i start writing the "hill" tomorrow.. i still need a name 22:57:30 If you expect me to be good at naming ... hah, it is to laugh ;) 22:57:56 King of the Brain 22:58:37 Produktionsstätten ? 22:59:10 ?? 22:59:22 just a random word of a german newspaper article 22:59:29 ah 22:59:41 but it really doesn't fit 22:59:56 imho 23:00:50 nah...night 23:00:53 -!- jix has quit ("Banned from network"). 23:14:48 -!- CXI has quit (Read error: 104 (Connection reset by peer)). 23:15:13 -!- CXI has joined. 23:19:28 Updated the FYB scoreboard with all of jix's stuff, and retired a few old ones of my own: http://www.befunge.org/fyb/fyb/exa/report 23:28:12 i don't understand how 'nothing' can beat any of the other ones 23:36:48 Very stupid programs (read: mangler) can end up modifying their own program very easily if they're not careful. While nothing is doing, well, nothing, mangler is mangling it until it creates a defect, defects itself, then slaughters its own program. 23:37:34 in other words, commits suicide 23:38:23 Yeah. 23:38:30 very much like the guy attacking 127.0.0.1 23:38:31 I just created nothing to show why mangler = bad :) 23:50:15 how's that conditional jump in malbolge going, pgimeno? 23:50:34 graue: absolutely paralized 23:50:51 I'm too busy right now 23:51:48 the problem is that my web is before that and it's going very slowly 23:52:16 that is unfortunate 23:54:52 well, including a malbolge section implied including my esolangs article, which implied updating it, which implied updating the others; at the same time some guy sent me new contents for the Mahjongg solver, and it's gone almost out of control 23:55:13 kind of a chain reaction