THMMY.gr

Μαθήματα Βασικού Κύκλου => Αντικειμενοστραφής Προγραμματισμός => Topic started by: Apostolof on October 14, 2016, 14:44:31 pm



Title: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Apostolof on October 14, 2016, 14:44:31 pm
Ανέβηκε η δεύτερη εργασία του μαθήματος εδώ (https://elearning.auth.gr/mod/assign/view.php?id=294368). Happy programming

Κατάθεση εργασίας για βαθμολογία

  • Κατεβάζετε τα 2 συνοδευτικά αρχεία της Άσκησης, με τον κώδικα (ps2.scm (https://elearning.auth.gr/pluginfile.php/493251/mod_assign/intro/ps2.scm)) και τα τεστ (tester2.scm (https://elearning.auth.gr/pluginfile.php/493251/mod_assign/intro/tester2.scm)).
  • Συμπληρώνετε τα τμήματα του κώδικα που λείπουν στο πρώτο.
  • Συμπληρώνετε επιπλέον τεστ στο δεύτερο --παρόμοιο αρχείο θα εκτελεστεί στον server για να βαθμολογηθείτε.
  • Ανεβάστε το πρώτο αρχείο με τις δικές αλλαγές στο CMS (http://83.212.97.65:8888/).
  • Επαναλάβετε τα βήματα 2-4 μέχρι η βαθμολογία να σας είναι ικανοποιητική, ή παρέλθει ο χρόνος παράδοσης, ή βρείτε να κάνετε κάτι καλύτερο με το χρόνο σας.


Alexander Calder

Η Wikipedia (https://en.wikipedia.org/wiki/Mobile_(sculpture)) περιγράφει ένα mobile ως εξής:

Quote
Ένα mobile είναι μία κατασκευή που εκμεταλλεύεται τις αρχές της ισορροπίας. Αποτελείται από έναν αριθμό ράβδων (bar), από τις οποίες κρέμονται γλυπτά (sculpture) ή άλλες ράβδοι. Τα αντικείμενα ισορροπούν μεταξύ τους, με αποτέλεσμα οι ράβδοι να παραμένουν σχεδόν οριζόντιοι και όλο το σύστημα να ισορροπεί. Κάθε ράβδος κρέμμεται από ένα μόνο νήμα (string), δίνοντάς της με αυτό τον τρόπο τη δυνατότητα να περιστρέφεται γύρω από αυτό το νήμα.

(https://elearning.auth.gr/pluginfile.php/493251/mod_assign/intro/mobile.jpg)
Three Disks in the Air mobile του Alexander Calder (https://en.wikipedia.org/wiki/Alexander_Calder) (1967)

Θα χρησιμοποιήσουμε την εξής αυστηρή περιγραφή. Ένα mobile μπορεί να είναι:

  • είτε γλυπτό
  • είτε ράβδος που κρατάει δύο mobile.

Στην πρώτη περίπτωση, αναπαριστά ένα ατομικό γλυπτό και χαρακτηρίζεται από έναν αριθμό που το βάρος του σε kg. Στην δεύτερη περίπτωση, αναπαριστά τα δύο mobile και το βάρος της ράβδου.

Θεωρώντας δεδομένες τις συναρτήσεις:

  • (make-mobile left weight right), η οποία δημιουργεί μία ράβδο με βάρος weight και αριστερά και δεξιά κλαδιά left και right αντίστοιχα,
  • (left-mobile m), η οποία επιστρέφει το αριστερό μέρος του mobile m,
  • (right-mobile m), η οποία επιστρέφει το δεξί μέρος του mobile m,
  • (is-sculpture? m), η οποία επιστρέφει #t (True) αν είναι γλυπτό, αλλιώς #f (False) και
  • (get-weight m), η οποία επιστρέφει το βάρος ενός mobile,

Παραδείγματα χρήσης
  • (is-sculpture? (make-mobile 2)) επιστρέφει #t
  • (is-sculpture? (make-mobile 1 2 3)) επιστρέφει #f
  • (get-weight (make-mobile 2)) επιστρέφει 2
Code:
    (get-weight (right-mobile (make-mobile 1 
                                           4
                                           (make-mobile 5
                                                        6
                                                        7))))
   επιστρέφει 6

Υλοποιήστε τις παρακάτω συναρτήσεις:

   1. (define (weights# m) '<YOUR-CODE-HERE>), η οποία παίρνει σαν όρισμα ένα mobile m και απαριθμεί τα βάρη του.
   2. (define (total-weight m) '<YOUR-CODE-HERE>), η οποία παίρνει σαν όρισμα ένα mobile m και υπολογίζει το συνολικό του βάρος. Στο βάρος ενός mobile συμπεριλαμβάνεται το βάρος των γλυπτών και το βάρος των ράβδων.
   3. (define (depth m) '<YOUR-CODE-HERE>), η οποία παίρνει σαν όρισμα ένα mobile m και προσδιορίζει τον μέγιστο αριθμό νημάτων για φτάσουμε σ' ένα οποιοδήποτε γλυπτό του.
   4. (define (balanced? m) '<YOUR-CODE-HERE>), η οποία παίρνει σαν όρισμα ένα mobile m και προσδιορίζει αν είναι ισορροπημένο. Ένα mobile είναι ισορροπημένο αν το βάρος του mobile στο ένα άκρο είναι ίσο με το βάρος του mobile στο άλλο και κάθε mobile είναι επίσης ισορροπημένο.


Παράδειγμα τριών διαφορετικών mobile - επεξήγηση ορισμών
(https://s17.postimg.org/cgbyqof7z/mobile_draw.png) (https://postimg.org/image/u6dnbpssr/)

Edit: Αλλαγή του url της δεύτερης εικόνας, γιατί απαιτούσε είσοδο στο elearning για να εμφανιστεί

edit2: Η σχετική συζήτηση στο elearning ΕΔΩ (https://elearning.auth.gr/mod/forum/discuss.php?d=16518)!


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 15, 2016, 16:35:23 pm
Ρώτησα τον Φλώρο και μου είπε ότι οι υποβολές της δεύτερης εργασίας θα ανοίξουν αμέσως μετά τη λήξη των υποβολών της πρώτης.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: potirikolonato on October 16, 2016, 23:33:34 pm
Στην δοθείσα συνάρτηση (make-mobile left weight right)  τι χρησιμότητα έχουν τα  left, right  ;;
Δεν καταλαβαίνω την λειτουργία της συνάρτησης.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 17, 2016, 00:37:58 am
Στην δοθείσα συνάρτηση (make-mobile left weight right)  τι χρησιμότητα έχουν τα  left, right  ;;
Δεν καταλαβαίνω την λειτουργία της συνάρτησης.

Αν δεις στις κλείσεις της make-mobile τα left και right είναι αναδρομικές κλήσεις της ίδια συνάρτησης. Επομένως όταν την καλείς με τρία ορίσματα ουσιαστικά της λες να φτιάξει μια μπάρα με βάρος weight και δύο mobiles αριστερά και δεξιά της.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: fcdimitr on October 17, 2016, 18:15:38 pm
Κάθε συζήτηση για τις εργασίες καλό θα ήταν να μεταφερθεί εδώ

https://elearning.auth.gr/mod/forum/view.php?id=295789

που απαντούν και οι διδάσκοντες.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: sg31a on October 17, 2016, 19:12:48 pm
ξερεις κανεις που πηγαινει στα μαθηματα ποια pdf θα διαβασουμε για τη 2η εργασια??? ρωταω για εμας του μεγαλυτερους


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: tniton on October 17, 2016, 19:15:55 pm
Ουτε εγω πολυκαταλαβα την make-mobile, πχ τα left και right αν ειναι σταθεροι αριθμοι και οχι νεες make-mobile τοτε σημαινει οτι εχουμε ραβδο με γλυπτα αριστερα της και δεξια της με βαρη τις τιμες left και right;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 17, 2016, 20:13:55 pm
Ουτε εγω πολυκαταλαβα την make-mobile, πχ τα left και right αν ειναι σταθεροι αριθμοι και οχι νεες make-mobile τοτε σημαινει οτι εχουμε ραβδο με γλυπτα αριστερα της και δεξια της με βαρη τις τιμες left και right;

Από αυτό που βλέπω στα παραδείγματα γλυπτό μπορείς να δημιουργήσεις μόνο με τη κλήση της make-mobile με ένα όρισμα. Βέβαια η make-mobile δεν σου χρειάζεται στην λύση της άσκησης, αφού το mobile θα στο παρέχει πάντα ο grader και εσύ καλείσαι να υπολογίσεις ορισμένα στοιχεία του.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: tniton on October 17, 2016, 22:39:28 pm
Εισαι σιγουρος οτι δε χρειαζεται καθολου; ουτε σαν ορισμα αλλης συναρτησης ; ευχαριστω παντως  :)


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 17, 2016, 22:44:43 pm
Εισαι σιγουρος οτι δε χρειαζεται καθολου; ουτε σαν ορισμα αλλης συναρτησης ; ευχαριστω παντως  :)

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


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: 00128419 on October 17, 2016, 23:55:38 pm
Την make-mobile στη δίνει για να φτιάξεις δίκο σου mobile αν θες να κάνεις παραπάνω ελέγχους στην tester. Εγώ για παράδειγμα έφτιαξα ένα που είχε το ίδιο συνολικό βάρος και στα δυο άκρα αλλά δεν ήταν balanced για να ελέγξω αν δουλεύει σωστά η τελευταία συνάρτηση.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: thaptali on October 18, 2016, 00:23:49 am
Στο αρχείο που ανεβάζουμε θα έχουμε μόνο τις συναρτήσεις γραμμένες και τίποτα άλλο; Γιατί μου συμβαίνει πάλι το ίδιο..Σωστά αποτελέσματα, αλλά 0/10 όταν το ανεβάζω.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 18, 2016, 00:51:11 am
Στο αρχείο που ανεβάζουμε θα έχουμε μόνο τις συναρτήσεις γραμμένες και τίποτα άλλο; Γιατί μου συμβαίνει πάλι το ίδιο..Σωστά αποτελέσματα, αλλά 0/10 όταν το ανεβάζω.

Είχα ακριβώς το ίδιο πρόβλημα. Πρέπει να ανεβάσεις το ps2 ακριβώς όπως το κατέβασες, να μη σβήσεις τίποτα που υπήρχε πριν, με αλλαγμένες τις 4 συναρτήσεις. Δηλαδή τα αρχικά παραδείγματα και τα τεστ που έχει στο τέλος πρέπει να υπάρχουν και να είναι τα ίδια με αυτά που υπήρχαν αρχικά στο αρχείο.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 18, 2016, 13:56:17 pm
(define (weights# m), η δίεση τι συμβολίζει;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 18, 2016, 15:18:29 pm
(define (weights# m), η δίεση τι συμβολίζει;

Τίποτα, το όνομα της συνάρτησης είναι weights# και λογικά εννοεί ότι η συνάρτηση υπολογίζει τον αριθμό (#) των βαρών.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 18, 2016, 15:24:22 pm
Τίποτα, το όνομα της συνάρτησης είναι weights# και λογικά εννοεί ότι η συνάρτηση υπολογίζει τον αριθμό (#) των βαρών.

α σωστά, έχεις δίκιο.
Κάτι ακόμα: αν εχεις μια (make-mobile 2) είναι ένα γλυπτό με βάρος 2
                      αν έχεις μια (make-mobile 2 3 4) είναι ράβδος με βάρος 3.
τα κλαδια (left 2) (right 4) που λέει η άσκηση τι ακριβώς συμβολίζουν; Βάρος πάλι;



Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 18, 2016, 15:46:07 pm
α σωστά, έχεις δίκιο.
Κάτι ακόμα: αν εχεις μια (make-mobile 2) είναι ένα γλυπτό με βάρος 2
                      αν έχεις μια (make-mobile 2 3 4) είναι ράβδος με βάρος 3.
τα κλαδια (left 2) (right 4) που λέει η άσκηση τι ακριβώς συμβολίζουν; Βάρος πάλι;



Ναι, αν τα left και right είναι αριθμοί τότε είναι βάρη. Αλλιώς είναι αναδρομικές κλήσεις στη make-mobile για να δημιουργήσει αριστερά ή δεξιά της κεντρικής μπάρας ένα mobile. Επίσης σου προτείνω πριν αρχίσεις να βλέπεις την άσκηση να τρέξεις μια φορά το tester και να καταλάβεις τα παραδείγματά του!!


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 18, 2016, 15:52:50 pm
Ναι, αν τα left και right είναι αριθμοί τότε είναι βάρη. Αλλιώς είναι αναδρομικές κλήσεις στη make-mobile για να δημιουργήσει αριστερά ή δεξιά της κεντρικής μπάρας ένα mobile. Επίσης σου προτείνω πριν αρχίσεις να βλέπεις την άσκηση να τρέξεις μια φορά το tester και να καταλάβεις τα παραδείγματά του!!

Ωραίος σε ευχαριστώ πολύ!  :)


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Ross_Geller on October 18, 2016, 21:11:34 pm
Είχα ακριβώς το ίδιο πρόβλημα. Πρέπει να ανεβάσεις το ps2 ακριβώς όπως το κατέβασες με αλλαγμένες μόνο τις 4 συναρτήσεις. Δηλαδή τα αρχικά παραδείγματα και τα τεστ που έχει στο τέλος πρέπει να υπάρχουν και να είναι τα ίδια με αυτά που υπήρχαν αρχικά στο αρχείο.

Δεν μπορούμε να φτιάξουμε δηλαδή extra συναρτήσεις έξω από τις 4 που μας ζητούνται να υλοποιήσουμε, όπως στην 1η εργασία;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 18, 2016, 22:50:11 pm
Δεν μπορούμε να φτιάξουμε δηλαδή extra συναρτήσεις έξω από τις 4 που μας ζητούνται να υλοποιήσουμε, όπως στην 1η εργασία;

Ίσως να μπέρδεψα με το αρχικό μου ποστ (σορρυ  ::)) . Μπορείς να φτιάξει όσες δικές σου συναρτήσει θέλεις (υποθέτω, γιατί εγώ δεν έφτιαξα), απλά πρέπει να κρατήσεις όλο τον υπόλοιπο κώδικα που υπήρχε αρχικά στο ps2, τα make-mobile στην αρχή κτλ.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: stefkar89 on October 19, 2016, 07:28:37 am
Στο αρχείο tester, για το τελευταίο τεστ (αν είναι balanced), για το 1ο mobile που δίνεται έχει γραφτεί καταλάθος να τεστάρει το 2ο mobile αντί το 1ο ..τσεκαρέτε το..!  :P


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: mpraskafoutas on October 19, 2016, 18:24:36 pm
πως βρηκατε το βαθος;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: sg31a on October 19, 2016, 18:35:56 pm
ρε παιδια για το βαθος στον τεστερ δεν επρεπε για το mobile 4 να ειναι 5 το βαθος??? γιατι το εχει 4??? εκτος αν εχω καταλαβει λαθος το concept της συναρτησης


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 19, 2016, 18:41:09 pm
ρε παιδια για το βαθος στον τεστερ δεν επρεπε για το mobile 4 να ειναι 5 το βαθος??? γιατι το εχει 4??? εκτος αν εχω καταλαβει λαθος το concept της συναρτησης

4 πρεπει να ειναι , ουσιαστικα το ερωτημα σου λεει:

ποσα νηματα πρεπει να αθροισεις για να "φτασεις" στο "πιο κατω γλυπτο" της μια πλευρας (left η right)...

και οχι ποσα νηματα πρεπει να αθροισεις συνολικα για να "φτασεις" στο "πιο κατω γλυπτο" και των δυο !

Καπου κρυβεται ενας ελεγχος  ;)


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Ross_Geller on October 19, 2016, 18:59:16 pm
Παιδιά για το 1ο ερώτημα χρησιμοποιήσατε μετρητή, για να αθροίζετε τα γλυπτά που βρίσκετε;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 19, 2016, 19:09:53 pm
Παιδιά για το 1ο ερώτημα χρησιμοποιήσατε μετρητή, για να αθροίζετε τα γλυπτά που βρίσκετε;

προσωπικα οχι , αλλα δεν σημαινει οτι μπορει να λυθει κι ετσι! Δεν νμζω να υπαρχει μονο μια λυση

πως βρηκατε το βαθος;

αν εχεις καποια συγκεκριμενη απορια , σχετικα με το ερωτημα , μπορεις να το παραθεσεις ετσι ωστε να βοηθησουμε... κωδικας λιγο δυσκολο να ανεβει (απο εμενα τουλαχιστον) πριν την ληξη της διοριας


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: mpraskafoutas on October 19, 2016, 19:34:50 pm

αν εχεις καποια συγκεκριμενη απορια , σχετικα με το ερωτημα , μπορεις να το παραθεσεις ετσι ωστε να βοηθησουμε... κωδικας λιγο δυσκολο να ανεβει (απο εμενα τουλαχιστον) πριν την ληξη της διοριας

ειπα οτι αν το καθε φυλλο ξεχωριστα ειναι mobile να κανει αναδρομικα τη συναρτηση (depth-iter i) που ορισα και στο τελος αν και τα δυο φυλλα ειναι γλυπτα να κανει i+1,οπου το i θα ειναι το βαθος.δεν ξερω αν ειναι σωστο,γι αυτο ρωτησα.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 19, 2016, 19:48:31 pm
ειπα οτι αν το καθε φυλλο ξεχωριστα ειναι mobile να κανει αναδρομικα τη συναρτηση (depth-iter i) που ορισα και στο τελος αν και τα δυο φυλλα ειναι γλυπτα να κανει i+1,οπου το i θα ειναι το βαθος.δεν ξερω αν ειναι σωστο,γι αυτο ρωτησα.

ελεγχεις με το ιδιο i και τις 2 μεριες? Αν ναι , τοτε υπαρχει η πιθανοτητα η μια μερια να εχει παραπανω κλαδια απο την αλλη ... Το ελεγχεις με καποιο τροπο αυτο ?

Αν οχι , τοτε δεν κτλβα τι κανεις  :P και θα αφησω καποιον αλλον να απαντησει

edit/hint: Επισης , θα πρεπει να χρησιμοποιησεις το depth( left-mobile mobile) και αντιστοιχα με το right .


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Cparakis on October 20, 2016, 18:38:01 pm
Για την συναρτηση weights# αν χρησιμοποιησουμε μετρητη δε πρεπει να τον ορισουμε εξω απο τη συναρτηση ; Γιατί ο Φλώρος λέει πως δε πρέπει να πειράξουμε τίποτα αλλο από τα <YOUR-CODE-HERE>


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Egkelados on October 20, 2016, 18:53:32 pm
Μπορεις να γραψεις εξω απο τη συναρτηση απλως να μην πειραξεις κατι αλλο. Βεβαια δε χρειαζεσαι μετρητη για την υλοποιηση της


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: sotiristsar on October 20, 2016, 21:37:34 pm
Παιδια κατι τετοιο (weights# (left-mobile mobile-3)) δεν ευσταθεί γιατι μου  βγαζει οτι δεν ειναι συναρτηση


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 20, 2016, 22:37:17 pm
Παιδια κατι τετοιο (weights# (left-mobile mobile-3)) δεν ευσταθεί γιατι μου  βγαζει οτι δεν ειναι συναρτηση

Κανονικά θα έπρεπε να σου τρέχει αν έχει υλοποιήσει σωστά την weights#


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: sotiristsar on October 20, 2016, 22:51:00 pm
για να ξανακαλέσω την weights# αναδρομικα μεσα στην ίδια το χρησιμοποιώ.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 20, 2016, 23:04:58 pm
για να ξανακαλέσω την weights# αναδρομικα μεσα στην ίδια το χρησιμοποιώ.

η αναδρομικοτητα της συναρτησης σου , οριζεται ετσι:

Code:
(weights# (left-mobile mobile))


δηλαδη χωρις το 3 που εγραψες εσυ , καθως το θες γενικο κι οχι συγκεκριμενα για το mobile 3


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: TheoProt on October 21, 2016, 02:59:57 am
Η define (weights# m) θέλουμε να εμφανίζει τα βάρη του κάθε mobile ή κάτι άλλο που δεν το καταλαβαίνω ;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: MrRobot on October 21, 2016, 08:17:15 am
Η define (weights# m) θέλουμε να εμφανίζει τα βάρη του κάθε mobile ή κάτι άλλο που δεν το καταλαβαίνω ;
Πρεπει μα εμφανιζει το πληθος των βαρων,δηλαδη το πληθος των γλυπτων και το πληθος των μπαρών.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 21, 2016, 14:01:20 pm
4 πρεπει να ειναι , ουσιαστικα το ερωτημα σου λεει:

ποσα νηματα πρεπει να αθροισεις για να "φτασεις" στο "πιο κατω γλυπτο" της μια πλευρας (left η right)...

και οχι ποσα νηματα πρεπει να αθροισεις συνολικα για να "φτασεις" στο "πιο κατω γλυπτο" και των δυο !

Καπου κρυβεται ενας ελεγχος  ;)
στην άσκηση λέει:
προσδιορίζει τον μέγιστο αριθμό νημάτων για φτάσουμε σ’ ένα οποιοδήποτε γλυπτό του.
Μπορεί κάποιος να πει, ότι θέλει να υπολογίζουμε το σύνολο των νημάτων από το πιο κάτω αριστερό γλυπτό του mobile,  στο πιο κάτω δεξιό  γλυπτό του  mobile. Αν είναι έτσι όπως το λες εσύ μου φαίνεται πιο απλοποιημένη η συνάρτηση αυτή.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 21, 2016, 14:06:27 pm
στην άσκηση λέει:
προσδιορίζει τον μέγιστο αριθμό νημάτων για φτάσουμε σ’ ένα οποιοδήποτε γλυπτό του.
Μπορεί κάποιος να πει, ότι θέλει να υπολογίζουμε το σύνολο των νημάτων από το πιο κάτω αριστερό γλυπτό του mobile,  στο πιο κάτω δεξιό  γλυπτό του  mobile. Αν είναι έτσι όπως το λες εσύ μου φαίνεται πιο απλοποιημένη η συνάρτηση αυτή.


Ναι αλλά ουσιαστικά με τις απαντήσεις που δίνει η tester αν την διαβάσεις,  δεν μπορεί να είναι αυτό που αναφέρεις! 


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 21, 2016, 14:12:06 pm
Ναι αλλά ουσιαστικά με τις απαντήσεις που δίνει η tester αν την διαβάσεις,  δεν μπορεί να είναι αυτό που αναφέρεις! 
δικιο έχεις! Ευχαριστώ!!


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: fcdimitr on October 21, 2016, 14:27:21 pm
Όσοι δεν έχετε καταφέρει να πάρετε βαθμό, κατεβάστε ξανά την καινούργια ps2.scm (είτε από το elearning είτε από το CMS) η οποία αυτήν την φορά δεν έχει κανένα display (μόνο ορίζει τα mobiles και τις 4 συναρτήσεις).

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

Μην προσθέσετε κανένα display στην ps2





Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: JasonTheModel on October 21, 2016, 14:59:42 pm
Μπορεις να γραψεις εξω απο τη συναρτηση απλως να μην πειραξεις κατι αλλο. Βεβαια δε χρειαζεσαι μετρητη για την υλοποιηση της

χωρις μετρητη θα γραψουε κατι τετοιας μορφης η ειναι λαθος?
 (= (weights# mobile) (+ (weights# mobile) 1))


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Mandalorian on October 21, 2016, 15:07:36 pm
παιδια μια ερωτηση: στο παραδειγμα που δινει στο e-learning η get-weight επιστρεφει το βαρος μονο της ραβδου;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: stefkar89 on October 21, 2016, 15:20:22 pm
Ναι, εκτός κ αν είναι γλυπτό οπότε επιστρέφει το βάρος αυτού..


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Mandalorian on October 21, 2016, 15:24:27 pm
Ναι, εκτός κ αν είναι γλυπτό οπότε επιστρέφει το βάρος αυτού..

Thanks!


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: TheoProt on October 21, 2016, 17:19:55 pm
Την τιμή που επιστρέφει η is-sculpture? πώς μπορώ να την χρησιμοποιήσω σαν όρισμα για if statement ;
Δηλαδή να γράψω : (if (is-sculpture? mobile)
                                   (.....)
Αν είναι γλυπτό να προσθέσω ένα βάρος αλλιώς κάτι άλλο!


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 21, 2016, 17:36:16 pm
Πολύ καλά το χρησιμοποίησες ,απλά βάλε κι μερικές ακόμα εντολές


Edit:  όχι για την συνθήκη, αλλά στο  do και else κομμάτι


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 21, 2016, 18:18:50 pm
Μπορώ να έχω μία if (συνθηκη) (αν συνθήκη ισχύει κάνε) ( πάλι μια if εδω) ;;;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: stefkar89 on October 21, 2016, 18:33:02 pm
Μπορώ να έχω μία if (συνθηκη) (αν συνθήκη ισχύει κάνε) ( πάλι μια if εδω) ;;;


Ναι


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 21, 2016, 18:38:22 pm
Ναι
με πρόλαβες θα το έκανα edit, ευχαριστώ!!!  :D


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: r.i.p on October 21, 2016, 22:31:30 pm
παιδια οταν πατε να το τρεξετε πεταει σε κανεναν σας error του τυπου

 ps2.scm:4:3: make-mobile: unbound identifier in module in: make-mobile


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: r.i.p on October 21, 2016, 22:34:51 pm
ακυρο το βρηκα


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: ultraviolet on October 21, 2016, 23:31:46 pm
Την total-weight που φτιαξαμε εμεις τη χρησιμοποιουμε πουθενα στη balanced? ή όχι?


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 21, 2016, 23:35:41 pm
Την total-weight που φτιαξαμε εμεις τη χρησιμοποιουμε πουθενα στη balanced? ή όχι?
εγώ προσωπικά την χρησιμοποιώ.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 21, 2016, 23:38:04 pm
Oι not and or χρησιμοποιούνται μόνο για boolean.
Εγώ θέλω να εκφράσω μία ανισότητα με αριθμούς.Πως θα το κάνω αυτό; Δλδ ( != α β)


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: ultraviolet on October 21, 2016, 23:47:11 pm
εγώ προσωπικά την χρησιμοποιώ.

ευχαριστω!


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: ultraviolet on October 21, 2016, 23:49:12 pm
Oι not and or χρησιμοποιούνται μόνο για boolean.
Εγώ θέλω να εκφράσω μία ανισότητα με αριθμούς.Πως θα το κάνω αυτό; Δλδ ( != α β)
Θα μπορούσες να πεις (not (= a b)) αν καταλαβα τι ρωτας..


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 21, 2016, 23:56:34 pm
Θα μπορούσες να πεις (not (= a b)) αν καταλαβα τι ρωτας..
αυτό έκανα,αλλά αν κατάλαβα καλά απο το σφάλμα που μου έβγαλε πρέπει τα a b  μου να είναι boolean.. πραγμα λογικό, τι αποτέλεσμα μπορεί να βγάλει το not 2..
Για αυτό ρωτάω λοιπόν!


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 22, 2016, 00:03:21 am

edit: γίνεται ( not (= (- a b) 0)) αλλά και πάλι έχω προβλήματα..


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: raptalex on October 22, 2016, 12:18:20 pm
Από τη στιγμή που η is-sculpture? επιστρέφει #t ή #f, πώς ξέρει η scim αν ισχύει η συνθήκη ή όχι, αφού δεν είναι λογική πράξη (if (> a b))... κτλπ?? Μπορούμε να χρησιμοποιήσουμε κάπως αν #t τότε κάνε κάτι, αν #f κάτι άλλο??


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Ross_Geller on October 22, 2016, 12:39:57 pm
Παιδιά τρέχω την tester2 και μου τα βγάζει όλα PASS και τα sample results ίδια με αυτά που έχει κάτω-κάτω στην ps2. Όταν κάνω όμως την ps2 upload στο CMS, την βαθμολογεί 0/10 και στα details μου βγάζει Output isn't correct. Ξέρει κανείς τι παίζει;

Edit: Άκυρο έβαλα τον κώδικά μου στην καινούρια ps2, αυτήν χωρίς τα details, και ο βαθμός περάστηκε κανονικά.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 22, 2016, 13:03:08 pm
Από τη στιγμή που η is-sculpture? επιστρέφει #t ή #f, πώς ξέρει η scim αν ισχύει η συνθήκη ή όχι, αφού δεν είναι λογική πράξη (if (> a b))... κτλπ?? Μπορούμε να χρησιμοποιήσουμε κάπως αν #t τότε κάνε κάτι, αν #f κάτι άλλο??

το συντακτικο της if οριζεται ετσι:

Code:
(if (συνθηκη)
   Do ...
   (else))

πχ.

Code:
(if (= n 0)
    1
    2)

που διαβαζεται αν ισχυει n=0 , εμφανισε 1 αλλιως εμφανισε 2

Αυτο το "ισχυει" η scheme (στην συγκεκριμενη ασκηση , το task 2), το κτλβαινει απο το #t που επιστρεφει η " is-sculpture? "

Αρα δεν χρειαζεται εσυ , να χρησιμοποιεις με καποιο τροπο τα #t , #f

Ελπιζω να βοηθησα


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Red Phoenix on October 22, 2016, 13:11:27 pm
παιδια οταν πατε να το τρεξετε πεταει σε κανεναν σας error του τυπου

 ps2.scm:4:3: make-mobile: unbound identifier in module in: make-mobile
Κι εμένα μου βγάζει το συγκεκριμένο:
make-mobile: unbound identifier in module in: make-mobile
Ξέρει κανείς τι παίζει;;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Red Phoenix on October 22, 2016, 13:28:36 pm
το συντακτικο της if οριζεται ετσι:

Code:
(if (συνθηκη)
   Do ...
   (else))

πχ.

Code:
(if (= n 0)
    1
    2)

που διαβαζεται αν ισχυει n=0 , εμφανισε 1 αλλιως εμφανισε 2

Αυτο το "ισχυει" η scheme (στην συγκεκριμενη ασκηση , το task 2), το κτλβαινει απο το #t που επιστρεφει η " is-sculpture? "

Αρα δεν χρειαζεται εσυ , να χρησιμοποιεις με καποιο τροπο τα #t , #f

Ελπιζω να βοηθησα
Δηλαδή μετά το Do της if χρειάζεται να γράψουμε το else και την επόμενη π.χ. εντολή ή απλώς γράφω την εντολή; δε χρειάζεται το else;;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 22, 2016, 14:07:18 pm
Δηλαδή μετά το Do της if χρειάζεται να γράψουμε το else και την επόμενη π.χ. εντολή ή απλώς γράφω την εντολή; δε χρειάζεται το else;;

εχεις δικιο ,my mistake , οι λεξεις Do και Else που εβαλα , ηταν πιο πολυ δεικτικες για να ξεχωρισω τα δυο κομματια.

Οταν γραφεις την if σου , την γραφεις χωρις τις λεξεις Do και Else

Υ.Γ Το else το χρησιμοποιεις στην cond , για να δηλωσεις οτι σε καθε αλλη περιπτωση κανε αυτο ... Τωρα αν το γραψεις κι στην if και τρεχει , δεν ξερω , θα σε γελασω... δοκιμασε :Ρ και πες μας

Υ.Γ2 για το αλλο που ρωτησες δεν ξερω !

Καλη συνεχεια


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 22, 2016, 14:21:07 pm
Δηλαδή μετά το Do της if χρειάζεται να γράψουμε το else και την επόμενη π.χ. εντολή ή απλώς γράφω την εντολή; δε χρειάζεται το else;;
στην if παντα βάζεις ''else'' πχ: (if (συνθηκη) (κανε αν ισχυει η συνθηκη) (κανε αν δεν ισχυει))
Εγώ πάντως προσπαθώ μόνο με Ιf γιατί στην cond πάντα μου βγάζει σφάλματα!! ( bad syntax)


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: sotiristsar on October 22, 2016, 16:42:49 pm
Για την depth θα πρέπει να βρίσκουμε το βάθος απο αριστερα μετα το βάθος απο δεξια και να βρίσκουμε στη συνέχεια ποιο είναι μεγαλύτερο ???
Έχω καταλάβει σωστά η θέλει κάτι άλλο??


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: r.i.p on October 22, 2016, 16:55:38 pm
για την depth εγω σκεφτηκα να χρησιμοποιησω την weights# και να κανω ελεγχο τα weights#(left-mobile m)  weights#(right-mobile m) ....αν εχετε καμια αλλη ιδεα πειτε την


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Μπουγάτσας on October 22, 2016, 17:55:59 pm
Αν εχω υλοποιησει σωστα καποια μερη της ασκησης , οταν τρεχω το τεστερ πρεπει να μου βγαζει PASS για οτι εχω κανει σωστο ;


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: ultraviolet on October 22, 2016, 18:05:51 pm
Αν εχω υλοποιησει σωστα καποια μερη της ασκησης , οταν τρεχω το τεστερ πρεπει να μου βγαζει PASS για οτι εχω κανει σωστο ;
Ναι.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 22, 2016, 19:03:48 pm
Για την depth θα πρέπει να βρίσκουμε το βάθος απο αριστερα μετα το βάθος απο δεξια και να βρίσκουμε στη συνέχεια ποιο είναι μεγαλύτερο ???
Έχω καταλάβει σωστά η θέλει κάτι άλλο??

εισαι πολυς σωστος στην σκεψη σου

για την depth εγω σκεφτηκα να χρησιμοποιησω την weights# και να κανω ελεγχο τα weights#(left-mobile m)  weights#(right-mobile m) ....αν εχετε καμια αλλη ιδεα πειτε την

η weights# με ποιον τροπο σου δινει αυτο που ψαχνεις? Η weights# δινει απλα τα συνολικα βαρη που υπαρχουν στο mobile , δεν σου δινει το βαθος που θα φτασεις


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Talaipa on October 22, 2016, 20:09:14 pm
Μπορεί να εννοεί έλεγχο για το προς τα που θα ''ψαξει'' το βάθος. Άρα έχει λογική.


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: r.i.p on October 23, 2016, 13:51:17 pm
σκεφτειτε το εξης :

το weights# σου δινει το συνολο του βαρους .Αρα αν κανεις ελενγχο τα weights#(left-mobile)---weights#(right-mobile)  θα βρεις το συνολο του βαρους για τα δεξια και αριστερα αντιστοιχα...που αυτο σημαινει οτι εχεις ολο και περισσοτερα νηματα να κραταν αυτα τα βαροι....αυτη ειναι η σκεψη μου


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: mono dakrya on October 23, 2016, 16:11:35 pm
μπορει καποιος να μoυ εξηγησει πως ακριβως δουλευει η cond ?


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: RFed the King on October 23, 2016, 16:49:47 pm
σαν τη switch στη c
αν εισαι true η συνθηκη που εδωσες τοτε υλοποιει αυτο που λες και κανει break


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 23, 2016, 16:55:17 pm
(cond ((συνθήκη 1 ) εντολές1)
           (( συνθήκη 2) εντολές2)
           ((συνθήκη ν-1) εντολέςΝ-1)
          ( else εντολές Ν))

Ουσιαστικά ελέγχει κάθε συνθήκη και αν ισχύει εκτελεί τις αντίστοιχες εντολές. Με το που βρει μια συνθήκη που ισχύει και εκτελέσει τις εντολές θα βγει από την cond . Την else την βάζεις για να δηλώσεις οποιαδήποτε άλλη συνθήκη.

Υ. Γ παίζει να έχασα καμιά παρένθεση, γτ έγραφα από κινητό

Το γραψα,  αλλά με πρόλαβαν :Ρ αλλά δεν πρζ θα το αφήσω να υπάρχει


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: squawker on October 23, 2016, 16:57:52 pm
Υπάρχει κάποιο από τα 4 ερωτήματα που μπορεί να απαντηθεί αποκλειστικά και μόνο με cond και όχι με if?


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: leukosaraphs! on October 23, 2016, 17:00:53 pm
Υπάρχει κάποιο από τα 4 ερωτήματα που μπορεί να απαντηθεί αποκλειστικά και μόνο με cond και όχι με if?

Ουσιαστικά η cond είναι η if που στο else κομμάτι της, έχει μια άλλη if κοκ

Βέβαια με την cond είναι πιο εύκολο


Title: Re: [Προγραμματιστικές Τεχνικές] Task 2 - Κυριακή 23/10 11:55 μμ
Post by: Ex_Mechanus on October 23, 2016, 20:54:07 pm
Δυο ερωτήσεις:

1) Η weights# όταν λέει απαριθμεί τα βάρη του, σε ποιά ακριβώς μορφή? Κάποια λίστα ή απλά με την σειρά top down όπως τα διαβάζει recursively?

2) Η balanced γίνεται με tail recursion? Κάποιο hint για το πως συνθέτω το βάρος της μπάρας και τον έλεγχο για left & right?