φιζζ - μπαζζ (Google Interview test)

Άβαταρ μέλους
Χουργιατς
Δημοσιεύσεις: 6700
Εγγραφή: 02 Απρ 2018, 02:06

φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από Χουργιατς » 19 Ιούλ 2018, 16:26



Λοιπόν μιας και ο Σπύρος άνοιξε τον ασκό του άμαζον, ας δούμε παράλληλα και ένα προβληματάκι της γκουγκλ.
Να γραφεί κώδικας σε οποιαδήποτε γλώσσα (*) o οποίος θα τυπώνει τους ακεραίους από το 1 εώς το 10^7 σε διαδοχικές γραμμές, ώστε να εμφανίζεται φιζζ στα πολλαπλάσια του 659, μπαζζ στα πολλαπλάσια του 947, και φιζζμπαζ στα πολλαπλάσια του 624073.




(* μια γνωστή μου έχει αγαπημένη γλώσσα προγραμματισμού την html)
(*Λύσεις σε σισαρπ δε λαμβάνονται υπόψιν. ούστ)
Τελευταία επεξεργασία από το μέλος Χουργιατς την 19 Ιούλ 2018, 16:38, έχει επεξεργασθεί 2 φορές συνολικά.

Άβαταρ μέλους
shrike
Δημοσιεύσεις: 4282
Εγγραφή: 02 Απρ 2018, 08:39
Phorum.gr user: Isildur
Τοποθεσία: Παρά θῖν' ἁλὸς

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από shrike » 20 Ιούλ 2018, 19:51

Χουργιατς έγραψε:
19 Ιούλ 2018, 16:26
Λοιπόν μιας και ο Σπύρος άνοιξε τον ασκό του άμαζον, ας δούμε παράλληλα και ένα προβληματάκι της γκουγκλ.
Να γραφεί κώδικας σε οποιαδήποτε γλώσσα (*) o οποίος θα τυπώνει τους ακεραίους από το 1 εώς το 10^7 σε διαδοχικές γραμμές, ώστε να εμφανίζεται φιζζ στα πολλαπλάσια του 659, μπαζζ στα πολλαπλάσια του 947, και φιζζμπαζ στα πολλαπλάσια του 624073.
Το εννοείς ή κάνεις πλάκα; Να ξέρω πώς να απαντήσω... :lol:


Nameless Ghoul

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από Nameless Ghoul » 20 Ιούλ 2018, 20:15

Αν ξέρεις τι είδους παιχνίδι είναι το fizz buzz, είναι σχετικά απλή άσκηση.

* Είναι κάτι ανάλογο με το δικό μας εφτά-μπουμ.

Nameless Ghoul

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από Nameless Ghoul » 20 Ιούλ 2018, 20:19

Για να τους εντυπωσιάσεις, πρέπει να ψυλλιαστείς ότι 659 x 947 = 624073. Δηλαδή στον αλγόριθμο σου να τσεκάρεις μονο δύο υπόλοιπα αντί για τρία.

Άβαταρ μέλους
shrike
Δημοσιεύσεις: 4282
Εγγραφή: 02 Απρ 2018, 08:39
Phorum.gr user: Isildur
Τοποθεσία: Παρά θῖν' ἁλὸς

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από shrike » 20 Ιούλ 2018, 20:24

Nameless Ghoul έγραψε:
20 Ιούλ 2018, 20:15
Αν ξέρεις τι είδους παιχνίδι είναι το fizz buzz, είναι σχετικά απλή άσκηση.

* Είναι κάτι ανάλογο με το δικό μας εφτά-μπουμ.
Δεν είχα ιδέα τι είναι το fizz buzz, τώρα που το ανέφερες το έψαξα λίγο.
Στο μεταξύ, είχα γράψει λίγες γραμμές κώδικα και νόμιζα ότι το έκανα. Ακόμα το νομίζω, δηλαδή... απλά με το ψάξιμο διάβασα στα αρπαχτά ότι θεωρείται δύσκολο κλπ. Τι να πω; Εγώ σκέφτηκα ότι απλά θα πρέπει ο πρώτος έλεγχος να αφορά τον μεγάλο αριθμό (που είναι το ΕΚΠ των δύο πρώτων) και στη συνέχεια να ελέγχονται οι άλλοι δύο για να δουλέψει. Να υποθέσω ότι κάτι κάπου χάνω κι ότι πρέπει να το ψάξω παραπάνω; :102:


Άβαταρ μέλους
shrike
Δημοσιεύσεις: 4282
Εγγραφή: 02 Απρ 2018, 08:39
Phorum.gr user: Isildur
Τοποθεσία: Παρά θῖν' ἁλὸς

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από shrike » 20 Ιούλ 2018, 20:26

Nameless Ghoul έγραψε:
20 Ιούλ 2018, 20:19
Για να τους εντυπωσιάσεις, πρέπει να ψυλλιαστείς ότι 659 x 947 = 624073. Δηλαδή στον αλγόριθμο σου να τσεκάρεις μονο δύο υπόλοιπα αντί για τρία.
Σου είπα στο μεταξύ, ότι όχι απλά το ψυλλιάστηκα, είδα ότι είναι και το ΕΚΠ τους. :wink

Αλλά πρέπει να τσεκάρεις και το 624073, έτσι δεν είναι; Άρα, τρία conditions.

Edit: πχ κάτι τέτοιο δεν στέκει;

Κώδικας: Επιλογή όλων

For r = 1 To 10 ^ 7
    If r Mod 624073 = 0 Then
        Print r & " φιζζμπαζ"
    ElseIf r Mod 947 = 0 Then
        Print r & " μπαζζ"
    ElseIf r Mod 659 = 0 Then
        Print r & " φιζζ"
    Else: Print r
    End If
Next
Τελευταία επεξεργασία από το μέλος shrike την 20 Ιούλ 2018, 20:36, έχει επεξεργασθεί 1 φορά συνολικά.


Nameless Ghoul

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από Nameless Ghoul » 20 Ιούλ 2018, 20:33

Να σε βοηθήσω λίγο ακόμα: Τρία conditions, αλλά δύο υπόλοιπα. Αν δουν ότι υπολογίζεις το υπόλοιπο της διαίρεσης με 624073, κόπηκες.

Άβαταρ μέλους
shrike
Δημοσιεύσεις: 4282
Εγγραφή: 02 Απρ 2018, 08:39
Phorum.gr user: Isildur
Τοποθεσία: Παρά θῖν' ἁλὸς

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από shrike » 20 Ιούλ 2018, 20:43

Nameless Ghoul έγραψε:
20 Ιούλ 2018, 20:33
Να σε βοηθήσω λίγο ακόμα: Τρία conditions, αλλά δύο υπόλοιπα. Αν δουν ότι υπολογίζεις το υπόλοιπο της διαίρεσης με 624073, κόπηκες.
Σόρυ, αλλά μάλλον δεν έχω καταλάβει ποιο είναι το ζητούμενο...

Δηλαδή, το παραπάνω που έγραψα θεωρείται λάθος, αλλά θα έστεκε κάτι τέτοιο;

Κώδικας: Επιλογή όλων

For r = 1 To 10 ^ 7
    If r Mod 947 = 0 Then
        If r Mod 659 = 0 Then
            Print r & " φιζζμπαζ"
        Else: Print r & " μπαζζ"        
        Endif
    ElseIf r Mod 659 = 0 Then
        Print r & " φιζζ"
    Else: Print r
    End If
Next
Ή είμαι πολύ μακριά και δεν έχω καταλάβει Χριστό;... :lol:


Nameless Ghoul

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από Nameless Ghoul » 20 Ιούλ 2018, 20:47

Είσαι πάρα πολύ κοντά.

Η λύση που προτείνεις βγάζει σωστό αποτέλεσμα μεν, αλλά το mod είναι σχετικά ακριβός υπολογισμός. Μια λύση με 2 mod αντί για 3 ρίχνει το χρόνο εκτέλεσης στο 66%.

Hint: αποθήκευσε κάπου το αποτέλεσμα των mod. Η τελευταία λύση είναι πιο καλή αλλά υπάρχει μια πιο καθαρή, χωρίς nested if.

Άβαταρ μέλους
shrike
Δημοσιεύσεις: 4282
Εγγραφή: 02 Απρ 2018, 08:39
Phorum.gr user: Isildur
Τοποθεσία: Παρά θῖν' ἁλὸς

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από shrike » 20 Ιούλ 2018, 20:51

Nameless Ghoul έγραψε:
20 Ιούλ 2018, 20:47
Είσαι πάρα πολύ κοντά.

Η λύση που προτείνεις βγάζει σωστό αποτέλεσμα μεν, αλλά το mod είναι σχετικά ακριβός υπολογισμός. Μια λύση με 2 mod αντί για 3 ρίχνει το χρόνο εκτέλεσης στο 66%.

Hint: αποθήκευσε κάπου το αποτέλεσμα των mod. Η τελευταία λύση είναι πιο καλή αλλά υπάρχει μια πιο καθαρή, χωρίς nested if.
Μα, δεν είναι 3. Είναι το πολύ 2 τα Mod. Σε καμμιά περίπτωση δεν χρησιμοποιούνται και τα 3, έτσι όπως το έγραψα.


Nameless Ghoul

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από Nameless Ghoul » 20 Ιούλ 2018, 22:55

Ναι, γι'αυτό λέμε είναι καλύτερη. Αλλά υπάρχει μία ακόμη εκδοχή, πιο "καθαρή", που πιθανόν να υποτιμηθεί σε ανταγωνιστικές συνθήκες π.χ. συνεντεύξεις.

Χιντ: χωρίς else.

Άβαταρ μέλους
nick
Δημοσιεύσεις: 5052
Εγγραφή: 25 Μάιος 2018, 22:21

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από nick » 20 Ιούλ 2018, 23:06

for(1 .. 10000000)
if(i mod 947==0) 'fizz'
if(i mod 659==0) 'buzz'

Άβαταρ μέλους
ST48410
Δημοσιεύσεις: 24332
Εγγραφή: 31 Μαρ 2018, 20:21

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από ST48410 » 20 Ιούλ 2018, 23:15

Εγώ που δεν ξέρω από προγραμματισμό μπορώ να παίξω;

θα έκανα πρώτα την διαίρεση του αριθμού με 624073

Αν το υπόλοιπο είναι μηδέν τότε φιζζμπαζ
Αν το υπόλοιπο είναι 659 τότε φιζζ
Αν το υπόλοιπο είναι 947 τότε μπαζ

Nameless Ghoul

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από Nameless Ghoul » 20 Ιούλ 2018, 23:21

Όχι ακριβώς.

Σκέψου το έτσι:

Μεταξύ του 1 και του 624073, πόσοι είναι φιζζμπαζ;

(Πλησιασες λίγο όμως)
Τελευταία επεξεργασία από το μέλος Nameless Ghoul την 20 Ιούλ 2018, 23:21, έχει επεξεργασθεί 1 φορά συνολικά.

Άβαταρ μέλους
nick
Δημοσιεύσεις: 5052
Εγγραφή: 25 Μάιος 2018, 22:21

Re: φιζζ - μπαζζ (Google Interview test)

Μη αναγνωσμένη δημοσίευση από nick » 20 Ιούλ 2018, 23:21

Δεν διαιρείται μονο το 624073k+659 με το 659 αλλα και το 624073k+2*659, 624073k+3*659...

Απάντηση


  • Παραπλήσια Θέματα
    Απαντήσεις
    Προβολές
    Τελευταία δημοσίευση

Επιστροφή στο “Μαθηματικοί Γρίφοι”

Phorum.com.gr : Αποποίηση Ευθυνών