Autor | Zpráva | ||
---|---|---|---|
midlan Profil |
#1 · Zasláno: 8. 11. 2016, 17:45:20
Ahoj,
tápu jak vytvořit jednu funkci. Mám uspořádanou množinu {A, B, C, D} a já potřebuji funkci, která vrátí všechny možné podmnožiny sousedství (prvky spolu sousedí v původní množině) té původní množiny, tzn. pro tento případ:
{A, B} {B, C} {C, D} {A, B, C} {B, C, D} {A, B, C, D} Převedeno do PHP, vstupem je pole $vstup = array('A', 'D', 'C', 'D'); , obdobně by měl vypadat výstup, tedy pole polí. Případně jednotlivé množiny je možné rovnou spojit do stringu pomlčkami (v programu to tak dále budu používat).
Věděl by někdo jak na to? |
||
nightfish Profil |
<?php $input = ['A', 'B', 'C', 'D']; $subsetsOfNeighbors = []; for ($length = 2; $length <= count($input); $length++) { $subsetsOfNeighbors = array_merge($subsetsOfNeighbors, getNeighborsOfLength($input, $length)); } echo "<pre>"; var_dump($subsetsOfNeighbors); echo "</pre>"; function getNeighborsOfLength($input, $length) { $result = []; for ($i = 0; $i <= count($input) - $length; $i++) { $result[] = implode('-', array_slice($input, $i, $length)); } return $result; } |
||
midlan Profil |
#3 · Zasláno: 8. 11. 2016, 18:57:06
nightfish:
Díky! to je přesně ono. Jen jsem s upravil dle svého vkusu a do jedné fce: <?php function getNeighboursSubsets($input) { $rtn = []; $ic = count($input); for ($i = 2; $i <= $ic; $i++) { $subset = []; for ($j = 0; $j <= $ic - $i; $j++) { $subset[] = implode('-', array_slice($input, $j, $i)); } $rtn = array_merge($rtn, $subset); } return $rtn; } |
||
Časová prodleva: 8 let
|
0