fbpx

Acest articol despre „PHP – Combinari de N  luate cate K” trebuie sa fie o mica lectie pentru cei care il citesc.

Cum se foloseste „PHP – Combinari de N luate cate K”?

Lucrand la un proiect, la un moment dat a trebuit sa obtin combinarile dintr-un array de n elemente. Ca sa intelegeti mai bine o sa va dau un exemplu:

 Array: array(0, 1, 2, 3);
 Rezultat dorit:
 1
 2
 3
 0 1
 0 2
 0 3
 1 2
 1 3
 2 3
 0 1 2
 0 1 3
 0 2 3
 1 2 3
 0 1 2 3

Mi-am adus aminte din scoala/facultate de combinari de n luat cate k fara repetare, unde in cazul de fata n este 4 (numarul de elemente din array) si k variaza de la 1 la 4. Ca un ‘bun’ programator ce sunt, am inceput sa pun creierul si degetele in miscare producand o bucatica de cod plina de for-uri, foreach-uri si asa mai departe. Nu dureaza mult si realizez ca foarte probabil cineva a creat deja un pachet pentru asta, iar eu imi bat capul absolut degeaba. Dau rapid un search pe google si gasesc totul deja facut de unele creiere mult mai stralucite decat al meu: un pachet care returneaza permutari si combinari, fara repetari.  😳

DE RETINUT: Noi programatorii avem dese ori tendinta de a reinventa roata fara sa ne dam seama ca foarte probabil a noastra nu va fi la fel de rotunda.  🙂

Solutia pentru problema legata de combinari de n luate cate k:

  1. Descarcati pachetul Math_Combinatorics de pe pear.php.net
  2. Copiati aceste 3-4 linii de cod pentru a face totul:
<?php
require_once 'includes/Combinatorics.php';
$arrayElemente= array(0, 1, 2, 3);
$c = new Math_Combinatorics;
$combinari = $c->combinations($arrayElemente, 2);
for ($i = 0; $i < count($combinari); $i++) {
   $vals = array_values($combinari[$i]);
   $s = implode($vals, ", ");
   print $s . "<br />";
}
?>

Aceasi metoda functioneaza si pentru permutari. Pentru mai multe informatii intrati pe linkul de mai sus de unde se descarca pachetul.

Centrul de preferințe pentru confidențialitate

    Cookie necesare

    Cookie necesare pentru functionarea corecta a site-ului si pentru salvarea optiunilor legate de cookie. De exemplu: cookie folosite pentru vizualizarea video-urilor YouTube.

    gdpr[allowed_cookies] ,gdpr[consent_types]PREF, VISITOR_INFO1_LIVE, use_hitbox, YSC,
    PREF, VISITOR_INFO1_LIVE, use_hitbox, YSC

    Cookie statistici

    Cookie folosit pentru colectarea informatiilor despre modul in care utilizatorii folosesc site-ul webis.ro. Toate informatiile colectate sunt anonime.

    _ga,_gid,_gat_gtag_UA_*, _hjIncludedInSample, fr, _fbp, IDE, DSID

    Completeaza formularul de mai jos
    si vei primi o oferta personalizata GRATUITA!

    Ai nevoie de un site bine facut?​

    0770 700 607

    cere o cotatie
    nu nu te costa nimic

    daca ne spui numarul tau de telefon, te sunam noi...