Escriba un programa que traduzca el texto ASCII a la salida en braille . Requisitos:
- La entrada puede provenir de stdin, línea de comando o alguna otra fuente de entrada externa.
- La salida debe ser reconocible como braille, la forma de salida depende de usted. Un ejemplo sería
o
para un punto elevado y.
para un punto no elevado. La representación de patrones textuales como1-3-4
no es aceptable. No se requiere envoltura de línea larga. - Solo se requieren los 26 caracteres del alfabeto y el espacio para una solución mínima. Todos los caracteres de entrada no admitidos por su solución deben ignorarse.
La puntuación es por número de caracteres en el código fuente. Las penalizaciones y bonificaciones son:
- +50 de penalización por usar caracteres braille Unicode como salida.
- -50 de bonificación por apoyar capitales, números y puntuación.
-200 de bonificación por soportar ligaduras y contracciones de una letra del Braille inglés (Grado-2) .(Hará de este un desafío separado ya que es un problema bastante diferente).
Ejemplo de invocación y salida (solución mínima):
$ 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 . . .
Respuestas:
Python, 162
Actualmente admite letras minúsculas y algunos signos de puntuación, pero aún es un trabajo en progreso.
Ejemplo:
fuente
Python -
9075 + 50 = 125Usa letras minúsculas.
One-liner (gracias a ɐɔıʇǝɥʇuʎs)
fuente
for l in input():print("⠀⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵"[max(0,ord(l)-96)],end="")
75 caracteres.max
truco. Graciasfor l in input():print((" "*97+"⠁⠃⠉⠙⠑⠋⠛⠓⠊⠚⠅⠇⠍⠝⠕⠏⠟⠗⠎⠞⠥⠧⠺⠭⠽⠵")[ord(l)],end="")
C, 269
Esta implementación requiere que su argumento, si contiene espacios, debe ser citado:
fuente
BBC Basic 103 caracteres ASCII o 92 fichas
Posiblemente no exactamente lo que pretendía el OP, esto redefine la fuente para los caracteres en minúscula.
VDU 23,n,a,b,c,d,e,f,g,h
asigna un mapa de bits de 8x8 al carácter n, que consta de ocho bytes. Seguir un parámetro con un punto y coma en lugar de una coma hace que se trate como un número little-endian de dos bytes.Los patrones de braille para las cartas
a
a travész
se almacenan en un $, de acuerdo con el siguiente patrón de bits. Esto se extrae con máscaras con 9 = binario1001
y cambios de derechos (la división por 2 y 4 se usa como estándar BBC basic no tiene operador de cambio).Código sin golf
Ejemplo de uso
Esto se realiza en el modo de pantalla 6 para mayor claridad (escriba MODE6 tan pronto como abra el emulador de línea de comandos).
En realidad, después de ejecutar el código, cualquier letra minúscula (incluida la entrada del teclado) aparece en Braille.
Emulador en http://bbcbasic.co.uk/bbcwin/bbcwin.html .
Vea también esta respuesta similar mía: /codegolf//a/28869/15599
fuente
Bash + coreutils
Solución mínima: solo en minúsculas, 83 (33 caracteres unicode + 50 penalizaciones):
Capitales, números y puntuación, 120 (120 caracteres unicode + 50 penalizaciones - 50 bonus):
Salida de ejemplo:
fuente
PHP, 331
No hay bonos por ahora.
fuente
<?
lugar de<?php[SPACE]
guardar 4 caracteres.JavaScript - 286
Primer intento. Sin bonificaciones
fuente
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
Pruébalo en http://cjam.aditsu.net/
Entrada de ejemplo:
Salida de ejemplo:
Solo admite letras minúsculas y espacio. Otros caracteres se asignan a caracteres admitidos (en particular letras mayúsculas a minúsculas).
Explicación:
Los caracteres Braille se codifican usando 1 para un punto elevado y 0 para un punto no elevado, de izquierda a derecha y de arriba a abajo. Esto da 6 dígitos de base 2; se antepone un 1 para evitar quitar los ceros iniciales, luego el número se convierte en base 10 y luego en el carácter ASCII correspondiente.
Ejemplo: t -> ⠞ -> 01/11/10 -> 1011110 -> 94 -> ^
El programa convierte de nuevo cada carácter al triplete de pares de bits (como
[[0 1][1 1][1 0]]
) obteniendo una matriz de pares de bits. La matriz se transpone y se agregan separadores (espacios dentro de las filas, nuevas líneas entre las filas).q
lee la entrada en una cadena = matriz de caracteres{…}%
aplica el bloque a cada carácteri32%
obtiene el código ASCII mod 32 (espacio-> 0, a-> 1, b-> 2, z-> 26)"@`hptdx|lX\bjrvfz~nZ^ck]swg"
es una cadena que contiene los caracteres braille codificado como se explicó anteriormente,=
obtiene el carácter braille codificado correspondiente de la cadena,i2b
obtiene el código ASCII y luego lo convierte en base 2 (obteniendo una matriz de 7 dígitos)1>
elimina el primer dígito2/
divide la matriz en (3) pares,z
transpone la matrizSf*
une cada fila con espaciosN*
une las filas con nuevas líneasfuente
C,
249244La entrada es un argumento de línea de comando, que debe ser escapado o citado si la cadena contiene espacios. Los caracteres admitidos son letras minúsculas y espacio. Los caracteres no compatibles se descartan en silencio.
Editar: afeitado 5 bytes simplificando una condición
fuente
perl, 195 + 2-50 = 147
Esto maneja el capital, el número y la puntuación, sin depender de unicode (195 bytes + 2 bytes (para
-pl
) - 50 bonus)Con sangría:
Salida de muestra
fuente
Javascript ES6 -
282309297283270 - 50 =232259233220 bytesEsto sería más corto, pero la comprobación de letras mayúsculas duele .
EDITAR: Gracias a mbomb007 por salvarme dos bytes; desafortunadamente, descubrí que un poco de golf anterior lo había arruinado todo, así que tuve que agregar 27 caracteres nuevamente.
EDITAR: Aa y 12 bytes guardados al mover los espacios.
EDITAR: me di cuenta de que era una tontería mostrar como caracteres y guardé bastantes bytes. También guardé algunos caracteres intercambiando k = (a, b) => a% (2 * b)> b-1? 1: 0 para k = (a, b) => a% b> ~ -b / 2? 1: 0.
fuente
string.toLowerCase
a una variable?1-9-->a-i
y0-->j