Fortress war eine Sprache, die von der Sun Programming Language Research Group (RIP Fortress) entwickelt wurde und eine einzigartige Eigenschaft hatte. Es war möglich, Programme in verschiedenen Schriftstilen (z. B. fett, fett, kursiv) zu rendern ("Fortify"). römisch usw.). Ziel ist es, eine Fortress-Variable mit einem Zeichen im HTML-Markup darzustellen.
So funktionierte die Anreicherung von Ein-Zeichen-Variablen (vereinfacht / modifiziert aus der Dokumentation für Code-Golf-Zwecke):
- Wenn die Variable ein wiederholtes Großbuchstaben ist (dh
ZZ
), wird sie in Fettdruck (𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ
) formatiert. - Wenn der Variablen ein Unterstrich vorangestellt ist, wird die Variable in römischer Schrift gerendert (in Ruhe gelassen).
- Wenn auf die Variable ein Unterstrich folgt, wird die Variable in Fettdruck (
<b>
v</b>
) gerendert. - Wenn der Variablen weder ein Unterstrich vorangestellt noch gefolgt wird, wird die Variable in Kursivschrift (
<i>
v</i>
) gerendert. - Die Codepunkte der Fettdrucke sind
𝔸
:: 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. Diese zählen in Ihrem Programm jeweils als ein Byte (wenn die Sprache Ihrer Wahl diese Zeichen überhaupt verarbeiten kann)
Die Eingabe ist entweder ein wiederholtes ASCII-Großbuchstaben oder ein einzelner ASCII-Buchstabe ohne Unterstrich, einen führenden Unterstrich oder einen nachfolgenden Unterstrich (AKA _a_
ist keine Eingabe). Dies ist Code-Golf, also gewinnt die niedrigste Byteanzahl!
Testfälle:
a => <i>a</i>
BB => 𝔹
c_ => <b>c</b>
_d => d
E => <i>E</i>
G_ => <b>G</b>
_H => H
ZZ => ℤ
Links: Spezifikation , Direkter Download von Version 0.1 Alpha .
Referenzimplementierung (Dies wäre in Fortress, aber Fortress mag die meisten doppelt getroffenen Charaktere nicht, daher befindet sich diese Implementierung in 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>");
}
_____
wird nicht eingegeben.Antworten:
Gelee , 73 Bytes
Es stellt sich heraus, dass es ziemlich teuer ist, die BBB-Buchstaben im Code nicht verwenden zu können.
Ein vollständiges Programm, das ein Argument verwendet und das Ergebnis druckt.
Probieren Sie es online aus! oder sehen Sie sich die Testsuite an .
Wie?
Der Haupteinstiegspunkt ist die letzte Codezeile ("Hauptlink").
quelle
ZZ
.C
H
N
P
Q
R
undZ
an verschiedenen Stellen im Unicode.Python 3.6,
159131128 Bytes1 Byte dank @ Zacharý gespeichert
3 Bytes dank @ VаlueInk gespeichert
28 Bytes dank @Rod gespart
Probieren Sie es online aus!
quelle
len(s)<2 and
=>len(s)<2and
Ruby ,
104106105 + 1 =105107106 "Bytes"Funktioniert wahrscheinlich noch besser in der Netzhaut. Verwendet
-p
Flagge.-1 Byte von Zacharý.
Probieren Sie es online aus!
quelle
JJ
,KK
,LL
,TT
,UU
,VV
undWW
. !! (Das ist wahrscheinlich der Grund dafürMM
gibtℙ
)𝕊-𝕏𝕐
𝕊-𝕐
.JavaScript, 97 Zeichen
Warum hat eine Sprache Methoden wie
String.prototype.italics
undString.prototype.bold
?Dank Neil sparen Sie 9 Bytes und verwenden
[...s]
statts.match(/./u)
.quelle
u
Das Flag in RegExp ist die ES6-Funktion.String.prototype.italics
undString.prototype.bold
sind nur einige Legacy-Funktionen.[...'𝔸𝔹ℂ𝔻𝔼𝔽𝔾ℍ𝕀𝕁𝕂𝕃𝕄ℕ𝕆ℙℚℝ𝕊𝕋𝕌𝕍𝕎𝕏𝕐ℤ']
sollte Ihnen einige Bytes sparen.