임베디드 다이아몬드!


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 바이트로 작업을 수행하지만 새로운 반영 동작에 의존하므로 이전 코드에서 이것이 가능했는지 알 수 없습니다.


네, 죄송합니다, 그것은 버그였습니다-고쳤으며 최대한 빨리 푸시하려고 시도 할 것입니다, 그러나 이것은 여전히 ​​미약합니다 : O +1
ASCII-only

@ASCII 전용 TIO를 사용한 경우 어떻게됩니까?
Neil

글쎄, 그것은 여전히 ​​캐시되어 있기 때문에 그것이 캐시되는 한, 그것이 의미하는 것이면 괜찮을 것입니다
ASCII 전용

@ASCII 전용 내가 알고 싶은 것은 TIO의 동작이 변경 될 때 업데이트 된 (경쟁적이지는 않지만) 링크를 제공하고 싶다는 것입니다.
Neil

아,이 경우에는 이미 수정되었습니다
ASCII 전용

7

, 62 50 48 45 42 40 바이트

2 바이트를 절약 한 @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 감사합니다! 실제로 이것은 후행없이 작동하기 때문에 2 바이트를 절약합니다 ¦.
Steadybox

레코드의 경우 코드가 더 이상 TIO에서 제대로 작동하지 않으므로 일부 업데이트로 인해이 문제가 발생한 것 같습니다. 이 답변이 게시되었을 때 TIO가 사용했던 버전과 함께 작동했기 때문에 여전히 유효한 답변입니다.
Steadybox

6

05AB1E , 45 44 43 바이트

암호:

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

사전 설명 :

•—‹íć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 예술에 매우 능숙합니다.
Esolanging Fruit

4
fourty four은 여전히 ​​fourty four입니다.
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

루비, 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)]}

설명

각 4 × 4 광장은 공간과 포함 /또는 \. 전체 다이아몬드 패턴을 나타 내기 위해 플로팅합니다. 경계에서 부분 패턴을 피하려면 아래와 같이 특정 2x2 사각형을 비워 두어야합니다.

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

Ungolfed 버전 -설명을 돕기 위해 위의 내용을 인쇄하도록 수정되었습니다.

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 바이트

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

시도 해봐


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

자바 스크립트 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]?'\\':' '

이제는 읽을 수 없으므로 기본 설명입니다.

  • 우리는 왼쪽 상단에서 오른쪽 하단으로 공간을 바둑판 식으로 배열합니다
  • 기본적으로 8 개의 문자마다 반복되는 6 개의 대각선으로 그려집니다. 2 개의 실선 및 4 개의 "대시"(2 개의 문자, 2 개의 공백 ...)
  • 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

캔버스 , 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.