Newsgroup: it.lavoro.informatica
Titolo: Fwd: Re: How do I speed up this code? 8SOLUZIONE PER DIDATTICA BAMBOCCI)

 ~~~
 
While I have posted COBOL to Rosetta Code, this is not a task
for which I would post code. Nonetheless, in an effort to
understand the task and find potential problems with your code,
I proceeded to write a solution using standard COBOL 85.
 
-----
        identification division.
        program-id. euler.
        data division.
        working-storage section.
        1 binary.
         2 sum-of-4 pic 9(18).
         2 x0 pic 9(4).
         2 x1 pic 9(4).
         2 x2 pic 9(4).
         2 x3 pic 9(4).
         2 y pic 9(4).
         2 i pic 9(4).
        1 binary.
         2 t-able occurs 250 ascending t indexed by t-idx.
          3 t pic 9(18).
        1 end-time.
         2 end-hh pic 99.
         2 end-mm pic 99.
         2 end-ss pic 99v99.
        1 start-time.
         2 start-hh pic 99.
         2 start-mm pic 99.
         2 start-ss pic 99v99.
        1 elapsed-time.
         2 elapsed-ss pic zzz9.99.
        procedure division.
        begin.
            accept start-time from time
            perform varying i from 1 by 1
            until i > 250
                compute t (i) = i ** 5
            end-perform
            perform varying x0 from 1 by 1
            until x0 > 250
            add 1 x0 giving x1
            perform varying x1 from x1 by 1
            until x1 > 250
            add 1 x1 giving x2
            perform varying x2 from x2 by 1
            until x2 > 250
            add 1 x2 giving x3
            perform varying x3 from x3 by 1
            until x3 > 250
                compute sum-of-4 =
                    t (x0) + t (x1) + t (x2) + t (x3)
                if sum-of-4 > t (250)
                    continue
                else
                    search all t-able
                    when t (t-idx) = sum-of-4
                        set y to t-idx
                        perform display-result
                    end-search
                end-if
            end-perform
            end-perform
            end-perform
            end-perform
            accept end-time from time
            perform compute-elapsed
            stop run
            .
 
        display-result.
            display x0 space x1 space x2 space x3 space y
            .
 
        compute-elapsed.
            compute elapsed-ss =
                ((end-hh * 3600) + (end-mm * 60) + end-ss)
              - ((start-hh * 3600) + (start-mm * 60) + start-ss)
            display elapsed-ss space "sec"
            .
        end program euler.
-----
Output:
 
0027 0084 0110 0133 0144
   84.09 sec
-----
 
When I replaced binary with non-standard comp-5
 
        replace ==binary== by ==comp-5==.
 
the output was:
 
00027 00084 00110 00133 00144
   20.65 sec
-----
 
Feel free to work from this code, if you like.


 
Come mai sai fare solo copia incolla di soluzioni altrui?
Facci vedere quanto sei bravo tu a ottimizzare il codice
degli altri. O hai forse paura di far l'ennesima figura
di merda da vecchio ignorantone bavoso?
 
 
 
 
 


se mi paghi lo faccio, o da bravo comunista schiavizzatore vuoi che ti 
faccia il lavoro AGGRATIS
 
-- 
Ripristinare il trattato di Vienna è imperativo!
W IL LOMBARDO-VENETO.
W LA LIBERTA'.
ONORE E GLORIA A S.M. CARLO D'ASBURGO-LORENA!!!

 Come mai sai fare solo copia incolla di soluzioni altrui?
 
E` uno scemo. Si limita a lurkare su comp.lang.cobol e riportare spezzoni di roba che neanche capisce.
 


 
Come al solito non hai capito un cazzo: devi farlo come evidenza
del fatto che sei competente in materia e che hai i requisiti per
poter valutare e giudicare. Fino ad allora rimarrai un patetico
ignorante che ha bisogno di socializzare e può farlo solo dietro
un monitor.
In quanto al comunista, hai pestato una bella merda, dimostrando una
volta in più che il tuo livello intellettivo è pari a quello di una
pisciata di gallina.
 
 
 

On Friday, 16 September 2016 13:22:02 UTC+1, Ally  wrote:
 
[...]
Che poi, bastano 5 minuti per riscrivere quel programmino banale in C, con una banale ricerca dicotomica neanche troppo ottimizzata, per ottenere prestazioni assolutamente migliori rispetto al suo amato COBOL:
 
#include <stdio.h>
#include <stdlib.h>
#include <time.h>
 
typedef struct {
    long long value;
    long long index;
} value_t;
 
int compare(const void *a, const void *b) {
    long long va = ((value_t*)a)->value;
    long long vb = ((value_t*)b)->value;
    return va > vb ? 1 : va < vb ? -1 : 0;
}
 
int main()
{
    value_t t[250];
    long long i, x0, x1, x2, x3, sumOf4;
 
    for (i=1; i<=250; i++) {
        t[i-1].value = i * i * i * i * i;
        t[i-1].index = i-1;
    }
 
    for (x0=1; x0<=250; x0++) {
        for (x1=x0+1; x1<=250; x1++) {
            for (x2=x1+1; x2<=250; x2++) {
                for (x3=x2+1; x3<=250; x3++) {
                    sumOf4 = t[x0-1].value + t[x1-1].value + t[x2-1].value + t[x3-1].value;
                    if (sumOf4 > t[249].value) {
                        continue;
                    } else {
                        value_t *p = bsearch(&sumOf4, t, 250, sizeof(value_t), compare);
                        if (p != NULL) {
                            printf("%I64d %I64d %I64d %I64d %I64d\n", x0, x1, x2, x3, p->index+1);
                            break;
                        }
                    }
                }
            }
        }
    }
    return 0;
}
 
Risultato: 
 
27 84 110 133 144
 
Process returned 0 (0x0)   execution time : 10.013 s


le galline non pisciano, fanno solo cacca


 livello intellettivo è pari a quello di unapisciata di gallina.
Non c'e' male, trattandosi che se le galline pisciassero, il livello 
intellettivo delle loro pisciate sarebbe davvero basso, se putacaso le 
galline, come la maggior parte degli uccelli, non avessero un organo 
dedicato alla minzione, allora stiamo parlando del livello intellettivo 
del nulla.
L'analogia e' abbastanza esemplificativa, direi,
:-)


sei in errore  LUI NON SAPEVA che le galline non pisciano



 
...è una ragazza di città
