Jak wykonać wariacje, permutacje w PHP
|Jak wykonać wariacje, permutacje w PHP
Kiedyś dawno temu pisałem sobie grę na telefon „Symulator gier liczbowych” i postanowiłem podzielić się kilkoma linijkami kodu, którego użyłem przy tworzeniu tej gry i ciekawych systemów liczbowych wariacje, permutacje.
Co to ta Permutacja?
Chodzi dokładnie o użycie permutacji do obliczeń wystąpień danego przedziału liczb, a dokładniej o wypisanie wszystkich możliwych kombinacji z danego zbioru. Do tego właśnie służy permutacja i nie tylko. Ale może też posłużyć do stworzenia sobie takich małych ciekawych systemów skróconych do gry w totolotka.
Wyznacznikiem wszystkich możliwych kombinacji z danego zbioru liczb jest wzór
Wzór na permutacje:
Pn = n!
P3 =1*2*3
gdzie n oznacza ilość elementów zbioru. Czyli jeżeli mamy 3 książki w trzech kolorach to możemy je ustawić przez 6 dni w różnych wariantach, ponieważ 3! = 1*2*3=6.

Ok , to mamy po części wytłumaczone co to jest Permutacja.
Co to zbiór wariacji?
A teraz troszkę bardziej skomplikowane, żeby użyć system pełny do gry w totolotka trzeba rozszerzyć nasz system permutacji o system kombinacji, zastosujemy tutaj zbiór wariaci bez powtórzeń, gdzie
Wzór na wariacje:


Co to za niesamowita kombinacja i wariacja zawsze wychodzi liczba całkowita 😊
Zastosowanie w praktyce.
Jak takie obliczenie zastosować w praktyce do gry w lotto albo w innym przypadku np. do obliczenia, ile meczy zagra każda reprezentacja na mundialu, Polska Gola 😊
Zacznę od totolotka czemu podstawiłem we wcześniejszym wzorze takie liczby, odpowiedź jest banalna, ponieważ chcę uzyskać, ile wszystkich kombinacji par liczb będzie, kiedy wybiorę sobie siedem liczb z puli 49 i wypiszę po 6 z nich. Z naszych obliczeń wynika, że tylko 7, czyli muszę wysłać 7 kuponów, żeby osiągnąć swój cel jaki założyłem, a mianowicie, żeby w tych 7 liczbach trafić 6 to na pewno wygram 6 w lotka :).
Czemu służą wariacje.
Tym oto sposobem zwiększam sobie szansę na wygraną, ponieważ zamiast 6 liczb skreślam teoretycznie 7, zobaczcie.
Zbiór = {1, 2, 3, 4, 5, 6, 7}
Teoretycznie wylosowane liczby = {1,2,3,4,5,6}
- 123456
- 123457
- 123467
- 123567
- 124567
- 134567
- 234567
Tak przygotowany zestaw przenosimy na kupony i wysyłamy.
Zastosowanie Piłkarskie
Wspomniałem wcześniej o meczach piłkarskich nie wnikajmy w szczegóły odpadania w różnych fazach rozgrywek „Polska Gola” ale załóżmy, że jest 5 drużyn i każdy ma zagrać z każdym tak jest przecież sprawiedliwie i mundial trwałby dłużej, co za widowisko by było, ile piwa by się przelało „ko,ko,ko euro spoko”. Wracając do naszych par to z wcześniejszego wzoru tego na zbiór wariacji wynika, że takich meczy było by 10.

Zbiór = {POL, GER, ANG, ITA, BRA}
- POL&GER
- POL&ANG
- POL&ITA
- POL&BRA
- BRA&ITA
- BRA&GER
- BRA&ANG
- ITA&GER
- ITA&ANG
- ANG&GER
Dobry kod PHP to podstawa
Dobrze teraz czas na najważniejsze, czyli kod PHP. Na potrzeby tego posta stworzyłem klasę, która jest łatwa i przyjemna do zastosowania w różnych zestawieniach. Można wprowadzać stringi, int, array i co tylko dusza zapragnie, powinna sobie poradzić z tym wszystkim o czym pisałem wcześniej. Do tej klasy stworzyłem powiedzmy klasy pomocnicze jedna abstrakcyjna i Trait. Można powiedzieć, że klasa główna „Permutation” jest jakby menagerem pozostałych klas i odpowiada za wykonanie całości z przerzuceniem wyświetlania widoku do pliku wykonywalnego owej klasy menagera. Pozostała część działa jakby w ukryciu, tak żeby cały sukces przypisać menagerowi „Permutation”, a o reszcie, żeby nie było słychać i widać tak jak to w życiu bywa, śmietankę spija menager. Ciekawym rozwiązaniem według mnie, jest użycie metody abstrakcyjnej w samej klasie „Permutation” dziedziczonej po właśnie klasie abstrakcyjnej. Po analizie zauważyłem, że dzięki temu skróciłem kod o jakieś 4 dodatkowe metody w klasie „Permutation”, które musiały by się pojawić, ażeby klasa była wykonywalna. Oczywiście klasy są już przygotowane tak aby w przyszłości szło dopisać kilka linijek kodu i można symulować grę w Multilotka na 80 liczb. Program sam losuje wygrywające liczby w sposób randomowy więc raczej będzie to dość prawdziwe odzwierciedlenie losowań.
Kiedyś swego czasu napisałem taki podobny program na androida tam jednak to wyglądało zgoła odmiennie, jeżeli cię to zainteresowało to zapraszam do artykułu symulator gier liczbowych u mnie na stronie wystarczy kliknąć
symulator-gier-liczbowych Smartfon.
Do czego służy symulator
Cały system ( Program ) posłuży do symulowania gry w lotto, na razie jeden plik wykonywalny pozwalający na symulację gry na 49 liczb, czyli ile wydajemy na kupony, ile wygrywamy, gra systemowa, skrócony, system pełny, gra normalna. Wybieramy odpowiedni system naciskamy button losuj, a liczby automatycznie zostaną wybrane i wklejone w odpowiednie pola, a nam pozostaje tylko nacisnąć buton sprawdź i tyle. Po tej operacji zostaniemy przeniesieni do wszystkich kombinacji jakie zostały stworzone przez system skrócony, który wybraliśmy i ukarze się tabelka wskazująca na wygraną albo i nie. Ponadto będziemy mieli wgląd we wszystkie koszty, które symulowaliśmy w programie, tak jakby były opłacone w prawdziwej grze.
Jakie możliwości daje program
Daję ci możliwość pooglądania co i jak działa w klasach i jakie to ma odzwierciedlenie potem dla usera korzystającego z takiego programu.
Sprawdź wykorzystanie pamięci „memory_get_usage()”
Zastosowałem także nową funkcję dodaną do PHP 7 wyliczającą ilość kombinacji w celu zaoszczędzenia pamięci, ładnie to wyszło funkcja się sprawdza w praktyce, jeżeli będziesz miał podobny problem to zachęcam do skorzystania z tego dobrodziejstwa w PHP 7 i nowszych PHP 8, a dokładnie z „yield” tu link do opisu funkcji:
Manual yield PHP
jest to nic innego jak generator, jeżeli programujesz w jakimś wyższym języku np. „Java” to wiesz o czy piszę.
Zrobiłem także do tych kilku powiedzmy klas dokumentację żebyś mógł pooglądać, jak to wygląda ze strony opisowej ( technicznej ), jest to o tyle fajne, że wszystkich klas jest niewiele i będziesz mógł szybko załapać o co chodzi w takim stanie i porównać do istniejącego kodu. W końcu to na podstawie tego kodu powstała ta dokumentacja.
Dokumentacja Techniczna Symulator Gier Liczbowych
Testy jednostkowe są ważne
Może w przyszłości zrobię testy jednostkowe już tak do ukończenia w całości mojej pracy, ale teraz musisz się zadowolić tym co jest. Starałem się to przełożyć tak, aby było łatwe do przyswojenia i nie wymagało dużego główkowania co i dlaczego tu jest zapisane. Jeżeli będę poprawiał kod lub dopisywał testy jednostkowe, to wszystkie zmiany będą wprowadzone także na gitHubie więc kod z linku poniżej będzie aktualny.
Ułatw sobie pracę programowania, autoload
Jeszcze na sam koniec dodam, że dla ułatwienia pracy napisałem sobie taki prosty autoload.php dla plików klas, jeżeli chcesz z niego korzystać to w pierwszej kolejności uzupełnij konfigurację w samym pliku. Podaj folder gdzie znajduje się twój projekt, do tego ścieżka na pliki klas już w tym folderze, możesz zrobić osobny dla Trait i osobny dla klas. Autoload poradzi sobie nawet, jak dodasz jeszcze swój interfejs, wystarczy, że interfejsy leżą w osobnym folderze i sprawa załatwiona, a jeżeli lubisz mieć wszystko w jednym folderze np. /src to też nic nie stoi na przeszkodzie, ażeby to tak działało. Autoloada jest skonstruowany w sposób statyczny i dołączony dzięki „require_once” do pliku index.php. Reszta wczytywanych plików jest wykonywana automatycznie właśnie dzięki temu plikowi, jeżeli bawiłeś się composerem to wiesz o czym piszę.
Tak więc przechodzimy do prezentacji samych klas.
Autoload.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 | <?php interface auto{ static public function wywolaj_autoload(); } abstract class Autoload implements auto{ /** * Stałym przypisujemy folder * ze zbiorem interfejsów "LIBINTERFACE", i trait * też osobny "LIBTRAIT" dla Template "LIBTEMPLATE" * dla plików klas "LIBCLASS" dla plików projektu * "LIBPLIKI" i cały folder dla wszystkich plików * "LIBFOLDERPROJECT" * nazwy folderów */ const LIBFOLDERPROJECT = "Permut"; const LIBTEMPLATE = "template"; const LIBPLIKI = "pliki"; const LIBCLASS = "src"; const LIBINTERFACE = "src-interface"; const LIBTRAIT = "src-traid"; public function __construct(){ } static private function autoload($className) { try { if (!empty($className)) { ## czyścimy ze śmieci ## // preg_match('/^[a-zA-ZąęćłńóśźżĄĆĘŁŃÓŚŹŻ0-9\_\-\:\.\,\ \/]+$/', $className, $class_base); $class_base = $className; /** * Liczymy ilość znaków w nazwie pliku */ if (strlen($class_base[0]) > 40) { throw new Exception("Blad: Plik jest niewlasciwy: " . $class_base[0] . '<br>'); } $filess = []; $folders = [self::LIBCLASS, self::LIBTRAIT, self::LIBINTERFACE, self::LIBTEMPLATE, self::LIBPLIKI]; foreach ($folders as $folder){ // |*.tpl $files1 = glob( dirname(__DIR__).'/'.self::LIBFOLDERPROJECT.'/'.$folder.'/*.php'); if(!empty($files1)){ //array_push($filess, $files1); foreach ($files1 as $file){ if($folder == self::LIBCLASS){ // $ff = example('.', $file); // print_r($ff); // if(!class_exists('Kombinacje/ClassAbstractRandomNumberList', false)){ // throw new Exception("Błąd Klasa Nie Istnieje: " . $file . '<br>'); // } } if($folder == self::LIBTRAIT){ // if(!trait_exists($file)){ // throw new Exception("Błąd Trait Nie Istnieje: " . $file . '<br>'); // } } if($folder == self::LIBINTERFACE){ // if(!interface_exists($file)){ // throw new Exception("Błąd Interfejs Nie Istnieje: " . $file . '<br>'); // } } if(file_exists($file)){ require_once( $file ); } } // $filess[]=$files1; } } } else { throw new Exception("Klasa nie wczytana:<br>"); } } catch (Exception $e){ self::unregisterAutoload(); echo ($e->getMessage()); // ## metoda do obsługi błędów i zapisie logów ## } } static private function unregisterAutoload(){ foreach (spl_autoload_functions() as $class){ spl_autoload_unregister($class); } } static public function showAutoload(){ spl_autoload_register(array('Autoload', 'autoload')); } } Autoload::showAutoload(); |
Zwrócie także uwagę na przypisanie zmiennej do nazwy metody tak, że można sobie ją wybierać według potrzeb w ->getViewSystemAddIndex(), a dokładniej $ArrayAddSystem może wam się to przydać i ułatwi przyszłą pracę.
ClassPermutation.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 | <?php namespace Kombinacje; // bez autoload.php // require_once "src\ClassAbstractRandomNumberList.php"; // require_once "src\TraitSystemSkrocony80.php"; // require_once "src\TraitSystemSkrocony49.php"; /** * * Symulator Gier Liczbowych * * Program pozwala na obliczanie kombinacji * permutacji dla danego zestawu liczb bez powtórzeń * ponadto można wylosować zestaw liczb z danego przedziału np (6 z 49) lub 20 z 80 * Do tego pobiera zestawy systemów skróconych i pełnych z dwóch Trait 49 i 80 liczb * które to wypełnia liczbami podanymi przez usera tworząc systemy skrócone dla * odpowiedniego przedziału liczb. * Można dzięki temu symulować grę w lotto podając ceny poszczególnych kuponów * i ilości gier * * @package Permutation * @author Adam Berger * @license MIT Public License * @version 1.0.0 * @copyright 2015-2021 Adam Berger */ class ClassPermutation extends ClassAbstractRandomNumberList { /** * @trait TraitSystemSkrocony80 Systemy dla 80 liczb */ use TraitSystemSkrocony80; /** * @trait TraitSystemSkrocony49 Systemy dla 49 liczb */ use TraitSystemSkrocony49; /** * @access private * @var int $n Zakres liczb wybranych przez usera przekazywanych w klasie */ private $n; /** * @access private * @var int $k Zakres Liczb wybranych przez usera przekazywanych w klasie */ private $k; /** * @access private * @var int $index49 Zmienna pomocnicza do przekazywania indexu wybranego danego systemu z set() do get() */ private $index; /** * @access private * @var int $index Zmienna pomocnicza do przekazywania indexu wybranego danego systemu z set() do get() */ private $Tab=[]; /** * @access private * @var int[] $temp Zmienna pomocnicza do wymieniania się danymi pomiędzy tablicami */ private $temp=[]; /** *@access public * @var float */ public $cenaKuponu = 2.5; /** * pozwala na określenie wyboru systemu 80 lub 49 * w celu przypisania odpowiedniego indexu * * @var int */ private $wybierzSystem=80; /** * @access public * @param int $n Zakres liczb wypranych przez usera * @param int $k Zakres liczb wypranych przez usera * @param int[] $Tab Zakres liczb wypranych przez usera zapisanych w tablicy * @throws Exception Jeżeli parametry wejścia do konstruktora * nie są mniejsze jak (int 21) wyświetlamy informacje o błędzie * ponieważ max ilość liczb w systemie skróconym wynosi 21 liczb */ public function __construct(int $n, int $k, array $Tab) { try { $tabCount = count($Tab); if($n > 21 || $k > 21 || $tabCount > 21 || $tabCount !== $n || $tabCount == 0 ) { throw new Exception("Podano za duży zakres w parametrze wejściowym"); } $this->n = $n; $this->k = $k; $this->Tab = $Tab; } catch (Exception $e) { echo $e->getMessage(); } } /** * @access public * * @return int Zwraca Count wszystkich możliwych * wystąpień liczb z danego zakresu * Szybkie działanie nie tworzy tablicy dla przechowywania liczb */ public function showCombinationCount() : int { $licznikLiczby = 1; $licznikIleSkreslen = 1; $licznikSuma = 1; if ($this->n > 0) { for ($i = 1; $i < $this->n + 1; $i++) { $licznikLiczby *= $i; } for ($j = 1; $j < $this->k + 1; $j++) { $licznikIleSkreslen *= $j; } for ($x = 1; $x < ($this->n - $this->k) + 1; $x++) { $licznikSuma *= $x; } // Zaokrąglamy bo po wyżej 12 są problemy $SumaMnozenia = $licznikIleSkreslen * $licznikSuma; $SumaDzielenia = $licznikLiczby / $SumaMnozenia; return (int) round($SumaDzielenia); } else { return 0; } } /** * * @throws Exception Jeżeli obiekty są niewłaściwe * @return iterable Zwraca wszystkie możliwe kombinacje z podanego zakresu * Generator iterator memory using ograniczenie zurzycia pamięci * w obliczeniach */ private function Combination() : iterable { try { $tmp = []; if (1 > $this->n - $this->k || 2 > $this->k) { throw new Exception("Cos poszlo nie tak ( ->Combination() )"); } for ($i = 0; $i < $this->k; $i++) { $this->temp[$i] = $i; } $ii = 0; while($this->temp[0] < count($this->Tab) - $this->k) { for ($j=0; $j < $this->k; $j++) { // #### Jestem na szczycie wiec przeskakuje na nastepna liczbe ##### if ($this->temp[$j] >= ($this->n - $this->k) + $j) { $this->temp[$j-1] += 1; $this->temp[$j] = $this->temp[$j-1]; } } if($ii != 0) { $this->temp[$this->k-1] += 1; } for ($j=0; $j<$this->k; $j++) { //yield $tmp[$ii][$j] = $this->Tab[$this->temp[$j]]; yield $this->Tab[$this->temp[$j]]; } $ii++; } } catch (Exception $e) { echo $e->getMessage(); } } /** * @access public * @param int $countNamber Ilość losowanych liczb np. (6) * @param int $max Jaki zakres losowanych np. (49) * @return int[] zwraca z danego zakresu ($countNamber) wylosowanych liczb */ public function showRandomNumberList($countNamber, $max) : array { return $this->randomNumberList($countNamber, $max); } /** * * @access public * @return object Zwraca obiekt z iteratora $result = $this->Combination(); */ public function ShowToArrayCombination() : object { $result = $this->Combination(); if(is_object($result)) { return $result; }else{ echo "Brak obiektu ( ->Combination() ) w" . " ( ->ShowToArrayCombination() )"; return null; } } /** * Dziediczona metoda abstrakcyjna do dodania do poszczególnych metod * z 3 różnymi systemami gry * @param float $cenaKuponu * @param int $wylosowane * @return float */ protected function sumIloscKuponowSystemAll(float $cenaKuponu, int $wylosowane): float{ return ($wylosowane * $cenaKuponu); } /** * * @return int Cena do zapłaty za wszystkie kupony system pełny */ public function getShowSumIloscKuponowSystemPelnyAll(): float{ return $this->sumIloscKuponowSystemAll($this->cenaKuponu, $this->showCombinationCount()); } /** * * @return int Cena do zapłaty za wszystkie kupony w systemach */ public function getSumIloscKuponowSystemAll(): float{ //czwarty index zwraca ilość kuponów $tab = $this->getViewSystemAddIndex(); return $this->sumIloscKuponowSystemAll($this->cenaKuponu, $tab[3]); } /** * Przypisuje obiekt z indeksem danego Systemu można wyprać z dwóch * albo 80 lub 49 w drugim parametrze * @param int $indexSystem * @param int $system */ public function setViewSystemAddIndex($indexSystem=0, $system=80) { $this->index = $indexSystem; $this->wybierzSystem = $system; } /** * * @return array Zwraca trzy parametry ($n) + ($k) + (nazwa wybranego systemu) * $this->ArrayAddSystem80($this->index49) */ public function getViewSystemAddIndex() : array { if(!empty($this->wybierzSystem) && $this->wybierzSystem == 80){ $ArrayAddSystem = "ArrayAddSystem80"; }else{ $ArrayAddSystem = "ArrayAddSystem49"; } $ex = explode("-", $this->$ArrayAddSystem($this->index)); if(empty($ex)) { echo "Tablica jest pusta ( ->ArrayAddSystem80(->index80) )"; return null; } return $ex; } /** * * @throws Exception Jeżeli tablica jest pusta * @return iterable Zwraca Generator iterator z podanego zakresu * $ex = $this->getViewSystem80AddIndex(); */ public function viewSystemArrayList() : iterable { try { $ex = $this->getViewSystemAddIndex(); $nn = $ex[0]; $kk = $ex[1]; // Jaki system $systemAdd = $ex[2]; $TabArrayTemp = []; if(!empty($systemAdd) && count($this->Tab) == $nn && $kk == $this->k) { sort($this->Tab); for ($i = 0; $i < count($this->$systemAdd()); $i++) { for ($j = 0; $j < $kk; $j++) { yield $TabArrayTemp[$i][$j] = $this->Tab[$this->$systemAdd()[$i][$j]-1]; } } }else{ throw new Exception("Tablica jest pusta" . " ( ->getViewSystem80AddIndex() ) w viewSystem80ArrayList()"); } } catch (Exception $e) { echo $e->getMessage(); } } } |
ClassAbstractRandomNumberList.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 | <?php namespace Kombinacje; /** * * Symulator Gier Liczbowych * @abstract ClassAbstractRandomNumberList * @author Adam Berger * @license MIT Public License * @version 1.0.0 * @copyright 2015-2021 Adam Berger */ /** * Klasa abstrakcyjna ClassAbstractRandomNumberList jest odpowiedzialna * za losowanie liczb z zadanego zakresu */ abstract class ClassAbstractRandomNumberList { /** * @access protected * @throws Exception Jeżeli obiekty są niewłaściwe * @param int $countNamber Ilość losowanych liczb np. (6) * @param int $max Jaki zakres losowanych np. (49) * @return int[] zwraca z danego zakresu ($countNamber) wylosowanych liczb */ public function randomNumberList(int $countNamber, int $max):array { try { $temp = [0]; $i=0; if($max < $countNamber){ throw new Exception("Parametr (max) musi być większy od (countNamber)" . " w ->randomNumberList(int countNamber, int max)"); } do { $rand = random_int($countNamber, $max); if(!in_array($rand, $temp)){ $temp[$i] = $rand; ++$i; } }while(count($temp) <= ($countNamber-1)); sort($temp); return $temp; } catch (Exception $e) { echo $e->getMessage(); } } /** * abstract protected Zlicza cene wszystkich kuponów * float return wywołanie w danej klasie. * Suma do zapłacenia za wszystkie kupony z wybranych liczb i systemu * @abstract * @param int $cenaKuponu * @param int $wylosowane */ abstract protected function sumIloscKuponowSystemAll(float $cenaKuponu, int $wylosowane): float; } |
TraitSystemSkrocony49.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 | <?php namespace Kombinacje; /** * * Symulator Gier Liczbowych * @trait TraitSystemSkrocony49 * @author Adam Berger * @license MIT Public License * @version 1.0.0 * @copyright 2015-2021 Adam Berger */ /** * Trait TraitSystemSkrocony49 odpowiada za Systemy skrócone na 49 * liczb i ich wybór * przez podanie indexu przez usera */ trait TraitSystemSkrocony49 { #region ListIleLiczbWSystemie /** * * @param int $index User podaje index wyboru danego systemu * @throws Exception Jeżeli index jest z poza zakresu * @return string Zwracamy $n liczb + $k liczb + nazwe wybranego systemu * + ile kuponów */ protected function ArrayAddSystem49($index) : string { try { $tab = $this->ArrayListSystem49(); if((count( $tab ) - 1) < $index || 0 > $index ){ throw new Exception("index poza zakresem w( ->ArrayAddSystem49(index) )"); } $array = [ 0 => "Skrocony496_14_15", 1 => "Skrocony496_8_5", 2 => "Skrocony496_9_10", 3 => "Skrocony496_10_11", 4 => "Skrocony496_9_14", 5 => "Skrocony496_18_25", 6 => "Skrocony496_14_18" ]; $n = $tab[$array[$index]]["liczba_N"][$index]; $k = $tab[$array[$index]]["liczba_K"][$index]; $ileK = $tab[$array[$index]]["ile_KUP"][$index]; return $n."-".$k."-".$array[$index]."-".$ileK; } catch (Exception $e) { echo $e->getMessage(); } } #region ListIleLiczbWSystemie /** * * @return int[] zwraca wybrane parametry systemu w tablicy */ private function ArrayListSystem49() : array { //#### 0 ##### $array["Skrocony496_14_15"]["liczba_K"][0] = 6; $array["Skrocony496_14_15"]["liczba_N"][0] = 14; $array["Skrocony496_14_15"]["ile_KUP"][0] = 15; //#### 1 ##### $array["Skrocony496_8_5"]["liczba_K"][1] = 6; $array["Skrocony496_8_5"]["liczba_N"][1] = 8; $array["Skrocony496_8_5"]["ile_KUP"][1] = 5; //#### 2 ##### $array["Skrocony496_9_10"]["liczba_K"][2] = 6; $array["Skrocony496_9_10"]["liczba_N"][2] = 9; $array["Skrocony496_9_10"]["ile_KUP"][2] = 10; //#### 3 ##### $array["Skrocony496_10_11"]["liczba_K"][3] = 6; $array["Skrocony496_10_11"]["liczba_N"][3] = 10; $array["Skrocony496_10_11"]["ile_KUP"][3] = 11; //#### 4 ##### $array["Skrocony496_9_14"]["liczba_K"][4] = 6; $array["Skrocony496_9_14"]["liczba_N"][4] = 9; $array["Skrocony496_9_14"]["ile_KUP"][4] = 14; //#### 5 ##### $array["Skrocony496_18_25"]["liczba_K"][5] = 6; $array["Skrocony496_18_25"]["liczba_N"][5] = 18; $array["Skrocony496_18_25"]["ile_KUP"][5] = 25; //#### 6 ##### $array["Skrocony496_14_18"]["liczba_K"][6] = 6; $array["Skrocony496_14_18"]["liczba_N"][6] = 14; $array["Skrocony496_14_18"]["ile_KUP"][6] = 18; return $array; } #endregion #region 6 liczb z 14 liczb na 15 zakladów // 6 liczb z 14 liczb na 15 zakladów /** * * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony496_14_15() : array { $array[0] = [1,2,3,5,6,9]; $array[1] = [1,2,3,7,8,11]; $array[2] = [1,2,4,6,8,10]; $array[3] = [1,2,4,7,9,12]; $array[4] = [1,2,5,10,13,14]; $array[5] = [1,3,4,10,12,13]; $array[6] = [1,3,4,6,7,14]; $array[7] = [1,3,5,8,12,14]; $array[8] = [1,4,5,9,11,13]; $array[9] = [1,5,7,10,11,12]; $array[10] = [1,6,7,8,9,13]; $array[11] = [1,6,11,12,13,14]; $array[12] = [1,8,9,10,11,14]; $array[13] = [2,3,4,5,6,7]; $array[14] = [8,9,10,11,12,13]; return $array; } #endregion #region 6 liczb z 8 liczb na 5 zakladów // 6 liczb z 8 Liczbyna 5 kuponach /** * * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony496_8_5() : array { $array[0] = [1,2,3,4,5,6]; $array[1] = [3,4,5,6,7,8]; $array[2] = [1,2,3,4,7,8]; $array[3] = [1,2,5,6,7,8]; $array[4] = [2,4,5,6,7,8]; return $array; } #endregion // 6 liczb z 9 liczb na 10 kuponach /** * * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony496_9_10() : array { $array[0] = [1,2,3,4,5,6]; $array[1] = [2,3,5,6,8,9]; $array[2] = [1,2,3,4,5,9]; $array[3] = [1,2,3,4,6,8]; $array[4] = [1,3,4,6,7,9]; $array[5] = [1,2,3,5,6,7]; $array[6] = [1,2,3,7,8,9]; $array[7] = [4,5,6,7,8,9]; $array[8] = [2,3,4,5,8,9]; return $array; } // 6 liczb z 10 liczb na 11 kuponach /** * * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony496_10_11() : array { $array[0] = [1,2,3,4,5,6]; $array[1] = [1,3,4,6,8,9]; $array[2] = [2,3,4,8,9,10]; $array[3] = [1,2,3,5,7,10]; $array[4] = [1,3,4,6,7,10]; $array[5] = [2,5,6,8,9,10]; $array[6] = [1,5,6,7,8,9]; $array[7] = [1,2,7,8,9,10]; $array[8] = [3,4,5,7,8,9]; $array[9] = [2,4,5,6,7,10]; $array[10] = [4,5,6,7,8,9]; return $array; } // 6 liczb z 9 liczb na 14 kuponach /** * * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony496_9_14() : array { $array[0] = [1,2,3,4,5,6]; $array[1] = [1,2,4,6,7,9]; $array[2] = [1,3,5,6,7,8]; $array[3] = [1,2,3,5,6,7]; $array[4] = [2,3,4,5,8,9]; $array[5] = [2,3,4,6,7,8]; $array[6] = [1,2,5,6,8,9]; $array[7] = [1,3,4,5,7,9]; $array[8] = [1,3,4,6,8,9]; $array[9] = [1,2,6,7,8,9]; $array[10] = [2,5,6,7,8,9]; $array[11] = [1,2,3,7,8,9]; $array[12] = [4,5,6,7,8,9]; $array[13] = [2,3,5,6,7,9]; return $array; } // 6 liczb z 18 liczb na 25 kuponach /** * * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony496_18_25() : array { $array[0] = [5,8,10,14,16,18]; $array[1] = [1,2,3,9,10,17]; $array[2] = [1,4,8,11,13,18]; $array[3] = [1,6,8,11,12,17]; $array[4] = [1,7,9,11,14,16]; $array[5] = [3,4,11,12,14,17]; $array[6] = [3,6,10,14,15,18]; $array[7] = [3,8,13,15,16,17]; $array[8] = [1,2,4,6,13,14]; $array[9] = [1,2,12,15,16,18]; $array[10] = [1,3,5,7,13,18]; $array[11] = [1,4,5,8,10,15]; $array[12] = [4,5,10,11,13,17]; $array[13] = [4,9,10,12,15,18]; $array[14] = [2,3,5,6,12,18]; $array[15] = [2,3,7,11,13,15]; $array[16] = [2,4,7,16,17,18]; $array[17] = [2,5,8,9,12,13]; $array[18] = [2,7,8,10,11,14]; $array[19] = [3,4,6,7,8,9]; $array[20] = [5,6,9,11,15,16]; $array[21] = [5,7,12,14,15,17]; $array[22] = [7,8,9,10,11,12]; $array[23] = [1,2,3,4,5,6]; $array[24] = [13,14,15,16,17,18]; return $array; } // 6 liczb z 14 liczb na 18 kuponach /** * * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony496_14_18() : array { $array[0] = [1,2,3,5,6,9]; $array[1] = [1,2,3,7,8,11]; $array[2] = [1,2,4,6,8,10]; $array[3] = [1,2,4,7,9,12]; $array[4] = [2,3,4,5,6,7]; $array[5] = [9,10,11,12,13,14]; $array[6] = [1,2,5,10,13,14]; $array[7] = [1,3,4,10,12,13]; $array[8] = [1,3,4,10,12,13]; $array[9] = [1,6,7,8,9,13]; $array[10] = [1,6,7,8,9,13]; $array[11] = [1,6,11,12,13,14]; $array[12] = [1,8,9,10,11,14]; $array[13] = [1,3,4,6,7,14]; $array[14] = [1,3,5,8,12,14]; $array[15] = [1,4,5,9,11,13]; $array[16] = [1,5,7,10,11,12]; $array[17] = [1,2,3,4,5,6]; return $array; } } |
TraitSystemSkrocony80.php
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151 152 153 154 155 156 157 158 159 160 161 162 163 164 165 166 167 168 169 170 171 172 173 174 175 176 177 178 179 180 181 182 183 184 185 186 187 188 189 190 191 192 193 194 195 196 197 198 199 200 201 202 203 204 205 206 207 208 209 210 211 212 213 214 215 216 217 218 219 220 221 222 223 224 225 226 227 228 229 230 231 232 233 234 235 236 237 238 239 240 241 242 243 244 245 246 247 248 249 250 251 252 253 254 255 256 257 258 259 260 261 262 263 264 265 266 267 268 269 270 271 272 273 274 275 276 277 278 279 280 281 282 283 284 285 286 287 288 289 290 291 292 293 294 295 296 297 298 299 300 301 302 303 304 305 306 307 308 309 310 311 312 313 314 315 316 317 318 319 320 321 322 323 324 325 326 327 328 329 330 331 332 333 334 335 336 337 338 339 340 341 342 343 344 345 346 347 348 349 350 351 352 353 354 355 356 357 358 359 360 361 362 363 364 365 366 367 368 369 370 371 372 373 374 375 376 377 378 379 380 381 382 383 384 385 386 387 388 389 390 391 392 393 394 395 396 397 398 399 400 401 402 403 404 405 406 407 408 409 410 411 412 413 414 415 416 417 418 419 420 421 422 423 424 425 426 427 428 429 430 431 432 433 434 435 436 437 438 439 440 441 442 443 444 445 446 447 448 449 450 451 452 453 454 455 456 457 458 459 460 461 462 463 464 465 466 467 468 469 470 471 472 473 474 475 476 477 478 479 480 481 482 483 484 485 486 487 488 489 490 491 492 493 494 495 496 497 498 499 500 501 502 503 504 505 506 507 508 509 510 511 512 513 514 515 516 517 518 519 520 521 522 523 524 525 526 527 528 529 530 531 532 533 534 535 536 537 538 539 540 541 542 543 544 545 546 547 548 549 550 551 552 553 554 555 556 557 558 559 560 561 562 563 564 565 566 567 568 569 570 571 572 573 574 575 576 577 578 579 580 581 582 583 584 585 586 587 588 589 590 591 592 593 | <?php namespace Kombinacje; /** * * Symulator Gier Liczbowych * * @trait TraitSystemSkrocony80 * @author Adam Berger * @license MIT Public License * @version 1.0.0 * @copyright 2015-2021 Adam Berger */ /** * Trait TraitSystemSkrocony80 odpowiada za Systemy skrócone * na 80 liczb i ich wybór * przez podanie indexu przez usera */ trait TraitSystemSkrocony80 { #region ListIleLiczbWSystemie /** * * @param int $index User podaje index wyboru danego systemu * @throws Exception Jeżeli index jest z poza zakresu * @return string Zwracamy $n liczb + $k liczb + nazwe wybranego systemu * i ilość kuponów */ protected function ArrayAddSystem80($index) : string { try { $tab = $this->ArrayListSystem80(); if((count( $tab ) - 1) < $index || 0 > $index ) { throw new Exception("index poza zakresem w" . " ( ->ArrayAddSystem80(index) )"); } $array = [ 0 => "Skrocony10_19_20", 1 => "Skrocony10_16_6", 2 => "Skrocony9_19_20", 3 => "Skrocony9_15_6", 4 => "Skrocony8_12_25", 5 => "Skrocony7_18_10", 6 => "Skrocony6_14_15", 7 => "Skrocony5_12_43", 8 => "Skrocony5_16_80", 9 => "Skrocony5_21_25", 10 => "Skrocony4_12_30", 11 => "Skrocony3_7_8", 12 => "Skrocony3_12_21", 13 => "Skrocony2_8_13" ]; $n = $tab[$array[$index]]["liczba_N"][$index]; $k = $tab[$array[$index]]["liczba_K"][$index]; $ileK = $tab[$array[$index]]["ile_KUP"][$index]; return $n."-".$k."-".$array[$index]."-".$ileK; } catch (Exception $e) { echo $e->getMessage(); } } #region ListIleLiczbWSystemie /** * * @return int[] zwraca wybrane parametry systemu w tablicy * takie jak liczba k, liczba n i ilość kuponów */ private function ArrayListSystem80() : array { // #### 0 ##### $array["Skrocony10_19_20"]["liczba_K"][0] = 10 ; $array["Skrocony10_19_20"]["liczba_N"][0] = 19 ; $array["Skrocony10_19_20"]["ile_KUP"][0] = 20 ; // #### 1 ##### $array["Skrocony10_16_6"]["liczba_K"][1] = 10 ; $array["Skrocony10_16_6"]["liczba_N"][1] = 16 ; $array["Skrocony10_16_6"]["ile_KUP"][1] = 6 ; // #### 2 ##### $array["Skrocony9_19_20"]["liczba_K"][2] = 9 ; $array["Skrocony9_19_20"]["liczba_N"][2] = 19 ; $array["Skrocony9_19_20"]["ile_KUP"][2] = 20 ; // #### 3 ##### $array["Skrocony9_15_6"]["liczba_K"][3] = 9 ; $array["Skrocony9_15_6"]["liczba_N"][3] = 15 ; $array["Skrocony9_15_6"]["ile_KUP"][3] = 6 ; // #### 4 ##### $array["Skrocony8_12_25"]["liczba_K"][4] = 8 ; $array["Skrocony8_12_25"]["liczba_N"][4] = 12 ; $array["Skrocony8_12_25"]["ile_KUP"][4] = 25; // #### 5 ##### $array["Skrocony7_18_10"]["liczba_K"][5] = 7 ; $array["Skrocony7_18_10"]["liczba_N"][5] = 18; $array["Skrocony7_18_10"]["ile_KUP"][5] = 10; // #### 6 ##### $array["Skrocony6_14_15"]["liczba_K"][6] = 6; $array["Skrocony6_14_15"]["liczba_N"][6] = 14; $array["Skrocony6_14_15"]["ile_KUP"][6] = 15; // #### 7 ##### $array["Skrocony5_12_43"]["liczba_K"][7] = 5; $array["Skrocony5_12_43"]["liczba_N"][7] = 12; $array["Skrocony5_12_43"]["ile_KUP"][7] = 43; // #### 8 ##### $array["Skrocony5_16_80"]["liczba_K"][8] = 5; $array["Skrocony5_16_80"]["liczba_N"][8] = 16; $array["Skrocony5_16_80"]["ile_KUP"][8] = 80; // #### 9 ##### $array["Skrocony5_21_25"]["liczba_K"][9] = 5; $array["Skrocony5_21_25"]["liczba_N"][9] = 21; $array["Skrocony5_21_25"]["ile_KUP"][9] = 25; // #### 10 ##### $array["Skrocony4_12_30"]["liczba_K"][10] = 4; $array["Skrocony4_12_30"]["liczba_N"][10] = 12; $array["Skrocony4_12_30"]["ile_KUP"][10] = 30; // #### 11 ##### $array["Skrocony3_7_8"]["liczba_K"][11] = 3; $array["Skrocony3_7_8"]["liczba_N"][11] = 7; $array["Skrocony3_7_8"]["ile_KUP"][11] = 8; // #### 12 ##### $array["Skrocony3_12_21"]["liczba_K"][12] = 3; $array["Skrocony3_12_21"]["liczba_N"][12] = 12; $array["Skrocony3_12_21"]["ile_KUP"][12] = 21; // #### 13 ##### $array["Skrocony2_8_13"]["liczba_K"][13] = 2; $array["Skrocony2_8_13"]["liczba_N"][13] = 8; $array["Skrocony2_8_13"]["ile_KUP"][13] = 13; return $array; } #endregion #region 10 liczb z 19 liczb na 20 kuponach /** * 10 liczb z 19 liczb na 20 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony10_19_20() : array { $array[0] = [10,11,12,13,14,15,16,17,18,19]; $array[1] = [5,6,7,8,9,15,16,17,18,19]; $array[2] = [4,6,7,8,9,11,12,13,14,19]; $array[3] = [3,4,5,8,9,10,13,14,17,18]; $array[4] = [2,4,5,7,9,10,11,14,15,16]; $array[5] = [2,3,6,7,8,10,12,14,15,18]; $array[6] = [2,3,5,6,7,10,11,13,17,19]; $array[7] = [2,3,4,5,8,11,12,16,18,19]; $array[8] = [2,3,4,6,9,12,13,15,16,17]; $array[9] = [1,4,5,6,8,10,11,12,15,17]; $array[10] = [1,3,5,7,9,11,12,13,15,18]; $array[11] = [1,3,5,6,9,10,12,14,16,19]; $array[12] = [1,3,4,6,7,11,14,16,17,18]; $array[13] = [1,3,4,7,8,10,13,15,16,19]; $array[14] = [1,2,5,7,8,12,13,14,16,17]; $array[15] = [1,2,6,8,9,10,11,13,16,18]; $array[16] = [1,2,4,7,9,10,12,17,18,19]; $array[17] = [1,2,4,5,6,13,14,15,18,19]; $array[18] = [1,2,3,8,9,11,14,15,17,19]; $array[19] = [1,2,3,4,5,6,7,8,9,10]; return $array; } #endregion #region 10 liczb z 16 liczb na 6 kuponach /** * 10 liczb z 16 liczb na 6 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony10_16_6() : array { $array[0] = [1,2,3,9,10,11,12,13,14,16]; $array[1] = [1,3,5,6,7,8,12,14,15,16]; $array[2] = [1,4,5,6,9,10,11,13,15,16]; $array[3] = [2,3,4,6,7,8,10,11,15,16]; $array[4] = [2,4,5,7,8,9,12,13,14,15]; $array[5] = [3,4,5,6,8,9,10,11,12,14]; return $array; } #endregion #region 9 liczb z 19 liczb na 20 kuponach /** * 9 liczb z 19 liczb na 20 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony9_19_20() : array { $array[0] = [1,2,3,4,5,6,7,8,9]; $array[1] = [1,2,3,4,10,11,12,13,14]; $array[2] = [1,2,3,5,10,15,16,17,18]; $array[3] = [1,2,6,7,11,12,15,16,19]; $array[4] = [1,3,6,8,12,13,17,18,19]; $array[5] = [1,4,5,9,11,13,16,17,19]; $array[6] = [1,4,8,9,12,14,15,16,18]; $array[7] = [1,6,7,9,10,13,14,15,17]; $array[8] = [1,5,7,8,10,11,14,18,19]; $array[9] = [2,3,7,9,13,14,16,18,19]; $array[10] = [2,4,6,8,10,14,16,17,19]; $array[11] = [2,4,7,8,11,13,15,17,18]; $array[12] = [2,5,8,9,10,12,13,15,19]; $array[13] = [2,5,6,9,11,12,14,17,18]; $array[14] = [3,4,6,9,10,11,15,18,19]; $array[15] = [3,4,5,7,12,14,15,17,19]; $array[16] = [3,5,6,8,11,13,14,15,16]; $array[17] = [3,7,8,9,10,11,12,16,17]; $array[18] = [4,5,6,7,10,12,13,16,18]; $array[19] = [10,11,12,13,14,15,16,17,18]; return $array; } #endregion #region 9 liczb z 15 liczb na 6 kuponach /** * 9 liczb z 15 liczb na 6 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony9_15_6() : array { $array[0] = [1,2,3,9,10,11,12,13,14]; $array[1] = [1,3,5,6,7,8,12,14,15]; $array[2] = [1,4,5,6,9,10,11,13,15]; $array[3] = [2,3,4,6,7,8,10,11,15]; $array[4] = [2,4,5,7,8,9,12,13,14]; $array[5] = [3,4,5,6,8,9,10,11,14]; return $array; } #endregion #region 8 liczb z 12 liczb na 23 kuponach /** * 8 liczb z 12 liczb na 25 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony8_12_25() : array{ $array[0] = [1,2,4,5,7,8,10,11]; $array[1] = [1,3,4,6,7,8,10,11]; $array[2] = [2,3,5,6,7,8,10,11]; $array[3] = [1,3,4,5,7,9,10,11]; $array[4] = [1,2,4,6,7,9,10,11]; $array[5] = [2,3,4,5,8,9,10,11]; $array[6] = [1,2,5,6,8,9,10,11]; $array[7] = [1,3,4,5,7,8,10,12]; $array[8] = [1,2,4,6,7,8,10,12]; $array[9] = [1,2,4,5,7,9,10,12]; $array[10] = [1,3,4,6,7,9,10,12]; $array[11] = [2,3,5,6,7,9,10,12]; $array[12] = [2,3,4,6,8,9,10,12]; $array[13] = [1,3,5,6,8,9,10,12]; $array[14] = [2,3,4,5,7,8,11,12]; $array[15] = [1,2,5,6,7,8,11,12]; $array[16] = [2,3,4,6,7,9,11,12]; $array[17] = [3,4,5,6,8,9,10,12]; $array[18] = [1,3,5,6,7,9,11,12]; $array[19] = [1,2,4,5,8,9,11,12]; $array[20] = [1,3,4,6,8,9,11,12]; $array[21] = [2,3,5,6,7,8,10,12]; $array[22] = [2,4,5,7,8,9,11,12]; $array[23] = [1,2,3,4,5,6,7,8]; $array[24] = [5,6,7,8,9,10,11,12]; return $array; } #endregion #region 7 liczb z 18 liczb na 10 kuponach /** * 7 liczb z 18 liczb na 10 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony7_18_10() : array { $array[0] = [1,2,11,13,14,17,18]; $array[1] = [1,3,6,9,12,15,16]; $array[2] = [1,4,5,6,9,10,11]; $array[3] = [1,4,5,7,8,10,14]; $array[4] = [2,4,6,9,10,17,18]; $array[5] = [2,4,7,10,15,17,18]; $array[6] = [3,6,9,12,14,15,16]; $array[7] = [5,6,7,8,9,11,13]; $array[8] = [1,2,3,4,5,6,7]; $array[9] = [8,9,10,11,12,13,14]; return $array; } #endregion #region 6 liczb z 14 liczb na 15 zakladów /** * 6 liczb z 14 liczb na 15 zakladów * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony6_14_15() : array { $array[0] = [1,2,3,5,6,9]; $array[1] = [1,2,3,7,8,11]; $array[2] = [1,2,4,6,8,10]; $array[3] = [1,2,4,7,9,12]; $array[4] = [1,2,5,10,13,14]; $array[5] = [1,3,4,10,12,13]; $array[6] = [1,3,4,6,7,14]; $array[7] = [1,3,5,8,12,14]; $array[8] = [1,4,5,9,11,13]; $array[9] = [1,5,7,10,11,12]; $array[10] = [1,6,7,8,9,13]; $array[11] = [1,6,11,12,13,14]; $array[12] = [1,8,9,10,11,14]; $array[13] = [2,3,4,5,6,7]; $array[14] = [8,9,10,11,12,13]; return $array; } #endregion # #region 5 liczb z 12 liczb na 43 kuponach /** * 5 liczb z 12 liczb na 43 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony5_12_43() : array { $array[0] = [1,2,3,4,5]; $array[1] = [1,2,4,5,6]; $array[2] = [1,2,4,7,9]; $array[3] = [1,2,6,9,12]; $array[4] = [1,2,7,8,11]; $array[5] = [1,3,4,6,10]; $array[6] = [1,2,8,9,10]; $array[7] = [1,3,4,8,12]; $array[8] = [1,3,4,9,11]; $array[9] = [1,3,6,7,8]; $array[10] = [1,3,7,10,12]; $array[11] = [1,4,5,8,12]; $array[12] = [1,4,6,10,11]; $array[13] = [1,4,8,9,11]; $array[14] = [1,5,6,7,9]; $array[15] = [1,5,10,11,12]; $array[16] = [1,6,8,10,12]; $array[17] = [2,3,4,7,9]; $array[18] = [2,3,6,11,12]; $array[19] = [2,3,8,10,11]; $array[20] = [2,3,9,10,12]; $array[21] = [2,4,5,9,11]; $array[22] = [2,4,6,8,9]; $array[23] = [2,4,10,11,12]; $array[24] = [2,5,6,7,10]; $array[25] = [2,5,7,8,12]; $array[26] = [3,4,5,7,11]; $array[27] = [3,5,6,8,11]; $array[28] = [3,5,8,9,10]; $array[29] = [4,5,7,8,10]; $array[30] = [7,8,10,11,12]; $array[31] = [4,5,9,10,12]; $array[32] = [4,6,7,11,12]; $array[33] = [6,7,9,10,11]; $array[34] = [7,8,9,11,12]; $array[35] = [1,2,3,4,12]; $array[36] = [2,3,4,5,6]; $array[37] = [3,4,5,6,7]; $array[38] = [4,5,6,7,8]; $array[39] = [5,6,7,8,9]; $array[40] = [6,7,8,9,10]; $array[41] = [7,8,9,10,11]; $array[42] = [8,9,10,11,12]; return $array; } #endregion #region 5 liczb z 16 liczb na 80 kuponach /** * 5 liczb z 16 liczb na 80 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony5_16_80() : array { $array[0] = [1,2,3,4,5]; $array[1] = [2,3,4,5,6]; $array[2] = [3,4,5,6,7]; $array[3] = [4,5,6,7,8]; $array[4] = [5,6,7,8,9]; $array[5] = [6,7,8,9,10]; $array[6] = [7,8,9,10,11]; $array[7] = [8,9,10,11,12]; $array[8] = [9,10,11,12,13]; $array[9] = [10,11,12,13,14]; $array[10] = [11,12,13,14,15]; $array[11] = [12,13,14,15,16]; $array[12] = [1,2,3,15,16]; $array[13] = [1,2,14,15,16]; $array[14] = [1,2,3,4,14]; $array[15] = [1,13,14,15,16]; $array[16] = [11,12,13,15,16]; $array[17] = [1,2,3,4,16]; $array[18] = [5,6,7,8,10]; $array[19] = [9,10,11,12,16]; $array[20] = [1,2,9,15,16]; $array[21] = [1,2,8,15,16]; $array[22] = [1,2,7,15,16]; $array[23] = [1,2,6,15,16]; $array[24] = [1,2,5,15,16]; $array[25] = [1,2,4,15,16]; $array[26] = [3,5,9,10,12]; $array[27] = [3,6,1,13,14]; $array[28] = [3,4,5,13,14]; $array[29] = [3,4,6,13,14]; $array[30] = [3,4,7,13,14]; $array[31] = [3,4,8,13,14]; $array[32] = [3,4,9,13,14]; $array[33] = [3,4,10,13,14]; $array[34] = [3,4,11,13,14]; $array[35] = [3,4,12,13,14]; $array[36] = [1,3,4,13,14]; $array[37] = [2,3,4,13,14]; $array[38] = [3,4,13,14,15]; $array[39] = [3,4,13,14,16]; $array[40] = [1,5,6,11,12]; $array[41] = [5,6,10,11,12]; $array[42] = [5,6,9,11,12]; $array[43] = [5,6,8,11,12]; $array[44] = [5,6,7,11,12]; $array[45] = [2,5,6,11,12]; $array[46] = [6,7,8,11,12]; $array[46] = [7,8,9,11,12]; $array[48] = [7,8,10,11,12]; $array[49] = [3,4,5,6,8]; $array[50] = [4,5,6,7,9]; $array[51] = [5,6,7,8,10]; $array[52] = [6,7,8,9,11]; $array[53] = [7,8,9,10,12]; $array[54] = [8,9,10,11,13]; $array[55] = [9,10,11,12,14]; $array[56] = [10,11,12,13,15]; $array[57] = [11,12,13,14,16]; $array[58] = [1,3,5,7,9]; $array[59] = [2,4,6,8,10]; $array[60] = [3,5,7,9,11]; $array[61] = [4,6,8,10,12]; $array[62] = [5,7,9,11,13]; $array[63] = [7,9,11,13,15]; $array[64] = [6,8,10,12,14]; $array[65] = [8,10,12,14,16]; $array[66] = [2,3,4,14,15]; $array[67] = [3,4,5,13,14]; $array[68] = [4,5,6,12,13]; $array[69] = [6,7,8,11,12]; $array[70] = [5,6,14,15,16]; $array[71] = [2,3,13,14,15]; $array[72] = [3,4,12,13,14]; $array[73] = [4,5,11,12,13]; $array[74] = [6,7,10,11,12]; $array[75] = [6,7,9,10,11]; $array[76] = [5,6,8,9,10]; $array[77] = [4,5,7,8,9]; $array[78] = [3,4,6,7,8]; $array[79] = [2,3,5,6,7]; return $array; } #endregion #region 5 liczb z 21 liczb na 25 kuponach /** * 5 liczb z 21 liczb na 25 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony5_21_25() : array { $array[0] = [1,2,5,15,17]; $array[1] = [2,3,6,16,18]; $array[2] = [3,4,7,17,19]; $array[3] = [4,5,8,18,20]; $array[4] = [5,6,9,19,21]; $array[5] = [1,6,7,10,20]; $array[6] = [1,4,14,16,21]; $array[7] = [3,13,15,20,21]; $array[8] = [2,12,14,19,20]; $array[9] = [1,11,13,18,19]; $array[10] = [10,12,17,18,21]; $array[11] = [2,4,9,10,13]; $array[12] = [3,5,10,11,14]; $array[13] = [4,6,11,12,15]; $array[14] = [5,7,12,13,16]; $array[15] = [6,8,13,14,17]; $array[16] = [7,9,14,15,18]; $array[17] = [8,10,15,16,19]; $array[18] = [9,11,16,17,20]; $array[19] = [2,7,8,11,21]; $array[20] = [1,3,8,9,12]; $array[21] = [1,2,3,4,5]; $array[22] = [6,7,8,9,10]; $array[23] = [11,12,13,14,15]; $array[24] = [16,17,18,19,20]; return $array; } #endregion #region 4 liczb z 12 liczb na 30 kuponach /** * 4 liczb z 12 liczb na 30 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony4_12_30() : array { $array[0] = [1,2,4,11]; $array[1] = [1,2,6,8]; $array[2] = [1,3,4,8]; $array[3] = [1,3,6,11]; $array[4] = [1,5,7,12]; $array[5] = [2,3,7,10]; $array[6] = [1,7,9,10]; $array[7] = [1,9,10,12]; $array[8] = [2,3,6,9]; $array[9] = [4,5,6,10]; $array[10] = [2,4,8,9]; $array[11] = [2,5,7,11]; $array[12] = [2,7,9,12]; $array[13] = [2,10,11,12]; $array[14] = [3,4,9,11]; $array[15] = [3,5,7,8]; $array[16] = [4,6,7,12]; $array[17] = [5,8,11,12]; $array[18] = [7,8,10,11]; $array[19] = [6,8,9,11]; $array[20] = [1,2,4,9]; $array[21] = [2,3,5,11]; $array[22] = [3,5,7,9]; $array[23] = [4,5,6,12]; $array[24] = [3,5,8,10]; $array[25] = [3,7,8,11]; $array[26] = [3,8,10,12]; $array[27] = [4,5,6,9]; $array[28] = [1,2,3,4]; $array[29] = [5,6,7,8]; return $array; } #endregion #region 3 liczb z 7 liczb na 8 kuponach /** * 3 liczb z 7 liczb na 8 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony3_7_8() : array { $array[0] = [1,2,3]; $array[1] = [1,4,5]; $array[2] = [1,6,7]; $array[3] = [2,4,6]; $array[4] = [2,5,7]; $array[5] = [3,4,7]; $array[6] = [3,5,6]; $array[7] = [3,4,5]; return $array; } #endregion #region 3 liczb z 12 liczb na 21 kuponach /** * 3 liczb z 12 liczb na 21 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony3_12_21() : array { $array[0] = [1,6,7]; $array[1] = [1,6,11]; $array[2] = [2,8,9]; $array[3] = [3,4,10]; $array[4] = [3,5,12]; $array[5] = [4,5,12]; $array[6] = [5,10,12]; $array[7] = [7,11,12]; $array[8] = [1,2,3]; $array[9] = [2,3,4]; $array[10] = [3,4,5]; $array[11] = [4,5,6]; $array[12] = [5,6,7]; $array[13] = [6,7,8]; $array[14] = [7,8,9]; $array[15] = [8,9,10]; $array[16] = [9,10,11]; $array[17] = [10,11,12]; $array[18] = [2,3,7]; $array[19] = [4,8,9]; $array[20] = [5,8,10]; return $array; } #endregion #region 2 liczby z 8 na 13 kuponach /** * 2 liczby z 8 na 13 kuponach * @return int[] Zwraca system skrócony o podanych * parametrach liczb i ilości kuponów */ private function Skrocony2_8_13() : array { $array[0] = [1,3]; $array[1] = [1,4]; $array[2] = [2,8]; $array[3] = [3,4]; $array[4] = [7,8]; $array[5] = [3,7]; $array[6] = [4,7]; $array[7] = [5,6]; $array[8] = [1,7]; $array[9] = [2,5]; $array[10] = [2,6]; $array[11] = [5,8]; $array[12] = [6,8]; return $array; } #endregion } |