Lay out the Carpet












31












$begingroup$


Inspired by this SO question.



Challenge:



Input:




  • A string $s$

  • A character $c$


Output:



Create a diamond-square ASCII art of the string in all four directions, with the first character of the string in the center and going outwards. Which is inside a square ASCII-art carpet, with the character as filler. This may sound pretty vague, so here an example:



Input: $s$ = string, $c$ = .

Output:



..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........


Challenge rules:




  • Input-string may also be a list of characters

  • Output may also be a list of string-lines or matrix of characters

  • Input-string and character are guaranteed to be non-empty

  • The string is guaranteed to not contain the character

  • Both string and character will only be printable ASCII (unicode range [32,126], space ' ' to and including tilde '~')


General rules:




  • This is code-golf, so shortest answer in bytes wins.

    Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


  • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


  • Default Loopholes are forbidden.

  • If possible, please add a link with a test for your code (i.e. TIO).

  • Also, adding an explanation for your answer is highly recommended.


Test cases:



Input: $s$ = 11111, $c=$ = 0

Output:



00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000


Input: $s$ = 12345ABCDEF, $c$ = #

Output:



####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################


Input: $s$ = @+-|-o-|-O, $c$ = :

Output:



::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::


Input: $s$ = AB, $c$ = c

Output:



ccBcc
BcAcB
ccBcc


Input: $s$ = ~, $c$ = X

Output:



~


Input: $s$ = /^/, $c$ = X

Output:



XXXXXXXXXXXXXXXX
XXXXXXX/XXXXXXX
XXXXX/X^X/XXXXX
XXX/X^XX^X/XXX
X/X^XX/XX^X/X
XXX/X^XX^X/XXX
XXXXX/X^X/XXXXX
XXXXXXX/XXXXXXX
XXXXXXXXXXXXXXXX









share|improve this question











$endgroup$












  • $begingroup$
    Can the string contain spaces?
    $endgroup$
    – Emigna
    2 days ago






  • 1




    $begingroup$
    @Emigna Yes, all printable ASCII (unicode range [32,126]) are valid input-characters.
    $endgroup$
    – Kevin Cruijssen
    2 days ago








  • 1




    $begingroup$
    This becomes wonderful to debug if you use characters that visually look like a single character, e.g. ()()().
    $endgroup$
    – Filip Haglund
    2 days ago










  • $begingroup$
    What should happen if $s$ is empty?
    $endgroup$
    – Solomon Ucko
    2 days ago










  • $begingroup$
    @SolomonUcko From the rules section: "Input-string and character are guaranteed to be non-empty" :)
    $endgroup$
    – Kevin Cruijssen
    2 days ago


















31












$begingroup$


Inspired by this SO question.



Challenge:



Input:




  • A string $s$

  • A character $c$


Output:



Create a diamond-square ASCII art of the string in all four directions, with the first character of the string in the center and going outwards. Which is inside a square ASCII-art carpet, with the character as filler. This may sound pretty vague, so here an example:



Input: $s$ = string, $c$ = .

Output:



..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........


Challenge rules:




  • Input-string may also be a list of characters

  • Output may also be a list of string-lines or matrix of characters

  • Input-string and character are guaranteed to be non-empty

  • The string is guaranteed to not contain the character

  • Both string and character will only be printable ASCII (unicode range [32,126], space ' ' to and including tilde '~')


General rules:




  • This is code-golf, so shortest answer in bytes wins.

    Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


  • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


  • Default Loopholes are forbidden.

  • If possible, please add a link with a test for your code (i.e. TIO).

  • Also, adding an explanation for your answer is highly recommended.


Test cases:



Input: $s$ = 11111, $c=$ = 0

Output:



00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000


Input: $s$ = 12345ABCDEF, $c$ = #

Output:



####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################


Input: $s$ = @+-|-o-|-O, $c$ = :

Output:



::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::


Input: $s$ = AB, $c$ = c

Output:



ccBcc
BcAcB
ccBcc


Input: $s$ = ~, $c$ = X

Output:



~


Input: $s$ = /^/, $c$ = X

Output:



XXXXXXXXXXXXXXXX
XXXXXXX/XXXXXXX
XXXXX/X^X/XXXXX
XXX/X^XX^X/XXX
X/X^XX/XX^X/X
XXX/X^XX^X/XXX
XXXXX/X^X/XXXXX
XXXXXXX/XXXXXXX
XXXXXXXXXXXXXXXX









share|improve this question











$endgroup$












  • $begingroup$
    Can the string contain spaces?
    $endgroup$
    – Emigna
    2 days ago






  • 1




    $begingroup$
    @Emigna Yes, all printable ASCII (unicode range [32,126]) are valid input-characters.
    $endgroup$
    – Kevin Cruijssen
    2 days ago








  • 1




    $begingroup$
    This becomes wonderful to debug if you use characters that visually look like a single character, e.g. ()()().
    $endgroup$
    – Filip Haglund
    2 days ago










  • $begingroup$
    What should happen if $s$ is empty?
    $endgroup$
    – Solomon Ucko
    2 days ago










  • $begingroup$
    @SolomonUcko From the rules section: "Input-string and character are guaranteed to be non-empty" :)
    $endgroup$
    – Kevin Cruijssen
    2 days ago
















31












31








31


2



$begingroup$


Inspired by this SO question.



Challenge:



Input:




  • A string $s$

  • A character $c$


Output:



Create a diamond-square ASCII art of the string in all four directions, with the first character of the string in the center and going outwards. Which is inside a square ASCII-art carpet, with the character as filler. This may sound pretty vague, so here an example:



Input: $s$ = string, $c$ = .

Output:



..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........


Challenge rules:




  • Input-string may also be a list of characters

  • Output may also be a list of string-lines or matrix of characters

  • Input-string and character are guaranteed to be non-empty

  • The string is guaranteed to not contain the character

  • Both string and character will only be printable ASCII (unicode range [32,126], space ' ' to and including tilde '~')


General rules:




  • This is code-golf, so shortest answer in bytes wins.

    Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


  • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


  • Default Loopholes are forbidden.

  • If possible, please add a link with a test for your code (i.e. TIO).

  • Also, adding an explanation for your answer is highly recommended.


Test cases:



Input: $s$ = 11111, $c=$ = 0

Output:



00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000


Input: $s$ = 12345ABCDEF, $c$ = #

Output:



####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################


Input: $s$ = @+-|-o-|-O, $c$ = :

Output:



::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::


Input: $s$ = AB, $c$ = c

Output:



ccBcc
BcAcB
ccBcc


Input: $s$ = ~, $c$ = X

Output:



~


Input: $s$ = /^/, $c$ = X

Output:



XXXXXXXXXXXXXXXX
XXXXXXX/XXXXXXX
XXXXX/X^X/XXXXX
XXX/X^XX^X/XXX
X/X^XX/XX^X/X
XXX/X^XX^X/XXX
XXXXX/X^X/XXXXX
XXXXXXX/XXXXXXX
XXXXXXXXXXXXXXXX









share|improve this question











$endgroup$




Inspired by this SO question.



Challenge:



Input:




  • A string $s$

  • A character $c$


Output:



Create a diamond-square ASCII art of the string in all four directions, with the first character of the string in the center and going outwards. Which is inside a square ASCII-art carpet, with the character as filler. This may sound pretty vague, so here an example:



Input: $s$ = string, $c$ = .

Output:



..........g..........
........g.n.g........
......g.n.i.n.g......
....g.n.i.r.i.n.g....
..g.n.i.r.t.r.i.n.g..
g.n.i.r.t.s.t.r.i.n.g
..g.n.i.r.t.r.i.n.g..
....g.n.i.r.i.n.g....
......g.n.i.n.g......
........g.n.g........
..........g..........


Challenge rules:




  • Input-string may also be a list of characters

  • Output may also be a list of string-lines or matrix of characters

  • Input-string and character are guaranteed to be non-empty

  • The string is guaranteed to not contain the character

  • Both string and character will only be printable ASCII (unicode range [32,126], space ' ' to and including tilde '~')


General rules:




  • This is code-golf, so shortest answer in bytes wins.

    Don't let code-golf languages discourage you from posting answers with non-codegolfing languages. Try to come up with an as short as possible answer for 'any' programming language.


  • Standard rules apply for your answer with default I/O rules, so you are allowed to use STDIN/STDOUT, functions/method with the proper parameters and return-type, full programs. Your call.


  • Default Loopholes are forbidden.

  • If possible, please add a link with a test for your code (i.e. TIO).

  • Also, adding an explanation for your answer is highly recommended.


Test cases:



Input: $s$ = 11111, $c=$ = 0

Output:



00000000100000000
00000010101000000
00001010101010000
00101010101010100
10101010101010101
00101010101010100
00001010101010000
00000010101000000
00000000100000000


Input: $s$ = 12345ABCDEF, $c$ = #

Output:



####################F####################
##################F#E#F##################
################F#E#D#E#F################
##############F#E#D#C#D#E#F##############
############F#E#D#C#B#C#D#E#F############
##########F#E#D#C#B#A#B#C#D#E#F##########
########F#E#D#C#B#A#5#A#B#C#D#E#F########
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
F#E#D#C#B#A#5#4#3#2#1#2#3#4#5#A#B#C#D#E#F
##F#E#D#C#B#A#5#4#3#2#3#4#5#A#B#C#D#E#F##
####F#E#D#C#B#A#5#4#3#4#5#A#B#C#D#E#F####
######F#E#D#C#B#A#5#4#5#A#B#C#D#E#F######
########F#E#D#C#B#A#5#A#B#C#D#E#F########
##########F#E#D#C#B#A#B#C#D#E#F##########
############F#E#D#C#B#C#D#E#F############
##############F#E#D#C#D#E#F##############
################F#E#D#E#F################
##################F#E#F##################
####################F####################


Input: $s$ = @+-|-o-|-O, $c$ = :

Output:



::::::::::::::::::O::::::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
O:-:|:-:o:-:|:-:+:@:+:-:|:-:o:-:|:-:O
::O:-:|:-:o:-:|:-:+:-:|:-:o:-:|:-:O::
::::O:-:|:-:o:-:|:-:|:-:o:-:|:-:O::::
::::::O:-:|:-:o:-:|:-:o:-:|:-:O::::::
::::::::O:-:|:-:o:-:o:-:|:-:O::::::::
::::::::::O:-:|:-:o:-:|:-:O::::::::::
::::::::::::O:-:|:-:|:-:O::::::::::::
::::::::::::::O:-:|:-:O::::::::::::::
::::::::::::::::O:-:O::::::::::::::::
::::::::::::::::::O::::::::::::::::::


Input: $s$ = AB, $c$ = c

Output:



ccBcc
BcAcB
ccBcc


Input: $s$ = ~, $c$ = X

Output:



~


Input: $s$ = /^/, $c$ = X

Output:



XXXXXXXXXXXXXXXX
XXXXXXX/XXXXXXX
XXXXX/X^X/XXXXX
XXX/X^XX^X/XXX
X/X^XX/XX^X/X
XXX/X^XX^X/XXX
XXXXX/X^X/XXXXX
XXXXXXX/XXXXXXX
XXXXXXXXXXXXXXXX






code-golf string ascii-art






share|improve this question















share|improve this question













share|improve this question




share|improve this question








edited 2 days ago







Kevin Cruijssen

















asked 2 days ago









Kevin CruijssenKevin Cruijssen

41.8k568217




41.8k568217












  • $begingroup$
    Can the string contain spaces?
    $endgroup$
    – Emigna
    2 days ago






  • 1




    $begingroup$
    @Emigna Yes, all printable ASCII (unicode range [32,126]) are valid input-characters.
    $endgroup$
    – Kevin Cruijssen
    2 days ago








  • 1




    $begingroup$
    This becomes wonderful to debug if you use characters that visually look like a single character, e.g. ()()().
    $endgroup$
    – Filip Haglund
    2 days ago










  • $begingroup$
    What should happen if $s$ is empty?
    $endgroup$
    – Solomon Ucko
    2 days ago










  • $begingroup$
    @SolomonUcko From the rules section: "Input-string and character are guaranteed to be non-empty" :)
    $endgroup$
    – Kevin Cruijssen
    2 days ago




















  • $begingroup$
    Can the string contain spaces?
    $endgroup$
    – Emigna
    2 days ago






  • 1




    $begingroup$
    @Emigna Yes, all printable ASCII (unicode range [32,126]) are valid input-characters.
    $endgroup$
    – Kevin Cruijssen
    2 days ago








  • 1




    $begingroup$
    This becomes wonderful to debug if you use characters that visually look like a single character, e.g. ()()().
    $endgroup$
    – Filip Haglund
    2 days ago










  • $begingroup$
    What should happen if $s$ is empty?
    $endgroup$
    – Solomon Ucko
    2 days ago










  • $begingroup$
    @SolomonUcko From the rules section: "Input-string and character are guaranteed to be non-empty" :)
    $endgroup$
    – Kevin Cruijssen
    2 days ago


















$begingroup$
Can the string contain spaces?
$endgroup$
– Emigna
2 days ago




$begingroup$
Can the string contain spaces?
$endgroup$
– Emigna
2 days ago




1




1




$begingroup$
@Emigna Yes, all printable ASCII (unicode range [32,126]) are valid input-characters.
$endgroup$
– Kevin Cruijssen
2 days ago






$begingroup$
@Emigna Yes, all printable ASCII (unicode range [32,126]) are valid input-characters.
$endgroup$
– Kevin Cruijssen
2 days ago






1




1




$begingroup$
This becomes wonderful to debug if you use characters that visually look like a single character, e.g. ()()().
$endgroup$
– Filip Haglund
2 days ago




$begingroup$
This becomes wonderful to debug if you use characters that visually look like a single character, e.g. ()()().
$endgroup$
– Filip Haglund
2 days ago












$begingroup$
What should happen if $s$ is empty?
$endgroup$
– Solomon Ucko
2 days ago




$begingroup$
What should happen if $s$ is empty?
$endgroup$
– Solomon Ucko
2 days ago












$begingroup$
@SolomonUcko From the rules section: "Input-string and character are guaranteed to be non-empty" :)
$endgroup$
– Kevin Cruijssen
2 days ago






$begingroup$
@SolomonUcko From the rules section: "Input-string and character are guaranteed to be non-empty" :)
$endgroup$
– Kevin Cruijssen
2 days ago












24 Answers
24






active

oldest

votes


















4












$begingroup$


Python 2, 97 96 90 84 bytes





def f(s,c):r=range(len(s));return[c.join(c*i+s[:i:-1]+s[i:]+c*i)for i in r[:0:-1]+r]


Try it online!






share|improve this answer











$endgroup$





















    4












    $begingroup$


    05AB1E, 15 11 bytes



    .sûsζøsýí€û


    Try it online!
    or as a Test Suite



    Explanation



    .s            # push suffixes of input
    û # palendromize this list
    sζ # transpose using the second input as filler
    ø # transpose back
    sý # merge each on the second input
    í # reverse each row
    €û # palendromize each row





    share|improve this answer











    $endgroup$













    • $begingroup$
      I'm afraid the reflects cause the last test case /^/ to fail, since the becomes / and vice-versa.
      $endgroup$
      – Kevin Cruijssen
      2 days ago








    • 1




      $begingroup$
      @KevinCruijssen: Yeah. Fortunately it didn't cost any bytes to fix it. I still feel as if there should be a better way of doing this though, so I'll keep looking.
      $endgroup$
      – Emigna
      2 days ago










    • $begingroup$
      "Output may also be a list of string-lines or matrix of characters", so you can move the » to the footer. :)
      $endgroup$
      – Kevin Cruijssen
      2 days ago










    • $begingroup$
      @KevinCruijssen Ah right. I glanced over that part. Thanks :)
      $endgroup$
      – Emigna
      2 days ago



















    4












    $begingroup$


    J, 59 56 bytes



    ,{~[:((0-2*#)}.[:,0,:"0({:>:t)*t=:]+/<:)[:(|.@}.,])#@]


    Try it online!



    Too long solution for J ... (entirely my fault)






    share|improve this answer











    $endgroup$









    • 2




      $begingroup$
      Here’s 39
      $endgroup$
      – FrownyFrog
      yesterday












    • $begingroup$
      @FrownyFrog Thanks, I think you should post it as your own solution
      $endgroup$
      – Galen Ivanov
      yesterday



















    4












    $begingroup$


    R, an ugly 118 bytes version



    By letting the input be a vector of single characters, and outputting a matrix instead of printing nice ascii art.





    function(s,C,l=length(s),L=4*l-3,k=2*l-1,y=abs(rep(1:k,L)-l)+abs(rep(1:L,e=k)-k)/2+1)matrix(ifelse(y%%1|y>l,C,s[y]),k)


    Try it online!




    R, 161 157 bytes



    saved 4 bytes by using ifelse instead of conditionally modifying y



    function(S,C,l=nchar(S),L=4*l-3,k=2*l-1,y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1)cat(rbind(matrix(ifelse(y%%1|y>l,C,el(strsplit(S,''))[y]),L),'
    '),sep='')


    Try it online!



    ungolfed and commented



    function(S,C){
    s=el(strsplit(S,''))
    l=nchar(S)
    L=4*l-3
    k=2*l-1
    y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1 # distance from centre
    y[!!y%%1]=l+1 # set non integers to one more than length of string
    y[y>l]=l+1 # set number beyond length of string to one more than length of string
    M = rbind(matrix(c(s,C)[y],L),'n') # build matrix and add line returns
    cat(M,sep='') # print the matrix as a string
    }


    hmmm, seems like the longest answer so far!






    share|improve this answer











    $endgroup$













    • $begingroup$
      Oh dear, should have looked at the question better
      $endgroup$
      – Aaron Hayman
      2 days ago








    • 1




      $begingroup$
      @KevinCruijssen I have fixed it now
      $endgroup$
      – Aaron Hayman
      2 days ago






    • 1




      $begingroup$
      for +15 bytes, you can make your ugly answer ascii-art: Try it online!
      $endgroup$
      – Giuseppe
      2 days ago



















    4












    $begingroup$


    R, 118 95 92 bytes





    function(a,d,n=length(a),I=c(n:1,1:n)[-n])for(i in I-1)write(c(a,d)[pmin(I+i,n+1)],1,n*2,,d)


    Try it online!



    Thanks to:




    • Giuseppe for fixing an error and a golf

    • Aaron Hayman for 22 bytes worth of golf






    share|improve this answer











    $endgroup$













    • $begingroup$
      I guess I need to drop my aversion to for loops in R, at least for golfing.
      $endgroup$
      – Aaron Hayman
      2 days ago










    • $begingroup$
      @Giuseppe, thanks, I shouldn't be so lazy about inclusion of extra test cases!
      $endgroup$
      – Kirill L.
      2 days ago






    • 1




      $begingroup$
      This for 98 looks closer to your solution than mine Try it online!
      $endgroup$
      – Aaron Hayman
      8 hours ago






    • 1




      $begingroup$
      can take off another two with a bit of rearrangement: Try it online!
      $endgroup$
      – Aaron Hayman
      6 hours ago






    • 1




      $begingroup$
      @AaronHayman or else this 92 byter combining the pmin logic with the rearrangement :-)
      $endgroup$
      – Giuseppe
      5 hours ago



















    3












    $begingroup$


    Japt, 15 bytes



    Returns an array of lines



    Ôå+ ®¬qV êÃûV ê


    Try it



    Ôå+ ®¬qV êÃûV ê     :Implicit input of strings U=s & V=c
    Ô :Reverse U
    å+ :Prefixes
    ® :Map
    ¬ : Split
    qV : Join with V
    ê : Palindromise
    Ã :End map
    ûV :Centre pad each string with V, to the length of the longest
    ê :Palindromise





    share|improve this answer









    $endgroup$





















      3












      $begingroup$


      Charcoal, 15 bytes



      UBηEθ✂θκ‖O↑←UE¹


      Try it online! Link is to verbose version of code. Originally submitted as a comment on the now deleted sandbox post. Explanation:



      UBη


      Set the background to the second input c.



      Eθ✂θκ


      Map over the first input s to generate all suffixes and implicitly print them on separate lines.



      ‖O↑←


      Reflect horizontally and vertically.



      UE¹


      Add extra space horizontally.






      share|improve this answer









      $endgroup$





















        3












        $begingroup$


        K (ngn/k), 38 bytes



        {1_',/'y,''2{+x,1_|x}/(#x)'1_,/+y,'|x}


        Try it online!






        share|improve this answer











        $endgroup$





















          3












          $begingroup$


          J, 35 34 33 bytes



          ,{~1j1(}:@#"1{:(<*-)1-|+/|)i:@-&#


          Try it online!



          Many thanks to Galen Ivanov for the algorithm.






          share|improve this answer











          $endgroup$





















            2












            $begingroup$


            Ruby, 95 84 75 bytes





            ->a,c{(1...2*z=a.size).map{|i|s=a[j=(z-i).abs,z]*c+c*2*j;s.reverse.chop+s}}


            Try it online!



            Takes input string as an array of chars. Returns an array of strings.






            share|improve this answer











            $endgroup$





















              2












              $begingroup$


              Wolfram Language (Mathematica), 121 bytes



              Join[q=Table[(v=Table[#2,2(l-k)])<>Riffle[Join[(h=Reverse)[n=(g=Take)[#,-k]],g[n,-k+1]],#2]<>v,{k,l=Length@#}],Rest@h@q]&


              Try it online!






              share|improve this answer









              $endgroup$





















                2












                $begingroup$


                Japt, 16 bytes



                Note: I'll golf it :)



                Ôå+ ®¬qVÃùV mê ê


                Try it online!






                share|improve this answer









                $endgroup$













                • $begingroup$
                  It's fairly similar to the other Japt answer, but in a different order, isn't it? I don't know Japt, but I see similar characters in both answers. ;)
                  $endgroup$
                  – Kevin Cruijssen
                  2 days ago










                • $begingroup$
                  @KevinCruijssen Yeah, both are almost the same, for now
                  $endgroup$
                  – Luis felipe De jesus Munoz
                  2 days ago










                • $begingroup$
                  @KevinCruijssen, Luis developed this independently from my solution.
                  $endgroup$
                  – Shaggy
                  2 days ago



















                2












                $begingroup$


                PowerShell, 120 bytes





                param($s,$c)($s,(($l=$s.length-1)..0+1..$l|%{($x=$c*(2*$_))+($s[($_,($l..$_+($_+1)..$l))[$_-ne$l]]-join$c)+$x}))[$l-gt0]


                Try it online!



                Some days, having index ranges instead of slices really hurts. Today is one of those days. Due to conjoined ranges messing up when dealing with single elements (e.g. returning 0..0+1..0), special-casing is used to avoid it altogether (at the cost of many bytes).






                share|improve this answer











                $endgroup$





















                  2












                  $begingroup$


                  Japt, 15 bytes



                  Ôå+ ê ®ê ¬qV
                  ûV


                  Try it






                  share|improve this answer











                  $endgroup$





















                    2












                    $begingroup$


                    Jelly, 11 bytes



                    jÐƤṚzṚŒḄZŒḄ


                    Try it online!



                    Left argument: $s$.

                    Right argument: $c$ (as a single character, not as a string).

                    Output: List of Jelly strings (appears as a list of lists of 1-char Python strings, replace ŒṘ with Y to see the n-joined output).






                    share|improve this answer









                    $endgroup$





















                      2












                      $begingroup$


                      PowerShell, 82 83 bytes



                      +2 bytes thanks Veskah: the single character case bug fixed



                      -1 byte: The rule Input-string may also be a list of characters used





                      $c,$s=$args
                      ($s|%{(-join$s|% s*g $i)+$c*$i++})[($r=$i..0+1..$i)]|%{"$_"[$r]-join$c}


                      Try it online!



                      Less golfed:



                      $c,$s=$args
                      $southEast = $s|%{
                      (-join$s|% substring $i) + $c*$i++
                      }
                      $range=$i..0+1..$i
                      $southEast[$range]|%{
                      "$_"[$range]-join$c
                      }





                      share|improve this answer











                      $endgroup$









                      • 1




                        $begingroup$
                        Looks like this breaks for the single character case. There's just an empty line in the TIO link for ~
                        $endgroup$
                        – Veskah
                        2 days ago












                      • $begingroup$
                        Indeed. Thanks!
                        $endgroup$
                        – mazzy
                        2 days ago



















                      2












                      $begingroup$


                      Pip, 24 20 bytes



                      QPRV:_JbMa@>RV,#aZDb


                      Use the -l flag to get human-readable output. Try it online!



                      Explanation



                      QPRV:_JbMa@>RV,#aZDb
                      a,b are cmdline args (implicit)
                      a 1st cmdline arg (the string)
                      # Length
                      , Range
                      RV Reverse
                      a@> Take slices of a starting at those indices
                      ZDb Zip the list of slices together, filling out missing values in
                      the matrix with b (the character)
                      M To each row, map this function:
                      _Jb Join on b
                      RV: Reverse (making top row the bottom and vice versa)
                      QP Quad-palindromize: reflect downward and rightward, with overlap


                      For example, with inputs of abcd and .:



                      RV,#a
                      [3 2 1 0]
                      a@>
                      ["d" "cd" "bcd" "abcd"]
                      ZDb
                      [['d 'c 'b 'a] ['. 'd 'c 'b] ['. '. 'd 'c] ['. '. '. 'd]]
                      _JbM
                      ["d.c.b.a" "..d.c.b" "....d.c" "......d"]
                      RV:
                      ["......d" "....d.c" "..d.c.b" "d.c.b.a"]
                      QP
                      ["......d......" "....d.c.d...." "..d.c.b.c.d.." "d.c.b.a.b.c.d" "..d.c.b.c.d.." "....d.c.d...." "......d......"]





                      share|improve this answer











                      $endgroup$





















                        2












                        $begingroup$


                        Perl 6, 79 bytes





                        ->c{{map {join c,g $_ X||c},g .[^*X+(^$_,)]}o*.comb}
                        my&g={.[$_-1...0...$_-1]}


                        Try it online!



                        Anonymous codeblock that takes input curried (like f(char)(string)) and returns a list of strings. I think a different approach would be shorter.






                        share|improve this answer









                        $endgroup$





















                          2












                          $begingroup$


                          Attache, 57 bytes



                          ${q:=#x-1Bounce!Bounce@Join&y@PadLeft&y&#x=>x[q::(q::0)]}


                          Try it online! Output is a list of lines.



                          Explanation



                          ?? parameters: x, y
                          ${
                          ?? q is length of x - 1
                          q:=#x-1
                          ?? Reflect, collapsing middle:
                          Bounce!
                          ?? Function:
                          ?? Reflect,
                          Bounce@
                          ?? Joined by y,
                          Join&y@
                          ?? padded to the length of x with y
                          PadLeft&y&#x
                          ?? Mapped over
                          =>
                          ?? The elements of x at
                          x[
                          ?? decreasing range from q to
                          q::(
                          ?? each element in the range from q to 0
                          q::0
                          )
                          ]
                          }





                          share|improve this answer









                          $endgroup$





















                            1












                            $begingroup$


                            Perl 5 with -lF, -M5.010, 71 bytes





                            $"=<>;$A=abs,$_="@F[$A..$#F]".$"x($A*2),/./,say reverse.$' for-$#F..$#F


                            Try it online!






                            share|improve this answer









                            $endgroup$





















                              1












                              $begingroup$


                              C# (Visual C# Interactive Compiler), 249 bytes





                              s=>c=>{var r=s.Select((x,_)=>{int k=s.Length;var m=s.Substring(_,k-_).Aggregate("",(a,b)=>a+c+b);return new string(m.Skip(2).Reverse().Concat(m.Skip(1)).ToArray()).PadLeft(2*k-3+m.Length,c).PadRight(4*k-3,c);});return r.Skip(1).Reverse().Concat(r);}


                              Try it online!



                              This must be improvable...






                              share|improve this answer









                              $endgroup$





















                                1












                                $begingroup$


                                Canvas, 8 bytes



                                R±[]/┼┼*


                                Try it here!



                                7 bytes but mirrors a bunch of chars.






                                share|improve this answer









                                $endgroup$





















                                  1












                                  $begingroup$


                                  JavaScript (Node.js), 143 bytes



                                  (s,c)=>{q=Math.abs;m=(l=s.length*4-3)-1;for(i=j=0;j<l/2;(i=(++i)%l)?0:++j){p=s[q(i-m/2)/2+q(j-m/4)];process.stdout.write((i?"":"n")+(p?
                                  p:c))}}


                                  Try it online!



                                  A bit more thinkering would lead to calculating in terms of a one-dimensional array, and less bytes.






                                  share|improve this answer









                                  $endgroup$





















                                    1












                                    $begingroup$

                                    TSQL query, 200 bytes



                                    In MS-SQL Server Management Studio press Ctrl-T before running this query, this will change the output to text.



                                    This script is building up the output from left to right in one long "string", calculating the value to put in each position. The output is limited to 4096 characters.



                                    Golfed:



                                    USE master
                                    DECLARE
                                    @y char='.',
                                    @ varchar(20) = 'abcd'

                                    SELECT
                                    string_agg(iif(h>k/2,@y,substring(@,h+1,1),@y)+iif((n+1)%k=0,char(13)),'')FROM(SELECT
                                    abs(k/2-n%k)+abs(k/2-n/k)h,*FROM(SELECT
                                    number n,len(@)*2-1k,*FROM spt_values)c)d
                                    WHERE n<k*k and'P'=type


                                    Ungolfed:



                                    USE master
                                    DECLARE
                                    @y char='.',
                                    @ varchar(32) = 'abcd'

                                    SELECT
                                    string_agg(iif(h>k/2,@y,substring(@,h+1,1))+iif((n+1)%k=0,char(13),@y),'')
                                    FROM
                                    (
                                    SELECT abs(k/2-n%k)+abs(k/2-n/k)h,*
                                    FROM
                                    (
                                    SELECT number n,len(@)*2-1k,*
                                    FROM spt_values
                                    )c
                                    WHERE n<k*k and'P'=type
                                    )d


                                    I had to make some changes to format the output in the online version.



                                    Try it online






                                    share|improve this answer











                                    $endgroup$














                                      Your Answer





                                      StackExchange.ifUsing("editor", function () {
                                      return StackExchange.using("mathjaxEditing", function () {
                                      StackExchange.MarkdownEditor.creationCallbacks.add(function (editor, postfix) {
                                      StackExchange.mathjaxEditing.prepareWmdForMathJax(editor, postfix, [["\$", "\$"]]);
                                      });
                                      });
                                      }, "mathjax-editing");

                                      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
                                      });


                                      }
                                      });














                                      draft saved

                                      draft discarded


















                                      StackExchange.ready(
                                      function () {
                                      StackExchange.openid.initPostLogin('.new-post-login', 'https%3a%2f%2fcodegolf.stackexchange.com%2fquestions%2f182212%2flay-out-the-carpet%23new-answer', 'question_page');
                                      }
                                      );

                                      Post as a guest















                                      Required, but never shown

























                                      24 Answers
                                      24






                                      active

                                      oldest

                                      votes








                                      24 Answers
                                      24






                                      active

                                      oldest

                                      votes









                                      active

                                      oldest

                                      votes






                                      active

                                      oldest

                                      votes









                                      4












                                      $begingroup$


                                      Python 2, 97 96 90 84 bytes





                                      def f(s,c):r=range(len(s));return[c.join(c*i+s[:i:-1]+s[i:]+c*i)for i in r[:0:-1]+r]


                                      Try it online!






                                      share|improve this answer











                                      $endgroup$


















                                        4












                                        $begingroup$


                                        Python 2, 97 96 90 84 bytes





                                        def f(s,c):r=range(len(s));return[c.join(c*i+s[:i:-1]+s[i:]+c*i)for i in r[:0:-1]+r]


                                        Try it online!






                                        share|improve this answer











                                        $endgroup$
















                                          4












                                          4








                                          4





                                          $begingroup$


                                          Python 2, 97 96 90 84 bytes





                                          def f(s,c):r=range(len(s));return[c.join(c*i+s[:i:-1]+s[i:]+c*i)for i in r[:0:-1]+r]


                                          Try it online!






                                          share|improve this answer











                                          $endgroup$




                                          Python 2, 97 96 90 84 bytes





                                          def f(s,c):r=range(len(s));return[c.join(c*i+s[:i:-1]+s[i:]+c*i)for i in r[:0:-1]+r]


                                          Try it online!







                                          share|improve this answer














                                          share|improve this answer



                                          share|improve this answer








                                          edited 2 days ago

























                                          answered 2 days ago









                                          TFeldTFeld

                                          16.2k21450




                                          16.2k21450























                                              4












                                              $begingroup$


                                              05AB1E, 15 11 bytes



                                              .sûsζøsýí€û


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              .s            # push suffixes of input
                                              û # palendromize this list
                                              sζ # transpose using the second input as filler
                                              ø # transpose back
                                              sý # merge each on the second input
                                              í # reverse each row
                                              €û # palendromize each row





                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                I'm afraid the reflects cause the last test case /^/ to fail, since the becomes / and vice-versa.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen: Yeah. Fortunately it didn't cost any bytes to fix it. I still feel as if there should be a better way of doing this though, so I'll keep looking.
                                                $endgroup$
                                                – Emigna
                                                2 days ago










                                              • $begingroup$
                                                "Output may also be a list of string-lines or matrix of characters", so you can move the » to the footer. :)
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago










                                              • $begingroup$
                                                @KevinCruijssen Ah right. I glanced over that part. Thanks :)
                                                $endgroup$
                                                – Emigna
                                                2 days ago
















                                              4












                                              $begingroup$


                                              05AB1E, 15 11 bytes



                                              .sûsζøsýí€û


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              .s            # push suffixes of input
                                              û # palendromize this list
                                              sζ # transpose using the second input as filler
                                              ø # transpose back
                                              sý # merge each on the second input
                                              í # reverse each row
                                              €û # palendromize each row





                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                I'm afraid the reflects cause the last test case /^/ to fail, since the becomes / and vice-versa.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen: Yeah. Fortunately it didn't cost any bytes to fix it. I still feel as if there should be a better way of doing this though, so I'll keep looking.
                                                $endgroup$
                                                – Emigna
                                                2 days ago










                                              • $begingroup$
                                                "Output may also be a list of string-lines or matrix of characters", so you can move the » to the footer. :)
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago










                                              • $begingroup$
                                                @KevinCruijssen Ah right. I glanced over that part. Thanks :)
                                                $endgroup$
                                                – Emigna
                                                2 days ago














                                              4












                                              4








                                              4





                                              $begingroup$


                                              05AB1E, 15 11 bytes



                                              .sûsζøsýí€û


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              .s            # push suffixes of input
                                              û # palendromize this list
                                              sζ # transpose using the second input as filler
                                              ø # transpose back
                                              sý # merge each on the second input
                                              í # reverse each row
                                              €û # palendromize each row





                                              share|improve this answer











                                              $endgroup$




                                              05AB1E, 15 11 bytes



                                              .sûsζøsýí€û


                                              Try it online!
                                              or as a Test Suite



                                              Explanation



                                              .s            # push suffixes of input
                                              û # palendromize this list
                                              sζ # transpose using the second input as filler
                                              ø # transpose back
                                              sý # merge each on the second input
                                              í # reverse each row
                                              €û # palendromize each row






                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited 2 days ago

























                                              answered 2 days ago









                                              EmignaEmigna

                                              47.3k433143




                                              47.3k433143












                                              • $begingroup$
                                                I'm afraid the reflects cause the last test case /^/ to fail, since the becomes / and vice-versa.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen: Yeah. Fortunately it didn't cost any bytes to fix it. I still feel as if there should be a better way of doing this though, so I'll keep looking.
                                                $endgroup$
                                                – Emigna
                                                2 days ago










                                              • $begingroup$
                                                "Output may also be a list of string-lines or matrix of characters", so you can move the » to the footer. :)
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago










                                              • $begingroup$
                                                @KevinCruijssen Ah right. I glanced over that part. Thanks :)
                                                $endgroup$
                                                – Emigna
                                                2 days ago


















                                              • $begingroup$
                                                I'm afraid the reflects cause the last test case /^/ to fail, since the becomes / and vice-versa.
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen: Yeah. Fortunately it didn't cost any bytes to fix it. I still feel as if there should be a better way of doing this though, so I'll keep looking.
                                                $endgroup$
                                                – Emigna
                                                2 days ago










                                              • $begingroup$
                                                "Output may also be a list of string-lines or matrix of characters", so you can move the » to the footer. :)
                                                $endgroup$
                                                – Kevin Cruijssen
                                                2 days ago










                                              • $begingroup$
                                                @KevinCruijssen Ah right. I glanced over that part. Thanks :)
                                                $endgroup$
                                                – Emigna
                                                2 days ago
















                                              $begingroup$
                                              I'm afraid the reflects cause the last test case /^/ to fail, since the becomes / and vice-versa.
                                              $endgroup$
                                              – Kevin Cruijssen
                                              2 days ago






                                              $begingroup$
                                              I'm afraid the reflects cause the last test case /^/ to fail, since the becomes / and vice-versa.
                                              $endgroup$
                                              – Kevin Cruijssen
                                              2 days ago






                                              1




                                              1




                                              $begingroup$
                                              @KevinCruijssen: Yeah. Fortunately it didn't cost any bytes to fix it. I still feel as if there should be a better way of doing this though, so I'll keep looking.
                                              $endgroup$
                                              – Emigna
                                              2 days ago




                                              $begingroup$
                                              @KevinCruijssen: Yeah. Fortunately it didn't cost any bytes to fix it. I still feel as if there should be a better way of doing this though, so I'll keep looking.
                                              $endgroup$
                                              – Emigna
                                              2 days ago












                                              $begingroup$
                                              "Output may also be a list of string-lines or matrix of characters", so you can move the » to the footer. :)
                                              $endgroup$
                                              – Kevin Cruijssen
                                              2 days ago




                                              $begingroup$
                                              "Output may also be a list of string-lines or matrix of characters", so you can move the » to the footer. :)
                                              $endgroup$
                                              – Kevin Cruijssen
                                              2 days ago












                                              $begingroup$
                                              @KevinCruijssen Ah right. I glanced over that part. Thanks :)
                                              $endgroup$
                                              – Emigna
                                              2 days ago




                                              $begingroup$
                                              @KevinCruijssen Ah right. I glanced over that part. Thanks :)
                                              $endgroup$
                                              – Emigna
                                              2 days ago











                                              4












                                              $begingroup$


                                              J, 59 56 bytes



                                              ,{~[:((0-2*#)}.[:,0,:"0({:>:t)*t=:]+/<:)[:(|.@}.,])#@]


                                              Try it online!



                                              Too long solution for J ... (entirely my fault)






                                              share|improve this answer











                                              $endgroup$









                                              • 2




                                                $begingroup$
                                                Here’s 39
                                                $endgroup$
                                                – FrownyFrog
                                                yesterday












                                              • $begingroup$
                                                @FrownyFrog Thanks, I think you should post it as your own solution
                                                $endgroup$
                                                – Galen Ivanov
                                                yesterday
















                                              4












                                              $begingroup$


                                              J, 59 56 bytes



                                              ,{~[:((0-2*#)}.[:,0,:"0({:>:t)*t=:]+/<:)[:(|.@}.,])#@]


                                              Try it online!



                                              Too long solution for J ... (entirely my fault)






                                              share|improve this answer











                                              $endgroup$









                                              • 2




                                                $begingroup$
                                                Here’s 39
                                                $endgroup$
                                                – FrownyFrog
                                                yesterday












                                              • $begingroup$
                                                @FrownyFrog Thanks, I think you should post it as your own solution
                                                $endgroup$
                                                – Galen Ivanov
                                                yesterday














                                              4












                                              4








                                              4





                                              $begingroup$


                                              J, 59 56 bytes



                                              ,{~[:((0-2*#)}.[:,0,:"0({:>:t)*t=:]+/<:)[:(|.@}.,])#@]


                                              Try it online!



                                              Too long solution for J ... (entirely my fault)






                                              share|improve this answer











                                              $endgroup$




                                              J, 59 56 bytes



                                              ,{~[:((0-2*#)}.[:,0,:"0({:>:t)*t=:]+/<:)[:(|.@}.,])#@]


                                              Try it online!



                                              Too long solution for J ... (entirely my fault)







                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited 2 days ago

























                                              answered 2 days ago









                                              Galen IvanovGalen Ivanov

                                              7,32211034




                                              7,32211034








                                              • 2




                                                $begingroup$
                                                Here’s 39
                                                $endgroup$
                                                – FrownyFrog
                                                yesterday












                                              • $begingroup$
                                                @FrownyFrog Thanks, I think you should post it as your own solution
                                                $endgroup$
                                                – Galen Ivanov
                                                yesterday














                                              • 2




                                                $begingroup$
                                                Here’s 39
                                                $endgroup$
                                                – FrownyFrog
                                                yesterday












                                              • $begingroup$
                                                @FrownyFrog Thanks, I think you should post it as your own solution
                                                $endgroup$
                                                – Galen Ivanov
                                                yesterday








                                              2




                                              2




                                              $begingroup$
                                              Here’s 39
                                              $endgroup$
                                              – FrownyFrog
                                              yesterday






                                              $begingroup$
                                              Here’s 39
                                              $endgroup$
                                              – FrownyFrog
                                              yesterday














                                              $begingroup$
                                              @FrownyFrog Thanks, I think you should post it as your own solution
                                              $endgroup$
                                              – Galen Ivanov
                                              yesterday




                                              $begingroup$
                                              @FrownyFrog Thanks, I think you should post it as your own solution
                                              $endgroup$
                                              – Galen Ivanov
                                              yesterday











                                              4












                                              $begingroup$


                                              R, an ugly 118 bytes version



                                              By letting the input be a vector of single characters, and outputting a matrix instead of printing nice ascii art.





                                              function(s,C,l=length(s),L=4*l-3,k=2*l-1,y=abs(rep(1:k,L)-l)+abs(rep(1:L,e=k)-k)/2+1)matrix(ifelse(y%%1|y>l,C,s[y]),k)


                                              Try it online!




                                              R, 161 157 bytes



                                              saved 4 bytes by using ifelse instead of conditionally modifying y



                                              function(S,C,l=nchar(S),L=4*l-3,k=2*l-1,y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1)cat(rbind(matrix(ifelse(y%%1|y>l,C,el(strsplit(S,''))[y]),L),'
                                              '),sep='')


                                              Try it online!



                                              ungolfed and commented



                                              function(S,C){
                                              s=el(strsplit(S,''))
                                              l=nchar(S)
                                              L=4*l-3
                                              k=2*l-1
                                              y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1 # distance from centre
                                              y[!!y%%1]=l+1 # set non integers to one more than length of string
                                              y[y>l]=l+1 # set number beyond length of string to one more than length of string
                                              M = rbind(matrix(c(s,C)[y],L),'n') # build matrix and add line returns
                                              cat(M,sep='') # print the matrix as a string
                                              }


                                              hmmm, seems like the longest answer so far!






                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                Oh dear, should have looked at the question better
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen I have fixed it now
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                for +15 bytes, you can make your ugly answer ascii-art: Try it online!
                                                $endgroup$
                                                – Giuseppe
                                                2 days ago
















                                              4












                                              $begingroup$


                                              R, an ugly 118 bytes version



                                              By letting the input be a vector of single characters, and outputting a matrix instead of printing nice ascii art.





                                              function(s,C,l=length(s),L=4*l-3,k=2*l-1,y=abs(rep(1:k,L)-l)+abs(rep(1:L,e=k)-k)/2+1)matrix(ifelse(y%%1|y>l,C,s[y]),k)


                                              Try it online!




                                              R, 161 157 bytes



                                              saved 4 bytes by using ifelse instead of conditionally modifying y



                                              function(S,C,l=nchar(S),L=4*l-3,k=2*l-1,y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1)cat(rbind(matrix(ifelse(y%%1|y>l,C,el(strsplit(S,''))[y]),L),'
                                              '),sep='')


                                              Try it online!



                                              ungolfed and commented



                                              function(S,C){
                                              s=el(strsplit(S,''))
                                              l=nchar(S)
                                              L=4*l-3
                                              k=2*l-1
                                              y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1 # distance from centre
                                              y[!!y%%1]=l+1 # set non integers to one more than length of string
                                              y[y>l]=l+1 # set number beyond length of string to one more than length of string
                                              M = rbind(matrix(c(s,C)[y],L),'n') # build matrix and add line returns
                                              cat(M,sep='') # print the matrix as a string
                                              }


                                              hmmm, seems like the longest answer so far!






                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                Oh dear, should have looked at the question better
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen I have fixed it now
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                for +15 bytes, you can make your ugly answer ascii-art: Try it online!
                                                $endgroup$
                                                – Giuseppe
                                                2 days ago














                                              4












                                              4








                                              4





                                              $begingroup$


                                              R, an ugly 118 bytes version



                                              By letting the input be a vector of single characters, and outputting a matrix instead of printing nice ascii art.





                                              function(s,C,l=length(s),L=4*l-3,k=2*l-1,y=abs(rep(1:k,L)-l)+abs(rep(1:L,e=k)-k)/2+1)matrix(ifelse(y%%1|y>l,C,s[y]),k)


                                              Try it online!




                                              R, 161 157 bytes



                                              saved 4 bytes by using ifelse instead of conditionally modifying y



                                              function(S,C,l=nchar(S),L=4*l-3,k=2*l-1,y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1)cat(rbind(matrix(ifelse(y%%1|y>l,C,el(strsplit(S,''))[y]),L),'
                                              '),sep='')


                                              Try it online!



                                              ungolfed and commented



                                              function(S,C){
                                              s=el(strsplit(S,''))
                                              l=nchar(S)
                                              L=4*l-3
                                              k=2*l-1
                                              y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1 # distance from centre
                                              y[!!y%%1]=l+1 # set non integers to one more than length of string
                                              y[y>l]=l+1 # set number beyond length of string to one more than length of string
                                              M = rbind(matrix(c(s,C)[y],L),'n') # build matrix and add line returns
                                              cat(M,sep='') # print the matrix as a string
                                              }


                                              hmmm, seems like the longest answer so far!






                                              share|improve this answer











                                              $endgroup$




                                              R, an ugly 118 bytes version



                                              By letting the input be a vector of single characters, and outputting a matrix instead of printing nice ascii art.





                                              function(s,C,l=length(s),L=4*l-3,k=2*l-1,y=abs(rep(1:k,L)-l)+abs(rep(1:L,e=k)-k)/2+1)matrix(ifelse(y%%1|y>l,C,s[y]),k)


                                              Try it online!




                                              R, 161 157 bytes



                                              saved 4 bytes by using ifelse instead of conditionally modifying y



                                              function(S,C,l=nchar(S),L=4*l-3,k=2*l-1,y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1)cat(rbind(matrix(ifelse(y%%1|y>l,C,el(strsplit(S,''))[y]),L),'
                                              '),sep='')


                                              Try it online!



                                              ungolfed and commented



                                              function(S,C){
                                              s=el(strsplit(S,''))
                                              l=nchar(S)
                                              L=4*l-3
                                              k=2*l-1
                                              y=abs(rep(1:L,k)-k)/2+abs(rep(1:k,e=L)-l)+1 # distance from centre
                                              y[!!y%%1]=l+1 # set non integers to one more than length of string
                                              y[y>l]=l+1 # set number beyond length of string to one more than length of string
                                              M = rbind(matrix(c(s,C)[y],L),'n') # build matrix and add line returns
                                              cat(M,sep='') # print the matrix as a string
                                              }


                                              hmmm, seems like the longest answer so far!







                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited 2 days ago

























                                              answered 2 days ago









                                              Aaron HaymanAaron Hayman

                                              3215




                                              3215












                                              • $begingroup$
                                                Oh dear, should have looked at the question better
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen I have fixed it now
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                for +15 bytes, you can make your ugly answer ascii-art: Try it online!
                                                $endgroup$
                                                – Giuseppe
                                                2 days ago


















                                              • $begingroup$
                                                Oh dear, should have looked at the question better
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago








                                              • 1




                                                $begingroup$
                                                @KevinCruijssen I have fixed it now
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                for +15 bytes, you can make your ugly answer ascii-art: Try it online!
                                                $endgroup$
                                                – Giuseppe
                                                2 days ago
















                                              $begingroup$
                                              Oh dear, should have looked at the question better
                                              $endgroup$
                                              – Aaron Hayman
                                              2 days ago






                                              $begingroup$
                                              Oh dear, should have looked at the question better
                                              $endgroup$
                                              – Aaron Hayman
                                              2 days ago






                                              1




                                              1




                                              $begingroup$
                                              @KevinCruijssen I have fixed it now
                                              $endgroup$
                                              – Aaron Hayman
                                              2 days ago




                                              $begingroup$
                                              @KevinCruijssen I have fixed it now
                                              $endgroup$
                                              – Aaron Hayman
                                              2 days ago




                                              1




                                              1




                                              $begingroup$
                                              for +15 bytes, you can make your ugly answer ascii-art: Try it online!
                                              $endgroup$
                                              – Giuseppe
                                              2 days ago




                                              $begingroup$
                                              for +15 bytes, you can make your ugly answer ascii-art: Try it online!
                                              $endgroup$
                                              – Giuseppe
                                              2 days ago











                                              4












                                              $begingroup$


                                              R, 118 95 92 bytes





                                              function(a,d,n=length(a),I=c(n:1,1:n)[-n])for(i in I-1)write(c(a,d)[pmin(I+i,n+1)],1,n*2,,d)


                                              Try it online!



                                              Thanks to:




                                              • Giuseppe for fixing an error and a golf

                                              • Aaron Hayman for 22 bytes worth of golf






                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                I guess I need to drop my aversion to for loops in R, at least for golfing.
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago










                                              • $begingroup$
                                                @Giuseppe, thanks, I shouldn't be so lazy about inclusion of extra test cases!
                                                $endgroup$
                                                – Kirill L.
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                This for 98 looks closer to your solution than mine Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                8 hours ago






                                              • 1




                                                $begingroup$
                                                can take off another two with a bit of rearrangement: Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                6 hours ago






                                              • 1




                                                $begingroup$
                                                @AaronHayman or else this 92 byter combining the pmin logic with the rearrangement :-)
                                                $endgroup$
                                                – Giuseppe
                                                5 hours ago
















                                              4












                                              $begingroup$


                                              R, 118 95 92 bytes





                                              function(a,d,n=length(a),I=c(n:1,1:n)[-n])for(i in I-1)write(c(a,d)[pmin(I+i,n+1)],1,n*2,,d)


                                              Try it online!



                                              Thanks to:




                                              • Giuseppe for fixing an error and a golf

                                              • Aaron Hayman for 22 bytes worth of golf






                                              share|improve this answer











                                              $endgroup$













                                              • $begingroup$
                                                I guess I need to drop my aversion to for loops in R, at least for golfing.
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago










                                              • $begingroup$
                                                @Giuseppe, thanks, I shouldn't be so lazy about inclusion of extra test cases!
                                                $endgroup$
                                                – Kirill L.
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                This for 98 looks closer to your solution than mine Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                8 hours ago






                                              • 1




                                                $begingroup$
                                                can take off another two with a bit of rearrangement: Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                6 hours ago






                                              • 1




                                                $begingroup$
                                                @AaronHayman or else this 92 byter combining the pmin logic with the rearrangement :-)
                                                $endgroup$
                                                – Giuseppe
                                                5 hours ago














                                              4












                                              4








                                              4





                                              $begingroup$


                                              R, 118 95 92 bytes





                                              function(a,d,n=length(a),I=c(n:1,1:n)[-n])for(i in I-1)write(c(a,d)[pmin(I+i,n+1)],1,n*2,,d)


                                              Try it online!



                                              Thanks to:




                                              • Giuseppe for fixing an error and a golf

                                              • Aaron Hayman for 22 bytes worth of golf






                                              share|improve this answer











                                              $endgroup$




                                              R, 118 95 92 bytes





                                              function(a,d,n=length(a),I=c(n:1,1:n)[-n])for(i in I-1)write(c(a,d)[pmin(I+i,n+1)],1,n*2,,d)


                                              Try it online!



                                              Thanks to:




                                              • Giuseppe for fixing an error and a golf

                                              • Aaron Hayman for 22 bytes worth of golf







                                              share|improve this answer














                                              share|improve this answer



                                              share|improve this answer








                                              edited 3 hours ago

























                                              answered 2 days ago









                                              Kirill L.Kirill L.

                                              5,9131526




                                              5,9131526












                                              • $begingroup$
                                                I guess I need to drop my aversion to for loops in R, at least for golfing.
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago










                                              • $begingroup$
                                                @Giuseppe, thanks, I shouldn't be so lazy about inclusion of extra test cases!
                                                $endgroup$
                                                – Kirill L.
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                This for 98 looks closer to your solution than mine Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                8 hours ago






                                              • 1




                                                $begingroup$
                                                can take off another two with a bit of rearrangement: Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                6 hours ago






                                              • 1




                                                $begingroup$
                                                @AaronHayman or else this 92 byter combining the pmin logic with the rearrangement :-)
                                                $endgroup$
                                                – Giuseppe
                                                5 hours ago


















                                              • $begingroup$
                                                I guess I need to drop my aversion to for loops in R, at least for golfing.
                                                $endgroup$
                                                – Aaron Hayman
                                                2 days ago










                                              • $begingroup$
                                                @Giuseppe, thanks, I shouldn't be so lazy about inclusion of extra test cases!
                                                $endgroup$
                                                – Kirill L.
                                                2 days ago






                                              • 1




                                                $begingroup$
                                                This for 98 looks closer to your solution than mine Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                8 hours ago






                                              • 1




                                                $begingroup$
                                                can take off another two with a bit of rearrangement: Try it online!
                                                $endgroup$
                                                – Aaron Hayman
                                                6 hours ago






                                              • 1




                                                $begingroup$
                                                @AaronHayman or else this 92 byter combining the pmin logic with the rearrangement :-)
                                                $endgroup$
                                                – Giuseppe
                                                5 hours ago
















                                              $begingroup$
                                              I guess I need to drop my aversion to for loops in R, at least for golfing.
                                              $endgroup$
                                              – Aaron Hayman
                                              2 days ago




                                              $begingroup$
                                              I guess I need to drop my aversion to for loops in R, at least for golfing.
                                              $endgroup$
                                              – Aaron Hayman
                                              2 days ago












                                              $begingroup$
                                              @Giuseppe, thanks, I shouldn't be so lazy about inclusion of extra test cases!
                                              $endgroup$
                                              – Kirill L.
                                              2 days ago




                                              $begingroup$
                                              @Giuseppe, thanks, I shouldn't be so lazy about inclusion of extra test cases!
                                              $endgroup$
                                              – Kirill L.
                                              2 days ago




                                              1




                                              1




                                              $begingroup$
                                              This for 98 looks closer to your solution than mine Try it online!
                                              $endgroup$
                                              – Aaron Hayman
                                              8 hours ago




                                              $begingroup$
                                              This for 98 looks closer to your solution than mine Try it online!
                                              $endgroup$
                                              – Aaron Hayman
                                              8 hours ago




                                              1




                                              1




                                              $begingroup$
                                              can take off another two with a bit of rearrangement: Try it online!
                                              $endgroup$
                                              – Aaron Hayman
                                              6 hours ago




                                              $begingroup$
                                              can take off another two with a bit of rearrangement: Try it online!
                                              $endgroup$
                                              – Aaron Hayman
                                              6 hours ago




                                              1




                                              1




                                              $begingroup$
                                              @AaronHayman or else this 92 byter combining the pmin logic with the rearrangement :-)
                                              $endgroup$
                                              – Giuseppe
                                              5 hours ago




                                              $begingroup$
                                              @AaronHayman or else this 92 byter combining the pmin logic with the rearrangement :-)
                                              $endgroup$
                                              – Giuseppe
                                              5 hours ago











                                              3












                                              $begingroup$


                                              Japt, 15 bytes



                                              Returns an array of lines



                                              Ôå+ ®¬qV êÃûV ê


                                              Try it



                                              Ôå+ ®¬qV êÃûV ê     :Implicit input of strings U=s & V=c
                                              Ô :Reverse U
                                              å+ :Prefixes
                                              ® :Map
                                              ¬ : Split
                                              qV : Join with V
                                              ê : Palindromise
                                              Ã :End map
                                              ûV :Centre pad each string with V, to the length of the longest
                                              ê :Palindromise





                                              share|improve this answer









                                              $endgroup$


















                                                3












                                                $begingroup$


                                                Japt, 15 bytes



                                                Returns an array of lines



                                                Ôå+ ®¬qV êÃûV ê


                                                Try it



                                                Ôå+ ®¬qV êÃûV ê     :Implicit input of strings U=s & V=c
                                                Ô :Reverse U
                                                å+ :Prefixes
                                                ® :Map
                                                ¬ : Split
                                                qV : Join with V
                                                ê : Palindromise
                                                Ã :End map
                                                ûV :Centre pad each string with V, to the length of the longest
                                                ê :Palindromise





                                                share|improve this answer









                                                $endgroup$
















                                                  3












                                                  3








                                                  3





                                                  $begingroup$


                                                  Japt, 15 bytes



                                                  Returns an array of lines



                                                  Ôå+ ®¬qV êÃûV ê


                                                  Try it



                                                  Ôå+ ®¬qV êÃûV ê     :Implicit input of strings U=s & V=c
                                                  Ô :Reverse U
                                                  å+ :Prefixes
                                                  ® :Map
                                                  ¬ : Split
                                                  qV : Join with V
                                                  ê : Palindromise
                                                  Ã :End map
                                                  ûV :Centre pad each string with V, to the length of the longest
                                                  ê :Palindromise





                                                  share|improve this answer









                                                  $endgroup$




                                                  Japt, 15 bytes



                                                  Returns an array of lines



                                                  Ôå+ ®¬qV êÃûV ê


                                                  Try it



                                                  Ôå+ ®¬qV êÃûV ê     :Implicit input of strings U=s & V=c
                                                  Ô :Reverse U
                                                  å+ :Prefixes
                                                  ® :Map
                                                  ¬ : Split
                                                  qV : Join with V
                                                  ê : Palindromise
                                                  Ã :End map
                                                  ûV :Centre pad each string with V, to the length of the longest
                                                  ê :Palindromise






                                                  share|improve this answer












                                                  share|improve this answer



                                                  share|improve this answer










                                                  answered 2 days ago









                                                  ShaggyShaggy

                                                  19.1k21667




                                                  19.1k21667























                                                      3












                                                      $begingroup$


                                                      Charcoal, 15 bytes



                                                      UBηEθ✂θκ‖O↑←UE¹


                                                      Try it online! Link is to verbose version of code. Originally submitted as a comment on the now deleted sandbox post. Explanation:



                                                      UBη


                                                      Set the background to the second input c.



                                                      Eθ✂θκ


                                                      Map over the first input s to generate all suffixes and implicitly print them on separate lines.



                                                      ‖O↑←


                                                      Reflect horizontally and vertically.



                                                      UE¹


                                                      Add extra space horizontally.






                                                      share|improve this answer









                                                      $endgroup$


















                                                        3












                                                        $begingroup$


                                                        Charcoal, 15 bytes



                                                        UBηEθ✂θκ‖O↑←UE¹


                                                        Try it online! Link is to verbose version of code. Originally submitted as a comment on the now deleted sandbox post. Explanation:



                                                        UBη


                                                        Set the background to the second input c.



                                                        Eθ✂θκ


                                                        Map over the first input s to generate all suffixes and implicitly print them on separate lines.



                                                        ‖O↑←


                                                        Reflect horizontally and vertically.



                                                        UE¹


                                                        Add extra space horizontally.






                                                        share|improve this answer









                                                        $endgroup$
















                                                          3












                                                          3








                                                          3





                                                          $begingroup$


                                                          Charcoal, 15 bytes



                                                          UBηEθ✂θκ‖O↑←UE¹


                                                          Try it online! Link is to verbose version of code. Originally submitted as a comment on the now deleted sandbox post. Explanation:



                                                          UBη


                                                          Set the background to the second input c.



                                                          Eθ✂θκ


                                                          Map over the first input s to generate all suffixes and implicitly print them on separate lines.



                                                          ‖O↑←


                                                          Reflect horizontally and vertically.



                                                          UE¹


                                                          Add extra space horizontally.






                                                          share|improve this answer









                                                          $endgroup$




                                                          Charcoal, 15 bytes



                                                          UBηEθ✂θκ‖O↑←UE¹


                                                          Try it online! Link is to verbose version of code. Originally submitted as a comment on the now deleted sandbox post. Explanation:



                                                          UBη


                                                          Set the background to the second input c.



                                                          Eθ✂θκ


                                                          Map over the first input s to generate all suffixes and implicitly print them on separate lines.



                                                          ‖O↑←


                                                          Reflect horizontally and vertically.



                                                          UE¹


                                                          Add extra space horizontally.







                                                          share|improve this answer












                                                          share|improve this answer



                                                          share|improve this answer










                                                          answered 2 days ago









                                                          NeilNeil

                                                          82.1k745178




                                                          82.1k745178























                                                              3












                                                              $begingroup$


                                                              K (ngn/k), 38 bytes



                                                              {1_',/'y,''2{+x,1_|x}/(#x)'1_,/+y,'|x}


                                                              Try it online!






                                                              share|improve this answer











                                                              $endgroup$


















                                                                3












                                                                $begingroup$


                                                                K (ngn/k), 38 bytes



                                                                {1_',/'y,''2{+x,1_|x}/(#x)'1_,/+y,'|x}


                                                                Try it online!






                                                                share|improve this answer











                                                                $endgroup$
















                                                                  3












                                                                  3








                                                                  3





                                                                  $begingroup$


                                                                  K (ngn/k), 38 bytes



                                                                  {1_',/'y,''2{+x,1_|x}/(#x)'1_,/+y,'|x}


                                                                  Try it online!






                                                                  share|improve this answer











                                                                  $endgroup$




                                                                  K (ngn/k), 38 bytes



                                                                  {1_',/'y,''2{+x,1_|x}/(#x)'1_,/+y,'|x}


                                                                  Try it online!







                                                                  share|improve this answer














                                                                  share|improve this answer



                                                                  share|improve this answer








                                                                  edited yesterday

























                                                                  answered yesterday









                                                                  ngnngn

                                                                  7,32112560




                                                                  7,32112560























                                                                      3












                                                                      $begingroup$


                                                                      J, 35 34 33 bytes



                                                                      ,{~1j1(}:@#"1{:(<*-)1-|+/|)i:@-&#


                                                                      Try it online!



                                                                      Many thanks to Galen Ivanov for the algorithm.






                                                                      share|improve this answer











                                                                      $endgroup$


















                                                                        3












                                                                        $begingroup$


                                                                        J, 35 34 33 bytes



                                                                        ,{~1j1(}:@#"1{:(<*-)1-|+/|)i:@-&#


                                                                        Try it online!



                                                                        Many thanks to Galen Ivanov for the algorithm.






                                                                        share|improve this answer











                                                                        $endgroup$
















                                                                          3












                                                                          3








                                                                          3





                                                                          $begingroup$


                                                                          J, 35 34 33 bytes



                                                                          ,{~1j1(}:@#"1{:(<*-)1-|+/|)i:@-&#


                                                                          Try it online!



                                                                          Many thanks to Galen Ivanov for the algorithm.






                                                                          share|improve this answer











                                                                          $endgroup$




                                                                          J, 35 34 33 bytes



                                                                          ,{~1j1(}:@#"1{:(<*-)1-|+/|)i:@-&#


                                                                          Try it online!



                                                                          Many thanks to Galen Ivanov for the algorithm.







                                                                          share|improve this answer














                                                                          share|improve this answer



                                                                          share|improve this answer








                                                                          edited 12 hours ago

























                                                                          answered 18 hours ago









                                                                          FrownyFrogFrownyFrog

                                                                          2,4971618




                                                                          2,4971618























                                                                              2












                                                                              $begingroup$


                                                                              Ruby, 95 84 75 bytes





                                                                              ->a,c{(1...2*z=a.size).map{|i|s=a[j=(z-i).abs,z]*c+c*2*j;s.reverse.chop+s}}


                                                                              Try it online!



                                                                              Takes input string as an array of chars. Returns an array of strings.






                                                                              share|improve this answer











                                                                              $endgroup$


















                                                                                2












                                                                                $begingroup$


                                                                                Ruby, 95 84 75 bytes





                                                                                ->a,c{(1...2*z=a.size).map{|i|s=a[j=(z-i).abs,z]*c+c*2*j;s.reverse.chop+s}}


                                                                                Try it online!



                                                                                Takes input string as an array of chars. Returns an array of strings.






                                                                                share|improve this answer











                                                                                $endgroup$
















                                                                                  2












                                                                                  2








                                                                                  2





                                                                                  $begingroup$


                                                                                  Ruby, 95 84 75 bytes





                                                                                  ->a,c{(1...2*z=a.size).map{|i|s=a[j=(z-i).abs,z]*c+c*2*j;s.reverse.chop+s}}


                                                                                  Try it online!



                                                                                  Takes input string as an array of chars. Returns an array of strings.






                                                                                  share|improve this answer











                                                                                  $endgroup$




                                                                                  Ruby, 95 84 75 bytes





                                                                                  ->a,c{(1...2*z=a.size).map{|i|s=a[j=(z-i).abs,z]*c+c*2*j;s.reverse.chop+s}}


                                                                                  Try it online!



                                                                                  Takes input string as an array of chars. Returns an array of strings.







                                                                                  share|improve this answer














                                                                                  share|improve this answer



                                                                                  share|improve this answer








                                                                                  edited 2 days ago

























                                                                                  answered 2 days ago









                                                                                  Kirill L.Kirill L.

                                                                                  5,9131526




                                                                                  5,9131526























                                                                                      2












                                                                                      $begingroup$


                                                                                      Wolfram Language (Mathematica), 121 bytes



                                                                                      Join[q=Table[(v=Table[#2,2(l-k)])<>Riffle[Join[(h=Reverse)[n=(g=Take)[#,-k]],g[n,-k+1]],#2]<>v,{k,l=Length@#}],Rest@h@q]&


                                                                                      Try it online!






                                                                                      share|improve this answer









                                                                                      $endgroup$


















                                                                                        2












                                                                                        $begingroup$


                                                                                        Wolfram Language (Mathematica), 121 bytes



                                                                                        Join[q=Table[(v=Table[#2,2(l-k)])<>Riffle[Join[(h=Reverse)[n=(g=Take)[#,-k]],g[n,-k+1]],#2]<>v,{k,l=Length@#}],Rest@h@q]&


                                                                                        Try it online!






                                                                                        share|improve this answer









                                                                                        $endgroup$
















                                                                                          2












                                                                                          2








                                                                                          2





                                                                                          $begingroup$


                                                                                          Wolfram Language (Mathematica), 121 bytes



                                                                                          Join[q=Table[(v=Table[#2,2(l-k)])<>Riffle[Join[(h=Reverse)[n=(g=Take)[#,-k]],g[n,-k+1]],#2]<>v,{k,l=Length@#}],Rest@h@q]&


                                                                                          Try it online!






                                                                                          share|improve this answer









                                                                                          $endgroup$




                                                                                          Wolfram Language (Mathematica), 121 bytes



                                                                                          Join[q=Table[(v=Table[#2,2(l-k)])<>Riffle[Join[(h=Reverse)[n=(g=Take)[#,-k]],g[n,-k+1]],#2]<>v,{k,l=Length@#}],Rest@h@q]&


                                                                                          Try it online!







                                                                                          share|improve this answer












                                                                                          share|improve this answer



                                                                                          share|improve this answer










                                                                                          answered 2 days ago









                                                                                          J42161217J42161217

                                                                                          13.6k21252




                                                                                          13.6k21252























                                                                                              2












                                                                                              $begingroup$


                                                                                              Japt, 16 bytes



                                                                                              Note: I'll golf it :)



                                                                                              Ôå+ ®¬qVÃùV mê ê


                                                                                              Try it online!






                                                                                              share|improve this answer









                                                                                              $endgroup$













                                                                                              • $begingroup$
                                                                                                It's fairly similar to the other Japt answer, but in a different order, isn't it? I don't know Japt, but I see similar characters in both answers. ;)
                                                                                                $endgroup$
                                                                                                – Kevin Cruijssen
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen Yeah, both are almost the same, for now
                                                                                                $endgroup$
                                                                                                – Luis felipe De jesus Munoz
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen, Luis developed this independently from my solution.
                                                                                                $endgroup$
                                                                                                – Shaggy
                                                                                                2 days ago
















                                                                                              2












                                                                                              $begingroup$


                                                                                              Japt, 16 bytes



                                                                                              Note: I'll golf it :)



                                                                                              Ôå+ ®¬qVÃùV mê ê


                                                                                              Try it online!






                                                                                              share|improve this answer









                                                                                              $endgroup$













                                                                                              • $begingroup$
                                                                                                It's fairly similar to the other Japt answer, but in a different order, isn't it? I don't know Japt, but I see similar characters in both answers. ;)
                                                                                                $endgroup$
                                                                                                – Kevin Cruijssen
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen Yeah, both are almost the same, for now
                                                                                                $endgroup$
                                                                                                – Luis felipe De jesus Munoz
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen, Luis developed this independently from my solution.
                                                                                                $endgroup$
                                                                                                – Shaggy
                                                                                                2 days ago














                                                                                              2












                                                                                              2








                                                                                              2





                                                                                              $begingroup$


                                                                                              Japt, 16 bytes



                                                                                              Note: I'll golf it :)



                                                                                              Ôå+ ®¬qVÃùV mê ê


                                                                                              Try it online!






                                                                                              share|improve this answer









                                                                                              $endgroup$




                                                                                              Japt, 16 bytes



                                                                                              Note: I'll golf it :)



                                                                                              Ôå+ ®¬qVÃùV mê ê


                                                                                              Try it online!







                                                                                              share|improve this answer












                                                                                              share|improve this answer



                                                                                              share|improve this answer










                                                                                              answered 2 days ago









                                                                                              Luis felipe De jesus MunozLuis felipe De jesus Munoz

                                                                                              5,69821671




                                                                                              5,69821671












                                                                                              • $begingroup$
                                                                                                It's fairly similar to the other Japt answer, but in a different order, isn't it? I don't know Japt, but I see similar characters in both answers. ;)
                                                                                                $endgroup$
                                                                                                – Kevin Cruijssen
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen Yeah, both are almost the same, for now
                                                                                                $endgroup$
                                                                                                – Luis felipe De jesus Munoz
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen, Luis developed this independently from my solution.
                                                                                                $endgroup$
                                                                                                – Shaggy
                                                                                                2 days ago


















                                                                                              • $begingroup$
                                                                                                It's fairly similar to the other Japt answer, but in a different order, isn't it? I don't know Japt, but I see similar characters in both answers. ;)
                                                                                                $endgroup$
                                                                                                – Kevin Cruijssen
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen Yeah, both are almost the same, for now
                                                                                                $endgroup$
                                                                                                – Luis felipe De jesus Munoz
                                                                                                2 days ago










                                                                                              • $begingroup$
                                                                                                @KevinCruijssen, Luis developed this independently from my solution.
                                                                                                $endgroup$
                                                                                                – Shaggy
                                                                                                2 days ago
















                                                                                              $begingroup$
                                                                                              It's fairly similar to the other Japt answer, but in a different order, isn't it? I don't know Japt, but I see similar characters in both answers. ;)
                                                                                              $endgroup$
                                                                                              – Kevin Cruijssen
                                                                                              2 days ago




                                                                                              $begingroup$
                                                                                              It's fairly similar to the other Japt answer, but in a different order, isn't it? I don't know Japt, but I see similar characters in both answers. ;)
                                                                                              $endgroup$
                                                                                              – Kevin Cruijssen
                                                                                              2 days ago












                                                                                              $begingroup$
                                                                                              @KevinCruijssen Yeah, both are almost the same, for now
                                                                                              $endgroup$
                                                                                              – Luis felipe De jesus Munoz
                                                                                              2 days ago




                                                                                              $begingroup$
                                                                                              @KevinCruijssen Yeah, both are almost the same, for now
                                                                                              $endgroup$
                                                                                              – Luis felipe De jesus Munoz
                                                                                              2 days ago












                                                                                              $begingroup$
                                                                                              @KevinCruijssen, Luis developed this independently from my solution.
                                                                                              $endgroup$
                                                                                              – Shaggy
                                                                                              2 days ago




                                                                                              $begingroup$
                                                                                              @KevinCruijssen, Luis developed this independently from my solution.
                                                                                              $endgroup$
                                                                                              – Shaggy
                                                                                              2 days ago











                                                                                              2












                                                                                              $begingroup$


                                                                                              PowerShell, 120 bytes





                                                                                              param($s,$c)($s,(($l=$s.length-1)..0+1..$l|%{($x=$c*(2*$_))+($s[($_,($l..$_+($_+1)..$l))[$_-ne$l]]-join$c)+$x}))[$l-gt0]


                                                                                              Try it online!



                                                                                              Some days, having index ranges instead of slices really hurts. Today is one of those days. Due to conjoined ranges messing up when dealing with single elements (e.g. returning 0..0+1..0), special-casing is used to avoid it altogether (at the cost of many bytes).






                                                                                              share|improve this answer











                                                                                              $endgroup$


















                                                                                                2












                                                                                                $begingroup$


                                                                                                PowerShell, 120 bytes





                                                                                                param($s,$c)($s,(($l=$s.length-1)..0+1..$l|%{($x=$c*(2*$_))+($s[($_,($l..$_+($_+1)..$l))[$_-ne$l]]-join$c)+$x}))[$l-gt0]


                                                                                                Try it online!



                                                                                                Some days, having index ranges instead of slices really hurts. Today is one of those days. Due to conjoined ranges messing up when dealing with single elements (e.g. returning 0..0+1..0), special-casing is used to avoid it altogether (at the cost of many bytes).






                                                                                                share|improve this answer











                                                                                                $endgroup$
















                                                                                                  2












                                                                                                  2








                                                                                                  2





                                                                                                  $begingroup$


                                                                                                  PowerShell, 120 bytes





                                                                                                  param($s,$c)($s,(($l=$s.length-1)..0+1..$l|%{($x=$c*(2*$_))+($s[($_,($l..$_+($_+1)..$l))[$_-ne$l]]-join$c)+$x}))[$l-gt0]


                                                                                                  Try it online!



                                                                                                  Some days, having index ranges instead of slices really hurts. Today is one of those days. Due to conjoined ranges messing up when dealing with single elements (e.g. returning 0..0+1..0), special-casing is used to avoid it altogether (at the cost of many bytes).






                                                                                                  share|improve this answer











                                                                                                  $endgroup$




                                                                                                  PowerShell, 120 bytes





                                                                                                  param($s,$c)($s,(($l=$s.length-1)..0+1..$l|%{($x=$c*(2*$_))+($s[($_,($l..$_+($_+1)..$l))[$_-ne$l]]-join$c)+$x}))[$l-gt0]


                                                                                                  Try it online!



                                                                                                  Some days, having index ranges instead of slices really hurts. Today is one of those days. Due to conjoined ranges messing up when dealing with single elements (e.g. returning 0..0+1..0), special-casing is used to avoid it altogether (at the cost of many bytes).







                                                                                                  share|improve this answer














                                                                                                  share|improve this answer



                                                                                                  share|improve this answer








                                                                                                  edited 2 days ago

























                                                                                                  answered 2 days ago









                                                                                                  VeskahVeskah

                                                                                                  1,155214




                                                                                                  1,155214























                                                                                                      2












                                                                                                      $begingroup$


                                                                                                      Japt, 15 bytes



                                                                                                      Ôå+ ê ®ê ¬qV
                                                                                                      ûV


                                                                                                      Try it






                                                                                                      share|improve this answer











                                                                                                      $endgroup$


















                                                                                                        2












                                                                                                        $begingroup$


                                                                                                        Japt, 15 bytes



                                                                                                        Ôå+ ê ®ê ¬qV
                                                                                                        ûV


                                                                                                        Try it






                                                                                                        share|improve this answer











                                                                                                        $endgroup$
















                                                                                                          2












                                                                                                          2








                                                                                                          2





                                                                                                          $begingroup$


                                                                                                          Japt, 15 bytes



                                                                                                          Ôå+ ê ®ê ¬qV
                                                                                                          ûV


                                                                                                          Try it






                                                                                                          share|improve this answer











                                                                                                          $endgroup$




                                                                                                          Japt, 15 bytes



                                                                                                          Ôå+ ê ®ê ¬qV
                                                                                                          ûV


                                                                                                          Try it







                                                                                                          share|improve this answer














                                                                                                          share|improve this answer



                                                                                                          share|improve this answer








                                                                                                          edited 2 days ago

























                                                                                                          answered 2 days ago









                                                                                                          OliverOliver

                                                                                                          5,4001832




                                                                                                          5,4001832























                                                                                                              2












                                                                                                              $begingroup$


                                                                                                              Jelly, 11 bytes



                                                                                                              jÐƤṚzṚŒḄZŒḄ


                                                                                                              Try it online!



                                                                                                              Left argument: $s$.

                                                                                                              Right argument: $c$ (as a single character, not as a string).

                                                                                                              Output: List of Jelly strings (appears as a list of lists of 1-char Python strings, replace ŒṘ with Y to see the n-joined output).






                                                                                                              share|improve this answer









                                                                                                              $endgroup$


















                                                                                                                2












                                                                                                                $begingroup$


                                                                                                                Jelly, 11 bytes



                                                                                                                jÐƤṚzṚŒḄZŒḄ


                                                                                                                Try it online!



                                                                                                                Left argument: $s$.

                                                                                                                Right argument: $c$ (as a single character, not as a string).

                                                                                                                Output: List of Jelly strings (appears as a list of lists of 1-char Python strings, replace ŒṘ with Y to see the n-joined output).






                                                                                                                share|improve this answer









                                                                                                                $endgroup$
















                                                                                                                  2












                                                                                                                  2








                                                                                                                  2





                                                                                                                  $begingroup$


                                                                                                                  Jelly, 11 bytes



                                                                                                                  jÐƤṚzṚŒḄZŒḄ


                                                                                                                  Try it online!



                                                                                                                  Left argument: $s$.

                                                                                                                  Right argument: $c$ (as a single character, not as a string).

                                                                                                                  Output: List of Jelly strings (appears as a list of lists of 1-char Python strings, replace ŒṘ with Y to see the n-joined output).






                                                                                                                  share|improve this answer









                                                                                                                  $endgroup$




                                                                                                                  Jelly, 11 bytes



                                                                                                                  jÐƤṚzṚŒḄZŒḄ


                                                                                                                  Try it online!



                                                                                                                  Left argument: $s$.

                                                                                                                  Right argument: $c$ (as a single character, not as a string).

                                                                                                                  Output: List of Jelly strings (appears as a list of lists of 1-char Python strings, replace ŒṘ with Y to see the n-joined output).







                                                                                                                  share|improve this answer












                                                                                                                  share|improve this answer



                                                                                                                  share|improve this answer










                                                                                                                  answered 2 days ago









                                                                                                                  Erik the OutgolferErik the Outgolfer

                                                                                                                  32.9k429106




                                                                                                                  32.9k429106























                                                                                                                      2












                                                                                                                      $begingroup$


                                                                                                                      PowerShell, 82 83 bytes



                                                                                                                      +2 bytes thanks Veskah: the single character case bug fixed



                                                                                                                      -1 byte: The rule Input-string may also be a list of characters used





                                                                                                                      $c,$s=$args
                                                                                                                      ($s|%{(-join$s|% s*g $i)+$c*$i++})[($r=$i..0+1..$i)]|%{"$_"[$r]-join$c}


                                                                                                                      Try it online!



                                                                                                                      Less golfed:



                                                                                                                      $c,$s=$args
                                                                                                                      $southEast = $s|%{
                                                                                                                      (-join$s|% substring $i) + $c*$i++
                                                                                                                      }
                                                                                                                      $range=$i..0+1..$i
                                                                                                                      $southEast[$range]|%{
                                                                                                                      "$_"[$range]-join$c
                                                                                                                      }





                                                                                                                      share|improve this answer











                                                                                                                      $endgroup$









                                                                                                                      • 1




                                                                                                                        $begingroup$
                                                                                                                        Looks like this breaks for the single character case. There's just an empty line in the TIO link for ~
                                                                                                                        $endgroup$
                                                                                                                        – Veskah
                                                                                                                        2 days ago












                                                                                                                      • $begingroup$
                                                                                                                        Indeed. Thanks!
                                                                                                                        $endgroup$
                                                                                                                        – mazzy
                                                                                                                        2 days ago
















                                                                                                                      2












                                                                                                                      $begingroup$


                                                                                                                      PowerShell, 82 83 bytes



                                                                                                                      +2 bytes thanks Veskah: the single character case bug fixed



                                                                                                                      -1 byte: The rule Input-string may also be a list of characters used





                                                                                                                      $c,$s=$args
                                                                                                                      ($s|%{(-join$s|% s*g $i)+$c*$i++})[($r=$i..0+1..$i)]|%{"$_"[$r]-join$c}


                                                                                                                      Try it online!



                                                                                                                      Less golfed:



                                                                                                                      $c,$s=$args
                                                                                                                      $southEast = $s|%{
                                                                                                                      (-join$s|% substring $i) + $c*$i++
                                                                                                                      }
                                                                                                                      $range=$i..0+1..$i
                                                                                                                      $southEast[$range]|%{
                                                                                                                      "$_"[$range]-join$c
                                                                                                                      }





                                                                                                                      share|improve this answer











                                                                                                                      $endgroup$









                                                                                                                      • 1




                                                                                                                        $begingroup$
                                                                                                                        Looks like this breaks for the single character case. There's just an empty line in the TIO link for ~
                                                                                                                        $endgroup$
                                                                                                                        – Veskah
                                                                                                                        2 days ago












                                                                                                                      • $begingroup$
                                                                                                                        Indeed. Thanks!
                                                                                                                        $endgroup$
                                                                                                                        – mazzy
                                                                                                                        2 days ago














                                                                                                                      2












                                                                                                                      2








                                                                                                                      2





                                                                                                                      $begingroup$


                                                                                                                      PowerShell, 82 83 bytes



                                                                                                                      +2 bytes thanks Veskah: the single character case bug fixed



                                                                                                                      -1 byte: The rule Input-string may also be a list of characters used





                                                                                                                      $c,$s=$args
                                                                                                                      ($s|%{(-join$s|% s*g $i)+$c*$i++})[($r=$i..0+1..$i)]|%{"$_"[$r]-join$c}


                                                                                                                      Try it online!



                                                                                                                      Less golfed:



                                                                                                                      $c,$s=$args
                                                                                                                      $southEast = $s|%{
                                                                                                                      (-join$s|% substring $i) + $c*$i++
                                                                                                                      }
                                                                                                                      $range=$i..0+1..$i
                                                                                                                      $southEast[$range]|%{
                                                                                                                      "$_"[$range]-join$c
                                                                                                                      }





                                                                                                                      share|improve this answer











                                                                                                                      $endgroup$




                                                                                                                      PowerShell, 82 83 bytes



                                                                                                                      +2 bytes thanks Veskah: the single character case bug fixed



                                                                                                                      -1 byte: The rule Input-string may also be a list of characters used





                                                                                                                      $c,$s=$args
                                                                                                                      ($s|%{(-join$s|% s*g $i)+$c*$i++})[($r=$i..0+1..$i)]|%{"$_"[$r]-join$c}


                                                                                                                      Try it online!



                                                                                                                      Less golfed:



                                                                                                                      $c,$s=$args
                                                                                                                      $southEast = $s|%{
                                                                                                                      (-join$s|% substring $i) + $c*$i++
                                                                                                                      }
                                                                                                                      $range=$i..0+1..$i
                                                                                                                      $southEast[$range]|%{
                                                                                                                      "$_"[$range]-join$c
                                                                                                                      }






                                                                                                                      share|improve this answer














                                                                                                                      share|improve this answer



                                                                                                                      share|improve this answer








                                                                                                                      edited 2 days ago

























                                                                                                                      answered 2 days ago









                                                                                                                      mazzymazzy

                                                                                                                      2,9351317




                                                                                                                      2,9351317








                                                                                                                      • 1




                                                                                                                        $begingroup$
                                                                                                                        Looks like this breaks for the single character case. There's just an empty line in the TIO link for ~
                                                                                                                        $endgroup$
                                                                                                                        – Veskah
                                                                                                                        2 days ago












                                                                                                                      • $begingroup$
                                                                                                                        Indeed. Thanks!
                                                                                                                        $endgroup$
                                                                                                                        – mazzy
                                                                                                                        2 days ago














                                                                                                                      • 1




                                                                                                                        $begingroup$
                                                                                                                        Looks like this breaks for the single character case. There's just an empty line in the TIO link for ~
                                                                                                                        $endgroup$
                                                                                                                        – Veskah
                                                                                                                        2 days ago












                                                                                                                      • $begingroup$
                                                                                                                        Indeed. Thanks!
                                                                                                                        $endgroup$
                                                                                                                        – mazzy
                                                                                                                        2 days ago








                                                                                                                      1




                                                                                                                      1




                                                                                                                      $begingroup$
                                                                                                                      Looks like this breaks for the single character case. There's just an empty line in the TIO link for ~
                                                                                                                      $endgroup$
                                                                                                                      – Veskah
                                                                                                                      2 days ago






                                                                                                                      $begingroup$
                                                                                                                      Looks like this breaks for the single character case. There's just an empty line in the TIO link for ~
                                                                                                                      $endgroup$
                                                                                                                      – Veskah
                                                                                                                      2 days ago














                                                                                                                      $begingroup$
                                                                                                                      Indeed. Thanks!
                                                                                                                      $endgroup$
                                                                                                                      – mazzy
                                                                                                                      2 days ago




                                                                                                                      $begingroup$
                                                                                                                      Indeed. Thanks!
                                                                                                                      $endgroup$
                                                                                                                      – mazzy
                                                                                                                      2 days ago











                                                                                                                      2












                                                                                                                      $begingroup$


                                                                                                                      Pip, 24 20 bytes



                                                                                                                      QPRV:_JbMa@>RV,#aZDb


                                                                                                                      Use the -l flag to get human-readable output. Try it online!



                                                                                                                      Explanation



                                                                                                                      QPRV:_JbMa@>RV,#aZDb
                                                                                                                      a,b are cmdline args (implicit)
                                                                                                                      a 1st cmdline arg (the string)
                                                                                                                      # Length
                                                                                                                      , Range
                                                                                                                      RV Reverse
                                                                                                                      a@> Take slices of a starting at those indices
                                                                                                                      ZDb Zip the list of slices together, filling out missing values in
                                                                                                                      the matrix with b (the character)
                                                                                                                      M To each row, map this function:
                                                                                                                      _Jb Join on b
                                                                                                                      RV: Reverse (making top row the bottom and vice versa)
                                                                                                                      QP Quad-palindromize: reflect downward and rightward, with overlap


                                                                                                                      For example, with inputs of abcd and .:



                                                                                                                      RV,#a
                                                                                                                      [3 2 1 0]
                                                                                                                      a@>
                                                                                                                      ["d" "cd" "bcd" "abcd"]
                                                                                                                      ZDb
                                                                                                                      [['d 'c 'b 'a] ['. 'd 'c 'b] ['. '. 'd 'c] ['. '. '. 'd]]
                                                                                                                      _JbM
                                                                                                                      ["d.c.b.a" "..d.c.b" "....d.c" "......d"]
                                                                                                                      RV:
                                                                                                                      ["......d" "....d.c" "..d.c.b" "d.c.b.a"]
                                                                                                                      QP
                                                                                                                      ["......d......" "....d.c.d...." "..d.c.b.c.d.." "d.c.b.a.b.c.d" "..d.c.b.c.d.." "....d.c.d...." "......d......"]





                                                                                                                      share|improve this answer











                                                                                                                      $endgroup$


















                                                                                                                        2












                                                                                                                        $begingroup$


                                                                                                                        Pip, 24 20 bytes



                                                                                                                        QPRV:_JbMa@>RV,#aZDb


                                                                                                                        Use the -l flag to get human-readable output. Try it online!



                                                                                                                        Explanation



                                                                                                                        QPRV:_JbMa@>RV,#aZDb
                                                                                                                        a,b are cmdline args (implicit)
                                                                                                                        a 1st cmdline arg (the string)
                                                                                                                        # Length
                                                                                                                        , Range
                                                                                                                        RV Reverse
                                                                                                                        a@> Take slices of a starting at those indices
                                                                                                                        ZDb Zip the list of slices together, filling out missing values in
                                                                                                                        the matrix with b (the character)
                                                                                                                        M To each row, map this function:
                                                                                                                        _Jb Join on b
                                                                                                                        RV: Reverse (making top row the bottom and vice versa)
                                                                                                                        QP Quad-palindromize: reflect downward and rightward, with overlap


                                                                                                                        For example, with inputs of abcd and .:



                                                                                                                        RV,#a
                                                                                                                        [3 2 1 0]
                                                                                                                        a@>
                                                                                                                        ["d" "cd" "bcd" "abcd"]
                                                                                                                        ZDb
                                                                                                                        [['d 'c 'b 'a] ['. 'd 'c 'b] ['. '. 'd 'c] ['. '. '. 'd]]
                                                                                                                        _JbM
                                                                                                                        ["d.c.b.a" "..d.c.b" "....d.c" "......d"]
                                                                                                                        RV:
                                                                                                                        ["......d" "....d.c" "..d.c.b" "d.c.b.a"]
                                                                                                                        QP
                                                                                                                        ["......d......" "....d.c.d...." "..d.c.b.c.d.." "d.c.b.a.b.c.d" "..d.c.b.c.d.." "....d.c.d...." "......d......"]





                                                                                                                        share|improve this answer











                                                                                                                        $endgroup$
















                                                                                                                          2












                                                                                                                          2








                                                                                                                          2





                                                                                                                          $begingroup$


                                                                                                                          Pip, 24 20 bytes



                                                                                                                          QPRV:_JbMa@>RV,#aZDb


                                                                                                                          Use the -l flag to get human-readable output. Try it online!



                                                                                                                          Explanation



                                                                                                                          QPRV:_JbMa@>RV,#aZDb
                                                                                                                          a,b are cmdline args (implicit)
                                                                                                                          a 1st cmdline arg (the string)
                                                                                                                          # Length
                                                                                                                          , Range
                                                                                                                          RV Reverse
                                                                                                                          a@> Take slices of a starting at those indices
                                                                                                                          ZDb Zip the list of slices together, filling out missing values in
                                                                                                                          the matrix with b (the character)
                                                                                                                          M To each row, map this function:
                                                                                                                          _Jb Join on b
                                                                                                                          RV: Reverse (making top row the bottom and vice versa)
                                                                                                                          QP Quad-palindromize: reflect downward and rightward, with overlap


                                                                                                                          For example, with inputs of abcd and .:



                                                                                                                          RV,#a
                                                                                                                          [3 2 1 0]
                                                                                                                          a@>
                                                                                                                          ["d" "cd" "bcd" "abcd"]
                                                                                                                          ZDb
                                                                                                                          [['d 'c 'b 'a] ['. 'd 'c 'b] ['. '. 'd 'c] ['. '. '. 'd]]
                                                                                                                          _JbM
                                                                                                                          ["d.c.b.a" "..d.c.b" "....d.c" "......d"]
                                                                                                                          RV:
                                                                                                                          ["......d" "....d.c" "..d.c.b" "d.c.b.a"]
                                                                                                                          QP
                                                                                                                          ["......d......" "....d.c.d...." "..d.c.b.c.d.." "d.c.b.a.b.c.d" "..d.c.b.c.d.." "....d.c.d...." "......d......"]





                                                                                                                          share|improve this answer











                                                                                                                          $endgroup$




                                                                                                                          Pip, 24 20 bytes



                                                                                                                          QPRV:_JbMa@>RV,#aZDb


                                                                                                                          Use the -l flag to get human-readable output. Try it online!



                                                                                                                          Explanation



                                                                                                                          QPRV:_JbMa@>RV,#aZDb
                                                                                                                          a,b are cmdline args (implicit)
                                                                                                                          a 1st cmdline arg (the string)
                                                                                                                          # Length
                                                                                                                          , Range
                                                                                                                          RV Reverse
                                                                                                                          a@> Take slices of a starting at those indices
                                                                                                                          ZDb Zip the list of slices together, filling out missing values in
                                                                                                                          the matrix with b (the character)
                                                                                                                          M To each row, map this function:
                                                                                                                          _Jb Join on b
                                                                                                                          RV: Reverse (making top row the bottom and vice versa)
                                                                                                                          QP Quad-palindromize: reflect downward and rightward, with overlap


                                                                                                                          For example, with inputs of abcd and .:



                                                                                                                          RV,#a
                                                                                                                          [3 2 1 0]
                                                                                                                          a@>
                                                                                                                          ["d" "cd" "bcd" "abcd"]
                                                                                                                          ZDb
                                                                                                                          [['d 'c 'b 'a] ['. 'd 'c 'b] ['. '. 'd 'c] ['. '. '. 'd]]
                                                                                                                          _JbM
                                                                                                                          ["d.c.b.a" "..d.c.b" "....d.c" "......d"]
                                                                                                                          RV:
                                                                                                                          ["......d" "....d.c" "..d.c.b" "d.c.b.a"]
                                                                                                                          QP
                                                                                                                          ["......d......" "....d.c.d...." "..d.c.b.c.d.." "d.c.b.a.b.c.d" "..d.c.b.c.d.." "....d.c.d...." "......d......"]






                                                                                                                          share|improve this answer














                                                                                                                          share|improve this answer



                                                                                                                          share|improve this answer








                                                                                                                          edited yesterday

























                                                                                                                          answered yesterday









                                                                                                                          DLoscDLosc

                                                                                                                          19.3k33990




                                                                                                                          19.3k33990























                                                                                                                              2












                                                                                                                              $begingroup$


                                                                                                                              Perl 6, 79 bytes





                                                                                                                              ->c{{map {join c,g $_ X||c},g .[^*X+(^$_,)]}o*.comb}
                                                                                                                              my&g={.[$_-1...0...$_-1]}


                                                                                                                              Try it online!



                                                                                                                              Anonymous codeblock that takes input curried (like f(char)(string)) and returns a list of strings. I think a different approach would be shorter.






                                                                                                                              share|improve this answer









                                                                                                                              $endgroup$


















                                                                                                                                2












                                                                                                                                $begingroup$


                                                                                                                                Perl 6, 79 bytes





                                                                                                                                ->c{{map {join c,g $_ X||c},g .[^*X+(^$_,)]}o*.comb}
                                                                                                                                my&g={.[$_-1...0...$_-1]}


                                                                                                                                Try it online!



                                                                                                                                Anonymous codeblock that takes input curried (like f(char)(string)) and returns a list of strings. I think a different approach would be shorter.






                                                                                                                                share|improve this answer









                                                                                                                                $endgroup$
















                                                                                                                                  2












                                                                                                                                  2








                                                                                                                                  2





                                                                                                                                  $begingroup$


                                                                                                                                  Perl 6, 79 bytes





                                                                                                                                  ->c{{map {join c,g $_ X||c},g .[^*X+(^$_,)]}o*.comb}
                                                                                                                                  my&g={.[$_-1...0...$_-1]}


                                                                                                                                  Try it online!



                                                                                                                                  Anonymous codeblock that takes input curried (like f(char)(string)) and returns a list of strings. I think a different approach would be shorter.






                                                                                                                                  share|improve this answer









                                                                                                                                  $endgroup$




                                                                                                                                  Perl 6, 79 bytes





                                                                                                                                  ->c{{map {join c,g $_ X||c},g .[^*X+(^$_,)]}o*.comb}
                                                                                                                                  my&g={.[$_-1...0...$_-1]}


                                                                                                                                  Try it online!



                                                                                                                                  Anonymous codeblock that takes input curried (like f(char)(string)) and returns a list of strings. I think a different approach would be shorter.







                                                                                                                                  share|improve this answer












                                                                                                                                  share|improve this answer



                                                                                                                                  share|improve this answer










                                                                                                                                  answered 22 hours ago









                                                                                                                                  Jo KingJo King

                                                                                                                                  25.7k362129




                                                                                                                                  25.7k362129























                                                                                                                                      2












                                                                                                                                      $begingroup$


                                                                                                                                      Attache, 57 bytes



                                                                                                                                      ${q:=#x-1Bounce!Bounce@Join&y@PadLeft&y&#x=>x[q::(q::0)]}


                                                                                                                                      Try it online! Output is a list of lines.



                                                                                                                                      Explanation



                                                                                                                                      ?? parameters: x, y
                                                                                                                                      ${
                                                                                                                                      ?? q is length of x - 1
                                                                                                                                      q:=#x-1
                                                                                                                                      ?? Reflect, collapsing middle:
                                                                                                                                      Bounce!
                                                                                                                                      ?? Function:
                                                                                                                                      ?? Reflect,
                                                                                                                                      Bounce@
                                                                                                                                      ?? Joined by y,
                                                                                                                                      Join&y@
                                                                                                                                      ?? padded to the length of x with y
                                                                                                                                      PadLeft&y&#x
                                                                                                                                      ?? Mapped over
                                                                                                                                      =>
                                                                                                                                      ?? The elements of x at
                                                                                                                                      x[
                                                                                                                                      ?? decreasing range from q to
                                                                                                                                      q::(
                                                                                                                                      ?? each element in the range from q to 0
                                                                                                                                      q::0
                                                                                                                                      )
                                                                                                                                      ]
                                                                                                                                      }





                                                                                                                                      share|improve this answer









                                                                                                                                      $endgroup$


















                                                                                                                                        2












                                                                                                                                        $begingroup$


                                                                                                                                        Attache, 57 bytes



                                                                                                                                        ${q:=#x-1Bounce!Bounce@Join&y@PadLeft&y&#x=>x[q::(q::0)]}


                                                                                                                                        Try it online! Output is a list of lines.



                                                                                                                                        Explanation



                                                                                                                                        ?? parameters: x, y
                                                                                                                                        ${
                                                                                                                                        ?? q is length of x - 1
                                                                                                                                        q:=#x-1
                                                                                                                                        ?? Reflect, collapsing middle:
                                                                                                                                        Bounce!
                                                                                                                                        ?? Function:
                                                                                                                                        ?? Reflect,
                                                                                                                                        Bounce@
                                                                                                                                        ?? Joined by y,
                                                                                                                                        Join&y@
                                                                                                                                        ?? padded to the length of x with y
                                                                                                                                        PadLeft&y&#x
                                                                                                                                        ?? Mapped over
                                                                                                                                        =>
                                                                                                                                        ?? The elements of x at
                                                                                                                                        x[
                                                                                                                                        ?? decreasing range from q to
                                                                                                                                        q::(
                                                                                                                                        ?? each element in the range from q to 0
                                                                                                                                        q::0
                                                                                                                                        )
                                                                                                                                        ]
                                                                                                                                        }





                                                                                                                                        share|improve this answer









                                                                                                                                        $endgroup$
















                                                                                                                                          2












                                                                                                                                          2








                                                                                                                                          2





                                                                                                                                          $begingroup$


                                                                                                                                          Attache, 57 bytes



                                                                                                                                          ${q:=#x-1Bounce!Bounce@Join&y@PadLeft&y&#x=>x[q::(q::0)]}


                                                                                                                                          Try it online! Output is a list of lines.



                                                                                                                                          Explanation



                                                                                                                                          ?? parameters: x, y
                                                                                                                                          ${
                                                                                                                                          ?? q is length of x - 1
                                                                                                                                          q:=#x-1
                                                                                                                                          ?? Reflect, collapsing middle:
                                                                                                                                          Bounce!
                                                                                                                                          ?? Function:
                                                                                                                                          ?? Reflect,
                                                                                                                                          Bounce@
                                                                                                                                          ?? Joined by y,
                                                                                                                                          Join&y@
                                                                                                                                          ?? padded to the length of x with y
                                                                                                                                          PadLeft&y&#x
                                                                                                                                          ?? Mapped over
                                                                                                                                          =>
                                                                                                                                          ?? The elements of x at
                                                                                                                                          x[
                                                                                                                                          ?? decreasing range from q to
                                                                                                                                          q::(
                                                                                                                                          ?? each element in the range from q to 0
                                                                                                                                          q::0
                                                                                                                                          )
                                                                                                                                          ]
                                                                                                                                          }





                                                                                                                                          share|improve this answer









                                                                                                                                          $endgroup$




                                                                                                                                          Attache, 57 bytes



                                                                                                                                          ${q:=#x-1Bounce!Bounce@Join&y@PadLeft&y&#x=>x[q::(q::0)]}


                                                                                                                                          Try it online! Output is a list of lines.



                                                                                                                                          Explanation



                                                                                                                                          ?? parameters: x, y
                                                                                                                                          ${
                                                                                                                                          ?? q is length of x - 1
                                                                                                                                          q:=#x-1
                                                                                                                                          ?? Reflect, collapsing middle:
                                                                                                                                          Bounce!
                                                                                                                                          ?? Function:
                                                                                                                                          ?? Reflect,
                                                                                                                                          Bounce@
                                                                                                                                          ?? Joined by y,
                                                                                                                                          Join&y@
                                                                                                                                          ?? padded to the length of x with y
                                                                                                                                          PadLeft&y&#x
                                                                                                                                          ?? Mapped over
                                                                                                                                          =>
                                                                                                                                          ?? The elements of x at
                                                                                                                                          x[
                                                                                                                                          ?? decreasing range from q to
                                                                                                                                          q::(
                                                                                                                                          ?? each element in the range from q to 0
                                                                                                                                          q::0
                                                                                                                                          )
                                                                                                                                          ]
                                                                                                                                          }






                                                                                                                                          share|improve this answer












                                                                                                                                          share|improve this answer



                                                                                                                                          share|improve this answer










                                                                                                                                          answered 17 hours ago









                                                                                                                                          Conor O'BrienConor O'Brien

                                                                                                                                          30.5k264162




                                                                                                                                          30.5k264162























                                                                                                                                              1












                                                                                                                                              $begingroup$


                                                                                                                                              Perl 5 with -lF, -M5.010, 71 bytes





                                                                                                                                              $"=<>;$A=abs,$_="@F[$A..$#F]".$"x($A*2),/./,say reverse.$' for-$#F..$#F


                                                                                                                                              Try it online!






                                                                                                                                              share|improve this answer









                                                                                                                                              $endgroup$


















                                                                                                                                                1












                                                                                                                                                $begingroup$


                                                                                                                                                Perl 5 with -lF, -M5.010, 71 bytes





                                                                                                                                                $"=<>;$A=abs,$_="@F[$A..$#F]".$"x($A*2),/./,say reverse.$' for-$#F..$#F


                                                                                                                                                Try it online!






                                                                                                                                                share|improve this answer









                                                                                                                                                $endgroup$
















                                                                                                                                                  1












                                                                                                                                                  1








                                                                                                                                                  1





                                                                                                                                                  $begingroup$


                                                                                                                                                  Perl 5 with -lF, -M5.010, 71 bytes





                                                                                                                                                  $"=<>;$A=abs,$_="@F[$A..$#F]".$"x($A*2),/./,say reverse.$' for-$#F..$#F


                                                                                                                                                  Try it online!






                                                                                                                                                  share|improve this answer









                                                                                                                                                  $endgroup$




                                                                                                                                                  Perl 5 with -lF, -M5.010, 71 bytes





                                                                                                                                                  $"=<>;$A=abs,$_="@F[$A..$#F]".$"x($A*2),/./,say reverse.$' for-$#F..$#F


                                                                                                                                                  Try it online!







                                                                                                                                                  share|improve this answer












                                                                                                                                                  share|improve this answer



                                                                                                                                                  share|improve this answer










                                                                                                                                                  answered 2 days ago









                                                                                                                                                  Dom HastingsDom Hastings

                                                                                                                                                  14.9k33270




                                                                                                                                                  14.9k33270























                                                                                                                                                      1












                                                                                                                                                      $begingroup$


                                                                                                                                                      C# (Visual C# Interactive Compiler), 249 bytes





                                                                                                                                                      s=>c=>{var r=s.Select((x,_)=>{int k=s.Length;var m=s.Substring(_,k-_).Aggregate("",(a,b)=>a+c+b);return new string(m.Skip(2).Reverse().Concat(m.Skip(1)).ToArray()).PadLeft(2*k-3+m.Length,c).PadRight(4*k-3,c);});return r.Skip(1).Reverse().Concat(r);}


                                                                                                                                                      Try it online!



                                                                                                                                                      This must be improvable...






                                                                                                                                                      share|improve this answer









                                                                                                                                                      $endgroup$


















                                                                                                                                                        1












                                                                                                                                                        $begingroup$


                                                                                                                                                        C# (Visual C# Interactive Compiler), 249 bytes





                                                                                                                                                        s=>c=>{var r=s.Select((x,_)=>{int k=s.Length;var m=s.Substring(_,k-_).Aggregate("",(a,b)=>a+c+b);return new string(m.Skip(2).Reverse().Concat(m.Skip(1)).ToArray()).PadLeft(2*k-3+m.Length,c).PadRight(4*k-3,c);});return r.Skip(1).Reverse().Concat(r);}


                                                                                                                                                        Try it online!



                                                                                                                                                        This must be improvable...






                                                                                                                                                        share|improve this answer









                                                                                                                                                        $endgroup$
















                                                                                                                                                          1












                                                                                                                                                          1








                                                                                                                                                          1





                                                                                                                                                          $begingroup$


                                                                                                                                                          C# (Visual C# Interactive Compiler), 249 bytes





                                                                                                                                                          s=>c=>{var r=s.Select((x,_)=>{int k=s.Length;var m=s.Substring(_,k-_).Aggregate("",(a,b)=>a+c+b);return new string(m.Skip(2).Reverse().Concat(m.Skip(1)).ToArray()).PadLeft(2*k-3+m.Length,c).PadRight(4*k-3,c);});return r.Skip(1).Reverse().Concat(r);}


                                                                                                                                                          Try it online!



                                                                                                                                                          This must be improvable...






                                                                                                                                                          share|improve this answer









                                                                                                                                                          $endgroup$




                                                                                                                                                          C# (Visual C# Interactive Compiler), 249 bytes





                                                                                                                                                          s=>c=>{var r=s.Select((x,_)=>{int k=s.Length;var m=s.Substring(_,k-_).Aggregate("",(a,b)=>a+c+b);return new string(m.Skip(2).Reverse().Concat(m.Skip(1)).ToArray()).PadLeft(2*k-3+m.Length,c).PadRight(4*k-3,c);});return r.Skip(1).Reverse().Concat(r);}


                                                                                                                                                          Try it online!



                                                                                                                                                          This must be improvable...







                                                                                                                                                          share|improve this answer












                                                                                                                                                          share|improve this answer



                                                                                                                                                          share|improve this answer










                                                                                                                                                          answered yesterday









                                                                                                                                                          Expired DataExpired Data

                                                                                                                                                          4186




                                                                                                                                                          4186























                                                                                                                                                              1












                                                                                                                                                              $begingroup$


                                                                                                                                                              Canvas, 8 bytes



                                                                                                                                                              R±[]/┼┼*


                                                                                                                                                              Try it here!



                                                                                                                                                              7 bytes but mirrors a bunch of chars.






                                                                                                                                                              share|improve this answer









                                                                                                                                                              $endgroup$


















                                                                                                                                                                1












                                                                                                                                                                $begingroup$


                                                                                                                                                                Canvas, 8 bytes



                                                                                                                                                                R±[]/┼┼*


                                                                                                                                                                Try it here!



                                                                                                                                                                7 bytes but mirrors a bunch of chars.






                                                                                                                                                                share|improve this answer









                                                                                                                                                                $endgroup$
















                                                                                                                                                                  1












                                                                                                                                                                  1








                                                                                                                                                                  1





                                                                                                                                                                  $begingroup$


                                                                                                                                                                  Canvas, 8 bytes



                                                                                                                                                                  R±[]/┼┼*


                                                                                                                                                                  Try it here!



                                                                                                                                                                  7 bytes but mirrors a bunch of chars.






                                                                                                                                                                  share|improve this answer









                                                                                                                                                                  $endgroup$




                                                                                                                                                                  Canvas, 8 bytes



                                                                                                                                                                  R±[]/┼┼*


                                                                                                                                                                  Try it here!



                                                                                                                                                                  7 bytes but mirrors a bunch of chars.







                                                                                                                                                                  share|improve this answer












                                                                                                                                                                  share|improve this answer



                                                                                                                                                                  share|improve this answer










                                                                                                                                                                  answered yesterday









                                                                                                                                                                  dzaimadzaima

                                                                                                                                                                  15.9k22059




                                                                                                                                                                  15.9k22059























                                                                                                                                                                      1












                                                                                                                                                                      $begingroup$


                                                                                                                                                                      JavaScript (Node.js), 143 bytes



                                                                                                                                                                      (s,c)=>{q=Math.abs;m=(l=s.length*4-3)-1;for(i=j=0;j<l/2;(i=(++i)%l)?0:++j){p=s[q(i-m/2)/2+q(j-m/4)];process.stdout.write((i?"":"n")+(p?
                                                                                                                                                                      p:c))}}


                                                                                                                                                                      Try it online!



                                                                                                                                                                      A bit more thinkering would lead to calculating in terms of a one-dimensional array, and less bytes.






                                                                                                                                                                      share|improve this answer









                                                                                                                                                                      $endgroup$


















                                                                                                                                                                        1












                                                                                                                                                                        $begingroup$


                                                                                                                                                                        JavaScript (Node.js), 143 bytes



                                                                                                                                                                        (s,c)=>{q=Math.abs;m=(l=s.length*4-3)-1;for(i=j=0;j<l/2;(i=(++i)%l)?0:++j){p=s[q(i-m/2)/2+q(j-m/4)];process.stdout.write((i?"":"n")+(p?
                                                                                                                                                                        p:c))}}


                                                                                                                                                                        Try it online!



                                                                                                                                                                        A bit more thinkering would lead to calculating in terms of a one-dimensional array, and less bytes.






                                                                                                                                                                        share|improve this answer









                                                                                                                                                                        $endgroup$
















                                                                                                                                                                          1












                                                                                                                                                                          1








                                                                                                                                                                          1





                                                                                                                                                                          $begingroup$


                                                                                                                                                                          JavaScript (Node.js), 143 bytes



                                                                                                                                                                          (s,c)=>{q=Math.abs;m=(l=s.length*4-3)-1;for(i=j=0;j<l/2;(i=(++i)%l)?0:++j){p=s[q(i-m/2)/2+q(j-m/4)];process.stdout.write((i?"":"n")+(p?
                                                                                                                                                                          p:c))}}


                                                                                                                                                                          Try it online!



                                                                                                                                                                          A bit more thinkering would lead to calculating in terms of a one-dimensional array, and less bytes.






                                                                                                                                                                          share|improve this answer









                                                                                                                                                                          $endgroup$




                                                                                                                                                                          JavaScript (Node.js), 143 bytes



                                                                                                                                                                          (s,c)=>{q=Math.abs;m=(l=s.length*4-3)-1;for(i=j=0;j<l/2;(i=(++i)%l)?0:++j){p=s[q(i-m/2)/2+q(j-m/4)];process.stdout.write((i?"":"n")+(p?
                                                                                                                                                                          p:c))}}


                                                                                                                                                                          Try it online!



                                                                                                                                                                          A bit more thinkering would lead to calculating in terms of a one-dimensional array, and less bytes.







                                                                                                                                                                          share|improve this answer












                                                                                                                                                                          share|improve this answer



                                                                                                                                                                          share|improve this answer










                                                                                                                                                                          answered yesterday









                                                                                                                                                                          Igor SowinskiIgor Sowinski

                                                                                                                                                                          291




                                                                                                                                                                          291























                                                                                                                                                                              1












                                                                                                                                                                              $begingroup$

                                                                                                                                                                              TSQL query, 200 bytes



                                                                                                                                                                              In MS-SQL Server Management Studio press Ctrl-T before running this query, this will change the output to text.



                                                                                                                                                                              This script is building up the output from left to right in one long "string", calculating the value to put in each position. The output is limited to 4096 characters.



                                                                                                                                                                              Golfed:



                                                                                                                                                                              USE master
                                                                                                                                                                              DECLARE
                                                                                                                                                                              @y char='.',
                                                                                                                                                                              @ varchar(20) = 'abcd'

                                                                                                                                                                              SELECT
                                                                                                                                                                              string_agg(iif(h>k/2,@y,substring(@,h+1,1),@y)+iif((n+1)%k=0,char(13)),'')FROM(SELECT
                                                                                                                                                                              abs(k/2-n%k)+abs(k/2-n/k)h,*FROM(SELECT
                                                                                                                                                                              number n,len(@)*2-1k,*FROM spt_values)c)d
                                                                                                                                                                              WHERE n<k*k and'P'=type


                                                                                                                                                                              Ungolfed:



                                                                                                                                                                              USE master
                                                                                                                                                                              DECLARE
                                                                                                                                                                              @y char='.',
                                                                                                                                                                              @ varchar(32) = 'abcd'

                                                                                                                                                                              SELECT
                                                                                                                                                                              string_agg(iif(h>k/2,@y,substring(@,h+1,1))+iif((n+1)%k=0,char(13),@y),'')
                                                                                                                                                                              FROM
                                                                                                                                                                              (
                                                                                                                                                                              SELECT abs(k/2-n%k)+abs(k/2-n/k)h,*
                                                                                                                                                                              FROM
                                                                                                                                                                              (
                                                                                                                                                                              SELECT number n,len(@)*2-1k,*
                                                                                                                                                                              FROM spt_values
                                                                                                                                                                              )c
                                                                                                                                                                              WHERE n<k*k and'P'=type
                                                                                                                                                                              )d


                                                                                                                                                                              I had to make some changes to format the output in the online version.



                                                                                                                                                                              Try it online






                                                                                                                                                                              share|improve this answer











                                                                                                                                                                              $endgroup$


















                                                                                                                                                                                1












                                                                                                                                                                                $begingroup$

                                                                                                                                                                                TSQL query, 200 bytes



                                                                                                                                                                                In MS-SQL Server Management Studio press Ctrl-T before running this query, this will change the output to text.



                                                                                                                                                                                This script is building up the output from left to right in one long "string", calculating the value to put in each position. The output is limited to 4096 characters.



                                                                                                                                                                                Golfed:



                                                                                                                                                                                USE master
                                                                                                                                                                                DECLARE
                                                                                                                                                                                @y char='.',
                                                                                                                                                                                @ varchar(20) = 'abcd'

                                                                                                                                                                                SELECT
                                                                                                                                                                                string_agg(iif(h>k/2,@y,substring(@,h+1,1),@y)+iif((n+1)%k=0,char(13)),'')FROM(SELECT
                                                                                                                                                                                abs(k/2-n%k)+abs(k/2-n/k)h,*FROM(SELECT
                                                                                                                                                                                number n,len(@)*2-1k,*FROM spt_values)c)d
                                                                                                                                                                                WHERE n<k*k and'P'=type


                                                                                                                                                                                Ungolfed:



                                                                                                                                                                                USE master
                                                                                                                                                                                DECLARE
                                                                                                                                                                                @y char='.',
                                                                                                                                                                                @ varchar(32) = 'abcd'

                                                                                                                                                                                SELECT
                                                                                                                                                                                string_agg(iif(h>k/2,@y,substring(@,h+1,1))+iif((n+1)%k=0,char(13),@y),'')
                                                                                                                                                                                FROM
                                                                                                                                                                                (
                                                                                                                                                                                SELECT abs(k/2-n%k)+abs(k/2-n/k)h,*
                                                                                                                                                                                FROM
                                                                                                                                                                                (
                                                                                                                                                                                SELECT number n,len(@)*2-1k,*
                                                                                                                                                                                FROM spt_values
                                                                                                                                                                                )c
                                                                                                                                                                                WHERE n<k*k and'P'=type
                                                                                                                                                                                )d


                                                                                                                                                                                I had to make some changes to format the output in the online version.



                                                                                                                                                                                Try it online






                                                                                                                                                                                share|improve this answer











                                                                                                                                                                                $endgroup$
















                                                                                                                                                                                  1












                                                                                                                                                                                  1








                                                                                                                                                                                  1





                                                                                                                                                                                  $begingroup$

                                                                                                                                                                                  TSQL query, 200 bytes



                                                                                                                                                                                  In MS-SQL Server Management Studio press Ctrl-T before running this query, this will change the output to text.



                                                                                                                                                                                  This script is building up the output from left to right in one long "string", calculating the value to put in each position. The output is limited to 4096 characters.



                                                                                                                                                                                  Golfed:



                                                                                                                                                                                  USE master
                                                                                                                                                                                  DECLARE
                                                                                                                                                                                  @y char='.',
                                                                                                                                                                                  @ varchar(20) = 'abcd'

                                                                                                                                                                                  SELECT
                                                                                                                                                                                  string_agg(iif(h>k/2,@y,substring(@,h+1,1),@y)+iif((n+1)%k=0,char(13)),'')FROM(SELECT
                                                                                                                                                                                  abs(k/2-n%k)+abs(k/2-n/k)h,*FROM(SELECT
                                                                                                                                                                                  number n,len(@)*2-1k,*FROM spt_values)c)d
                                                                                                                                                                                  WHERE n<k*k and'P'=type


                                                                                                                                                                                  Ungolfed:



                                                                                                                                                                                  USE master
                                                                                                                                                                                  DECLARE
                                                                                                                                                                                  @y char='.',
                                                                                                                                                                                  @ varchar(32) = 'abcd'

                                                                                                                                                                                  SELECT
                                                                                                                                                                                  string_agg(iif(h>k/2,@y,substring(@,h+1,1))+iif((n+1)%k=0,char(13),@y),'')
                                                                                                                                                                                  FROM
                                                                                                                                                                                  (
                                                                                                                                                                                  SELECT abs(k/2-n%k)+abs(k/2-n/k)h,*
                                                                                                                                                                                  FROM
                                                                                                                                                                                  (
                                                                                                                                                                                  SELECT number n,len(@)*2-1k,*
                                                                                                                                                                                  FROM spt_values
                                                                                                                                                                                  )c
                                                                                                                                                                                  WHERE n<k*k and'P'=type
                                                                                                                                                                                  )d


                                                                                                                                                                                  I had to make some changes to format the output in the online version.



                                                                                                                                                                                  Try it online






                                                                                                                                                                                  share|improve this answer











                                                                                                                                                                                  $endgroup$



                                                                                                                                                                                  TSQL query, 200 bytes



                                                                                                                                                                                  In MS-SQL Server Management Studio press Ctrl-T before running this query, this will change the output to text.



                                                                                                                                                                                  This script is building up the output from left to right in one long "string", calculating the value to put in each position. The output is limited to 4096 characters.



                                                                                                                                                                                  Golfed:



                                                                                                                                                                                  USE master
                                                                                                                                                                                  DECLARE
                                                                                                                                                                                  @y char='.',
                                                                                                                                                                                  @ varchar(20) = 'abcd'

                                                                                                                                                                                  SELECT
                                                                                                                                                                                  string_agg(iif(h>k/2,@y,substring(@,h+1,1),@y)+iif((n+1)%k=0,char(13)),'')FROM(SELECT
                                                                                                                                                                                  abs(k/2-n%k)+abs(k/2-n/k)h,*FROM(SELECT
                                                                                                                                                                                  number n,len(@)*2-1k,*FROM spt_values)c)d
                                                                                                                                                                                  WHERE n<k*k and'P'=type


                                                                                                                                                                                  Ungolfed:



                                                                                                                                                                                  USE master
                                                                                                                                                                                  DECLARE
                                                                                                                                                                                  @y char='.',
                                                                                                                                                                                  @ varchar(32) = 'abcd'

                                                                                                                                                                                  SELECT
                                                                                                                                                                                  string_agg(iif(h>k/2,@y,substring(@,h+1,1))+iif((n+1)%k=0,char(13),@y),'')
                                                                                                                                                                                  FROM
                                                                                                                                                                                  (
                                                                                                                                                                                  SELECT abs(k/2-n%k)+abs(k/2-n/k)h,*
                                                                                                                                                                                  FROM
                                                                                                                                                                                  (
                                                                                                                                                                                  SELECT number n,len(@)*2-1k,*
                                                                                                                                                                                  FROM spt_values
                                                                                                                                                                                  )c
                                                                                                                                                                                  WHERE n<k*k and'P'=type
                                                                                                                                                                                  )d


                                                                                                                                                                                  I had to make some changes to format the output in the online version.



                                                                                                                                                                                  Try it online







                                                                                                                                                                                  share|improve this answer














                                                                                                                                                                                  share|improve this answer



                                                                                                                                                                                  share|improve this answer








                                                                                                                                                                                  edited 13 hours ago

























                                                                                                                                                                                  answered yesterday









                                                                                                                                                                                  t-clausen.dkt-clausen.dk

                                                                                                                                                                                  2,034314




                                                                                                                                                                                  2,034314






























                                                                                                                                                                                      draft saved

                                                                                                                                                                                      draft discarded




















































                                                                                                                                                                                      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%2f182212%2flay-out-the-carpet%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

                                                                                                                                                                                      How did Captain America manage to do this?

                                                                                                                                                                                      迪纳利

                                                                                                                                                                                      南乌拉尔铁路局