Σου δίνεται η ευκαιρία να γράψεις λογισμικό για το Bracketeer™, ένα αρχαίο αλλά ισχυρό mainframe. Το λογισμικό που τρέχει πάνω του είναι γραμμένο σε μια ιδιόκτητη γλώσσα. Μεγάλο μέρος της σύνταξής του είναι οικείο, αλλά παρατηρείς πάρα πολλές αγκύλες, άγκιστρα και παρενθέσεις. Παρά το ότι το Bracketeer™ είναι ισχυρό, δεν έχει ευελιξία. Αν ο πηγαίος κώδικας έχει μη ισορροπημένες αγκύλες, άγκιστρα ή παρενθέσεις, το Bracketeer™ καταρρέει και πρέπει να το επανεκκινήσεις. Για να αποφύγεις ένα τέτοιο σενάριο, αρχίζεις να γράφεις κώδικα που μπορεί να επαληθεύσει ότι οι αγκύλες, τα άγκιστρα και οι παρενθέσεις είναι ισορροπημένες πριν προσπαθήσεις να τον τρέξεις στο Bracketeer™.
Δεδομένης μιας συμβολοσειράς που περιέχει αγκύλες [], άγκιστρα {}, παρενθέσεις (), ή οποιονδήποτε συνδυασμό αυτών, επαλήθευσε ότι όλα ανεξαιρέτως τα ζεύγη ταιριάζουν και είναι σωστά εμφωλευμένα.
Οποιοιδήποτε άλλοι χαρακτήρες πρέπει να αγνοούνται.
Για παράδειγμα, το "{what is (42)}?" είναι ισορροπημένο και το "[text}" δεν είναι.
Μπορείς να υποθέσεις ότι η είσοδος της isBalanced δεν περιέχει ποτέ περισσότερα από 10 επίπεδα εμφώλευσης.
Μη διστάσεις να λύσεις αυτή την άσκηση χωρίς να χρησιμοποιήσεις τον allocator, αλλά πρόσεξε ότι η συνάρτηση isBalanced δεν μπορεί να επιστρέψει μόνο bool, γιατί τα τεστ χρησιμοποιούν το try.
Γράψου στο Exercism για να μάθεις και να κατακτήσεις Zig με 104 ασκήσεις και πραγματική καθοδήγηση από ανθρώπους, όλα δωρεάν.