FUDforum
Fast Uncompromising Discussions. FUDforum will get your users talking.

Home » Imported messages » comp.lang.php » Unique array of arrays - how can I do this?
Show: Today's Messages :: Polls :: Message Navigator
Switch to threaded view of this topic Create a new topic Submit Reply
Unique array of arrays - how can I do this? [message #181308] Sat, 04 May 2013 11:51 Go to next message
thomas.lehmann.privat is currently offline  thomas.lehmann.privat
Messages: 1
Registered: May 2013
Karma: 0
Junior Member
Hi,

While calculation I get a solution as an array of integers.
There're many solutions and I would like to keep them in an array.

Because of the algorithm there are different paths to get to
the same solution but I want to have it once only.

I know that I can use array_unique but that's too slow
when called too often. I can't wait until end of calculation
because then I run into memory problems.

So I need an efficient way to add elements once only to
an array while calculation with an array as element.

How can I do this?
Re: Unique array of arrays - how can I do this? [message #181311 is a reply to message #181308] Sat, 04 May 2013 12:20 Go to previous messageGo to next message
The Natural Philosoph is currently offline  The Natural Philosoph
Messages: 993
Registered: September 2010
Karma: 0
Senior Member
On 04/05/13 12:51, thomas(dot)lehmann(dot)private(at)googlemail(dot)com wrote:
> Hi,
>
> While calculation I get a solution as an array of integers.
> There're many solutions and I would like to keep them in an array.
>
> Because of the algorithm there are different paths to get to
> the same solution but I want to have it once only.
>
> I know that I can use array_unique but that's too slow
> when called too often. I can't wait until end of calculation
> because then I run into memory problems.
>
> So I need an efficient way to add elements once only to
> an array while calculation with an array as element.
>
> How can I do this?
1/ write in in a proper language like C
2/. use a database to store stuff in which has fast algortihms for
dealing with matrix type stuff.

because it sounds like that's what you have - a 2D matrix of integers
you could produce e.g a row hash and index that which would make it fast
to check if you have a POSSIBLE match, and then sort through any
possibles to see if they are exactmatches.

depending on the size though,I'd be tempted to make it a C coded RAM
based thing.
preferably using statically allocated memory if you know a maximum size,
to avoid pointer indirection stuff.

If its huge, I'd use a database and a hash table.


--
Ineptocracy

(in-ep-toc’-ra-cy) – a system of government where the least capable to lead are elected by the least capable of producing, and where the members of society least likely to sustain themselves or succeed, are rewarded with goods and services paid for by the confiscated wealth of a diminishing number of producers.
Re: Unique array of arrays - how can I do this? [message #181313 is a reply to message #181308] Sat, 04 May 2013 12:25 Go to previous messageGo to next message
Denis McMahon is currently offline  Denis McMahon
Messages: 634
Registered: September 2010
Karma: 0
Senior Member
On Sat, 04 May 2013 04:51:28 -0700, thomas.lehmann.private wrote:

> Hi,
>
> While calculation I get a solution as an array of integers. There're
> many solutions and I would like to keep them in an array.
>
> Because of the algorithm there are different paths to get to the same
> solution but I want to have it once only.
>
> I know that I can use array_unique but that's too slow when called too
> often. I can't wait until end of calculation because then I run into
> memory problems.
>
> So I need an efficient way to add elements once only to an array while
> calculation with an array as element.
>
> How can I do this?

Given that your answers are integers, at the point that you put your
answers into the array, assuming that the answer is in $ans:

if ( !isset( $arr ) )
$arr = array();
$arr[$ans] = $ans;

When you finish calculations:

sort( $arr );
foreach ( $arr as $k=>$v )
echo "Answer {$k} is {$v}.\n";

or:

sort( $arr );
echo "The answers are: " . implode( $arr, ", " ) . ".\n";

--
Denis McMahon, denismfmcmahon(at)gmail(dot)com
Re: Unique array of arrays - how can I do this? [message #181315 is a reply to message #181308] Sun, 05 May 2013 22:06 Go to previous message
Thomas 'PointedEars'  is currently offline  Thomas 'PointedEars'
Messages: 701
Registered: October 2010
Karma: 0
Senior Member
thomas(dot)lehmann(dot)private(at)googlemail(dot)com wrote:

> While calculation I get a solution as an array of integers.
> There're many solutions and I would like to keep them in an array.
>
> Because of the algorithm there are different paths to get to
> the same solution but I want to have it once only.
>
> I know that I can use array_unique but that's too slow
> when called too often. I can't wait until end of calculation
> because then I run into memory problems.
>
> So I need an efficient way to add elements once only to
> an array while calculation with an array as element.
>
> How can I do this?

You need to be more specific about your problem. What is the calculation?
What kind of integers are in one array? How do you add them? How many
integers? How many arrays of integers in your array?

And please get a real name. That said, avoid Google Groups for posting; use
a newsreader instead.

<http://www.catb.org/~esr/faqs/smart-questions.html>


PointedEars
--
> If you get a bunch of authors […] that state the same "best practices"
> in any programming language, then you can bet who is wrong or right...
Not with javascript. Nonsense propagates like wildfire in this field.
-- Richard Cornford, comp.lang.javascript, 2011-11-14
  Switch to threaded view of this topic Create a new topic Submit Reply
Previous Topic: replacing spaces with newline
Next Topic: changing video source from youtube to my site
Goto Forum:
  

-=] Back to Top [=-
[ Syndicate this forum (XML) ] [ RSS ]

Current Time: Thu Nov 21 13:35:08 GMT 2024

Total time taken to generate the page: 0.02089 seconds