ผู้สร้างเพชร +


27

ถาม:

รับจำนวนเต็มnเป็นอินพุต สร้างเพชรที่เป็น 2x nจำนวนที่กำหนด

อินพุต:

อินพุตเป็นจำนวนเต็มnและ 2 <n ≤ 3000

ผลผลิต:

เอาท์พุทจะเป็นสตริงและมันจะอยู่ในรูปแบบของเพชรที่+มีบรรทัดเพิ่มที่เริ่มแสดงการnใช้+

ตัวอย่าง :

D (3):

+++
  +
 +++
+++++
+++++
 +++
  +

D (5):

+++++
    +
   +++
  +++++
 +++++++
+++++++++
+++++++++
 +++++++
  +++++
   +++
    +

D (6): 

++++++
     +
    +++
   +++++
  +++++++
 +++++++++
+++++++++++
+++++++++++
 +++++++++
  +++++++
   +++++
    +++
     +

เกณฑ์การชนะ:

นี่คือดังนั้นโค้ดที่สั้นที่สุดในหน่วยไบต์สำหรับภาษาการเขียนโปรแกรมแต่ละภาษาจะชนะ


1
ขอให้เรารับnเอกภาพด้วยไหม?
อดัม

3
…ใช้+เป็นเครื่องหมายรวมไหม?
อดัม

1
คุณสามารถเพิ่มกรณีทดสอบnได้ที่ไหน
Shaggy

2
@Shaggy: ทำไมล่ะ ฉันจะเพิ่มที่ทันที ขอบคุณ
Muhammad Salman

คำตอบ:


33

brainfuck , 151 139 ไบต์

,[.[<]<+[>>]++++[-<++++++++>],]<[<]<<<++++++++++.>>[[>]>[-<+>]>[-<+>]>>[.>>]<<[<]<<.<<[..<<]<.>>-]>[[>]>[.>>]<<[<<]>.>>[..>>]<<,<[<]<<.>>>]

ลองออนไลน์!

ใช้อินพุตผ่าน unary โดยมี+เครื่องหมายเป็นเครื่องหมาย ( อนุญาตโดยผู้โพสต์ ) ตัดสินใจที่จะทำสิ่งนี้ใหม่อีกครั้งเพราะฉันคิดว่าอันเก่านั้นยาวกว่านี้นิดหน่อย (แม้ว่าอันนี้จะเกินไป!)

รุ่นเก่า (151 ไบต์):

>--[>+<++++++]<[->+>.<<]++++++++[-<+<++++>>]<++>>[<<.>>-[-<+<<.>>>]<[->+<]>>>+[-<.>>+<]>+[-<+>]<<<]>>[<<<<.>>[-<+<<.>>>]<[->+<]>+>>-[-<.>>+<]>-[-<+>]<]

ลองออนไลน์!

รับอินพุตเป็นเซลล์เริ่มต้น ฉันไม่สามารถคิดวิธีที่จะใช้ประโยชน์จากครึ่งแรกเพื่อช่วยในการที่สองดังนั้นจึงมีการวนรอบสำหรับแต่ละคน

มันทำงานอย่างไร:

 >--[>+<++++++]  Create 43 ('+') two space to the left of n
 <[->+>.<<]      Print n '+'s while preserving n
 ++++++++[-<+<++++>>]<++  Create 32 (' ') and 10 ('\n')
                         Tape: 32 10 0 n 43 t
 >>
 [ Loop over the first half of the diamond
   <<.>>         Print a newline
   -[-<+<<.>>>]  Decrement n and print n spaces
   <[->+<]       Restore n
   >>>+[-<.>>+<] Increment t and print t '+'s
   >+[-<+>]<<<   Increment t again and restore it
]>>
[ Loop over the second half
  <<<<.>>        Print a newline
  [-<+<<.>>>]<   Print n spaces
  [->+<]>+       Restore and increment n
  >>-[-<.>>+<]   Decrement t and print t '+'s
  >-[-<+>]<      Decrement t again and restore it
]

และเพื่อความสนุกสนาน:

+++++++++
        >
       --[
      >+<++
     ++++]<[
    ->+>.<<]+
   +++++++[-<+
  <++++>>]<++>>
 [<<.>>-[-<+<<.>
>>]<[->+<]>>>+[-<
.>>+<]>+[-<+>]<<<
 ]>>[<<<<.>>[-<+
  <<.>>>]<[->+<
   ]>+>>-[-<.>
    >+<]>-[-<
     +>]<]++
      +++++
       +++
        +

ลองออนไลน์!


2
คุณได้รับการโหวตของฉันสำหรับสิ่งที่สนุก คำตอบที่ยอดเยี่ยม
Muhammad Salman

15

Canvas ขนาด 9 ไบต์

+×O{+×]±╪

ลองที่นี่!

คำอธิบาย (อักขระบางตัวถูกแทนที่เพื่อดู monospace):

+×O{+×]±╪
+×         repeat "+" input times
  O        output that
   {  ]    map over 1..input
    +×       repeat "+" that many times
       ±   interpret the array as a 2D string, and reverse it
        ╪  quad-palindromize with 1 horizontal overlap and 0 vertical overlap

12

Python 3 , 95 94 75 ไบต์

def f(n):a=[' '*(n+~i)+'+'*(i-~i)for i in range(n)];return['+'*n]+a+a[::-1]

ลองออนไลน์!


ความพยายามครั้งแรกของฉันในกอล์ฟ

แก้ไข: บันทึกแล้ว 1 ไบต์ขอบคุณ Kevin Cruijssen

แก้ไข: ลบความเข้าใจผิดเกี่ยวกับจำนวนไบต์

แก้ไข: บันทึกอีกหลายไบต์ด้วย Jo King และ user202729


5
ยินดีต้อนรับสู่ PPCG! :)
Shaggy

1
นอกจากนี้หากคุณเปลี่ยนเป็น Python 2 print'\n'.join(['+'*n]+a+a[::-1])สามารถใช้งานได้โดยไม่ต้องใช้วงเล็บเพื่อบันทึกอีก 2 ไบต์ +1 จากฉันแม้ว่า คำตอบแรกที่ดี :)
Kevin Cruijssen

1
การส่งสามารถเป็นโปรแกรมเต็มรูปแบบ (ไม่มีส่วนหัว / ส่วนท้าย) หรือฟังก์ชั่น (ซึ่งจะต้องกำหนดฟังก์ชั่น (หรือการอ้างอิงในกรณีของฟังก์ชั่นที่ไม่ระบุชื่อเช่นlambda))
user202729

2
และ2*i+1 == i+i+1 == i-(-i-1) == i-~i.
user202729

2
คำตอบแรกที่ดี ทำได้ดี.
ElPedro

8

05AB1E , 14 ไบต์

'+×sL·<'+×∊.c»

ลองออนไลน์!

คำอธิบาย

'+×              # push "+" repeated <input> times
   sL            # push range [1 ... input]
     ·<          # multiply each element by 2 and decrement (x*2-1)
       '+×       # replace each number with the corresponding number of "+"'s
          ∊      # mirror vertically
           .c    # center
             »   # join with the "+"-row created at the start

ยัง 14 ไบต์: L‚˜'+×ćs.∞∊.c»


1
'+×s·ÅÉ'+×∊.C»การใช้ÅÉเป็นอีก
Magic Octopus Urn

@MagicOctopusUrn: ความคิดเริ่มต้นของฉันใช้อยู่ÅÉแต่ฉันทิ้งเพราะฉันไม่ได้คิดที่·จะใช้เพื่อให้มันทำงาน
Emigna

5

Python 3 , 79 78 ไบต์

def f(n):x=[('++'*i+'+').center(n*2)for i in range(n)];return[n*'+']+x+x[::-1]

ลองออนไลน์!

ขอบคุณเคล็ดลับนี้สำหรับการเล่น Pythonสำหรับตอบคำถามเกี่ยวกับการใช้.centerงาน ส่งคืนรายการของสตริง


ส่วนท้ายไม่รวมอยู่ในจำนวนไบต์หรือไม่ ในกรณีนั้นโซลูชันของฉันคือ 58 ไบต์
สูงสุด

@maxb หากคุณใช้ฟังก์ชั่นโดยปกติแล้วมันก็โอเคที่จะคืนค่าเอาต์พุตเป็นรายการบรรทัด
Jo King

@ โจกิ้ง: Hum อาจต้องการตรวจสอบ lil หรือไม่ ลอง
มูฮัมหมัดซาลมาน

@JoKing: มันล้มเหลว
มูฮัมหมัดซาลมาน

1
@MuhammadSalman 1. คุณกำลังทดสอบฟังก์ชันของฉันสำหรับ n = 3 ต่อการส่งคืนสำหรับ n = 5, 2 คุณมีบรรทัดใหม่ต่อท้ายในการทดสอบและ 3 รหัสของฉันมีช่องว่างต่อท้ายในแต่ละบรรทัด บางทีคุณควรดูผลลัพธ์ในครั้งต่อไป
Jo King

4

R , 135 110 96 ไบต์

function(n){cat("+"<n,"
",sep="")
for(i in c(1:n,n:1))cat(" "<n-i,"+"<2*i-1,"
",sep="")}
"<"=rep

ลองออนไลน์!

@ JayCe กับการตัดสุดท้าย

repฟังก์ชั่นได้รับมอบหมายให้เป็นผู้ดำเนินการมัดที่มีอยู่เช่น<หรือ^เพื่อให้rep("+", n)เทียบเท่ากับ"<"("+", n)ที่สามารถเขียนออกมาใช้<ในฐานะที่เป็นผู้ประกอบการมัดเช่นเดียวกับในและลงไป"+" < n"+"<n


1
บันทึก 25 ไบต์และทำให้เป็นฟังก์ชัน
JayCe

คำตอบทั้งหมดของคุณ :) รหัสดั้งเดิมยอดเยี่ยม!
JayCe

มีช่องว่างบางส่วนที่นี่ที่สามารถลบออกได้และใช้"+"โดยตรงแทนการบันทึกเป็นzบันทึกบางไบต์! ลองที่นี่
Giuseppe

1
@ngm @Giuseppe ด้านบนของการปรับปรุงจูเซปเป้แทน<สำหรับการrepได้รับภายใต้ 100 ตัวอักษร! ที่นี่
JayCe

3

ถ่าน 15 ไบต์

G→→↙N+↓‖M↑×⊕ⅈ+‖

ลองออนไลน์! การเชื่อมโยงคือการใช้รหัสเวอร์ชันอย่างละเอียด คำอธิบาย:

G→→↙N+

พิมพ์รูปสามเหลี่ยมกลับด้านของ+ความสูงของอินพุตและความกว้างเกือบสองเท่า

เลื่อนเคอร์เซอร์ลงเพื่อให้ตกลงบนบรรทัดเพิ่มเติมหลังจากการสะท้อนกลับ

‖M↑

ทำภาพสะท้อนของสามเหลี่ยม

×⊕ⅈ+

วาดบรรทัดเพิ่มเติมโดยใช้คอลัมน์ปัจจุบันเพื่อหลีกเลี่ยงการอ่านอินพุตอีกครั้ง

สะท้อนเอาต์พุตเพื่อให้บรรทัดบรรทัดเพิ่มเติมชี้ไปทางซ้าย




3

QB64, 82 79 ไบต์

INPUT n
?STRING$(n,43):FOR a=1TO 2*n:d=a-(a>n)*2*(n-a):?SPC(n-d);STRING$(2*d-1,43):NEXT

3
ยินดีต้อนรับสู่ PPCG! นี่คือการส่งครั้งแรกที่ดีและฉันได้เพิ่มในรายการของการแก้ปัญหาที่โพสต์ในขณะที่QBasic เป็นภาษาของเดือน หากต้องการคุณสามารถปรับปรุงคำตอบนี้ได้โดยเพิ่มคำอธิบายสั้น ๆ สนุกกับเวลาของคุณที่นี่!
DLosc

2

JavaScript (Node.js) , 106 105 ไบต์

  • ขอบคุณ @Kevin Cruijssen สำหรับการลดขนาด 1 ไบต์
n=>[...Array(n*2+1)].map((_,i)=>" ".repeat(i?i>n?i+~n:n-i:0)+"+".repeat(i?i>n?4*n-2*i+1:i*2-1:n)).join`
`

ลองออนไลน์!

________________________________________________

แนวทางที่สอง

JavaScript (Node.js) , 105 100 99 98 ไบต์

  • ขอบคุณ @Kevin Cruijssen สำหรับการลดขนาด 1 ไบต์
  • ขอบคุณ @ovs สำหรับการลดขนาด 1 ไบต์
n=>[X="+"[r="repeat"](n),...x=[...X].map((_,i)=>" "[r](n+~i)+"+"[r](i-~i)),...x.reverse()].join`
`

ลองออนไลน์!


2
เช่นเดียวกับการประชุมคุณควรมีการส่งสั้นที่สุดที่ด้านบนของโพสต์ของคุณหากคุณมีหลายวิธีในนั้น สิ่งนี้ช่วยให้ผู้อื่นสามารถลองใช้ความท้าทายได้ง่ายค้นหาภาษาของพวกเขาและดูว่าพวกเขาเปรียบเทียบกับคำตอบที่ดีที่สุดของคุณอย่างไร (และจำเป็นสำหรับกระดานคะแนนที่จะทำงานอย่างถูกต้องกับความท้าทายที่มีกระดานคะแนน)
Taylor Scott


2

PowerShellขนาด 55 ไบต์

param($l)'+'*$l;1..$l+$l..1|%{" "*($l-$_)+'+'*($_*2-1)}

ลองออนไลน์!


1
คำตอบที่ดี แต่ตัวละครที่ควรจะเป็นแทน+ xนอกจากนี้คุณสามารถทำให้การตอบสนองของคุณเป็นมิตรกับชุมชนมากขึ้นโดยใช้ลองออนไลน์! และเพิ่มลิงก์ไปยังคำตอบของคุณ
Taylor Scott

1
Derp - ไม่อยากจะเชื่อเลยว่าฉันไม่เห็นอย่างนั้น ขอบคุณ!
Tor

2

J , 29 ไบต์

'+'(,]\(}:@|."1,.])@,]\.)@$~]

ลองออนไลน์!

คำอธิบาย:

'+'$~] - generates the line at the start, which is a seed for the diamond:

   '+'$~]  3
+++

]\,]\. - finds the prefixes (]\) and suffixes (]\.) of the line, making "half" the diamond 

   '+'(]\,]\.)@$~] 3
+  
++ 
+++
+++
++ 
+  

}:@|."1,.] - makes the other "half" of the diamond by reversing each line (|."1)
and dropping its last '+' (}:) and stitches the first half to it (,.])

 '+'(]\(}:@|."1,.])@,]\.)@$~] 3
  +  
 +++ 
+++++
+++++
 +++ 
  +  

, - prepends the initial line to the diamond

'+'(,]\(}:@|."1,.])@,]\.)@$~] 3
+++  
  +  
 +++ 
+++++
+++++
 +++ 
  +  

2

Haskell , 85 82 ไบต์

บันทึกแล้ว 3 ไบต์ขอบคุณnimi !

n!c=[1..n]>>c
f n|x<-[(n-i)!" "++(i*2-1)!"+"|i<-[1..n]]=unlines$n!"+":x++reverse x

ลองออนไลน์!


ใช้เคล็ดลับนี้คุณสามารถกำจัดตัวแปรที่ใช้สองครั้งxซึ่งจะช่วยประหยัด 4 ไบต์: ลองใช้ออนไลน์!
ბიმო


1

PHP, 103 ไบต์

for(;$i++<$argn;$s.="
".str_pad(str_pad("",$i*2-1,"+",2),$argn*2-1," ",2))echo"+";echo"$s
",strrev($s);

ทำงานเป็นท่อด้วย `-nR' หรือลองออนไลน์


1

PowerShell , 58 ไบต์

param($n)'+'*$n;1..$n+$n..1|%{" "*($n-$_)+"+"*$_+"+"*--$_}

ลองออนไลน์!

เพียงแค่วนซ้ำและลดลงแต่ละครั้งจะวนซ้ำเอาต์พุตตามจำนวนช่องว่างที่เหมาะสมจากนั้นตามด้วยจำนวนเครื่องหมายบวกที่เหมาะสม โฮครวญเพลง


1

F # (Mono) , 123 ไบต์

let d n=
 let t n=String('+',n)
 let s n=t(n*2-1)
 [1..n]@[n.. -1..1]|>Seq.fold(fun a x->a+sprintf"\n%*s"(n+x-1)(s x))(t n)

ลองออนไลน์!


4
ยินดีต้อนรับสู่ PPCG
มูฮัมหมัดซาลมาน

ดูเหมือนว่าจะใช้งานไม่ได้ นอกจากนี้ควรป้อนอินพุตจาก STDIN ไฟล์หรืออาร์กิวเมนต์ของฟังก์ชัน เราไม่อนุญาตให้ใช้ตัวแปรที่กำหนดไว้ล่วงหน้าเป็นอินพุต
mbomb007

@ mbomb007 คุณสามารถอนุมัติได้หรือไม่
Henrik Hansen

@HenrikHansen: ทำไมข้อนี้ถึงทำให้เกิดข้อผิดพลาด? /home/runner/code.fs(2,10): error FS0039: The value or constructor 'String' is not defined. Cannot open assembly 'code.exe': No such file or directory.
มูฮัมหมัดซาลมาน

1
@HenrikHansen: ฉันแนะนำให้แก้ไข ดู
Muhammad Salman

1

PHP 102 ไบต์

for($r=str_pad;$i++<$a;$s.="\n".$r($r("",$i*2-1,"+",2),$a*2-1," ",2))echo"+";echo"$s\n",strrev($s);

ฉันรู้ว่ามันเล็กกว่านี้มาก;) Greetz mangas


ยินดีต้อนรับสู่ PPCG!
มูฮัมหมัดซาลมาน

รหัสของคุณดูเหมือนว่าจะเกิดข้อผิดพลาดเมื่อฉันพยายามเรียกใช้หรือไม่
มูฮัมหมัดซาลมาน

เหตุใดคุณจึงแนะนำสิ่งนี้เป็นการแก้ไขแยกต่างหาก มันไม่มีเหตุผล
Nissa

@StephenLeppik: โอ๊ะโออาจเป็นความผิดพลาดในส่วนของฉัน Soory
Muhammad Salman



1

Python 3 , 98 ไบต์

def d(s):print("+"*s);t=[("+"*i).center(2*s-1)for i in range(1,2*s,2)];print("\n".join(t+t[::-1]))

ลองออนไลน์!

รุ่นที่อ่านได้:

def diamond(size):
    print(size * "+")
    top = [("+" * i).center(2*size - 1) for i in range(1, 2*size, 2)]
    print("\n".join(top))
    print("\n".join(reversed(top)))

ดีกว่ามาก :) ฉันจัดรูปแบบรายการของคุณเพื่อให้ดูเหมือนคำตอบอื่น ๆ คุณต้องการเยี่ยมชม tio.run จัดรูปแบบคำตอบของคุณและทำให้ผู้อื่นสามารถสร้างรหัสของคุณได้ง่าย
JayCe

1

Yabasic , 102 ไบต์

ฟังก์ชันที่ไม่ระบุชื่อที่รับอินพุตเป็นหมายเลขยูนารีที่มี+เครื่องหมายนับและส่งออกไปยังคอนโซล

Input""s$
n=Len(s$)
?s$
For i=-n To n
j=Abs(i)
If i For k=2To j?" ";Next:?Mid$(s$+s$,1,2*(n-j)+1)
Next

ลองออนไลน์!

รุ่นสำรอง 117 ไบต์

คำตอบฟังก์ชันที่ไม่ระบุชื่อที่รับอินพุตเป็นจำนวนเต็มฐานสิบและส่งออกไปยังคอนโซล

Input""n
For i=1To n s$=s$+"+"Next
?s$
For i=-n To n
j=Abs(i)
If i For k=2To j?" ";Next:?Mid$(s$+s$,1,2*(n-j)+1)
Next

ลองออนไลน์!


ฟังก์ชั่นไม่ระบุชื่อ? พวกเขาดูเหมือนโปรแกรมทั้งหมดสำหรับฉัน ...
Ørjan Johansen

@ ØrjanJohansenคำนี้สำหรับ Yabasic เพียง แต่หมายความว่าพวกเขาจะไม่ห่อตามที่ผู้ใช้กำหนด subรูทีนที่ไม่ได้เป็นส่วนหนึ่งของห้องสมุดใด ๆ และจึงไม่สามารถเรียกว่า discretely เหมือนกับ builtin function สามารถ (เช่น. Abs(x)) คุณสามารถอ่านเพิ่มเติมเกี่ยวกับเรื่องนี้ได้ที่นี่หากคุณต้องการ
Taylor Scott

1

JavaScript (Node.js) , 183 ไบต์

a=x=>{g='\n';r=(m,n)=>String.prototype.repeat.call(m,n);k='+';l=r(k,x)+g;c=d='';for(i=0;i++<x;c+=r(' ',x-i)+r(k,i)+r(k,i-1)+g,d+=r(' ',i-1)+r(k,x+1-i)+r(k,x-i)+g);console.log(l+c+d);}

ลองออนไลน์!

อัปเดตคำตอบของฉันด้วย@JoKing


@ โจกิ้งขออภัยความผิดพลาดของฉันฉันเพิ่งอัพเดตคำตอบขอบคุณเพื่อนของฉัน
NTCG

@ โจกิ้งขอบคุณสำหรับเวลาของคุณ
NTCG

1

APL (Dyalog Unicode) ขนาด 25 ไบต์ SBCS

⍪∘⊖⍨c,⍨⌽1↓[2]c←↑,\⎕←⎕/'+'

ลองออนไลน์!

คำอธิบาย:

⍪∘⊖⍨c,⍨⌽1↓[2]c←↑,\⎕←⎕/'+'   Full program
                       ⎕/'+'   Get input from user as N, replicate '+' N times
                    ⎕←         Print above string
                  ,\            Find all prefixes of above string, e.g. '+','++','+++' etc.
                               Mix the above into a matrix - right-pads with spaces as needed
               c               Assign above matrix to 'c' for 'corner'
          1↓[2]                 Drop the first column
                              Reverse the resulting matrix
     c,⍨                       Append 'c' to above - this gives us the top half
⍪∘⊖⍨                          Take the above, flip it about the horizontal axis,
                               and append it to itself

1↓[2]-> 0 1↓หรือดียิ่งขึ้น: c,⍨⌽1↓[2]c←->⍉(⊖⍪1↓⊢)⍉
ngn

0

Java 8, 159 ไบต์

n->{String r="",N="\n",t=r;for(int i=n,j,k;i-->0;t+="+",r+=i>0?N:"")for(j=-n;++j<n;r+=k<n?"+":" ")k=i+(j<0?-j:j);return t+N+r+N+new StringBuffer(r).reverse();}

สามารถตีกอล์ฟได้มากกว่านี้ แต่มันเป็นการเริ่มต้น

คำอธิบาย:

ลองออนไลน์

n->{                    // Method with integer parameter and String return-type
  String r="",          //  Result-String, starting empty
         N="\n",        //  Temp-String for new-line to save bytes
         t=r;           //  First-line String, starting empty
  for(int i=n,j,k;i-->0 //  Loop `i` in the range (n,0]
      ;                 //    After every iteration:
       t+="+",          //     Append a "+" to the first-line String
       r+=i>0?N:"")     //     Add a new-line if this isn't the last iteration of `i` yet
    for(j=-n;++j<n;     //   Inner loop `j` in the range (-n,n]
        r+=             //     After every iteration, append the result with:
           k<n?         //      If `k` is smaller than the input `n`:
            "+"         //       Append a "+"
           :            //      Else:
            " ")        //       Append a space instead
      k=i+(j<0?-j:j);   //    Set `k` to `i` plus the absolute value of `j`
  return t+N            //  Return the first-line String plus new-line,
         +r+N           //   plus the result-String plus new-line,
         +new StringBuffer(r).reverse();}
                        //   plus the result-String again reversed

0

Japt -R , 18 16 ไบต์

õ_ç+ êÃê1 û i+pU

ลองมัน


คำอธิบาย

                     :Implicit input of integer U
õ                    :Range [1,U]
 _    Ã              :Pass each Z through a function
  ç+                 :  Repeat "+" Z times
     ê               :  Palindromise
       ê1            :Mirror
          û          :Centre pad each element to the length of the longest element
            i        :Prepend
             +pU     :  "+" repeated U times
                     :Implicitly join with newlines and output

0

ทูต , 62 ไบต์

{"+"*_+lf+UnGrid!Bounce=>"+ "[Table[`>,1:_]|>~`'#Reverse|>@N]}

ลองออนไลน์!

แลมบ์ดาซึ่งรับค่าจำนวนเต็มเป็นอาร์กิวเมนต์

ตัวอย่าง

A> n := 3
3
A> Table[`>,1:n]
 false false false
  true false false
  true  true false
A> Table[`>,1:n]|>~`'#Reverse
  true  true false
  true false false
 false false false
 false false false
  true false false
  true  true false
A> Table[`>,1:n]|>~`'#Reverse|>@N
 1 1 0
 1 0 0
 0 0 0
 0 0 0
 1 0 0
 1 1 0
A> "+ "[Table[`>,1:n]|>~`'#Reverse|>@N]
 " " " " "+"
 " " "+" "+"
 "+" "+" "+"
 "+" "+" "+"
 " " "+" "+"
 " " " " "+"
A> Bounce=>"+ "[Table[`>,1:n]|>~`'#Reverse|>@N]
 " " " " "+" " " " "
 " " "+" "+" "+" " "
 "+" "+" "+" "+" "+"
 "+" "+" "+" "+" "+"
 " " "+" "+" "+" " "
 " " " " "+" " " " "
A> UnGrid!Bounce=>"+ "[Table[`>,1:n]|>~`'#Reverse|>@N]
"  +  \n +++ \n+++++\n+++++\n +++ \n  +  "
A> lf+UnGrid!Bounce=>"+ "[Table[`>,1:n]|>~`'#Reverse|>@N]
"\n  +  \n +++ \n+++++\n+++++\n +++ \n  +  "
A> "+"*n+lf+UnGrid!Bounce=>"+ "[Table[`>,1:n]|>~`'#Reverse|>@N]
"+++\n  +  \n +++ \n+++++\n+++++\n +++ \n  +  "
A> Print[_]
+++
  +
 +++
+++++
+++++
 +++
  +
["+++\n  +  \n +++ \n+++++\n+++++\n +++ \n  +  "]
A>

0

T-SQL, 152 ไบต์

ต่อกฎ IO ของเราใส่จะได้รับการผ่านทางที่มีอยู่ก่อนตารางทีมีข้อมูลจำนวนเต็มn

DECLARE @n INT,@ INT=1,@k INT=1SELECT @n=n FROM t
PRINT REPLICATE('+',@n)a:PRINT SPACE(@n-@)+REPLICATE('+',2*@-1)IF @=@n SET @k-=1SET @+=@k IF @>0GOTO a

ห่วงการนับด้วยตนเองไม่ใช่ "SQL-like" มากนัก จัดรูปแบบ:

DECLARE @n INT,@ INT=1,@k INT=1
SELECT @n=n FROM t
PRINT REPLICATE('+',@n)
a:
    PRINT SPACE(@n-@)+REPLICATE('+',2*@-1)
    IF @=@n SET @k-=1
    SET @+=@k
IF @>0 GOTO a
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.