Συναρτήσεις
Διάφορες Aσκήσεις (εξετάσεων 2016)
Άσκηση.
Γράψτε μία συνάρτηση με όνομα uniqueList
η οποία θα δέχεται μία λίστα L και θα επιστρέφει μία άλλη λίστα M η οποία θα περιέχει τα μοναδικά στοιχεία της L (δηλαδή, θα περιέχει μόνο μία φορά κάθε στοιχείο που περιέχεται στην L).
Για παράδειγμα, αν δώσουμε τη λίστα L=[1,2,3,3,5,5,6,7,3]
πρέπει να πάρουμε την M=[1,2,3,5,6,7].
[κώδικας.]
Άσκηση.
Γράψτε μία πραγματική συνάρτηση f(x)
όπου x ένας πραγματικός αριθμός. Γράψτε επίσης μία συνάρτηση points
η οποία δέχεται δύο πραγματικούς αριθμούς a,b και έναν ακέραιο n
και κατασκευάζει μία λίστα η οποία περιέχει n+1 ισαπέχοντα σημεία xi με x0=a και xn=b.
Επίσης, κατασκευάζει μία ακόμα λίστα με τις τιμές f(xi)
.
Γράψτε ένα πρόγραμμα το οποίο θα τυπώνει τις δύο αυτές λίστες.
Για παράδειγμα, χρησιμοποιήστε \( f(x)=x^3-16x \) στο διάστημα \( [-5,5] \).
[κώδικας.]
Άσκηση.
Γράψτε μία συνάρτηση str2List
η οποία θα δέχεται μία συμβολοσειρά και θα επιστρέφει μία λίστα με στοιχεία χαρακτήρες οι οποίοι θα είναι τα μοναδικά γράμματα τα οποία περιέχονται στη συμβολοσειρά.
Για παράδειγμα, αν η συμβολοσειρά είναι 'Maria!' η συνάρτηση θα πρέπει να επιστρέφει τη λίστα ['m','a','r','i'].
[κώδικας.]
Άσκηση.
Γράψτε μία συνάρτηση με το όνομα funcList
η οποία θα βρίσκει τις τιμές συνάρτησης f(x) για όλα τα στοιχεία μίας λίστας (η οποία θα περιέχει πραγματικούς αριθμούς). Η συνάρτηση θα δέχεται μία λίστα και θα επιστρέφει μία νέα λίστα.
Θα χρησιμοποιεί μία άλλη συνάρτηση f(x)
(την οποία επίσης πρέπει να γράψετε).
Για παράδειγμα, αν η αρχική λίστα είναι L=[0.1,0.2,0.3,0.4,0.5] και \( f(x) = sin(x) \), η funcList
θα πρέπει να επιστρέφει τη λίστα [0.09983341664682815, 0.19866933079506122, 0.29552020666133955, 0.3894183423086505, 0.479425538604203].
[κώδικας.]
Άσκηση.
Γράψτε μία συνάρτηση με το όνομα contractList
η οποία θα βρίσκει το άθροισμα και το γινόμενο των στοιχείων μίας λίστας. Η συνάρτηση θα δέχεται μία λίστα και θα επιστρέφει δύο πραγματικούς αριθμούς.
Για παράδειγμα, αν η αρχική λίστα είναι L=[1,2.5,3,4,5.5,6], η συνάρτηση θα πρέπει να επιστρέφει τους αριθμούς 22.0, 990.0.
[κώδικας.]
Άσκηση.
Γράψτε μία συνάρτηση values2sign
η οποία δέχεται μία λίστα με στοιχεία πραγματικούς αριθμούς και κατασκευάζει μία σειρά χαρακτήρων ως εξής: αν δύο διαδοχικοί αριθμοί είναι θετικοί τότε θέτει τον χαρακτήρα '+', αν είναι αρνητικοί το θέτει '-' και αν δύο διαδοχικοί χαρακτήρες είναι ετερόσημοι τότε θέτει τον χαρακτήρα 'ο'.
Για παράδειγμα για τη λίστα [3.1,2,1.2,-1,-2]
παίρνουμε την συμβολοσειρά '++ο-'
.
Στη συνέχεια, γράψτε ένα πρόγραμμα το οποίο ζητάει από το χρήστη πραγματικούς αριθμούς και τους καταχωρεί σε μία λίστα, μέχρι να εμφανιστεί ο αριθμός -1.
Βρείτε την αντίστοιχη συμβολοσειρά με χρήση της παραπάνω συνάρτησης
(το -1 δεν θα συμπεριλαμβάνεται στον υπολογισμό).
[κώδικας.]
Άσκηση.
Γράψτε μία συνάρτηση distInt
η οποία δέχεται μία λίστα με στοιχεία ακεραίους και υπολογίζει τις αποστάσεις μεταξύ διαδοχικών στοιχείων. Η συνάρτηση πρέπει να επιστρέφει τα αποτελέσματα σε μία λίστα.
Στη συνέχεια, γράψτε ένα πρόγραμμα το οποίο ζητάει από το χρήστη ακέραιους αριθμούς και τους καταχωρεί σε μία λίστα, μέχρι να εμφανιστεί ο αριθμός -1.
Βρείτε τις αποστάσεις μεταξύ των ακεραίων με χρήση της παραπάνω συνάρτησης
(το -1 δεν θα συμπεριλαμβάνεται στον υπολογισμό).
[κώδικας.]
Άσκηση.
Αν r και s είναι δύο ακολουθίες χαρακτήρων ορίζουμε την απόστασή τους d ως τον
αριθμό των θέσεων στις οποίες οι δύο ακολουθίες χαρακτήρων διαφέρουν.
Για παράδειγμα, η απόσταση των 'cat' και 'bit' είναι 2 αλλά η απόσταση των 'desks' και 'pen' είναι 4.
Γράψτε μια συνάρτηση distStr
η οποία με όρισμα δύο ακολουθίες χαρακτήρων υπολογίζει και επιστρέφει την απόστασή τους.
[κώδικας.]
Άσκηση.
Η ακολουθία χαρακτήρων s αποτελείται από μονοψήφιους αριθμούς και τα σύμβολα της πρόσθεσης ή της αφαίρεσης '+', '-'. Για παράδειγμα, η ακολουθία χαρακτήρων s θα μπορούσε να είναι η '3-7+6-1+8'.
Γράψτε μια συνάρτηση strArithmetic
η οποία δέχεται ως όρισμα μια τέτοια ακολουθία χαρακτήρων, εκτελεί τις πράξεις που σημειώνονται και επιστρέφει το αποτέλεσμα.
[κώδικας.]
Άσκηση.
Το τρίτο πρόσωπο του ενικού των ομαλών ρημάτων στα Αγγλικά σχηματίζεται σύμφωνα με τους εξής κανόνες: αν το ρήμα τελειώνει σε 'y', αυτό αφαιρείται
και προστίθεται η κατάληξη 'ies'. Αν το ρήμα τελειώνει σε 'o', 'ch', 's', 'sh', 'x' ή 'z' τότε προστίθεται η κατάληξη 'es', διαφορετικά προστίθεται 's'.
Γράψτε μία συνάρτηση person3
η οποία μπορεί να σχηματίσει το τρίτο πρόσωπο ρήματος σύμφωνα με τους κανόνες που δόθηκαν.
Στη συνέχεια γράψτε ένα πρόγραμμα το οποίο ζητάει από τον χρήστη να πληκτρολογήσει ρήματα τα οποία αποθηκεύει σε μια λίστα. Η είσοδος σταματάει όταν ο χρήστης
δώσει το ρήμα 'stop' (το οποίο δεν αποθηκεύεται).
Χρησιμοποιώντας την παραπάνω συνάρτηση τυπώστε το τρίτο πρόσωπο του κάθε ρήματος.
[κώδικας.]
Άσκηση.
Η λίστα M περιέχει τις κινήσεις ενός robot το οποίο αρχικά βρίσκεται στο σημείο \((0, 0)\).
Κάθε κίνηση είναι μια πλειάδα στην οποία το πρώτο στοιχείο είναι μια από τις ακολουθίες χαρακτήρων 'UP', 'DOWN', 'LEFT' και ΄RIGHT' ενώ το δεύτερο στοιχείο είναι ένας θετικός πραγματικός αριθμός που δηλώνει την απόσταση που κινήθηκε το robot.
Για παράδειγμα, αν M=[('LEFT',2.5),('UP',3),('LEFT',1)]
το robot κινείται αρχικά 2.5 μονάδες αριστερά, ακολούθως 3 μονάδες επάνω και τέλος 1 μονάδα αριστερά.
Γράψτε μια συνάρτηση robot
η οποία με όρισμα τη λίστα M να επιστρέφει
τις συντεταγμένες της θέσης του robot και την απόσταση που έχει καλύψει.
Στο παραπάνω παράδειγμα η συνάρτηση θα επιστρέφει τη θέση (3.5, 3) και την απόσταση 6.5.
[κώδικας.]
Άσκηση.
Γράψτε μία συνάρτηση n1n
η οποία θα δέχεται έναν ακέραιο n και θα επιστρέφει την τιμή του αθροίσματος
\( \frac{1}{n} + \frac{2}{n-1} + \frac{3}{n-2} + \cdots + \frac{n}{1} \).
Γράψτε ένα πρόγραμμα το οποίο διαβάζει έναν ακέραιο αριθμό \(n\) και
υπολογίζει και εκτυπώνει την τιμή του παραπάνω αθροίσματος.
[κώδικας.]
Άσκηση.
Το Τμήμα επιτρέπει στους χρήστες των υπολογιστικών συστημάτων του να επιλέξουν το
δικό τους κωδικό πρόσβασης, υπό την προϋπόθεση ότι ικανοποιεί τις εξής απαιτήσεις:
(α) να αποτελείται από τουλάχιστον 12 χαρακτήρες (β) να περιέχει τουλάχιστον
τρείς από τους χαρακτήρες '!&%#$@*' (γ) να περιέχει τουλάχιστον δύο ψηφία
(δ) να περιέχει τουλάχιστον δύο φωνήεντα και (ε) να περιέχει το πολύ τρείς από
τους χαρακτήρες 'zxcvbnm'.
Γράψτε μια συνάρτηση acceptPass
η οποία ελέγχει αν ένας κωδικός πρόσβασης είναι επιτρεπτός ή όχι, επιστρέφοντας 'Yes' or 'No', αντίστοιχα.
[κώδικας.]
Άσκηση. Γράψτε ένα πρόγραμμα το οποίο ζητάει από το χρήστη ακολουθίες χαρακτήρων μέχρι να συναντήσει την ακολουθία χαρακτήρων 'stop' (την οποία δεν αποθηκεύει). Στη συνέχεια το πρόγραμμα εκτυπώνει, αν υπάρχει, μια αλυσίδα λέξεων ως εξής: ξεκινώντας με την πρώτη λέξη, το πρώτο γράμμα της επόμενης λέξης είναι το τελευταίο της προηγούμενης. Για παράδειγμα, από την ακολουθία λέξεων: make an effort to climb to olympus, πρέπει να τυπωθεί η αλυσίδα λέξεων make effort to olympus. [κώδικας.]
Άσκηση.
Οι Ρωμαίοι χρησιμοποιούσαν τα σύμβολα Μ για τον αριθμό 1000, D για το 500,
C για το 100, L για το 50, X για το 10, V για το 5 και I για το 1.
Γράψτε μια συνάρτηση romans
η οποία με όρισμα έναν ακέραιο αριθμό επιστρέφει μια ακολουθία χαρακτήρων η οποία παριστάνει τον ίδιο αριθμό στο σύστημα των Ρωμαίων.
[κώδικας.]
Άσκηση. Γράψτε μία συνάρτηση bob η οποία μεταφράζει μια λέξη σε Ακαταλαβίστικα, δηλαδή, διπλασιάζει κάθε σύμφωνο προσθέτοντας το χαρακτήρα 'ο' ανάμεσά τους. Για παράδειγμα, η λέξη 'potato' θα γίνει 'popototatoto' και η λέξη 'date' θα γίνει 'dodatote'. Γράψτε ένα πρόγραμμα για να χρησιμοποιήσετε τη συνάρτηση. [κώδικας.]