![]() |
|
|
| Subject:
Someone Familiar With Mathematica Software
Category: Computers > Software Asked by: spud480-ga List Price: $20.00 |
Posted:
30 Oct 2002 09:14 PST
Expires: 29 Nov 2002 09:14 PST Question ID: 93205 |
I have(using Mathematica)created a list(Table)of numbers(ex.1000 3digit numbers)from strings of numbers. Can anyone tell me how to get Mathematica to search and find any similar (321-123-231---432-234)numbers in the list(if any)and sort the answer,most numerous 1st in desending order(123-321-231----432-234----673-736)?I use Windows Me and can follow simple instructions but I am not trained in programming | |
|
|
| There is no answer at this time. |
|
| Subject:
Re: Someone Familiar With Mathematica Software
From: al_kane-ga on 30 Oct 2002 16:37 PST |
Hi... I've got a solution for you.
Here's the following code that does what you ask:
n3dig = 200;
lo3d = 100;
hi3d = 999;
test1 = Table[Random[Integer, {lo3d, hi3d}], {i, 1, n3dig}];
test2 = Table[IntegerDigits[test1[[i]]], {i, 1,
Dimensions[test1][[1]]}];
test3 = Table[Sort[test2[[i]]], {i, 1, Dimensions[test1][[1]]}];
test4 = Sort[test3];
test5 = Union[test4];
test6 = Table[Count[test4, test5[[i]]], {i, 1,
Dimensions[test5][[1]]}];
test7 = Table[{test6[[i]], test5[[i]]}, {i, 1,
Dimensions[test6][[1]]}];
answer = Sort[test7, (#1[[1]] > #2[[1]]) &];
I've broken each step into a separate line, so that you can ask me
about it if you need clarification. To run this code, you set the
number of 3-digit numbers through the n3dig parameter (I set it to
200). Then, it creates a table of random 3-digit integers that are
between 100 (lo3d) and 999 (hi3d). The next step breaks each 3-digit
integer into three 1-digit integers. After various manipulations, the
answer that you're interested is labeled 'answer', which is a table
listing the frequency of occurrence of similar 3-digit integers. Note,
it's easy to adapt this to 4- or higher-digit integers if you're
interested. |
| Subject:
Re: Someone Familiar With Mathematica Software
From: spud480-ga on 31 Oct 2002 09:09 PST |
I need some clarification. I form my string number by using ToString
etc,StringPosition etc,StringDrop etc. Then I create a Table that
partitions the number into groups of digits using StringTake
andStringLength etc.. This gives me a table of[for example]1000,3digit
numbers. This is where I am now. Do I enter your code at this point?
The RandomInteger part confuses me.I entered your code by itself and
received several error messages. Among them,
Set::write:Tag Times in 1o3d is Protected
Possible spelling error:new symbol name n3dig similar to existing
symbol ndig
Table:: iterb:Iterator{i,1,n3dig} does not have appropriate bounds |
| Subject:
Re: Someone Familiar With Mathematica Software
From: al_kane-ga on 31 Oct 2002 11:27 PST |
* Let's say that you have a table named "mytable" that contains
strings of numbers.
* First, use ToExpression[] on each of the elements in mytable. This
will convert the "strings" to integers. You can do this using:
test1 = Table[ToExpression[mytable[[i]]],{i,1,Dimensions[mytable][[1]]}];
* Next, use the lines of the code I provided starting from "test2 =
...". This should give you your answer. |
| Subject:
Re: Someone Familiar With Mathematica Software
From: spud480-ga on 01 Nov 2002 09:25 PST |
It's not working. I entered the test1 code and I received error
messages. Among them-Part specification ToExpression[1] is longer than
depth of object-Iterator[i,1,Dimensions[1]does not have appropriate
bounds-Part 1 of{} does not exist.
PS-The table I start with contains no strings,it has already been
partitioned into 3 digit numbers[135-091-273-etc]. |
| Subject:
Re: Someone Familiar With Mathematica Software
From: al_kane-ga on 01 Nov 2002 10:01 PST |
Well, I don't know what to say. It sounds like you have to get your
table into the correct format. Make sure it's setup like
{n1,n2,...,nm}, where n1 is your 1st 3-digit number, n2 is your 2nd
3-digit number, and nm is your last 3-digit number. If it's not, you
can use Flatten[] to get it into the correct format.
I will show you the output for all of the steps that I get for a
sample table called test1.
test1 = {454, 452, 343, 354, 354, 413, 314, 212, 453, 453};
test2 = {{4, 5, 4}, {4, 5, 2}, {3, 4, 3}, {3, 5, 4}, {3, 5, 4}, {4, 1,
3}, {3, 1, 4}, {2, 1, 2}, {4, 5, 3}, {4, 5, 3}}
test3 = {{4, 4, 5}, {2, 4, 5}, {3, 3, 4}, {3, 4, 5}, {3, 4, 5}, {1, 3,
4}, {1, 3, 4}, {1, 2, 2}, {3, 4, 5}, {3, 4, 5}}
test4 = {{1, 2, 2}, {1, 3, 4}, {1, 3, 4}, {2, 4, 5}, {3, 3, 4}, {3, 4,
5}, {3, 4, 5}, {3, 4, 5}, {3, 4, 5}, {4, 4, 5}}
test5 = {{1, 2, 2}, {1, 3, 4}, {2, 4, 5}, {3, 3, 4}, {3, 4, 5}, {4, 4,
5}}
test6 = {1, 2, 1, 1, 4, 1}
test7 = {{1, {1, 2, 2}}, {2, {1, 3, 4}}, {1, {2, 4, 5}}, {1, {3, 3,
4}}, {4, {3, 4, 5}}, {1, {4, 4, 5}}}
answer = {{4, {3, 4, 5}}, {2, {1, 3, 4}}, {1, {4, 4, 5}}, {1, {3, 3,
4}}, {1, {2, 4, 5}}, {1, {1, 2, 2}}}
As you see, answer contains the frequency of the combinations of
3-digit numbers from mytable. For instance, there are four 3-digit
numbers that contain the combination of 3, 4, and 5, while there are
only 2 instances of 3-digit numbers containing 1, 3, and 4.
Try starting with test1 above (copy and paste into Mathematica). Then,
run the initial code starting from test2. It should work as long as
you're using version 4.0 or higher (which has the Union function).
If this doesn't work, then try the Mathematica MathGroup help board
(http://forums.wolfram.com/mathgroup).
Cheers. |
If you feel that you have found inappropriate content, please let us know by emailing us at answers-support@google.com with the question ID listed above. Thank you. |
| Search Google Answers for |
| Google Home - Answers FAQ - Terms of Service - Privacy Policy |