Skip to content

Instantly share code, notes, and snippets.

@gipi

gipi/questionario.md

Last active Nov 23, 2015
Embed
What would you like to do?

Python 1

Una via quick'n'dirty e di convertire la list in un set e riconvertirlo in una list

>>> animali	=	["gatto",	"cane",	"pecora",	"gatto",	"bue",	"pecora",	"gatto"]
>>> list(set(animali))
['cane', 'pecora', 'gatto', 'bue']

Python 2

Onestamemente non capisco la domanda: lo statemente with può essere utilizzato in quelle situazioni in cui c'è un certo contesto di cui tenere conto.

L'uso che ne faccio io più spesso è quando ho da aprire un file e quindi eseguo

with open('/path/to/file') as f:
  do_something_amazing(f)

in questa maniera non mi devo occupare di chiudere il file, neanche in caso di errore.

Data structures

Il sistema ha due elementi principali

  • pagina
  • token

considerando che il motore di ricerca necessita solamente di avere il link con la pagina che contiene il token ricercato e siccome i token sono generalmente ripetuti attraverso le pagine conviene creare una struttura dati con il token a cui sono connesse le pagine in cui esso compare.

Il problema a questo punto rimarrebbe rendere veloce la ricerca attraverso la struttura dati della parola; sotto questo aspetto una Hash Table, che ha ricerca in O(1) (in media) sarebbe la scelta migliore (in questo caso accesso e ricerca coincidono). Siccome non sono richieste proprietà come sorting, insertion e deletion penso di poter tralasciare altre strutture dati.

Javascript

In questo caso utilizzerei un dizionario con la stringa rappresentante il numero di pettorale; così si avrebbe un hash table che come l'esempio sopra un accesso O(1).

Considerando che gli oggetti Javascript sono hash table essi stessi anche l'accesso dovrebbe essere O(1) (dipende dall'implementazione).

SQL Modelling

Una scelta possibile è la seguente dove si è preferito unire tutte le figure come l'impiegato, consulente e responsabile in un unica tabella (sono distinguibili uno dall'altro a seconda della presenza di certi campi); eventuali constraint possono essere implementati a livello software oppure utilizzando costrutti SQL adeguati (il codice che segue è del database PostgreSQL ma non ho inserito dei controlli siccome non li conosco perfettamente e il tempo è stretto)

CREATE TABLE impiegati (
  id integer PRIMARY KEY,
  CF char(16) NOT NULL,
  nome char(255) NOT NULL,
  dipartimento char(255) NOT NULL,
  inquadramento char(255) NOT NULL,
  diretto_da_dirigente integer REFERENCES impiegati (id),
  is_consulente boolean,
  address char(255),
  telefono char(255)
);

CREATE TABLE progetti (
  pid integer PRIMARY KEY,
  nome char(255) NOT NULL,
  responsabile integer REFERENCES impiegati (id),
);

CREATE TABLE progetto_dipendenti (
  id integer PRIMARY KEY,
  impiegato integer REFERENCE impiegati (id),
  progetto integer REFERENCE progetti (pid)
);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment