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⁰)

نعم. هذه الأعداد الثلاثة أعلاه متطابقة تمامًا. تهانينا!

  • يحتوي عمود digits على قائمة أعداد صحيحة مُرمَّزة بصيغة JSON. مثال:
    [1,0,1,0,1,0]
    
  • يجب أن يحتوي عمود result على بيانات مُرمَّزة بصيغة JSON: كائن يحوي الأرقام كأعداد صحيحة، أو وصف لأي أخطاء. أمثلة:
    {"digits":[1,0,1,0,1,0]}
    
    أو
    {"error":"some error description"}
    

مخطط الجدول

CREATE TABLE IF NOT EXISTS "all-your-base" (
  input_base  INTEGER NOT NULL,
  digits      TEXT    NOT NULL, -- json array
  output_base INTEGER NOT NULL,
  result      TEXT              -- json object
);

توثيق JSON

دوال JSON وعواملها

تعديل عبر GitHub يفتح الرابط في نافذة أو علامة تبويب جديدة
SQLite Exercism

مستعد لبدء All Your Base؟

سجّل في Exercism لتتعلّم وتتقن SQLite عبر 81 تمرينًا، وإرشاد بشري حقيقي، وكل ذلك مجانًا.