All Your Base

All Your Base

Μέτριο

Εισαγωγή

Μόλις προσλήφθηκες ως καθηγητής μαθηματικών. Η πρώτη σου εβδομάδα κύλησε καλά, αλλά κάτι δεν πάει καλά τη δεύτερη εβδομάδα. Το πρόβλημα είναι ότι κάθε απάντηση που δίνουν οι φοιτητές σου είναι λανθασμένη! Ευτυχώς, χάρη στις μαθηματικές σου ικανότητες κατάφερες να εντοπίσεις το πρόβλημα: οι απαντήσεις των φοιτητών είναι σωστές, αλλά είναι όλες στη βάση 2 (δυαδικό)! Το εκπληκτικό είναι ότι κάθε εβδομάδα οι φοιτητές χρησιμοποιούν διαφορετική βάση. Για να επαληθεύεις γρήγορα τις απαντήσεις των φοιτητών, θα φτιάξεις ένα εργαλείο μετατροπής μεταξύ βάσεων.

Οδηγίες

Μετέτρεψε μια ακολουθία ψηφίων σε μία βάση, που αναπαριστά έναν αριθμό, σε μια ακολουθία ψηφίων σε μια άλλη βάση, που αναπαριστά τον ίδιο αριθμό.

Note

Προσπάθησε να υλοποιήσεις εσύ τη μετατροπή. Μην χρησιμοποιήσεις κάτι άλλο για να κάνει τη μετατροπή για σένα.

Σχετικά με τη θεσιακή σημειογραφία

Στη θεσιακή σημειογραφία, ένας αριθμός σε βάση b μπορεί να κατανοηθεί ως ένας γραμμικός συνδυασμός δυνάμεων του b.

Ο αριθμός 42, σε βάση 10, σημαίνει:

(4 × 10¹) + (2 × 10⁰)

Ο αριθμός 101010, σε βάση 2, σημαίνει:

(1 × 2⁵) + (0 × 2⁴) + (1 × 2³) + (0 × 2²) + (1 × 2¹) + (0 × 2⁰)

Ο αριθμός 1120, σε βάση 3, σημαίνει:

(1 × 3³) + (1 × 3²) + (2 × 3¹) + (0 × 3⁰)

Ναι. Αυτοί οι τρεις αριθμοί παραπάνω είναι ακριβώς οι ίδιοι. Συγχαρητήρια!

Υλοποίηση

Παραδοχές:

  1. Το μηδέν αναπαρίσταται πάντα στις εξόδους ως [0] αντί για [].
  2. Σε καμία άλλη περίπτωση δεν υπάρχουν αρχικά μηδενικά σε οποιεσδήποτε εξόδους.
  3. Τα αρχικά μηδενικά γίνονται δεκτά στις εισόδους.
  4. Μια κενή ακολουθία ψηφίων εισόδου θεωρείται μηδέν και όχι σφάλμα.

Χειρίσου τις προβληματικές περιπτώσεις επιστρέφοντας ένα σφάλμα του οποίου η μέθοδος Error() επιστρέφει ένα από τα παρακάτω μηνύματα:

  • input base must be >= 2
  • output base must be >= 2
  • all digits must satisfy 0 <= d < input base
Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Go Exercism

Έτοιμος να ξεκινήσεις την άσκηση All Your Base;

Γράψου στο Exercism για να μάθεις και να κατακτήσεις Go με 34 έννοιες165 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.