Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo
Find X9 Ultra è lo smartphone che tanti aspettavano, e finalmente è arrivato anche in Italia. Abbiamo provato il flagship di OPPO per diverse settimane, e siamo volati fino in Cina alla sua presentazione ufficiale. Tutto gira intorno al suo incredibile comparto fotografico in collaborazione con Hasselblad e con un totale di sei fotocamere. Il resto è un mix di specifiche di altissimo livello, così come il prezzo. Vi raccontiamo tutto nella nostra recensione completa.
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet
Il nuovo Deebot X12 OmniCyclone abbina un sistema di raccolta dello sporco senza sacchetto, un rullo di lavaggio esteso e la tecnologia FocusJet per intervenire più efficacemente sulle macchie più persistenti. Un robot completo e preciso che aiuta a tenere puliti i pavimenti di casa con il minimo sforzo
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2: la pulizia di casa con un mocio a nastro
Narwal Flow 2 implementa un mocio a nastro che esegue una pulizia dettagliata del pavimento di casa, in abbinamento ad un potente motore di aspirazione della polvere: un prodotto ideale per gestire in autonomia e con grande efficacia le necessità di pulizia dei pavimenti di casa
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 12-12-2008, 23: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 00:19. Motivo: Errore. Come al solito almeno 1 negli esempi...
gugoXX è offline   Rispondi citando il messaggio o parte di esso
Old 12-12-2008, 23: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^ : 12-12-2008 alle 23:58.
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 00: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, 00:14   #4
G30
Senior Member
 
L'Avatar di G30
 
Iscritto dal: Jan 2007
Città: Martinsicuro (Te)
Messaggi: 4804
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, 00: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, 00: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, 12:10   #7
bio82
Senior Member
 
Iscritto dal: Dec 2007
Messaggi: 1568
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, 12: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, 12: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 13:35.
MasterDany è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 12: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, 13: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, 13: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, 13: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 14:21.
MasterDany è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 13: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, 14: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 14:43.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 14: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, 14: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 14:22.
..::DAVE::.. è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 14: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, 14: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, 14: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 14:36.
..::DAVE::.. è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Recensione OPPO Find X9 Ultra: è lui il cameraphone definitivo Recensione OPPO Find X9 Ultra: è lui il c...
Ecovacs Deebot X12 OmniCyclone: lava grazie a FocusJet Ecovacs Deebot X12 OmniCyclone: lava grazie a Fo...
Narwal Flow 2: la pulizia di casa con un mocio a nastro Narwal Flow 2: la pulizia di casa con un mocio a...
Tastiera gaming MSI GK600 TKL: switch hot-swap, display LCD e tre modalità wireless Tastiera gaming MSI GK600 TKL: switch hot-swap, ...
DJI Osmo Pocket 4: la gimbal camera tascabile cresce e ha nuovi controlli fisici DJI Osmo Pocket 4: la gimbal camera tascabile cr...
Il rover NASA Curiosity ha scoperto oltr...
Il satellite AST SpaceMobile BlueBird 7 ...
SpaceX: la droneship Just Read the Instr...
Project Helix sarà prodotta anche...
La NASA pubblica alcuni aggiornamenti su...
Tute spaziali AxEMU per Artemis: Axiom S...
Nutanix Government Cloud Clusters arriva...
Troy Baker lavora a un progetto tutto su...
Motorola Edge 60 Neo è il compatt...
Stretto di Hormuz, finti funzionari iran...
Dragon Ball Xenoverse 3 annunciato uffic...
WINDTRE BUSINESS potenzia i servizi IoT ...
OPPO rinnova l'ecosistema: arrivano Watc...
OPPO Find X9 Ultra ufficiale: debutta il...
Renault Twingo: esposta a Milano per far...
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: 02:15.


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