Διαδρομές
/
Elixir
Elixir
/
Ασκήσεις
/
Χρεώσεις ελεύθερου επαγγελματία
Χρεώσεις ελεύθερου επαγγελματία

Χρεώσεις ελεύθερου επαγγελματία

Άσκηση εκμάθησης

Εισαγωγή

Ακέραιοι

Στην Elixir υπάρχουν δύο διαφορετικά είδη αριθμών: οι ακέραιοι και τα float.

integer = 3
# => 3

Αριθμοί κινητής υποδιαστολής

Τα float είναι αριθμοί με ένα ή περισσότερα ψηφία μετά την υποδιαστολή. Χρησιμοποιούν τη μορφή κινητής υποδιαστολής διπλής ακρίβειας 64-bit.

float = 3.45
# => 3.45

Εργασία με αριθμούς

Στα module Integer και Float μπορείς να βρεις μερικές χρήσιμες συναρτήσεις για να δουλέψεις με αυτούς τους τύπους. Οι βασικοί αριθμητικοί τελεστές ορίζονται στο module Kernel.

Μετατροπή

Οι ακέραιοι και τα float μπορούν να αναμειχθούν σε μια αριθμητική παράσταση. Η χρήση ενός float σε μια παράσταση εξασφαλίζει ότι το αποτέλεσμα θα είναι κι αυτό float.

2 * 3
# => 6

2 * 3.0
# => 6.0

Ωστόσο, όταν κάνεις διαίρεση, το αποτέλεσμα θα είναι πάντα float, ακόμα κι αν χρησιμοποιείς μόνο ακέραιους.

6 / 2
# => 3.0

Για να μετατρέψεις ένα float σε ακέραιο, μπορείς να απορρίψεις το δεκαδικό μέρος με trunc/1.

Οδηγίες

Σε αυτή την άσκηση, θα γράψεις κώδικα για να βοηθήσεις έναν freelancer να συνεννοηθεί με έναν project manager. Η αποστολή σου είναι να παρέχεις μερικά βοηθητικά εργαλεία για να υπολογίζεις γρήγορα ημερήσιες και μηνιαίες χρεώσεις, προαιρετικά με μια δεδομένη έκπτωση.

Πρώτα ορίζουμε μερικούς κανόνες ανάμεσα στον freelancer και στον project manager:

  • Η ημερήσια χρέωση είναι 8 φορές την ωριαία χρέωση.
  • Ένας μήνας έχει 22 χρεώσιμες ημέρες.

Κάποιες φορές, ο freelancer προσφέρει έκπτωση στην ημερήσια χρέωσή του (για παράδειγμα, για τους πιο πιστούς πελάτες του ή για μη κερδοσκοπικούς πελάτες).

Οι εκπτώσεις μοντελοποιούνται ως δεκαδικοί αριθμοί που αντιπροσωπεύουν ποσοστά, για παράδειγμα 25.0 (25%).

1. Υπολόγισε την ημερήσια χρέωση με δεδομένη την ωριαία χρέωση

Υλοποίησε μια συνάρτηση με όνομα daily_rate που υπολογίζει την ημερήσια χρέωση με δεδομένη την ωριαία χρέωση ως παράμετρο. Το συμβόλαιο ορίζει ότι μια ημέρα έχει 8 χρεώσιμες ώρες.

FreelancerRates.daily_rate(60)
# => 480.0

Η ημερήσια χρέωση που επιστρέφεται πρέπει να είναι float.

2. Υπολόγισε μια τιμή με έκπτωση

Υλοποίησε μια συνάρτηση apply_discount που υπολογίζει την τιμή μετά από έκπτωση.

FreelancerRates.apply_discount(150, 10)
# => 135.0

Η τιμή που επιστρέφεται πρέπει να είναι πάντα float, χωρίς καμία στρογγυλοποίηση.

3. Υπολόγισε τη μηνιαία χρέωση, με δεδομένη την ωριαία χρέωση και μια έκπτωση

Υλοποίησε μια συνάρτηση monthly_rate που υπολογίζει τη μηνιαία χρέωση με έκπτωση. Παίρνει δύο παραμέτρους, μια ωριαία χρέωση και την έκπτωση σε ποσοστό.

FreelancerRates.monthly_rate(77, 10.5)
# => 12130

Η μηνιαία χρέωση που επιστρέφεται πρέπει να στρογγυλοποιείται προς τα πάνω (να παίρνεις την οροφή) στον πλησιέστερο ακέραιο.

4. Υπολόγισε τον αριθμό των πλήρων εργάσιμων ημερών με δεδομένο έναν προϋπολογισμό, την ωριαία χρέωση και μια έκπτωση

Υλοποίησε μια συνάρτηση days_in_budget που παίρνει έναν προϋπολογισμό, μια ωριαία χρέωση και μια έκπτωση, και υπολογίζει πόσες πλήρεις εργάσιμες ημέρες καλύπτει.

FreelancerRates.days_in_budget(20000, 80, 11.0)
# => 35.1

Ο αριθμός των εργάσιμων ημερών που επιστρέφεται πρέπει να στρογγυλοποιείται προς τα κάτω (να παίρνεις το δάπεδο) σε ένα δεκαδικό ψηφίο.

Επεξεργασία μέσω GitHub Ο σύνδεσμος ανοίγει σε νέο παράθυρο ή καρτέλα
Elixir Exercism

Έτοιμος να ξεκινήσεις την άσκηση Χρεώσεις ελεύθερου επαγγελματία;

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