Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi
Mate X7 rinnova la sfida nel segmento dei pieghevoli premium puntando su un design ancora più sottile e resistente, unito al ritorno dei processori proprietari della serie Kirin. L'assenza dei servizi Google e del 5G pesa ancora sull'esperienza utente, ma il comparto fotografico e la qualità costruttiva cercano di compensare queste mancanze strutturali con soluzioni ingegneristiche di altissimo livello
Nioh 3: souls-like punitivo e Action RPG
Nioh 3: souls-like punitivo e Action RPG
Nioh 3 aggiorna la formula Team NINJA con aree esplorabili più grandi, due stili di combattimento intercambiabili al volo (Samurai e Ninja) e un sistema di progressione pieno di attività, basi nemiche e sfide legate al Crogiolo. La recensione entra nel dettaglio su combattimento, build, progressione e requisiti PC
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti
La facilità di installazione e la completa automazione di tutte le fasi di utilizzo, rendono questo prodotto l'ideale per molti clienti. Ecco com'è andata la nostra prova in anteprima
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 28-11-2007, 15:23   #1
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
[JAVA] DIVIDE ET IMPERA: esercizio semplice? Forse.. ma nessuno lo risolve.

Buongiorno Dottori,

ho un quesito da porvi. Sapreste realizzare questo esercizio in Java?

Utilizzare la tecnica "Divide Et Impera" per calcolare quante volte la sequenza 'a' 'b' 'a' si ripete all'interno di un array di caratteri

Io ho provato a svolgerlo, ma in ogni caso sembra entrare in un loop.
Molti sostengono sia facile. Il problema è che nessuno riesce a svolgerlo!
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 15:29   #2
variabilepippo
Senior Member
 
L'Avatar di variabilepippo
 
Iscritto dal: Mar 2007
Messaggi: 1792
Quote:
Sapreste realizzare questo esercizio in Java?
Sì, ma ti ricordo che questo è un forum con regole ben precise.

Quote:
Molti sostengono sia facile. Il problema è che nessuno riesce a svolgerlo!
Non solo è facile, ma esiste molta letteratura in merito. Mostra la tua soluzione non funzionante.
variabilepippo è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 15:43   #3
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
te lo posto subito.

Ne ho provate 2 versioni, le posto entrambe:

Prima versione

Codice:
public class divideEtImpera {

	public static int conta (char []A, int first, int last) {
		
		int n = 0;
		int m = 0;
		int z = 0;
		
		if (first<last) {	
			
			int half = (first+last)/2;
			conta (A, first, half);
			conta (A, half+1, last);
			
			int i=0;
			
			while (i<A.length-1) {
				if (A[i]=='a' && A[i+1]=='b' && A[i+2]=='a') {
					n++;
					i++;
				}
			}
			
			//valuto il centro
			if (A[half-1]=='a' && A[half]=='b' && A[half+1]=='a')
				z++;
			else if (A[half]=='a' && A[half+1]=='b' && A[half+2]=='a')
				z++;
			
		}return n + m + z;
	}
	
	
	
	public static void main(String[] args) {
		char [] A = {'c', 'a', 'b', 'a', 'b'};
		conta(A, 0, A.length);
	}
}


E questa è la seconda:

Codice:
public class divideEtImpera {

	public static int conta (char []A) {
		
		int n = 0;
		int m = 0;
		int z = 0;
		
		if (A.length > 2) {	
			
			int half = A.length/2;
			char [] left = new char [half];
			char [] right = new char [A.length - half];
			divide(A, left, right);
			conta(left);
			conta(right);
			
			int i=0;
			
			while (i<left.length) {
				if (left[i]=='a' && left[i+1]=='b' && left[i+2]=='a') {
					n=conta(left) +1;
					i++;
				}
				else n=conta (left);
			}
			
			while (i<right.length) {
				if (right[i]=='a' && right[i+1]=='b' && right[i+2]=='a') {
					m=conta(right) +1;
					i++;
				}
				else m=conta(right);
			}
			
			if (A[half-1]=='a' && A[half]=='b' && A[half+1]=='a')
				z=conta(A) +1;
			else if (A[half]=='a' && A[half+1]=='b' && A[half+2]=='a')
				z=conta(A) +1;
			else z=conta(A);
			
		}return n + m + z;
		//else non fare nulla perchè gli elementi sono due
	}
	
	
	public static void divide (char []A, char []left, char []right) {
		int i;
		for (i=0; i<left.length; i++)
			left[i] = A[i];
		for (i=0; i<right.length; i++)
			right[i] = A[left.length +1];
	}
	
	
	public static void main(String[] args) {
		char [] A = {'a', 'c', 'b', 'a', 'b', 'a', 'c', 'a', 'b', 'a'};
		conta(A);
	}
}

Credo che la prima sia megliore della seconda ma sono comunque bloccato
perchè entrambe sembrano entrare in loop
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360

Ultima modifica di DoctorZ : 28-11-2007 alle 16:05.
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 15:54   #4
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
Ormai ci provano in tutti i modi per farsi fare i compitini
__________________
http://www.tevigroup.it/
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 16:03   #5
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
Quote:
Originariamente inviato da isAlreadyInUse
Ormai ci provano in tutti i modi per farsi fare i compitini
no non è un compitino

è semplicemente il vecchio esame che non ho superato a giugno
siccome nei prossimi appelli la solfa sarà più o meno la stessa, ovvero c'è l'esercizio sul metodo "divide et impera" sto cercando di capirci di più, svolgendo il testo del MIO VECCHIO ESAME NON SUPERATO.

non parlare a vanvera giusto per farti aumentare i mex
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 16:08   #6
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
E bravo!
Adesso torna ai tuoi compitini.
__________________
http://www.tevigroup.it/
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 16:16   #7
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
ma io sinceramente non ti capisco

ma almeno tu sai che cos'è un compitino?
come diavolo posso fare un compitino e postare qui sul forum????

non è un compitino il mio e sia chiaro!

Io a giugno ho sostenuto l'esame e non l'ho superato.
Nell'esame c'era questo esercizio e ora me lo sto svolgendo a casa e sto cercando di capirci qualcosa chiedendo qui sul forum perchè non trovo l'errore.

Poi se non vuoi aiutarmi pazienza, anche perchè dai tuoi post letti in giro mi sembra tu sia alle prime armi, ma non mi riguarda.

Ma questo che ti piaccia o no NON è un compitino e non potrebbe nemmeno esserlo.

Spero di essere stato chiaro.
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 16:24   #8
isAlreadyInUse
Senior Member
 
L'Avatar di isAlreadyInUse
 
Iscritto dal: Sep 2007
Messaggi: 754
Dai miei post letti in giro ti sembro alle prime armi?
E quali sarebbero di grazia?
__________________
http://www.tevigroup.it/
isAlreadyInUse è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 16:31   #9
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
Nessuno può darmi una mano con il mio esercizio?
E' come se entrasse in loop, anzi quasi certamente entra in loop perchè aprendo il task manager ho la CPU inchiodata al 100%

ma non credo la tecnica usata sia errata, solo c'è qualcosa che non va ma non riesco proprio capire in che punto
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 16:36   #10
Furla
Senior Member
 
Iscritto dal: Feb 2004
Messaggi: 1454
l'ultima "a" di una sequenza può essere contata come la prima di un'altra?
Furla è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 16:39   #11
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
Quote:
Originariamente inviato da Furla Guarda i messaggi
l'ultima "a" di una sequenza può essere contata come la prima di un'altra?
mmh.. nell'esercizio non è specificato, quindi suppongo di si.
Anzi, a rigor di logica sono quasi certo di si.
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 19:42   #12
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Ho dato solo uno sguardo veloce, nel primo mi sembra che la condizione del ciclo while viene mutata solo quando entri nell'if, credo sia quello il problema. Nel secondo ho visto che fai una cosa simile ma non so se è proprio lo stesso problema.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 19:57   #13
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
...la prima non sembra male...

...ti posto la mia soluzione...

Codice:
public static void abreyu(Stringhe[] arrayDiStringhe){

intero trovati = 0;

for(intero = 0;intero<arrayDiStringhe.lunghezza()-3;intero = intero + 1)
se(arrayDiStringhe[intero].èUguale("a") e arrayDiStringhe[intero+1].èUguale("b") e arrayDiStringhe[intero+2].èUguale("a"))
trovati = trovati+1;

}
...mh...sono le otto perdonate se ho scritto stupidaggini...

...ciao...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 22:51   #14
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
Quote:
Originariamente inviato da ally Guarda i messaggi
...la prima non sembra male...

...ti posto la mia soluzione...

Codice:
public static void abreyu(Stringhe[] arrayDiStringhe){

intero trovati = 0;

for(intero = 0;intero<arrayDiStringhe.lunghezza()-3;intero = intero + 1)
se(arrayDiStringhe[intero].èUguale("a") e arrayDiStringhe[intero+1].èUguale("b") e arrayDiStringhe[intero+2].èUguale("a"))
trovati = trovati+1;

}
...mh...sono le otto perdonate se ho scritto stupidaggini...

...ciao...
Ti ringrazio per il post Ally, ma non è divide et impera
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 22:52   #15
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Ho dato solo uno sguardo veloce, nel primo mi sembra che la condizione del ciclo while viene mutata solo quando entri nell'if, credo sia quello il problema. Nel secondo ho visto che fai una cosa simile ma non so se è proprio lo stesso problema.
mmh.. in che senso?
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 28-11-2007, 23:41   #16
wingman87
Senior Member
 
Iscritto dal: Nov 2005
Messaggi: 2787
Nel senso che se non entra nell'if va in un loop infinito.
wingman87 è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2007, 00:09   #17
k0nt3
Senior Member
 
Iscritto dal: Dec 2005
Messaggi: 7262
perchè non provi a usare il debugger?
k0nt3 è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2007, 08:24   #18
ally
Bannato
 
L'Avatar di ally
 
Iscritto dal: Jan 2003
Città:
Messaggi: 4423
Quote:
Originariamente inviato da DoctorZ Guarda i messaggi
Ti ringrazio per il post Ally, ma non è divide et impera
...cosa si intende per divide et impera?...

...ciao...
ally è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2007, 09:32   #19
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
Quote:
Originariamente inviato da wingman87 Guarda i messaggi
Nel senso che se non entra nell'if va in un loop infinito.
mmh, si ho capito cosa intendi.
Però, non capisco perchè debba andare in loop se non entra nell'IF.
Nel senso, se nell'IF non ci entra, il programma smette, interrompre, perchè non trova più istruzioni.

Cioè giusto per capire, dici di metterci un

[code]
...
...

else {
fai qualcos'altro..
}

...
...

se intendi questo, cosa potrei fargli fare? il programma deve interrompere in quel punto..

un return 0 ?
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
Old 29-11-2007, 09:32   #20
DoctorZ
Senior Member
 
L'Avatar di DoctorZ
 
Iscritto dal: Mar 2005
Città: Milano
Messaggi: 2130
Quote:
Originariamente inviato da k0nt3 Guarda i messaggi
perchè non provi a usare il debugger?
devo imparare ad utilizzarlo in Eclipse non ho mai provato
__________________
Intel Core2 QUAD Q9300 | Asus P5E X38 @Maximus Formula | 4 GB Geil Kit 2 x 2 GB PC2-6400 Black Dragon | Raid 0: 2 x Wd Raptor 74GB + 2 x 80GB USB Backup | Corsair 650TXEU | Pny Geforce 9800GTX | Pioneer DVR-212D Sata | Creative Inspire P580 5.1 | Logitech RX250 | Zalman CNPS7700-CU | Nexus 120x120x2.5 Silent | 2 x Papst 80x80 GLE Ultra Silent | Chieftec Dragon Series DX-01B-D-U | Tv Lcd Samsung 26'' LE26R72B + Cavo oro 24k G&BL | Asus WL-130N | Joypad Wi-Fi Microsoft X360
DoctorZ è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione HUAWEI Mate X7: un foldable ottimo, ma restano i soliti problemi Recensione HUAWEI Mate X7: un foldable ottimo, m...
Nioh 3: souls-like punitivo e Action RPG Nioh 3: souls-like punitivo e Action RPG
Test in super anteprima di Navimow i220 LiDAR: il robot tagliaerba per tutti Test in super anteprima di Navimow i220 LiDAR: i...
Dark Perk Ergo e Sym provati tra wireless, software via browser e peso ridotto Dark Perk Ergo e Sym provati tra wireless, softw...
DJI RS 5: stabilizzazione e tracking intelligente per ogni videomaker DJI RS 5: stabilizzazione e tracking intelligent...
I produttori non faranno sconti sulle me...
Ubisoft potrebbe cedere pezzi se il pian...
Qualcomm potrebbe utilizzare una tecnolo...
Starfield per Nintendo Switch 2 potrebbe...
Un MacBook Pro a -300€, i MacBook Air M4...
Amazon abbassa i prezzi sugli iPhone: sc...
Amazon, ancora sconti sugli smartphone A...
iPhone Air 2 'riciclerà' alcuni c...
Offerta Amazon da non perdere: lo speake...
Nioh 3 debutta alla grande su Steam: pri...
Al centro della Via Lattea ci potrebbe e...
Elon Musk ora guarda alla Luna: SpaceX p...
La Cina ha lanciato nuovamente lo spazio...
Blue Origin potrebbe realizzare il lande...
Artemis II: il prossimo Wet Dress Rehear...
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: 13:45.


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