Triangularity é um novo esolang desenvolvido pelo Sr. Xcoder, onde a estrutura do código deve seguir um padrão muito específico:
- Para a
n
linha de código th, deve haver exatamente2n-1
caracteres do programa. Isso causa uma forma triangular / pirâmide, com a primeira linha tendo apenas um caractere e o restante aumentando em incrementos de 2. - Cada linha deve ser preenchida com
.
s à esquerda e à direita, de modo que os caracteres sejam centralizados em suas linhas e todas as linhas sejam preenchidas no mesmo comprimento. Sel
for definido como o número de linhas no programa, cada linha no programa deverá ter um comprimento de2 * l - 1
Por exemplo, o programa à esquerda é válido, mas o programa à direita não é:
Valid | Invalid
|
...A... | ABCDE
..BCD.. | FGH
.EFGHI. | IJKLMN
JKLMNOP | OPQRS
Quando disposto na estrutura válida, o nome se torna óbvio.
Tarefa
Sua tarefa é pegar uma string de linha única como entrada, representando o código de Triangularidade, e produzi-la em código válido, conforme descrito acima.
Especificações para E / S:
- A entrada conterá apenas caracteres no intervalo
0x20 - 0x7e
- O comprimento da entrada sempre será um número quadrado e, portanto, agradável.
- Você deve usar pontos para o preenchimento de saída, e não outra coisa.
Você pode inserir e enviar através de qualquer método aceitável . Este é um código de golfe, portanto o código mais curto em bytes vence!
Casos de teste
input
----
output
g
----
g
PcSa
----
.P.
cSa
DfJ0vCq7G
----
..D..
.fJ0.
vCq7G
7xsB8a1Oqw5fhHX0
----
...7...
..xsB..
.8a1Oq.
w5fhHX0
QNYATbkX2sKZ6IuOmofwhgaef
----
....Q....
...NYA...
..TbkX2..
.sKZ6IuO.
mofwhgaef
ABCDEF"$%& G8"F@
----
...A...
..BCD..
.EF"$%.
& G8"F@
ab.c
----
.a.
b.c
Para quem conhece a triangularidade, notará no último caso de teste que as strings não precisam ser manipuladas
code-golf
string
code-golf
combinatorics
code-golf
math
number
code-golf
matrix
code-golf
string
decision-problem
code-golf
internet
code-golf
number
number-theory
integer
expression-building
code-challenge
primes
cops-and-robbers
obfuscation
code-challenge
primes
cops-and-robbers
obfuscation
code-golf
string
balanced-string
code-golf
quine
code-generation
code-golf
matrix
code-golf
tips
c#
code-golf
ascii-art
code-golf
ascii-art
source-layout
code-golf
quine
source-layout
popularity-contest
language-design
code-golf
array-manipulation
subsequence
code-golf
matrix
math
code-challenge
game
graph-theory
atomic-code-golf
code-golf
number
integer
polynomials
equation
code-golf
array-manipulation
sorting
caird coinheringaahing
fonte
fonte
Respostas:
Triangularidade , 127 bytes
Experimente online!
Explicação
Removendo os caracteres que compensam o preenchimento, obtemos o seguinte programa:
... Qual é o comprimento total, certo? Vamos dividi-lo em pedaços.
Gerando os números inteiros [0… len (entrada))
Gerando os pontos
Aparar os caracteres na frente
Aparando os caracteres no final
Terminando o loop e imprimindo bonita
fonte
J
no final e gerar uma série de linhas. Porém, não sei se isso vai lhe poupar alguma coisa, se o final da última linha precisa ser preenchido.
para preencher o espaço restante.f
é necessário porque o intervalo não pode aceitar argumentos de flutuação (mesmo com.0
) 2) Livrar-se deJ
não salva nenhum bytes devido ao preenchimento, então escolhi o formato de saída mais bonito.Japonês ,
151410 bytesProduz uma matriz de linhas.
Experimente | Verifique todos os casos de teste
Explicação
Solução original
Tente
fonte
Casca , 15 bytes
Experimente online!
Explicação
fonte
05AB1E ,
201918 bytesGuardou um byte graças a Magic Octopus Urn
Experimente online!
Explicação
fonte
ÅÉ
por probabilidades pode ajudar?g;ÅÉ£Rvy'.N×.ø}r»
,? Mas não é porque isso não está certo, lol.ÅÉ
ajudaria definitivamente se pudéssemos descobrir o comprimento da linha inferior em 2 bytes. Eu não sei se podemos, no entanto. Pode ser outra maneira de incorporá-lo também.)R
em vez der
que não salvou nenhum bytes: /Python 2 , 83 bytes
Experimente online!
fonte
Geléia ,
2219 bytesUm link monádico retornando uma lista de listas de caracteres (as linhas)
Experimente online!
Quão?
fonte
JavaScript (ES7),
8278 bytesCasos de teste
Mostrar snippet de código
Comentado
fonte
05AB1E , 25 bytes
Experimente online!
fonte
MATL , 21 bytes
Experimente online!
Explicação
Considere a entrada
'DfJ0vCq7G'
como um exemplo. O conteúdo da pilha é mostrado separado por vírgulas, com o último elemento por último. Linhas em uma matriz 2D usam ponto e vírgula como separador.fonte
Limpo ,
107948988 bytesExperimente online! Exemplo de utilização:
@[]1 ['ABCDEF"$%& G8"F@']
.fonte
Haskell ,
8468 bytesExperimente online!
Exemplo de uso:
[]%1 $ "abcd"
gera a lista de linhas[".a.","bcd"]
.fonte
Perl,
5652 bytesInclui
+3
para-p
Dê entrada no STDIN (em princípio sem nova linha final, mas isso só importa para a entrada vazia)
fonte
-p
custa apenas 1 byte'
. Mas esse código faz, portanto ele precisa ser colocado em um arquivo (ou escapando na linha de comando) que precisa de 3 caracteres extras em comparação com a#!
linha normal . Portanto, neste caso, é+3
(para código normal você vai ver Eu, na verdade só contam+
parap
)Vermelho ,
227203 bytesExperimente online!
Ungolfed:
fonte
Retina ,
887271 bytesExperimente online! Edit: Salvo
1213 bytes graças a @MartinEnder. Explicação:Divida o primeiro personagem em sua própria linha para fazer a bola rolar.
Pique cada linha com dois caracteres a mais que o anterior.
Esquerda na primeira metade de cada linha, centralizando-as efetivamente.
Botão direito do mouse em todas as linhas.
fonte
Carvão ,
2119 bytesExperimente online! Link é a versão detalhada do código. Editar: salvou 2 bytes ao descobrir
SquareRoot
. Explicação:fonte
Python 2 , 84 bytes
Experimente online!
fonte
Limpo , 123 bytes
Experimente online!
fonte
Ruby ,
7366 bytesExperimente online!
-5 bytes: Retorna uma matriz de strings em vez de imprimi-las
-2 bytes: declarar
z
no lugar em vez de antecipadamenteUngolfed:
Declarar uma variável
r=q-1
para que eu possa pegars[r*r...q*q]
salva exatamente zero bytes.Usar em
.center
vez de preencher manualmente também economiza zero bytes, mas eu gosto mais.fonte
Stax , 19 bytes
Execute e depure
Equivalente ASCII:
fonte