Fortress fue un lenguaje desarrollado por Sun Programming Language Research Group (RIP Fortress) que tenía una propiedad única, era posible representar ("Fortificar") programas en diferentes estilos de fuente (es decir, pizarra en negrita, negrita, cursiva, romana, etc.). El objetivo es representar una variable Fortaleza de un carácter en el marcado HTML.
Así es como funcionó la fortificación de las variables de un carácter (simplificado / modificado de la documentación para propósitos de código de golf)
- Si la variable es una mayúscula repetida (es decir
ZZ), se formatea en negrita (𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ) - Si la variable está precedida por un guión bajo, la variable se representa en fuente romana (solo se deja)
- Si la variable es seguida por un guión bajo, la variable se representa en negrita (
<b>v</b>) - Si la variable no está precedida ni seguida de un guión bajo, la variable se representa en letra cursiva (
<i>v</i>) - Los puntos de código de las letras en negrita son::
𝔸1D538,: 1D539𝔹,:ℂ2102𝔻,: 1D53B,: 1D53C,: 1D53D𝔼,:𝔽1D53E𝔾,:ℍ210D𝕀,:𝕁1D540𝕂,:𝕃1D541𝕄,: 1D542,: 1D543,: 1D544,:ℕ2115,𝕆: 1D546,:ℙ2119 ,:ℚ211Aℝ,:𝕊211D𝕋,:𝕌1D54A𝕍,:𝕎1D54B𝕏,:𝕐1D54C,: 1D54D,: 1D54E,: 1D54F,: 1D550,:ℤ2124. Estos cuentan como un byte cada uno en su programa (si su idioma de elección puede manejar estos caracteres)
La entrada será una letra ASCII repetida o una sola letra ASCII sin guión bajo, guión bajo o guión bajo (AKA _a_no será una entrada). Este es el código de golf, por lo que gana el conteo de bytes más bajo
Casos de prueba:
a => <i>a</i>
BB => 𝔹
c_ => <b>c</b>
_d => d
E => <i>E</i>
G_ => <b>G</b>
_H => H
ZZ => ℤ
Enlaces: Especificación , Descarga directa de la versión 0.1 alfa .
Implementación de referencia (Esto sería en Fortress, pero a Fortress no le gustan la mayoría de los personajes dobles, por lo que esta implementación está en D):
dstring fortify(string arg) {
import std.string, std.conv;
alias D = to!dstring; //Convert to a string that accepts the unicode needed
dstring BB = "𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ"d; //blackboard bold capitals
string UC = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; //normal ASCII capitals
if(arg.length == 1)
return D("<i>" ~ arg ~ "</i>");
if(arg[0] == a[1])
return D(BB[UC.indexOf(arg[0])]);
if(arg[0] == '_')
return D(arg[1]);
return D("<b>" ~ arg[0] ~ "</b>");
}

_____No será de entrada.Respuestas:
Jalea , 73 bytes
Resulta que no poder usar las letras BBB en el código es bastante costoso.
Un programa completo que toma un argumento e imprime el resultado.
Pruébalo en línea! o ver el conjunto de pruebas .
¿Cómo?
El punto de entrada principal es la última línea de código ("Enlace principal").
fuente
ZZ.CHNPQRyZestán en diferentes lugares en Unicode.Python 3.6,
159131128 bytes1 byte guardado gracias a @ Zacharý
3 bytes guardados gracias a @ VаlueInk
28 bytes guardados gracias a @Rod
Pruébalo en línea!
fuente
len(s)<2 and=>len(s)<2andRubí ,
104106105 + 1 =105107106 "bytes"Probablemente funciona aún mejor en Retina. Utiliza
-pbandera.-1 byte de Zacharý.
Pruébalo en línea!
fuente
JJ,KK,LL,TT,UU,VVyWW. !! (Probablemente por esoMMdaℙ)𝕊-𝕏𝕐𝕊-𝕐.JavaScript, 97 caracteres
¿Por qué un lenguaje tiene métodos como
String.prototype.italicsyString.prototype.bold?Gracias a Neil, guarde 9 bytes, use en
[...s]lugar des.match(/./u).fuente
uEl indicador en RegExp es la función ES6.String.prototype.italicsyString.prototype.boldson solo algunas características heredadas.[...'𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ']debería ahorrarte algunos bytes.