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
.C
H
N
P
Q
R
yZ
está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)<2and
Rubí ,
104106105 + 1 =105107106 "bytes"Probablemente funciona aún mejor en Retina. Utiliza
-p
bandera.-1 byte de Zacharý.
Pruébalo en línea!
fuente
JJ
,KK
,LL
,TT
,UU
,VV
yWW
. !! (Probablemente por esoMM
daℙ
)𝕊-𝕏𝕐
𝕊-𝕐
.JavaScript, 97 caracteres
¿Por qué un lenguaje tiene métodos como
String.prototype.italics
yString.prototype.bold
?Gracias a Neil, guarde 9 bytes, use en
[...s]
lugar des.match(/./u)
.fuente
u
El indicador en RegExp es la función ES6.String.prototype.italics
yString.prototype.bold
son solo algunas características heredadas.[...'𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ']
debería ahorrarte algunos bytes.