Torna indietro   Hardware Upgrade Forum > Software > Programmazione

Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere)
Quattro modi di indossarlo, stessa app del Plaud Note Pro e integrazione con il desktop. Il registratore IA da indossare di Plaud eccelle in mobilità, ma resta vincolato all'abbonamento ed è facile da perdere
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro
Xiaomi ha portato Redmi Watch 6 anche sul mercato italiano, puntando su un display AMOLED da 2,07 pollici con picco di luminosità a 2000 nit, frame in alluminio da 9,9mm e un'autonomia dichiarata di 12 giorni. Lo smartwatch gira su HyperOS 3 e integra GPS, Bluetooth 5.4 e oltre 150 sport mode. Il tutto a meno di 100 euro
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti
Con 22 tasti, il pulsante 5D, lo Shift Mode e il sensore PixArt 3395 da 26.000 DPI, il nuovo mouse wireless di Mad Catz si rivolge in modo preciso ai giocatori di MMO e RPG. Ma chi conosce già il R.A.T. 8+ ADV si accorgerà subito di quanto i due prodotti condividano, e di dove invece divergono
Tutti gli articoli Tutte le news

Vai al Forum
Rispondi
 
Strumenti
Old 13-12-2008, 15:12   #21
MasterDany
Senior Member
 
L'Avatar di MasterDany
 
Iscritto dal: Dec 2007
Messaggi: 505
Allora volevo partire dalla creazione del palindromo ragiono cosi:

Quote:
Prendi un numero, inverti le sue cifre e somma il numero che ottieni a quello iniziale. Se il risultato non è un numero palindromo, ripeti il procedimento.
Codice:
87 + 78 = 165 165 + 561 = 726 726 + 627 = 1353 1353 + 3531 = 4884
Ora vorrei implementare.Conoscete qualche funzione che inverte i numeri?
__________________
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, 15:18   #22
..::DAVE::..
Senior Member
 
L'Avatar di ..::DAVE::..
 
Iscritto dal: Nov 2006
Città: Mantova
Messaggi: 468
Quote:
Originariamente inviato da MasterDany Guarda i messaggi
Allora volevo partire dalla creazione del palindromo ragiono cosi:



Codice:
87 + 78 = 165 165 + 561 = 726 726 + 627 = 1353 1353 + 3531 = 4884
Ora vorrei implementare.Conoscete qualche funzione che inverte i numeri?
il numero che dovresti trovare da 87 è 88... non 4884
..::DAVE::.. è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:20   #23
MasterDany
Senior Member
 
L'Avatar di MasterDany
 
Iscritto dal: Dec 2007
Messaggi: 505
Quote:
Originariamente inviato da ..::DAVE::.. Guarda i messaggi
il numero che dovresti trovare da 87 è 88... non 4884
Sono un principiante quindi prima volevo provare a cercare un semplice polindromo

Però devo trovare qualcosa in python che converta 87 in 78
__________________
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, 15:21   #24
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
Chiedi nella discussione relativa a Python
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:22   #25
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
Versione senza l'uso di stringhe:
Codice:
int getLength(int n)
{
    int divisor = 10;
    int length = 1;
    while(divisor < n)
    {
        length++;
        divisor *= 10;
    }

    return length;
}

int mirrorInt(int n, int length)
{
    int divisor, multiplier;
    divisor = multiplier = (int)pow(10, length / 2);

    n = (n / divisor) * divisor;

    if(length % 2 == 0)
    {
        divisor /= 10;
    }

    do
    {
        divisor *= 10;
        multiplier /= 10;
        n  += ((n / divisor) % 10) * multiplier;
    }
    while(multiplier > 1);

    return n;
}


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

    int length = getLength(n);

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

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

    n += (int)pow(10, length - middle - 1);

    return mirrorInt(n, getLength(n));
}
Ora la ottimizzo

Ultima modifica di cionci : 13-12-2008 alle 16:00.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:46   #26
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci Guarda i messaggi
Versione senza l'uso di stringhe:

[...]
Oddio, hai fatto qualcosa di molto simile a ciò che sto facendo io!

L'algoritmo sembra (incredibilmente) funzionare, il tempo di implementare la lettura del file e poi posto il codice.
__________________

C'ho certi cazzi Mafa' che manco tu che sei pratica li hai visti mai!

Ultima modifica di DanieleC88 : 13-12-2008 alle 15:50.
DanieleC88 è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 15:57   #27
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Pare funzionare bene ed anche velocemente:
Codice:
def numLength(n):
	length = 0
	while (n != 0):
		n /= 10
		length += 1
	return length

def odd(n):
	return (n & 1) != 0

def palindromize(n):
	l = numLength(n)
	n /= 10**(l/2)

	tmp = n
	if odd(l):
		tmp /= 10

	while (tmp != 0):
		c = tmp % 10
		tmp /= 10

		n *= 10
		n += c
	return n

def nextPalindrome(n):
	p = palindromize(n)
	if (p >= n):
		return p

	l = numLength(n)

	distance = 0
	if (l != 1): distance += 10
	if (l != 3): distance += 10**(l-2)

	return (p + distance)

def main():
	name = raw_input("Inserisci il nome del file: ")

	f = open(name)
	for line in f:
		n = int(line)
		print n, "->", nextPalindrome(n)

if __name__ == "__main__":
	main()
L'algoritmo sembra essere molto molto simile a quest'ultimo di cionci in effetti, l'abbiamo fatto in contemporanea.
__________________

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:59   #28
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
Versione ottimizzata, da notare come alla fine va a ricalcare la prima versione con le stringhe
Codice:
#define POWER_VECTOR_SIZE 10

int getLength(int n, int powerVector[])
{
    int length = 1;
    while(++length <= POWER_VECTOR_SIZE)
    {
        if(powerVector[length] > n)
            return length;
    }

    return POWER_VECTOR_SIZE;
}

int mirrorInt(int n, int length, int powerVector[])
{
    n = (n / powerVector[length / 2]) * powerVector[length / 2];

    int i = 0;
    int j = length - 1;

    while(i < j)
    {
        n += ((n / powerVector[j--]) % 10) * powerVector[i++];
    }
    return n;
}


int findNextPalindrome(int n)
{
    static int powerVector[] = {1, 10, 100, 1000, 10000, 100000, 1000000,
                        10000000, 100000000, 1000000000 };

    if(n < 10)
    {
        return n;
    }

    int length = getLength(n, powerVector);

    int mirrored = mirrorInt(n, length, powerVector);
    if(mirrored > n)
    {
        return mirrored;
    }

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

    n += (int)pow(10, length - middle - 1);

    return mirrorInt(n, getLength(n, powerVector), powerVector);
}
E' circa il doppio più veloce di quella con le stringhe e più veloce della precedente del 70% circa.
Edit: aggiunto lo static al vettore ed il rapporto è salito rispettivamente a 6 e 5 volte più veloce

Ultima modifica di cionci : 13-12-2008 alle 16:06.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 16:06   #29
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci Guarda i messaggi
Codice:
    int middle = length / 2;
    if(length % 2 == 0)
    {
        middle--;
    }

    n += (int)pow(10, length - middle - 1);

    return mirrorInt(n, getLength(n, powerVector), powerVector);
}
Questa parte la puoi ottimizzare ancora, in particolare ti puoi evitare una seconda chiamata a mirrorInt().
__________________

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, 16:09   #30
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 DanieleC88 Guarda i messaggi
Questa parte la puoi ottimizzare ancora, in particolare ti puoi evitare una seconda chiamata a mirrorInt().
Non mi sembra che si possa, come fai a farlo ?
Se il numero è 1999999 o anche 999999 è impossibile evitare di fare nuovamente la copia.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 16:23   #31
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
C'era rimasta una piccola incoerenza dovuta al copia ed incolla:
Codice:
#define POWER_VECTOR_SIZE 10

int getLength(int n, int powerVector[])
{
    int length = 1;
    while(++length <= POWER_VECTOR_SIZE)
    {
        if(powerVector[length] > n)
            return length;
    }

    return POWER_VECTOR_SIZE;
}

int mirrorInt(int n, int length, int powerVector[])
{
    n = (n / powerVector[length / 2]) * powerVector[length / 2];

    int i = 0;
    int j = length - 1;

    while(i < j)
    {
        n += ((n / powerVector[j--]) % 10) * powerVector[i++];
    }
    return n;
}


int findNextPalindrome3(int n)
{
    static int powerVector[] = {1, 10, 100, 1000, 10000, 100000, 1000000,
                        10000000, 100000000, 1000000000 };

    if(n < 10)
    {
        return n;
    }

    int length = getLength(n, powerVector);

    int mirrored = mirrorInt(n, length, powerVector);
    if(mirrored > n)
    {
        return mirrored;
    }

    n += powerVector[length / 2];

    return mirrorInt(n, getLength(n, powerVector), powerVector);
}
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 16:31   #32
DanieleC88
Senior Member
 
L'Avatar di DanieleC88
 
Iscritto dal: Jun 2002
Città: Dublin
Messaggi: 5989
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non mi sembra che si possa, come fai a farlo ?
Se il numero è 1999999 o anche 999999 è impossibile evitare di fare nuovamente la copia.
Cavoli, hai ragione, con i numeri "agli estremi" il mio metodo non funziona correttamente. Peccato!
__________________

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, 16:53   #33
bio82
Senior Member
 
Iscritto dal: Dec 2007
Messaggi: 1580
Quote:
Originariamente inviato da cionci Guarda i messaggi
E' circa il doppio più veloce di quella con le stringhe e più veloce della precedente del 70% circa.
Edit: aggiunto lo static al vettore ed il rapporto è salito rispettivamente a 6 e 5 volte più veloce
quanto + veloce? per la versione da 1k numeri...

intanto posto la mia soluzione..manca ancora 1 punto che ho scopiazzato dal web, ma lo metterò apposto....



Codice:
Public Class Form1

    Public Function ReverseString(ByVal stringToReverse As String) As String
        If stringToReverse.Length > 0 Then
            Dim arr As Byte() = System.Text.UTF8Encoding.UTF8.GetBytes(stringToReverse)
            Array.Reverse(arr)
            Return System.Text.UTF8Encoding.UTF8.GetString(arr)
        Else
            Return ""
        End If
    End Function

    Function palindromo(ByVal numero As String)
        Dim risultato As String
        Dim dimensione As Integer = numero.Length
        If dimensione Mod 2 = 0 Then
            'se lunghezza diviso 2 = 0
            Dim dimensionea = dimensione / 2
            Dim parte1 As String = numero.Substring(0, dimensionea)

            If numero.Substring(dimensionea - 1, 1) < numero.Substring(dimensionea, 1) Then
                parte1 = (Int(parte1) + 1).ToString
            Else
                Dim conta = 1
                Do
                    If numero.Substring(dimensionea - conta, 1) < numero.Substring(dimensionea + conta - 1, 1) Then
                        parte1 = (Int(parte1) + 1).ToString
                        Exit Do
                    ElseIf numero.Substring(dimensionea - conta, 1) > numero.Substring(dimensionea + conta - 1, 1) Then
                        Exit Do
                    ElseIf dimensionea - conta = 0 Then
                        parte1 = (Int(parte1) + 1).ToString
                        Exit Do
                    End If
                    conta = conta + 1
                Loop
            End If

            Dim parte2 As String = ReverseString(parte1)
            risultato = parte1 & parte2
        Else
            'se lunghezza diviso 2 != 0
            Dim dimensionea = Int(dimensione / 2)

            Dim parte1 As String = numero.Substring(0, dimensionea)
            Dim partecentrale As String = numero.Substring(dimensionea, 1)

            If partecentrale < numero.Substring(dimensionea + 1, 1) Then
                partecentrale = (Int(partecentrale) + 1).ToString
            Else
                Dim conta = 1
                Do
                    If numero.Substring(dimensionea - conta, 1) < numero.Substring(dimensionea + conta, 1) Then
                        partecentrale = (Int(partecentrale) + 1).ToString
                        Exit Do
                    ElseIf numero.Substring(dimensionea - conta, 1) > numero.Substring(dimensionea + conta, 1) Then
                        Exit Do
                    ElseIf dimensionea - conta = 0 Then
                        partecentrale = (Int(partecentrale) + 1).ToString
                        Exit Do
                    End If

                    conta = conta + 1
                Loop
            End If
            Dim parte2 As String = ReverseString(parte1)
            risultato = parte1 & partecentrale & parte2
        End If
        Return risultato
    End Function

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim watch As New System.Diagnostics.Stopwatch()
        Dim risultato As String = ""
        Dim numero As String
        watch.Start()
        Using sr As New System.IO.StreamReader("E:\scambio\progetti_vb\contest10\file1.dat")
            Do
                numero = sr.ReadLine()
                If (numero) = "" Then Exit Do

                risultato = risultato & palindromo(numero) & vbCrLf
            Loop
            sr.Close()
        End Using
        watch.Stop()
        text_tempo.Text = watch.ElapsedMilliseconds & " ms"
        text_risultati.Text = risultato
    End Sub
End Class
16 ms per la versione da 1k numeri, mi pare 7 per la versione breve..

unico appunto, tratta i numeri già palindromi (come 808 nel file1.dat) andando al successivo (risultato 818, come richiesto implicitamente :P )...

ultima nota, c'è anche il tempo di lettura del file nel timer...

bio

Ultima modifica di bio82 : 13-12-2008 alle 16:55.
bio82 è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 16:56   #34
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 bio82 Guarda i messaggi
quanto + veloce? per la versione da 1k numeri...
Non ho provato con i dati perché ci mettevo troppo poco.
Con 1 milione di numeri con la massima lunghezza (10 cifre) ci mette circa 98 ms.

Ora provo con il file dei dati, ma dipende troppo dall'hardware e dal compilatore
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 17:00   #35
bio82
Senior Member
 
Iscritto dal: Dec 2007
Messaggi: 1580
Quote:
Originariamente inviato da cionci Guarda i messaggi
Non ho provato con i dati perché ci mettevo troppo poco.
Con 1 milione di numeri con la massima lunghezza (10 cifre) ci mette circa 98 ms.

Ora provo con il file dei dati, ma dipende troppo dall'hardware e dal compilatore
fa niente... era per chiedere...umiliare del mio codicillo non serve

(1 milione : 98ms = 1 k : X)

ho paura

bio
bio82 è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 17:13   #36
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, ho visto ora che Gugo ha utilizzato numeri interi più grandi di maxint nel secondo file dei dati, non ci avevo fatto caso, credevo che si operasse esclusivamente sul limite massim degli interi. A questo punto bisogna operare necessariamente sulle stringhe.

Gugo: magari la prossima volta dillo nel testo
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 17:48   #37
sottovento
Senior Member
 
L'Avatar di sottovento
 
Iscritto dal: Nov 2005
Città: Texas
Messaggi: 1722
0.6 millisecondi per numeri da un milione di cifre (ovviamente se non ho calcolato male e se non ho fatto ERORI):

Dimenticavo: Buona Santa Lucia ai bimbi buoni! (vabbe', e' arrivata anche ai miei bimbi, che e' tutto dire...)

Codice:
#include <stdio.h>
#include <time.h>

bool palindromiseString(char *strNumber, bool performCheck);
void increaseMiddle(char *strNumber);


void palindromise (char *strNumber)
{
    if (!palindromiseString(strNumber, true))
    {
        increaseMiddle(strNumber);
        palindromiseString(strNumber, false);
    }
}

bool palindromiseString(char *strNumber, bool performCheck)
{
    int i = 0;
    int j = (int)strlen(strNumber) - 1;
    if (performCheck)
    {
        while(i < j)
        {
            if (strNumber[j] > strNumber[i])
                return false;
            strNumber[j--] = strNumber[i++];
        }
        return true;
    }
    else
    {
        while(i < j)
            strNumber[j--] = strNumber[i++];
        return true;
    }
}

void increaseMiddle(char *strNumber)
{
    int length = (int)strlen(strNumber);
    bool isEven = ((length % 2) == 0);
    int index;
    if (isEven)
       index = (length / 2) - 1;
    else
       index = (length / 2);

    while (index >= 0)
    {
        int val = strNumber[index] - '0';
        val++;
        if (val <= 9)
        {
            strNumber[index]++;
            return;
        }
        strNumber[index] = '0' + index - 10;
        index--;
    }
}
__________________
In God we trust; all others bring data

Ultima modifica di sottovento : 13-12-2008 alle 17:55.
sottovento è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 18:08   #38
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
Questo lavora sulle stringhe e quindi può superare i limiti degli interi.
Tempo sul file con 1000 numeri: 4 ms.
Codice:
#include <stdlib.h>
#include <stdio.h>
#include <string.h>


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

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

int canMirror(char *s)
{
    int i = strlen(s) / 2;
    int j = strlen(s) - i - 1;

    while(j >= 0)
    {
        if(s[i++] > s[j--])
        {
            return 0;
        }
    }

    return 1;
}

void addOneToMiddle(char *s)
{
    unsigned int i = strlen(s) / 2 + strlen(s) % 2 - 1;
    if(s[i] != '9')
    {
        s[i]++;
        return;
    }

    while(s[i]++ == '9')
    {
        s[i] = '0';
        if(i-- == 0)
            return;
    }
}


void findNextPalindrome(char *s)
{
    if(strlen(s) < 2)
    {
        return;
    }

    if(canMirror(s))
    {
        mirrorString(s);
        return;
    }

    addOneToMiddle(s);

    mirrorString(s);
}

int main(int argc, char** argv)
{
    FILE * f = fopen(argv[1], "rt");

    if(!f)
        return -1;

    char number[300];

    while(1)
    {
        fscanf(f, "%s", number);

        if(feof(f))
            break;

        findNextPalindrome(number);
        printf("%s\n", number);
    }

	return 0;
}

Ultima modifica di cionci : 13-12-2008 alle 18:18.
cionci è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 18:18   #39
^TiGeRShArK^
Senior Member
 
L'Avatar di ^TiGeRShArK^
 
Iscritto dal: Jul 2002
Città: Reggio Calabria -> London
Messaggi: 12112
ecco il mio in python:
Codice:
from __future__ import with_statement
import time


numbers = []
with open('../Downloads/Contest10/File2.dat') as f:
    for number in f:
        number = number.rstrip()
        numbers.append(number)
t0 = time.time()
for number in numbers:        
    halfIndex = len(number) / 2
    if len(number) % 2 == 0:
        halfIndex = len(number) / 2 - 1
    palyndrome = list(number)
    length = len(palyndrome)
    i = halfIndex
    needUpdate = False
    while i >= 0 and palyndrome[length -i -1] == palyndrome[i]:
        needUpdate = True
        i = i -1
    if needUpdate:
        palyndrome[halfIndex] = str(int(number[halfIndex]) + 1)
    if palyndrome[halfIndex + 1] > palyndrome[halfIndex]:
        palyndrome[halfIndex] = str(int(number[halfIndex]) + 1)
    for i in range(halfIndex, -1, -1):
        palyndrome[length -i -1] = palyndrome[i]

print 'Elapsed time:', time.time() - t0
tempo impiegato sul file grande:
Elapsed time: 0.00887298583984

non male tenendo conto della lentezza di python

P.S. cionci il file da 1 milione di numeri che hai usato si può avere così lo provo anch'io?
__________________
^TiGeRShArK^ è offline   Rispondi citando il messaggio o parte di esso
Old 13-12-2008, 18:19   #40
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
Codice:
    for(int i = 0; i < 1000000; i++)
    {
        char s[300];
        sprintf(s, "%d", rand());
        findNextPalindrome(s);
        printf("%s\n", s);
    }
Chiamando la ricerca in questo modo e redirigendo l'output su null o su file: 337 ms
cionci è offline   Rispondi citando il messaggio o parte di esso
 Rispondi


Plaud NotePin S, il registratore IA si fa indossabile (ma è facile da perdere) Plaud NotePin S, il registratore IA si fa indoss...
Redmi Watch 6 in prova: lo smartwatch con ampio display da 2000 nit a meno di 100 euro Redmi Watch 6 in prova: lo smartwatch con ampio ...
Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ADV, ma con molti più pulsanti Mad Catz M.M.O. 7+: lo stesso DNA del R.A.T. 8+ ...
Radeon RX 9070 GRE, AMD la porta in tutto il mondo | Recensione Gigabyte Gaming OC Radeon RX 9070 GRE, AMD la porta in tutto il mon...
Reolink OMVI 3i WiFi: videosorveglianza più intelligente e facile da usare Reolink OMVI 3i WiFi: videosorveglianza pi&ugrav...
Hanger 13 annuncia Uomo d'Onore: espansi...
La battaglia delle HBM4 entra nel vivo: ...
Dopo 12 anni torna Alien: Isolation. Ecc...
ADATA Trusta ridurrà i costi di i...
SpaceX fornirà 110.000 GPU NVIDIA...
Hyundai IONIQ 6 N-Line, prova in antepri...
Sospesi i lavori di riparazione delle pe...
Formula V vi farà cambiare l'airf...
Netflix usa l'IA generativa per battere ...
Quando l'AI costruisce sé stessa:...
Meno ventole, più raffreddamento:...
Adidas Trionda: come funziona la tecnolo...
Withings BodyFit, la bilancia che va ben...
QNAP annuncia QuTS hero h6.0: il sistema...
ColorOS 17 con Android 17: la lista dei ...
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: 08:21.


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