Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio
POCO F9 Pro arriva sul mercato con l'obiettivo di portare prestazioni da smartphone top di gamma in una fascia di prezzo "più aggressiva", senza rinunciare a un comparto fotografico finalmente all'altezza. Dopo averlo testato sul campo, emerge uno smartphone molto più completo rispetto alla generazione precedente, ma anche con alcuni piccoli compromessi che diventano difficili da ignorare quando il prezzo di listino sfiora i 1.000 euro.
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI
Snapdragon Soung Gen 2 è la piattaforma Qualcomm per i dispositivi audio sempre più integrati nel mondo dell'intelligenza artificiale: al prorpio interno tanta potenza elaborativa per gestire al meglio le necessità d'uso dell'agentic AI
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6
In occasione del proprio Snapdragon Summit Qualcomm annuncia i due nuovi chip per dispositivi mobile di fascia alta che entreranno nel mercato nel corso del 2027: tanta potenza a disposizione per elaborazioni di intelligenza artificiale sempre più complesse
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 14-12-2009, 12:33   #1
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
[Generico / C#] - Comparare due cose che potrebbero essere chiamate "alberi"

Salve a tutti...

ho due strutture dati che possono essere riassunte attraverso lo schema XML presente nel primo snippet.

Finché devo fare il confronto di uguaglianza, é tutto abbastanza facile. Il problema viene quando devo ordinare una lista di di queste strutture dati secondo la somiglianza ad un dato template.

Anzi, finché non considero gli elementi "booleani" (ad eccezione del primo and che é implicito) é semplice anche comparare. Il problema é quando sia il template che le strutture dati da comparare possono rappresentare una funzione booleana (qualcosa tipo: "condizione 1 and condizione 2 and (condizione3 and not condizione 4)".

Per ora me la sono cavata con questa soluzione:

La lista da comparare invoca su ogni suo elemento un metodo che accetta il template. Ogni elemento della lista invoca a sua volta, recursivamente, un metodo che assegna un punteggio per ogni condizione rispettata.

Ho dovuto usare la ricorsione perché in questo modo, una volta rilevato un nodo "booleano", invoco la stessa funzione sui suoi figli.

Ovviamente non chiedo una soluzione completa, mi interessa piú un consulto su metodologie ed algoritmi.

Grassie a tutti e spero di essere stato abbastanza chiaro.

Schema XML:
Codice:
<xs:schema targetNamespace="http://www.educations.com/Search/Parameters.xsd"
    elementFormDefault="qualified"
    xmlns="http://www.educations.com/Search/Parameters.xsd"
    xmlns:xs="http://www.w3.org/2001/XMLSchema"
>
  <xs:element name="parameters">
    <xs:complexType>
      <xs:sequence minOccurs="1" maxOccurs="unbounded">
        <xs:element type="parameter" name="parameter" />
      </xs:sequence>
    </xs:complexType>
  </xs:element>

  <xs:complexType name="parameter" abstract="true">
    <xs:attribute name="required" type="xs:boolean" default="true" use="optional" />
  </xs:complexType>

  <xs:complexType name="or">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:sequence minOccurs="2" maxOccurs="unbounded">
          <xs:element name="parameter" type="parameter" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="and">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:sequence minOccurs="2" maxOccurs="unbounded">
          <xs:element name="parameter" type="parameter" />
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="not">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:all minOccurs="1" maxOccurs="1">
          <xs:element name="parameter" type="parameter" />
        </xs:all>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="place" final="extension">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:attribute name="placeID" type="xs:int" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="type">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:attribute name="typeID" type="xs:int" />
      </xs:extension> 
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="category">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:attribute name="categoryID" type="xs:int" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>

  <xs:complexType name="marker">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:attribute name="markerID" type="xs:int" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="keywords">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:sequence minOccurs="1" maxOccurs="unbounded">
          <xs:element name="keyword">
            <xs:complexType>
              <xs:attribute name="key" type="xs:string" />
            </xs:complexType>
          </xs:element>
        </xs:sequence>
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
  
  <xs:complexType name="keyword">
    <xs:complexContent>
      <xs:extension base="parameter">
        <xs:attribute name="value" type="xs:string" />
      </xs:extension>
    </xs:complexContent>
  </xs:complexType>
</xs:schema>
alcuni esempi di struttura serializzata secondo lo schema:
Codice:
<parameters xmlns="http://www.educations.com/Search/Parameters.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <parameter xsi:type="category" categoryID="4" />
</parameters>

<parameters xmlns="http://www.educations.com/Search/Parameters.xsd">
  <parameter xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:type="keyword" value="fly" />
</parameters>

<!-- categoryID = 23 && placeID != 24 -->
<parameters xmlns="http://www.educations.com/Search/Parameters.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <parameter xsi:type="category" categoryID="23" />
  <parameter xsi:type="place" placeID="24" />
</parameters>

<!-- categoryID = 4 && (placeID == 24 || placeID == 7) -->
<parameters xmlns="http://www.educations.com/Search/Parameters.xsd" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <parameter xsi:type="category" categoryID="4" />
  <parameter xsi:type="or">
    <parameter xsi:type="place" placeID="24" />
    <parameter xsi:type="place" placeID="7" />    
  </parameters>
</parameters>
Kralizek è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2009, 19:47   #2
Gremo
Senior Member
 
L'Avatar di Gremo
 
Iscritto dal: Oct 2000
Città: Udine
Messaggi: 3178
Questo potrebbe essere d'aiuto?
Gremo è offline   Rispondi citando il messaggio o parte di esso
Old 14-12-2009, 22:34   #3
Kralizek
Senior Member
 
L'Avatar di Kralizek
 
Iscritto dal: Feb 2003
Città: Stockholm (SE)
Messaggi: 1343
grazie del consiglio, onestamente non avevo pensato all'interfaccia IComparable, ora mi vedo un po' come innestarla.
Kralizek è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione POCO F9 pro: potenza da vero top di gamma, display da 185 Hz e finalmente una fotocamera da prendere sul serio Recensione POCO F9 pro: potenza da vero top di g...
Tra audio e AI: la ricetta di Qualcomm per l'agentic AI Tra audio e AI: la ricetta di Qualcomm per l'age...
Qualcomm annuncia la nuova generazione di SoC Snapdragon 8 Elite Gen 6 Qualcomm annuncia la nuova generazione di SoC Sn...
realme 16 Pro Harry Potter Edition: il nuovo midrange ha uno stemma di Hogwarts che cambia colore al sole! realme 16 Pro Harry Potter Edition: il nuovo mid...
Recensione REDMI Note 17 Pro: il midrange con batteria da 8.340 mAh e ricarica veloce Recensione REDMI Note 17 Pro: il midrange con ba...
La scrivania che ricarica il telefono ov...
Nextcloud annuncia la versione desktop d...
IA, Bill Gates chiede regole e salvaguar...
Muse Charm arriverà a dicembre e ...
Motorola Signature 27 sarà il primo smar...
Perplexity Portable Computer anche per A...
No, non impugnavi male il tuo iPhone 4: ...
La migliore Fat e-bike del web, ora scon...
FRITZ! in offerta su Amazon: router Wi-F...
Anthropic firma con Akamai un contratto ...
Elon Musk: 'SpaceX avrà un'IA al ...
World of Warcraft: Forever: la beta sbar...
Gli appunti di Gemini Notebooks finiscon...
PrismML porta un LLM a 1 bit sugli occhi...
Falso sito del Servizio Sanitario Nazion...
Chromium
GPU-Z
OCCT
LibreOffice Portable
Opera One Portable
Opera One 106
CCleaner Portable
CCleaner Standard
Cpu-Z
Driver NVIDIA GeForce 546.65 WHQL
SmartFTP
Trillian
Google Chrome Portable
Google Chrome 120
VirtualBox
Tutti gli articoli Tutte le news Tutti i download

Strumenti

Regole
Non Puoi aprire nuove discussioni
Non Puoi rispondere ai messaggi
Non Puoi allegare file
Non Puoi modificare i tuoi messaggi

Il codice vB è On
Le Faccine sono On
Il codice [IMG] è On
Il codice HTML è Off
Vai al Forum


Tutti gli orari sono GMT +1. Ora sono le: 12:17.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Served by www3v