Berlian Tertanam!


26

Tidak, bukan ini . Dan bukan ini juga. Pertanyaan ini tidak seperti itu

Tulis kode terpendek untuk mencetak / mengembalikan hasil berikut:

   /\      /\      /\
  /  \    /  \    /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  / /\ \  / /\ \  /
   \/ /  \ \/ /  \ \/
   /\ \  / /\ \  / /\
  /  \ \/ /  \ \/ /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  /    \  /    \  /
   \/      \/      \/
  • Metode input / output standar.
  • Celah standar berlaku.
  • Mengejar / memimpin spasi putih tidak apa-apa, dalam jumlah berapa pun.

3
Bukan ini, Bukan itu, bagaimana dengan ini ?
Matthew Roh

Jawaban:


14

Arang , 28 24 23 byte

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

Cobalah online! Penjelasan:

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

Sunting: Jawaban saya sebelumnya digunakan ‖M‖M↓untuk membuat berlian keseluruhan dengan memantulkan sudut atas, tetapi karena bug di Charcoal ini membuat kursor keluar dari posisi. Untungnya saya menemukan cara lain untuk mencapai efek yang sama yang tidak menggerakkan kursor, yang berarti bahwa saya menyelamatkan satu byte menggambar berlian dalam. (Saya juga melihat operasi yang tumpang tindih, tetapi saya tidak dapat memperbaiki pendekatan rotate / copy.)

Sunting: ↖²↗↘⁴‖M¬M¹¦³↘²‖M¬C⁸¦⁰melakukan pekerjaan dalam 21 byte, tetapi itu bergantung pada perilaku pemantulan baru, jadi saya tidak tahu apakah ini mungkin dengan kode lama.


Ya, maaf, itu adalah bug - Saya sudah memperbaikinya dan akan mencoba untuk mendorong ASAP, tapi ini masih sangat singkat: O +1
ASCII-hanya

@ Khusus ASCII Jika saya telah menggunakan TIO, bagaimana pengaruhnya terhadap saya?
Neil

Yah, itu masih di-cache, jadi selama ini di-cache, itu akan baik-baik saja jika itu yang Anda maksud
ASCII-hanya

@ Khusus ASCII Yang ingin saya ketahui adalah bahwa ketika perilaku TIO berubah, saya ingin dapat memberikan tautan yang diperbarui (meskipun tidak bersaing).
Neil

Oh, dalam hal ini sudah ada perbaikan
ASCII-hanya

7

Arang , 62 50 48 45 42 40 byte

Terima kasih kepada @Okx karena telah menghemat dua byte!

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

Cobalah online!

Penjelasan:

↙²→↘²          // 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
Anda dapat mengganti C⁸¦⁰C⁸¦⁰dengan F²C⁸¦⁰¦untuk menyimpan byte.
Okx

@Okx Terima kasih! Sebenarnya, ini menghemat dua byte, karena ia bekerja tanpa trailing ¦.
Steadybox

Sebagai catatan, beberapa pembaruan tampaknya telah merusak ini, karena kode tidak lagi berfungsi dengan baik di TIO. Jawabannya masih tetap valid, karena itu berfungsi dengan versi TIO menggunakan kembali ketika jawaban ini diposting.
Steadybox

6

05AB1E , 45 44 43 byte

Kode:

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

Pra-penjelasan:

Bagian •—‹íćCé'\]d₂2ó@¯çX‘¯¨•3вini hanya versi terkompresi dari array berikut:

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

Yang kami indeks ke dalam string …/ \. Peta ini 0 -> /, 1 -> space, 2 -> \. Setelah itu, kami memproses string ini dengan program berikut:

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

Menggunakan penyandian 05AB1E . Cobalah online!


05AB1E sangat bagus di ASCII-art, sepertinya ...
Esolanging Fruit

4
Dicoret empat puluh empat masih empat puluh empat.
Okx

@Okx Kecuali jika Anda menerapkan ruang yang tidak melanggar .
Steadybox

5

PHP, 126 Bytes

<?=gzinflate(base64_decode("vY7BCQAwCAP/mSIbuJD7z1GJLbbiuz5yKCeEpDk1RUSQWm8iMiRnIyw178Qgi5hs3ceHOA86snN7ON2b/687X+7umuIC"));

Cobalah online!

PHP, 149 Bytes

$s=strtr("000
111
222
333
444
555
  \ 22 /  
   \\33/   ",["   /\   ","  /  \  "," / /\ \ ","/ /  \ \\","\ \  / /"," \ \/ / "]);echo"$s
".strrev($s);

Cobalah online!


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``

Cobalah online!

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


Saya punya solusi 126 byte di bawah ini. :)
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)]}

Penjelasan

Setiap kotak 4x4 hanya berisi spasi dan /atau \. Kami merencanakan ini untuk memberikan pola berlian keseluruhan. Untuk menghindari pola parsial di perbatasan, kotak 2x2 tertentu harus dibiarkan kosong seperti di bawah ini.

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

Versi tidak digubah - dimodifikasi untuk mencetak di atas untuk membantu penjelasan

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

Cobalah


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

Bukannya saya ingin membuat ini lebih lama tetapi sepertinya Anda hilang using System;. Saya juga cukup yakin Anda bisa bermain golf ini lebih banyak, tetapi saya belum menghabiskan terlalu banyak waktu untuk menjadi 100% yakin.
TheLethalCoder

Lebih panjang dari output jadi hanya System.Console.WriteLine(@"...");akan mengalahkan jawaban saya dengan seperti 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]?'\\':' '

Karena sekarang cukup tidak terbaca, penjelasan dasar:

  • kami ubin ruang kiri atas ke kanan bawah
  • kami menggambarnya sebagai dasarnya 6 garis diagonal yang mengulang setiap 8 karakter: 2 garis solid, dan 4 yang "putus-putus" (dua karakter, lalu dua spasi ...)
  • yang C=...hal adalah untuk batas menggambar beberapa garis untuk dalam kotak berlari
  • untuk menyimpan banyak karakter, kami sengaja menambahkan angka untuk membuat ekspresi untuk garis ke atas dan ke bawah sangat mirip
  • kemudian, letakkan ekspresi itu sendiri menjadi array yang jarang [1,,C&&...], yang kita cari. Jika ada nilai kebenaran, kami menggambar karakter yang sesuai.

-

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

Mungkin penjelasan ini tidak membantu. :)

Coba online: https://codepen.io/stevebennett/pen/WjgMpY

Semoga saya mendapatkan hasil yang benar:

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

Sejarah

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

Sejarah: 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

Kanvas , 18 byte

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

Coba di sini!

Penjelasan:

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]

0

Retina , 214 byte


F/\E/\E/\¶B/B\BB/B\FAD D¶F\/ C C¶FD D /\¶BC CAF\B/BB\B/¶F\/E\/E\/
F
B 
E
BBB
D
/\ \B/
C
/B\ \/
B
  
A
 /  \¶ / /\ \  / /\ \  / /\ \¶/ /  \ \/ /  \ \/ /  \ \¶\ \  / /\ \  / /\ \  / /¶ \ \/ /  \ \/ /  \ \/ /¶  \  / 

Cobalah online!

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.