Seu desafio é imprimir / imprimir / retornar este texto:
_____ _____
| 1 | | 2 |
| H | | He |
|_____|_____ _____________________________|_____|
| 3 | 4 | | 5 | 6 | 7 | 8 | 9 | 10 |
| Li | Be | | B | C | N | O | F | Ne |
|_____|_____| |_____|_____|_____|_____|_____|_____|
| 11 | 12 | | 13 | 14 | 15 | 16 | 17 | 18 |
| Na | Mg | | Al | Si | P | S | Cl | Ar |
|_____|_____|___________________________________________________________|_____|_____|_____|_____|_____|_____|
| 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 31 | 32 | 33 | 34 | 35 | 36 |
| K | Ca | Sc | Ti | V | Cr | Mn | Fe | Co | Ni | Cu | Zn | Ga | Ge | As | Se | Br | Kr |
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| 37 | 38 | 39 | 40 | 41 | 42 | 43 | 44 | 45 | 46 | 47 | 48 | 49 | 50 | 51 | 52 | 53 | 54 |
| Rb | Sr | Y | Zr | Nb | Mo | Tc | Ru | Rh | Pd | Ag | Cd | In | Sn | Sb | Te | I | Xe |
|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| 55 | 56 | 57 \ 72 | 73 | 74 | 75 | 76 | 77 | 78 | 79 | 80 | 81 | 82 | 83 | 84 | 85 | 86 |
| Cs | Ba | La / Hf | Ta | W | Re | Os | Ir | Pt | Au | Hg | Tl | Pb | Bi | Po | At | Rn |
|_____|_____|_____\_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
| 87 | 88 | 89 / 104 | 105 | 106 | 107 | 108 | 109 | 110 | 111 | 112 | 113 | 114 | 115 | 116 | 117 | 118 |
| Fr | Ra | Ac \ Rf | Db | Sg | Bh | Hs | Mt | Ds | Rg | Cn | Nh | Fl | Mc | Lv | Ts | Og |
|_____|_____|_____/_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|
____________________________________________________________________________________
\ 58 | 59 | 60 | 61 | 62 | 63 | 64 | 65 | 66 | 67 | 68 | 69 | 70 | 71 \
/ Ce | Pr | Nd | Pm | Sm | Eu | Gd | Tb | Dy | Ho | Er | Tm | Yb | Lu /
\_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____\
/ 90 | 91 | 92 | 93 | 94 | 95 | 96 | 97 | 98 | 99 | 100 | 101 | 102 | 103 /
\ Th | Pa | U | Np | Pu | Am | Cm | Bk | Cf | Es | Fm | Md | No | Lr \
/_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____|_____/
Regras:
- A contagem de linhas vazias entre as duas partes pode ser qualquer valor (incluindo 0)
- Cada linha pode ter espaços de adição e adição, desde que as duas partes pareçam corretamente e a segunda parte seja recuada pelo menos um espaço a mais que a primeira.
- Você pode ter novas linhas e / ou espaços acrescentando / acrescentando.
- Você não pode usar guias para espaçamento (desde que não haja um intérprete que as substitua corretamente por espaços).
- Por causa de um erro meu, você pode optar por usar
______ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____ _____
como a 1ª linha da segunda parte.
Dados:
você pode usar este texto como referência (mas não como entrada):
Conteúdo: símbolo, número atômico, grupo, grupos de períodos 8 e 9 e períodos 4-17 são usados para a segunda parte.
H 1 1 1
He 2 18 1
Li 3 1 2
Be 4 2 2
B 5 13 2
C 6 14 2
N 7 15 2
O 8 16 2
F 9 17 2
Ne 10 18 2
Na 11 1 3
Mg 12 2 3
Al 13 13 3
Si 14 14 3
P 15 15 3
S 16 16 3
Cl 17 17 3
Ar 18 18 3
K 19 1 4
Ca 20 2 4
Sc 21 3 4
Ti 22 4 4
V 23 5 4
Cr 24 6 4
Mn 25 7 4
Fe 26 8 4
Co 27 9 4
Ni 28 10 4
Cu 29 11 4
Zn 30 12 4
Ga 31 13 4
Ge 32 14 4
As 33 15 4
Se 34 16 4
Br 35 17 4
Kr 36 18 4
Rb 37 1 5
Sr 38 2 5
Y 39 3 5
Zr 40 4 5
Nb 41 5 5
Mo 42 6 5
Tc 43 7 5
Ru 44 8 5
Rh 45 9 5
Pd 46 10 5
Ag 47 11 5
Cd 48 12 5
In 49 13 5
Sn 50 14 5
Sb 51 15 5
Te 52 16 5
I 53 17 5
Xe 54 18 5
Cs 55 1 6
Ba 56 2 6
La 57 3 6
Hf 72 4 6
Ta 73 5 6
W 74 6 6
Re 75 7 6
Os 76 8 6
Ir 77 9 6
Pt 78 10 6
Au 79 11 6
Hg 80 12 6
Tl 81 13 6
Pb 82 14 6
Bi 83 15 6
Po 84 16 6
At 85 17 6
Rn 86 18 6
Fr 87 1 7
Ra 88 2 7
Ac 89 3 7
Rf 104 4 7
Db 105 5 7
Sg 106 6 7
Bh 107 7 7
Hs 108 8 7
Mt 109 9 7
Ds 110 10 7
Rg 111 11 7
Cn 112 12 7
Nh 113 13 7
Fl 114 14 7
Mc 115 15 7
Lv 116 16 7
Ts 117 17 7
Og 118 18 7
Ce 58 4 8
Pr 59 5 8
Nd 60 6 8
Pm 61 7 8
Sm 62 8 8
Eu 63 9 8
Gd 64 10 8
Tb 65 11 8
Dy 66 12 8
Ho 67 13 8
Er 68 14 8
Tm 69 15 8
Yb 70 16 8
Lu 71 17 8
Th 90 4 9
Pa 91 5 9
U 92 6 9
Np 93 7 9
Pu 94 8 9
Am 95 9 9
Cm 96 10 9
Bk 97 11 9
Cf 98 12 9
Es 99 13 9
Fm 100 14 9
Md 101 15 9
No 102 16 9
Lr 103 17 9
Os recursos internos que fornecem informações sobre a tabela periódica de elementos são permitidos, mas devem ser visualizados separadamente das soluções não integradas.
O código mais curto por idioma vence!
code-golf
kolmogorov-complexity
dzaima
fonte
fonte
Respostas:
Bubblegum , 535 bytes
Usa compactação LZMA.
Experimente online!
fonte
Excel VBA,
1.0231.020990983975595495 Bytessub
Rotina completa que não recebe entrada e gera a tabela periódica para o intervalo[A1:R10]
noActiveSheet
objeto. Observe que, como o Excel não pode implementar rabiscos nas bordas, (tanto quanto eu sei), essa implementação usa uma borda vermelha colorida para indicar as séries de lantanídeos e actinídeos.-3 bytes para espaço em branco
-30 bytes para alterar
Range("A1:R10")
para[A1:R10]
, removendo o espaço em branco de todas asa "some stuff"
chamadas e alterando o delimitador de","
para" "
-7 bytes para mudar
Range("D6:D7,D9:D10,R9:R10")
para[D6:D7,D9:D10,R9:R10]
-8 bytes para alterar de endereços de célula String para
[...]
referências de célula agrupadas-380 bytes graças a @Alexander (removeu a numeração dos dados e usou um loop for)
-100 bytes para converter array em
String
e usar aMid
funçãoSaída
fonte
D6:D7
eD9:D10
JavaScript (ES6),
756750 bytesExplicação:
a
contém os Lantanídeos e Actinídeos (formatados)j
é usado para rastrear qual caractere é usado para desenhar o ziguezague dos lantanídeos e actinídeosi
é simplesmente o número do próximo elemento a ser formatado. Embora não seja estritamente necessário formatar os elementos em ordem, acho que há uma pequena economia de bytes ao fazê-lo.r
é uma função de decodificação de execução. Espera ser chamado usando um parâmetro de sequência de modelo. Qualquer número na string faz com que o caractere anterior seja repetido várias vezes, por exemplo,r`_5`
é o mesmo`_____`
(mas é claro, 2 bytes mais curto). Originalmente, eu tinha uma versão mais sofisticada que aguentava,r`${i<100} `+i+r`${i++<10} `
mas acabou sendo mais curta para mantê-la como um caso especial.f
é uma função de formatação de elemento. Espera ser chamado usando um parâmetro de sequência de modelo que contém os elementos como pares de caracteres (espaço preenchido para nomes de elemento de caractere único). Uma matriz de três seqüências é retornada, uma para os números dos elementos, uma para os nomes dos elementos e uma para os sublinhados. Se mais de um elemento estiver formatado, eles serão unidos a um|
separador.g
é uma função de cola. Ele espera ser chamado com três matrizes (o segundo e o terceiro parâmetros podem ser cadeias de caracteres se apenas um caractere for necessário) e retorna uma única matriz com todas as cadeias correspondentes concatenadas juntas.As três primeiras linhas de elementos são tratadas colando os elementos formatados de cada lado com uma quantidade adequada de espaço. A quarta e quinta linhas não precisam de cola. A sexta e a sétima linhas são tratadas colando os elementos formatados de cada lado com o zigue-zague apropriado. As 21 linhas são unidas com
|
bordas e novas linhas. Enquanto isso, as 6 filas dos Lantanídeos e Actinídeos recebem seu preenchimento e ziguezague e se juntam às novas linhas. Finalmente, as peças são concatenadas com os elementos de formatação restantes necessários. Editar: salvou 6 bytes porque esqueci de substituir novas linhas literais depois de desenvolver o código.Se uma tabela completa com os Lantanídeos e Actinídeos in situ for aceitável, então para 556 bytes:
Explicação: Uma sequência contém a lista de elementos com
-
e nova linha adicionada como elementos de formatação. Um número de substituições é usado para transformar a lista de elementos na tabela desejada.|
s.|
são excluídos.-
s são substituídos por preenchimento suficiente para resultar em uma largura de 193 caracteres._
s._
é colocado acima dele (se ainda não os tiver)_
S separados por espaço são unidos a_
s.Provavelmente eu poderia salvar mais alguns bytes usando os métodos padStart e padEnd amplamente disponíveis.
fonte
19_84 ``+a.map(s=>r`` 18
para18_84 ``+a.map(s=>r`` 17
. Não afeta o comprimento do código.Ruby, 567
Aproximou a série La / Ac da tabela principal (reler as regras sugere que é permitido; a seção de formatação reorganizada
d
é usada imediatamente quando calculada; e a próxima linha calculada matematicamente em vez de por regex.Ruby, 587
pontuação exclui 3 novas linhas desnecessárias adicionadas para maior clareza
Explicação
A idéia é produzir o seguinte e modificá-lo adicionando o preenchimento e a formatação corretos e movendo os lantanídeos e actinídeos para o fundo.
Código comentado
fonte
a[r+15][18]=a[r+15][102]='\//'[r%2];a[r+23]=' '*18+a[r+15][18,85];a[r+15][18,84]=''
salvando 83 bytes e, possivelmente,a[22]=' '*18+?_*84
por outro lado, teria que colocar uma lacuna nas linhas 4 e 5 acima das terras raras, para que houvesse código adicional para isso. É difícil dizer qual seria a pontuação sem fazer isso, mas seria menor.C,
141514011395136713451277115910521043 bytesObrigado a @Conor O'Brien por salvar 6 bytes!
Obrigado a @ Zacharý por salvar
2290 bytes!Obrigado a @gastropner por salvar
118225 bytes!Obrigado a @ceilingcat por salvar
89 bytes!Experimente online!
Desenrolado (versão de 1159 bytes):
fonte
printf(
ocorrências, aqui está um link para o seu código com essas três ocorrências substituído com aP
macro: repl.it/Jeat/1#define
-ing;L;B
: repl.it/Jeat/305AB1E ,
517500494459458 bytesExperimente online!
-10ish graças a Emigna
Permite um longo guincho gutural da vitória ... Golfeia mais, mas como ainda é o mais curto ...
A idéia básica
Mapeei cada um dos quadrados com o primeiro dígito sendo o comprimento do número e o segundo dígito sendo o comprimento do nome do elemento. Usou isso para criar o esqueleto (se
.C
e.B
não existia este seria facilmente 300-400 bytes):É isso que a primeira metade do código realiza ...
05AB1E , 229 bytes
Experimente online!
Através de uma manipulação feia e outra besteira que não deveria existir, eu consigo juntar todo o esqueleto.
A próxima parte é basicamente "insira a enorme sequência de letras e números que representam os elementos". Eu basicamente apenas comprimi, sequencialmente, todas as letras:
Para obter:
Você então me vê repetindo a substituição de todos os símbolos @ pela letra apropriada (no final, depois de colocá-los todos em suas posições apropriadas, permite-me usar "Title Cased" para maiúsculas, pois cada elemento é separado por espaço em branco).
Em seguida, faço a string numérica e faço a mesma coisa (obrigado Emigna):
Resulta em:
Em seguida, itero e substituo cada # por.
Depois disso, o aborrecimento final foram as barras ... Meu Deus ...
Essa monstruosidade de 50 bytes é o que eu quero consertar, junto com várias outras pequenas coisas ... Então, continuarei jogando golfe, e até que eu conserte as coisas que quero, essa será a explicação informal.
fonte
0 36
para¾36
.104 118Ÿ
paraƵ3ƵHŸ
.90 103Ÿ
para90Ƶ2Ÿ
.žn•2ƒj#GÂjηCóÛƒüq™ôD ‡yΣ›aÎý1õçñ}ÂćÕ%…7¬vù~GÈž£_DвÌi¸7âòÜë8{~å≠’ˆ—d*^ݬ©Úì#Ï»cDYyÍæηмm¾/5ä):Ω8+“j¼[)ÿ—θ7I₆н¦ʒâÒ₂иofÞIa¥©ÂÛé/VÖt[¼m¦mćó,≠+ŒtC?8@Ú¬¼½k]αεßÁ'‡≠=aÔºø•51вè
.57L72 89Ÿ«Ƶ3ƵHŸ«58 71Ÿ«90Ƶ2Ÿ«J
PowerShell , 1562 bytes
Essa abordagem não é ótima. Não é possível usar o tio, pois isso aproveita
[console]::setcursorposition
.fonte
SOGL V0.11 , 311 bytes (não concorrente)
Isso levou um tempo. Para tornar isso compacto, implementei, com o custo de uma resposta não competitiva, muitas coisas no SOGL (a maioria já documentada). Mais notavelmente,
- "ž", que coloca uma matriz dentro de outra matriz em coordenadas específicas e
- "►" e "◄" - codifica e decodifica no comprimento da execução. Eu realmente pensei que os havia documentado, mas acho que não.
Experimente aqui! (compactação (lenta) atualizada para estar em conformidade com 0,12)
Então, uma explicação muito longa adiante:
Primeira parte: configuração
Segunda parte: loop
Então agora a saída se parece com isso .
Terceira parte: Complementos
fonte
Bash, 728 bytes
Testado em Ubuntu , requer base64 e xz programas
Explicação
O LZMA (algoritmo de cadeia Lempel-Ziv-Markov) produziu cerca de 0,5K de arquivo com tabela periódica.
Ele contém símbolos não imprimíveis e não pode ser usado diretamente no console. Para usá-lo, codifiquei -o por Base64
O redirecionamento de fluxo é usado para decodificar e descompactar o arquivo morto.
Truques
Para economizar cerca de 30 bytes, excluí nova linha e alguns espaços
fonte
base64 -D<<Q|xz -d
seguido pelo código base64 em sua própria linha e um Q à direita).Excel VBA +,
674296293 bytes (definitivamente batota)Muito divertido de uma solução inovadora para não compartilhar.
Quebra essa brecha padrão
Sub
rotina que não recebe entrada e gera a tabela periódica para oactivesheet
objeto; Codificado para trabalhar com 118 elementosEssa tabela periódica inclui
Código
Saída
Versão antiga, 674 bytes
Saída
fonte
Bubblegum , 600 bytes
Experimente online!
Você pode reverter esse hexdump com
xxd -r
.Este é o resultado de Zopfliing o texto 747 vezes no formato DEFLATE.
fonte
PHP, 758 bytes
Depois de muito pouca chance de jogar golfe na minha abordagem de array, decido trabalhar apenas com strings
Versão Online
Expandido
PHP, 892 bytes
Primeira solução de trabalho que está abaixo da contagem de bytes da versão compactada, uma solução com matrizes
Versão online
PHP, 783 bytes
Experimente online!
Apenas usando compressão
PHP, 948 bytes
fonte
GW-Básico, 598 bytes (arquivo tokenizado)
Infelizmente, o modo de texto do GW-Basic é limitado a 80 colunas. Tentei esmagar a mesa para ajustá-la, mas isso não parecia muito agradável, então tive que usar o modo gráfico.
Abaixo está a fonte do texto, com linhas agrupadas em 80 colunas para facilitar a leitura; tome cuidado para que o programa funcione, ele deve ser salvo na página de código 437. Se você tentar, verá que ele piscará bastante enquanto desenha. Desculpe.
O GW-Basic não salva seus arquivos da maneira mais eficiente possível, para reduzi-lo a 660 bytes, é necessário abrir o arquivo tokenizado em um editor e remover manualmente todos os espaços, exceto um, o final do caractere do arquivo e o lixo. personagem antes dele. Isso reduzirá seu tamanho para 660 bytes e ainda será carregado e executado corretamente.
Edit: Como neste caso, não importa que as variáveis sejam números inteiros, porque o erro esperado é pequeno e as operações são como
MOD
e\
arredondadas de qualquer maneira, podemos transformá-las em variáveis de ponto flutuante, economizando um%
token em cada menção. E notei que o número35
ocorre com frequência suficiente para que os cinco bytes necessários para salvá-lo em uma variável valham (apenas!). Se você está mantendo a pontuação, notou que salvamos 43 bytes e o sistema de arquivos concorda: reduzimos para 617 bytes.Edit: Ao mudar um pouco
S$
eu era capaz de raspar mais seis bytes:(K=0)*64+
tornou - seAND 127
.Edit: Ok, então eu lembrei que queria mudar a maneira como armazeno áreas vazias. Isso eliminou mais sete bytes, quatro
S$
e mais três porqueGOSUB 3:
foi trocado>9
. E sacrifiquei alguma eficiência por mais dois bytes.Edit: Eu quebrei a barreira de 600 bytes! Uma coisa é obter algo compacto em um idioma de golfe, mas outra coisa é fazê-lo em um idioma do mundo real. E ainda outra coisa, se você gerencia tudo no GW-Basic.
S$
tem cinco bytes maior, mas eu salvou nove bytes, substituindoASC(MID$(...))+I-95
comI+1
e adicionandoIF K=1 ... ELSE
na linha1
.fonte
Kotlin ,
168816671664 bytesProvavelmente, encontre algumas melhorias para salvar bytes. Mas, funcionou, então eu estou postando. Obrigado mazzy por 21 bytes declarando u. Mais 3 bytes removendo a string do modelo e usando u diretamente.
Experimente online!
fonte
val u="_____"
antesfun Int.c()
e 2. substitua toda a ocorrência de 5 sublinhado em $ u. por exemploif((r<2&&c>12)||(r==3&&c>2&&c<12))"_$u"
C (gcc) ,
623611 bytesExperimente online!
Obrigado gastropner por 2 bytes (e mais o pensamento) e cailingcat por 7 bytes
fonte
e()
macro. Ligação.s[x/18*3+i<5|E(0)&4/7][x%18*6+i<5|E(0)&4%7]
parece não ter o mesmo significadoBash + openssl + bzcat, 787 bytes
As novas linhas são obrigatórias. Emite a tabela periódica para
stdout
.fonte
openssl enc -d -base64
porbase64 -D
Powershell, bytes
1077937934906902888878842784688677673667651596 bytesJavascript do porto de Neil
Anexe
rv i,j,a
ao final do script como capazrestart
.Ungolfed
fonte
Retina , 888 bytes
Experimente online!
fonte
C ++, 866 bytes
Versão não destruída:
Python 3, 730 bytes
fonte
/// ,
987958 bytesExperimente online!
eu tentei
fonte
Tela , 289 bytes
Experimente aqui!
fonte
Texto , 3148 bytes
Calma, é uma piada.
fonte