Gömülü Elmaslar!


26

Hayır, bu değil . Ve bu da değil. Bu soru bunun gibi değil

Aşağıdaki çıktıyı yazdırmak / iade etmek için en kısa kodu yazın:

   /\      /\      /\
  /  \    /  \    /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  / /\ \  / /\ \  /
   \/ /  \ \/ /  \ \/
   /\ \  / /\ \  / /\
  /  \ \/ /  \ \/ /  \
 / /\ \  / /\ \  / /\ \
/ /  \ \/ /  \ \/ /  \ \
\ \  / /\ \  / /\ \  / /
 \ \/ /  \ \/ /  \ \/ /
  \  /    \  /    \  /
   \/      \/      \/
  • Standart giriş / çıkış yöntemleri.
  • Standart boşluklar uygulanır.
  • Herhangi bir miktarda Firar / lider boşluk.

3
Bu değil, Bu değil, Peki ya bu ?
Matthew Roh

Yanıtlar:


14

Kömür , 28 24 23 bayt

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

Çevrimiçi deneyin! Açıklama:

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

Düzenleme: Önceki cevabım ‖M‖M↓, üst köşeyi yansıtarak bütün bir elmas oluşturmak için kullanılır , ancak Kömür'deki bir hata nedeniyle bu, imleci konum dışı bırakırdı. Neyse ki imleci hareket ettirmeyen aynı efekti elde etmenin başka bir yolunu keşfettim, bu da iç elması çizen bir baytı kurtardığım anlamına geliyordu. (Ayrıca çakışan işlemleri de inceledim, ancak döndürme / kopyalama yaklaşımını geliştiremedim.)

Düzenleme: ↖²↗↘⁴‖M¬M¹¦³↘²‖M¬C⁸¦⁰işi 21 baytta yapar, ancak bu yeni yansıtıcı davranışa dayanır, bu yüzden bunun eski kodla mümkün olup olmadığını bilmiyorum.


Evet, üzgünüm, bu bir hataydı -
ASCII-sadece

@ Sadece ASCII-TIO kullandıysam, bu beni nasıl etkiler?
Neil,

Eh, hala önbelleklenmiş, önbellek olduğu sürece, demek istediğin buysa, iyi olmalı
ASCII-sadece

@ ASCII-only Bilmek istediğim, TIO'nun davranışı değiştiğinde, güncellenmiş (rekabet etmese de) bir link vermek istediğimdir.
Neil,

Oh, bu durumda zaten düzeltmesi var
ASCII-sadece

7

Kömür , 62 50 48 45 42 40 bayt

İki byte kaydettiği için @Okx'a teşekkürler!

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

Çevrimiçi deneyin!

Açıklama:

↙²→↘²          // 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
Bir bayt kaydetmek için C⁸¦⁰C⁸¦⁰ile değiştirebilirsiniz F²C⁸¦⁰¦.
Okx

@Okx Teşekkürler! Aslında, bu iki bayttan tasarruf sağlar çünkü iz bırakmadan çalışır ¦.
Steadybox

Kayıt için, kod artık TIO'da düzgün şekilde çalışmadığından bazı güncellemeler bunu bozmuş görünüyor. Cevap hala geçerli, çünkü TIO bu cevap gönderildiğinde geri kullanıyordu.
Steadybox

6

05AB1E , 45 44 43 bayt

Kod:

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

Ön açıklama:

•—‹íćCé'\]d₂2ó@¯çX‘¯¨•3вBölüm aşağıdaki dizinin sadece sıkıştırılmış bir sürümüdür:

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

Dizeye dizine ekledik …/ \. Bu haritalar 0 -> /, 1 -> space, 2 -> \. Ondan sonra, bu dizgiyi şu programla işleriz:

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 kodlamasını kullanır . Çevrimiçi deneyin!


05AB1E ASCII-sanatında çok iyidir, görünüşe göre ...
Esolanging Fruit

4
Üzerinden geçen kırk dört, hala kırk dört.
Okx

@Okx Ayrılmayan boşlukları uygulamadığınız sürece .
Steadybox

5

PHP, 126 Bayt

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

Çevrimiçi deneyin!

PHP, 149 Bayt

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

Çevrimiçi deneyin!


3

JavaScript, 232 bayt

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

Çevrimiçi deneyin!

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


Aşağıda 126 baytlık bir çözüme sahibim. :)
Steve Bennett

3

Ruby, 99 97 bayt

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

açıklama

Her 4 x 4 kare yalnızca boşluk içerir ve /veya \. Bunları genel elmas desenini vermek için çizdik. Sınırlardaki kısmi desenleri önlemek için, bazı 2x2 kareler aşağıdaki gibi boş bırakılmalıdır.

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

Ungolfed sürümü - açıklamaya yardımcı olmak için yukarıdakileri yazdırmak üzere değiştirildi

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 bayt

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

Dene


1

C #, 608 bayt

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

Bunu daha fazla yapmak istediğimden değil, ama sanki özlemiş gibi görünüyorsun using System;. Bunu daha çok golf oynayabileceğinden de eminim ama% 100 emin olmak için fazla zaman harcamamıştım.
TheLethalCoder

Çıktısından daha uzun, bu yüzden System.Console.WriteLine(@"...");cevabımı 200 bayt kadar geçeceğim.
LiefdeWen

1

C #, 382 291 bayt

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

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

Şimdi oldukça okunamıyor olduğundan, temel bir açıklama:

  • boşluğu üst soldan sağa döşeriz
  • temelde her 8 karakteri tekrar eden 6 diyagonal çizgi olarak çiziyoruz: 2 düz çizgi ve 4 "kesikli" (iki karakter, sonra iki boşluk ...)
  • C=...malzeme, bir bağlama kutusu içinde satır bazı çekme sınırına olan
  • Çok fazla karakter kaydetmek için, yukarı ve aşağı satırlar için ifadeleri oldukça benzer hale getirmek için bilerek sayılar ekleriz.
  • sonra ifadeleri [1,,C&&...], aradığımız seyrek bir diziye koyun. Bir truthy değeri varsa, uygun karakteri çizeriz.

-

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

Belki bu açıklama yardımcı olmadı. :)

Çevrimiçi deneyin: https://codepen.io/stevebennett/pen/WjgMpY

Umarım çıktıyı doğru aldım:

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

Tarihçe

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

Tarihçe: 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

Tuval , 18 bayt

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

Burada dene!

Açıklama:

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 bayt


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
 /  \¶ / /\ \  / /\ \  / /\ \¶/ /  \ \/ /  \ \/ /  \ \¶\ \  / /\ \  / /\ \  / /¶ \ \/ /  \ \/ /  \ \/ /¶  \  / 

Çevrimiçi deneyin!

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.