|
Oh yes! Much better!
Not that it is critical, but any idea how the RegExp functions match up with String.Replace in terms of performance?
Thanks for the nudge in the right direction!
Mike Stanbrook
mstanbrook@yahoo.com
|
|
|
|
|
MStanbrook wrote:
Not that it is critical, but any idea how the RegExp functions match up with String.Replace in terms of performance?
Not really... generally for simple operations string.Replace is faster, at least in PHP. I dunno about in C# though. If all you wanted was {, }, and -, then the fastest code would probably be:
buffer = buffer.Replace("{", "").Replace("}", "").Replace("-", "");
For more advanced RegExs, they're probably faster than multiple string operations.
I'm not sure about any of this though; a bit of benchmarking wouldn't hurt (run both a hundred times and print the number of milliseconds). I'd be interested in the results if you do something like that.
-Domenic Denicola- [CPUA 0x1337]
MadHamster Creations
"I was born human. But this was an accident of fate - a condition merely of time and place. I believe it's something we have the power to change..."
|
|
|
|
|
How would I go about the following?
I have 3 objects named A, B and C.
I want an array(list) of object[] of all combinations that object[]{A,B,C} can be. IOW, the order is of importance.
I want visually something like this:
ABC
BCA
CAB
BAC
CBA
ACB
as a result. Is there any of you math guru's around? I'm pretty sure this is elementary stuff, but my ol' rusty brain.....
I do remember # combinations = n x (n-1) x (n - 2) x ... x (n - n), cant remember the name of it either
UPDATE: oops that must be x's not +'s
Cheers
MYrc : A .NET IRC client with C# Plugin Capabilities. See
http://sourceforge.net/projects/myrc for more info.
|
|
|
|
|
|
|
|
Thx Richard, it seems sometimes it doesnt pay to wait for the news letter.
MYrc : A .NET IRC client with C# Plugin Capabilities. See
http://sourceforge.net/projects/myrc for more info.
|
|
|
|
|
C(p,n)=p!(n-p)! is Newton's binom.
n=3;
s1 = "A";
s2 = "B";
s3 = "C";
print s1,s2,s3
for (i=0;i<n-1;i++)
{
c = s1;
s1 = s2;
s2 = s3;
s3 = c;
print s1,s2,s3
}
c = s2;
s2 = s3;
s3 = c;
print s1,s2,s3
for (i=0;i<n-1;i++)
{
c = s1;
s1 = s2;
s2 = s3;
s3 = c;
print s1,s2,s3
}
And I swallow a small raisin.
|
|
|
|
|
Where do i turn right? LOL just kidding, I cant figure what you are doin, please excuse my frail C# brain
Anyways, it s seem the the Combinatrial class will do the job maybe...well it works for the one part as i described above.
I must see if the class supports "expanding" . What i mean is this:
You have 3 objects (delegates in my case) A,B,C. Now I need what I call a unique population (sounds nice hey ), meaning given an object[] of size x, it should populate it with unique lexographical combinations of A,B,C.
EG: x is 5
AAAAA
AAAAB
.....
BCCCC
CCCCC
Again order is of importance.
I read this on the article:
One last thing to mention : This library generates only combinations, variations and permutations without repetition. If you need repetition you have to implement it yourself. I do not have a need for such functionality right now, so probably won’t write it very soon.
Is this what is meant by it?
MYrc : A .NET IRC client with C# Plugin Capabilities. See
http://sourceforge.net/projects/myrc for more info.
|
|
|
|
|
I derived that the number of possible "repeatable combinations" (proper words ) would be:
# = n ^ size where n is the # of unique objects and size is the width of the "population".
EG: (using 0 and 1 for clarity)
Repeatble Combination of 0 and 1 with size 2: 2 ^ 2 = 4 combinations
0 0
0 1
1 0
1 1
Repeatble Combination of 0 and 1 with size 3: 2 ^ 3 = 8 combinations
0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1
Now this leads me to believe i could effectively "count" the combinations by applying a unique tag for each object using the numbers of objects as base number. In this case, 0 and 1, counting in binary (base 2).
Now if we have say 3 objects, A B C, we tag 0 1 2, base 3. At this point I must say, this is all my own theorizing and I could have it all wrong. Now, if I am right, all I need to use is non standard base numbers for counting.
Is there an easy way to do this? Maybe a formula? Does .Net have builtin support for nonstandard basenumbers like this?
All help appreciated
MYrc : A .NET IRC client with C# Plugin Capabilities. See
http://sourceforge.net/projects/myrc for more info.
|
|
|
|
|
Want the sarcastic answer ? You're wrong
The binary combinations you showed here can be described as : all combinations of 2 elements (0 and 1) in 2 slots. That's indeed 2^2 = 4.
If there are 3 slots, that's 2^3 = 8.
But wait, that's not the right rule !
Your problem described yesterday was : all the combinations of 3 DISTINCT elements in 3 slots. Which is C(p=2,n=3) = 6. This can be obtained programmatically by doing shiftings and swappings, as I showed you. It is likely that the codeproject article pointed by someone else about combinations ad stuff like that will output these exact kind of coimbinations.
In fact you should ask this guy to show you how his API could be used to solve your problem, if you'd like a general purpose combinational answer,
And I swallow a small raisin.
|
|
|
|
|
Thanx, but I was referring to the second part of my problem , getting all the "repeatable combinations" which the articles class do not provide.
http://www.codeproject.com/script/comments/forums.asp?forumid=1649&select=266431&df=1&app=50#xx266431xx
Look there
I'm currently try to make a class to handle this
BTW: I couldnt understand that explaination of your (no offense ) and found one that makes a bit more sense to me
class Perm
{
public void swap (ref int a, ref int b)
{
int temp = a;
a = b;
b = temp;
}
public void perm (int []list, int k)
{
int m = list.Length - 1;
int i;
if (k == m)
{
for (i = 0; i <= m; i++) Console.Write (list [i]);
Console.WriteLine (" ");
}
else
for (i = k; i <= m; i++)
{
swap (ref list [k], ref list [i]);
perm (list, k+1);
swap (ref list [k], ref list [i]);
}
}
}
Looks like it works on the same principal
MYrc : A .NET IRC client with C# Plugin Capabilities. See
http://sourceforge.net/projects/myrc for more info.
|
|
|
|
|
class Answer
{
Answer();
Dispose()
{
}
}
And I swallow a small raisin.
|
|
|
|
|
NotCorrectAnswerException("It does not support any amount of elements") thrown
But no worries, I think I have done it
MYrc : A .NET IRC client with C# Plugin Capabilities. See
http://sourceforge.net/projects/myrc for more info.
|
|
|
|
|
Hello,
I have my application working perfectly on MSDE, now I want to downgrade it to using an Access database locally.
I'm using OleDb* classes, so I just changed my connection string to point to the database and it worked. Well, just partially.
I'm having two little problems.
First, all my INSERT queries are throwing exceptions on invalid syntax. I copied one of those queries to Access and created a query and it worked. Just that it reformatted and added those brackets around one parameter name.
INSERT INTO Users ( LoginName, Name, [Password], Permissions )<br />
VALUES ('pepe', 'Jose', 'p', 1007);
I added those brackets to my program, and it worked (on that particular INSERT query). It also worked (that query) using MSDE. My question is, what are those brackets, and how do I know which parameters I should enclose in them? Do I have to fix all my INSERT queries?
The second problem is that when using the Access database, an immediate refill of the list with the records (users in this case) does not show the new just-added record. Using MSDE it comes up.
Any ideas?
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
UPDATE queries also cause problems. I haven't seen what exactly is causing the error, but also throw exceptions.
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
The brackets are used to let Access know that you are calling a field in a database instead of using one of it's reserved keywords. You can do an MSDN search for Access keywords or look in Access and I think password is one of them. Thus, you would use the brackets for all fields that are named after reserved keywords.
I'm not sure about your second problem. Can you post the part of the code that's calling the database?
David Stone
It seemed similar to someone saying, "Would you like to meet my knife collection?"
Ryan Johnston on Elaine's sig
|
|
|
|
|
David Stone wrote:
I'm not sure about your second problem. Can you post the part of the code that's calling the database?
The code is simple:
oCmd = new OleDbCommand(sSQL, oConn);
oCmd.ExecuteNonQuery();
FillUsersList();
sSQL is the INSERT, DELETE or UPDATE query (modifying the database.)
FillUsersList is simply a routine that again opens the connection, performs a SELECT query and shows the results on a list view control.
The changes don't come up in the list view from this call to FillUsersList(). A later call will do.
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
I've noticed when I deal with Access databases there is a little bit of a lag with data entry. I think it's because you have to actually open a file and then insert the data. Whereas with MSDE or SQL Server, the server is always running so the data gets updated automatically. Can you have your program wait for a couple seconds before it calls the FillUsersList() method?
David Stone
It seemed similar to someone saying, "Would you like to meet my knife collection?"
Ryan Johnston on Elaine's sig
|
|
|
|
|
David Stone wrote:
Can you have your program wait for a couple seconds before it calls the FillUsersList() method?
I guess I will have to do that... thanks
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
No problem. Sorry I couldn't be of more help. My question is, why can't you install MSDE on the client machine?
David Stone
It seemed similar to someone saying, "Would you like to meet my knife collection?"
Ryan Johnston on Elaine's sig
|
|
|
|
|
David Stone wrote:
No problem. Sorry I couldn't be of more help.
It's OK. Don't worry.
David Stone wrote:
why can't you install MSDE on the client machine?
Well, I could... here is the story: my dad is building a car wash, and I'm developing the software for him (sales, customer control, reports, statistics, and so on). I won't charge him (after all, he paid for my vacations in Europe, and I spent a lot of money), but I'm planning on selling it to other car washes (two friends of his are building other, and he said he would make them buy it from me).
One of the features was support for several machines in the network (cashier registering sales while manager seeing stats), so I started with MSDE. I'm studying college about 800 km from my home city, so I cannot go to install MSDE (and to ask my dad to install it is too much). I went this past weekend, but the computer where I was going to install it was not ready (my dad at first wants it locally on just one computer) so I thought downgrading it to Access will be easier installation. I've been all morning working on it and it seems it's bringing more problems, so I think I better find a way to go for a day and install it myself (or find someone who can do it for me).
Another idea that occured to me is to sell it by licenses for each computer (say X for the first and Y for each additional computer, being X >> Y). So if someone just wants one license, I could sell the Access version instead of the MSDE version. (or hardware locks...)
And that's why...
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
But MSDE is a free installation. With a couple of limitations, it's just like SQL Server. I think there's a restriction on the size a db can be, and the connections, but that shouldn't be a problem. I don't think that a carwash would exceed that limit. I think MSDE is the way to go. Besides, if you need to, you can always just install SQL Server over that and you won't have to change around any of the "plumbing" code.
David Stone
It seemed similar to someone saying, "Would you like to meet my knife collection?"
Ryan Johnston on Elaine's sig
|
|
|
|
|
Yes, I know... MSDE is more than enough for a car wash. The main problem is installation, but I can sort that one out. My other idea was that using an Access DB can help limit the software to just running on one computer.
But I'll end up only using MSDE... too many problems.
-- LuisR
──────────────
Luis Alonso Ramos
Chihuahua, Mexico
www.luisalonsoramos.com
"Do not worry about your difficulties in mathematics, I assure you that mine are greater." -- Albert Einstein
|
|
|
|
|
If you look in the VS.NET\Setup\MSDE directory you should see the setup files needed for installing MSDE; all you *should* have to do is copy those out (change the instance name in setup.ini) and run the setup program. That should install MSDE on the client system.
James
"And we are all men; apart from the females." - Colin Davies
|
|
|
|
|