Project Euler

...του ubuntu και έργων ΕΛ/ΛΑΚ (Έργα-Οδηγοί-Προτάσεις)

Συντονιστής: konnn

Project Euler

Δημοσίευσηαπό UnKnown96 » 21 Ιούλ 2011, 16:15

EDIT: Βάλτε τα προβλήματα σας και εσείς εδώ!

Έχω αυτό το πρόβλημα:
http://projecteuler.net/index.php?section=problems&id=1

Εδώ είναι η δικιά μου λύση:
Κώδικας: Επιλογή όλων

#include <stdio.h>

int main (void)
{
int a, b = 0, c, d = 0;

for (a = 0; a < 1000; a++) {
if (a % 3 == 0) b += a; }

for (c = 0; c < 1000; c++) {
if (c % 5 == 0) d += c; }

printf ("%d\n", b + d);

return 0;
}


Σωστή;;;
Τελευταία επεξεργασία από UnKnown96 και 23 Ιούλ 2011, 14:46, έχει επεξεργασθεί 1 φορά/ες συνολικά
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό pmav99 » 21 Ιούλ 2011, 16:21

Το τρέχεις και αφού κάνεις login, βάζεις την απάντηση στη φόρμα που έχει στη σελίδα του προβλήματος και βλέπεις. Αν είναι σωστή θα σε αφήσει να πας στο επόμενο πρόβλημα.

Επίσης βάλε τη λύση μέσα σε spoiler γιατί μπορεί κάποιος να μη θέλει να τη δει πριν προσπαθήσει μόνος του.
pmav99
seniorTUX
seniorTUX
 
Δημοσιεύσεις: 574
Εγγραφή: 05 Ιούλ 2008, 14:29
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό Ilias95 » 21 Ιούλ 2011, 16:48

Μπορείς να πας σε οποιοδήποτε πρόβλημα θες χωρίς να έχεις λύσει τα προηγούμενα.
Καλό είναι να γραφτείς όπως είπε ο pmav ώστε να ελέγχεις τις απαντήσεις σου, να αποθηκεύονται αυτόματα οι επιδόσεις σου και να έχεις πρόσβαση σε διάφορα ενδιαφέροντα στατιστικά.

Να και μια σύντομη δική μου λύση σε python:
Spoiler: show
Κώδικας: Επιλογή όλων
def multiple_3or5(n):
assert n > 0, 'Πρέπει να είναι μεγαλύτερος από 0.'
return True if not n % 3 or not n % 5 else False
sum = 0
for number in range(1, 1000):
if multiple_3or5(number):
sum += number
print(sum)
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό UnKnown96 » 21 Ιούλ 2011, 16:58

Παιδιά το να εγγραφώ δεν βοηθάει σε τίποτα.
Εγώ απλώς θέλω να ξέρω αν έγγραψα σωστά τον κώδικα σε C.
Από ότι βλέπω το αποτέλεσμα μου βγένει λάθως, γιατί;
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό Ilias95 » 21 Ιούλ 2011, 17:16

UnKnown96 έγραψε:Παιδιά το να εγγραφώ δεν βοηθάει σε τίποτα.
Εγώ απλώς θέλω να ξέρω αν έγγραψα σωστά τον κώδικα σε C.
Από ότι βλέπω το αποτέλεσμα μου βγένει λάθως, γιατί;


Αν κάνεις εγγραφή θα μπορείς να ελέγχεις το αποτέλεσμα σου!
Οπότε θα ξέρεις αν είναι σωστή η λύση σου.
Αν είναι λάθος δοκίμασε να βρεις που είναι το λάθος και να το διορθώσεις. Μην καταφεύγεις γρήγορα στις λύσεις...
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό UnKnown96 » 21 Ιούλ 2011, 18:03

Ilias95, ζητάω από εδώ την λύση διότι θα μου δώσουν και τον κώδικα και θα μου εξιγήσουν που έκανα λάθος και γιατί είναι λάθος...
Εκεί πέρα θα δω ένα ξερό αποτέλεσμα, σε τι θα είναι χρήσιμο; Αφού μόνος μου δεν βρήσκω άλλη λύση;
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό Ilias95 » 21 Ιούλ 2011, 18:17

UnKnown96 έγραψε:Ilias95, ζητάω από εδώ την λύση διότι θα μου δώσουν και τον κώδικα και θα μου εξιγήσουν που έκανα λάθος και γιατί είναι λάθος...
Εκεί πέρα θα δω ένα ξερό αποτέλεσμα, σε τι θα είναι χρήσιμο; Αφού μόνος μου δεν βρήσκω άλλη λύση;


Δεν διαφώνησα σε κάτι.
Απλά είπα ότι είναι καλό να προσπαθήσεις πρώτα και να επιμείνεις.
Μπορεί τώρα να μην την βρίσκεις, αλλά να την βρεις αύριο! Είναι καλύτερο απ' το να ψάξεις κατευθείαν για απάντηση αν κάτι είναι λάθος.
Παρ' όλα αυτά μπορείς να βρεις και να μελετήσεις, διάφορες λύσεις σε πολλές γλώσσες, για τα διάφορα προβλήματα του project Euler από το google.

Edit: Για που λες ότι θα δεις ένα ξερό αποτέλεσμα;
Αν δώσεις την απάντηση σου μέσα στην σελίδα δεν θα σου δώσει το αποτέλεσμα. Θα σου πει μόνο αν είναι σωστό ή όχι.
Ilias95
saintTUX
saintTUX
 
Δημοσιεύσεις: 1548
Εγγραφή: 29 Απρ 2011, 23:26
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό migf1 » 21 Ιούλ 2011, 19:58

Κι εδώ ο κώδικας σε C...

Κώδικας: Επιλογή όλων

#include <stdio.h>
int main( void )
{
int n, sum=0;
for (n=1; n < 1000; n++)
if (n % 3 == 0 || n % 5 == 0)
sum += n;
printf ("%d\n", sum);
return 0;
}

Το πρόβλημα στον κώδικά σου φίλε Uknown είναι πως διπλο-αθροίζεις όσους αριθμούς είναι πολλαπλάσιοι και του 3 και του 5, επειδή χρησιμοποιείς 2 ξεχωριστά loops με 2 ξεχωριστά υπο-αθροίσματα.
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Re: Πρόβλημα 1 - Project Euler

Δημοσίευσηαπό UnKnown96 » 21 Ιούλ 2011, 22:26

MigF1, άψογος όπως πάντα :)
Ευχαριστώ!
Άβαταρ μέλους
UnKnown96
dudeTUX
dudeTUX
 
Δημοσιεύσεις: 370
Εγγραφή: 08 Ιουν 2010, 15:23
Τοποθεσία: Ρόδος
Εκτύπωση

Re: Πρόβλημα 5 - Project Euler

Δημοσίευσηαπό migf1 » 22 Ιούλ 2011, 19:16

UnKnown96 έγραψε:MigF1, άψογος όπως πάντα :)
Ευχαριστώ!

Τίποτα βρε συ :)

Η λύση μου στο Project Euler - Problem #5 (σε C)
Project Euler, Problem #5 έγραψε:
2520 is the smallest number that can be divided by each of the numbers from 1 to 10 without any remainder.

What is the smallest positive number that is evenly divisible by all of the numbers from 1 to 20?


Νορμάλ λύση:
Spoiler: show
Κώδικας: Επιλογή όλων

#include <stdio.h>
int divisible_byrange(unsigned long int num, int low, int high)
{
int broken = 0; // boolean false
register int i;
for (i=low; !broken && i < high+1; i++)
broken = (num % i) != 0;
return broken;
}

int main( void )
{
unsigned long int num = 0;
for ( num=1; divisible_byrange(num, 1, 10); num++)
;
printf("%ld\n", num);
return 0;
}

Παπατζίδικη λύση :lol:
Spoiler: show
Κώδικας: Επιλογή όλων

#include <stdio.h>
int main( void )
{
register int i, broken = 0; // boolean false
unsigned long int num = 0;

for ( num=1; !broken; num++) {
for (i=1; !(broken=(num % i) != 0) && i < 20; i++)
;
broken = !broken;
}
printf("%ld\n", --num);
return 0;
}

Τελευταία επεξεργασία από migf1 και 23 Ιούλ 2011, 13:22, έχει επεξεργασθεί 1 φορά/ες συνολικά
Go under the hood with C: Pointers, Strings, Linked Lists
Άβαταρ μέλους
migf1
powerTUX
powerTUX
 
Δημοσιεύσεις: 2082
Εγγραφή: 03 Ιουν 2011, 16:32
Εκτύπωση

Επόμενο

Επιστροφή στο Ανάπτυξη Λογισμικού / Αλγόριθμοι