Écrivez un programme qui traduit le texte ASCII en sortie braille . Exigences:
- L'entrée peut provenir de stdin, de la ligne de commande ou d'une autre source d'entrée externe.
- La sortie doit être reconnaissable en braille, la forme de la sortie dépend de vous. Un exemple serait
o
pour un point en relief et.
pour un point non en relief. Une représentation textuelle comme celle-ci1-3-4
n'est pas acceptable. Un enroulement longue ligne n'est pas requis. - Seuls les 26 caractères alphabétiques et l'espace sont requis pour une solution minimale. Tous les caractères saisis non pris en charge par votre solution doivent être ignorés.
La notation se fait par nombre de caractères dans le code source. Les pénalités et bonus sont:
- Pénalité de +50 pour l'utilisation de caractères braille Unicode en sortie.
- -50 bonus pour prendre en charge les majuscules, les chiffres et la ponctuation.
-200 bonus pour soutenir les ligatures et les contractions à une lettre du braille anglais (2e année) .(Cela en fera un défi distinct car c'est un problème assez différent.)
Exemple d'appel et de sortie (solution minimale):
$ braille Hello world
o . o . o . o . o . . . . o o . o . o . o o
o o . o o . o . . o . . o o . o o o o . . o
. . . . o . o . o . . . . o o . o . o . . .
Réponses:
Python, 162
Prend actuellement en charge les lettres minuscules et une certaine ponctuation, mais c'est toujours un travail en cours.
Exemple:
la source
Python -
9075 + 50 = 125Utilisez des lettres minuscules.
One-liner (merci aux ɐɔıʇǝɥʇuʎs)
la source
for l in input():print("⠀⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵"[max(0,ord(l)-96)],end="")
75 caractères.max
astuce. Mercifor l in input():print((" "*97+"⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵")[ord(l)],end="")
C, 269
Cette implémentation nécessite que son argument, s'il contient des espaces, soit cité:
la source
BBC Basic 103 caractères ASCII ou 92 jetons
Peut-être pas tout à fait ce que l'OP avait prévu, cela redéfinit la police des caractères minuscules.
VDU 23,n,a,b,c,d,e,f,g,h
assigne un bitmap 8x8 au caractère n, composé de huit octets. Le fait de suivre un paramètre avec un point-virgule au lieu d'une virgule le fait être traité comme un nombre en petits caractères à deux octets.Les modèles en braille pour les lettres
a
jusqu'àz
sont stockés dans A $, selon le modèle de bits suivant. Ceci est extrait par des masques avec 9 = binaire1001
et des changements de droits (la division par 2 et 4 est utilisée car la base BBC standard n'a pas d'opérateur de décalage.)Code non golfé
Exemple d'utilisation
Cela se fait en mode écran 6 pour plus de clarté (tapez MODE6 dès que vous ouvrez l'émulateur de ligne de commande.)
En fait, après l'exécution du code, toutes les lettres minuscules (y compris la saisie au clavier) apparaissent en braille.
Émulateur sur http://bbcbasic.co.uk/bbcwin/bbcwin.html .
Voir également ma réponse similaire: /codegolf//a/28869/15599
la source
Bash + coreutils
Solution minimale - minuscules uniquement, 83 (33 caractères unicode + 50 pénalités):
Capitales, nombres et ponctuation, 120 (120 caractères unicode + 50 pénalités - 50 bonus):
Exemple de sortie:
la source
PHP, 331
Pas de bonus pour l'instant.
la source
<?
au lieu d'<?php[SPACE]
enregistrer 4 caractères.JavaScript - 286
Premier essai. Pas de bonus.
la source
w=prompt().split("");for(i=0;i<w.length;i++)z=w[i],o="o",p=".",b=[1,5,3,11,9,7,15,13,6,14],e=[c="",1,3],g=z.charCodeAt(0)-97,22<g&&g--,f=e[g/10|0],d=b[g%10],22==g&&(d=14,f=2),c+=d&1?o:p,c+=d&2?o:p,c+="\n",c+=d&4?o:p,c+=d&8?o:p,c+="\n",c+=f&1?o:p,c+=f&2?"o\n":".\n",console.log(c)
CJam - 51
Essayez-le sur http://cjam.aditsu.net/
Exemple d'entrée:
Exemple de sortie:
Il ne prend en charge que les minuscules et l'espace. D'autres caractères sont mappés aux caractères pris en charge (en particulier les lettres majuscules à minuscules).
Explication:
Les caractères braille sont codés en utilisant 1 pour un point en relief et 0 pour un point non en relief, de gauche à droite et de haut en bas. Cela donne 6 chiffres de base 2; un 1 est ajouté pour éviter de supprimer les zéros en tête, puis le nombre est converti en base 10 puis en caractère ASCII correspondant.
Exemple: t -> ⠞ -> 01/11/10 -> 1011110 -> 94 -> ^
Le programme reconvertit chaque caractère en triplet de paires de bits (comme
[[0 1][1 1][1 0]]
) en obtenant une matrice de paires de bits. La matrice est ensuite transposée et des séparateurs sont ajoutés (espaces dans les lignes, nouvelles lignes entre les lignes).q
lit l'entrée dans une chaîne = tableau de caractères{…}%
applique le bloc à chaque caractèrei32%
obtient le code ASCII mod 32 (espace-> 0, a-> 1, b-> 2, z-> 26)"@`hptdx|lX\bjrvfz~nZ^ck]swg"
est une chaîne contenant les caractères braille encodé comme expliqué précédemment=
obtient le caractère braille codé correspondant de la chaînei2b
obtient le code ASCII puis convertit en base 2 (obtention d'un tableau de 7 chiffres)1>
supprime le premier chiffre2/
divise le tableau en (3) pairesz
transpose la matriceSf*
joint chaque ligne avec espacesN*
rejoint les lignes avec des retours à la lignela source
C,
249244L'entrée est un argument de ligne de commande, qui doit être échappé ou cité si la chaîne contient des espaces. Les caractères pris en charge sont les lettres minuscules et l'espace. Les caractères non pris en charge sont supprimés en silence.
Edit: rasé de 5 octets en simplifiant une condition
la source
perl, 195 + 2-50 = 147
Cela gère le capital, le nombre et la ponctuation, sans compter sur unicode (195 octets + 2 octets (pour
-pl
) - 50 bonus)Avec retrait:
Exemple de sortie
la source
Javascript ES6 -
282309297283270 - 50 =232259233220 octetsCe serait plus court, mais la vérification des majuscules faisait mal .
EDIT: Merci à mbomb007 de m'avoir sauvé deux octets - malheureusement, j'ai trouvé qu'un peu de golf précédent avait tout gâché, j'ai donc dû ajouter 27 caractères.
EDIT: Aa et 12 octets enregistrés en déplaçant les espaces.
EDIT: réalisé qu'il était stupide de sortir en tant que caractères, et a sauvé pas mal d'octets. J'ai également enregistré quelques caractères en échangeant k = (a, b) => a% (2 * b)> b-1? 1: 0 pour k = (a, b) => a% b> ~ -b / 2? 1: 0.
la source
string.toLowerCase
à une variable?1-9-->a-i
et0-->j