Outil pour décoder/code en whitespace, un langage de programmation exotique qui n'utilise que des caractères blancs/invisibles comme espace, tabulation ou retour à la ligne.
Langage Whitespace - dCode
Catégorie(s) : Langage de Programmation
dCode est gratuit et ses outils sont une aide précieuse dans les jeux, les maths, les énigmes, les géocaches, et les problèmes à résoudre au quotidien !
Une suggestion ? un problème ? une idée ? Écrire à dCode !
Le langage de programmation Whitespace tire son nom du fait qu'il utilise uniquement les 3 caractères blancs : espace, tabulation et retour à la ligne. Le code source des programmes écrits en Whitespace sont donc invisibles.
Afin de rendre le code visible, il est courant d'utiliser 3 caractères : S pour espace (Space), T pour tabulation (Tab), et L pour nouvelle ligne (Line feed).
Tout les caractères visibles sont ignorés par le programme et peuvent servir de commentaire (ou pour attirer l'attention). C'est exactement le fonctionnement inverse de la plupart des langages de programmation ou espaces sont généralement ignorés.
Le whitespace utilise une pile, un tas (heap) ainsi que des instructions structurées, qui commencent par un IMP (Instruction Modification Parameter) parmi 5 possibles : S (espace) modifie la pile, TS (tab+espace) réalise un calcul, TT (tab+tab) accède au tas (heap) L (saut de ligne) gère les goto/jump du programme et TL (tab+saut de ligne) gère les entrées/sorties.
La liste complète des 22 instructions du Whitespace :
IMP+Commande | Paramètre | Description |
---|---|---|
S S | Nombre | Empile le nombre |
S LS | Copie le haut de la pile | |
S LT | Inverse les deux éléments du haut de la pile | |
S LL | Enlève le haut de la pile | |
TS SS | Addition | |
TS ST | Soustraction | |
TS SL | Multiplication | |
TS TS | Division (entière) | |
TS TT | Modulo | |
TT S | Enregistre dans le tas | |
TT T | Récupère le tas | |
L SS | Label | Créé un label dans le programme |
L ST | Label | Appel du label |
L SL | Label | Jump vers le label |
L TS | Label | Jump vers le label si le haut de la pile est 0 |
L TT | Label | Jump vers le label si le haut de la pile est < 0 |
L TL | Fin de la subroutine, et retour | |
L LL | Fin du programme | |
TL SS | Affiche le haut de la pile comme un caractère ASCII | |
TL ST | Affiche le haut de la pile comme un nombre entier | |
TL TS | Lit un caractère et l'enregistre à l'adresse décrite par le haut de la pile | |
TL TT | Lit un nombre et l'enregistre à l'adresse décrite par le haut de la pile |
Les nombres respectent une syntaxe propre: signe + valeurs absolue en binaire + saut de ligne. Le signe est S (espace) pour positif ou T (tabulation) pour négatif. La valeur du nombre s'écrit en binaire avec S (espace) pour 0 et T (tabulation) pour 1.
Exemple : Le nombre +100 est positif (codé S) et a pour valeur binaire 1100100 (codé TTSSTSS), donc il se code S TTSSTSS L
Exemple : SS STTSSTSSL TLSS correspond à l'instruction empile le nombre 100 et affiche le sous forme de caractère ASCII, le programme affiche donc d.
L'interprétation du White-space correspond à la lecture et l'application des instructions codées.
Sur dCode, il est possible de lire un fichier (généralement avec l'extension .ws) ou de copier-coller un programme (attention à ne pas rajouter un espace ou un retour à la ligne involontairement car celà pourrait causer des erreurs)
L'exécution se fait dans le navigateur, avec JavaScript.
dCode utilise WS2JS, un intrepréteur Javascript par Luilak (MIT License) ici
Le message est invisible, composé uniquement d'espace, de tabulations et de retour à la ligne.
Parfois, les caractères S, T et C accompagnent le code.
Il est possible d'accompagner le code de n'importe quel texte (caractères visibles uniquement) sans l'affecter, c'est donc une excellente méthode de stéganographie.
Le langage Whitespace a été conçu comme un langage de programmation ésotérique, ce qui signifie qu'il n'est pas destiné à être utilisé comme un outil pratique, mais plutôt comme un moyen de défier et d'amuser les programmeurs.
Whitespace a été décrit le 1er avril 2003 par Edwin Brady et Chris Morris (présenté comme un poisson d'avril) à l'Université de Durham.
dCode se réserve la propriété du code source pour "Langage Whitespace". Sauf code licence open source explicite (indiqué Creative Commons / gratuit), l'algorithme pour "Langage Whitespace", l'applet ou snippet (convertisseur, solveur, chiffrement / déchiffrement, encodage / décodage, encryptage / décryptage, traducteur) ou les fonctions liées à "Langage Whitespace" (calculer, convertir, résoudre, décrypter / encrypter, déchiffrer / chiffrer, décoder / encoder, traduire) codés en langage informatique (Python, Java, C#, PHP, Javascript, Matlab, etc.) ou les données, en téléchargement, script, ou les accès API à "Langage Whitespace" ne sont pas publics, idem pour un usage hors ligne, PC, mobile, tablette, appli iPhone ou Android !
Rappel : dCode est gratuit.
Le copier-coller de la page "Langage Whitespace" ou de ses résultats est autorisée (même pour un usage commercial) tant que vous créditez dCode !
L'exportation des résultats sous forme de fichier .csv ou .txt est gratuite en cliquant sur l'icone export
Citer comme source bibliographique :
Langage Whitespace sur dCode.fr [site web en ligne], consulté le 21/11/2024,