Movatterモバイル変換


[0]ホーム

URL:


Skip to content

Navigation Menu

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Sign up

Generate Permutations and Combinations in an efficient way.

License

NotificationsYou must be signed in to change notification settings

drupol/phpermutations

Repository files navigation

Latest Stable VersionGitHub starsTotal DownloadsGitHub Workflow StatusScrutinizer code qualityCode CoverageLicenseDonate!

PHPermutations

PHP Iterators and Generators to generate combinations and permutations in an efficient way.

At first the library was created to only generate permutations and combinations.

In the end, I added other Iterators and Generators like:

  • Fibonacci numbers,
  • Perfect numbers,
  • Prime numbers,
  • Product of numbers,
  • Rotation of an array,
  • Cycling through an array,
  • Permutations,
  • Combinations,

Introduction

I've always been fascinated by numbers and everything around them... in other words, mathematics.

The library has been written first for being used inPHPartition, then it hasbeen extended here and there.

Its main use is for generating Permutations and Combinations without running out of memory, thanks toPHP Generators andandIterators.

The difference with other combinatorics library is that you can use an extra parameter 'length', that allows you tocompute Permutations and Combinations of a particular size.The other notable difference is that your input arrays may contains any type of object (integers, arrays, strings orobjects), the library will still continue to work without any trouble.

Requirements

  • PHP >= 7.1.3,

How to use

Include this library in your project by doing:

composer require drupol/phpermutations

Let's say you want to find all the permutations of the list of number [1, 2, 3, 4, 5] having a length of 3:

// Create the object$permutations =new \drupol\phpermutations\Generators\Permutations([1,2,3,4,5],3);// Use a foreach loop.foreach ($permutations->generator()as$permutation) {// do stuff}// Or get the whole array at once.$permutations->toArray();

Most of the components always has the same arguments except for very few of them.

As the documentation per component is not written yet, I advise you tocheck the tests to see how to use them.

Combinations

In mathematics, a combination is a way of selecting items from a collection, such that (unlike permutations) the orderof selection does not matter.--Wikipedia

In one sentence:When the order doesn't matter, it is a Combination.

Examples

Let's say we have a group of fruits:

$list = ['Apple', 'Pear', 'Banana', 'Orange']

and we want to find the combinations of length:3, the result will be:

['Apple', 'Pear', 'Banana']

['Apple', 'Pear', 'Orange']

['Apple', 'Banana', 'Orange']

['Pear', 'Banana', 'Orange']

Permutations

In mathematics, the notion of permutation relates to the act of arranging all the members of a set into some sequenceor order, or if the set is already ordered, rearranging (reordering) its elements, a process called permuting.These differ from combinations, which are selections of some members of a set where order is disregarded.--Wikipedia

In one sentence:When the order does matter, it is a Permutation.

Examples

Let's say we have a group of fruits

['Apple', 'Pear', 'Banana', 'Orange']

and we want to find the permutations of length:3, the result will be:

['Apple', 'Pear', 'Banana']

['Pear', 'Apple', 'Banana']

['Apple', 'Banana', 'Pear']

['Banana', 'Apple', 'Pear']

['Pear', 'Banana', 'Apple']

['Banana', 'Pear', 'Apple']

['Apple', 'Pear', 'Orange']

['Pear', 'Apple', 'Orange']

['Apple', 'Orange', 'Pear']

['Orange', 'Apple', 'Pear']

['Pear', 'Orange', 'Apple']

['Orange', 'Pear', 'Apple']

['Apple', 'Banana', 'Orange']

['Banana', 'Apple', 'Orange']

['Apple', 'Orange', 'Banana']

['Orange', 'Apple', 'Banana']

['Banana', 'Orange', 'Apple']

['Orange', 'Banana', 'Apple']

['Pear', 'Banana', 'Orange']

['Banana', 'Pear', 'Orange']

['Pear', 'Orange', 'Banana']

['Orange', 'Pear', 'Banana']

['Banana', 'Orange', 'Pear']

['Orange', 'Banana', 'Pear']

The permutations of length 3 of the array [1, 2, 3, 4, 5] are,please hold on tight, the sum of all the permutationsof each combinations having a length of 3 of that array.

Tests

Each Generators and Iterators are tested using the same values as input. I try to be as much complete as possible withthetests.Every time the sources are modified,Github, the continuous integrationservice, tests the code against those tests, this way you are aware if the changes that you are introducing are valid.

Contributing

Feel free to contribute to this library by sending Github pull requests. I'm quite reactive :-)

About

Generate Permutations and Combinations in an efficient way.

Topics

Resources

License

Code of conduct

Stars

Watchers

Forks

Sponsor this project

 

Packages

No packages published

Languages


[8]ページ先頭

©2009-2025 Movatter.jp