Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi
Con la prima rete 5G Standalone attiva in Italia, WINDTRE compie un passo decisivo verso un modello di connettività intelligente che abilita scenari avanzati per imprese e pubbliche amministrazioni, trasformando la rete da infrastruttura a piattaforma per servizi a valore aggiunto
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh
OPPO Find X9 Pro punta a diventare uno dei riferimenti assoluti nel segmento dei camera phone di fascia alta. Con un teleobiettivo Hasselblad da 200 MP, una batteria al silicio-carbonio da 7500 mAh e un display da 6,78 pollici con cornici ultra ridotte, il nuovo flagship non teme confronti con la concorrenza, e non solo nel comparto fotografico mobile. La dotazione tecnica include il processore MediaTek Dimensity 9500, certificazione IP69 e un sistema di ricarica rapida a 80W
DJI Romo, il robot aspirapolvere tutto trasparente
DJI Romo, il robot aspirapolvere tutto trasparente
Anche DJI entra nel panorama delle aziende che propongono una soluzione per la pulizia di casa, facendo leva sulla propria esperienza legata alla mappatura degli ambienti e all'evitamento di ostacoli maturata nel mondo dei droni. Romo è un robot preciso ed efficace, dal design decisamente originale e unico ma che richiede per questo un costo d'acquisto molto elevato
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-12-2008, 00:07   #1
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
[vari] Contest 10: Numeri palindormi (Semplice)

Poiche' mi e' stato chiesto di provare a mettere in gioco anche i non esperti, propongo questo contest per i piu' JUNIOR

Sta al singolo decidere se si sente parte degli Junior oppure no (Junior in senso di skill. Potrebbe anche essere 90anni...)

Problema:
Sia dato un elenco di numeri.
Per ciascuno dei numeri letti, stampare il numero palindromo piu' piccolo che sia pero' maggiore del numero dato.
Palindromo significa che, date le cifre in base decimale, il numero si puo' leggere allo stesso modo sia leggendolo da sinistra a destra, sia leggendolo da destra a sinistra

Es:
Se si avesse come input i numeri
Codice:
119
115434
576
1024
Si dovrebbe restituire come risultato
Codice:
121
115511
585
1111
2 File per l'esercizio, il primo semplice, il secondo piu' difficile
http://www.usaupload.net/d/mnp0jyk2kt8

Posto qui di seguito anche il Codice C# per generare i file di prova, per eventuali futuri utilizzi
Codice:
class Program
{
    static void Main(string[] args)
    {
        Generator.Generate(@"C:\temp\File1.dat", 1000, 7);
        Generator.Generate(@"C:\temp\File2.dat", 100, 30);           
    }
}

public static class Generator
{
    static Random rnd = new Random(155452);

    public static void Generate(string FileName,int nValori,int nCifre)
    {
        nCifre -= 3;
        StreamWriter sw = new StreamWriter(FileName);
        for (int t = 0; t < nValori; t++)
        {
            int rndcif = 3+rnd.Next(nCifre);
            bool first = true;
            for (int u = 0; u < rndcif; u++)
            {
                int cifra;
                if (first) cifra = rnd.Next(9) + 1;
                else cifra = rnd.Next(10);
                first = false;
                sw.Write(cifra);
            }
            sw.WriteLine();
        }
        sw.Close();
    }
}
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.

Ultima modifica di gugoXX : 13-12-2008 alle 01:19. Motivo: Errore. Come al solito almeno 1 negli esempi...
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 00:56   #2
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
palindormi?
mi sa che è ora che tu vada a letto in effetti

P.S. comunque il contest potrebbe anche essere carino per i senior, anche se mi sa che ad occhio la soluzione + efficiente non è poi così difficile da trovare
__________________

Ultima modifica di ^TiGeRShArK^ : 13-12-2008 alle 00:58.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 01:12   #3
fero86
Senior Member
 
Iscritto dal: Oct 2006
Città: Roma
Messaggi: 1383
ma il palindromo immediatamente successivo a 115434 non dovrebbe essere 115511? nel primo post c'é scritto 116611
fero86 è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 01:14   #4
G30
Senior Member
 
L'Avatar di G30
 
Iscritto dal: Jan 2007
Città: Martinsicuro (Te)
Messaggi: 4803
Quote:
Originariamente inviato da fero86 Guarda i messaggi
ma il palindromo immediatamente successivo a 115434 non dovrebbe essere 115511? nel primo post c'é scritto 116611
Esatto
__________________
Trattative ok con piu' di 100 utenti, cercate tra i miei messaggi! EVITATE VALERIAA
G30 è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 01:17   #5
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da fero86 Guarda i messaggi
ma il palindromo immediatamente successivo a 115434 non dovrebbe essere 115511? nel primo post c'é scritto 116611
Sisi',errore mio. Correggo.
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 01:22   #6
gugoXX
Senior Member
 
L'Avatar di gugoXX
 
Iscritto dal: May 2004
Città: Londra (Torino)
Messaggi: 3692
Quote:
Originariamente inviato da ^TiGeRShArK^ Guarda i messaggi
palindormi?
mi sa che è ora che tu vada a letto in effetti
Si, meglio che vada va...
__________________
Se pensi che il tuo codice sia troppo complesso da capire senza commenti, e' segno che molto probabilmente il tuo codice e' semplicemente mal scritto.
E se pensi di avere bisogno di un nuovo commento, significa che ti manca almeno un test.
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 13:10   #7
bio82
Senior Member
 
Iscritto dal: Dec 2007
Messaggi: 1501
Quote:
Originariamente inviato da gugoXX Guarda i messaggi
Si, meglio che vada va...
primo

ho trovato il metodo, ma sbaglia quando iniziano ad esserci numeri uguali fra la parte destra e sinistra del numero...

quindi mancano alcune righe che completo stasera quando torno...per ora sto a



(millesimi) con il file + grande...

bio
bio82 è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 13:42   #8
ndakota
Senior Member
 
L'Avatar di ndakota
 
Iscritto dal: Oct 2006
Città: milano
Messaggi: 1439
ma li trattereste come interi o come stringhe?? nel secondo caso sarebbe molto più semplice ma non so se più veloce..
ndakota è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 13:56   #9
MasterDany
Senior Member
 
L'Avatar di MasterDany
 
Iscritto dal: Dec 2007
Messaggi: 505
edit
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG
Non ricordo niente ma non lo dimenticherò mai

Ultima modifica di MasterDany : 13-12-2008 alle 14:35.
MasterDany è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 13:59   #10
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da ndakota Guarda i messaggi
ma li trattereste come interi o come stringhe?? nel secondo caso sarebbe molto più semplice ma non so se più veloce..
Come stringa direi.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 14:08   #11
MasterDany
Senior Member
 
L'Avatar di MasterDany
 
Iscritto dal: Dec 2007
Messaggi: 505
Qualche consiglio??
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG
Non ricordo niente ma non lo dimenticherò mai
MasterDany è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 14:24   #12
VICIUS
Senior Member
 
L'Avatar di VICIUS
 
Iscritto dal: Oct 2001
Messaggi: 11471
Se il numero da cercare è già palindromo come ci si deve comportare? Possiamo ritornare direttamente il numero oppure dobbiamo cercare il palindromo successivo?

Implementazione banale:
Codice:
def search_nearest_palindrome(n)
  n+=1 until n.to_s == n.to_s.reverse
  n
end

File.open('File1.txt', 'r') do |file|
  while line = file.gets
    puts line.chop + " -> " + search_nearest_palindrome(line.to_i).to_s
  end
end
200 millisecondi per il primo file mentre con il secondo è ovviamente impraticabile a causa di quei numeri a molte cifre.

Sempre per il primo file mi stavo chiedo se mettendo tutti i palindromi formati da 1 fino a 7 cifre e poi usando una ricerca di qualche tipo in quella lista si potrebbero velocizzare di molto le ricerche. Anche se probabilmente alla fine la generazione dell'array a runtime renderebbe lo sforzo inutile.

Peccato che il trucchetto di capovolgi e somma non funzioni in questo caso
VICIUS è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 14:42   #13
MasterDany
Senior Member
 
L'Avatar di MasterDany
 
Iscritto dal: Dec 2007
Messaggi: 505
edit.
__________________
Giochi:Fallout 3,Civilitation IV,Call of Duty-World at War,Far Cry 2,Crysis,Age of Empires III. BLOG
Non ricordo niente ma non lo dimenticherò mai

Ultima modifica di MasterDany : 13-12-2008 alle 15:21.
MasterDany è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 14:51   #14
..::DAVE::..
Senior Member
 
L'Avatar di ..::DAVE::..
 
Iscritto dal: Nov 2006
Città: Mantova
Messaggi: 468
ho un problemuccio... ho finito... ma non riesco a calcolare il tempo... cioè con start=clock() all'inizio ed end=clock() alla fine mi da lo stesso numero... strano...
nel frattempo posto il codice?
..::DAVE::.. è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:01   #15
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Ve gusta ?

Codice:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>
#include <math.h>

int mirrorInt(char *s)
{
    int i = 0;
    int j = strlen(s) - 1;

    while(i < j)
    {
        s[j--] = s[i++];
    }
    return atoi(s);
}

int findNextPalindrom(int n)
{
    if(n < 10)
    {
        return n;
    }

    char s[11];
    sprintf(s, "%d", n);

    int mirrored = mirrorInt(s);
    if(mirrored > n)
    {
        return mirrored;
    }

    int length = strlen(s);
    int middle = lenght / 2;
    if(length % 2 == 0)
    {
        middle--;
    }

    sprintf(s, "%d", n + (int)pow(10, length - middle - 1));

    return mirrorInt(s);
}

Ultima modifica di cionci : 13-12-2008 alle 15:43.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:01   #16
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Quote:
Originariamente inviato da ..::DAVE::.. Guarda i messaggi
ho un problemuccio... ho finito... ma non riesco a calcolare il tempo... cioè con start=clock() all'inizio ed end=clock() alla fine mi da lo stesso numero... strano...
nel frattempo posto il codice?
Non è strano se ci mette meno di un secondo
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:16   #17
..::DAVE::..
Senior Member
 
L'Avatar di ..::DAVE::..
 
Iscritto dal: Nov 2006
Città: Mantova
Messaggi: 468
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non è strano se ci mette meno di un secondo
e come faccio a calcolarlo se ci impiega meno di un secondo ?

un po' lungo...

Codice:
#include <time.h>
#include <fstream>
#include <iostream>
#include <string>

using namespace std;

string strOut(string stringa);

int main()
{
time_t start,end;
ifstream fin("File2.dat");
ofstream fout("Output.txt");
double tempo;
start=clock();

string numero;
char temp[100];

	while(!fin.eof())
	{
		fin.getline(temp,99);
		numero=temp;
		fout<<strOut(numero)<<endl;
	}

end=clock();
tempo=((double)(end-start))/CLOCKS_PER_SEC;
fin.close();
fout.close();
cout<<tempo<<" "<<start<<" "<<end<<" "<<CLOCKS_PER_SEC<<endl;
cin.get();
}

string strOut(string stringa)
{
	int lung=stringa.length();
	bool maggiore=false;

	for(int i=0; i<=(lung/2); i++)
	{
		if(i==(lung-i-2))
		{
			if(stringa[i]>stringa[lung-1-i])
				stringa[lung-1-i]=stringa[i];
			else
			{
				if(stringa[i]<stringa[lung-1-i])
					stringa[i]=stringa[lung-1-i];
				else
					if(maggiore)
					{
						int j=i;

						while(stringa[j]=='9')
							j++;

						stringa[j]+=1;
						stringa[lung-1-j]+=1;
					}
			}
		}
		else
		{
			if(i==(lung-i-1))
			{	
				if(maggiore)
					if(stringa[i]<'9')
						stringa[i]+=1;
					else
					{
						int j=i;
						while(stringa[j]=='9')
							j++;

						stringa[j]+=1;
						stringa[2*i-j]+=1;
					}

			}
			else
			{
				if(stringa[lung-1-i]>=stringa[i])
					maggiore=true;
				else
					maggiore=false;

				stringa[lung-1-i]=stringa[i];
			}
		}
	}

	return stringa;
}

Ultima modifica di ..::DAVE::.. : 13-12-2008 alle 15:22.
..::DAVE::.. è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:25   #18
cionci
Senior Member
 
L'Avatar di cionci
 
Iscritto dal: Apr 2000
Città: Vicino a Montecatini(Pistoia) Moto:Kawasaki Ninja ZX-9R Scudetti: 29
Messaggi: 53971
Aspe...usi già clock, avevo confuso con time, allora dovrebbe andare, strano. Visivamente quanto ci mette ?
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:29   #19
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci Guarda i messaggi
Ve gusta ?

[...]
Forte!

Io avevo pensato ad un calcolo puramente matematico, ma è troppo "umano" (via codice dovrei estrarre le varie cifre ogni volta).
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:32   #20
..::DAVE::..
Senior Member
 
L'Avatar di ..::DAVE::..
 
Iscritto dal: Nov 2006
Città: Mantova
Messaggi: 468
Quote:
Originariamente inviato da cionci Guarda i messaggi
Aspe...usi già clock, avevo confuso con time, allora dovrebbe andare, strano. Visivamente quanto ci mette ?
appena si apre la console mi appare il risultato... moolto meno di un secondo
in compenso copiando 50 volte i numeri del file 2 (quello da 100) come tempo mi da 0.078 che diviso 50 da 0,00156

Ultima modifica di ..::DAVE::.. : 13-12-2008 alle 15:36.
..::DAVE::.. è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Wind Tre 'accende' il 5G Standalone in Italia: si apre una nuova era basata sui servizi Wind Tre 'accende' il 5G Standalone in Italia: s...
OPPO Find X9 Pro: il camera phone con teleobiettivo da 200MP e batteria da 7500 mAh OPPO Find X9 Pro: il camera phone con teleobiett...
DJI Romo, il robot aspirapolvere tutto trasparente DJI Romo, il robot aspirapolvere tutto trasparen...
DJI Osmo Nano: la piccola fotocamera alla prova sul campo DJI Osmo Nano: la piccola fotocamera alla prova ...
FUJIFILM X-T30 III, la nuova mirrorless compatta FUJIFILM X-T30 III, la nuova mirrorless compatta
Addio console: Just Dance Now trasforma ...
Driver Radeon Adrenalin 25.10: perch&egr...
Oltre le GPU: NVIDIA annuncia NVQLink, ...
Samsung lancia il Team Galaxy Italia per...
Magic Leap: indistinguibili dai normali ...
Aruba Cloud: trasparenza sui costi e str...
Quando il cloud si blocca e resti al fre...
Integrare per competere, la sfida digita...
Leggenda del rally e modernità: S...
La Python Software Foundation rinuncia a...
Full HD e QLED, è in offerta un TV da 32...
Honda ha rilasciato un nuovo video sul p...
Resident Evil Requiem: arriva su Switch ...
Marshall Acton III in promo su Amazon in...
2 portatili che costano poco ma vanno be...
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: 06:29.


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