Nameless Ghoul έγραψε: 23 Ιούλ 2018, 10:14
Πράγματι, αυτή είναι ακόμα καλύτερη λύση - για την ακρίβεια, η καλύτερη δυνατή (χωρίς παράλληλες επεξεργασίες). Για πες όμως, πως επιτυγχάνεις αυτήν τη "σωστή σειρά";
(Δεν είναι ερώτηση παγίδα, υπάρχει συγκεκριμένη απάντηση, και μάλιστα είναι σχετικά απλή.)
ελέγχουμε ποιο θα γίνει μεγαλύτερο, αυτό που θα του προσθέσουμε 659 ή 943
Παράγω τα γινόμενα του αριθμού a και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω ενός εικονικού κενού πίνακα το 'FIZZ'.
Παράγω τα γινόμενα του αριθμού b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'BUZZ'. Αν έχει 'FIZZ' εκεί θα αντικατασταθεί.
Παράγω τα γινόμενα του γινομένου a*b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'FIZZ-BUZZ'. Θα έχει 'BUZZ' εκεί και θα αντικατασταθεί.
Δημιουργώ τους αριθμούς από 1 έως 10^7 και κάθε έναν τον τυπώνω, τυπώνοντας παράλληλα δίπλα του την τιμή που έχει στην αντίστοιχη γραμμή από τον παραπάνω πίνακα. Αν δεν υπάρχει τίποτα, δεν θα τυπωθεί τίποτα.
Έχω εξαιρέσει τις πράξεις μέσα στους βρόχους, δεν κάνω καθόλου ταξινόμηση πίνακα, δεν κάνω συγκρίσεις (συνθήκες if), έχω μόνο έναν πίνακα με ~25.000 γραμμές.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας». Stephen Hawking
Παράγω τα γινόμενα του αριθμού a και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω ενός εικονικού κενού πίνακα το 'FIZZ'.
Παράγω τα γινόμενα του αριθμού b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'BUZZ'. Αν έχει 'FIZZ' εκεί θα αντικατασταθεί.
Παράγω τα γινόμενα του γινομένου a*b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'FIZZ-BUZZ'. Θα έχει 'BUZZ' εκεί και θα αντικατασταθεί.
Δημιουργώ τους αριθμούς από 1 έως 10^7 και κάθε έναν τον τυπώνω, τυπώνοντας παράλληλα δίπλα του την τιμή που έχει στην αντίστοιχη γραμμή από τον παραπάνω πίνακα. Αν δεν υπάρχει τίποτα, δεν θα τυπωθεί τίποτα.
Έχω εξαιρέσει τις πράξεις μέσα στους βρόχους, δεν κάνω καθόλου ταξινόμηση πίνακα, δεν κάνω συγκρίσεις (συνθήκες if), έχω μόνο έναν πίνακα με ~25.000 γραμμές.
Δεν γίνεται αυτό διότι $r1, $r3 $r3 φτάνουν το 10^7.
(Έχεις θέσει ~25000 τιμές , οι υπόλοιπες είναι 0)
auto nextMult659 = 659;
auto nextMult947 = 947;
for(i =1; i < 10^7; i++)
{
auto isMult = false;
if (i == nextMult659)
{
cout << "fizz";
isMult = true;
nextMult659 += 659;
}
if (i == nextMult947)
{
cout << "buzz";
isMult = true;
nextMult947 += 947;
}
if (!isMult) { cout << i; }
cout << " ";
}
Όντως, πολύ καλή η σκέψη του nick.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας». Stephen Hawking
Όταν του λέω τύπωσέ μου το έτος κτήσης για τον αριθμό πινακίδας ΑΑΑ 3013 απλά δεν βρίσκει τίποτα και δεν τυπώνει τίποτα.
Είναι σαν να φτιάχνεις ένα txt με το παραπάνω πινακάκι στη μνήμη. Εκτός αν κάνω κάπου λάθος.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας». Stephen Hawking
Όταν του λέω τύπωσέ μου το έτος κτήσης για τον αριθμό πινακίδας ΑΑΑ 3013 απλά δεν βρίσκει τίποτα και δεν τυπώνει τίποτα.
Είναι σαν να φτιάχνεις ένα txt με το παραπάνω πινακάκι στη μνήμη. Εκτός αν κάνω κάπου λάθος.
Αν κατάλαβα καλά τι εννοείς, μάλλον δεν κατάλαβες σωστά την αρχική εκφώνηση.
Χουργιατς έγραψε: 19 Ιούλ 2018, 16:26
Λοιπόν μιας και ο Σπύρος άνοιξε τον ασκό του άμαζον, ας δούμε παράλληλα και ένα προβληματάκι της γκουγκλ.
Να γραφεί κώδικας σε οποιαδήποτε γλώσσα (*) o οποίος θα τυπώνει τους ακεραίους από το 1 εώς το 10^7 σε διαδοχικές γραμμές, ώστε να εμφανίζεται φιζζ στα πολλαπλάσια του 659, μπαζζ στα πολλαπλάσια του 947, και φιζζμπαζ στα πολλαπλάσια του 624073.
Δηλαδή, πρέπει να τυπώνονται όλοι οι αριθμοί, απλά δίπλα στους συγκεκριμένους να εμφανίζεται και το σχετικό string.
Όταν του λέω τύπωσέ μου το έτος κτήσης για τον αριθμό πινακίδας ΑΑΑ 3013 απλά δεν βρίσκει τίποτα και δεν τυπώνει τίποτα.
Είναι σαν να φτιάχνεις ένα txt με το παραπάνω πινακάκι στη μνήμη. Εκτός αν κάνω κάπου λάθος.
shrike έγραψε: 23 Ιούλ 2018, 13:01
Αν κατάλαβα καλά τι εννοείς, μάλλον δεν κατάλαβες σωστά την αρχική εκφώνηση.
Δηλαδή, πρέπει να τυπώνονται όλοι οι αριθμοί, απλά δίπλα στους συγκεκριμένους να εμφανίζεται και το σχετικό string.
Ναι shrike, το κατάλαβα. Απλώς δεν το είχα κάνει στα προηγούμενα θεωρώντας το τυπική διαδικασία και με ενδιέφερε περισσότερο αν είμαι σε σωστό δρόμο.
Στην τελευταία λύση μου τους τυπώνει όλους. Διάβασε την επεξήγηση.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας». Stephen Hawking
Την τελευταία μου λύση, στο προηγούμενο πώς την κρίνετε; Αξίζει τίποτα κι αν όχι γιατί;
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας». Stephen Hawking
Spiros252 έγραψε: 27 Ιούλ 2018, 16:04
Την τελευταία μου λύση, στο προηγούμενο πώς την κρίνετε; Αξίζει τίποτα κι αν όχι γιατί;
Την κρίνω σωστή. Έχεις φυσικά την ποινή του να χρησιμοποιείς μια πρόσθετη δομή με απαιτήσεις μνήμης (το 'λεξικό' με το ζεύγος κλειδιά-τιμές που λένε στη παηθον) μα η λύση είναι δεκτή.
Συγχαρητήρια από μένα για την απλότητα της λύσης
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας». Stephen Hawking