ฝังเพชร!


26

ไม่มีไม่ได้นี้ และไม่นี้อย่างใดอย่างหนึ่ง คำถามนี้ไม่เหมือนสิ่งเหล่านั้น

เขียนรหัสที่สั้นที่สุดเพื่อพิมพ์ / ส่งคืนผลลัพธ์ต่อไปนี้:

   /\      /\      /\
  /  \    /  \    /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  / /\ \  / /\ \  /
   \/ /  \ \/ /  \ \/
   /\ \  / /\ \  / /\
  /  \ \/ /  \ \/ /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  /    \  /    \  /
   \/      \/      \/
  • วิธีการมาตรฐานของอินพุต / เอาต์พุต
  • ช่องโหว่มาตรฐานใช้
  • ช่องว่างต่อท้าย / นำหน้าไม่เป็นไรในจำนวนใด ๆ

3
ไม่ใช่นี่ไม่ใช่อย่างนั้นแล้วเรื่องนี้ล่ะ
Matthew Roh

คำตอบ:


14

ถ่าน , 28 24 23 ไบต์

↗²↖↙⁴⟲P²⁴⁶↘↙↙²⟲P²⁴⁶C⁸¦⁰

ลองออนไลน์! คำอธิบาย:

↗²↖↙⁴   Draw the top left 4x4 corner
         /
        //
⟲P²⁴⁶   Rotate it three times to complete a diamond
         /\
        //\\
        \\//
         \/
↘↙↙²    Draw the top left line of the inner diamond
         /\
        //\\
        \\//
         \//
⟲P²⁴⁶   Rotate three times to complete five diamonds
C⁸¦⁰    Copy everything 8 characters to the right to complete eight diamonds

แก้ไข: คำตอบก่อนหน้าของฉันใช้‖M‖M↓ในการสร้างเพชรทั้งหมดโดยสะท้อนมุมด้านบน แต่เนื่องจากข้อผิดพลาดใน Charcoal ทำให้เคอร์เซอร์ออกจากตำแหน่ง โชคดีที่ฉันค้นพบอีกวิธีหนึ่งในการบรรลุเอฟเฟ็กต์แบบเดียวกันซึ่งไม่ได้ย้ายเคอร์เซอร์ซึ่งหมายความว่าฉันบันทึกไบต์ที่กำลังวาดเพชรภายใน (ฉันดูการดำเนินการที่ทับซ้อนกัน แต่ฉันไม่สามารถปรับปรุงวิธีการหมุน / การคัดลอกได้)

แก้ไข: ↖²↗↘⁴‖M¬M¹¦³↘²‖M¬C⁸¦⁰ทำงานใน 21 ไบต์ แต่ขึ้นอยู่กับพฤติกรรมการสะท้อนใหม่ดังนั้นฉันไม่รู้ว่าสิ่งนี้เป็นไปได้ด้วยรหัสเก่าหรือไม่


ใช่ขอโทษมันเป็นข้อผิดพลาด - ฉันได้ทำการแก้ไขแล้วและจะพยายามผลักดัน ASAP แต่ยังสั้นอยู่: O +1
ASCII- เท่านั้น

@ ASCII-only หากฉันใช้ TIO สิ่งนั้นจะมีผลกับฉันอย่างไร
Neil

ตราบใดที่มันถูกแคชก็ควรจะดีถ้านั่นคือสิ่งที่คุณหมายถึง
ASCII- เท่านั้น

@ ASCII- อย่างเดียวสิ่งที่ฉันอยากรู้ก็คือเมื่อการเปลี่ยนแปลงพฤติกรรมของ TIO ฉันต้องการที่จะสามารถให้การเชื่อมโยงการปรับปรุง (แม้ว่าไม่ใช่การแข่งขัน)
Neil

โอ้ในกรณีนี้มันมีการแก้ไขแล้ว
ASCII เท่านั้น

7

ถ่าน , 62 50 48 45 42 40 ไบต์

ขอบคุณ @Okx สำหรับการบันทึกสองไบต์!

↙²→↘²↙↖⁴→↗⁴‖MF²C⁸¦⁰M⁸↓→↗²↓↘²M⁴→↑↗²↓↘²‖M↓

ลองออนไลน์!

คำอธิบาย:

↙²→↘²          // Draw the left half of the inner part of the first diamond.
↖⁴→↗⁴          // Draw the left half of the outer part.
‖M             // Mirror the half of the diamond to create the first full diamond.
F²C⁸¦⁰         // Copy the picture eight characters to the left twice.
               // The first copy gives us two diamonds, and the second copy of the
               // two diamonds overlaps so that the result is three diamonds.
M⁸↓→↗²↓↘²     // Move down to draw the upper inner half of the first middle diamond.
M⁴→↑↗²↓↘²     // Move right to do the same for the second middle diamond.
‖M↓           // Mirror the whole thing vertically.

1
คุณสามารถแทนที่C⁸¦⁰C⁸¦⁰ด้วยF²C⁸¦⁰¦เพื่อบันทึกไบต์
Okx

@Okx ขอบคุณ! ¦จริงนี้จะช่วยประหยัดไบต์ที่สองเพราะมันทำงานโดยไม่ต้องต่อท้าย
Steadybox

สำหรับเรกคอร์ดการอัปเดตบางอย่างดูเหมือนว่าใช้งานไม่ได้เนื่องจากรหัสไม่ทำงานอย่างถูกต้องใน TIO คำตอบยังคงใช้ได้เนื่องจากมันทำงานกับรุ่น TIO ที่ใช้กลับเมื่อคำตอบนี้ถูกโพสต์
Steadybox

6

05AB1E , 45 44 43 ไบต์

รหัส:

…/ \©•—‹íćCé']d₂2ó@¯çX‘¯¨•3вè8äJvy®‡«}»Â»

Pre-คำอธิบาย:

•—‹íćCé'\]d₂2ó@¯çX‘¯¨•3вส่วนหนึ่งเป็นเพียงรุ่นบีบอัดของอาร์เรย์ต่อไปนี้:

[1, 1, 1, 0, 2, 1, 1, 1, 1, 1, 1, 0, 1, 1, 0, 1, 1, 2, 1, 1, 1, 1, 0, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 2, 1, 2, 0, 1, 0, 1, 2, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 2, 1, 2, 0, 1, 0, 1, 1, 2, 1, 2, 1, 1, 2, 1, 1, 0, 1, 0, 2, 1, 2, 1, 1, 1, 1, 2, 0, 1, 0, 1, 1, 2, 1, 2]

…/ \ซึ่งเราดัชนีลงในสตริง แผนที่นี้0 -> /, ,1 -> space 2 -> \หลังจากนั้นเราประมวลผลสตริงนี้ด้วยโปรแกรมต่อไปนี้:

8äJvy®‡«}»Â»

8ä               # Split the array into 8 pieces
  J              # Join each sub-array in the array
   vy     }      # For each string in the array
     Â           #   Bifurcate (duplicate and reverse)
      ®          #   Push the string "/ \" (which was copied using ©)
       Â         #   Bifurcate to get "\ /"
        ‡        #   Transliterate / -> \ and \ -> /
         «       #   Append to the original string
           »     # Join the entire stack on newlines
            Â    # Bifurcate
             »   # Join the stack by newlines

ใช้การเข้ารหัส05AB1E ลองออนไลน์!


05AB1E เก่งมากใน ASCII-art ดูเหมือนว่า ...
ผลไม้ที่ผ่านมา

4
ข้ามออกสี่สิบสี่ยังคงเป็นสี่สิบสี่
Okx

@Okx เว้นเสียแต่ว่าคุณใช้ช่องว่างแบบไม่ต่อเนื่อง
Steadybox


3

จาวาสคริปต์, 232 ไบต์

_=>(a=`3868683
2/274/274/272
1/18172/18172/18171
/1/27191/27191/2717
7172/18172/18172/1/
17191/27191/27191/1
272/18172/18172/2
391/27191/27193`.replace(/\d/g,n=>n>6?['\\','/\\','\\/'][n-7]:' 
'.repeat(n)))+`
`+[...a].reverse().join``

ลองออนไลน์!

const f = _=>(a=`3868683
2/274/274/272
1/18172/18172/18171
/1/27191/27191/2717
7172/18172/18172/1/
17191/27191/27191/1
272/18172/18172/2
391/27191/27193`.replace(/\d/g,n=>n>6?['\\','/\\','\\/'][n-7]:' '.repeat(n)))+`
`+[...a].reverse().join``

console.log(`
${f()}
`)


ฉันมีวิธีแก้ปัญหา 126 ไบต์ด้านล่าง :)
Steve Bennett

3

Ruby, 99 97 ไบต์

400.times{|i|print (23<x=i%25)?$/:" /  \\   "[(x^y=i/25)&4^x+y&1^(x-2&4&y-2>y/6%2*x/2%11*4?2:0)]}

คำอธิบาย

แต่ละ 4x4 ตารางมีช่องว่างเท่านั้นและหรือ/ \เราเขียนสิ่งเหล่านี้เพื่อให้รูปแบบเพชรโดยรวม เพื่อหลีกเลี่ยงรูปแบบบางส่วนที่ขอบสี่เหลี่ยม 2x2 บางอันจะต้องเว้นว่างไว้ด้านล่าง

.. /\ .... /\ .... /\ ..
../  \..../  \..../  \..
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
..\  / /\ \  / /\ \  /..
.. \/ /  \ \/ /  \ \/ ..
.. /\ \  / /\ \  / /\ ..
../  \ \/ /  \ \/ /  \..
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
..\  /....\  /....\  /..
.. \/ .... \/ .... \/ ..

Ungolfed version - แก้ไขเพื่อพิมพ์ด้านบนเพื่อช่วยในการอธิบาย

400.times{|i|print (23<x=i%25)?$/:     #Calculate x. If last column, print a newline else
  " /..\\ .."[(x^y=i/25)&4^x+y&1^      #If (x^y)&4==4, use x+y&1 to select between space and /. If (x^y)&4==0 select between \ and space.
  (x-2&4&y-2>y/6%2*x/2%11*4?2:0)]      #If x-2&4&y-2==4, and we are on the 2 character wide border (y/6%2*x/2%11==0), XOR with 2 to print .
}


1

C #, 608 ไบต์

void q(){Action<string>a=Console.Write;Func<int,int,string>b=(c,d)=>new string(' ',c)+(d<1?"/\\":d<2?"/  \\":d<3?"/ /\\ \\":d<4?"/ /  \\ \\":d<5?"\\ \\  / /":d<6?"\\ \\/ /":d<7?"\\  /":"\\/");Action e=()=>a(b(0,4)+b(0,4)+b(0,4)+"\n"+b(1,5)+b(2,5)+b(2,5)+"\n");Action f=()=>a(b(1,2)+b(2,2)+b(2,2)+"\n");Action g=()=>a(b(0,3)+b(0,3)+b(0,3)+"\n");a(b(3,0)+b(6,0)+b(6,0)+"\n"+b(2,1)+b(4,1)+b(4,1)+"\n");f();g();e();a("  \\  / /\\ \\  / /\\ \\  /\n"+"   \\/ /  \\ \\/ /  \\ \\/\n"+"   /\\ \\  / /\\ \\  / /\\\n"+"  /  \\ \\/ /  \\ \\/ /  \\\n");f();g();e();a(b(2,6)+b(4,6)+b(4,6)+"\n"+b(3,7)+b(6,7)+b(6,7)+"\n");}

ไม่ว่าฉันต้องการที่จะทำให้เรื่องนี้ได้อีกต่อไป using System;แต่มันดูเหมือนว่าคุณกำลังขาดหายไป ฉันค่อนข้างมั่นใจว่าคุณสามารถเล่นกอล์ฟได้มากกว่านี้ แต่ฉันไม่ได้ใช้เวลามากเกินไปที่จะแน่ใจ 100%
TheLethalCoder

มันยาวกว่าเอาท์พุทดังนั้นเพียงแค่System.Console.WriteLine(@"...");จะเอาชนะคำตอบของฉันด้วยเช่น 200 ไบต์
LiefdeWen

1

C #, 382 291 ไบต์

_=>string.Format(@"{5}{5}{5}
{2}{2}{2}
{0}{0}{0}
{1}{1}{1}
\ \ {0}{0} / /
 \ \{1}{1}/ /
  \ {0}{0} /
   \{1}{1}/
   /\ \ {0} / /\
  /  \ \{1}/ /  \
 {0}{0}{0}
{1}{1}{1}
\ \ {0}{0} / /
 \ \{1}{1}/ /
{4}{4}{4}
{3}{3}{3}",@" / /\ \ ",@"/ /  \ \",@"  /  \  ",@"   \/   ",@"  \  /  ",@"   /\   ");

1

Javascript 126 ไบต์

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1&&r%14>1,q=[1,,C&&r&2,,,,C&&~r&2,,1],a+=q[c+5+r&7]?'/':q[r-c+20&7]?'\\':' '

เนื่องจากตอนนี้อ่านไม่ได้แล้วคำอธิบายพื้นฐาน:

  • เราเรียงลำดับพื้นที่บนจากซ้ายไปขวาล่าง
  • เราวาดมันเป็นพื้น 6 เส้นทแยงมุมที่ทำซ้ำทุก 8 ตัวอักษร: 2 เส้นทึบและ 4 ที่เป็น "ประ" (ตัวละครสองตัวจากนั้นสองช่องว่าง ... )
  • C=...สิ่งคือการ จำกัด การวาดภาพของบางส่วนของสายไปภายในกรอบ
  • เพื่อประหยัดอักขระจำนวนมากเราเพิ่มหมายเลขโดยเจตนาเพื่อสร้างนิพจน์สำหรับบรรทัดขึ้นและลงที่คล้ายกันมาก
  • จากนั้นใส่นิพจน์ลงในอาร์เรย์ที่กระจัดกระจาย[1,,C&&...]ซึ่งเราค้นหา หากมีค่าความจริงเราจะวาดตัวละครที่เหมาะสม

-

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))                 // basic grid tiling
C=c%22>1&&r%14>1,   // are we not near the edges
q=[1,               // a solid line that always draws
,                   // a line that never draws
C&&r&2,             // a line that draws if not near the edge, and if on the correct "dash" (r&2)
,,,
C&&~r&2,            // if not near the edge, and on the opposite "dash" (~r&2)
,1                  // the opposite diagonal line that always draws
],
a+=q[c+5+r&7]?'/' // compute which upward line we're on, check whether to draw it
:q[r-c+20&7]?'\\' // do the same for the downward line
:' '                // otherwise draw a space

บางทีคำอธิบายนี้อาจช่วยไม่ได้ :)

ลองออนไลน์: https://codepen.io/stevebennett/pen/WjgMpY

หวังว่าฉันจะได้ผลลัพธ์ที่ถูกต้อง:

   /\      /\      /\   
  /  \    /  \    /  \  
 / /\ \  / /\ \  / /\ \ 
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ / 
  \  / /\ \  / /\ \  /  
   \/ /  \ \/ /  \ \/   
   /\ \  / /\ \  / /\   
  /  \ \/ /  \ \/ /  \  
 / /\ \  / /\ \  / /\ \ 
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ / 
  \  /    \  /    \  /  
   \/      \/      \/   

ประวัติศาสตร์

130

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1&&r%14>1,q=[1,,C&&r&2,,,,C&&~r&2,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

133

for(c=r=a='';r<16;c++>22&&(r++,c=0,a+=`
`))C=c%22>1,q=[1,,C&&r&2&&r<14,,,,C&&~r&2&&r>1,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

137

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+=`
`))C=c<22&&c>1,q=[1,,C&&r&2&&r<14,,,,C&&~r&2&&r>1,,1],a+=q[(c+5+r)%8]?'/':q[(r-c+20)%8]?'\\':' '

155

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+=`
`))Z=(C=c<22&&c>1)&&~r&2&&r>1,Y=C&&r&2&&r<14,B=(c-r+12)%8,A=(c+5+r)%8,q=[1,,Y,,,,Z,,1],a+=q[A]?'/':q[8-B]?'\\':' '

ประวัติความเป็นมา: 172

for(c=r=a='';r<16;c++==23&&(r++,c=0,a+='\n'))a+=(Z=(C=c<22&&c>1)&&~r&2&&r>3,Y=C&&r&2&&r<12,B=(c-r+16)%8,A=(c+r)%8,A==3||A==5&&Y||A==1&&Z?'/':B==4||B==2&&Y||B==6&&Z?'\\':' ')

1

Canvas ขนาด 18 ไบต์

4/2/33╋╬2/77╋╬:91╋

ลองที่นี่!

คำอธิบาย:

4/           push a diagonal of length 4
  2/         push a diagonal of length 2
    33╋      insert that at [3;3] in the 1st diagonal
                    /
                   / 
                  / /
                 / / 
╬            quad-palindromize with 0 overlap
 2/77╋       insert a 2-long diagonal in the bottom-right corner
                    /\   
                   /  \  
                  / /\ \ 
                 / /  \ \
                 \ \  / /
                  \ \/ / 
                   \  / /
                    \/ / 
      ╬      quad-palindromize with 0 overlap, creating most of the output
                    /\      /\   
                   /  \    /  \  
                  / /\ \  / /\ \ 
                 / /  \ \/ /  \ \
                 \ \  / /\ \  / /
                  \ \/ /  \ \/ / 
                   \  / /\ \  /  
                    \/ /  \ \/   
                    /\ \  / /\   
                   /  \ \/ /  \  
                  / /\ \  / /\ \ 
                 / /  \ \/ /  \ \
                 \ \  / /\ \  / /
                  \ \/ /  \ \/ / 
                   \  /    \  /  
                    \/      \/   
       :91╋  overlap self on [9;1]

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.