Sua tarefa: dado um número n
, gere um sinal de '+' n
distante dos caracteres do centro. Se isso for confuso, verifique os casos de teste.
Métodos padrão de entrada: a saída deve ser uma sequência ou impressa. Aplicam-se brechas padrão.
Input: 1
Output: + ] 1 away from center `+`.
Input: 2
Output: + ] 2 away from center `+`.
+++ ] 1 away from center `+`.
+
Input: 3
Output: + ] 3 away from center `+`.
+
+++++
+
+
Isso é código-golfe , então o código mais curto vence!
Respostas:
Carvão , 5 bytes
Experimente online!
fonte
P+
= cruz).Python 2 , 53 bytes
Experimente online!
fonte
JavaScript (ES6),
6765636059 bytesx-1
, a primeira com--x
e a segunda comx
."\n"
por`[newline]`
.repeat
uma maneira que reduzisse o tamanho. (Com menção honrosa a Marie por seus esforços também)Tente
fonte
"\n"
com dois acentos graves e uma nova linha literal entre elesa='repeat',v=.....
e` `[a]
repeat()
mas minhas primeiras tentativas foram 2 ou 3 bytes maiores, então eu a abandonei! Vou dar uma outra olhada quando voltar à frente de um computador.x=>(v=(` `[r='repeat'](--x)+`+<newline>`)[r](x))+`+`[r](x*2+1)+`<newline>`+v
MATL , 11 bytes
Experimente online!
Explicação com exemplo
Considere
n = 3
.fonte
Carvão ,
1613 bytesExperimente online!
Usa uma abordagem diferente da outra resposta do carvão vegetal.
Explicação
Agora o canto superior esquerdo está completo, será algo parecido com isto:
O último passo é a chave para este programa, ele usa a parte superior esquerda do sinal de adição para gerar o resto do sinal de mais, refletindo-o na direção sudeste (para a direita e para baixo).
fonte
Linguagem de programação de Shakespeare ,
749743 bytesExperimente online!
Editar: tornou a resposta compatível com a implementação oficial do SPL - eu não conseguia fazê-lo funcionar antes.
Golpeou 6 bytes porque os números das cenas não precisam ser consecutivos.
Explicação :
SPL é um esolang projetado para se parecer com peças de Shakespeare. Substantivos positivos têm o valor de 1 (aqui gato é usado) e substantivos negativos têm o valor de -1 (nenhum foi usado, mas porco é um deles). Os adjetivos modificam uma constante multiplicando-a por 2.
Tudo até o primeiro ponto é o título e não importa.
Os caracteres são variáveis inteiras, cada um deles também tem uma pilha, mas eu não precisava usar esse recurso.
Atos e cenas são usados como marcadores de goto
Só é útil se exatamente dois personagens estiverem no palco ao mesmo tempo.
Lê um número e faz Ford se lembrar dele.
Como você pode ver, o Engrish é válido no SPL. Isso torna o valor de Puck "o diferente entre um gato e eu". Mas o que isso significa?
cat
é um substantivo positivo, por isso éPuck = 1 - Ford
.Exeunt é apenas um plural de "saída", e sem argumentos significa que todos no palco saem.
Também é,
Page = 1 - Ford
mas é falado por um ator diferente, então issoI
seria errado. Como é um loop, não posso simplesmente copiar o valor dePuck
.Bem direto agora.
Ajax = Puck * Page
."as [adj] as" é o
==
operador.Se Ajax == 0 ... "gato" é 1, "gato grande" é 2, "gato grande" é 4 e assim por diante. Depois de substituir as constantes simples, obtemos "a soma da soma da soma de 32 e 8 e 2 e 1" -> "a soma da soma de 40 e 2 e 1" -> "a soma de 42 e 1" -> "43", que é o ASCII para +.
caso contrário, é apenas "gordo gordo gordo gordo gordo", então o Ajax recebe o valor de 32, o ASCII por um espaço.
Este é o comando para gerar um caractere.
Esta é uma construção de loop. "Você soma você e gato" incrementa a página e
if(Page != Ford) goto Scene III
. O restante do programa usa os mesmos componentes, portanto, aqui está uma versão mais legível do pseudocódigo:fonte
If not,let us return to Scene III.
" -1; quebra a quarta parede: PGelatina , 11 bytes
Experimente online!
fonte
Mathematica, 39 bytes
CrossMatrix
é um embutido que gera uma matriz da forma necessária com1
s em vez de+
s e0
s em vez de espaços. Se multiplicarmos essa matriz por"+"
, isso substitui1
s por+
s, deixando-os0
inalterados (obviamente ...0*x = 0
e1*x = x
, certo?). Em seguida, substituímos os zeros manualmente por espaços usando/. 0->" "
. Finalmente, imprimimos cada linha da matriz comPrint@@@(...)
.fonte
Print
poderia ser usado assim.C, 69 bytes
Não é muito interessante ... Loops sobre o quadrado, imprimindo o caractere apropriado.
fonte
Rubi,
41.40 bytesExperimente online!
fonte
GNU sed ,
10499 bytes-5 graças a seshoumara
Inclui +1 para
-r
Recebe entrada em unário.
Experimente online!
fonte
s/( *2)2(2*)/\1\n\1\2/
es/(.*)(\n1*)/&\n\1/
como mostrado aqui , para uma pontuação total de 99.Lua
113, 90 bytesfonte
Python 2 , 52 bytes
Experimente online!
Uma alternativa de 53 bytes ( TIO ):
fonte
R, 54 bytes
Raspando 7 bytes graças a @Jarko Dubbeldam:
resposta anterior:
fonte
function(n){a=matrix("",n*2-1,n*2-1);a[n,]="x";a[,n]="x";a}
seriam 59 bytes!matrix("",y<-n*2-1,y)
a[n,]=a[,n]="x"
também funciona, economizando mais alguns bytes.scan()
e torná-lo um programa em vez de uma função:n=scan();a=matrix("",y<-n*2-1,y);a[n,]=a[,n]="+";a
PowerShell , 48 bytes
Experimente online!
Recebe entrada
$n
. Começa construindo uma sequência de--$n
espaços concatenados com+
. Isso é convertido em uma matriz usando o operador de vírgula ($n
vezes decrescido) . Essa matriz é armazenada$x
e encapsulada em parênteses para colocar uma cópia no pipeline.Em seguida, fazemos a seção do meio, que é uma
+
sequência multiplicada pelo número apropriado de vezes. Isso fica na calha. Finalmente, colocamos$x
o pipeline novamente.Todos são deixados no pipeline na conclusão do programa e o implícito
Write-Output
insere uma nova linha entre os elementos.fonte
Perl 5 , 45 bytes
44 bytes de código +
-p
sinalizador.Experimente online!
Algumas abordagens semelhantes (mas ainda diferentes):
48 bytes (47+
-p
):50 bytes (49+
-n
):fonte
Python 2 ,
60,56 bytesExperimente online!
fonte
CJam , 23 bytes
Experimente online!
Explicação
Isso parece um pouco abaixo do ideal, mas a idéia é sobrepor as duas grades a seguir:
O que dá o resultado desejado.
fonte
CJam, 17
Experimente online
Explicação:
fonte
Oitava,
3631 bytesInspirado na resposta MATL de @LuisMendo.
Experimente online!
Resposta anterior:
Experimente online!
fonte
05AB1E ,
151412 bytesExperimente online!
-2 graças a Emigna.
fonte
F'+}¹·<×)û.c
para 12.Python 2, 65 bytes
Experimente Online!
fonte
JS (ES6),
887473 bytesProvavelmente pode ser jogado mais.
fonte
"\n"
com dois acentos graves e uma nova linha literal entre elesJavaScript (ES6), 60 bytes
Gera duas novas linhas finais. Formulação alternativa, também 60 bytes:
fonte
PowerShell, 48
Parece não ficar mais curto que isso (e praticamente a mesma abordagem que a outra solução):
ou
fonte
V ,
191815 bytesGolfou 3 bytes graças a @ nmjcman101 usando
.
eÒ+
Experimente online!
fonte
REXX, 81 bytes
fonte
PHP, 68 bytes
83 bytes
fonte
$m=$argn
e pré-incrementando em$i
vez de incrementá-lo. você também pode salvar um byte movendo a$m
atribuição no final e soltando os colchetes.for(;$i<$c=-1+2*$m=$argn;)echo"\n".str_pad("+",$c," +"[$m==++$i],2);
while(++$y<2*$n=$argn)echo"\n",str_pad("+",$n*2-1," +"[$y==$n],2);
66 bytes (e excepto um mais com uma quebra de linha física)MUMPS, 48
5053bytesfonte
Brain-Flak , 216 + 1 = 217 bytes
+1 bytes da
-A
bandeiraExperimente online!
Explicação por vir
fonte