Stars Make Stars Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern) The PPCG Site design is on its way - help us make it awesome! Sandbox for Proposed ChallengesRotate an ASCII art imageAnti-aliasing ASCII artDraw a tiled cube of any sizeStar programming!Emulate a 7-segment displayASCII ART edge detectionThe Letter E with EArmistice Day ChallengeRead ASCII-Art TextDraw some ASCII stars

Do I really need to have a message in a novel to appeal to readers?

Is it possible for SQL statements to execute concurrently within a single session in SQL Server?

Is it fair for a professor to grade us on the possession of past papers?

Should I use a zero-interest credit card for a large one-time purchase?

Question about debouncing - delay of state change

How to react to hostile behavior from a senior developer?

Is grep documentation about ignoring case wrong, since it doesn't ignore case in filenames?

How to write the following sign?

Illegal assignment from sObject to Id

Do wooden building fires get hotter than 600°C?

Why do we bend a book to keep it straight?

Sum letters are not two different

Is there hard evidence that the grant peer review system performs significantly better than random?

If Windows 7 doesn't support WSL, then what does Linux subsystem option mean?

Using audio cues to encourage good posture

Chinese Seal on silk painting - what does it mean?

Generate an RGB colour grid

Take 2! Is this homebrew Lady of Pain warlock patron balanced?

Significance of Cersei's obsession with elephants?

Why do we need to use the builder design pattern when we can do the same thing with setters?

Maximum summed subsequences with non-adjacent items

Central Vacuuming: Is it worth it, and how does it compare to normal vacuuming?

How could we fake a moon landing now?

Performance gap between vector<bool> and array



Stars Make Stars



Announcing the arrival of Valued Associate #679: Cesar Manara
Planned maintenance scheduled April 23, 2019 at 00:00UTC (8:00pm US/Eastern)
The PPCG Site design is on its way - help us make it awesome!
Sandbox for Proposed ChallengesRotate an ASCII art imageAnti-aliasing ASCII artDraw a tiled cube of any sizeStar programming!Emulate a 7-segment displayASCII ART edge detectionThe Letter E with EArmistice Day ChallengeRead ASCII-Art TextDraw some ASCII stars










18












$begingroup$


Introduction



The idea is to use the asterisk character (star) * to display an ascii-art star at a specified dimension. The dimension is an input number greater than or equal to $1$ that specifies the height in lines of the upper point of the star. The stars here are intended to be six pointed stars with larger sizes looking better from a picture perspective.



In all cases the ascii-art representation of the stars are to appear as two triangles that overlap as shown in the following examples.



Parametrics



The following picture and table of data describes attributes for the first seven sizes of the star. Each of the parameters grows in an arithmetic progression as $N$ increases, except $N=1$ is different.



enter image description here



enter image description here



Examples



For an input of 1 (the degenerate case) the program output should be as follows:



 *
*****
*****
*


Input of 2:



 *
***
*********
*******
*********
***
*


(3)



 *
***
*****
***************
*************
***********
*************
***************
*****
***
*


(5)



 *
***
*****
*******
*********
***************************
*************************
***********************
*********************
*******************
*********************
***********************
*************************
***************************
*********
*******
*****
***
*


Challenge



Your task is to create a function or program that will accept the number N as input and then output the appropriately sized star using just characters and the * character.



  • You may assume that the input value is always a positive integer.

  • Trailing whitespace on the output lines is OK.

  • The program algorithm should be general enough for any $N$ input to produce the star art
    output. Practical limitations exist of course due to display output
    size.

  • Output should print to STDOUT.


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply.

Scoring



This is code-golf so the code with the shortest number of bytes wins!










share|improve this question









New contributor




Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$







  • 4




    $begingroup$
    You also say it can be a function but it must "print to STDOUT". Is this intentional?
    $endgroup$
    – Sriotchilism O'Zaic
    Apr 14 at 14:55






  • 5




    $begingroup$
    Yep, a general construction rule would be great... for instance I'm not sure about even inputs, like N = 4...
    $endgroup$
    – digEmAll
    Apr 14 at 15:12






  • 7




    $begingroup$
    Please don't say "The algorithm to produce the stars is part of the programming challenge." This is not something most golfers enjoy when doing an ASCII art challenge, and sounds like an attempt to pawn off something that's the specifiers responsibility. That said, I'm surprised people are unclear on the construction here; it's two triangles overlapped like the challenge says. Would it help to explicitly say the size and offset of the triangles?
    $endgroup$
    – xnor
    Apr 14 at 15:30







  • 9




    $begingroup$
    @TimPederick Good catch about N=1 being different. I put in a note so solvers don't miss this. I think the challenge would be better without this special case though.
    $endgroup$
    – xnor
    Apr 14 at 15:50






  • 4




    $begingroup$
    @xnor: since n=1 was different, I could't infer a general rule...and IMO the rule should always be specified for ASCII art, otherwise I'm well allowed to print whatever I want outside the range of the defined examples ;)
    $endgroup$
    – digEmAll
    Apr 14 at 16:18















18












$begingroup$


Introduction



The idea is to use the asterisk character (star) * to display an ascii-art star at a specified dimension. The dimension is an input number greater than or equal to $1$ that specifies the height in lines of the upper point of the star. The stars here are intended to be six pointed stars with larger sizes looking better from a picture perspective.



In all cases the ascii-art representation of the stars are to appear as two triangles that overlap as shown in the following examples.



Parametrics



The following picture and table of data describes attributes for the first seven sizes of the star. Each of the parameters grows in an arithmetic progression as $N$ increases, except $N=1$ is different.



enter image description here



enter image description here



Examples



For an input of 1 (the degenerate case) the program output should be as follows:



 *
*****
*****
*


Input of 2:



 *
***
*********
*******
*********
***
*


(3)



 *
***
*****
***************
*************
***********
*************
***************
*****
***
*


(5)



 *
***
*****
*******
*********
***************************
*************************
***********************
*********************
*******************
*********************
***********************
*************************
***************************
*********
*******
*****
***
*


Challenge



Your task is to create a function or program that will accept the number N as input and then output the appropriately sized star using just characters and the * character.



  • You may assume that the input value is always a positive integer.

  • Trailing whitespace on the output lines is OK.

  • The program algorithm should be general enough for any $N$ input to produce the star art
    output. Practical limitations exist of course due to display output
    size.

  • Output should print to STDOUT.


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply.

Scoring



This is code-golf so the code with the shortest number of bytes wins!










share|improve this question









New contributor




Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$







  • 4




    $begingroup$
    You also say it can be a function but it must "print to STDOUT". Is this intentional?
    $endgroup$
    – Sriotchilism O'Zaic
    Apr 14 at 14:55






  • 5




    $begingroup$
    Yep, a general construction rule would be great... for instance I'm not sure about even inputs, like N = 4...
    $endgroup$
    – digEmAll
    Apr 14 at 15:12






  • 7




    $begingroup$
    Please don't say "The algorithm to produce the stars is part of the programming challenge." This is not something most golfers enjoy when doing an ASCII art challenge, and sounds like an attempt to pawn off something that's the specifiers responsibility. That said, I'm surprised people are unclear on the construction here; it's two triangles overlapped like the challenge says. Would it help to explicitly say the size and offset of the triangles?
    $endgroup$
    – xnor
    Apr 14 at 15:30







  • 9




    $begingroup$
    @TimPederick Good catch about N=1 being different. I put in a note so solvers don't miss this. I think the challenge would be better without this special case though.
    $endgroup$
    – xnor
    Apr 14 at 15:50






  • 4




    $begingroup$
    @xnor: since n=1 was different, I could't infer a general rule...and IMO the rule should always be specified for ASCII art, otherwise I'm well allowed to print whatever I want outside the range of the defined examples ;)
    $endgroup$
    – digEmAll
    Apr 14 at 16:18













18












18








18


1



$begingroup$


Introduction



The idea is to use the asterisk character (star) * to display an ascii-art star at a specified dimension. The dimension is an input number greater than or equal to $1$ that specifies the height in lines of the upper point of the star. The stars here are intended to be six pointed stars with larger sizes looking better from a picture perspective.



In all cases the ascii-art representation of the stars are to appear as two triangles that overlap as shown in the following examples.



Parametrics



The following picture and table of data describes attributes for the first seven sizes of the star. Each of the parameters grows in an arithmetic progression as $N$ increases, except $N=1$ is different.



enter image description here



enter image description here



Examples



For an input of 1 (the degenerate case) the program output should be as follows:



 *
*****
*****
*


Input of 2:



 *
***
*********
*******
*********
***
*


(3)



 *
***
*****
***************
*************
***********
*************
***************
*****
***
*


(5)



 *
***
*****
*******
*********
***************************
*************************
***********************
*********************
*******************
*********************
***********************
*************************
***************************
*********
*******
*****
***
*


Challenge



Your task is to create a function or program that will accept the number N as input and then output the appropriately sized star using just characters and the * character.



  • You may assume that the input value is always a positive integer.

  • Trailing whitespace on the output lines is OK.

  • The program algorithm should be general enough for any $N$ input to produce the star art
    output. Practical limitations exist of course due to display output
    size.

  • Output should print to STDOUT.


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply.

Scoring



This is code-golf so the code with the shortest number of bytes wins!










share|improve this question









New contributor




Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







$endgroup$




Introduction



The idea is to use the asterisk character (star) * to display an ascii-art star at a specified dimension. The dimension is an input number greater than or equal to $1$ that specifies the height in lines of the upper point of the star. The stars here are intended to be six pointed stars with larger sizes looking better from a picture perspective.



In all cases the ascii-art representation of the stars are to appear as two triangles that overlap as shown in the following examples.



Parametrics



The following picture and table of data describes attributes for the first seven sizes of the star. Each of the parameters grows in an arithmetic progression as $N$ increases, except $N=1$ is different.



enter image description here



enter image description here



Examples



For an input of 1 (the degenerate case) the program output should be as follows:



 *
*****
*****
*


Input of 2:



 *
***
*********
*******
*********
***
*


(3)



 *
***
*****
***************
*************
***********
*************
***************
*****
***
*


(5)



 *
***
*****
*******
*********
***************************
*************************
***********************
*********************
*******************
*********************
***********************
*************************
***************************
*********
*******
*****
***
*


Challenge



Your task is to create a function or program that will accept the number N as input and then output the appropriately sized star using just characters and the * character.



  • You may assume that the input value is always a positive integer.

  • Trailing whitespace on the output lines is OK.

  • The program algorithm should be general enough for any $N$ input to produce the star art
    output. Practical limitations exist of course due to display output
    size.

  • Output should print to STDOUT.


  • Standard loopholes are forbidden.

  • This is code-golf so all usual golfing rules apply.

Scoring



This is code-golf so the code with the shortest number of bytes wins!







code-golf ascii-art






share|improve this question









New contributor




Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.











share|improve this question









New contributor




Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









share|improve this question




share|improve this question








edited Apr 14 at 19:55







Michael Karas













New contributor




Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.









asked Apr 14 at 14:49









Michael KarasMichael Karas

1978




1978




New contributor




Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.





New contributor





Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.






Michael Karas is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.







  • 4




    $begingroup$
    You also say it can be a function but it must "print to STDOUT". Is this intentional?
    $endgroup$
    – Sriotchilism O'Zaic
    Apr 14 at 14:55






  • 5




    $begingroup$
    Yep, a general construction rule would be great... for instance I'm not sure about even inputs, like N = 4...
    $endgroup$
    – digEmAll
    Apr 14 at 15:12






  • 7




    $begingroup$
    Please don't say "The algorithm to produce the stars is part of the programming challenge." This is not something most golfers enjoy when doing an ASCII art challenge, and sounds like an attempt to pawn off something that's the specifiers responsibility. That said, I'm surprised people are unclear on the construction here; it's two triangles overlapped like the challenge says. Would it help to explicitly say the size and offset of the triangles?
    $endgroup$
    – xnor
    Apr 14 at 15:30







  • 9




    $begingroup$
    @TimPederick Good catch about N=1 being different. I put in a note so solvers don't miss this. I think the challenge would be better without this special case though.
    $endgroup$
    – xnor
    Apr 14 at 15:50






  • 4




    $begingroup$
    @xnor: since n=1 was different, I could't infer a general rule...and IMO the rule should always be specified for ASCII art, otherwise I'm well allowed to print whatever I want outside the range of the defined examples ;)
    $endgroup$
    – digEmAll
    Apr 14 at 16:18












  • 4




    $begingroup$
    You also say it can be a function but it must "print to STDOUT". Is this intentional?
    $endgroup$
    – Sriotchilism O'Zaic
    Apr 14 at 14:55






  • 5




    $begingroup$
    Yep, a general construction rule would be great... for instance I'm not sure about even inputs, like N = 4...
    $endgroup$
    – digEmAll
    Apr 14 at 15:12






  • 7




    $begingroup$
    Please don't say "The algorithm to produce the stars is part of the programming challenge." This is not something most golfers enjoy when doing an ASCII art challenge, and sounds like an attempt to pawn off something that's the specifiers responsibility. That said, I'm surprised people are unclear on the construction here; it's two triangles overlapped like the challenge says. Would it help to explicitly say the size and offset of the triangles?
    $endgroup$
    – xnor
    Apr 14 at 15:30







  • 9




    $begingroup$
    @TimPederick Good catch about N=1 being different. I put in a note so solvers don't miss this. I think the challenge would be better without this special case though.
    $endgroup$
    – xnor
    Apr 14 at 15:50






  • 4




    $begingroup$
    @xnor: since n=1 was different, I could't infer a general rule...and IMO the rule should always be specified for ASCII art, otherwise I'm well allowed to print whatever I want outside the range of the defined examples ;)
    $endgroup$
    – digEmAll
    Apr 14 at 16:18







4




4




$begingroup$
You also say it can be a function but it must "print to STDOUT". Is this intentional?
$endgroup$
– Sriotchilism O'Zaic
Apr 14 at 14:55




$begingroup$
You also say it can be a function but it must "print to STDOUT". Is this intentional?
$endgroup$
– Sriotchilism O'Zaic
Apr 14 at 14:55




5




5




$begingroup$
Yep, a general construction rule would be great... for instance I'm not sure about even inputs, like N = 4...
$endgroup$
– digEmAll
Apr 14 at 15:12




$begingroup$
Yep, a general construction rule would be great... for instance I'm not sure about even inputs, like N = 4...
$endgroup$
– digEmAll
Apr 14 at 15:12




7




7




$begingroup$
Please don't say "The algorithm to produce the stars is part of the programming challenge." This is not something most golfers enjoy when doing an ASCII art challenge, and sounds like an attempt to pawn off something that's the specifiers responsibility. That said, I'm surprised people are unclear on the construction here; it's two triangles overlapped like the challenge says. Would it help to explicitly say the size and offset of the triangles?
$endgroup$
– xnor
Apr 14 at 15:30





$begingroup$
Please don't say "The algorithm to produce the stars is part of the programming challenge." This is not something most golfers enjoy when doing an ASCII art challenge, and sounds like an attempt to pawn off something that's the specifiers responsibility. That said, I'm surprised people are unclear on the construction here; it's two triangles overlapped like the challenge says. Would it help to explicitly say the size and offset of the triangles?
$endgroup$
– xnor
Apr 14 at 15:30





9




9




$begingroup$
@TimPederick Good catch about N=1 being different. I put in a note so solvers don't miss this. I think the challenge would be better without this special case though.
$endgroup$
– xnor
Apr 14 at 15:50




$begingroup$
@TimPederick Good catch about N=1 being different. I put in a note so solvers don't miss this. I think the challenge would be better without this special case though.
$endgroup$
– xnor
Apr 14 at 15:50




4




4




$begingroup$
@xnor: since n=1 was different, I could't infer a general rule...and IMO the rule should always be specified for ASCII art, otherwise I'm well allowed to print whatever I want outside the range of the defined examples ;)
$endgroup$
– digEmAll
Apr 14 at 16:18




$begingroup$
@xnor: since n=1 was different, I could't infer a general rule...and IMO the rule should always be specified for ASCII art, otherwise I'm well allowed to print whatever I want outside the range of the defined examples ;)
$endgroup$
– digEmAll
Apr 14 at 16:18










13 Answers
13






active

oldest

votes


















7












$begingroup$


05AB1E, 21 bytes



3*s≠-L·<sÅ0«Âø€à'*×.C


Try it online!
or as a Test Suite



Explanation



3* # multiply input by 3
s≠- # subtract 1 if the input isn't 1
L # push range [1 ... (3*n-(n!=1))]
·< # multiply by 2 and subtract 1 to get odd numbers
sÅ0« # append n zeroes
Âø # zip with a reversed copy
ۈ # get the largest number in each pair
'*× # repeat "*" for each number in the list
.C # format centered





share|improve this answer











$endgroup$








  • 1




    $begingroup$
    Your output stars look correct.
    $endgroup$
    – Michael Karas
    Apr 14 at 16:08






  • 1




    $begingroup$
    I can find loads of alternatives for 3*s≠-L·< like 6*s≠·-ÅÉ or ≠3/-6*ÅÉ, but unfortunately none are shorter.. Nice answer, as always! :)
    $endgroup$
    – Kevin Cruijssen
    Apr 14 at 17:47


















7












$begingroup$


Haskell, 114 bytes



Builds a function g which takes an number and produces a IO monad that prints the star to STDOUT. I think this is ok.





f=replicate
a%b=mapM_(n->putStrLn$f(a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..a]++f b 0
g 1=4%1
g a=(3*a)%a


Try it online!



Explanation



First lets talk about the lambda.



n->putStrLn$f(a-n)' '++f(2*n-1)'*'


This takes a number, n, to be drawn as stars. We print twice that many stars and then 1 more and pad it on the right to the size of the image. We pad this on the right by a spaces to center the line of stars. We can use this lambda to draw each line.



From this lambda we create (%). (%) starts with doing mapM_ with our lambda to turn a profile into the shape.



Now all we need to do is make a list of the profile for the star. We can do this by making a triangle first with [1..a], then padding it with some zeros ++replicate b 0. If we take the profile of the triangle and reverse it we get the other half of the star. To super impose them we just make a new profile where each entry is the max of the two triangles. This is zipWith max.



We then call this in one of two ways: as 3%1 for input of 1 and with (3*a-1)%a otherwise.



From here we do a little bit of fiddling with some of the values to shave some bytes. Since 3*a-1 is rather long we offset some of our other values by 1 so that everything cancels and we get the intended behavior with 3*a instead. Namely we start our list at 2 instead of 1 and do 2*n-3 instead of 2*n-1 to make up for the change.



Alternative version, 114 bytes



This one builds a point-free function (%)<*>min 2



f=replicate
a%b=mapM_(n->putStrLn$f(3*a-n)' '++f(2*(n-b)+1)'*')$zipWith max<*>reverse$[b..3*a]++f a 0
(%)<*>min 2


Try it online!



Handles all $N>1$, 98 bytes



f=replicate
g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..3*a]++f a 0


Try it online!



Handles all cases like the $N=1$ case, 98 bytes



f=replicate
g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-1)'*')$zipWith max<*>reverse$[1..3*a]++f a 0


Try it online!






share|improve this answer











$endgroup$












  • $begingroup$
    Your output looks nice now.
    $endgroup$
    – Michael Karas
    Apr 14 at 16:04


















6












$begingroup$


R, 125 117 107 bytes





function(n,S=3*n+!n-1,P=pmax(I<-c(2:S*2-3,!1:n),rev(I)),`~`=strrep)cat(paste0(' '~S-2-P%/%2,'*'~P),sep='
')


Try it online!



  • -18 thanks to @Giuseppe


Previous (different) approach :




R, 150 148 136 135 130 128 bytes





function(n,G=n<2,K=4*n-1+G)for(i in 1:K-1)cat(`[<-`(rep(' ',W<-3*n-2+G),1+W+c(-i:i*(i<K-n),-(j=K-i-1):j*(i>=n)),'*'),sep='','
')


Try it online!



  • -14 thanks to @Kirill L.

  • -1 thanks to @t-clausen.dk

  • -7 thanks to @Giuseppe





share|improve this answer











$endgroup$












  • $begingroup$
    Yeah, I also don't like those repeated S[]= assignments, and looks like this works
    $endgroup$
    – Kirill L.
    Apr 14 at 17:55










  • $begingroup$
    Great ! I was thinking to something like that... but I was having dinner :P
    $endgroup$
    – digEmAll
    Apr 14 at 18:08










  • $begingroup$
    Seems you can save a byte: i>n-1 can be rewritten to i>=n
    $endgroup$
    – t-clausen.dk
    Apr 15 at 12:36










  • $begingroup$
    @t-clausen.dk: yep, thanks!
    $endgroup$
    – digEmAll
    Apr 15 at 16:54






  • 1




    $begingroup$
    117 bytes on the newer version
    $endgroup$
    – Giuseppe
    2 days ago



















5












$begingroup$

JavaScript (ES8), 101 bytes





n=>(k=3*n+!~-n,g=y=>++y<k+n?`
`.padEnd(w=k-Math.max(y>n&&n-y+k,y<k&&y)).padEnd(2*k+~w,'*')+g(y):'')``


Try it online!






share|improve this answer









$endgroup$




















    5












    $begingroup$


    Python 2, 101 99 97 bytes





    n=input()
    x=2*(n>1)
    for i in range(1,8*n,2):print('*'*[i,8*n-i-x][i+x>n*6or i/n/2%2]).center(6*n)


    Try it online!



    -2 bytes, thanks to Lynn






    share|improve this answer











    $endgroup$












    • $begingroup$
      I'm reasonably sure you don't need the parens in the selector expression, so i+x>n*6or saves two bytes.
      $endgroup$
      – Lynn
      Apr 15 at 13:25










    • $begingroup$
      @Lynn Thanks :)
      $endgroup$
      – TFeld
      Apr 15 at 14:04










    • $begingroup$
      You can even go i+x>~i/n/2%2*6*n or something like i+x>3*n*(~i/n&2) (both 96 bytes.)
      $endgroup$
      – Lynn
      Apr 15 at 14:15


















    3












    $begingroup$


    Jelly, 21 bytes



    ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY


    A full program accepting a positive integer which prints to STDOUT.



    Try it online! Or see a test-suite.



    How?



    ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY - Main Link: integer, n e.g. 3
    3 - three 3
    × - multiply (n by) 9
    ’ - decrement 8
    Ị - insignificant (abs(n)<=1)? 0
    + - add 8
    R - range [1,2,3,4,5,6,7,8]
    Ṭ - un-truth (n) [0,0,1]
    ; - concatenate [1,2,3,4,5,6,7,8,0,0,1]
    $ - last two links as a monad:
    Ṛ - reverse [1,0,0,8,7,6,5,4,3,2,1]
    » - maximum (vectorises) [1,2,3,8,7,6,7,8,3,2,1]
    ”* - an asterisk character '*'
    ẋ - repeat (vectorises) ["*","**",...]
    ⁶ - a space character ' '
    z - transpose with filler ["***********"," ********* ",...]
    Ṛ - reverse [" * * "," ** ** ",...]
    Z - transpose [" *"," **",...]
    ŒB - bounce (vectorises) [" * "," *** ",...]
    Y - join with newline characters " * n *** n..."
    - implicit print





    share|improve this answer











    $endgroup$




















      2












      $begingroup$


      Canvas, 25 23 bytes



      R:{⁸3×4M∔]∔{*×]↔⁸1≡?╪]┼


      Try it here!



      15 bytes without handling 1






      share|improve this answer











      $endgroup$












      • $begingroup$
        Makes nice stars.
        $endgroup$
        – Michael Karas
        Apr 14 at 16:07


















      2












      $begingroup$


      Jelly, 21 bytes



      ×’»ɗ3”*xⱮz⁶ɓ⁶x;»Ṛ$ŒBY


      Try it online!



      A monadic link accepting a single integer as its left argument and returning a newline-separated Jelly string with the star as its output. When run as a full program implicitly prints the star to STDOUT.



      Explanation



       ɗ3 | Last three links as a dyad with 3 as right argument:
      × | Multiply (by 3)
      ’ | Decrease by 1
      » | Maximum of this (and 3)
      ”*xⱮ | An implicit range from 1 to this many asterisks
      z⁶ | Zip with space as filler
      ɓ | Start a new dyadic chain with the input as left argument and the list of asterisks as right argument
      ⁶x | Input many spaces
      ; | Concatenated to the asterisk list
      $ | Last two links as a monad:
      »Ṛ | Maximum of this list and its reverse
      ŒB | Bounce each list (i.e. mirror it without duplicating the middle entry)
      Y | Join with newlines





      share|improve this answer









      $endgroup$








      • 1




        $begingroup$
        I appreciate you writing the start the stylish way even though ×3’»3 is the same length ^_^
        $endgroup$
        – Lynn
        Apr 15 at 13:28






      • 1




        $begingroup$
        @Lynn at the point I did that I thought I was going to be using another quick to merge multiple links, and it meant that I could do so within the maximum 4 allowed. However, once I decided to use ɓ it didn’t matter but I kept it because I still liked it!
        $endgroup$
        – Nick Kennedy
        Apr 15 at 13:32


















      2












      $begingroup$


      Charcoal, 25 bytes



      G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*‖O¬C⁰¬⊖θ


      Try it online! Link is to verbose version of code. Explanation:



      G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*


      Draw an irregular pentagon representing the top right quarter of the star, but special-casing 1 to make the row an extra column wider.



      ‖O¬


      Reflect to complete the star.



      C⁰¬⊖θ


      More special-casing to make the star for 1 an extra row taller.



      Alternative solution, also 25 bytes:



      ∧¬⊖θ*G↗↓⊖׳N*‖O‖OO↓∧⊖θ⊖⊗θ


      Try it online! Link is to verbose version of code. Explanation:



      ∧¬⊖θ*


      Print an extra * for the case of 1.



      G↗↓⊖׳N*


      Draw the left half of a triangle of the appropriate size.



      ‖O


      Reflect to complete the triangle.



      ‖OO↓∧⊖θ⊖⊗θ


      Overlap it with its reflection, except in the case of 1, in which case just reflect it.



      14 bytes without special-casing for 1:



      G<⊖׳N*‖OO↑⊖⊗θ


      Try it online! Link is to verbose version of code. Explanation:



      G<⊖׳N*


      Draw a triangle of the appropriate size.



      ‖OO↑⊖⊗θ


      Overlap it with its reflection.






      share|improve this answer











      $endgroup$




















        2












        $begingroup$


        Perl 6, 74 bytes





        [R,] $_o.&


        Try it online!



        Literally creates a triangle with the right proportions and overlaps it with a upside-down copy using the string or operator (~|). Outputs as a list of lines with a leading and trailing line whitespace.



        Explanation:



         {.& # Anonymous code block
        ( )xx$_*3-($_>1) # Repeat n*3-(n!=1) times
        ' 'x--$+$_*3 # With a decreasing indentation
        ~'*'x$++*2+1 # Append an increasing triangle
        # This creates the triangle
        ,|($ xx$_) # And add some padding lines
        o # Pass the triangle to the combining function
        Z~| # Zip string bitwise or
        $_ # The list
        [R,] $_ # With its reverse





        share|improve this answer









        $endgroup$




















          2












          $begingroup$


          J, 53 50 bytes



          ' *'~[:(+..)"1*@<:>:/~@i.@-~3*]


          Try it online!



          ungolfed



          ' *' ~ [: (+. .)"1 *@<: >:/~@i.@-~ 3 * ]


          how



          Use a function table (like a 3rd grade times table) to construct half the triangle by using >: (greater than or equal) as the function. Then reverse each row, chop of the last column, and stitch the two sides together to get the full triangle (but made of 1 and 0). Add n rows of zeros at the bottom. Finally reverse the whole thing, and overlay it on the original, using boolean or +. to get the result. Then turn the 1 to * and 0 to spaces.






          share|improve this answer











          $endgroup$












          • $begingroup$
            Nice! Here's my solution - same length, different approach: Try it online!
            $endgroup$
            – Galen Ivanov
            2 days ago






          • 1




            $begingroup$
            Thanks. It sure feels like it could be golfed more, but I tried a handful of other approaches and wasn't able to do it.
            $endgroup$
            – Jonah
            2 days ago


















          2












          $begingroup$

          T-SQL, 194 bytes



          @ is the input value



          @c handles the width of the top triangle



          @d handles the width bottom triangle



          @e contains the output either @c or @d - this saves a few bytes



          @f handles the special case of 1 as input. @c*@=3 determines when to use @f. 5 bytes cheaper than writing @c=3and @=1



          DECLARE @ INT=8

          ,@c INT=1,@e INT=1,@d INT,@f INT=0SET @d=@*8-3r:PRINT
          space(@*3-@e/2+@f/2)+replicate('*',@e-@f)SELECT
          @c=nullif(@c,@*6-3)+2,@f=iif(@c*@=3,2,0),@d-=2-@f,@e=iif(@c>@d
          or @c/2<@,@c,@d)IF @d>0goto r


          Try it online






          share|improve this answer











          $endgroup$




















            1












            $begingroup$


            Japt -R, 25 bytes



            +5 bytes for n=1 :



            õ cUon3*U-´UÎ)®ç* êÃê!U û


            Try it



            õ cUon3*U-´UÎ)®ç* êÃê!U û :Implicit input of integer U
            õ :Range [1,U]
            c :Concatenate
            Uo : Range [0,U)
            n : Subtract each from
            3*U- : Multiply U by 3 and subtract
            ´U : Decrement U
            Î : Get sign
            ) :End concat
            ® :Map each Z
            ç* : Repeat "*" Z times
            ê : Palindromise
            Ã :End map
            ê!U :If decremented U is 0, append reverse, else, palindromise
            û :Centre pad each line with spaces to the length of the longest
            :Implicitly join with newlines and output





            share|improve this answer











            $endgroup$













              Your Answer






              StackExchange.ifUsing("editor", function ()
              StackExchange.using("externalEditor", function ()
              StackExchange.using("snippets", function ()
              StackExchange.snippets.init();
              );
              );
              , "code-snippets");

              StackExchange.ready(function()
              var channelOptions =
              tags: "".split(" "),
              id: "200"
              ;
              initTagRenderer("".split(" "), "".split(" "), channelOptions);

              StackExchange.using("externalEditor", function()
              // Have to fire editor after snippets, if snippets enabled
              if (StackExchange.settings.snippets.snippetsEnabled)
              StackExchange.using("snippets", function()
              createEditor();
              );

              else
              createEditor();

              );

              function createEditor()
              StackExchange.prepareEditor(
              heartbeatType: 'answer',
              autoActivateHeartbeat: false,
              convertImagesToLinks: false,
              noModals: true,
              showLowRepImageUploadWarning: true,
              reputationToPostImages: null,
              bindNavPrevention: true,
              postfix: "",
              imageUploader:
              brandingHtml: "Powered by u003ca class="icon-imgur-white" href="https://imgur.com/"u003eu003c/au003e",
              contentPolicyHtml: "User contributions licensed under u003ca href="https://creativecommons.org/licenses/by-sa/3.0/"u003ecc by-sa 3.0 with attribution requiredu003c/au003e u003ca href="https://stackoverflow.com/legal/content-policy"u003e(content policy)u003c/au003e",
              allowUrls: true
              ,
              onDemand: true,
              discardSelector: ".discard-answer"
              ,immediatelyShowMarkdownHelp:true
              );



              );






              Michael Karas is a new contributor. Be nice, and check out our Code of Conduct.









              draft saved

              draft discarded


















              StackExchange.ready(
              function ()
              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f183174%2fstars-make-stars%23new-answer', 'question_page');

              );

              Post as a guest















              Required, but never shown

























              13 Answers
              13






              active

              oldest

              votes








              13 Answers
              13






              active

              oldest

              votes









              active

              oldest

              votes






              active

              oldest

              votes









              7












              $begingroup$


              05AB1E, 21 bytes



              3*s≠-L·<sÅ0«Âø€à'*×.C


              Try it online!
              or as a Test Suite



              Explanation



              3* # multiply input by 3
              s≠- # subtract 1 if the input isn't 1
              L # push range [1 ... (3*n-(n!=1))]
              ·< # multiply by 2 and subtract 1 to get odd numbers
              sÅ0« # append n zeroes
              Âø # zip with a reversed copy
              ۈ # get the largest number in each pair
              '*× # repeat "*" for each number in the list
              .C # format centered





              share|improve this answer











              $endgroup$








              • 1




                $begingroup$
                Your output stars look correct.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:08






              • 1




                $begingroup$
                I can find loads of alternatives for 3*s≠-L·< like 6*s≠·-ÅÉ or ≠3/-6*ÅÉ, but unfortunately none are shorter.. Nice answer, as always! :)
                $endgroup$
                – Kevin Cruijssen
                Apr 14 at 17:47















              7












              $begingroup$


              05AB1E, 21 bytes



              3*s≠-L·<sÅ0«Âø€à'*×.C


              Try it online!
              or as a Test Suite



              Explanation



              3* # multiply input by 3
              s≠- # subtract 1 if the input isn't 1
              L # push range [1 ... (3*n-(n!=1))]
              ·< # multiply by 2 and subtract 1 to get odd numbers
              sÅ0« # append n zeroes
              Âø # zip with a reversed copy
              ۈ # get the largest number in each pair
              '*× # repeat "*" for each number in the list
              .C # format centered





              share|improve this answer











              $endgroup$








              • 1




                $begingroup$
                Your output stars look correct.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:08






              • 1




                $begingroup$
                I can find loads of alternatives for 3*s≠-L·< like 6*s≠·-ÅÉ or ≠3/-6*ÅÉ, but unfortunately none are shorter.. Nice answer, as always! :)
                $endgroup$
                – Kevin Cruijssen
                Apr 14 at 17:47













              7












              7








              7





              $begingroup$


              05AB1E, 21 bytes



              3*s≠-L·<sÅ0«Âø€à'*×.C


              Try it online!
              or as a Test Suite



              Explanation



              3* # multiply input by 3
              s≠- # subtract 1 if the input isn't 1
              L # push range [1 ... (3*n-(n!=1))]
              ·< # multiply by 2 and subtract 1 to get odd numbers
              sÅ0« # append n zeroes
              Âø # zip with a reversed copy
              ۈ # get the largest number in each pair
              '*× # repeat "*" for each number in the list
              .C # format centered





              share|improve this answer











              $endgroup$




              05AB1E, 21 bytes



              3*s≠-L·<sÅ0«Âø€à'*×.C


              Try it online!
              or as a Test Suite



              Explanation



              3* # multiply input by 3
              s≠- # subtract 1 if the input isn't 1
              L # push range [1 ... (3*n-(n!=1))]
              ·< # multiply by 2 and subtract 1 to get odd numbers
              sÅ0« # append n zeroes
              Âø # zip with a reversed copy
              ۈ # get the largest number in each pair
              '*× # repeat "*" for each number in the list
              .C # format centered






              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Apr 14 at 15:56

























              answered Apr 14 at 15:40









              EmignaEmigna

              48.2k434146




              48.2k434146







              • 1




                $begingroup$
                Your output stars look correct.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:08






              • 1




                $begingroup$
                I can find loads of alternatives for 3*s≠-L·< like 6*s≠·-ÅÉ or ≠3/-6*ÅÉ, but unfortunately none are shorter.. Nice answer, as always! :)
                $endgroup$
                – Kevin Cruijssen
                Apr 14 at 17:47












              • 1




                $begingroup$
                Your output stars look correct.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:08






              • 1




                $begingroup$
                I can find loads of alternatives for 3*s≠-L·< like 6*s≠·-ÅÉ or ≠3/-6*ÅÉ, but unfortunately none are shorter.. Nice answer, as always! :)
                $endgroup$
                – Kevin Cruijssen
                Apr 14 at 17:47







              1




              1




              $begingroup$
              Your output stars look correct.
              $endgroup$
              – Michael Karas
              Apr 14 at 16:08




              $begingroup$
              Your output stars look correct.
              $endgroup$
              – Michael Karas
              Apr 14 at 16:08




              1




              1




              $begingroup$
              I can find loads of alternatives for 3*s≠-L·< like 6*s≠·-ÅÉ or ≠3/-6*ÅÉ, but unfortunately none are shorter.. Nice answer, as always! :)
              $endgroup$
              – Kevin Cruijssen
              Apr 14 at 17:47




              $begingroup$
              I can find loads of alternatives for 3*s≠-L·< like 6*s≠·-ÅÉ or ≠3/-6*ÅÉ, but unfortunately none are shorter.. Nice answer, as always! :)
              $endgroup$
              – Kevin Cruijssen
              Apr 14 at 17:47











              7












              $begingroup$


              Haskell, 114 bytes



              Builds a function g which takes an number and produces a IO monad that prints the star to STDOUT. I think this is ok.





              f=replicate
              a%b=mapM_(n->putStrLn$f(a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..a]++f b 0
              g 1=4%1
              g a=(3*a)%a


              Try it online!



              Explanation



              First lets talk about the lambda.



              n->putStrLn$f(a-n)' '++f(2*n-1)'*'


              This takes a number, n, to be drawn as stars. We print twice that many stars and then 1 more and pad it on the right to the size of the image. We pad this on the right by a spaces to center the line of stars. We can use this lambda to draw each line.



              From this lambda we create (%). (%) starts with doing mapM_ with our lambda to turn a profile into the shape.



              Now all we need to do is make a list of the profile for the star. We can do this by making a triangle first with [1..a], then padding it with some zeros ++replicate b 0. If we take the profile of the triangle and reverse it we get the other half of the star. To super impose them we just make a new profile where each entry is the max of the two triangles. This is zipWith max.



              We then call this in one of two ways: as 3%1 for input of 1 and with (3*a-1)%a otherwise.



              From here we do a little bit of fiddling with some of the values to shave some bytes. Since 3*a-1 is rather long we offset some of our other values by 1 so that everything cancels and we get the intended behavior with 3*a instead. Namely we start our list at 2 instead of 1 and do 2*n-3 instead of 2*n-1 to make up for the change.



              Alternative version, 114 bytes



              This one builds a point-free function (%)<*>min 2



              f=replicate
              a%b=mapM_(n->putStrLn$f(3*a-n)' '++f(2*(n-b)+1)'*')$zipWith max<*>reverse$[b..3*a]++f a 0
              (%)<*>min 2


              Try it online!



              Handles all $N>1$, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..3*a]++f a 0


              Try it online!



              Handles all cases like the $N=1$ case, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-1)'*')$zipWith max<*>reverse$[1..3*a]++f a 0


              Try it online!






              share|improve this answer











              $endgroup$












              • $begingroup$
                Your output looks nice now.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:04















              7












              $begingroup$


              Haskell, 114 bytes



              Builds a function g which takes an number and produces a IO monad that prints the star to STDOUT. I think this is ok.





              f=replicate
              a%b=mapM_(n->putStrLn$f(a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..a]++f b 0
              g 1=4%1
              g a=(3*a)%a


              Try it online!



              Explanation



              First lets talk about the lambda.



              n->putStrLn$f(a-n)' '++f(2*n-1)'*'


              This takes a number, n, to be drawn as stars. We print twice that many stars and then 1 more and pad it on the right to the size of the image. We pad this on the right by a spaces to center the line of stars. We can use this lambda to draw each line.



              From this lambda we create (%). (%) starts with doing mapM_ with our lambda to turn a profile into the shape.



              Now all we need to do is make a list of the profile for the star. We can do this by making a triangle first with [1..a], then padding it with some zeros ++replicate b 0. If we take the profile of the triangle and reverse it we get the other half of the star. To super impose them we just make a new profile where each entry is the max of the two triangles. This is zipWith max.



              We then call this in one of two ways: as 3%1 for input of 1 and with (3*a-1)%a otherwise.



              From here we do a little bit of fiddling with some of the values to shave some bytes. Since 3*a-1 is rather long we offset some of our other values by 1 so that everything cancels and we get the intended behavior with 3*a instead. Namely we start our list at 2 instead of 1 and do 2*n-3 instead of 2*n-1 to make up for the change.



              Alternative version, 114 bytes



              This one builds a point-free function (%)<*>min 2



              f=replicate
              a%b=mapM_(n->putStrLn$f(3*a-n)' '++f(2*(n-b)+1)'*')$zipWith max<*>reverse$[b..3*a]++f a 0
              (%)<*>min 2


              Try it online!



              Handles all $N>1$, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..3*a]++f a 0


              Try it online!



              Handles all cases like the $N=1$ case, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-1)'*')$zipWith max<*>reverse$[1..3*a]++f a 0


              Try it online!






              share|improve this answer











              $endgroup$












              • $begingroup$
                Your output looks nice now.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:04













              7












              7








              7





              $begingroup$


              Haskell, 114 bytes



              Builds a function g which takes an number and produces a IO monad that prints the star to STDOUT. I think this is ok.





              f=replicate
              a%b=mapM_(n->putStrLn$f(a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..a]++f b 0
              g 1=4%1
              g a=(3*a)%a


              Try it online!



              Explanation



              First lets talk about the lambda.



              n->putStrLn$f(a-n)' '++f(2*n-1)'*'


              This takes a number, n, to be drawn as stars. We print twice that many stars and then 1 more and pad it on the right to the size of the image. We pad this on the right by a spaces to center the line of stars. We can use this lambda to draw each line.



              From this lambda we create (%). (%) starts with doing mapM_ with our lambda to turn a profile into the shape.



              Now all we need to do is make a list of the profile for the star. We can do this by making a triangle first with [1..a], then padding it with some zeros ++replicate b 0. If we take the profile of the triangle and reverse it we get the other half of the star. To super impose them we just make a new profile where each entry is the max of the two triangles. This is zipWith max.



              We then call this in one of two ways: as 3%1 for input of 1 and with (3*a-1)%a otherwise.



              From here we do a little bit of fiddling with some of the values to shave some bytes. Since 3*a-1 is rather long we offset some of our other values by 1 so that everything cancels and we get the intended behavior with 3*a instead. Namely we start our list at 2 instead of 1 and do 2*n-3 instead of 2*n-1 to make up for the change.



              Alternative version, 114 bytes



              This one builds a point-free function (%)<*>min 2



              f=replicate
              a%b=mapM_(n->putStrLn$f(3*a-n)' '++f(2*(n-b)+1)'*')$zipWith max<*>reverse$[b..3*a]++f a 0
              (%)<*>min 2


              Try it online!



              Handles all $N>1$, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..3*a]++f a 0


              Try it online!



              Handles all cases like the $N=1$ case, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-1)'*')$zipWith max<*>reverse$[1..3*a]++f a 0


              Try it online!






              share|improve this answer











              $endgroup$




              Haskell, 114 bytes



              Builds a function g which takes an number and produces a IO monad that prints the star to STDOUT. I think this is ok.





              f=replicate
              a%b=mapM_(n->putStrLn$f(a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..a]++f b 0
              g 1=4%1
              g a=(3*a)%a


              Try it online!



              Explanation



              First lets talk about the lambda.



              n->putStrLn$f(a-n)' '++f(2*n-1)'*'


              This takes a number, n, to be drawn as stars. We print twice that many stars and then 1 more and pad it on the right to the size of the image. We pad this on the right by a spaces to center the line of stars. We can use this lambda to draw each line.



              From this lambda we create (%). (%) starts with doing mapM_ with our lambda to turn a profile into the shape.



              Now all we need to do is make a list of the profile for the star. We can do this by making a triangle first with [1..a], then padding it with some zeros ++replicate b 0. If we take the profile of the triangle and reverse it we get the other half of the star. To super impose them we just make a new profile where each entry is the max of the two triangles. This is zipWith max.



              We then call this in one of two ways: as 3%1 for input of 1 and with (3*a-1)%a otherwise.



              From here we do a little bit of fiddling with some of the values to shave some bytes. Since 3*a-1 is rather long we offset some of our other values by 1 so that everything cancels and we get the intended behavior with 3*a instead. Namely we start our list at 2 instead of 1 and do 2*n-3 instead of 2*n-1 to make up for the change.



              Alternative version, 114 bytes



              This one builds a point-free function (%)<*>min 2



              f=replicate
              a%b=mapM_(n->putStrLn$f(3*a-n)' '++f(2*(n-b)+1)'*')$zipWith max<*>reverse$[b..3*a]++f a 0
              (%)<*>min 2


              Try it online!



              Handles all $N>1$, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-3)'*')$zipWith max<*>reverse$[2..3*a]++f a 0


              Try it online!



              Handles all cases like the $N=1$ case, 98 bytes



              f=replicate
              g a=mapM_(n->putStrLn$f(3*a-n)' '++f(2*n-1)'*')$zipWith max<*>reverse$[1..3*a]++f a 0


              Try it online!







              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited Apr 15 at 4:59

























              answered Apr 14 at 15:28









              Sriotchilism O'ZaicSriotchilism O'Zaic

              35.7k10161369




              35.7k10161369











              • $begingroup$
                Your output looks nice now.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:04
















              • $begingroup$
                Your output looks nice now.
                $endgroup$
                – Michael Karas
                Apr 14 at 16:04















              $begingroup$
              Your output looks nice now.
              $endgroup$
              – Michael Karas
              Apr 14 at 16:04




              $begingroup$
              Your output looks nice now.
              $endgroup$
              – Michael Karas
              Apr 14 at 16:04











              6












              $begingroup$


              R, 125 117 107 bytes





              function(n,S=3*n+!n-1,P=pmax(I<-c(2:S*2-3,!1:n),rev(I)),`~`=strrep)cat(paste0(' '~S-2-P%/%2,'*'~P),sep='
              ')


              Try it online!



              • -18 thanks to @Giuseppe


              Previous (different) approach :




              R, 150 148 136 135 130 128 bytes





              function(n,G=n<2,K=4*n-1+G)for(i in 1:K-1)cat(`[<-`(rep(' ',W<-3*n-2+G),1+W+c(-i:i*(i<K-n),-(j=K-i-1):j*(i>=n)),'*'),sep='','
              ')


              Try it online!



              • -14 thanks to @Kirill L.

              • -1 thanks to @t-clausen.dk

              • -7 thanks to @Giuseppe





              share|improve this answer











              $endgroup$












              • $begingroup$
                Yeah, I also don't like those repeated S[]= assignments, and looks like this works
                $endgroup$
                – Kirill L.
                Apr 14 at 17:55










              • $begingroup$
                Great ! I was thinking to something like that... but I was having dinner :P
                $endgroup$
                – digEmAll
                Apr 14 at 18:08










              • $begingroup$
                Seems you can save a byte: i>n-1 can be rewritten to i>=n
                $endgroup$
                – t-clausen.dk
                Apr 15 at 12:36










              • $begingroup$
                @t-clausen.dk: yep, thanks!
                $endgroup$
                – digEmAll
                Apr 15 at 16:54






              • 1




                $begingroup$
                117 bytes on the newer version
                $endgroup$
                – Giuseppe
                2 days ago
















              6












              $begingroup$


              R, 125 117 107 bytes





              function(n,S=3*n+!n-1,P=pmax(I<-c(2:S*2-3,!1:n),rev(I)),`~`=strrep)cat(paste0(' '~S-2-P%/%2,'*'~P),sep='
              ')


              Try it online!



              • -18 thanks to @Giuseppe


              Previous (different) approach :




              R, 150 148 136 135 130 128 bytes





              function(n,G=n<2,K=4*n-1+G)for(i in 1:K-1)cat(`[<-`(rep(' ',W<-3*n-2+G),1+W+c(-i:i*(i<K-n),-(j=K-i-1):j*(i>=n)),'*'),sep='','
              ')


              Try it online!



              • -14 thanks to @Kirill L.

              • -1 thanks to @t-clausen.dk

              • -7 thanks to @Giuseppe





              share|improve this answer











              $endgroup$












              • $begingroup$
                Yeah, I also don't like those repeated S[]= assignments, and looks like this works
                $endgroup$
                – Kirill L.
                Apr 14 at 17:55










              • $begingroup$
                Great ! I was thinking to something like that... but I was having dinner :P
                $endgroup$
                – digEmAll
                Apr 14 at 18:08










              • $begingroup$
                Seems you can save a byte: i>n-1 can be rewritten to i>=n
                $endgroup$
                – t-clausen.dk
                Apr 15 at 12:36










              • $begingroup$
                @t-clausen.dk: yep, thanks!
                $endgroup$
                – digEmAll
                Apr 15 at 16:54






              • 1




                $begingroup$
                117 bytes on the newer version
                $endgroup$
                – Giuseppe
                2 days ago














              6












              6








              6





              $begingroup$


              R, 125 117 107 bytes





              function(n,S=3*n+!n-1,P=pmax(I<-c(2:S*2-3,!1:n),rev(I)),`~`=strrep)cat(paste0(' '~S-2-P%/%2,'*'~P),sep='
              ')


              Try it online!



              • -18 thanks to @Giuseppe


              Previous (different) approach :




              R, 150 148 136 135 130 128 bytes





              function(n,G=n<2,K=4*n-1+G)for(i in 1:K-1)cat(`[<-`(rep(' ',W<-3*n-2+G),1+W+c(-i:i*(i<K-n),-(j=K-i-1):j*(i>=n)),'*'),sep='','
              ')


              Try it online!



              • -14 thanks to @Kirill L.

              • -1 thanks to @t-clausen.dk

              • -7 thanks to @Giuseppe





              share|improve this answer











              $endgroup$




              R, 125 117 107 bytes





              function(n,S=3*n+!n-1,P=pmax(I<-c(2:S*2-3,!1:n),rev(I)),`~`=strrep)cat(paste0(' '~S-2-P%/%2,'*'~P),sep='
              ')


              Try it online!



              • -18 thanks to @Giuseppe


              Previous (different) approach :




              R, 150 148 136 135 130 128 bytes





              function(n,G=n<2,K=4*n-1+G)for(i in 1:K-1)cat(`[<-`(rep(' ',W<-3*n-2+G),1+W+c(-i:i*(i<K-n),-(j=K-i-1):j*(i>=n)),'*'),sep='','
              ')


              Try it online!



              • -14 thanks to @Kirill L.

              • -1 thanks to @t-clausen.dk

              • -7 thanks to @Giuseppe






              share|improve this answer














              share|improve this answer



              share|improve this answer








              edited 2 days ago

























              answered Apr 14 at 17:06









              digEmAlldigEmAll

              3,604515




              3,604515











              • $begingroup$
                Yeah, I also don't like those repeated S[]= assignments, and looks like this works
                $endgroup$
                – Kirill L.
                Apr 14 at 17:55










              • $begingroup$
                Great ! I was thinking to something like that... but I was having dinner :P
                $endgroup$
                – digEmAll
                Apr 14 at 18:08










              • $begingroup$
                Seems you can save a byte: i>n-1 can be rewritten to i>=n
                $endgroup$
                – t-clausen.dk
                Apr 15 at 12:36










              • $begingroup$
                @t-clausen.dk: yep, thanks!
                $endgroup$
                – digEmAll
                Apr 15 at 16:54






              • 1




                $begingroup$
                117 bytes on the newer version
                $endgroup$
                – Giuseppe
                2 days ago

















              • $begingroup$
                Yeah, I also don't like those repeated S[]= assignments, and looks like this works
                $endgroup$
                – Kirill L.
                Apr 14 at 17:55










              • $begingroup$
                Great ! I was thinking to something like that... but I was having dinner :P
                $endgroup$
                – digEmAll
                Apr 14 at 18:08










              • $begingroup$
                Seems you can save a byte: i>n-1 can be rewritten to i>=n
                $endgroup$
                – t-clausen.dk
                Apr 15 at 12:36










              • $begingroup$
                @t-clausen.dk: yep, thanks!
                $endgroup$
                – digEmAll
                Apr 15 at 16:54






              • 1




                $begingroup$
                117 bytes on the newer version
                $endgroup$
                – Giuseppe
                2 days ago
















              $begingroup$
              Yeah, I also don't like those repeated S[]= assignments, and looks like this works
              $endgroup$
              – Kirill L.
              Apr 14 at 17:55




              $begingroup$
              Yeah, I also don't like those repeated S[]= assignments, and looks like this works
              $endgroup$
              – Kirill L.
              Apr 14 at 17:55












              $begingroup$
              Great ! I was thinking to something like that... but I was having dinner :P
              $endgroup$
              – digEmAll
              Apr 14 at 18:08




              $begingroup$
              Great ! I was thinking to something like that... but I was having dinner :P
              $endgroup$
              – digEmAll
              Apr 14 at 18:08












              $begingroup$
              Seems you can save a byte: i>n-1 can be rewritten to i>=n
              $endgroup$
              – t-clausen.dk
              Apr 15 at 12:36




              $begingroup$
              Seems you can save a byte: i>n-1 can be rewritten to i>=n
              $endgroup$
              – t-clausen.dk
              Apr 15 at 12:36












              $begingroup$
              @t-clausen.dk: yep, thanks!
              $endgroup$
              – digEmAll
              Apr 15 at 16:54




              $begingroup$
              @t-clausen.dk: yep, thanks!
              $endgroup$
              – digEmAll
              Apr 15 at 16:54




              1




              1




              $begingroup$
              117 bytes on the newer version
              $endgroup$
              – Giuseppe
              2 days ago





              $begingroup$
              117 bytes on the newer version
              $endgroup$
              – Giuseppe
              2 days ago












              5












              $begingroup$

              JavaScript (ES8), 101 bytes





              n=>(k=3*n+!~-n,g=y=>++y<k+n?`
              `.padEnd(w=k-Math.max(y>n&&n-y+k,y<k&&y)).padEnd(2*k+~w,'*')+g(y):'')``


              Try it online!






              share|improve this answer









              $endgroup$

















                5












                $begingroup$

                JavaScript (ES8), 101 bytes





                n=>(k=3*n+!~-n,g=y=>++y<k+n?`
                `.padEnd(w=k-Math.max(y>n&&n-y+k,y<k&&y)).padEnd(2*k+~w,'*')+g(y):'')``


                Try it online!






                share|improve this answer









                $endgroup$















                  5












                  5








                  5





                  $begingroup$

                  JavaScript (ES8), 101 bytes





                  n=>(k=3*n+!~-n,g=y=>++y<k+n?`
                  `.padEnd(w=k-Math.max(y>n&&n-y+k,y<k&&y)).padEnd(2*k+~w,'*')+g(y):'')``


                  Try it online!






                  share|improve this answer









                  $endgroup$



                  JavaScript (ES8), 101 bytes





                  n=>(k=3*n+!~-n,g=y=>++y<k+n?`
                  `.padEnd(w=k-Math.max(y>n&&n-y+k,y<k&&y)).padEnd(2*k+~w,'*')+g(y):'')``


                  Try it online!







                  share|improve this answer












                  share|improve this answer



                  share|improve this answer










                  answered Apr 15 at 6:25









                  ArnauldArnauld

                  81.6k797336




                  81.6k797336





















                      5












                      $begingroup$


                      Python 2, 101 99 97 bytes





                      n=input()
                      x=2*(n>1)
                      for i in range(1,8*n,2):print('*'*[i,8*n-i-x][i+x>n*6or i/n/2%2]).center(6*n)


                      Try it online!



                      -2 bytes, thanks to Lynn






                      share|improve this answer











                      $endgroup$












                      • $begingroup$
                        I'm reasonably sure you don't need the parens in the selector expression, so i+x>n*6or saves two bytes.
                        $endgroup$
                        – Lynn
                        Apr 15 at 13:25










                      • $begingroup$
                        @Lynn Thanks :)
                        $endgroup$
                        – TFeld
                        Apr 15 at 14:04










                      • $begingroup$
                        You can even go i+x>~i/n/2%2*6*n or something like i+x>3*n*(~i/n&2) (both 96 bytes.)
                        $endgroup$
                        – Lynn
                        Apr 15 at 14:15















                      5












                      $begingroup$


                      Python 2, 101 99 97 bytes





                      n=input()
                      x=2*(n>1)
                      for i in range(1,8*n,2):print('*'*[i,8*n-i-x][i+x>n*6or i/n/2%2]).center(6*n)


                      Try it online!



                      -2 bytes, thanks to Lynn






                      share|improve this answer











                      $endgroup$












                      • $begingroup$
                        I'm reasonably sure you don't need the parens in the selector expression, so i+x>n*6or saves two bytes.
                        $endgroup$
                        – Lynn
                        Apr 15 at 13:25










                      • $begingroup$
                        @Lynn Thanks :)
                        $endgroup$
                        – TFeld
                        Apr 15 at 14:04










                      • $begingroup$
                        You can even go i+x>~i/n/2%2*6*n or something like i+x>3*n*(~i/n&2) (both 96 bytes.)
                        $endgroup$
                        – Lynn
                        Apr 15 at 14:15













                      5












                      5








                      5





                      $begingroup$


                      Python 2, 101 99 97 bytes





                      n=input()
                      x=2*(n>1)
                      for i in range(1,8*n,2):print('*'*[i,8*n-i-x][i+x>n*6or i/n/2%2]).center(6*n)


                      Try it online!



                      -2 bytes, thanks to Lynn






                      share|improve this answer











                      $endgroup$




                      Python 2, 101 99 97 bytes





                      n=input()
                      x=2*(n>1)
                      for i in range(1,8*n,2):print('*'*[i,8*n-i-x][i+x>n*6or i/n/2%2]).center(6*n)


                      Try it online!



                      -2 bytes, thanks to Lynn







                      share|improve this answer














                      share|improve this answer



                      share|improve this answer








                      edited Apr 15 at 14:04

























                      answered Apr 14 at 16:21









                      TFeldTFeld

                      16.6k21451




                      16.6k21451











                      • $begingroup$
                        I'm reasonably sure you don't need the parens in the selector expression, so i+x>n*6or saves two bytes.
                        $endgroup$
                        – Lynn
                        Apr 15 at 13:25










                      • $begingroup$
                        @Lynn Thanks :)
                        $endgroup$
                        – TFeld
                        Apr 15 at 14:04










                      • $begingroup$
                        You can even go i+x>~i/n/2%2*6*n or something like i+x>3*n*(~i/n&2) (both 96 bytes.)
                        $endgroup$
                        – Lynn
                        Apr 15 at 14:15
















                      • $begingroup$
                        I'm reasonably sure you don't need the parens in the selector expression, so i+x>n*6or saves two bytes.
                        $endgroup$
                        – Lynn
                        Apr 15 at 13:25










                      • $begingroup$
                        @Lynn Thanks :)
                        $endgroup$
                        – TFeld
                        Apr 15 at 14:04










                      • $begingroup$
                        You can even go i+x>~i/n/2%2*6*n or something like i+x>3*n*(~i/n&2) (both 96 bytes.)
                        $endgroup$
                        – Lynn
                        Apr 15 at 14:15















                      $begingroup$
                      I'm reasonably sure you don't need the parens in the selector expression, so i+x>n*6or saves two bytes.
                      $endgroup$
                      – Lynn
                      Apr 15 at 13:25




                      $begingroup$
                      I'm reasonably sure you don't need the parens in the selector expression, so i+x>n*6or saves two bytes.
                      $endgroup$
                      – Lynn
                      Apr 15 at 13:25












                      $begingroup$
                      @Lynn Thanks :)
                      $endgroup$
                      – TFeld
                      Apr 15 at 14:04




                      $begingroup$
                      @Lynn Thanks :)
                      $endgroup$
                      – TFeld
                      Apr 15 at 14:04












                      $begingroup$
                      You can even go i+x>~i/n/2%2*6*n or something like i+x>3*n*(~i/n&2) (both 96 bytes.)
                      $endgroup$
                      – Lynn
                      Apr 15 at 14:15




                      $begingroup$
                      You can even go i+x>~i/n/2%2*6*n or something like i+x>3*n*(~i/n&2) (both 96 bytes.)
                      $endgroup$
                      – Lynn
                      Apr 15 at 14:15











                      3












                      $begingroup$


                      Jelly, 21 bytes



                      ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY


                      A full program accepting a positive integer which prints to STDOUT.



                      Try it online! Or see a test-suite.



                      How?



                      ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY - Main Link: integer, n e.g. 3
                      3 - three 3
                      × - multiply (n by) 9
                      ’ - decrement 8
                      Ị - insignificant (abs(n)<=1)? 0
                      + - add 8
                      R - range [1,2,3,4,5,6,7,8]
                      Ṭ - un-truth (n) [0,0,1]
                      ; - concatenate [1,2,3,4,5,6,7,8,0,0,1]
                      $ - last two links as a monad:
                      Ṛ - reverse [1,0,0,8,7,6,5,4,3,2,1]
                      » - maximum (vectorises) [1,2,3,8,7,6,7,8,3,2,1]
                      ”* - an asterisk character '*'
                      ẋ - repeat (vectorises) ["*","**",...]
                      ⁶ - a space character ' '
                      z - transpose with filler ["***********"," ********* ",...]
                      Ṛ - reverse [" * * "," ** ** ",...]
                      Z - transpose [" *"," **",...]
                      ŒB - bounce (vectorises) [" * "," *** ",...]
                      Y - join with newline characters " * n *** n..."
                      - implicit print





                      share|improve this answer











                      $endgroup$

















                        3












                        $begingroup$


                        Jelly, 21 bytes



                        ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY


                        A full program accepting a positive integer which prints to STDOUT.



                        Try it online! Or see a test-suite.



                        How?



                        ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY - Main Link: integer, n e.g. 3
                        3 - three 3
                        × - multiply (n by) 9
                        ’ - decrement 8
                        Ị - insignificant (abs(n)<=1)? 0
                        + - add 8
                        R - range [1,2,3,4,5,6,7,8]
                        Ṭ - un-truth (n) [0,0,1]
                        ; - concatenate [1,2,3,4,5,6,7,8,0,0,1]
                        $ - last two links as a monad:
                        Ṛ - reverse [1,0,0,8,7,6,5,4,3,2,1]
                        » - maximum (vectorises) [1,2,3,8,7,6,7,8,3,2,1]
                        ”* - an asterisk character '*'
                        ẋ - repeat (vectorises) ["*","**",...]
                        ⁶ - a space character ' '
                        z - transpose with filler ["***********"," ********* ",...]
                        Ṛ - reverse [" * * "," ** ** ",...]
                        Z - transpose [" *"," **",...]
                        ŒB - bounce (vectorises) [" * "," *** ",...]
                        Y - join with newline characters " * n *** n..."
                        - implicit print





                        share|improve this answer











                        $endgroup$















                          3












                          3








                          3





                          $begingroup$


                          Jelly, 21 bytes



                          ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY


                          A full program accepting a positive integer which prints to STDOUT.



                          Try it online! Or see a test-suite.



                          How?



                          ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY - Main Link: integer, n e.g. 3
                          3 - three 3
                          × - multiply (n by) 9
                          ’ - decrement 8
                          Ị - insignificant (abs(n)<=1)? 0
                          + - add 8
                          R - range [1,2,3,4,5,6,7,8]
                          Ṭ - un-truth (n) [0,0,1]
                          ; - concatenate [1,2,3,4,5,6,7,8,0,0,1]
                          $ - last two links as a monad:
                          Ṛ - reverse [1,0,0,8,7,6,5,4,3,2,1]
                          » - maximum (vectorises) [1,2,3,8,7,6,7,8,3,2,1]
                          ”* - an asterisk character '*'
                          ẋ - repeat (vectorises) ["*","**",...]
                          ⁶ - a space character ' '
                          z - transpose with filler ["***********"," ********* ",...]
                          Ṛ - reverse [" * * "," ** ** ",...]
                          Z - transpose [" *"," **",...]
                          ŒB - bounce (vectorises) [" * "," *** ",...]
                          Y - join with newline characters " * n *** n..."
                          - implicit print





                          share|improve this answer











                          $endgroup$




                          Jelly, 21 bytes



                          ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY


                          A full program accepting a positive integer which prints to STDOUT.



                          Try it online! Or see a test-suite.



                          How?



                          ×3’+ỊR;Ṭ»Ṛ$”*ẋz⁶ṚZŒBY - Main Link: integer, n e.g. 3
                          3 - three 3
                          × - multiply (n by) 9
                          ’ - decrement 8
                          Ị - insignificant (abs(n)<=1)? 0
                          + - add 8
                          R - range [1,2,3,4,5,6,7,8]
                          Ṭ - un-truth (n) [0,0,1]
                          ; - concatenate [1,2,3,4,5,6,7,8,0,0,1]
                          $ - last two links as a monad:
                          Ṛ - reverse [1,0,0,8,7,6,5,4,3,2,1]
                          » - maximum (vectorises) [1,2,3,8,7,6,7,8,3,2,1]
                          ”* - an asterisk character '*'
                          ẋ - repeat (vectorises) ["*","**",...]
                          ⁶ - a space character ' '
                          z - transpose with filler ["***********"," ********* ",...]
                          Ṛ - reverse [" * * "," ** ** ",...]
                          Z - transpose [" *"," **",...]
                          ŒB - bounce (vectorises) [" * "," *** ",...]
                          Y - join with newline characters " * n *** n..."
                          - implicit print






                          share|improve this answer














                          share|improve this answer



                          share|improve this answer








                          edited Apr 14 at 20:29

























                          answered Apr 14 at 19:15









                          Jonathan AllanJonathan Allan

                          54.5k537174




                          54.5k537174





















                              2












                              $begingroup$


                              Canvas, 25 23 bytes



                              R:{⁸3×4M∔]∔{*×]↔⁸1≡?╪]┼


                              Try it here!



                              15 bytes without handling 1






                              share|improve this answer











                              $endgroup$












                              • $begingroup$
                                Makes nice stars.
                                $endgroup$
                                – Michael Karas
                                Apr 14 at 16:07















                              2












                              $begingroup$


                              Canvas, 25 23 bytes



                              R:{⁸3×4M∔]∔{*×]↔⁸1≡?╪]┼


                              Try it here!



                              15 bytes without handling 1






                              share|improve this answer











                              $endgroup$












                              • $begingroup$
                                Makes nice stars.
                                $endgroup$
                                – Michael Karas
                                Apr 14 at 16:07













                              2












                              2








                              2





                              $begingroup$


                              Canvas, 25 23 bytes



                              R:{⁸3×4M∔]∔{*×]↔⁸1≡?╪]┼


                              Try it here!



                              15 bytes without handling 1






                              share|improve this answer











                              $endgroup$




                              Canvas, 25 23 bytes



                              R:{⁸3×4M∔]∔{*×]↔⁸1≡?╪]┼


                              Try it here!



                              15 bytes without handling 1







                              share|improve this answer














                              share|improve this answer



                              share|improve this answer








                              edited Apr 14 at 16:06

























                              answered Apr 14 at 15:49









                              dzaimadzaima

                              16.1k22060




                              16.1k22060











                              • $begingroup$
                                Makes nice stars.
                                $endgroup$
                                – Michael Karas
                                Apr 14 at 16:07
















                              • $begingroup$
                                Makes nice stars.
                                $endgroup$
                                – Michael Karas
                                Apr 14 at 16:07















                              $begingroup$
                              Makes nice stars.
                              $endgroup$
                              – Michael Karas
                              Apr 14 at 16:07




                              $begingroup$
                              Makes nice stars.
                              $endgroup$
                              – Michael Karas
                              Apr 14 at 16:07











                              2












                              $begingroup$


                              Jelly, 21 bytes



                              ×’»ɗ3”*xⱮz⁶ɓ⁶x;»Ṛ$ŒBY


                              Try it online!



                              A monadic link accepting a single integer as its left argument and returning a newline-separated Jelly string with the star as its output. When run as a full program implicitly prints the star to STDOUT.



                              Explanation



                               ɗ3 | Last three links as a dyad with 3 as right argument:
                              × | Multiply (by 3)
                              ’ | Decrease by 1
                              » | Maximum of this (and 3)
                              ”*xⱮ | An implicit range from 1 to this many asterisks
                              z⁶ | Zip with space as filler
                              ɓ | Start a new dyadic chain with the input as left argument and the list of asterisks as right argument
                              ⁶x | Input many spaces
                              ; | Concatenated to the asterisk list
                              $ | Last two links as a monad:
                              »Ṛ | Maximum of this list and its reverse
                              ŒB | Bounce each list (i.e. mirror it without duplicating the middle entry)
                              Y | Join with newlines





                              share|improve this answer









                              $endgroup$








                              • 1




                                $begingroup$
                                I appreciate you writing the start the stylish way even though ×3’»3 is the same length ^_^
                                $endgroup$
                                – Lynn
                                Apr 15 at 13:28






                              • 1




                                $begingroup$
                                @Lynn at the point I did that I thought I was going to be using another quick to merge multiple links, and it meant that I could do so within the maximum 4 allowed. However, once I decided to use ɓ it didn’t matter but I kept it because I still liked it!
                                $endgroup$
                                – Nick Kennedy
                                Apr 15 at 13:32















                              2












                              $begingroup$


                              Jelly, 21 bytes



                              ×’»ɗ3”*xⱮz⁶ɓ⁶x;»Ṛ$ŒBY


                              Try it online!



                              A monadic link accepting a single integer as its left argument and returning a newline-separated Jelly string with the star as its output. When run as a full program implicitly prints the star to STDOUT.



                              Explanation



                               ɗ3 | Last three links as a dyad with 3 as right argument:
                              × | Multiply (by 3)
                              ’ | Decrease by 1
                              » | Maximum of this (and 3)
                              ”*xⱮ | An implicit range from 1 to this many asterisks
                              z⁶ | Zip with space as filler
                              ɓ | Start a new dyadic chain with the input as left argument and the list of asterisks as right argument
                              ⁶x | Input many spaces
                              ; | Concatenated to the asterisk list
                              $ | Last two links as a monad:
                              »Ṛ | Maximum of this list and its reverse
                              ŒB | Bounce each list (i.e. mirror it without duplicating the middle entry)
                              Y | Join with newlines





                              share|improve this answer









                              $endgroup$








                              • 1




                                $begingroup$
                                I appreciate you writing the start the stylish way even though ×3’»3 is the same length ^_^
                                $endgroup$
                                – Lynn
                                Apr 15 at 13:28






                              • 1




                                $begingroup$
                                @Lynn at the point I did that I thought I was going to be using another quick to merge multiple links, and it meant that I could do so within the maximum 4 allowed. However, once I decided to use ɓ it didn’t matter but I kept it because I still liked it!
                                $endgroup$
                                – Nick Kennedy
                                Apr 15 at 13:32













                              2












                              2








                              2





                              $begingroup$


                              Jelly, 21 bytes



                              ×’»ɗ3”*xⱮz⁶ɓ⁶x;»Ṛ$ŒBY


                              Try it online!



                              A monadic link accepting a single integer as its left argument and returning a newline-separated Jelly string with the star as its output. When run as a full program implicitly prints the star to STDOUT.



                              Explanation



                               ɗ3 | Last three links as a dyad with 3 as right argument:
                              × | Multiply (by 3)
                              ’ | Decrease by 1
                              » | Maximum of this (and 3)
                              ”*xⱮ | An implicit range from 1 to this many asterisks
                              z⁶ | Zip with space as filler
                              ɓ | Start a new dyadic chain with the input as left argument and the list of asterisks as right argument
                              ⁶x | Input many spaces
                              ; | Concatenated to the asterisk list
                              $ | Last two links as a monad:
                              »Ṛ | Maximum of this list and its reverse
                              ŒB | Bounce each list (i.e. mirror it without duplicating the middle entry)
                              Y | Join with newlines





                              share|improve this answer









                              $endgroup$




                              Jelly, 21 bytes



                              ×’»ɗ3”*xⱮz⁶ɓ⁶x;»Ṛ$ŒBY


                              Try it online!



                              A monadic link accepting a single integer as its left argument and returning a newline-separated Jelly string with the star as its output. When run as a full program implicitly prints the star to STDOUT.



                              Explanation



                               ɗ3 | Last three links as a dyad with 3 as right argument:
                              × | Multiply (by 3)
                              ’ | Decrease by 1
                              » | Maximum of this (and 3)
                              ”*xⱮ | An implicit range from 1 to this many asterisks
                              z⁶ | Zip with space as filler
                              ɓ | Start a new dyadic chain with the input as left argument and the list of asterisks as right argument
                              ⁶x | Input many spaces
                              ; | Concatenated to the asterisk list
                              $ | Last two links as a monad:
                              »Ṛ | Maximum of this list and its reverse
                              ŒB | Bounce each list (i.e. mirror it without duplicating the middle entry)
                              Y | Join with newlines






                              share|improve this answer












                              share|improve this answer



                              share|improve this answer










                              answered Apr 14 at 20:08









                              Nick KennedyNick Kennedy

                              1,83149




                              1,83149







                              • 1




                                $begingroup$
                                I appreciate you writing the start the stylish way even though ×3’»3 is the same length ^_^
                                $endgroup$
                                – Lynn
                                Apr 15 at 13:28






                              • 1




                                $begingroup$
                                @Lynn at the point I did that I thought I was going to be using another quick to merge multiple links, and it meant that I could do so within the maximum 4 allowed. However, once I decided to use ɓ it didn’t matter but I kept it because I still liked it!
                                $endgroup$
                                – Nick Kennedy
                                Apr 15 at 13:32












                              • 1




                                $begingroup$
                                I appreciate you writing the start the stylish way even though ×3’»3 is the same length ^_^
                                $endgroup$
                                – Lynn
                                Apr 15 at 13:28






                              • 1




                                $begingroup$
                                @Lynn at the point I did that I thought I was going to be using another quick to merge multiple links, and it meant that I could do so within the maximum 4 allowed. However, once I decided to use ɓ it didn’t matter but I kept it because I still liked it!
                                $endgroup$
                                – Nick Kennedy
                                Apr 15 at 13:32







                              1




                              1




                              $begingroup$
                              I appreciate you writing the start the stylish way even though ×3’»3 is the same length ^_^
                              $endgroup$
                              – Lynn
                              Apr 15 at 13:28




                              $begingroup$
                              I appreciate you writing the start the stylish way even though ×3’»3 is the same length ^_^
                              $endgroup$
                              – Lynn
                              Apr 15 at 13:28




                              1




                              1




                              $begingroup$
                              @Lynn at the point I did that I thought I was going to be using another quick to merge multiple links, and it meant that I could do so within the maximum 4 allowed. However, once I decided to use ɓ it didn’t matter but I kept it because I still liked it!
                              $endgroup$
                              – Nick Kennedy
                              Apr 15 at 13:32




                              $begingroup$
                              @Lynn at the point I did that I thought I was going to be using another quick to merge multiple links, and it meant that I could do so within the maximum 4 allowed. However, once I decided to use ɓ it didn’t matter but I kept it because I still liked it!
                              $endgroup$
                              – Nick Kennedy
                              Apr 15 at 13:32











                              2












                              $begingroup$


                              Charcoal, 25 bytes



                              G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*‖O¬C⁰¬⊖θ


                              Try it online! Link is to verbose version of code. Explanation:



                              G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*


                              Draw an irregular pentagon representing the top right quarter of the star, but special-casing 1 to make the row an extra column wider.



                              ‖O¬


                              Reflect to complete the star.



                              C⁰¬⊖θ


                              More special-casing to make the star for 1 an extra row taller.



                              Alternative solution, also 25 bytes:



                              ∧¬⊖θ*G↗↓⊖׳N*‖O‖OO↓∧⊖θ⊖⊗θ


                              Try it online! Link is to verbose version of code. Explanation:



                              ∧¬⊖θ*


                              Print an extra * for the case of 1.



                              G↗↓⊖׳N*


                              Draw the left half of a triangle of the appropriate size.



                              ‖O


                              Reflect to complete the triangle.



                              ‖OO↓∧⊖θ⊖⊗θ


                              Overlap it with its reflection, except in the case of 1, in which case just reflect it.



                              14 bytes without special-casing for 1:



                              G<⊖׳N*‖OO↑⊖⊗θ


                              Try it online! Link is to verbose version of code. Explanation:



                              G<⊖׳N*


                              Draw a triangle of the appropriate size.



                              ‖OO↑⊖⊗θ


                              Overlap it with its reflection.






                              share|improve this answer











                              $endgroup$

















                                2












                                $begingroup$


                                Charcoal, 25 bytes



                                G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*‖O¬C⁰¬⊖θ


                                Try it online! Link is to verbose version of code. Explanation:



                                G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*


                                Draw an irregular pentagon representing the top right quarter of the star, but special-casing 1 to make the row an extra column wider.



                                ‖O¬


                                Reflect to complete the star.



                                C⁰¬⊖θ


                                More special-casing to make the star for 1 an extra row taller.



                                Alternative solution, also 25 bytes:



                                ∧¬⊖θ*G↗↓⊖׳N*‖O‖OO↓∧⊖θ⊖⊗θ


                                Try it online! Link is to verbose version of code. Explanation:



                                ∧¬⊖θ*


                                Print an extra * for the case of 1.



                                G↗↓⊖׳N*


                                Draw the left half of a triangle of the appropriate size.



                                ‖O


                                Reflect to complete the triangle.



                                ‖OO↓∧⊖θ⊖⊗θ


                                Overlap it with its reflection, except in the case of 1, in which case just reflect it.



                                14 bytes without special-casing for 1:



                                G<⊖׳N*‖OO↑⊖⊗θ


                                Try it online! Link is to verbose version of code. Explanation:



                                G<⊖׳N*


                                Draw a triangle of the appropriate size.



                                ‖OO↑⊖⊗θ


                                Overlap it with its reflection.






                                share|improve this answer











                                $endgroup$















                                  2












                                  2








                                  2





                                  $begingroup$


                                  Charcoal, 25 bytes



                                  G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*‖O¬C⁰¬⊖θ


                                  Try it online! Link is to verbose version of code. Explanation:



                                  G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*


                                  Draw an irregular pentagon representing the top right quarter of the star, but special-casing 1 to make the row an extra column wider.



                                  ‖O¬


                                  Reflect to complete the star.



                                  C⁰¬⊖θ


                                  More special-casing to make the star for 1 an extra row taller.



                                  Alternative solution, also 25 bytes:



                                  ∧¬⊖θ*G↗↓⊖׳N*‖O‖OO↓∧⊖θ⊖⊗θ


                                  Try it online! Link is to verbose version of code. Explanation:



                                  ∧¬⊖θ*


                                  Print an extra * for the case of 1.



                                  G↗↓⊖׳N*


                                  Draw the left half of a triangle of the appropriate size.



                                  ‖O


                                  Reflect to complete the triangle.



                                  ‖OO↓∧⊖θ⊖⊗θ


                                  Overlap it with its reflection, except in the case of 1, in which case just reflect it.



                                  14 bytes without special-casing for 1:



                                  G<⊖׳N*‖OO↑⊖⊗θ


                                  Try it online! Link is to verbose version of code. Explanation:



                                  G<⊖׳N*


                                  Draw a triangle of the appropriate size.



                                  ‖OO↑⊖⊗θ


                                  Overlap it with its reflection.






                                  share|improve this answer











                                  $endgroup$




                                  Charcoal, 25 bytes



                                  G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*‖O¬C⁰¬⊖θ


                                  Try it online! Link is to verbose version of code. Explanation:



                                  G↙θ←⁺⊗θ¬⊖θ↑⊗θ↘⊕θ*


                                  Draw an irregular pentagon representing the top right quarter of the star, but special-casing 1 to make the row an extra column wider.



                                  ‖O¬


                                  Reflect to complete the star.



                                  C⁰¬⊖θ


                                  More special-casing to make the star for 1 an extra row taller.



                                  Alternative solution, also 25 bytes:



                                  ∧¬⊖θ*G↗↓⊖׳N*‖O‖OO↓∧⊖θ⊖⊗θ


                                  Try it online! Link is to verbose version of code. Explanation:



                                  ∧¬⊖θ*


                                  Print an extra * for the case of 1.



                                  G↗↓⊖׳N*


                                  Draw the left half of a triangle of the appropriate size.



                                  ‖O


                                  Reflect to complete the triangle.



                                  ‖OO↓∧⊖θ⊖⊗θ


                                  Overlap it with its reflection, except in the case of 1, in which case just reflect it.



                                  14 bytes without special-casing for 1:



                                  G<⊖׳N*‖OO↑⊖⊗θ


                                  Try it online! Link is to verbose version of code. Explanation:



                                  G<⊖׳N*


                                  Draw a triangle of the appropriate size.



                                  ‖OO↑⊖⊗θ


                                  Overlap it with its reflection.







                                  share|improve this answer














                                  share|improve this answer



                                  share|improve this answer








                                  edited Apr 14 at 21:26

























                                  answered Apr 14 at 21:15









                                  NeilNeil

                                  83k745179




                                  83k745179





















                                      2












                                      $begingroup$


                                      Perl 6, 74 bytes





                                      [R,] $_o.&


                                      Try it online!



                                      Literally creates a triangle with the right proportions and overlaps it with a upside-down copy using the string or operator (~|). Outputs as a list of lines with a leading and trailing line whitespace.



                                      Explanation:



                                       {.& # Anonymous code block
                                      ( )xx$_*3-($_>1) # Repeat n*3-(n!=1) times
                                      ' 'x--$+$_*3 # With a decreasing indentation
                                      ~'*'x$++*2+1 # Append an increasing triangle
                                      # This creates the triangle
                                      ,|($ xx$_) # And add some padding lines
                                      o # Pass the triangle to the combining function
                                      Z~| # Zip string bitwise or
                                      $_ # The list
                                      [R,] $_ # With its reverse





                                      share|improve this answer









                                      $endgroup$

















                                        2












                                        $begingroup$


                                        Perl 6, 74 bytes





                                        [R,] $_o.&


                                        Try it online!



                                        Literally creates a triangle with the right proportions and overlaps it with a upside-down copy using the string or operator (~|). Outputs as a list of lines with a leading and trailing line whitespace.



                                        Explanation:



                                         {.& # Anonymous code block
                                        ( )xx$_*3-($_>1) # Repeat n*3-(n!=1) times
                                        ' 'x--$+$_*3 # With a decreasing indentation
                                        ~'*'x$++*2+1 # Append an increasing triangle
                                        # This creates the triangle
                                        ,|($ xx$_) # And add some padding lines
                                        o # Pass the triangle to the combining function
                                        Z~| # Zip string bitwise or
                                        $_ # The list
                                        [R,] $_ # With its reverse





                                        share|improve this answer









                                        $endgroup$















                                          2












                                          2








                                          2





                                          $begingroup$


                                          Perl 6, 74 bytes





                                          [R,] $_o.&


                                          Try it online!



                                          Literally creates a triangle with the right proportions and overlaps it with a upside-down copy using the string or operator (~|). Outputs as a list of lines with a leading and trailing line whitespace.



                                          Explanation:



                                           {.& # Anonymous code block
                                          ( )xx$_*3-($_>1) # Repeat n*3-(n!=1) times
                                          ' 'x--$+$_*3 # With a decreasing indentation
                                          ~'*'x$++*2+1 # Append an increasing triangle
                                          # This creates the triangle
                                          ,|($ xx$_) # And add some padding lines
                                          o # Pass the triangle to the combining function
                                          Z~| # Zip string bitwise or
                                          $_ # The list
                                          [R,] $_ # With its reverse





                                          share|improve this answer









                                          $endgroup$




                                          Perl 6, 74 bytes





                                          [R,] $_o.&


                                          Try it online!



                                          Literally creates a triangle with the right proportions and overlaps it with a upside-down copy using the string or operator (~|). Outputs as a list of lines with a leading and trailing line whitespace.



                                          Explanation:



                                           {.& # Anonymous code block
                                          ( )xx$_*3-($_>1) # Repeat n*3-(n!=1) times
                                          ' 'x--$+$_*3 # With a decreasing indentation
                                          ~'*'x$++*2+1 # Append an increasing triangle
                                          # This creates the triangle
                                          ,|($ xx$_) # And add some padding lines
                                          o # Pass the triangle to the combining function
                                          Z~| # Zip string bitwise or
                                          $_ # The list
                                          [R,] $_ # With its reverse






                                          share|improve this answer












                                          share|improve this answer



                                          share|improve this answer










                                          answered Apr 15 at 6:37









                                          Jo KingJo King

                                          27.3k365132




                                          27.3k365132





















                                              2












                                              $begingroup$


                                              J, 53 50 bytes



                                              ' *'~[:(+..)"1*@<:>:/~@i.@-~3*]


                                              Try it online!



                                              ungolfed



                                              ' *' ~ [: (+. .)"1 *@<: >:/~@i.@-~ 3 * ]


                                              how



                                              Use a function table (like a 3rd grade times table) to construct half the triangle by using >: (greater than or equal) as the function. Then reverse each row, chop of the last column, and stitch the two sides together to get the full triangle (but made of 1 and 0). Add n rows of zeros at the bottom. Finally reverse the whole thing, and overlay it on the original, using boolean or +. to get the result. Then turn the 1 to * and 0 to spaces.






                                              share|improve this answer











                                              $endgroup$












                                              • $begingroup$
                                                Nice! Here's my solution - same length, different approach: Try it online!
                                                $endgroup$
                                                – Galen Ivanov
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                Thanks. It sure feels like it could be golfed more, but I tried a handful of other approaches and wasn't able to do it.
                                                $endgroup$
                                                – Jonah
                                                2 days ago















                                              2












                                              $begingroup$


                                              J, 53 50 bytes



                                              ' *'~[:(+..)"1*@<:>:/~@i.@-~3*]


                                              Try it online!



                                              ungolfed



                                              ' *' ~ [: (+. .)"1 *@<: >:/~@i.@-~ 3 * ]


                                              how



                                              Use a function table (like a 3rd grade times table) to construct half the triangle by using >: (greater than or equal) as the function. Then reverse each row, chop of the last column, and stitch the two sides together to get the full triangle (but made of 1 and 0). Add n rows of zeros at the bottom. Finally reverse the whole thing, and overlay it on the original, using boolean or +. to get the result. Then turn the 1 to * and 0 to spaces.






                                              share|improve this answer











                                              $endgroup$












                                              • $begingroup$
                                                Nice! Here's my solution - same length, different approach: Try it online!
                                                $endgroup$
                                                – Galen Ivanov
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                Thanks. It sure feels like it could be golfed more, but I tried a handful of other approaches and wasn't able to do it.
                                                $endgroup$
                                                – Jonah
                                                2 days ago













                                              2












                                              2








                                              2





                                              $begingroup$


                                              J, 53 50 bytes



                                              ' *'~[:(+..)"1*@<:>:/~@i.@-~3*]


                                              Try it online!



                                              ungolfed



                                              ' *' ~ [: (+. .)"1 *@<: >:/~@i.@-~ 3 * ]


                                              how



                                              Use a function table (like a 3rd grade times table) to construct half the triangle by using >: (greater than or equal) as the function. Then reverse each row, chop of the last column, and stitch the two sides together to get the full triangle (but made of 1 and 0). Add n rows of zeros at the bottom. Finally reverse the whole thing, and overlay it on the original, using boolean or +. to get the result. Then turn the 1 to * and 0 to spaces.






                                              share|improve this answer











                                              $endgroup$




                                              J, 53 50 bytes



                                              ' *'~[:(+..)"1*@<:>:/~@i.@-~3*]


                                              Try it online!



                                              ungolfed



                                              ' *' ~ [: (+. .)"1 *@<: >:/~@i.@-~ 3 * ]


                                              how



                                              Use a function table (like a 3rd grade times table) to construct half the triangle by using >: (greater than or equal) as the function. Then reverse each row, chop of the last column, and stitch the two sides together to get the full triangle (but made of 1 and 0). Add n rows of zeros at the bottom. Finally reverse the whole thing, and overlay it on the original, using boolean or +. to get the result. Then turn the 1 to * and 0 to spaces.







                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited Apr 16 at 2:42

























                                              answered Apr 16 at 2:13









                                              JonahJonah

                                              2,8281019




                                              2,8281019











                                              • $begingroup$
                                                Nice! Here's my solution - same length, different approach: Try it online!
                                                $endgroup$
                                                – Galen Ivanov
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                Thanks. It sure feels like it could be golfed more, but I tried a handful of other approaches and wasn't able to do it.
                                                $endgroup$
                                                – Jonah
                                                2 days ago
















                                              • $begingroup$
                                                Nice! Here's my solution - same length, different approach: Try it online!
                                                $endgroup$
                                                – Galen Ivanov
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                Thanks. It sure feels like it could be golfed more, but I tried a handful of other approaches and wasn't able to do it.
                                                $endgroup$
                                                – Jonah
                                                2 days ago















                                              $begingroup$
                                              Nice! Here's my solution - same length, different approach: Try it online!
                                              $endgroup$
                                              – Galen Ivanov
                                              2 days ago




                                              $begingroup$
                                              Nice! Here's my solution - same length, different approach: Try it online!
                                              $endgroup$
                                              – Galen Ivanov
                                              2 days ago




                                              1




                                              1




                                              $begingroup$
                                              Thanks. It sure feels like it could be golfed more, but I tried a handful of other approaches and wasn't able to do it.
                                              $endgroup$
                                              – Jonah
                                              2 days ago




                                              $begingroup$
                                              Thanks. It sure feels like it could be golfed more, but I tried a handful of other approaches and wasn't able to do it.
                                              $endgroup$
                                              – Jonah
                                              2 days ago











                                              2












                                              $begingroup$

                                              T-SQL, 194 bytes



                                              @ is the input value



                                              @c handles the width of the top triangle



                                              @d handles the width bottom triangle



                                              @e contains the output either @c or @d - this saves a few bytes



                                              @f handles the special case of 1 as input. @c*@=3 determines when to use @f. 5 bytes cheaper than writing @c=3and @=1



                                              DECLARE @ INT=8

                                              ,@c INT=1,@e INT=1,@d INT,@f INT=0SET @d=@*8-3r:PRINT
                                              space(@*3-@e/2+@f/2)+replicate('*',@e-@f)SELECT
                                              @c=nullif(@c,@*6-3)+2,@f=iif(@c*@=3,2,0),@d-=2-@f,@e=iif(@c>@d
                                              or @c/2<@,@c,@d)IF @d>0goto r


                                              Try it online






                                              share|improve this answer











                                              $endgroup$

















                                                2












                                                $begingroup$

                                                T-SQL, 194 bytes



                                                @ is the input value



                                                @c handles the width of the top triangle



                                                @d handles the width bottom triangle



                                                @e contains the output either @c or @d - this saves a few bytes



                                                @f handles the special case of 1 as input. @c*@=3 determines when to use @f. 5 bytes cheaper than writing @c=3and @=1



                                                DECLARE @ INT=8

                                                ,@c INT=1,@e INT=1,@d INT,@f INT=0SET @d=@*8-3r:PRINT
                                                space(@*3-@e/2+@f/2)+replicate('*',@e-@f)SELECT
                                                @c=nullif(@c,@*6-3)+2,@f=iif(@c*@=3,2,0),@d-=2-@f,@e=iif(@c>@d
                                                or @c/2<@,@c,@d)IF @d>0goto r


                                                Try it online






                                                share|improve this answer











                                                $endgroup$















                                                  2












                                                  2








                                                  2





                                                  $begingroup$

                                                  T-SQL, 194 bytes



                                                  @ is the input value



                                                  @c handles the width of the top triangle



                                                  @d handles the width bottom triangle



                                                  @e contains the output either @c or @d - this saves a few bytes



                                                  @f handles the special case of 1 as input. @c*@=3 determines when to use @f. 5 bytes cheaper than writing @c=3and @=1



                                                  DECLARE @ INT=8

                                                  ,@c INT=1,@e INT=1,@d INT,@f INT=0SET @d=@*8-3r:PRINT
                                                  space(@*3-@e/2+@f/2)+replicate('*',@e-@f)SELECT
                                                  @c=nullif(@c,@*6-3)+2,@f=iif(@c*@=3,2,0),@d-=2-@f,@e=iif(@c>@d
                                                  or @c/2<@,@c,@d)IF @d>0goto r


                                                  Try it online






                                                  share|improve this answer











                                                  $endgroup$



                                                  T-SQL, 194 bytes



                                                  @ is the input value



                                                  @c handles the width of the top triangle



                                                  @d handles the width bottom triangle



                                                  @e contains the output either @c or @d - this saves a few bytes



                                                  @f handles the special case of 1 as input. @c*@=3 determines when to use @f. 5 bytes cheaper than writing @c=3and @=1



                                                  DECLARE @ INT=8

                                                  ,@c INT=1,@e INT=1,@d INT,@f INT=0SET @d=@*8-3r:PRINT
                                                  space(@*3-@e/2+@f/2)+replicate('*',@e-@f)SELECT
                                                  @c=nullif(@c,@*6-3)+2,@f=iif(@c*@=3,2,0),@d-=2-@f,@e=iif(@c>@d
                                                  or @c/2<@,@c,@d)IF @d>0goto r


                                                  Try it online







                                                  share|improve this answer














                                                  share|improve this answer



                                                  share|improve this answer








                                                  edited 2 days ago

























                                                  answered Apr 14 at 22:19









                                                  t-clausen.dkt-clausen.dk

                                                  2,114414




                                                  2,114414





















                                                      1












                                                      $begingroup$


                                                      Japt -R, 25 bytes



                                                      +5 bytes for n=1 :



                                                      õ cUon3*U-´UÎ)®ç* êÃê!U û


                                                      Try it



                                                      õ cUon3*U-´UÎ)®ç* êÃê!U û :Implicit input of integer U
                                                      õ :Range [1,U]
                                                      c :Concatenate
                                                      Uo : Range [0,U)
                                                      n : Subtract each from
                                                      3*U- : Multiply U by 3 and subtract
                                                      ´U : Decrement U
                                                      Î : Get sign
                                                      ) :End concat
                                                      ® :Map each Z
                                                      ç* : Repeat "*" Z times
                                                      ê : Palindromise
                                                      Ã :End map
                                                      ê!U :If decremented U is 0, append reverse, else, palindromise
                                                      û :Centre pad each line with spaces to the length of the longest
                                                      :Implicitly join with newlines and output





                                                      share|improve this answer











                                                      $endgroup$

















                                                        1












                                                        $begingroup$


                                                        Japt -R, 25 bytes



                                                        +5 bytes for n=1 :



                                                        õ cUon3*U-´UÎ)®ç* êÃê!U û


                                                        Try it



                                                        õ cUon3*U-´UÎ)®ç* êÃê!U û :Implicit input of integer U
                                                        õ :Range [1,U]
                                                        c :Concatenate
                                                        Uo : Range [0,U)
                                                        n : Subtract each from
                                                        3*U- : Multiply U by 3 and subtract
                                                        ´U : Decrement U
                                                        Î : Get sign
                                                        ) :End concat
                                                        ® :Map each Z
                                                        ç* : Repeat "*" Z times
                                                        ê : Palindromise
                                                        Ã :End map
                                                        ê!U :If decremented U is 0, append reverse, else, palindromise
                                                        û :Centre pad each line with spaces to the length of the longest
                                                        :Implicitly join with newlines and output





                                                        share|improve this answer











                                                        $endgroup$















                                                          1












                                                          1








                                                          1





                                                          $begingroup$


                                                          Japt -R, 25 bytes



                                                          +5 bytes for n=1 :



                                                          õ cUon3*U-´UÎ)®ç* êÃê!U û


                                                          Try it



                                                          õ cUon3*U-´UÎ)®ç* êÃê!U û :Implicit input of integer U
                                                          õ :Range [1,U]
                                                          c :Concatenate
                                                          Uo : Range [0,U)
                                                          n : Subtract each from
                                                          3*U- : Multiply U by 3 and subtract
                                                          ´U : Decrement U
                                                          Î : Get sign
                                                          ) :End concat
                                                          ® :Map each Z
                                                          ç* : Repeat "*" Z times
                                                          ê : Palindromise
                                                          Ã :End map
                                                          ê!U :If decremented U is 0, append reverse, else, palindromise
                                                          û :Centre pad each line with spaces to the length of the longest
                                                          :Implicitly join with newlines and output





                                                          share|improve this answer











                                                          $endgroup$




                                                          Japt -R, 25 bytes



                                                          +5 bytes for n=1 :



                                                          õ cUon3*U-´UÎ)®ç* êÃê!U û


                                                          Try it



                                                          õ cUon3*U-´UÎ)®ç* êÃê!U û :Implicit input of integer U
                                                          õ :Range [1,U]
                                                          c :Concatenate
                                                          Uo : Range [0,U)
                                                          n : Subtract each from
                                                          3*U- : Multiply U by 3 and subtract
                                                          ´U : Decrement U
                                                          Î : Get sign
                                                          ) :End concat
                                                          ® :Map each Z
                                                          ç* : Repeat "*" Z times
                                                          ê : Palindromise
                                                          Ã :End map
                                                          ê!U :If decremented U is 0, append reverse, else, palindromise
                                                          û :Centre pad each line with spaces to the length of the longest
                                                          :Implicitly join with newlines and output






                                                          share|improve this answer














                                                          share|improve this answer



                                                          share|improve this answer








                                                          edited Apr 15 at 17:24

























                                                          answered Apr 14 at 22:13









                                                          ShaggyShaggy

                                                          19k21768




                                                          19k21768




















                                                              Michael Karas is a new contributor. Be nice, and check out our Code of Conduct.









                                                              draft saved

                                                              draft discarded


















                                                              Michael Karas is a new contributor. Be nice, and check out our Code of Conduct.












                                                              Michael Karas is a new contributor. Be nice, and check out our Code of Conduct.











                                                              Michael Karas is a new contributor. Be nice, and check out our Code of Conduct.














                                                              If this is an answer to a challenge…



                                                              • …Be sure to follow the challenge specification. However, please refrain from exploiting obvious loopholes. Answers abusing any of the standard loopholes are considered invalid. If you think a specification is unclear or underspecified, comment on the question instead.


                                                              • …Try to optimize your score. For instance, answers to code-golf challenges should attempt to be as short as possible. You can always include a readable version of the code in addition to the competitive one.
                                                                Explanations of your answer make it more interesting to read and are very much encouraged.


                                                              • …Include a short header which indicates the language(s) of your code and its score, as defined by the challenge.


                                                              More generally…



                                                              • …Please make sure to answer the question and provide sufficient detail.


                                                              • …Avoid asking for help, clarification or responding to other answers (use comments instead).




                                                              draft saved


                                                              draft discarded














                                                              StackExchange.ready(
                                                              function ()
                                                              StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f183174%2fstars-make-stars%23new-answer', 'question_page');

                                                              );

                                                              Post as a guest















                                                              Required, but never shown





















































                                                              Required, but never shown














                                                              Required, but never shown












                                                              Required, but never shown







                                                              Required, but never shown

































                                                              Required, but never shown














                                                              Required, but never shown












                                                              Required, but never shown







                                                              Required, but never shown







                                                              Popular posts from this blog

                                                              getting Checkpoint VPN SSL Network Extender working in the command lineHow to connect to CheckPoint VPN on Ubuntu 18.04LTS?Will the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayVPN SSL Network Extender in FirefoxLinux Checkpoint SNX tool configuration issuesCheck Point - Connect under Linux - snx + OTPSNX VPN Ububuntu 18.XXUsing Checkpoint VPN SSL Network Extender CLI with certificateVPN with network manager (nm-applet) is not workingWill the Linux ( red-hat ) Open VPNC Client connect to checkpoint or nortel VPN gateways?VPN client for linux machine + support checkpoint gatewayImport VPN config files to NetworkManager from command lineTrouble connecting to VPN using network-manager, while command line worksStart a VPN connection with PPTP protocol on command linestarting a docker service daemon breaks the vpn networkCan't connect to vpn with Network-managerVPN SSL Network Extender in FirefoxUsing Checkpoint VPN SSL Network Extender CLI with certificate

                                                              Cannot Extend partition with GParted The 2019 Stack Overflow Developer Survey Results Are In Announcing the arrival of Valued Associate #679: Cesar Manara Planned maintenance scheduled April 17/18, 2019 at 00:00UTC (8:00pm US/Eastern) 2019 Community Moderator Election ResultsCan't increase partition size with GParted?GParted doesn't recognize the unallocated space after my current partitionWhat is the best way to add unallocated space located before to Ubuntu 12.04 partition with GParted live?I can't figure out how to extend my Arch home partition into free spaceGparted Linux Mint 18.1 issueTrying to extend but swap partition is showing as Unknown in Gparted, shows proper from fdiskRearrange partitions in gparted to extend a partitionUnable to extend partition even though unallocated space is next to it using GPartedAllocate free space to root partitiongparted: how to merge unallocated space with a partition

                                                              Marilyn Monroe Ny fiainany manokana | Jereo koa | Meny fitetezanafanitarana azy.