Parcours
/
SQLite
SQLite
/
Exercices
/
All Your Base
All Your Base

All Your Base

Difficile

Introduction

Tu viens d'être embauché comme professeur de mathématiques. La première semaine s'est bien passée, mais quelque chose ne tourne pas rond la deuxième. Le problème, c'est que toutes les réponses données par tes étudiants sont fausses ! Heureusement, tes compétences en mathématiques t'ont permis d'identifier le problème : les réponses des étudiants sont correctes, mais elles sont toutes en base 2 (binaire) ! Étonnamment, il s'avère que chaque semaine, les étudiants utilisent une base différente. Pour t'aider à vérifier rapidement les réponses des étudiants, tu vas construire un outil pour convertir d'une base à une autre.

Instructions

Convertis une séquence de chiffres dans une base, représentant un nombre, en une séquence de chiffres dans une autre base, représentant ce même nombre.

Note

Essaie d'implémenter la conversion toi-même. N'utilise pas autre chose pour faire la conversion à ta place.

À propos de la notation positionnelle

Dans la notation positionnelle, un nombre en base b peut se comprendre comme une combinaison linéaire des puissances de b.

Le nombre 42, en base 10, signifie :

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

Le nombre 101010, en base 2, signifie :

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

Le nombre 1120, en base 3, signifie :

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

Oui. Ces trois nombres ci-dessus sont exactement les mêmes. Félicitations !

  • La colonne digits contient une liste d'entiers encodée en JSON. Exemple :
    [1,0,1,0,1,0]
    
  • La colonne result doit contenir des données encodées en JSON : un objet avec les chiffres sous forme d'entiers ou une description des éventuelles erreurs. Exemples :
    {"digits":[1,0,1,0,1,0]}
    
    ou
    {"error":"some error description"}
    

Schéma de la table

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

Documentation JSON

Fonctions et opérateurs JSON

Modifie via GitHub Le lien s'ouvre dans une nouvelle fenêtre ou un nouvel onglet
SQLite Exercism

Prêt à commencer All Your Base ?

Inscris-toi sur Exercism pour apprendre et maîtriser SQLite avec 81 exercices, et un vrai mentorat humain, le tout gratuitement.