十六进制三胞胎(例如#ffffff(白色)或#3764ef(蓝色))通常用于表示RGB颜色。它们由#六个十六进制数字(0-f)或有时由三个数字组成,其中通过将每个数字加倍获得真实色彩。例如,#fffis #ffffff和#1a8is #11aa88。
可悲的是,这三个数字速记是互联网有可能的报价,golfiest 直到现在。
编写一个包含1到7个字符的字符串的程序或函数:
- 第一个字符将始终为
#。 - 其他字符将始终为十六进制数字:
0123456789abcdef。
输入是十六进制三元组的简写形式(如果给出7个字符,则为完整形式)。您需要输出完整的十六进制三元组,以根据以下模式扩展输入速记:
Input -> Output
# -> #000000 (black)
#U -> #UUUUUU
#UV -> #UVUVUV
#UVW -> #UUVVWW (usual 3-digit shorthand)
#UVWX -> #UXVXWX
#UVWXY -> #UVWXYY
#UVWXYZ -> #UVWXYZ (not shorthand)
每一个U,V,W,X,Y,和Z可以是任何十六进制数字。输出始终为7个字符。
例如:
Input -> Output
# -> #000000
#0 -> #000000
#4 -> #444444
#f -> #ffffff
#a1 -> #a1a1a1
#0f -> #0f0f0f
#99 -> #999999
#1a8 -> #11aa88
#223 -> #222233
#fff -> #ffffff
#1230 -> #102030
#d767 -> #d77767
#bbb5 -> #b5b5b5
#aabbc -> #aabbcc
#00000 -> #000000
#3764e -> #3764ee
#3764ef -> #3764ef
#123456 -> #123456
#f8f8f8 -> #f8f8f8
笔记
输入将始终以开头,
#输出也必须以。您可以根据需要假定所有输入字母均为小写(
abcdef)或大写(ABCDEF)。您可以根据需要选择输出中的字母。您甚至可以混合使用大小写。
这里不处理Alpha /透明度(尽管有RGBA颜色的十六进制版本)。
以字节为单位的最短代码获胜。
#UVWXY -> #UVWXYY条目,因为它允许Blue通道使用单值表示,但是Red和Green没有类似的表达(例如,如果我希望#889071我不能缩写,但是#907188可以...和#90718其他形式一样)一切都很好。
#UVWX -> #UXVXWX。这种不一致和任意的行为,很难让人相信目前没有几个浏览器真正实现它。
#RGBA和#RRGGBBAA,因此#1234应该读为rgba(17, 34, 51, 0.25)