Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    49

    combinazioni "speciali"

    Salve,
    Dovrei creare uno script in cui dovrei creare a partire da una lista di partenza, tutte le possibile combinazioni, tale combinazioni rappresentano dei corsi in vendita, ognuno di loro ha un determinato prezzo, quindi dovrei sommare il prezzo totale di ogni combinazione.
    Esempio:
    Corso 1= prezzo 100.
    Corso 2= prezzo 90.
    Corso 3=prezzo 300.
    ecc..
    Il problema si ha quando ci sono combinazioni di corsi che hanno un prezzo speciale, esempio:
    Corso 1 + Corso 3= prezzo 250.
    Corso 5 + Corso 8= prezzo 900.

    non ho idea su come venirne fuori, il problema non sono tante le combinazioni, più le occorrenze con i prezzi "speciali".

    Avete qualche idea da suggerirmi?

  2. #2
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Immagino che farai un doppio ciclo per fare tutte le combinazioni possibili.

    Prima di stampare a video il prezzo dei due corsi fai un confronto tra i valori correnti e quei dei corsi "speciali". Se trovi qualcosa stampi a video il prezzo "speciale" altrimenti stampi la somma dei due prezzi.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  3. #3
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    49
    In pratica io sono riuscito a creare tutte le possibile combinazioni tramite questo piccolo script

    <?php


    $array = array('11', '12', '13', '14', '15');


    function depth_picker($arr, $temp_string, &$collect) {
    if ($temp_string != "")
    $collect []= $temp_string;


    for ($i=0; $i<sizeof($arr);$i++) {
    $arrcopy = $arr;
    $elem = array_splice($arrcopy, $i, 1);
    if (sizeof($arrcopy) > 0) {
    depth_picker($arrcopy, $temp_string ." " . $elem[0], $collect);
    } else {
    $collect []= $temp_string. " " . $elem[0];
    }
    }
    }


    $collect = array();
    depth_picker($array, "", $collect);
    //print_r($collect);
    for ($i=0; $i<sizeof($collect);$i++) {
    echo $collect[$i]."<br>";
    }


    ?>

    Stampa tutte le possibile combinazioni possibili, mi manca la parte finale dell'assegnazione del prezzo "migliore", controllando singolarmente i valori e se sono presenti le offerte.

  4. #4
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Quanti corsi possono essere messi insieme per un prezzo migliore ?

    Lo script che usi ti torna 11 14 e 14 11 per esempio. A mio avviso sono uguali e devono comparire una volta sola.
    Ultima modifica di badaze; 15-05-2017 a 21:23
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  5. #5
    Utente di HTML.it L'avatar di badaze
    Registrato dal
    Jun 2002
    residenza
    Lyon
    Messaggi
    5,372
    Il codice ti dà le combinazioni uniche.

    Codice PHP:
    <?php
    $array 
    = array('11''12''13''14''15');
    for(
    $i=0;$i<count($array);$i++) {
     for(
    $j=0;$j<count($array);$j++) {
      if (
    $i>$j) {
       print 
    "$i - $j<br/>";
      }
     }
    }

     function 
    depth_picker($arr$temp_string, &$collect) {
     if (
    $temp_string != "")
      
    $collect []= $temp_string;

     for (
    $i=0$i<sizeof($arr);$i++) {
      
    $arrcopy $arr;
      
    $elem array_splice($arrcopy$i1); 
      if (
    sizeof($arrcopy) > 0) {
       
    depth_picker($arrcopy$temp_string ."-" $elem[0], $collect);
      } else {
       
    $collect []= $temp_string"-" $elem[0];
      }
     }
     }

     
    $collect = array();
     
    depth_picker($array""$collect);
     
    $result  = array();
     foreach(
    $collect as $value) {
     
     
    $arr    explode("-",$value);
     
    asort($arr); 
     
    $str    implode(' ',$arr);
     if (!isset(
    $result[$str])) {
      
    $result[$str] = $str;
     } 
     }
     
    asort($result);
     
     foreach(
    $result as $value) {
     echo 
    $value."<br>";
     }
    Pero' visto quello che hai scritto, mi chiedo come farai per stampare a video i prezzi.
    Ridatemi i miei 1000 posts persi !!!!
    Non serve a nulla ottimizzare qualcosa che non funziona.
    Cerco il manuale dell'Olivetti LOGOS 80B - www.emmella.fr

  6. #6
    Utente di HTML.it
    Registrato dal
    Feb 2012
    Messaggi
    49
    Quote Originariamente inviata da badaze Visualizza il messaggio
    Il codice ti dà le combinazioni uniche.

    Codice PHP:
    <?php
    $array 
    = array('11''12''13''14''15');
    for(
    $i=0;$i<count($array);$i++) {
     for(
    $j=0;$j<count($array);$j++) {
      if (
    $i>$j) {
       print 
    "$i - $j<br/>";
      }
     }
    }

     function 
    depth_picker($arr$temp_string, &$collect) {
     if (
    $temp_string != "")
      
    $collect []= $temp_string;

     for (
    $i=0$i<sizeof($arr);$i++) {
      
    $arrcopy $arr;
      
    $elem array_splice($arrcopy$i1); 
      if (
    sizeof($arrcopy) > 0) {
       
    depth_picker($arrcopy$temp_string ."-" $elem[0], $collect);
      } else {
       
    $collect []= $temp_string"-" $elem[0];
      }
     }
     }

     
    $collect = array();
     
    depth_picker($array""$collect);
     
    $result  = array();
     foreach(
    $collect as $value) {
     
     
    $arr    explode("-",$value);
     
    asort($arr); 
     
    $str    implode(' ',$arr);
     if (!isset(
    $result[$str])) {
      
    $result[$str] = $str;
     } 
     }
     
    asort($result);
     
     foreach(
    $result as $value) {
     echo 
    $value."<br>";
     }
    Pero' visto quello che hai scritto, mi chiedo come farai per stampare a video i prezzi.
    Effettivamente così è perfetto, comunque i valori li potrei inserire o in un csv o file di testo o in una db per poi rielaborarli calcolando il prezzo migliore, anche se per me questo è la parte più complessa.
    Supponiamo di avere ogni singola stringa in una variabile e magari i prezzi in un file esterno del tipo:
    11=100
    12=120
    13=90
    14=150
    15=200
    11 13=150
    14 15= 300
    12 14 = 270


    come potrei fare il controllo sulla singola variabile della sequenza di corsi?

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.