Boring Business
Η διάτρηση διεύρυνσης είναι ένα είδος γεώτρησης, συγκεκριμένα, η διάνοιξη μιας σήραγγας, ενός φρέατος ή μιας τρύπας στη γη. Μετά από ορισμένα πρόσφατα γεγονότα, όπως η πετρελαιοκηλίδα στον κόλπο του Μεξικού και η διάσωση των χιλιανών ανθρακωρύχων, ο κόσμος συνειδητοποίησε την πολυπλοκότητα της τρέχουσας τεχνολογίας διατρήσεων. Χρησιμοποιώντας την τεχνική που είναι γνωστή ως geosteering, οι χειριστές των γεωτρύπανων μπορούν να τρυπήσουν κάθετα, οριζόντια ή ακόμη και υπό κεκλιμένη γωνία.
Πριν από μια γεώτρηση προετοιμάζεται ένα σχέδιό της, το οποίο ορίζει μια ακολουθία γραμμών, που αντιπροσωπεύει το γεωμετρικό σχήμα της μελλοντικής γεώτρησης. Ωστόσο, καθώς νέες πληροφορίες καθίστανται διαθέσιμες κατά τη διάρκεια της γεώτρησης, το μοντέλο μπορεί να ενημερωθεί και το σχέδιο να τροποποιηθεί.
Στόχος σας είναι να γράψετε ένα πρόγραμμα που να επαληθεύει την εγκυρότητα ενός σχεδίου γεώτρησης- θα ελέγχει ότι η γεώτρηση δεν θα τέμνει τον εαυτό της. Για την αναπαράσταση μιας κατακόρυφης διατομής της γεώτρησης χρησιμοποιείται ένα δισδιάστατο σχέδιο το οποίο περιλαμβάνει και γεώτρηση που έχει ήδη πραγματοποιηθεί και ξεκινά από το σημείο και κινείται προς το . Θα κωδικοποιήσετε στο πρόγραμμά σας το τρέχον σχέδιο γεώτρησης που φαίνεται στο σχήμα παρακάτω:
Είσοδος
Η είσοδος αποτελείται από μια ακολουθία ζευγών εντολών διάτρησης. Ένα ζεύγος εντολών διάτρησης αρχίζει με έναν από τους τέσσερις δείκτες κατεύθυνσης ( για κάτω, για πάνω, για αριστερά και για δεξιά) ακολουθούμενο από ένα θετικό μήκος. Υπάρχει μια πρόσθετη εντολή διάτρησης, με δείκτη (quit) ακολουθούμενο από οποιονδήποτε ακέραιο αριθμό, η οποία υποδεικνύει ότι το πρόγραμμα πρέπει να σταματήσει την εκτέλεση. Μπορείτε να υποθέσετε ότι η είσοδος είναι τέτοια ώστε το σημείο διάτρησης δεν θα γίνει:
- να ανυψωθεί πάνω από το έδαφος, ούτε
- να βρίσκεται περισσότερες από μονάδες κάτω από το έδαφος, ούτε
- να είναι περισσότερες από μονάδες αριστερά από το αρχικό σημείο εκκίνησης, ούτε
- να είναι περισσότερες από μονάδες δεξιά του αρχικού σημείου εκκίνησης
Έξοδος
Το πρόγραμμα θα πρέπει να συνεχίσει να παρακολουθεί τη γεώτρηση με δεδομένο οτι η γεώτρηση που φαίνεται στο σχήμα έχει ήδη γίνει. Όπως βλέπουμε είναι η θέση εκκίνησης για το πρόγραμμά σας. Μετά από κάθε εντολή, το πρόγραμμα θα πρέπει να εξάγει μία γραμμή με τις συντεταγμένες της νέας θέσης του τρυπανιού, και ένα από τα δύο σχόλια: αν δεν υπήρξε διασταύρωση με προηγούμενη θέση ή , εάν υπήρξε διασταύρωση με προηγούμενη θέση γεώτρησης. Μετά την ανίχνευση και την αναφορά μιας αυτοδιασταύρωσης, το πρόγραμμά σας πρέπει να σταματήσει.
Παραδείγματα
input
l 2
d 2
r 1
q 0
output
-3 -5 safe
-3 -7 safe
-2 -7 safe
input
r 2
d 10
r 4
output
1 -5 safe
1 -15 DANGER
Comments