담요 만들어 줘!


16

이렇게 보이는 담요를 원합니다. 각 스트립은 오버, 언더, 오버, 언더로 진행됩니다. 인쇄 할 수 있습니까?

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

각 줄 끝의 후행 공백과 후행 줄 바꿈이 허용됩니다.

이것은 이므로 바이트 수가 가장 적은 코드가 이깁니다.

리더 보드

다음은 일반 리더 보드와 언어 별 수상자 개요를 생성하는 스택 스 니펫입니다.

답변이 표시되도록하려면 다음 마크 다운 템플릿을 사용하여 헤드 라인으로 답변을 시작하십시오.

# Language Name, N bytes

N제출물의 크기는 어디에 있습니까 ? 당신이 당신의 점수를 향상시킬 경우에, 당신은 할 수 있습니다 를 통해 눈에 띄는에 의해, 헤드 라인에 오래된 점수를 유지한다. 예를 들어 :

# Ruby, <s>104</s> <s>101</s> 96 bytes

헤더에 여러 숫자를 포함하려는 경우 (예 : 점수가 두 파일의 합계이거나 인터프리터 플래그 페널티를 별도로 나열하려는 경우) 실제 점수가 헤더 의 마지막 숫자 인지 확인하십시오 .

# Perl, 43 + 2 (-p flag) = 45 bytes

언어 이름을 링크로 만들어 리더 보드 스 니펫에 표시 될 수도 있습니다.

# [><>](http://esolangs.org/wiki/Fish), 121 bytes


오른쪽 가장자리가 잘못 정렬 된 것 같습니다.
Magic Octopus Urn

왼쪽 가장자리가 겹치지 않습니까?
xnor

@xnor 죄송합니다.
Oliver Ni

@carusocomputing 수정되었습니다.
올리버 니켈

10
샌드 박스를 사용했다면이 문제가 해결되기 전에 이러한 문제를 피할 수있었습니다.
Mego

답변:


8

파이썬 2, 84 바이트

R=range(24)
for i in R:print''.join(" \// \/\\"[i+~j>>2&1^i+j>>1&2^i&4]for j in R*2)

산술 연산을 비트 연산으로 변환하는 6 바이트의 Sp3000 덕분에


우와 ... 어떻게 ????
Oliver Ni

1
i+~j>>2&1^i+j>>1&2^i&4, 혹시?
Sp3000

@ Sp3000 비트 우선 순위가 좋습니다. 산술적으로 파생 된 부울을 인덱스로 결합 할 때 기억해야합니다.
xnor

5

Pyth, 36 바이트

V24sm@" \// \/\\"im<3%k8++BNdt-NdT48

온라인으로 사용해보십시오 : 데모

설명:

세 가지 조건을 확인하여 기호를 결정할 수 있습니다.

A := row % 8 > 3
B := (row + column) % 8 > 3
C := (row - column - 1) % 8 > 3

[A,B,C]이진수로 해석 하면 다음과 같은 매핑이 나타납니다.

01234567
 \// \/\

또한 [A,B,C]십진수로 해석 하고 문자열에서 모듈 식 색인 조회를 수행 할 수 있습니다 . 때문에 차이가 없습니다 10 mod 8 = 2.

이제 코드로 :

V24반복 N(행 IDX) 위에 [0, 1, ..., 23].

sm...48숫자 d(column-idx) [0, 1, ..., 47]를 문자에 매핑하고 결합 된 문자열을 인쇄합니다.

++BNd목록 생성 [N, N+d], +...t-Nd추가합니다 N-d-1. 그래서 우리는 목록을 얻었습니다 [N, N+d, N-d-1]. m<3%k8각 계산 된 숫자 k를 확인 3 < k % 8하여 조건이있는 목록을 제공합니다 [A, B, C].

i...T이것을 10 진수로 수렴 한 다음 @" \// \/\\"문자열에서 조회를 수행합니다.

파이썬 2에서 거의 같은 코드 : 98 바이트 :

R=range(8)
for r in R*3:print''.join(" \// \/\\"[4*(r>3)+2*((r+c)%8>3)+((r-c-1)%8>3)]for c in R*6)

Pyth와 손을 잡으려고 노력하면 좋은 설명이 든 괜찮은 대답이 나에게서 찬성을 얻습니다. 내 기본 3 실험 후 Pyth를 시도하려고했습니다 :)
ElPedro

Python2 답변도 게시해야합니다 ...
Jerry Jeremiah

3

펄, 209 + 17 = 226 바이트

다음으로 실행합니다 -mList::Util=max -M5.010(두 번째 플래그는 무료입니다). 바이트 수 경쟁에서이기는 것은 아니지만 여기 내 솔루션이 있습니다.

for(0..7){@b=(1)x8;@b[$_+3..$_+7]=(3)x4;@b[7-$_..10-$_]=(2)x4;for$c(0..2){$b[$c+8]=max$b[$c+8],$b[$c];$b[5-$c]=max$b[5-$c],$b[13-$c];}push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6;}say for@a,@a,@a

읽을 수있는 :

for(0..7){
    @b=(1)x8;
    @b[$_+3..$_+7]=(3)x4;
    @b[7-$_..10-$_]=(2)x4;
    for$c(0..2){
        $b[$c+8]=max$b[$c+8],$b[$c];
        $b[5-$c]=max$b[5-$c],$b[13-$c];
    }
    push@a,sprintf("%-8s",join("",@b[3..10])=~tr[123][ /\\]r)x6
}
say for@a,@a,@a

절차 적으로 각 세그먼트를 생성 한 다음 패턴을 6 번 반복 한 다음 총 결과를 3 번 ​​출력합니다.


Woah, 나는 더 이상 가장 긴 대답이 아닙니다 :) 어쨌든 Perl에서 해냈습니다.
ElPedro

나는 다른 모든 사람들과 같은 방식으로 (단지 여러 줄을 인쇄) 할 수 있었지만 더 시원하다고 느꼈기 때문에 명시 적으로 대신 알고리즘 적으로 일하기로 결정했습니다.
가브리엘 베 나미

내 표준에 의해 시원합니다. 나는 전에 시도한 적이없는 접근 방식을 취했는데 그것은 흥미로운 도전이었습니다. 내가 말했듯이 +1. 내 의견에 의한 모욕은 없습니다. 그래서 제가 공감했습니다.
ElPedro

3

파이썬 3 174 172 138 바이트

print("\n".join(o*6for o in("bbbb////"," bb//// ","  ////  "," ////bb ","////bbbb","b//  bbb","bb    bb","bbb  //b")*3).replace("b","\\"))

담요에서 찾을 수있는 가장 작은 패턴 ( "아래"및 "위"패턴)을 찾아서 목록에 붙인 다음 목록 이해와 문자열 조작을 추가하여 모두 압축을 풉니 다. 이스케이프 된 모든 백 슬래시를 "b"로 대체하고 나중에 몇 바이트를 절약하기 위해 다시 대체했습니다.

2 바이트를 골라 낸 올리버에게 감사드립니다!

패턴을 변경하여 34 바이트를 제거했습니다. 블랭킷의 전체 패턴이 이제 단일 목록에 있으므로 패턴 랩핑을 해제하는 데 하나의 루프 만 필요합니다.


1
PPCG에 오신 것을 환영합니다! 좋은 첫 포스트! 파이썬 2에서 바이트를 면도 할 수 있다고 생각합니다. 인쇄를 위해 parend가 필요하지 않습니다.
Rɪᴋᴇʀ

1
Easterly Irk에게 감사합니다. 저는 너무 오랫동안 코드 골프에 숨어 있었으므로 참여하기로 결정했습니다. :)
TheCrazyInventor 2016

1
당신은 후 공간을 제거하여 두 개의 바이트를 저장할 수 0*6u*6
올리버 니켈

1
이중 백 슬래시에 "b"를 사용하여 4 바이트를 절약 할 수 있으며 단일 백 슬래시가 필요한 곳에서는 이스케이프를 사용하면됩니다.print((("\n".join(o*6 for o in("bb////"," b//// "," //// "," ////b ",""))+"\n".join(u*6 for u in("////bb","\\// b\\","b b","b\\ //\\","")))*3).replace("b","\\\\"))
dzaima

dzaima : 코드가 유효한 담요를 생성하지 않는 것 같습니다.
TheCrazyInventor

3

파이썬 2 171 170 168 바이트

a,b,c=r"\\","/"*4," "
f,g=c*2,c+a+b+c
d=(a*2+b)*6,g*6,(f+b+f)*6,g[::-1]*6,(b+a*2)*6,('\\//'+f+a+"\\")*6,(a+f*2+a)*6,(a+"\\"+f+'//\\')*6
for e in 0,1,2:print'\n'.join(d)

예쁘지 않고 영리하지도 않습니다. 가장 자주 사용되는 문자열 그룹에 변수를 설정 한 다음 결합하여 결과를 3 번 ​​인쇄합니다. 더 나은 접근 방법을 찾지 못하면 나중에 더 골프를 칠 수 있습니다.

할당에서 원시 입력을 사용하여 1 바이트를 절약했습니다. 감사합니다 @ nedla2004

-2 몇 가지 변수를 할당하지만 여전히 심각한 경쟁자는 아님


1
a를 r "\\"로 정의 할 수 있습니다.
nedla2004

감사합니다 @ nedla2004 좋은 지적. 이것을 매우 빨리 합쳐서 나중에 보려고했습니다. 좋은 시작입니다 :)
ElPedro

대부분의 둥근 수있는 방법을 찾는 데 관심이 *6있지만 각 튜플 요소. 어떤 아이디어?
ElPedro

1
어떻게 할 수 있는지 모르겠지만 마지막 줄은입니다 exec r"print'\n'.join(d);"*3.
nedla2004

방금 관심없는 대안을 게시했습니다. 그것에 대한 귀하의 의견도 소중히 생각하십시오.
ElPedro

2

SOML , 106 바이트

3{"\\\\////”6*p" \\//// ”6*p"  ////  ”6*p" ////\\ ”6*p"////\\\\”6*p"\//  \\\”6*p"\\    \\”6*p"\\\  //\”6*p

내가 최근에 추가 한 기능을 사용하는 비경쟁 버전 : ( 83 67 66 바이트)

설명:

  →$\\→#////→@”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~”
  →$                                                                in the further code replace "$" with "  "
    \\→#                                                            replace "#" with "\\"
        ////→@                                                      replace "@" with "////"
              ”6*p"→~3{"##@~ #@ ~$@$~ @# ~@##~\//$#\~#$$#~#\$//\~” the code to exchange stuff in

so that results in:
”6*p"→~3{"\\\\////~ \\//// ~  ////  ~ ////\\ ~////\\\\~\//  \\\~\\    \\~\\\  //\~”
”6*p"→~3{"A~B~C~D~E~F~G~H~”  modified version of the program (removing "/","\" and " " and replaced with A,B,C,ect.)
”6*p"→~                      replace in the further program "~" with ”6*p" which is:
”                            end string
 6*                          repeat the last thing in stack 6 times
   p                         output the result
    "                        start a string
resulting program: 
3{"A”6*p"B”6*p"C”6*p"D”6*p"E”6*p"F”6*p"G”6*p"H”6*p"”
shortened example:
3{"A”6*p"B”6*p"H”6*p"”
3{                      repeat 3 times
  "A”                   push "A" (original: "\\\\////")
     6*p                output it multiplied by 6
        "B”             push "B" (original: " \\//// ")
           6*p          output it multiplied by 6
              "H”       push "H" (original: "\\\  //\")
                 6*p    output it multiplied by 6
                    "”  push an empty string (shorter to do ~” than ”6*p)

2

루비, 75 바이트

1152.times{|i|$><<"\\/ /\\\\ /"[(i+j=i/48)/4&1|(i-j)/2&2|j&4]+$/*(i%48/47)}

수정 가능한 4 바이트 문자열이 아닌 다른 매개 변수 외에 j & 4에 의해 색인 된 단일 8 바이트 문자열 조회를 사용하여 더 나은 성능을 제공합니다.

루비, 81 바이트

1152.times{|i|j=i/48%8;$><<"\\#{'/\\'[j/4]} /"[(i+j)/4&1|(i-j)/2&2]+$/*(i%48/47)}

대각선 줄무늬를 문자별로 인쇄합니다. 각 가닥의 유무에 따라 4 개의 문자열 중에서 올바른 문자가 선택됩니다. 오버랩 문자는 어떤 스트랜드가 위에 있는지에 따라 달라집니다.

댓글

1152.times{|i|j=i/48%8;        #Iterate through all printable chars. j is line number.
  $><<"\\#{'/\\'[j/4]} /"[     #Print a char from "\/ /" if j/4 even or "\\ /" if odd. character changes depending which strand on top.
   (i+j)/4&1|(i-j)/2&2]+       #Print \ if (i+j)/4==0, / if (i-j)/2&2 >0, space if both false. As above if both true. 
   $/*(i%48/47)                #If on column 47, print a newline.
}

2

132 131 113 바이트

@a=((0)x4,1..4);map{say+(map$a[7-$_]?$a[$_]*$r?'/':'\\':$a[$_]?'/':$",0..7)x6;push@a,shift@a;$_%4||($r=!$r)}0..23

언 골프 드 :

use strict;
use warnings;
use feature 'say';

my @a = ((1) x 4, (0) x 4);  # print '\' if true
my @b = ((0) x 4, (1) x 4);  # print '/' if true
my $r = 0;                   # print '\' over '/' if true

for (0 .. 23) {
    say((map { $a[$_] ? ($b[$_] * $r ? '/' : '\\') : ($b[$_] ? '/' : ' ') } 0 .. 7) x 6);
    unshift(@a, pop(@a));    # circular shift to left
    push(@b, shift(@b));     # circular shift to right
    $r = !$r if !($_ % 4);   # change print priority
}

2

05AB1E , 37 바이트

CP-1252 인코딩을 사용합니다 .

24FNU48FXXN+XN-<)8%3›J" \// \/\"è?}¶?

온라인으로 사용해보십시오!

설명

Jakube의 pyth answer 에서 전문적으로 설명 된 mod-8 트릭을 사용합니다 .

24F                                    # for N in [0 ... 23] do:
   NU                                  # save N in X
     48F                               # for N in [0 ... 48] do:
        XXN+XN-<)                      # push [X,X+N,X-N-1]
                 8%                    # mod each by 8
                   3›                  # compare with 3
                     J                 # join
                      " \// \/\"è?     # index into string and print
                                  }    # end inner loop
                                   ¶?  # print newline

2

파이썬 245 236 234 233 230 216 212 198 195 바이트

좋아, 마지막 (그리고 다른) 답변보다 길지만 접근법에 대한 피드백에 관심이 있습니다.

for a in(40,4496,6200,5456,3240,1188,720,228)*3:print((`a%6561/2178`+`a%2178/729`+`a%729/243`+`a%243/81`+`a%81/27`+`a%27/9`+`a%9/3`+`a%3/1`)*6).replace('0','\\').replace('1','/').replace('2',' ')

편집하다

@ nedla2004이 (가) 나보다 공에 더 많이 있기 때문에 -9

루프 외부에서 람다를 가져 와서 2 개의 들여 쓰기 공간을 잃음으로써 -2

사용 하지 않기 때문에 in' '*3대신 -1in 0,1,2h어쨌든 . 카운터 일뿐입니다.

-3 왜, 왜, 왜 나는 두 번째와 인쇄 사이에 줄 바꿈과 2 개의 들여 쓰기를 남겼습니까 ??? 늦었 어. 내일 다시 방문 할 것입니다.

-14 실제로 람다를 완전히 잃을 수 있으며 print 문 바로 뒤에 기본 3 디코더를 포함시킵니다. 지저분한 것처럼 보이지만 결국 이것은 코드 골프입니다. :)

-4 정수 목록에 변수를 설정하는 포인트가 없습니다. 두 번째 for 루프에서 직접 사용하십시오.

-14이며 외부 루프를 사용하는 지점이 없습니다. 정수 튜플에 3을 곱하면됩니다 (@ nedla2004에서 뻔뻔스럽게 도난 당하여 200 미만) :)

-3 \ = 0, / = 1 및 space = 2를 만들어 3을 저장했습니다. 이것은 기본 3 개의 숫자 중 3 개가 선행 0을 가지므로 정수 목록을 더 짧게 만듭니다.

작동 방식 (및 작동 방식)

3 자만 사용되므로 :

  1. l은 ""= 0, "\"= 1 및 "/"= 2라고 가정하고 기본 3 표현과 동등한 정수인 8 개의 반복 패턴 목록입니다.

  2. 람다 print 문 다음의 첫 번째 코드는 정수에서 기본 3 문자열로의 경량 변환기입니다.

  3. 첫 번째 루프는 3 번 반복되고 두 번째 루프는 기본 3 자에 6을 곱하고 /, \ 또는 공백으로 대체하여 각 줄을 인쇄합니다.

중첩 된 replace () 대신 정규식을 사용할 수 있다고 확신하지만 지금 시도하기에는 너무 피곤합니다. 이것은 단지 이전의 파이썬 노력보다 실험이 길었지만 접근법에 대한 의견을 게시했습니다 (또한 이전 3 번에서 일한 적이 없으며 변환기 작업을 즐 겼기 때문에).


1
기본 3 변환에서 첫 번째 나눗셈을 제거 할 수 있습니다.
nedla2004

어떤 이유로 든 문제가 일찍 발생했지만 시도했지만 지금은 작동합니다. 나보다 깨어 주셔서 감사합니다. 나는 내 대답을 다시 편집 할 것입니다 (그리고 당신은 9 바이트를 절약했습니다 :)
ElPedro

1
나는 기본 3 변환을 다시 작성했는데 더 이상 람다가 아니며 함수로 만들어야했지만 람다로 다시 변환 될 수 있습니다. 당신은 기능을 찾을 수 있습니다 여기에 .
nedla2004

감사. 나는 두 가지의 조합이 효과가 있다고 생각하지만 내일 저녁에는 직업 일 것입니다 :) 귀하의 의견에 다시 한번 감사드립니다.
ElPedro

1
여기 169로 줄 였습니다.
nedla2004

2

루비, 135 바이트

puts [3320,1212,720,2172,6520,4144,2920,3184].map{|e|(e.to_s(3).rjust(8,"0").gsub("0"," ").gsub("1","\\").gsub("2","/"))*6+"\n"}.join*3

숫자 형 배열은 각 행의 각 구성 요소에 해당하며 밑수 3 : = 0, \= 1, /= 2로 변환 된 다음 10 진수로 변환됩니다. 그러나 gsub () 호출이 너무 큽니다.

그리고 지금 막 @ElPedro의 답변을 보았습니다. :-( 우연의 일치.


e.to_s(3).rjust(8,"0")("%8s"%e.to_s(3)); gsub("0"," ").gsub("1","\\")..gsub("2","/")tr("013"," \\/"); "\n"$/; .join*"". 또한, (4)로 어레이의 모든 숫자를 분할하고 대체하여 저장할 수 바이트 e(e*4).
Jordan

죄송합니다 tr("021"," /\\").
Jordan


2

PHP 157126 바이트

의견에 @Titus 목록을 변경하면 ... 나는 내가 잡아야 할 포인트 1을 놓쳤지만 화가 났지만 strtr ()이 존재한다는 것을 몰랐습니다.

새로운:

while($i<32)echo$b=strtr([3322,' 322 ','0220',' 223 ',2233,12013,3003,13021][$i++%8],['  ','\\','//','\\\\']),"$b$b$b$b$b\n";

낡은:

<?$a=[zzyy,' zyy ',syys,' yyz ',yyzz,xysxz,zssz,xzsyx];while($i<32){$b=$a[$i++%8];$b=str_replace([z,x,y,s],['\\\\','\\','//','  '],$b);echo"$b$b$b$b$b$b
";}

모든 백 슬래시를 이스케이프해야하므로 다른 문자로 묶고 출력을 대체 할 공간을 상당히 절약 한 다음 str_replace ()를 호출하면 가능한 한 자주 사용하는 것이 좋습니다.


1
를 사용하면 열린 태그를 제거 할 수 있습니다 -r. 이 5 단계를 사용하여 다른 30 바이트를 저장하십시오. ideone.com/wt4HGB 1) 할당하는 대신 매개 변수로 $a[...]직접 사용 str_replace하십시오. 2) strtr대신에 str_replace. 3) 글자 대신 숫자를 사용하십시오. 4) 에코에 과제를 포함시킵니다. 5) 할당하지 말고 $a사용하십시오.
Titus

1

파이썬 2, 169 161 165 160 155 154 152

@ElPedro의 답변을 바탕으로 약간 개선되었습니다. 설명을 보려면 답변을 참조하십시오 . 근처에 괄호가있는 것처럼 보이지만 Python 2 print입니다.

에 변수를 사용하여 8 바이트를 절약했습니다 replace.문자열에만 작동하며 함수를 사용하는 것이 더 길어집니다.

@ElPedro가 l이 필요 없다는 것을 깨달았으며 4 바이트도 절약했습니다.

을 뒤집지 range(8)말고 +=r을 추가하는 대신을 사용 하여 새 숫자의 끝에 r을 추가 하여 5 바이트를 절약했습니다 . repl.it를 사용하여 사용해보십시오

@ElPedro의 새로운 값 목록을 훔쳐서 5 바이트를 절약했습니다.

in와 사이의 공백을 제거하여 1 바이트를 절약했습니다 (.

변수 a를 제거하여 2 바이트를 절약했습니다.

for x in(40,4496,6200,5456,3240,1188,720,228)*3:
 r=''
 for i in range(8):r=`x/3**i%3`+r
 print(r*6).replace('0','\\').replace('1','/').replace('2',' ')

다음 의 첫 번째 공백 in과 공백을 제거하여 1을 절약 할 수 있습니다.(
ElPedro

또한 기본 3 목록의 각 문자를 나타내는 숫자의 순서를 재정렬하여 3 바이트를 잃었습니다. 설명은 내 답변을 참조하십시오. 자유롭게 복사하십시오. 내가 염려하는 한 이것은 공동 노력이며 내 원래 아이디어가 적어도 잠재력을 가지고 있음을 알게되어 기쁩니다. :)
기쁘다 ElPedro

당신은 필요하지 않습니다 a=3**i. for i in range(8):r=x / 3 ** i % 3 만 사용하십시오.+r 커플을 저장합니다. 운전자 우선 순위는 나머지를 처리합니다 :)
ElPedro

문자열 변환 문자를 구분하는 방법을 잘 모르겠습니다. 파서는, 그래서 그냥 복사 나의 제안에서 붙여 넣기하거나 휴식 것없는 내 마지막 코멘트에서 그들을 제거 :)
ElPedro

좋은 지적입니다.
nedla2004

1

PHP, 184 바이트

<?$p=['1111////',' 11//// ','  ////  ',' ////11 ','////1111','1//  111','11    11','111  //1'];for($j=0;$j<3;$j++)for($i=0;$i<8;$i++)echo str_replace(1,'\\',str_repeat($p[$i],6))."\n";

산출:

C:\PHP>php make-me-a-blanket.php
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\
\\\\////\\\\////\\\\////\\\\////\\\\////\\\\////
 \\////  \\////  \\////  \\////  \\////  \\//// 
  ////    ////    ////    ////    ////    ////  
 ////\\  ////\\  ////\\  ////\\  ////\\  ////\\ 
////\\\\////\\\\////\\\\////\\\\////\\\\////\\\\
\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\\//  \\\
\\    \\\\    \\\\    \\\\    \\\\    \\\\    \\
\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\\\\  //\

0

배치, 152 바이트

@call:l
@call:l
:l
@for %%s in (\\\\//// " \\//// " "  ////  " " ////\\ " ////\\\\ "\//  \\\" "\\    \\" "\\\  //\")do @echo %%~s%%~s%%~s%%~s%%~s%%~s

Batch에서 문자열 처리가 빨라지므로 이것이 최선의 방법 일 것입니다. 호출 및 폴 스루는 중첩보다 매우 짧습니다.for 루프 . 적어도 나는 내 백 슬래시를 인용 할 필요가 없습니다!


0

APL, 110 바이트

저는 APL을 처음 사용하므로 간단한 솔루션입니다.

A←48⍴'\\\\////'⋄B←48⍴' \\//// '⋄C←48⍴'  ////  '⋄F←48⍴'\//  \\\'⋄G←48⍴'\\    \\'⋄24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F  

여기 내 접근 방식이 있습니다 : 담요의 처음 8 줄 후에 패턴이 반복됩니다. 따라서 처음 8 줄만 정의하면 3 번 반복 할 수 있습니다. 또한 각 줄은 처음 8 자 뒤에 반복됩니다. 따라서 한 줄을 정의하려면 처음 8자를 정의한 다음 8 번만 반복하면됩니다.

ungolfed 솔루션은 다음과 같습니다.

A←48⍴'\\\\////'⋄ ⍝ set A to a 48 element vector (48⍴) of repeated '\\\\////'s
B←48⍴' \\//// '⋄ ⍝ set B to a 48 element vector (48⍴) of repeated ' \\//// 's
C←48⍴'  ////  '⋄ ⍝ ...
D←48⍴' ////\\ '⋄ ⍝ Note that this is actually the reverse of vector B
E←48⍴'////\\\\'⋄ ⍝ Note that this is actually the reverse of vector A
F←48⍴'\//  \\\'⋄
G←48⍴'\\    \\'⋄
H←48⍴'\\\  //\'⋄ ⍝ Note that this is actually the reverse of vector F

24 48 ⍴ A,B,C,D,E,F,G,H ⍝ Make a 24 by 48 character matrix (24 48⍴) by concatenating A,B...H
                        ⍝ and repeating the string until the matrix is full

위에서 D는 B의 반대, E는 A의 반대, H는 F의 반대입니다. 실제 코드에서는 D, F 또는 H를 정의하지 않고 역함수를 사용하여이를 활용합니다. :

24 48⍴A,B,C,(⊖B),(⊖A),F,G,⊖F


0

루비, 132 바이트

puts Zlib.inflate Base64.decode64 "eJzt0bENADAMAsGeKdggC/3+cyQRC+A2ipuT3RgJgHWGUjm6VXb2Vjn/3KpJ/qtIPlp1v+XSKZKPVk3y/x5+D6/3sAEUXQ+Q"

아주 간단한 대답입니다.


0

하스켈, 96 바이트

f n=n`mod`8`div`4
putStr$unlines[["\\ //\\ \\/"!!(f(x-y)+2*f(x+y)+4*f y)|x<-[0..47]]|y<-[0..23]]
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.