lunedì 31 marzo 2014

[C++] Numeri

Carlo ha un fratello minore, Marco, che ha appena iniziato ad andare a scuola e ha qualche
problema con i numeri. Per aiutarlo a fargli capire il valore dei numeri, il suo insegnante scrive due
numeri con tre cifre alla lavagna. Poi chiede a Marco di comparare i due numeri, ma invece di
interpretarli con la cifra più significativa a sinistra, deve interpretarli con la cifra più significativa a
destra. Marco deve dire all'insegnante quale sia il maggiore dei due numeri.
Scrivere un programma che controlli le risposte di Marco.

INPUT (input.txt)
La prima e unica riga dell'input contiene due numeri da tre cifre, A e B. A e B non sono uguali e non
contengono zeri.

OUTPUT (output.txt)
La prima e unica riga dell'output deve contenere il maggiore tra i due numeri dati in input,
comparato con i metodi previsti nel testo. Il numero deve essere scritto al contrario, come
Marco dovrebbe leggerlo.

input.txt        input.txt       input.txt
734  893      221   231       839 237
output.txt    output.txt      output.txt
437           132                 938

Con l' operatore modulo (%, a%b è il resto della divisione intera a:b) scomponiamo le cifre dei due numeri e una volta assemblate al contrario possiamo confrontarle:


1
2
4
3
5
8
6
7
9
13
10
11
14
12
19
15
16
18
17
20
21 22 23 24
25
#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int main(){
    ifstream in ("input.txt");
    ofstream out ("output.txt");
   int a,b,c,d,e;
   in>>a>>b;
   
   c= a/100;
   d= a%100 /10;
   e= a%10;
   a= 100*e+10*d+c;
   
   c= b/100;
   d= b%100 /10;
   e= b%10;
   b= 100*e+10*d+c;
   
    out <<max(a,b);
    
    return 0;}
_________________________________________________________________________________

[C++] Gara di informatica

Ogni anno l'università organizza una competizione a squadre di informatica. Ogni squadra
è composta da tre studenti.
Tradizionalmente le migliori sono sempre state le ragazze, che quindi partecipavano in
sovrannumero rispetto al numero di ragazzi a questa competizione. Quest'anno i ragazzi con le loro
proteste hanno fatto approvare una regola: ogni squadra deve essere composta da esattamente 1
ragazzo e 2 ragazze.
Per rendere l'organizzazione della competizione ancora più difficile, il preside della scuola ha
deciso che dovranno essere mandati K dei ragazzi (maschi o femmine) che si erano iscritti alla gara
in uno stage all'estero. Questi K ragazzi non potranno ovviamente fare parte di nessuna squadra,
non potendo partecipare alla gara.
Definito come M il numero di ragazze iscritte alla gara, con N il numero di ragazzi (maschi) iscritti
alla gara e con K il numero di ragazzi (maschi o femmine) che, scelti tra gli N + M ragazzi iscritti
alla gara, dovranno essere mandati allo stage all'estero, si determini qual è il massimo numero di
squadre che si possono iscrivere alla gara.
Per esempio se M è 6, N è 3 e K è 2, il preside può mandare una ragazza e un ragazzo (maschio)
allo stage, così rimangono 5 ragazze e 2 ragazzi. Allora si potranno iscrivere alla gara due squadre
(e una ragazza sarà lasciata senza squadra).

INPUT (input.txt)
La prima e unica riga dell'input contiene tre numeri, separati da uno spazio: M ( 0 <= M <= 100), il
numero di ragazze, N (0 <= N <= 100), il numero di ragazzi e K (0 <= K <= M+N), il numero di
iscritti alla gara che devono essere mandati in uno stage.

OUTPUT (output.txt)
L'output dovrà contenere un solo numero: il numero massimo di squadre che possono essere
composte.

input.txt   input.txt   input.txt
6 3 2         2 1 1        6 10 3
output.txt   output.txt   output.txt
2                  0                3

Semplicemente dividendo il numero di ragazze a metà, la differenza fra ragazze/2 e ragazzi saranno gli alunni partecipanti allo stage, coi rimanenti si formano le squadre:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int main(){
    ifstream in ("input.txt");
    ofstream out ("output.txt");
   
   int m,n,k,diff;
   
   in>>m>>n>>k;
   
   diff= m- 2*n;
   
   if (diff >0){
   k -= diff;
   if (k<0){diff+=k;k=0;}
   m-=diff;}else{
   k += diff;
   if (k<0){diff-=k;k=0;}
   n += diff;}
   
   diff = k/3;
   k -= 3*diff;
   if (k<0){diff+=k;k=0;}
   m -= 2*diff;
   n -= diff;
      
if (k>0)
if (2*n > m)
n-=k;
else
m-=k;

out << min(n,m/2);
    
    return 0;}

giovedì 27 marzo 2014

[C++] Canoa

Una gara di canoe sta per iniziare. Sfortunatamente dei forti venti hanno danneggiato alcune canoe e
la gara sta per iniziare!
Per fortuna alcune squadre hanno portato una canoa di riserva. Siccome le canoe sono pesanti e
difficili da trasportare, le squadre sono disposte a prestare la loro canoa di riserva (se ce l'hanno) a
una squadra avversaria se e solo se sono disposti immediatamenti vicini a loro (alla partenza, cioè
se hanno numeri di partenza immediatamente vicini). Per esempio, la squadra con il numero di
partenza 4, sarà disposta a prestare la sua canoa di riserva solo alle squadre con numero di partenza
3 e 5. Ovviamente se una squadra che ha portato la canoa di riserva ha la sua canoa danneggiata,
utilizzerà la canoa di riserva per sè.
Tu, come organizzatore della gara, vuoi sapere qual è il minimo numero di squadre che non possono
iniziare la gara, neanche con canoe imprestate.

INPUT (input.txt)
La prima riga dell'input contiene tre interi: N, (2 <= N <= 10), il numero totale di squadre, S (2 <=
S <= N), il numero delle squadre con canoe danneggiate e R ( 2 <= R <= N), il numero di squadre
con canoe di riserva.
La seconda riga dell'input contiene esattamente S numeri, i numeri delle posizioni alla partenza
delle squadre con canoe danneggiate. Questa riga non contiene duplicati.
La terza riga dell'input contiene esattamente R numeri, i numeri delle posizioni alla partenza delle
squadre con canoe di riserva. Questa riga non contiene duplicati.

OUTPUT (output.txt)
L'output contiene un singolo numero, il numero minimo di squadre che non possono iniziare la
gara.

input.txt    input.txt
5 2 3        5 2 1
2 4          2 4
1 3 5        3

output.txt output.txt
0          1

SOLUZIONE:
Procediamo con ordine: se una squadra ha una canoa:
* gli serve? se la tiene
* serve a sinistra? la da alla squadra di sisnistra
*la da alla squadra di destra
#include <iostream>
#include <cstdlib>
#include <fstream>

using namespace std;

int main(){
    ifstream in ("input.txt");
    ofstream out ("output.txt");

int n,s,r,d=0;

in >>n>>s>>r;
int dann[s],ris[r];
bool pos[n][2];

for (int i=0;i<s;i++)
in>> dann[i];
for (int i=0;i<r;i++)
in>> ris[i];

for (int i=0;i< n;i++)
    pos[i][0]=pos[i][1]= 0;
    
for (int i=0;i< s;i++)
    pos[dann[i]][0]=1;
for (int i=0;i< r;i++)
    pos[ris[i]][1]=1;
    
for (int i=0;i< n;i++)
if (pos[i][0] && pos [i][1])
   pos[i][0] = pos [i][1]=0;

for (int i=0;i< n;i++)
if ( i-1 >= 0 && pos[i-1][0] && pos [i][1])
pos[i-1][0] = pos [i][1]=0;
else if (i+1<n && pos[i+1][0] && pos [i][1])
pos[i+1][0] = pos [i][1]=0;

for (int i=0;i< n;i++)
if (pos[i][0]) d++;

out<<d;


    return 0;}

giovedì 20 febbraio 2014

Rhinoceros 5 su Wine




1) Scarica lessmsi  e avvialo con wine:
wget "https://lessmsi.googlecode.com/files/lessmsi-v1.0.10.zip"
unzip -d lessmsi lessmsi-v1.0.10.zip 
cd lessmsi
wine lessmsi.exe
enter image description here2) Ora selezione il .msi di installazione di Rhino 5 e aprilo con lessmsi. Vai su "Exctract" e premi "select all".Non preoccuparti se la finestra dovesse divenatre nera. Clicca poi su "extract" e scegli una cartella dove estrarre il programma.
3) Vai alla cartella con i file estratti ed avvia
 SourceDir/Rhinoceros 5.0/System/Rhino4.exe

Purtroppo non è possibile salvare in quanto non funziona la gestione delle licenze


giovedì 30 gennaio 2014

[C++] Colore

Gianni ha N palline, disposte in fila, numerate da 1 a N. Queste palline sono speciali,
perchè sono colorate o di nero o di bianco. In particolare la pallina i sarà bianca se
A[i] = 0 e sarà nera se A[i] = 1. Gianni ha in mente un numero K. Questo numero K è
particolare, perchè divide N (cioè la divisione N / K ha resto 0). Gianni ha a
disposizione tantissima vernice nera e bianca, ma è molto pigro. Si definisca come
distanza tra due palline i,j il valore assoluto della differenza della posizione della
pallina i e della pallina j. Si vuole che se due palline hanno distanza K, allora siano
dello stesso colore. Qual è il numero minimo di palline che Gianni deve colorare per
soddisfare suddetta condizione?

Input (input.txt)
La prima riga dell'input consiste in due numeri, N e K, separati da uno spazio. La
seconda riga dell'input consiste in una sequenza di N numeri, cioè i valori di A[0],
A[1], ..., A[N].

Output (output.txt)
Il file di output dovrà contenere esattamente un numero, il numero minimo di palline
da colorare.
input.txt                                     output.txt
10 2                                           3
1 0 1 1 0 1 1 0 1 1

SOLUZIONE
Partendo da un punto (0) si salta k palline e si contano  quante sono nere e quante sono bianche. Il valore minimo fra bianche e nere è il numero minimo di palline da colorare di quella serie. Sommando i minimi di tutte le serie si ottiene il minor numero di palline da colorare:

[C++] Gara

C'è una gara di corsa in città. A partecipare a questa gara ci sono N persone. La gara
viene svolta in un rettilineo ("infinito"). Tutti i corridori corrono nella stessa
direzione. I partecipanti sono numerati da 1 a N. La gara non è completamente equa.
Infatti ogni partecipante non parte dallo stesso punto, ma ha un vantaggio di un certo
numero di metri (considerato rispetto al punto di partenza). Si consideri il vettore A,
A[i] denota il vantaggio in metri del partecipante numero i. Inoltre non ogni
partecipante della corsa procede alla stessa velocità. In particolare il partecipante con
numero i correrà con una velocità di B[i], espressa in metri per unità di tempo.
Vengono dati in input M valori di tempo, dire per ogni valore di tempo fornito in
input qual è il partecipante che si trova in vantaggio, ovvero più distante dal punto di
partenza, considerando che corra con una velocità costante (se più partecipanti si
trovano alla stessa distanza dalla partenza, considerare quello con numero più
piccolo).

Input (input.txt)
La prima riga dell'input contiene due numeri, N e M, separati da uno spazio.
La riga successiva contiene N numeri separati da uno spazio, cioè i valori di A[1],
A[2], ... , A[N].
La riga successiva contiene N numeri separati da uno spazio, cioè i valori B[1],
B[2], ..., B[N].
L'ultima riga dell'input contiene M numeri, separati da uno spazio, gli M valori di
tempo per cui si dovrà computare una risposta come descritto dal testo del problema.

Output (output.txt)
Il file di output dovrà contenere esattamente M righe. Data la sequenza degli M
valori di tempo, si stampi per ogni riga il numero del giocatore che si trova in
vantaggio (seguendo la consegna del testo del problema).

input.txt       output.txt
2 2               1 2
1 0
4 6
0 1


SOLUZIONE
 Per ogni valore di tempo si calcola la distanza di arrivo, poi si terrà conto della distanza massima.


[C++] Salto

Un clown si diverte a saltare. Ha a disposizione N blocchi. I blocchi sono numerati da
1 a N. Il blocco i ha un'altezza di A[i]. Si definisce come difficoltà del salto la
differenza di altezza tra due blocchi (il valore può essere sia negativo che positivo,
negativo se si salta verso il basso, positivo se si salta verso l'alto). Qual è il valore del
salto con difficoltà maggiore, potendo scegliere liberamente due blocchi?

Input (input.txt)
La prima riga dell'input contiene un singolo valore N.
La seconda riga dell'input contiene N valori, separati da uno spazio, cioè i valori
A[1], A[2],..., A[N].

Output (output.txt)
Il file di output dovrà contenere esattamente un numero, cioè il valore del salto con
difficoltà maggiore.

input.txt   output.txt
5            6
5 1 6 3 7 

SOLUZIONE
 Il salto più difficile è quello fra la pedana con punteggio minore e quella con punteggio maggiore.


[C++] Magia

Un numero si dice magico se composto da 1, 14, 144 combinati anche più volte in modo casuale.
Il programma prende un numero e ritorna YES se è magico, altrimenti NO

esempi:
1441414411 ->YES
1514 -> NO
14444 -> NO



giovedì 9 gennaio 2014

DE Survey

Piccolo sondaggio sui DE di Linux, il sondaggio durerà per un lungo periodo di tempo e può essere compilato più volte. I risultati possono essere visti qui.

Versioni di Ubuntu

Cosa curiosa è che il numero delle versioni di Ubuntu non è casuale o incrementato, ma indica l' anno e il mese di uscita della versione ufficiale (anno.mese), e il  nome? Il nome è sempre composto da un aggettivo e un nome di animale che inziziano con la stessa lettera, e dalla 6.06 (Dapper Drake) vanno in ordine alfabetico:


Versione
Nome
Rilascio
4.10
Warty Warthog (Facocero Verrucoso)
20 ottobre 2004
5.04
Hoary Hedgehog (Riccio Veterano)
8 aprile 2005
5.10
Breezy Badger (Tasso Arioso)
12 ottobre 2005
6.06 LTS
Dapper Drake (Papero Signorile)
1º giugno 2006
6.10
Edgy Eft (Tritone Tagliente)
26 ottobre 2006
7.04
Feisty Fawn (Cerbiatto Esuberante)
19 aprile 2007
7.10
Gutsy Gibbon (Gibbone Coraggioso)
18 ottobre 2007
8.04 LTS
Hardy Heron (Airone Audace)
24 aprile 2008
8.10
Intrepid Ibex (Stambecco Intrepido)
30 ottobre 2008
9.04
Jaunty Jackalope(Lepre cornuta Disinvolta)
23 aprile 2009
9.10
Karmic Koala (Koala Karmico)
29 ottobre 2009
10.04 LTS
Lucid Lynx (Lince Lucida)
29 aprile 2010
10.10
Maverick Meerkat (Suricato Indipendente)
10 ottobre 2010
11.04
Natty Narwhal (Narvalo Elegante)
28 aprile 2011
11.10
Oneiric Ocelot (Gattopardo Onirico)
13 ottobre 2011
12.04 LTS
Precise Pangolin (Pangolino Preciso)
26 aprile 2012
12.10
Quantal Quetzal (Quetzal Quantico)
18 ottobre 2012
13.04
Raring Ringtail (Lemure Impaziente)
25 aprile 2013
13.10
Saucy Salamander (Salamandra Impertinente)
17 ottobre 2013
14.04
Trusty Tahr (Capra Affidabile)
17 aprile 2014



mercoledì 8 gennaio 2014

CAD per Linux

- no title specified
CAD per Linux
-Free Cad
-Blender Cad
-Medusa
FREE CAD [OPEN SOURCE]
Linux -  Mac -  Windows
CAD 3D parametrico.
Formati file:FCStd, IGES, STEP e B-Rep.
Installazione su linux (tramite apt-get):
        sudo apt-add-repository ppa:freecad-maintainers/freecad-stable -y
        sudo
apt-get update -y
        sudo apt-get install freecad -
y
BLENDERCAD [OPEN SOURCE]
Linux -  Mac -  Windows
Script per Blender: CAD 3D parametrico per architettura.
Formati file:3DS, DAE, FBX, DXF, OBJ, x, LWO, BVH, SVG, Stanford PLY, STL, VRML, VRML97, X3D.
Installazione su linux (tramite apt-get):
                        sudo add-apt-repository ppa:fkrull/deadsnakes -y
                        sudo apt-get update -y
                        sudo apt-get install python2.6 python2.6-dev -y
                        sudo ln -s /usr/lib/libgettextlib.so /usr/lib/libgettextlib-0.17.so
                        sudo ln -s /usr/lib/i386-linux-gnu/libtiff.so.4 /usr/lib/libtiff.so
                        sudo apt-get install libjpeg62:i386 -y
                       
sudo apt-get install libalut0 -y
                       
sudo apt-get install blender -y
solo su 64 bit:        sudo apt-get install ia32-libs  -y
-scarica http://graphicall.org/239/download
-scompatta ***_blender-*.***-cad-32bit-********.tar.bz2 nella Home e rinominalo in .BC (estratto sarà una cartella di nome linux2).
        ~/.BC/blendr
NOTA: Potrebbe non funzionare su tutti i processori 64bit.
MEDUSA [OPEN SOURCE]
Linux - Windows
CAD 3D parametrico per uso personale.
Formati file:she, DXF.
Installazione:

sabato 4 gennaio 2014

Aggiungere MIME ad Apache su Linux

1) Installare XAMMP (32bit, 64bit)

2) Apri /opt/lampp/etc/mime.types come amministratore (esempi:)
sudo nano /opt/lampp/etc/mime.types 
sudo gedit /opt/lampp/etc/mime.types 

3) Aggiungi il tuo mime  come "MIME       estensione" (se devi aggiungere il supporto per i vettoriali:
image/svg+xml svg    )

4) Per avviare XAMMP: sudo /opt/lampp/lampp start

giovedì 19 dicembre 2013

Calcoliamo con Chrome

Perché non fare i conti con Chrome: basta digitare un' espressione (la percentuale si fa con: 20% of 356)
e Chrome mostrerà il risulttato, provare per credere!!!!!!!!!!!!!!!!!!
x^y = xy
sqrt(x) = √x
x^(1/y) = y√x
log(x) =log10 x
logY (x) = logy x


martedì 10 dicembre 2013

Creare form che verrà gestito da JS

Ajax permette di gestire comodamente un form, ma per fare ciò bisogna cambiare il pulsante da submit a button (per evitare il ricaricarsi della pagina),ma questo comporta alla perdita del controllo dei campi required introdotti in HTML. Questo può essere ovviato utilizzando il bottone di tipo submit e l' evento onsubimit:


 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
<head>
   <script>
 
function logon(u,m,p){

var aj; //costruttore AJAX
if (window.XMLHttpRequest)
    aj=new XMLHttpRequest();   //Su browser moderni
else
  aj=new ActiveXObject("Microsoft.XMLHTTP"); //per vecchi IE

aj.onreadystatechange=function(){
  if (aj.readyState==4 && aj.status==200)
 alert(aj.responseText);}//otteniamo la risposta dal server

aj.open("POST","http://dpdmancul.bugs3.com/logon.php",true); 
aj.setRequestHeader("Content-type","application/x-www-form-urlencoded");
aj.send("username_reg="+u+"&password_reg="+p+"&email_reg="+m);}   //invio richiesta

  </script>
</head>
<body>
 

  
<form id="log" method="post" action=""  onsubmit="var user=document.forms['log']['user'].value;
var mail=document.forms['log']['email'].value;
var pass=document.forms['log']['pass'].value;
logon(user,mail,pass);return false;">
<!---  onsubmit="return false;" : quando il form è pronto per l' invio non inviarlo -->
<h1>LOGON</h1>   
<input type="text" id="user" placeholder="Username" required  >
<input type="text" id="email" placeholder="E-mail" required >
<input type="password" id="pass" placeholder="Password" required >
<!--- button type="submit" : permette il controllo dei campi required e poi esegue onsubmit-->
<button  type="submit" class="button">   Registrati   </button></br>
<input type="checkbox" id="checkbox1" required><label for="checkbox1" >Acconsento al trattamento dei dati personali sopra riportati da parte del gestore della pagina</label>
</form></body>
Questo form esegue automaticamente il controllo dei dati senza procedere all' invio i essi.

lunedì 2 dicembre 2013

Ubuntu Touch

Ubuntu Touch è un OS per dispositivi mobili basato sulla nota versione di Linux adattata sul modello di Android per girare su processori ARM.
Le core apps vengono sviluppate da Cananical e dalla comunity: chiunque si iscriva può partecipare al loro miglioramento.
Le app per Ubuntu Touch possono essere scritte in C++ o in JS come webapps (sul sito è già disponibile ubuntu-sdk-tem); una volta compilate e presentate verranno controllate (ora da persone fisiche, ma in futuro da software) per poi essere pubblicate sul Software Center senza che lo sviluppatore debba sviluppare l' installer.
Ora Ubuntu Touch gira su 4 dispositivi, ma è possibile configurarlo su più di 50 altri dispositivi e più di altri 25 sono in lista d' attesa.
Ubuntu Touch è al primo posto in quanto a sicurezza, grazie al suo sistema di isolamento,per il quale non si può modificare il sistema operativo, delle applicazioni e ai criteri di privacy gard.
Ubuntu Touch non usa GTK+, ma MIR e infatti Canonical sta provvedendo alla conversione di tutte le app di Ubuntu software Center; la prossima versione di Ubuntu Desktop dovrebbe avere Unity Next con il supporto sia del GTK+ che di MIR.
Il progetto finale per il futuro è un unico dispositivo che si adatta agli schermi e usa le stesse app in modalità smartphone,tablet e desktop; questo è comodo sotto vari aspetti: non occorre sincronizzare i dispositivi, si portano le app da desktop a smartphone e viceversa, con un unico dispositivo si può fare tutto,...

Si può anche installare un emulatore per testarlo su Ubuntu (solo 14.04):
sudo su
apt-get update
apt-get install android-emulator cp -r /usr/share/android/emulator/ ~/
cd ~/emulator/
./build-emulator-sdcard.sh
./run-emulator.sh

domenica 1 dicembre 2013

Firefox OS

Firefox OS è un recente OS open source per dispositivi mobili che si basa solo su webapp, questo fa si che sia un sistema leggero e veloce, senza limitarne l' uso; inoltre il mercato delle webapps e in notevole aumento e segnerà il futuro dello sviluppo software: una webapp è compatibile con tutti i dispositivi ed il suo sviluppo è abbastanza semplice.
Mozilla fornisce in oltre delle api per l' integrazione con l' O.S. : queste webapp sareanno disponibili sul market.
Ma come provare queste app se non si ha un cellulare con Firefox OS?
1) UTILIZZANDO FIREFOX SU LINUX
Andiamo qui e scarichiamo l' estensione

Su strumenti > sviluppo Web > Firefox OS Simulator











2) UTILIZZANDO FIREFOX SU ANDROID


UDOO

UDOO


UDOO è un progetto di open source hardware italiano basato su Arduino DUE  e Raspberry Pi.
Ha due processori (uno per Arduino e uno per il sistema operativo) ARM e 1 GiB di RAM.
E' adatto si per Linux sia per Android.
Grazie alla coesistenza delle due scjhede può essere programmato da se stesso senza computer aggiuntivi ed è compattibile con tutti i programmi e le espansioni Arduino.
Grazie all' ADK fornito da Google è facile interagire fra Android e UDOO potendo creare controlli a distanza.
UDOO ha intrapreso un progetto chiamato Kick Starter avviato già durante lo sviluppo: questa comunità ha riscontrato le esigenze degli utilizzatori delle versioni beta e ha contribuito al miglioramento del prodotto finito.
UDOO è ancora in fase di sviluppo, ma è già disponibile in commercio sul sito ufficiale.
Il prezzo attualmente gira sui 100€.

Android ROMs

Per ROM si intende, anche se impropriamente, il sistema  operativo di un cellulare.
In questo articolo andremo a vedere le principali versioni modificate di Android.
Attenzione: gli argomenti trattati in questo articolo evolvono molto velocemente.



  • E' la ROM attualmente più diffusa.
    Grazie al DSP Manger si può avere un controllo totale sull' audio: equalizzatore,
    cuffie, auricolari e player bluetoooth,...

    Inoltre vengono semplificate le gesture del quicksetting (per esempio premendo su un' impostazione si attiva o si disattiva e solo tenendo premuto si apre il menù completo)

    La Cyanogen include anche Focal: una fotocamera con svariate impostazioni (multiscatto, regolazioni,...).
    Un altro vantaggio di Focal è il sitema di compressione: le foto vengono salvate con una qualità superiore a quelle di Android.

    Grazie a Trebuchet si possono personalizzare la schermata di blocco e il launcher al 100%.

    Privacy Gard permette di bloccare l' accesso alle informazioni personali ad alcune applicazioni, c'è però la possibilità che alcune applicazioni non funzionino se gli si blocca l' accesso a tali dati.

    Una grande funzione è la gestione dei profili: si può impostare che in una data posione (GPS), quando ci si connette ad un determinato wi-fi, ad una data ora, cambi profilo: cioè cambi suonerie, volumi, sfondo,...

  • MIUI
    Miui stravolge totalmente la grafica di Andorid, ed adotta un proprio market solo per i temi.

    Interessanti son i Quicksettings: rapidi e intuitivi.

    Il Memory Manager consente di chiudere le applicazioni definitivamente e di eliminarle dalla memoria RAM.

    Il player è completamente diverso e permette di vedere il testo della canzone mentre la si ascolta.
    Importante è il discorso sicurezza: Miui include antivirus, Antispam, Backup e un privacy guard migliore di quello della Cyanogen: permette di scegliere quali informazioni mostrare a quali applicazioni , e se ad una applicazione viene negato di conoscere certe informazioni, questa non crasha perché le viene restituito un elenco vuoto.

  • AOKP
    E' attualmente la ROM più veloce.
    Permette di impostare un ritmo personalizzato per la vibrazione e il led, diverso per ogni tipo di notifica.

    La gestione della Privacy è simile a quella di Miui.

    Inoltre è possibile modificare al 100% la barra di navigazione (quella sotto) e la status bar.






  • Paranoid Android
    E' instabile (il dispositivo potrebbe crashare da un giorno all'altro) , ma in compenso offre molte funzioni  interessanti:
    Si possono impostare DPI diversi per ogni app, si può usare lo smartphone in modalità  tablet,...
    Carine sono anche le notifiche: sono come il cerchio della chat di facebook, poi se ci clicchi sopra si apre la finestra relativa in popup senza chiudere l' app in utilizzo.









  • PAC-MAN
    E' nata recentemente e raccoglie tutte le precedenti ROMs. E' molto instabile (è già bene se si accende)
    ma promette molto. Riportiamo solo una screen.





  • OMNIROM
    E' il progetto più recente e si basa tutto sulla comunity.
    Supporta il multiscreen (due applicazioni in contemporanea).