-
nick
- Δημοσιεύσεις: 5263
- Εγγραφή: 25 Μάιος 2018, 22:21
Μη αναγνωσμένη δημοσίευση
από nick » 23 Ιούλ 2018, 11:36
Nameless Ghoul έγραψε: ↑23 Ιούλ 2018, 10:14
Πράγματι, αυτή είναι ακόμα καλύτερη λύση - για την ακρίβεια, η καλύτερη δυνατή (χωρίς παράλληλες επεξεργασίες). Για πες όμως, πως επιτυγχάνεις αυτήν τη "σωστή σειρά";
(Δεν είναι ερώτηση παγίδα, υπάρχει συγκεκριμένη απάντηση, και μάλιστα είναι σχετικά απλή.)
ελέγχουμε ποιο θα γίνει μεγαλύτερο, αυτό που θα του προσθέσουμε 659 ή 943
Κώδικας: Επιλογή όλων
if(mult659+659>mult943+943)
mult943+=943;
print 'buzz'
else if(mult659+659<mult943+943)
mult659+=659;
print 'fizz'
else
mult659+=659;
mult943+=943;
print 'fizzbuzz'
-
Spiros252
- Διαχειριστής
- Δημοσιεύσεις: 11581
- Εγγραφή: 13 Μαρ 2018, 19:22
- Phorum.gr user: Spiros252
- Τοποθεσία: Αθήνα
Μη αναγνωσμένη δημοσίευση
από Spiros252 » 23 Ιούλ 2018, 12:12
Νέα έκδοση, υλοποίηση του σκεπτικού μου με τη συμπλήρωση φύλλου:
Κώδικας: Επιλογή όλων
<?php
$a = 659;
$b = 947;
$c = $a * $b;
$lim = pow(10,7);
$lima = $lim - $a;
$limb = $lim - $b;
$limc = $lim - $c;
for ($n = 1; $r1 <= $lima; $n++) {
$r1 = $n * $a;
$array[$r1] = 'FIZZ';
}
for ($n = 1; $r2 <= $limb; $n++) {
$r2 = $n * $b;
$array[$r2] = 'BUZZ';
}
for ($n = 1; $r3 <= $limc; $n++) {
$r3 = $n * $c;
$array[$r3] = 'FIZZ-BUZZ';
}
for ($i = 1; $i <= $lim; $i++) {
$value = $array[$i];
print "$i | $value <br />";
}
?>
Επεξήγηση:- Παράγω τα γινόμενα του αριθμού a και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω ενός εικονικού κενού πίνακα το 'FIZZ'.
- Παράγω τα γινόμενα του αριθμού b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'BUZZ'. Αν έχει 'FIZZ' εκεί θα αντικατασταθεί.
- Παράγω τα γινόμενα του γινομένου a*b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'FIZZ-BUZZ'. Θα έχει 'BUZZ' εκεί και θα αντικατασταθεί.
- Δημιουργώ τους αριθμούς από 1 έως 10^7 και κάθε έναν τον τυπώνω, τυπώνοντας παράλληλα δίπλα του την τιμή που έχει στην αντίστοιχη γραμμή από τον παραπάνω πίνακα. Αν δεν υπάρχει τίποτα, δεν θα τυπωθεί τίποτα.
Έχω εξαιρέσει τις πράξεις μέσα στους βρόχους, δεν κάνω καθόλου ταξινόμηση πίνακα, δεν κάνω συγκρίσεις (συνθήκες if), έχω μόνο έναν πίνακα με ~25.000 γραμμές.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας».
Stephen Hawking
-
nick
- Δημοσιεύσεις: 5263
- Εγγραφή: 25 Μάιος 2018, 22:21
-
nick
- Δημοσιεύσεις: 5263
- Εγγραφή: 25 Μάιος 2018, 22:21
Μη αναγνωσμένη δημοσίευση
από nick » 23 Ιούλ 2018, 12:38
Spiros252 έγραψε: ↑23 Ιούλ 2018, 12:12
Νέα έκδοση, υλοποίηση του σκεπτικού μου με τη συμπλήρωση φύλλου:
Κώδικας: Επιλογή όλων
<?php
$a = 659;
$b = 947;
$c = $a * $b;
$lim = pow(10,7);
$lima = $lim - $a;
$limb = $lim - $b;
$limc = $lim - $c;
for ($n = 1; $r1 <= $lima; $n++) {
$r1 = $n * $a;
$array[$r1] = 'FIZZ';
}
for ($n = 1; $r2 <= $limb; $n++) {
$r2 = $n * $b;
$array[$r2] = 'BUZZ';
}
for ($n = 1; $r3 <= $limc; $n++) {
$r3 = $n * $c;
$array[$r3] = 'FIZZ-BUZZ';
}
for ($i = 1; $i <= $lim; $i++) {
$value = $array[$i];
print "$i | $value <br />";
}
?>
Επεξήγηση:- Παράγω τα γινόμενα του αριθμού a και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω ενός εικονικού κενού πίνακα το 'FIZZ'.
- Παράγω τα γινόμενα του αριθμού b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'BUZZ'. Αν έχει 'FIZZ' εκεί θα αντικατασταθεί.
- Παράγω τα γινόμενα του γινομένου a*b και αποθηκεύω στην αντίστοιχη γραμμή με τον αριθμό - αποτέλεσμα που βρίσκω το 'FIZZ-BUZZ'. Θα έχει 'BUZZ' εκεί και θα αντικατασταθεί.
- Δημιουργώ τους αριθμούς από 1 έως 10^7 και κάθε έναν τον τυπώνω, τυπώνοντας παράλληλα δίπλα του την τιμή που έχει στην αντίστοιχη γραμμή από τον παραπάνω πίνακα. Αν δεν υπάρχει τίποτα, δεν θα τυπωθεί τίποτα.
Έχω εξαιρέσει τις πράξεις μέσα στους βρόχους, δεν κάνω καθόλου ταξινόμηση πίνακα, δεν κάνω συγκρίσεις (συνθήκες if), έχω μόνο έναν πίνακα με ~
25.000 γραμμές.
Δεν γίνεται αυτό διότι $r1, $r3 $r3 φτάνουν το 10^7.
(Έχεις θέσει ~25000 τιμές , οι υπόλοιπες είναι 0)
-
Spiros252
- Διαχειριστής
- Δημοσιεύσεις: 11581
- Εγγραφή: 13 Μαρ 2018, 19:22
- Phorum.gr user: Spiros252
- Τοποθεσία: Αθήνα
Μη αναγνωσμένη δημοσίευση
από Spiros252 » 23 Ιούλ 2018, 12:47
Nameless Ghoul έγραψε: ↑23 Ιούλ 2018, 10:35
Αυτή είναι η βέλτιστη δυνατή λύση χωρίς χρήση mod, δηλαδή αυτή που πλησίασε περισσότερο ο nick:
Κώδικας: Επιλογή όλων
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
-
Spiros252
- Διαχειριστής
- Δημοσιεύσεις: 11581
- Εγγραφή: 13 Μαρ 2018, 19:22
- Phorum.gr user: Spiros252
- Τοποθεσία: Αθήνα
Μη αναγνωσμένη δημοσίευση
από Spiros252 » 23 Ιούλ 2018, 12:54
nick έγραψε: ↑23 Ιούλ 2018, 12:38
Δεν γίνεται αυτό διότι $r1, $r3 $r3 φτάνουν το 10^7.
(Έχεις θέσει ~25000 τιμές , οι υπόλοιπες είναι 0)
Δεν γεμίζω τον πίνακα με τα κενά.
Είναι κάπως έτσι:
ΑΡ. ΠΙΝΑΚΙΔΑΣ | ΕΤΟΣ ΚΤΗΣΗΣ
ΑΑΑ 1111 | 1970
ΑΑΑ 1890 | 1971
ΑΑΑ 2991 | 1982
ΑΑΑ 5152 | 1993
ΑΑΑ 9199 | 2000
Όταν του λέω τύπωσέ μου το έτος κτήσης για τον αριθμό πινακίδας ΑΑΑ 3013 απλά δεν βρίσκει τίποτα και δεν τυπώνει τίποτα.
Είναι σαν να φτιάχνεις ένα txt με το παραπάνω πινακάκι στη μνήμη. Εκτός αν κάνω κάπου λάθος.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας».
Stephen Hawking
-
shrike
- Δημοσιεύσεις: 4282
- Εγγραφή: 02 Απρ 2018, 08:39
- Phorum.gr user: Isildur
- Τοποθεσία: Παρά θῖν' ἁλὸς
Μη αναγνωσμένη δημοσίευση
από shrike » 23 Ιούλ 2018, 13:01
Spiros252 έγραψε: ↑23 Ιούλ 2018, 12:54
nick έγραψε: ↑23 Ιούλ 2018, 12:38
Δεν γίνεται αυτό διότι $r1, $r3 $r3 φτάνουν το 10^7.
(Έχεις θέσει ~25000 τιμές , οι υπόλοιπες είναι 0)
Δεν γεμίζω τον πίνακα με τα κενά.
Είναι κάπως έτσι:
ΑΡ. ΠΙΝΑΚΙΔΑΣ | ΕΤΟΣ ΚΤΗΣΗΣ
ΑΑΑ 1111 | 1970
ΑΑΑ 1890 | 1971
ΑΑΑ 2991 | 1982
ΑΑΑ 5152 | 1993
ΑΑΑ 9199 | 2000
Όταν του λέω τύπωσέ μου το έτος κτήσης για τον αριθμό πινακίδας ΑΑΑ 3013 απλά δεν βρίσκει τίποτα και δεν τυπώνει τίποτα.
Είναι σαν να φτιάχνεις ένα txt με το παραπάνω πινακάκι στη μνήμη. Εκτός αν κάνω κάπου λάθος.
Αν κατάλαβα καλά τι εννοείς, μάλλον δεν κατάλαβες σωστά την αρχική εκφώνηση.
Χουργιατς έγραψε: ↑19 Ιούλ 2018, 16:26
Λοιπόν μιας και ο Σπύρος άνοιξε τον ασκό του άμαζον, ας δούμε παράλληλα και ένα προβληματάκι της γκουγκλ.
Να γραφεί κώδικας σε οποιαδήποτε γλώσσα (*) o οποίος
θα τυπώνει τους ακεραίους από το 1 εώς το 10^7 σε διαδοχικές γραμμές, ώστε να εμφανίζεται φιζζ στα πολλαπλάσια του 659, μπαζζ στα πολλαπλάσια του 947, και φιζζμπαζ στα πολλαπλάσια του 624073.
Δηλαδή, πρέπει να τυπώνονται
όλοι οι αριθμοί, απλά δίπλα στους συγκεκριμένους να εμφανίζεται και το σχετικό string.
-
nick
- Δημοσιεύσεις: 5263
- Εγγραφή: 25 Μάιος 2018, 22:21
Μη αναγνωσμένη δημοσίευση
από nick » 23 Ιούλ 2018, 13:08
Spiros252 έγραψε: ↑23 Ιούλ 2018, 12:54
nick έγραψε: ↑23 Ιούλ 2018, 12:38
Δεν γίνεται αυτό διότι $r1, $r3 $r3 φτάνουν το 10^7.
(Έχεις θέσει ~25000 τιμές , οι υπόλοιπες είναι 0)
Δεν γεμίζω τον πίνακα με τα κενά.
Είναι κάπως έτσι:
ΑΡ. ΠΙΝΑΚΙΔΑΣ | ΕΤΟΣ ΚΤΗΣΗΣ
ΑΑΑ 1111 | 1970
ΑΑΑ 1890 | 1971
ΑΑΑ 2991 | 1982
ΑΑΑ 5152 | 1993
ΑΑΑ 9199 | 2000
Όταν του λέω τύπωσέ μου το έτος κτήσης για τον αριθμό πινακίδας ΑΑΑ 3013 απλά δεν βρίσκει τίποτα και δεν τυπώνει τίποτα.
Είναι σαν να φτιάχνεις ένα txt με το παραπάνω πινακάκι στη μνήμη. Εκτός αν κάνω κάπου λάθος.
α οκ , είναι όπως στη javascript
-
Spiros252
- Διαχειριστής
- Δημοσιεύσεις: 11581
- Εγγραφή: 13 Μαρ 2018, 19:22
- Phorum.gr user: Spiros252
- Τοποθεσία: Αθήνα
Μη αναγνωσμένη δημοσίευση
από Spiros252 » 23 Ιούλ 2018, 13:11
shrike έγραψε: ↑23 Ιούλ 2018, 13:01
Αν κατάλαβα καλά τι εννοείς, μάλλον δεν κατάλαβες σωστά την αρχική εκφώνηση.
Δηλαδή, πρέπει να τυπώνονται
όλοι οι αριθμοί, απλά δίπλα στους συγκεκριμένους να εμφανίζεται και το σχετικό string.
Ναι shrike, το κατάλαβα. Απλώς δεν το είχα κάνει στα προηγούμενα θεωρώντας το τυπική διαδικασία και με ενδιέφερε περισσότερο αν είμαι σε σωστό δρόμο.
Στην τελευταία λύση μου τους τυπώνει όλους. Διάβασε την επεξήγηση.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας».
Stephen Hawking
-
Spiros252
- Διαχειριστής
- Δημοσιεύσεις: 11581
- Εγγραφή: 13 Μαρ 2018, 19:22
- Phorum.gr user: Spiros252
- Τοποθεσία: Αθήνα
Μη αναγνωσμένη δημοσίευση
από Spiros252 » 27 Ιούλ 2018, 16:04
Την τελευταία μου λύση, στο προηγούμενο πώς την κρίνετε; Αξίζει τίποτα κι αν όχι γιατί;
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας».
Stephen Hawking
-
Χουργιατς
- Δημοσιεύσεις: 6700
- Εγγραφή: 02 Απρ 2018, 02:06
Μη αναγνωσμένη δημοσίευση
από Χουργιατς » 28 Ιούλ 2018, 16:29
Spiros252 έγραψε: ↑27 Ιούλ 2018, 16:04
Την τελευταία μου λύση, στο προηγούμενο πώς την κρίνετε; Αξίζει τίποτα κι αν όχι γιατί;
Την κρίνω σωστή. Έχεις φυσικά την ποινή του να χρησιμοποιείς μια πρόσθετη δομή με απαιτήσεις μνήμης (το 'λεξικό' με το ζεύγος κλειδιά-τιμές που λένε στη παηθον) μα η λύση είναι δεκτή.
Συγχαρητήρια από μένα για την απλότητα της λύσης
-
shrike
- Δημοσιεύσεις: 4282
- Εγγραφή: 02 Απρ 2018, 08:39
- Phorum.gr user: Isildur
- Τοποθεσία: Παρά θῖν' ἁλὸς
Μη αναγνωσμένη δημοσίευση
από shrike » 30 Ιούλ 2018, 09:53
Μάλλον κάτι δεν πήγε καλά μετά το split,
Spiros252.
Ενώ δεν είμαι ο OP, δείχνει εμένα σαν δημιουργό του νήματος αντί για τον χωριάτη.
-
Spiros252
- Διαχειριστής
- Δημοσιεύσεις: 11581
- Εγγραφή: 13 Μαρ 2018, 19:22
- Phorum.gr user: Spiros252
- Τοποθεσία: Αθήνα
Μη αναγνωσμένη δημοσίευση
από Spiros252 » 31 Ιούλ 2018, 14:06
Διορθώθηκε.
«Η παρουσία μας επιλέγει από ένα τεράστιο σύνολο μόνο σύμπαντα συμβατά με την ύπαρξή μας.
Αν και είμαστε μικροί και ασήμαντοι σε κοσμικό επίπεδο, αυτό μας κάνει κατά κάποιο τρόπο, κύριους της δημιουργίας».
Stephen Hawking
-
-
- 55 Απαντήσεις
- 1716 Προβολές
-
Τελευταία δημοσίευση από dotcom
01 Σεπ 2022, 08:37
-
-
- 17 Απαντήσεις
- 631 Προβολές
-
Τελευταία δημοσίευση από nikos p 2020
09 Οκτ 2022, 18:18
-
-
- 17 Απαντήσεις
- 781 Προβολές
-
Τελευταία δημοσίευση από Citroenakias
12 Φεβ 2023, 19:16
-
-
- 9 Απαντήσεις
- 518 Προβολές
-
Τελευταία δημοσίευση από georgebi
18 Ιαν 2023, 18:59
Phorum.com.gr : Αποποίηση Ευθυνών
Αποποίηση Ευθυνών Διαχείρισης Φόρουμ (Phorum.com.gr)
Οι απόψεις και τα σχόλια που δημοσιεύονται σε αυτό το Φόρουμ είναι προσωπικά και δεν αντιπροσωπεύουν αυτές της Διαχείρισης του Phorum.com.gr
Το κάθε μέλος, σύμφωνα με τους όρους χρήσης που αποδέχτηκε κατά την εγγραφή του, φέρει την αποκλειστική ευθύνη των δημοσιεύσεών του, των απόψεων / θέσεων που εκφράζονται
μέσω αυτής, καθώς και την επιλογή συνδέσμων που τυχόν συμπεριλαμβάνονται.
Η Διαχείριση του Phorum.com.gr σε καμία περίπτωση δεν αποδέχεται οποιαδήποτε ευθύνη, για οποιαδήποτε συμβουλή ή συστάσεις που κάνει ή υπονοεί κάποιο μέλος ή επισκέπτης του Phorum.com.gr
η οποία έχει ως αποτέλεσμα οποιαδήποτε απώλεια / ζημία, με οποιονδήποτε τρόπο, για μέλος του Phorum.com.gr, ή για οποιοδήποτε άλλο πρόσωπο.
Επιπλέον, η Διαχείριση του Phorum.com.gr δεν είναι και δεν μπορεί να είναι υπεύθυνη, για το περιεχόμενο οποιουδήποτε άλλου ιστοτόπου στο Διαδίκτυο,
που έχει συνδεθεί με σύνδεσμο (link) από το Phorum.com.gr
Για άμεση επικοινωνία με τη Διαχείριση του Phorum.com.gr μπορείτε να συμπληρώνετε τη φόρμα της σελίδας Επικοινωνίας του Phorum.com.gr παρακάτω.