Skip to content

Commit be12721

Browse files
committed
Add missing files.
1 parent 2421951 commit be12721

File tree

7 files changed

+216
-131
lines changed

7 files changed

+216
-131
lines changed

exams/2023/fall/ex11/README.md

+108-59
Original file line numberDiff line numberDiff line change
@@ -1,88 +1,137 @@
1-
# Τελική Εξέταση #11 - Logic Design Themed
1+
# Τελική Εξέταση #11 - Pacman Themed
22

33
Σημαντικό: φροντίζουμε τα προγράμματά μας να είναι ευανάγνωστα, αποδοτικά (σε χώρο και χρόνο) και να έχουν έξοδο όμοια με τα παραδείγματα εκτέλεσης καθώς αυτό είναι μέρος της βαθμολόγησης. Για οποιαδήποτε είσοδο εκτός προδιαγραφών το πρόγραμμα πρέπει να τερματίζει με exit code 1 και αντίστοιχο μήνυμα σφάλματος.
44

5-
## 1. Αφαίρεση Μη Λατινικών Χαρακτήρων (25 Μονάδες)
5+
## 1. Αναζητώντας τον Blinky (25 Μονάδες)
66

7-
### Πρόγραμμα: bold.c
7+
### Πρόγραμμα: blinky.c
88

99
Γράψτε ένα πρόγραμμα το οποίο διαβάζει κείμενο από την πρότυπη είσοδο (stdin) και το τυπώνει στην πρότυπη έξοδο (stdout) με τους εξής περιορισμούς:
10-
1. Οι αλλαγές γραμμής πρέπει να διατηρούνται.
11-
1. Πρέπει να μετατρέψει κάθε μη λατινικό χαρακτήρα (A-Za-z) σε κενό (space) χαρακτήρα ' '.
12-
1. Η πρώτη λέξη σε κάθε γραμμή θέλουμε να φαίνεται **bold**.
10+
1. Κάθε φορά που βρίσκει την λέξη Blinky - να την τοποθετεί ανάμεσα σε αστεράκια '*' και να την κάνει να αναβοσβήνει (blink).
11+
1. Αν το string Blinky είναι μέρος άλλης λέξης δεν χρειάζεται κάποια αλλαγή.
12+
1. Οι λέξεις αποτελούνται μόνο από λατινικούς χαρακτήρες (A-Za-z) οποιοσδήποτε άλλος χαρακτήρας θεωρείται διαχωριστικό λέξεων.
1313

1414
Παράδειγμα εκτέλεσης ακολουθεί:
1515

16-
![bold substitution](images/bold.png)
16+
[![asciicast](https://asciinema.org/a/js20ZyFDDS0t8ocszkBBo6b4J.svg)](https://asciinema.org/a/js20ZyFDDS0t8ocszkBBo6b4J)
1717

18-
## 2. Ασημένιο Κλάσμα (25 Μονάδες)
18+
Αν για κάποιο λόγο δεν παίζει το παραπάνω link:
1919

20-
### Πρόγραμμα: silver.c
20+
```
21+
$ gcc -o blinky blinky.c
22+
$ cat description.txt
23+
In the Pac-Man universe, Blinky is the red ghost who
24+
persistently chases the game's hero, earning the
25+
nickname "Shadow" for his relentless pursuit.
26+
Blinky's strategy intensifies as Pac-Man consumes
27+
more dots, making Blinky a formidable challenge and
28+
a central figure in game strategy. His vivid red hue
29+
not only marks Blinky as the primary antagonist but
30+
also signals the immediate threat he poses.
31+
$ ./blinky < description.txt
32+
In the Pac-Man universe, *Blinky* is the red ghost who
33+
persistently chases the game's hero, earning the
34+
nickname "Shadow" for his relentless pursuit.
35+
*Blinky*'s strategy intensifies as Pac-Man consumes
36+
more dots, making *Blinky* a formidable challenge and
37+
a central figure in game strategy. His vivid red hue
38+
not only marks *Blinky* as the primary antagonist but
39+
also signals the immediate threat he poses.
40+
```
2141

22-
Ένας τρόπος να προσεγγίσουμε την τιμή του $\sqrt{2}$ είναι μέσω της παράστασης:
42+
## 2. Τοποθέτηση του Pacman (25 Μονάδες)
2343

24-
$$ 1 + \sqrt{2} = 2 + \frac{1}{2 + \frac{1}{2 + \frac{1}{2 + \cdots}}} $$
44+
### Πρόγραμμα: position.c
2545

26-
Όπου η προσθήκη του κάθε όρου $\frac{1}{2 + \cdots}$ βελτιώνει την προσέγγιση. Γράψτε ένα πρόγραμμα το οποίο παίρνει ως όρισμα έναν θετικό ακέραιο που αναπαριστά τον αριθμό των όρων $\frac{1}{2 + \cdots}$ που θέλουμε να χρησιμοποιηθούν και τυπώνει την προσέγγιση του $\sqrt{2}$ με 20 δεκαδικά ψηφία ακριβείας. Παραδείγματα εκτέλεσης ακολουθούν:
46+
Γράψτε ένα πρόγραμμα που παίρνει ως πρώτο όρισμα την διάσταση ενός τετραγωνικού πλέγματος και ως υπόλοιπα ορίσματα τις θέσεις των φαντασμάτων (ghosts) του pacman και τυπώνει όλες τις θέσεις στο πλέγμα που θα μπορούσε να τοποθετηθεί ο pacman. Ο pacman δεν μπορεί να τοποθετηθεί στην ίδια γραμμή ή στήλη με κάποιο φάντασμα. Όλες οι διαστάσεις δίνονται ως "x,y" ορίσματα (όπου x, y είναι ακέραιοι). Εάν δεν υπάρχει δυνατή τοποθέτηση το πρόγραμμά σας θα πρέπει να τυπώνει ανάλογο μήνυμα. Παραδείγματα εκτέλεσης ακολουθούν:
2747

2848
```
29-
$ ./silver 1
30-
sqrt(2) = 1.00000000000000000000
31-
$ ./silver 2
32-
sqrt(2) = 1.50000000000000000000
33-
$ ./silver 3
34-
sqrt(2) = 1.39999999999999991118
35-
$ ./silver 4
36-
sqrt(2) = 1.41666666666666651864
37-
$ ./silver 5
38-
sqrt(2) = 1.41379310344827580082
39-
$ ./silver 1000
40-
sqrt(2) = 1.41421356237309492343
49+
$ gcc -o position position.c
50+
$ ./position 4 0,4 3,2 2,1 1,3
51+
Pacman cannot be positioned anywhere
52+
$ ./position 4 0,4 3,2 2,1 0,3
53+
Pacman can be positioned at: 1,0
54+
$ ./position 4 0,4 3,2 2,1
55+
Pacman can be positioned at: 1,0
56+
Pacman can be positioned at: 1,3
57+
$ ./position 4 1,2 2,1
58+
Pacman can be positioned at: 0,0
59+
Pacman can be positioned at: 0,3
60+
Pacman can be positioned at: 3,0
61+
Pacman can be positioned at: 3,3
4162
```
4263

43-
Για έναν όρο η δεξιά παράσταση είναι (2 + 0) -> sqrt(2) = 1, για 2 όρους η δεξιά παράσταση είναι (2 + 1 / 2) -> sqrt(2) = 1.5, κοκ.
64+
## 3. Κινήσεις σε Πλέγμα (25 Μονάδες)
4465

45-
## 3. Κρυμμένο Μήνυμα (25 Μονάδες)
66+
### Πρόγραμμα: pacman.c
4667

47-
### Πρόγραμμα: hidden.c
68+
Γράψτε ένα πρόγραμμα που παίρνει δύο ορίσματα: (1) το όνομα ενός αρχείου που περιέχει μια πίστα pacman και (2) τις κινήσεις που πρέπει να κάνει ο pacman πάνω στο πλέγμα και τυπώνει την τελική κατάσταση του παιχνιδιού μετά από αυτές τις κινήσεις. Το αρχείο θα έχει την ακόλουθη μορφή:
69+
1. Διάσταση του πλέγματος του παιχνιδιού (δεκαδικός ακέραιος).
70+
2. Τετράγωνο πλέγμα με χαρακτήρες '.' και ένα 'P' για την αρχική θέση του pacman. Όλοι οι άλλοι χαρακτήρες αγνοούνται.
71+
Οι κινήσεις που πρέπει να κάνει ο pacman θα αποτελούνται από 4 χαρακτήρες 'U' (Up), 'D' (Down), 'L' (Left), 'R' (Right). Όταν ο pacman κινείται σε κάποια θέση, τότε η τελεία ('.') σε εκείνη την θέση εξαφανίζεται. Η πίστα είναι τόρος, δηλαδή αν είσαι στην τελευταία γραμμή της και κινηθείς προς τα κάτω (D) τότε μεταφέρεσαι στην πρώτη γραμμή. Αντίστοιχα για κινήσεις αριστερά-δεξιά. Παραδείγματα εκτέλεσης ακολουθούν:
4872

49-
Γράψτε ένα πρόγραμμα που παίρνει ως όρισμα το όνομα ενός αρχείου που περιέχει ένα κείμενο με λέξεις που αποτελούνται από λατινικούς χαρακτήρες (a-zA-Z) και θετικούς ακεραίους που αντιστοιχούν στην θέση της κάθε λέξης μέσα στο κείμενο και τυπώνει αυτές τις λέξεις με την σειρά που δίνονται ως ορίσματα στο πρόγραμμα. Παραδείγματα εκτέλεσης ακολουθούν:
50-
51-
```
52-
$ gcc -o hidden hidden.c
53-
$ cat message.txt
54-
In the quiet glade, where whispers of the past weave,
55-
Beneath the vault of heaven, a secret to conceive.
56-
The oak, ancient and large, guards a mystery so deep,
57-
Within its shadowed roots, a treasure lies asleep.
58-
Hidden by time's embrace, under earth's tender keep,
59-
Near the tree, love's promise, forever to reap
60-
$ ./hidden message.txt 19 34 35 42 1 23 20 49
61-
The treasure lies under the large oak tree
62-
$ ./hidden message.txt 19 34 35 29
63-
The treasure lies Within
6473
```
74+
$ gcc -o pacman pacman.c
75+
$ cat level.txt
76+
7
77+
.......
78+
.......
79+
..P....
80+
.......
81+
.......
82+
.......
83+
.......
84+
$ ./pacman level.txt RRD
85+
.......
86+
.......
87+
.. ..
88+
....P..
89+
.......
90+
.......
91+
.......
92+
$ ./pacman level.txt RRDDLL
93+
.......
94+
.......
95+
.. ..
96+
.... ..
97+
..P ..
98+
.......
99+
.......
100+
$ ./pacman level.txt RRDDLLUU
101+
.......
102+
.......
103+
..P ..
104+
.. . ..
105+
.. ..
106+
.......
107+
.......
108+
$ ./pacman level.txt RRDDLLUULLLL
109+
.......
110+
.......
111+
P
112+
.. . ..
113+
.. ..
114+
.......
115+
.......
65116
66-
Παρατηρούμε ότι η λέξη "The" τυπώνεται πρώτη καθώς είναι η 20η λέξη στο κείμενο, δηλαδή βρίσκεται στην θέση 19 και αυτός είναι ο πρώτος ακέραιος που δόθηκε ως όρισμα στην γραμμή εντολών μετά το αρχείο. Αντίστοιχα τυπώνονται και οι υπόλοιπες λέξεις.
67-
68-
## 4. Πλησιάζοντας στον Στόχο (25 Μονάδες)
69-
70-
### Πρόγραμμα: treasure.c
117+
```
71118

72-
Γράψτε ένα πρόγραμμα το οποίο παίρνει ως ορίσματα από την γραμμή εντολών μια συντεταγμένη στόχο (goal) και στην συνέχεια ένα σύνολο άλλων συντεταγμένων (starting points) και τυπώνει όλες τις συντεταγμένες ταξινομημένες σε αύξουσα σειρά με βάση την απόστασή τους από τον στόχο. Όλοι οι αριθμοί κινητής υποδιαστολής θέλουμε να τυπώνονται με ακρίβεια με δύο δεκαδικών ψηφίων. Όλες οι συντεταγμένες είναι της μορφής x,y όπου x,y είναι αριθμοί κινητής υποδιαστολής. Η απόσταση δύο σημείων x1,y1 και x2,y2 δίνεται από την έκφραση:
119+
## 4. Clyde Πρώτοι (25 Μονάδες)
73120

74-
$$ \sqrt{(x2 - x1)^2 + (y2 - y1)^2} $$
121+
### Πρόγραμμα: clyde.c
75122

76-
Παράδειγμα εκτέλεσης ακολουθεί:
123+
Ένας ακέραιος λέγεται πρώτος όταν διαιρείται μόνο με τον εαυτό του και την μονάδα. Ένας πρώτος λέγεται clyde πρώτος όταν υπάρχει μια περιστροφή των ψηφίων του (με βάση το 10) που είναι επίσης πρώτος. Γράψτε ένα πρόγραμμα που παίρνει έναν ακέραιο από την κονσόλα και αποφαίνεται αν είναι Clyde πρώτος ή όχι. Παραδείγματα εκτέλεσης:
77124

78125
```
79-
$ gcc -o treasure treasure.c -lm
80-
$ ./treasure 17,42 3.01,50.5 27.27,7 32,65.1 25,4 77,42.42 50,50 30.30,12
81-
1. Point 3.01,50.50 is 16.37 steps away from the goal
82-
2. Point 32.00,65.10 is 27.54 steps away from the goal
83-
3. Point 30.30,12.00 is 32.82 steps away from the goal
84-
4. Point 50.00,50.00 is 33.96 steps away from the goal
85-
5. Point 27.27,7.00 is 36.48 steps away from the goal
86-
6. Point 25.00,4.00 is 38.83 steps away from the goal
87-
7. Point 77.00,42.42 is 60.00 steps away from the goal
126+
$ gcc -o clyde clyde.c -lm
127+
$ ./clyde 13
128+
13 is a clyde prime because 31 is prime too
129+
$ ./clyde 99923
130+
99923 is a clyde prime because 92399 is prime too
131+
$ ./clyde 41
132+
41 is NOT a clyde prime
133+
$ ./clyde 99924
134+
99924 is NOT a clyde prime
135+
$ ./clyde 90000520793
136+
90000520793 is a clyde prime because 93900005207 is prime too
88137
```

exams/2023/fall/ex11/description.txt

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
In the Pac-Man universe, Blinky is the red ghost who
2+
persistently chases the game's hero, earning the
3+
nickname "Shadow" for his relentless pursuit.
4+
Blinky's strategy intensifies as Pac-Man consumes
5+
more dots, making Blinky a formidable challenge and
6+
a central figure in game strategy. His vivid red hue
7+
not only marks Blinky as the primary antagonist but
8+
also signals the immediate threat he poses.

exams/2023/fall/ex11/level.txt

+8
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
7
2+
.......
3+
.......
4+
..P....
5+
.......
6+
.......
7+
.......
8+
.......

0 commit comments

Comments
 (0)