“×Ɗ¡‘ŒP»Ṫ¦209ṗ€3Fd⁴ịØHs3ṢQY
Experimente online!
Como funciona
“×Ɗ¡‘
forneça os pontos de código dos caracteres entre as aspas no SBCS de Jelly , que são 0x11 = 17 , 0x91 = 145 e 0x00 = 0 .
ŒP
constrói o conjunto de potências da matriz de pontos de código, produzindo
[[], [17], [145], [0], [17, 145], [17, 0], [145, 0], [17, 145, 0]]
As duas últimas entradas correspondem a combinações que contêm 80 e FF , portanto, temos que descartá-las.
»Ṫ¦209
consiste em três partes:
Ṫ
(cauda) remove a última matriz de pontos de código, ou seja, [17, 145, 0] .
»209
pega o máximo de cada número inteiro no restante do conjunto de potência e 0xD1 = 209 , substituindo todos por 209 .
¦
(esparso) itera sobre os elementos do restante do conjunto de potência. Se o índice correspondente for encontrado em [17, 145, 0] , o elemento será substituído por todos os 209 's. Caso contrário, ele permanece intocado.
¦
não é modular, portanto, modifica apenas a última matriz (índice 0 ) no restante do conjunto de potência. Os índices 17 e 145 são muito grandes e não têm efeito.
O resultado é o seguinte.
[[], [17], [145], [0], [17, 145], [17, 0], [209, 209]]
ṗ€3
calcula a terceira potência cartesiana de cada matriz, ou seja, a matriz de todas as 3 tuplas de elementos de cada matriz.
Fd⁴
nivela o resultado e calcula o quociente e o restante de cada número inteiro dividido por 16 .
ịØH
índices (com base em 1) em "0123456789ABCDEF , para que 0x11 , 0x91 , 0x00 e 0xD1 sejam mapeados para " 00 " , " 80 " , " FF " e " C0 " (resp.).
s3ṢQ
divide os pares de caracteres em três tuplas, classifica as tuplas e deduplica.
Por fim, Y
une as tuplas exclusivas, separando por feeds de linha.
“0FC8”
, como nós temos00
,FF
,C0
, e80
.Python 3,
1341291251089190 bytesEu acho que ainda há muito golfe para fazer aqui. Sugestões de golfe são bem-vindas!
Edit: -9 bytes e muito obrigado ao Mego por ajudar na formatação da string. -17 bytes para descobrir uma maneira melhor de imprimir a string em primeiro lugar. -17 bytes para descobrir uma maneira melhor de escrever o loop for em primeiro lugar. -1 byte graças à dica do xnor para usar em
i%3//2*"\n"
vez de"\n"*(i%3<2)
.Ungolfing
fonte
*
.i%3//2*"\n"
salva um byte.JavaScript (ES6),
109107 bytesEconomizou 2 bytes, graças a Neil
Isso é
79 bytes mais curto do que apenas retornar a string bruta nos backticks.Teste
Mostrar snippet de código
fonte
.replace(/./g)
é o mesmo comprimento que.map().join
, mas.map(x=>'08CF'[x=n>>x&3]+'000F'[x],n+=+v||21)
salva dois bytes.PowerShell,
113106 bytesSim, não encontrei nada mais curto do que apenas imprimir a string literal ...Obrigado a @ Martin Smith por reduzir 7 bytes usando uma substituição simples (que eu esqueci completamente). Portanto, somos pelo menos 7 bytes mais curtos do que simplesmente codificá-lo. Yay!Mas isso é chato!
Então, ao invés ...
PowerShell v4, 128 bytes
O
[system.consolecolor]
espaço para nome define as cores do console (nativamente) disponíveis para o console do PowerShell. Se os referenciarmos por meio de uma matriz inteira como esta, o valor padrão é o nome (por exemplo,Black
ouWhite
ou similar). Combinamos isso com uma sequência de caracteres que está-split
nos espaços, e agora temos uma série de sequências de nomes de cores.Passamos por eles
|%{...}
e cada iteração extrai o[system.windows.media.colors]
valor correspondente . A string padrão para esses objetos é a cor no#AARRGGBB
formato como um valor hexadecimal, por isso aproveitamos isso encapsulando essa chamada em uma string com um bloco de script"$(...)"
. Mas, como não queremos os valores alfa ou o hash, pegamos o backend[3..8]
da string e precisamos do array-join
resultante dechar
volta em uma string. Então, é simplesSort-Object
colocá-los na ordem certa.fonte
00
e.Replace(7,'00')
é <21 caracteres.-replace
for8
e80
é a mesma contagem de bytes (salva 12 zeros, que é o-replace8,80
comprimento). Fazer isso porFF
mais de dois bytes é devido às aspas necessárias"FF"
na-replace2,"FF"
declaração.Pitão -
644844 bytesCompactação básica super simples.
Experimente online aqui .
fonte
MATL , 39 bytes
Experimente online!
fonte
05AB1E , 57 bytes
Experimente online!
O que precisamos produzir é basicamente (invertido e dividido):
Qual, em decimal é:
Que na Base-214 é:
Esta é a solução mais simples que eu poderia encontrar, porque de jeito nenhum estou derrotando Dennis. Passou uma hora tentando e nada superou sua idéia.
fonte
PHP, 92 bytes
Experimente online!
basta substituir os dígitos como chave na matriz pelos valores strtr
fonte
Lote, 137 bytes
Sim, é tão chato. Tentativa anterior de 148 bytes:
Infelizmente você não pode canalizar a saída de um
for
ou de umcall:
comando, então eu tenho que me invocar recursivamente.fonte
Pyke, 42 bytes
Experimente aqui!
fonte
Befunge,
8369 bytesExperimente online!
As cores são codificadas na sequência que você vê na primeira linha, dois bits por componente de cor, com um bit alto adicional definido para forçar cada valor ao intervalo ASCII (exceto no caso de 63, que estaria fora do intervalo como 127 )
A lista de cores na pilha é processada da seguinte maneira:
fonte
C #, 195 bytes
Infelizmente, isso supera, por uma margem enorme, o mais interessante, embora incrivelmente complicado (eu me diverti muito escrevendo) C #, 270 bytes
fonte
()=>@"string_here"
(isso é convertido emAction<string>
). Sugiro também o uso de uma string literal (@
) para que você possa colocar as novas linhas diretamente na string sem precisar escapar delas.C (gcc) , 99 bytes
Experimente online!
Depois de tentar criar uma lista de números e produzi-los durante a classificação, comparei com a solução ingênua, que era preocupante:
Aquele tem clock de 140 bytes, comparado à minha tentativa de 200 e alteração.
A solução foi pensar nele como texto como qualquer outro, embora com um pequeno alfabeto. Cada cor pode ser vista como um trio de índices de 2 bits no alfabeto {0xff, 0xc0, 0x80, 00}. O processo de cor -> trigêmeo -> número -> caractere (com deslocamento +35 para torná-los imprimíveis e evitar a necessidade de escapamentos) pode ser ilustrado da seguinte forma:
Então é apenas uma questão de iterar sobre a sequência resultante e cortar as partes apropriadas da sequência do alfabeto.
fonte