Kim cương nhúng!


26

Không, không phải cái này . Và điều này cũng không . Câu hỏi này không có gì giống như vậy

Viết mã ngắn nhất để in / trả lại đầu ra sau:

   /\      /\      /\
  /  \    /  \    /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  / /\ \  / /\ \  /
   \/ /  \ \/ /  \ \/
   /\ \  / /\ \  / /\
  /  \ \/ /  \ \/ /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  /    \  /    \  /
   \/      \/      \/
  • Phương pháp tiêu chuẩn đầu vào / đầu ra.
  • Tiêu chuẩn áp dụng.
  • Trailing / khoảng trắng hàng đầu là được, với số lượng bất kỳ.

3
Không phải cái này, không phải cái đó, cái này thì sao?
Matthew Roh

Câu trả lời:


14

Than , 28 24 23 byte

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

Hãy thử trực tuyến! Giải trình:

↗²↖↙⁴   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

Chỉnh sửa: Câu trả lời trước đây của tôi được sử dụng ‖M‖M↓để tạo toàn bộ kim cương bằng cách phản chiếu góc trên cùng, nhưng do lỗi trong Than, điều này khiến con trỏ rời khỏi vị trí. May mắn thay, tôi đã phát hiện ra một cách khác để đạt được hiệu ứng tương tự mà không di chuyển con trỏ, điều đó có nghĩa là tôi đã lưu một byte vẽ viên kim cương bên trong. (Tôi cũng đã xem xét các hoạt động chồng chéo, nhưng tôi không thể cải thiện phương pháp xoay / sao chép.)

Chỉnh sửa: ↖²↗↘⁴‖M¬M¹¦³↘²‖M¬C⁸¦⁰thực hiện công việc trong 21 byte, nhưng điều đó phụ thuộc vào hành vi phản xạ mới, vì vậy tôi không biết liệu điều này có thể xảy ra với mã cũ hay không.


Vâng, xin lỗi, đó là một lỗi - Tôi đã sửa nó và sẽ cố gắng đẩy ASAP, nhưng điều này vẫn cực kỳ ngắn: O +1
ASCII - chỉ

Chỉ có ASCII Nếu tôi đã sử dụng TIO, điều đó ảnh hưởng đến tôi như thế nào?
Neil

Chà, nó vẫn được lưu trong bộ nhớ cache, miễn là nó được lưu vào bộ nhớ cache, sẽ ổn thôi nếu đó là điều bạn muốn nói
ASCII - chỉ

Chỉ có ASCII Điều tôi muốn biết là khi hành vi của TIO thay đổi, tôi muốn có thể cung cấp một liên kết cập nhật (mặc dù không cạnh tranh).
Neil

Ồ, trong trường hợp đó, nó đã có bản sửa lỗi
ASCII - chỉ

7

Than , 62 50 48 45 42 40 byte

Cảm ơn @Okx vì đã lưu hai byte!

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

Hãy thử trực tuyến!

Giải trình:

↙²→↘²          // 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
Bạn có thể thay thế C⁸¦⁰C⁸¦⁰bằng F²C⁸¦⁰¦để lưu một byte.
Okx

@Okx Cảm ơn! Trên thực tế, điều này tiết kiệm hai byte, bởi vì nó hoạt động mà không có dấu ¦.
Steadybox

Đối với bản ghi, một số cập nhật dường như đã phá vỡ điều này, vì mã không còn hoạt động đúng trên TIO. Câu trả lời vẫn còn hiệu lực, bởi vì nó đã hoạt động với phiên bản TIO đã sử dụng trở lại khi câu trả lời này được đăng.
Steadybox

6

05AB1E , 45 44 43 byte

Mã số:

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

Giải thích trước:

Phần •—‹íćCé'\]d₂2ó@¯çX‘¯¨•3вnày chỉ là một phiên bản nén của mảng sau:

[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]

Mà chúng tôi lập chỉ mục vào chuỗi …/ \. Bản đồ này 0 -> /, 1 -> space, 2 -> \. Sau đó, chúng tôi xử lý chuỗi này với chương trình sau:

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

Sử dụng mã hóa 05AB1E . Hãy thử trực tuyến!


05AB1E rất giỏi về nghệ thuật ASCII, có vẻ như ...
Esolanging Fruit

4
Vượt qua bốn mươi bốn vẫn là bốn mươi bốn.
Okx

@Okx Trừ khi bạn áp dụng các khoảng trắng không phá vỡ .
Steadybox


3

JavaScript, 232 byte

_=>(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``

Hãy thử trực tuyến!

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()}
`)


Tôi có một giải pháp 126 byte dưới đây. :)
Steve Bennett

3

Ruby, 99 97 byte

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

Giải trình

Mỗi hình vuông 4x4 chỉ chứa không gian và /hoặc \. Chúng tôi vẽ những cái này để đưa ra mô hình kim cương tổng thể. Để tránh các mẫu một phần ở viền, các ô vuông 2x2 nhất định phải được để trống như bên dưới.

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

Phiên bản Ungolfed - sửa đổi để in ở trên để hỗ trợ giải thích

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 .
}

2

Pyth - 106 98 96 92 byte

V16V24J%t+NH8K%+_2-NH8=Y&&&>H1>N1<N14<H22p?|q2J&&Y!%J4?<1%H4J!J\/?|q2K&&Y!%K4?<1%H4!KK\\d)pb

Thử nó


1

C #, 608 byte

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

Không phải tôi muốn làm điều này lâu hơn nữa mà có vẻ như bạn đang thiếu using System;. Tôi cũng khá chắc chắn rằng bạn có thể chơi gôn này nhiều hơn nhưng tôi đã không mất quá nhiều thời gian để chắc chắn 100%.
TheLethalCoder

Nó dài hơn đầu ra nên System.Console.WriteLine(@"...");sẽ đánh bại câu trả lời của tôi khoảng 200 byte.
LiefdeWen

1

C #, 382 291 byte

_=>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 byte

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]?'\\':' '

Vì bây giờ khá khó đọc, một lời giải thích cơ bản:

  • chúng ta xếp không gian trên cùng bên trái xuống dưới bên phải
  • về cơ bản, chúng tôi vẽ 6 đường chéo lặp lại sau mỗi 8 ký tự: 2 đường liền nét và 4 đường "nét đứt" (hai ký tự, sau đó là hai khoảng trắng ...)
  • các C=...công cụ này là để giới hạn bản vẽ của một số các dòng để trong một hộp bounding
  • để lưu nhiều ký tự, chúng tôi cố tình thêm số để làm cho các biểu thức cho các dòng lên và xuống cực kỳ giống nhau
  • sau đó, đặt các biểu thức vào một mảng thưa thớt [1,,C&&...]mà chúng ta tìm kiếm. Nếu có một giá trị trung thực, chúng ta vẽ nhân vật thích hợp.

-

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

Có lẽ lời giải thích này đã không giúp được gì. :)

Thử trực tuyến: https://codepen.io/stevebennett/pen/WjgMpY

Hy vọng tôi có đầu ra đúng:

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

Lịch sử

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]?'\\':' '

Lịch sử: 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 byte

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

Hãy thử nó ở đây!

Giải trình:

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]

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.