CCC-04 (2004) - J5 (Fractals)

View as PDF

Submit solution

Points: 50 (partial)
Time limit: 1.0s
Memory limit: 256M

Author:
Problem type
Allowed languages
C, C++, Java, Pascal, Python
Fractals
ccc04j5-figure.svg

Ένα fractal είναι ένα γεωμετρικό σχήμα όπου το μοτίβο ολόκληρου του σχήματος αυτοαναπαράγεται σε κάθε υποτμήμα του σχήματος. Ένα απλό "block fractal" φαίνεται παρακάτω. Σε κάθε στάδιο της ανάπτυξης του fractal, κάθε ευθεία γραμμή στο fractal χωρίζεται σε τρία ίσα μέρη. Το πρώτο και το τελευταίο τμήμα παραμένουν ευθεία. Το μεσαίο τμήμα περιέχει ένα τετράγωνο κενό (square "bump") το οποίο έχει το ίδιο ύψος με το πλάτος του μεσαίου τμήματος. (Θα θελήσετε να λάβετε υπόψη τους τέσσερις προσανατολισμούς ενός τμήματος γραμμής μέσα στο fractal. Ανάλογα με το τμήμα γραμμής που δημιουργείται αυτήν τη στιγμή, το κενό μπορεί να προεξέχει πάνω, κάτω, αριστερά ή δεξιά.).

Ας υποθέσουμε ότι αυτό το fractal σχεδιάζεται σε ένα καρτεσιανό επίπεδο, όπου το (0, 0) βρίσκεται στην κάτω αριστερή γωνία. Ας υποθέσουμε ότι στο παραπάνω παράδειγμα, το κάτω αριστερό σημείο του fractal είναι στο (0, 1) και το κάτω δεξιά σημείο του fractal είναι στο (27, 1). Για παράδειγμα, η κορυφή του fractal επιπέδου 3 (Level 3) είναι μια γραμμή από το (13, 14) έως το (14, 14).

Γράψτε ένα πρόγραμμα που θα παρακολουθεί τα ακέραια σημεία συντεταγμένων των γραμμών σε ένα παρόμοιο "block fractal" με την κάτω αριστερή γωνία του στο (0, 1). Το πρόγραμμα θα δέχεται τρεις ακέραιους αριθμούς ως είσοδο: το επίπεδο του fractal, το πλάτος του fractal και μια συντεταγμένη x. Μπορείτε να υποθέσετε ότι το πλάτος του fractal θα είναι κάποια δύναμη του 3 και ότι θα είναι αρκετά μεγάλο ώστε κάθε γωνία του να πέφτει σε μια ακέραια τομή στο καρτεσιανό επίπεδο. Το πλάτος δεν θα είναι ποτέ μεγαλύτερο από 81. Η συντεταγμένη x, θα είναι στην περιοχή 0 -πλάτος (κλειστό διάστημα). Το πρόγραμμά σας θα πρέπει να τυπώνει τις τιμές των συντεταγμένων y, όπου οι γραμμές του fractal τέμνουν το σημείο (x,y).

Μπορείτε να σχεδιάσετε μια γραφική αναπαράσταση του fractal για εντοπισμό σφαλμάτων (και για περισσότερο ενδιαφέρον). Ωστόσο, οι περιπτώσεις δοκιμής μπορεί να σας ζητήσουν να ορίσετε fractal που είναι πολύ μεγάλα για να χωρέσουν σε μία οθόνη.

Παραδείγματα

input

3 27 5

output

4 5 6

input

3 27 18

output

1 2 3 4 7 8 9 10

input

2 27 19

output

1 4 7

input

4 81 38

output

37 38 39

Comments

There are no comments at the moment.