Jump to content
php.lv forumi

codez

Reģistrētie lietotāji
  • Posts

    4,276
  • Joined

  • Last visited

Community Answers

  1. codez's post in Change was marked as the answer   
    Nu tad jau uzdevums ir savādāks - dota summa un preču saraksts un vajag sastādīt preču grozu, kurš summā veido doto summu. Iepriekšējajam sarakstam nav nekādas nozīmes.
     
    Algoritms: Uztaisi rekursīvu funkciju, kurai padot par parametru savācamo summu. Tad funkcijā ej un ņem visas preces, saglabā pagaidu masīvā un sauc funkciju rekursīvi ar par attiecīgo preci samazinātu summu.
    Ja funkcijā summa sasniedz 0, tas nozīmē visa nauda iztērēta un var izdrukāt izvēlēto preču sarakstu.
    https://jsfiddle.net/v4atuwww/
     
    Uzlabotais variants - rekursīvajai funkcijai padod līdzi to preces indekus, kuru izmanto un kad ņem nākošās preces, sāc no tā indeka, tādā veidā izvairīsies no līdzīgiem variantiem, jo preces uz priekšu tiks ņemtas tikai augošā secībā:
    https://jsfiddle.net/v4atuwww/1/
     
    Variants ar vairāk precēm un lielāku summu:
    https://jsfiddle.net/v4atuwww/2/
  2. codez's post in Sarakste no DB was marked as the answer   
    Es jebkurā gadījumā taisītu arī sarakšu tabulu.
    Bet šijā gadījumā ļoti vienkārši būtu, ja izveidotu vēl vienu lauku (conversation_id), kurā glabā kombināciju no sūtītāja un saņēmēja tā, ka jaunākais no tiem ir pirmais, piem: a:b, a:c, b:c, x:y, m:n
    Un tad vienkārši taisa GROUP_BY conversation_id.
     
    idejiski: http://sqlfiddle.com/#!2/89e21/2
  3. codez's post in Man ir meklēšanas algoritms, kas nestrādā. was marked as the answer   
    Izmantojam masīvus kā hash tabulu, respektīvi vērtības rakstam indeksa vietā:
     
    Pārbaudam vai vērtība eksistē ar isset, pieliekam papildus ar $arr[$vertiba]=1.
    Gadijumā, ja mēģinās pielikt vairākus vienādus, tie vienkārši pārklāsies kā viens ieraksts.
     
    http://codepad.org/4FEdxqe3
    <?php $arr = array( "pērkons" => 1, "saule" => 1, "zeme" => 1, "zobens" => 1 ); echo isset($arr['saule'])? "ir" : "nav"; echo "\n"; echo isset($arr['koks'])? "ir" : "nav"; echo "\n"; echo isset($arr['zeme'])? "ir" : "nav"; echo "\n"; $arr['koks']=1; echo isset($arr['koks'])? "ir" : "nav"; echo "\n"; foreach($arr as $key=>$val){ echo $key." "; } Saprotams, ka ir arī funkcija in_array, kura nosaka, vai vērtība ir masīvā, bet tā izpildes sarežģītība ir O(N), kamēr isset amortizētais O(1) un nav jāveic papildus pārbaudes dublikātu noskaidrošanai viena masīva ietvaros.
  4. codez's post in Testa punktu skaitīšanas sistēma (Gabaldarbs) was marked as the answer   
    15 minūtes, 30Ls:
    http://jsfiddle.net/sJ9B6/
  5. codez's post in <a> preventDefault nestrādā was marked as the answer   
    Nu skaties, vai tur nav kāds javascript fw, kurš tās darbibas un redirektu izpilda ar javascriptu.
    preventDefault noņem defaulto a darbību, bet, ja tālāk kāds cits events taisa redirectu, tad tas nepalīdzēs:
    http://jsfiddle.net/Q6sfQ/3/
     
    tad tev palīdzēs tikai kombinācija no preventDefault vai return false + stopImmediatePropagation
    http://jsfiddle.net/Q6sfQ/4/
  6. codez's post in Kordinātu pārrēķināšana was marked as the answer   
    Tev vajag aprēķināt sarkanā taisnstūra koordinātes.
    Par pamatu ņemot zilo, aprēķini melnā taisnstūra visu stūru jaunās koordinātes, izmantojot rotācijas formulu.
    Ja gribi universālu algoritmu, kurš nav atkarīgs no pagrieziena lenķa, tad
    no visiem četriem x-iem, mazākais būs sarkanā taisnstūra kreisās malas x, lielākais labās malas x. Līdzīgi arī y.
    Ņemot kreisā augšējā stūra koordinātes sarkanajam un zilajam taisnstūrim, vari izrēķināt starpību, par kādu jāpārbīda izgriežamais taisnstūris.
  7. codez's post in Update Nestable list was marked as the answer   
    var jau ari klienta pusē pārkonvertēt koku masīvā - ideja tā pati - ejam rekursīvi ar dfs cauri kokam un katru zaru metam masīvā:
    http://jsfiddle.net/UujJS/
    var data=[{"id":1,"children":[{"id":4}]},{"id":2}]; var result=[]; function conv(node,parent){ for(var i in node){ result.push({id:node[i].id,pid:parent}); if (node[i]['children']) conv(node[i]['children'],node[i]['id']); } } conv(data, 0); $('#info').append($('<div>').html(JSON.stringify(data))); $('#info').append($('<div>').html(JSON.stringify(result))); P.S. Nedaudz pareizāk strukturēts kods - bez globāliem mainīgajiem:
    http://jsfiddle.net/UujJS/1/
    function conv(data){ var result=[]; function dfs(node, parent) { for(var i in node){ result.push({id:node[i].id,pid:parent}); if (node[i]['children']) dfs(node[i]['children'],node[i]['id']); } } dfs(data, 0); return result; } var data=[{"id":1,"children":[{"id":4}]},{"id":2}]; var result=conv(data); $('#info').append($('<div>').html(JSON.stringify(data))); $('#info').append($('<div>').html(JSON.stringify(result)));
  8. codez's post in Web Programmēšanas kursi onlainā! was marked as the answer   
    cik esmu skatījies udemy parauglekcijas, varu teikt, ka par velti var atrast daudz augstākas kvalitātes lekcijas.
    Pirmā doma, kas nāca prāta, paskatoties viņu lekcijas un cenu par tām bija - scams.
     
    Bet nu ja ļoti gribas tieši šīs lekcijas, tad tās var atrast ari torentos:
    http://thepiratebay.sx/torrent/8101843/Udemy.Victor.Bastos.Become.A.Web.Developer.From.Scratch-PRODEV
  9. codez's post in Sub array menu was marked as the answer   
    1. pārveido datus, tā, lai tie ir pieejami pēc id un lai katrs ieraksts satur visus child elementu id (metode set).
    2. izmanto vienkāršu rekursīvu metodi, kurai padod kuri id ir jāizvada un tā attiecīgi izsauc pati sevi ar visiem apakš id un tā, kamēr vien id ir (metode show). $level tiek izmantots tīri noformējumam.
     
    http://codepad.org/UzR7dTlJ
    <?php $data = array( array("id"=>1,"name"=>"CSS", pid=> 6), array("id"=>3,"name"=>"PHP", pid=> 0), array("id"=>6,"name"=>"HTML", pid=> 0), array("id"=>8,"name"=>"Controllers", pid=> 10), array("id"=>10,"name"=>"Kohana", pid=> 3), array("id"=>12,"name"=>"Models", pid=> 10) ); Class Menu{ public $items=array(); public $root=array(); public function set($data){ foreach($data as $item){ $this->items[$item['id']]=$item; $this->items[$item['id']]['childs']=array(); } foreach($data as $item){ if($item['pid']==0){ array_push($this->root,$item['id']); } else { array_push($this->items[$item['pid']]['childs'],$item['id']); } } } function show($ids,$level=0){ foreach($ids as $id){ echo str_repeat(".",$level*3).$this->items[$id]['name']."\n"; $this->show($this->items[$id]['childs'],$level+1); } } } $menu = new Menu(); $menu->set($data); $menu->show($menu->root);
  10. codez's post in santīmu konvertācija uz latiem was marked as the answer   
    http://codepad.org/tUAqr9Xj
    <?php $examples = array(1,10,100,1000,10000,12,123,2134,23452,2345234,25437648758); foreach($examples as $n){ echo $n." = ".number_format($n/100,2,".","'")."\n"; }
  11. codez's post in link rel="shorcut icon" was marked as the answer   
    http://en.wikipedia.org/wiki/Favicon#How_to_use
×
×
  • Create New...