Σελ. 1 από 2 12 ΤελευταίαΤελευταία
Εμφάνιση 1-15 από 16
  1. #1
    Εγγραφή
    04-07-2012
    Ηλικία
    37
    Μηνύματα
    6
    Downloads
    0
    Uploads
    0
    ISP
    Cyta Hellas
    Γεια σας θα ηθελα αν μπορει καποιος να με βοηθησει να λυσω ενα προβλημα για να φτιαξω ενα προγραμμα με αριθμους

    π.χ εχω 57 αριθμους ας πουμε απο το 1 εως το 57 θελω το προγραμμα να προσθετει ανα 6 αριθμους παντα παντα σε 6 αδες με ενα υπολογισμο που εκανα πιστευω ειναι σωστος, τα πιθανα αθροισματα που βγαινουν ειναι =15.762.598.695.796.736

    να πω ενα π.δ εχουμε σα πρωτο αθροισμα

    τους αριθμους:1+2+3+4+5+6=το αθροισμα του 21

    το επομενο 1+2+3+4+5+7=22 και παει λεγοντας ωστε να βρεθουν ολα τα αθροισματα απο το 1-57 παντα σε 6 αδες.
    θελω να γραφω το αθροισμα που ζηταω και να μου λεει ποιες 6 αδες κανουν αυτο το αθροισμα πχ ενα αριθμο 2000 ποιες 6 αδες απο τα τοσα εκατομυρια κανουν αυτο το αθροισμα

    αν μπορει καπιος να με βοηθησει πως μπορω να φτιαξω κατι τετοιο
    οι αριθμοι που ζηταω ειναι που θα προσθετονται ειναι αυτοι που θα μπουν για τ αθροισματα συνολο 57
    30
    56
    75
    105
    111
    116
    141
    146
    315
    371
    381
    386
    390
    411
    416
    426
    431
    440
    441
    470
    474
    653
    701
    709
    726
    755
    762
    789
    806
    811
    818
    834
    836
    837
    841
    873
    878
    1064
    1093
    1121
    1126
    1127
    1148
    1173
    1190
    1202
    1220
    1236
    1464
    1505
    1568
    1573
    1770
    1800
    1952
    2085
    2532


    ΕΥΧΑΡΙΣΤΩ ΠΡΟΚΑΤΑΒΟΛΙΚΟς ΟΠΟΙΟΣ ΜΕ ΒΟΗΘΗΣΕΙ!!!

  2. #2
    Εγγραφή
    01-04-2007
    Ηλικία
    37
    Μηνύματα
    841
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    11.438 / 1.018
    ISP
    Wind
    DSLAM
    Wind - ΤΟΥΜΠΑ
    Τα θες σε κάποια συγκεκριμένη γλώσσα προγραμματισμού αυτά; Οι περισσότερες γλώσσες έχουν σχετικές συναρτήσεις που υπολογίζουν αυτό που θες με μία κλήση.

    Είναι μήπως άσκηση στα πλαίσια κάποιου μαθήματος; Αν ναι, ίσως να μην επιτρέπεται να τις χρησιμοποιήσεις.

    Αυτό θες πάντως.

  3. #3
    Εγγραφή
    04-07-2012
    Ηλικία
    37
    Μηνύματα
    6
    Downloads
    0
    Uploads
    0
    ISP
    Cyta Hellas
    εχω εγκαταστησει στον υπολογηστη μου Python 2.7 αλλα αν σου ειναι ευκολο και σε αλλη γλωσσα την εγκαταστω. σε αυτο που μου εστειλες δεν καταλαβαινω και πολλα

  4. #4
    Εγγραφή
    01-04-2007
    Ηλικία
    37
    Μηνύματα
    841
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    11.438 / 1.018
    ISP
    Wind
    DSLAM
    Wind - ΤΟΥΜΠΑ
    Παράθεση Αρχικό μήνυμα από malamatenia1 Εμφάνιση μηνυμάτων
    εχω εγκαταστησει στον υπολογηστη μου Python 2.7 αλλα αν σου ειναι ευκολο και σε αλλη γλωσσα την εγκαταστω.
    Η python είναι τέλεια γι'αυτό.

    Έχεις καθόλου εμπειρία με τη γλώσσα; Κοίτα τη βιβλιοθήκη itertools.

    Παράθεση Αρχικό μήνυμα από malamatenia1 Εμφάνιση μηνυμάτων
    σε αυτο που μου εστειλες δεν καταλαβαινω και πολλα
    Η σελίδα στη wikipedia περιγράφει απλά τα μαθηματικά πίσω από τα combinations.

  5. #5
    Εγγραφή
    04-07-2012
    Ηλικία
    37
    Μηνύματα
    6
    Downloads
    0
    Uploads
    0
    ISP
    Cyta Hellas
    παρα πολυ λιγο σχεδον καθολου

    - - - Updated - - -

    την βιβλιοθηκη την κοιταξα το μονο που καταφερνω να κανω προσθεση αφαιρεση και διαιρεση αν μπορεις σε παρακαλω να μου γραψεις το κωδικα που χρειαζεται να γραψω στην Python

  6. #6
    Εγγραφή
    01-04-2007
    Ηλικία
    37
    Μηνύματα
    841
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    11.438 / 1.018
    ISP
    Wind
    DSLAM
    Wind - ΤΟΥΜΠΑ
    Δες τη συνάρτηση combinations που έχει και παραδείγματα χρήσης. Αν θες να βρεις ποιες εξάδες έχουν τα αθροίσματα που αναφέρεις στο κατεβατό του αρχικού σου μηνύματος, το παρακάτω σου κάνει:

    Κώδικας:
    import itertools
    combs = itertools.combinations(numbers, size)
    results = [cset for cset in combs if sum(cset) in sums]
    Όπου sums το σύνολο με τα αθροίσματα, numbers το σύνολο των αριθμών από τις οποίες θα προκύψουν οι ομάδες και size το μέγεθος της κάθε ομάδας αριθμών (το 6 που έδωσες στο αρχικό σου παράδειγμα).

  7. #7
    Εγγραφή
    04-07-2012
    Ηλικία
    37
    Μηνύματα
    6
    Downloads
    0
    Uploads
    0
    ISP
    Cyta Hellas
    μηπως θα μπορουσες να γινεις ποιο διαφωτιστικος?ο αριθμος 11712 που επελεξα που δεν τον ειχα Βαλει πριν ειναι αν προσθεσης τους 6 τελευταιους μεγαλυτερους βγαινει αυτο το αθροισμα

    καπως ετσι το γραφω αλλα δεν βγαζω ακρη.
    def NM2():
    import itertools
    combs = itertools.combinations(30, 56, 75 , 105, 111, 116, 141, 146, 315, 371, 381, 386, 390, 411, 416, 426, 431, 440, 441, 470, 474, 653, 701, 709, 726, 755, 762, 789, 806, 811, 818, 834, 836, 837, 841, 873, 878, 1064, 1093, 1121, 1126, 1127, 1148, 1173, 1190, 1202, 1220, 1236, 1464, 1505, 1568, 1573, 1770, 1800, 1952, 2085, 2532)
    results = [cset for cset in combs if sum(cset) in 11712]


    [/QUOTE]
    Τελευταία επεξεργασία από το μέλος malamatenia1 : 05-07-12 στις 14:38.

  8. #8
    Εγγραφή
    01-04-2007
    Ηλικία
    37
    Μηνύματα
    841
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    11.438 / 1.018
    ISP
    Wind
    DSLAM
    Wind - ΤΟΥΜΠΑ
    Παράθεση Αρχικό μήνυμα από malamatenia1 Εμφάνιση μηνυμάτων
    μηπως θα μπορουσες να γινεις ποιο διαφωτιστικος?ο αριθμος 11712 που επελεξα που δεν τον ειχα Βαλει πριν ειναι αν προσθεσης τους 6 τελευταιους μεγαλυτερους βγαινει αυτο το αθροισμα

    καπως ετσι το γραφω αλλα δεν βγαζω ακρη.
    def NM2():
    import itertools
    combs = itertools.combinations(30, 56, 75 , 105, 111, 116, 141, 146, 315, 371, 381, 386, 390, 411, 416, 426, 431, 440, 441, 470, 474, 653, 701, 709, 726, 755, 762, 789, 806, 811, 818, 834, 836, 837, 841, 873, 878, 1064, 1093, 1121, 1126, 1127, 1148, 1173, 1190, 1202, 1220, 1236, 1464, 1505, 1568, 1573, 1770, 1800, 1952, 2085, 2532)
    results = [cset for cset in combs if sum(cset) in 11712]
    Καλείς λάθος την συνάρτηση combinations. Πρέπει να της δώσεις δύο ορίσματα. Το πρώτο είναι το σύνολο των αριθμών και το δεύτερο το πλήθος των αριθμών σε κάθε ομάδα για την οποία θα υπολογίζεις το άθροισμα.

    Γράψε το κάπως έτσι:
    Κώδικας:
    def NM2():
        import itertools
        numbers = [30, 56, 75, 105, 111, 116, 141, 146, 315, 371, 381, 386, 390, 411, 416, 426, 431, 440, 441, 470, 474, 653, 701, 709, 726, 755, 762, 789, 806, 811, 818, 834, 836, 837, 841, 873, 878, 1064, 1093, 1121, 1126, 1127, 1148, 1173, 1190, 1202, 1220, 1236, 1464, 1505, 1568, 1573, 1770, 1800, 1952, 2085, 2532]
        combs = itertools.combinations(numbers, 6)
        results = [cset for cset in combs if sum(cset) == 11712]
    To if sum(cset) in sums το έβαλα γιατί νόμιζα ότι πρέπει να κρατάς ομάδες αριθμών για διάφορα αθροίσματα. Αν έχεις μόνο ένα, τότε αρκεί να χρησιμοποιήσεις το == (δηλαδή sum(cset) == 11712) ή να το γράψεις ως sum(cset) in [11712]

    Για να καταλάβεις, διάβασε τι είναι οι λίστες στην python!

    EDIT: Μην ξεχάσεις να επιστρέψεις κάτι στη συνάρτηση με return.
    Τελευταία επεξεργασία από το μέλος guardianhelm : 05-07-12 στις 15:07.

  9. #9
    Εγγραφή
    04-07-2012
    Ηλικία
    37
    Μηνύματα
    6
    Downloads
    0
    Uploads
    0
    ISP
    Cyta Hellas
    Σε ευχαριστω για το ενδιαφερον σου εισαι πολυ καλος!

    το εγραψα ετσι ωπος μου γραφεις αλλα και παλι δεν βγαζω ακρη. σου ειπα ειναι οτι δεν ειμαι και τοσο καλη στην γλωσσα γνωριζο παρα πολυ λιγα.

    αυτο που ζηταω ειναι αυτοι η αριθμοι συνολο 57 που εχω βαλει να βρω ενα τροπο να προσθετη το προγραμμα παντα ανα 6 αδες να βρει ολα τα αθροισματα τους
    ενα παραδειγμα να σου δωσο να καταλαβεις ειναι αυτο

    θελω να επιλεγω ενα τυχαιο αριθμο πχ 11712 και να κανει αναζητηση το προγραμμα απο αυτους τους αριθμους που εχω επιλεξει τους 57, σε 6 αδες η αριθμηση, ποιες 6 αδες κανουν αθροισμα αυτον τον αριθμο?
    για τον αριθμο 11712 αν το επελεγα τωρα η μονη 6 αδα που θα μου εβγαζε το προγραμμα ειναι αυτη 1573+
    1770+1800+1952+2085+2532=11712 καμια αλλη 6 αδα δεν θα υπαρχει διοτι αν αλλαξει ο ενας αριθμος απο την 6 αδα σιγουρα το αποτελεσμα θα ειναι μικροτερο. το μεγαλυτερο σε αθροισμα ειναιι το 11712 και το μικροτερο το 493 που αποτελειται απο τους αριθμους 30+56+75+105+111+116=493

    θελω να επιλεγω εναν τυχαιο αριθμο απο το 493 εως το 11712 μεσα σε αυτα τα ορια και να μου λεει ποιες 6 αδες κανουν το αθροισμα σε αυτον το αριθμο που εχω επιλεξει
    σε παρακαλω κανε κατι βρες μου των κωδικα ολοκληρωμενο να τον αντιγραψω θα σου ειμαι υποχρεη

  10. #10
    Εγγραφή
    01-04-2007
    Ηλικία
    37
    Μηνύματα
    841
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    11.438 / 1.018
    ISP
    Wind
    DSLAM
    Wind - ΤΟΥΜΠΑ
    Αν δεν θες το 11712 να είναι σταθερό, αντικατάστησέ το με μια μεταβλητή την οποία θα δίνεις σαν όρισμα στη συνάρτηση, ως εξής:

    Κώδικας:
    def NM2(number):
        import itertools
        numbers = [30, 56, 75, 105, 111, 116, 141, 146, 315, 371, 381, 386, 390, 411, 416, 426, 431, 440, 441, 470, 474, 653, 701, 709, 726, 755, 762, 789, 806, 811, 818, 834, 836, 837, 841, 873, 878, 1064, 1093, 1121, 1126, 1127, 1148, 1173, 1190, 1202, 1220, 1236, 1464, 1505, 1568, 1573, 1770, 1800, 1952, 2085, 2532]
        combs = itertools.combinations(numbers, 6)
        return [cset for cset in combs if sum(cset) == number]
    Κανονικά μάλλον δεν θα έπρεπε να σε βοηθήσω τόσο πολύ. Δεν με πειράζει ο χρόνος που ξόδεψα, εξάλλου δεν είναι κάτι το δύσκολο/χρονοβόρο. Ελπίζω όμως να μην είναι εργασία για κάποιο μάθημα...

  11. #11
    Εγγραφή
    04-07-2012
    Ηλικία
    37
    Μηνύματα
    6
    Downloads
    0
    Uploads
    0
    ISP
    Cyta Hellas
    εισαι και ο τελειος προγραμματιστης σε ευχαριστω παρα παρα πολυ για την βοηθεια σου..

    τα ξανα λεμε
    φιλια πολλα!!!!!

  12. #12
    Εγγραφή
    07-07-2008
    Μηνύματα
    296
    Downloads
    12
    Uploads
    0
    Αυτός είναι ένας απλός τρόπος, αλλά δεν είναι και πολύ γρήγορος χωρίς να χρησιμοποιήσεις κάποια ιδιαίτερη συνάρτηση...
    Είναι γραμμένο σε c++ αλλά δεν είναι δύσκολο αν θες να το μετατρέψεις και σε python αρκεί να ξέρεις το for...

    Κώδικας:
    #include<iostream>
    
    using namespace std;
    
    int main(){
    
    	int list[58] = {30,56,75,105,111,116,141,146,315,371,381,386,390,411,416,426,431,
    				    440,441,470,474,653,701,709,726,755,762,789,806,811,818,834,836,
    					837,841,873,878,1064,1093,1121,1126,1127,1148,1173,1190,1202,1220,
    					1236,1464,1505,1568,1573,1770,1800,1952,2085,2532};
    
    	int sum;
    	int number;
    	long double count=0;
    	int compin=0;
    
    	cout << "insert number : ";
    	cin  >> number;
    	
    	for(int i1=0;i1<57;i1++){
    		cout <<"Please wait...Till now "<< count <<" compinations have been checked\n\n";
    		for(int i2=0;i2<57;i2++){
    			for(int i3=0;i3<57;i3++){
    				for(int i4=0;i4<57;i4++){
    					for(int i5=0;i5<57;i5++){
    						for(int i6=0;i6<57;i6++){
    			
    							sum = list[i1] + list[i2] + list[i3] + list[i4] + list[i5] + list[i6];
    
    							if(sum==number){
    								cout <<list[i1] <<" + " <<list[i2] <<" + " <<list[i3] <<" + " <<list[i4] <<" + " <<list[i5]  <<" + " <<list[i6]<<" = " << sum << endl;
    								compin++;
    							}
    
    							count++;
    						}
    					}
    				}
    			}
    		}
    	}
    
    	
    
    	system("PAUSE");
    	return 0;
    }

  13. #13
    Εγγραφή
    30-05-2006
    Ηλικία
    39
    Μηνύματα
    149
    Downloads
    0
    Uploads
    0
    DSLAM
    ΟΤΕ - ΠΕΤΡΟΥΠΟΛΗ
    Παράθεση Αρχικό μήνυμα από malamatenia1 Εμφάνιση μηνυμάτων
    σε παρακαλω κανε κατι βρες μου των κωδικα ολοκληρωμενο να τον αντιγραψω θα σου ειμαι υποχρεη


    Παράθεση Αρχικό μήνυμα από guardianhelm Εμφάνιση μηνυμάτων
    Ελπίζω όμως να μην είναι εργασία για κάποιο μάθημα...
    Όχι, είναι χόμπυ για το καλοκαίρι!

    Το πρόβλημα λέγεται subset sum. Είναι NP-complete. Οι λύσεις που έχουν προταθεί είναι σωστές αλλά πρακτικά ανεφάρμοστες. Ο καθηγητής/καθηγήτρια σίγουρα ζητάει κάτι άλλο.

  14. #14
    Εγγραφή
    24-01-2012
    Μηνύματα
    76
    Downloads
    0
    Uploads
    0
    ISP
    ttt
    Από μαθηματικής άποψης αν έχεις ένα σύνολο διαφορετικών αριθμών π.χ. (2,5,8,9,12, 15 ,17,20)
    και θες να μάθεις πόσα υποσύνολα (όχι μόνο μήκους 6) έχουν άθροισμα π.χ. 16 :

    η απάντηση είναι στο συντελεστή του x^16 του πολυωνύμου:
    (1+x^2)(1+x^5)(1+x^8)(1+x^9) ... το οποίο μπορεί να υπολογιστεί με μολύβι και χαρτί για λίγους αριθμούς,

    η με λίγες γραμμές κώδικα
    Κώδικας:
    long[] ways = new long[maxSum + 1];
    ways[0] = 1;
    foreach(var number in set)
       for(int j = ways.Length - 1; j >= 0; j--)
           if(ways[j] > 0)
               ways[j + number] += ways[j];

    Τώρα για εξάδες ... κάτι παρόμοιο
    Τελευταία επεξεργασία από το μέλος AlbNik : 06-07-12 στις 12:00.

  15. #15
    Εγγραφή
    01-04-2007
    Ηλικία
    37
    Μηνύματα
    841
    Downloads
    0
    Uploads
    0
    Τύπος
    ADSL2+
    Ταχύτητα
    11.438 / 1.018
    ISP
    Wind
    DSLAM
    Wind - ΤΟΥΜΠΑ
    Παράθεση Αρχικό μήνυμα από prekageo Εμφάνιση μηνυμάτων
    Όχι, είναι χόμπυ για το καλοκαίρι!
    Βασικά εκείνη την ώρα δεν μου φάνηκε πολύ πιθανό, για κάποιο λόγο θεώρησα αρκετό το ότι δεν ξέρω σχολές στην ελλάδα που να διδάσκουν python ή/και καθηγητή που να δίνει τέτοιο περιθώριο σχετικά με το ποια γλώσσα προγραμματισμού να χρησιμοποιήσεις. Έχεις δίκιο όμως.

    Παράθεση Αρχικό μήνυμα από prekageo Εμφάνιση μηνυμάτων
    Το πρόβλημα λέγεται subset sum. Είναι NP-complete. Οι λύσεις που έχουν προταθεί είναι σωστές αλλά πρακτικά ανεφάρμοστες. Ο καθηγητής/καθηγήτρια σίγουρα ζητάει κάτι άλλο.
    Γιατί να ζητάει κάτι άλλο; Το ότι το πρόβλημα είναι NP-Complete δημιουργεί προβλήματα όσο αυξάνεται το μέγεθος της εισόδου. Εφόσον μιλάμε για μικρή/σταθερή είσοδο (57 αριθμούς), ο υπολογισμός θα τρέχει σε λογικό και παρόμοιο χρόνο πάνω κάτω (το έτρεξα κιόλας). Φυσικά με λίγο παραπάνω αριθμούς -πχ ακόμα και με 70- είναι πολύ πιθανό να μην τερματίζει σύντομα.

Σελ. 1 από 2 12 ΤελευταίαΤελευταία

Παρόμοια Θέματα

  1. Κατασκευη προγραμματος με κοινη db που τρεχει σε 2 pc;;
    Από lionKingMan στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 16
    Τελευταίο Μήνυμα: 01-03-12, 21:38
  2. Λιγη βοήθεια για κατασκευή σελίδας.
    Από nkoumo στο φόρουμ Web authoring, development & web design
    Μηνύματα: 5
    Τελευταίο Μήνυμα: 10-02-12, 10:34
  3. κατασκευη ιστοσελιδας βοηθεια
    Από DAYINA στο φόρουμ Web authoring, development & web design
    Μηνύματα: 7
    Τελευταίο Μήνυμα: 07-07-09, 12:16
  4. ΒΟΗΘΕΙΑ !!! ΜΕ ΤΗΝ ΚΑΤΑΣΚΕΥΗ ΙΣΤΟΣΕΛΙΔΑΣ
    Από A.V.VHANIA στο φόρουμ Web authoring, development & web design
    Μηνύματα: 6
    Τελευταίο Μήνυμα: 01-02-09, 00:03
  5. Βοήθεια για κατασκευή ιστοσελίδας
    Από Gregory στο φόρουμ Προγραμματισμός και γλώσσες προγραμματισμού
    Μηνύματα: 17
    Τελευταίο Μήνυμα: 20-04-07, 16:02

Bookmarks

Bookmarks

Δικαιώματα - Επιλογές

  • Δεν μπορείτε να δημοσιεύσετε νέα θέματα
  • Δεν μπορείτε να δημοσιεύσετε νέα μηνύματα
  • Δεν μπορείτε να αναρτήσετε συνημμένα
  • Δεν μπορείτε να επεξεργαστείτε τα μηνύματα σας
  •  
  • Τα BB code είναι σε λειτουργία
  • Τα Smilies είναι σε λειτουργία
  • Το [IMG] είναι σε λειτουργία
  • Το [VIDEO] είναι σε λειτουργία
  • Το HTML είναι εκτός λειτουργίας