Re: Help needed with List!
- To: mathgroup at smc.vnet.net
- Subject: [mg16938] Re: [mg16909] Help needed with List!
- From: "Hans J.-I. Michel" <hans at dorsai.org>
- Date: Thu, 8 Apr 1999 02:32:40 -0400
- Sender: owner-wri-mathgroup at wolfram.com
On April 6, 1999 question asked was as follows: -----Original Message----- From: alvaroo at my-dejanews.com <alvaroo at my-dejanews.com> To: mathgroup at smc.vnet.net Subject: [mg16938] [mg16909] Help needed with List! >Sirs Probably these are FAQs but I am new in this newsgroup and I have not >been able to solve them. I use Mathematica 3.0: (i) I need to convert a long >integer number in List format. For example if I had the number 123456 I need >to convert it into {1,2,3,4,5,6}: Is it possible with an instruction? And, >(ii) I need to delete from a List A the common elements with other List B: >for example if A = {1,2,3,4} and B = {1,2} I need to delete by an instruction >the elements 1, 2 of List B from List A to obtain List C = {3,4}. I am >working with integers with 10.000 digits or more so you can appreciate how >helpful for me it would be to solve these questions. Thanks in advance. >alvaroo > >-----------== Posted via Deja News, The Discussion Network ==---------- >http://www.dejanews.com/ Search, Read, Discuss, or Start Your Own > Assuming you are using version 3.0 or later. (i) To convert an integer into a list of digits in position, Mathematica has a built in function. The function is called IntegerDigits[n], where n is your 10,000 or more digit number. (In earlier versions it was Digits[n].) By default the IntegerDigits[n] function output assumes you want the resulting list in base 10. If you wish the output in different bases use IntegerDigits[n, b], where b is your desired base. For example: a = your digit here; (please note you may import this number from a file) b = ....; Use semicolon in order not to waste memory displaying a 10,000 or more digit number. alist = IntegerDigits[a]; blist = IntegerDigits[a]; At this point you have a list if you wish to display them to make certain, then type in "alist" or "blist: at your next In[] or simply leave off the semicolons in your declarations. (ii) Now here comes the ambiguous part. Not knowing what kind of numbers you are dealing with -- I move forward. In base 10 the symbols we have availabe to us for positional representation are {0,1,2,3,4,5,6,7,8,9}. Now, if any of your numbers or lists use up every number, then it becomes not too useful and a waste of computational time to use the Mathematica built in function for sets (list) -- Complement[alist, blist]. However; Complement[alist, blist] should return the complement of alist and blist, treating alist as the universal. The list that gets returned is a list of things in alist but not in blist. See set theory. You can use {0,1,2,3,4,5,6,7,8,9} as your universal, in this case you can find if alist or blist is a number, for example that does not ever have a 9 or 2, etc. If your list of digits alist and blist have similar elements. If for example 1,2,3,...n elements in alist is identical to 1,2,3,...(n - x) in blist then your may want to look into the Mathematica built in function Drop[list, n], where it drops the first n elements from a list. If you do not know the lengths of your list, also look into Length[list]. This is should get you started. Hans