Làm cho tôi một cái chăn!


16

Tôi muốn một cái chăn trông như thế này. Mỗi dải đi qua, dưới, trên, dưới. Bạn có thể in nó không?

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

Không gian lưu trữ ở cuối mỗi dòng và dòng mới theo dõi được chấp nhận.

Hãy nhớ rằng, đây là , vì vậy mã có ít byte nhất sẽ thắng.

Bảng xếp hạng

Dưới đây là Stack Snippet để tạo cả bảng xếp hạng thông thường và tổng quan về người chiến thắng theo ngôn ngữ.

Để đảm bảo rằng câu trả lời của bạn hiển thị, vui lòng bắt đầu câu trả lời của bạn bằng một tiêu đề, sử dụng mẫu Markdown sau:

# Language Name, N bytes

nơi Nlà kích thước của trình của bạn. Nếu bạn cải thiện điểm số của mình, bạn có thể giữ điểm số cũ trong tiêu đề, bằng cách đánh bại chúng thông qua. Ví dụ:

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

Nếu ở đó bạn muốn bao gồm nhiều số trong tiêu đề của mình (ví dụ: vì điểm của bạn là tổng của hai tệp hoặc bạn muốn liệt kê riêng các hình phạt cờ phiên dịch), hãy đảm bảo rằng điểm thực tế là số cuối cùng trong tiêu đề:

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

Bạn cũng có thể đặt tên ngôn ngữ thành một liên kết mà sau đó sẽ hiển thị trong đoạn trích bảng xếp hạng:

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


Các cạnh phải có vẻ sai lệch.
Bạch tuộc ma thuật Urn

Là cạnh trái không chồng chéo dự định?
xnor

@xnor Xin lỗi, xấu quá.
Oliver Ni

@carusocomputing Đã sửa.
Oliver Ni

10
Nếu bạn đã sử dụng Sandbox, những vấn đề đó có thể tránh được trước khi vấn đề này xảy ra.
Mego

Câu trả lời:


8

Python 2, 84 byte

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

Nhờ Sp3000 cho 6 byte từ việc biến các phép toán số học thành các bit bit.


Whoa ... thế nào ????
Oliver Ni

1
i+~j>>2&1^i+j>>1&2^i&4, có lẽ?
Sp3000

@ Sp3000 Đó là một số ưu tiên bitwise tốt đẹp. Tôi sẽ phải nhớ rằng khi kết hợp các booleans có nguồn gốc số học vào một chỉ mục.
xnor

5

Bình thường, 36 byte

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

Dùng thử trực tuyến: Trình diễn

Giải trình:

Chúng ta có thể xác định ký hiệu bằng cách kiểm tra 3 điều kiện:

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

Nếu chúng ta hiểu [A,B,C]là số nhị phân, chúng ta sẽ có ánh xạ sau:

01234567
 \// \/\

Chúng ta cũng có thể giải thích [A,B,C] là số thập phân và thực hiện tra cứu được lập chỉ mục mô-đun trong chuỗi. Điều này không tạo ra sự khác biệt bởi vì 10 mod 8 = 2.

Bây giờ đến mã:

V24lặp lại N(hàng-idx) trên[0, 1, ..., 23] .

sm...48ánh xạ các số d(cột-idx) trong[0, 1, ..., 47] ký tự và in chuỗi kết hợp.

++BNdtạo danh sách [N, N+d], +...t-Ndnối thêm N-d-1. Vì vậy, chúng tôi đã nhận được danh sách [N, N+d, N-d-1]. m<3%k8kiểm tra từng số được tính k, nếu 3 < k % 8, vì vậy, điều này đưa ra danh sách với các điều kiện[A, B, C] .

i...T xác nhận điều này đến một số thập phân và sau đó @" \// \/\\" thực hiện tra cứu trong chuỗi.

Nhiều hơn hoặc ít hơn cùng một mã trong Python2: 98 byte :

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)

Chỉ cần cố gắng để nắm bắt với Pyth để bất kỳ câu trả lời đúng đắn với một lời giải thích tốt sẽ nhận được một upvote từ tôi. sẽ thử Pyth sau thử nghiệm cơ sở 3 của tôi :)
ElPedro

Bạn cũng nên đăng câu trả lời Python2 ...
Jerry Jeremiah

3

Perl, 209 + 17 = 226 byte

Chạy với -mList::Util=max -M5.010(cờ thứ hai là miễn phí). Nó không chiến thắng bất kỳ cuộc thi đếm byte nào, nhưng đây là giải pháp của tôi.

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

Có thể đọc được

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

Thủ tục tạo từng phân đoạn, sau đó lặp lại mẫu 6 lần, sau đó xuất tổng kết quả 3 lần.


Ái chà, tôi không phải là người trả lời lâu nhất nữa :) +1 vì đã làm điều đó trong Perl.
ElPedro

Tôi có thể đã làm nó giống như mọi người khác (chỉ in một loạt các dòng), nhưng tôi quyết định làm mọi thứ theo thuật toán thay vì rõ ràng vì tôi cảm thấy nó mát hơn.
Gabriel Benamy

Làm mát theo tiêu chuẩn của tôi. Tôi đã thực hiện một cách tiếp cận mà tôi chưa bao giờ thử trước khi nó là một thử thách thú vị. Như tôi đã nói, +1. Không có xúc phạm dự định bởi nhận xét của tôi. Đó là lý do tại sao tôi nâng cao.
ElPedro

3

Python 3, 174 172 138 byte

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

Tìm thấy mẫu nhỏ nhất mà tôi có thể tìm thấy trong chăn (mẫu "dưới" và "trên"), nhét nó vào danh sách và thêm một số hiểu danh sách và thao tác chuỗi để giải nén tất cả. Thay thế tất cả các dấu gạch chéo đã thoát bằng "b" và thay thế chúng trở lại sau để lưu một vài byte.

Cảm ơn Oliver vì đã chơi golf 2 byte!

Đã loại bỏ 34 byte bằng cách thay đổi mẫu - toàn bộ mẫu cho chăn hiện nằm trong một danh sách duy nhất, do đó chỉ cần một vòng lặp để mở khóa mẫu.


1
Chào mừng đến với PPCG! bài viết đầu tiên tốt đẹp! Bạn có thể cạo một byte trong python 2 Tôi nghĩ rằng, bạn không cần parends để in.
Rɪᴋᴇʀ

1
Cảm ơn Easterly Irk, tôi đã lẩn quẩn trong môn đánh gôn quá lâu rồi, nên tôi quyết định tham gia. :)
TheCrazyInventor

1
Bạn có thể lưu hai byte bằng cách xóa khoảng trắng sau 0*6u*6
Oliver Ni

1
Bạn có thể tiết kiệm 4 byte bằng cách sử dụng "b" cho dấu gạch chéo kép và bất cứ nơi nào bạn cần một dấu gạch chéo ngược đơn giản chỉ cần sử dụng thoát: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: mã của bạn dường như không tạo ra một tấm chăn hợp lệ.
TheCrazyInventor

3

Python 2, 171 170 168 byte

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)

Không xinh và không khéo. Chỉ cần đặt biến cho các nhóm chuỗi được sử dụng thường xuyên nhất sau đó kết hợp chúng và in kết quả 3 lần. Có thể thử và chơi golf sau nếu tôi không tìm thấy cách tiếp cận tốt hơn.

1 byte được lưu bằng cách sử dụng đầu vào thô trên bài tập. Cảm ơn @ nedla2004

-2 bằng cách chỉ định một vài biến nhưng vẫn không phải là đối thủ nặng ký


1
Bạn có thể định nghĩa là r "\\"
nedla2004

Cảm ơn @ nedla2004 Điểm tốt. Đã ném nó cùng nhau khá nhanh và sẽ xem xét nó sau. Đó là một khởi đầu tốt :)
ElPedro

Hầu hết quan tâm đến việc tìm cách làm tròn các *6yếu tố trên bộ dữ liệu. Có ý kiến ​​gì không?
ElPedro

1
Tôi không biết làm thế nào bạn có thể làm điều đó, nhưng dòng cuối cùng có thể exec r"print'\n'.join(d);"*3.
nedla2004

Tôi chỉ đăng một thay thế chỉ quan tâm. Cũng sẽ đánh giá ý kiến ​​của bạn về điều đó.
ElPedro

2

SOML , 106 byte

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

một phiên bản không cạnh tranh bằng cách sử dụng chức năng mà tôi mới chỉ thêm gần đây: ( 83 67 66 byte)

giải trình:

  →$\\→#////→@”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

Ruby, 75 byte

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

Chơi golf tốt hơn, sử dụng một chuỗi tìm kiếm 8 byte đơn được lập chỉ mục bởi j & 4 bên cạnh các tham số khác, thay vì chuỗi 4 byte có thể sửa đổi.

Ruby, 81 byte

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

In các ký tự sọc chéo theo nhân vật. Ký tự chính xác được chọn từ một chuỗi gồm 4 ký tự tùy thuộc vào sự hiện diện / vắng mặt của mỗi chuỗi. Ký tự chồng chéo được thay đổi tùy thuộc vào chuỗi nào ở trên.

Đã bình luận

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

Perl, 132 131 113 byte

@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

Ung dung:

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 byte

Sử dụng mã hóa CP-1252 .

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

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

Giải trình

Sử dụng thủ thuật mod-8 được giải thích một cách thành thạo trong câu trả lời thứ ba của Jakube .

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

Python, 245 236 234 233 230 216 212 198 195 byte

OK, dài hơn câu trả lời cuối cùng của tôi (và bất kỳ câu trả lời nào khác) nhưng sẽ quan tâm đến phản hồi về cách tiếp cận.

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',' ')

Biên tập

-9 do @ nedla2004 chơi bóng nhiều hơn tôi

-2 bằng cách lấy lambda bên ngoài vòng lặp và do đó mất 2 khoảng cách thụt lề

-1 bằng cách sử dụng in' '*3thay in 0,1,2vì tôi không sử dụngh . nó chỉ là một quầy.

-3 Tại sao, tại sao, tại sao tôi lại để một dòng mới và 2 lần thụt lề giữa lần thứ hai và bản in ??? Muộn rồi. Sẽ xem lại vào ngày mai.

-14 Thực sự có thể mất lambda hoàn toàn và chỉ bao gồm bộ giải mã cơ sở 3 trực tiếp sau câu lệnh in. Trông có vẻ lộn xộn nhưng sau tất cả, đây là mã golf :)

-4 Không có điểm nào thiết lập một biến cho danh sách số nguyên. Chỉ cần sử dụng nó trực tiếp trong vòng lặp thứ hai.

-14 và không có điểm nào sử dụng vòng ngoài. Chỉ cần nhân số nguyên với 3 (không biết xấu hổ bị đánh cắp từ @ nedla2004 để có được dưới 200 :))

-3 Đã lưu 3 bằng cách tạo \ = 0, / = 1 và dấu cách = 2. Điều này làm cho danh sách số nguyên ngắn hơn vì ba trong số 3 số cơ sở hiện có số 0 đứng đầu

Làm thế nào nó hoạt động (và nó làm)

Vì chỉ có 3 ký tự được sử dụng:

  1. l là danh sách 8 mẫu lặp lại dưới dạng tương đương số nguyên của biểu diễn cơ sở 3 của chúng giả sử rằng "" = 0, "\" = 1 và "/" = 2

  2. Mã lambda Mã đầu tiên sau câu lệnh in là bộ chuyển đổi nhẹ từ số nguyên sang chuỗi 3 cơ sở

  3. Vòng lặp thứ nhất lặp 3 lần và lần thứ hai in mỗi dòng với 3 ký tự cơ sở nhân với 6 và được thay thế bằng /, \ hoặc dấu cách.

Tôi chắc chắn rằng tôi có thể sử dụng regex thay vì lồng thay thế () nhưng tôi quá mệt mỏi để thử ngay bây giờ. Đây chỉ là một thử nghiệm và dài hơn nỗ lực Python trước đây của tôi nhưng đã đăng chỉ cho bất kỳ nhận xét nào về cách tiếp cận (và cũng vì tôi chưa bao giờ làm việc ở cơ sở 3 trước đây và tôi khá thích làm việc với trình chuyển đổi).


1
Bạn chỉ có thể xóa phân chia đầu tiên trong chuyển đổi cơ sở 3.
nedla2004

Vì một số lý do khiến tôi gặp vấn đề sớm hơn nhưng chỉ cần thử và nó hoạt động ngay bây giờ. cảm ơn rất nhiều vì đã tỉnh táo hơn tôi Tôi sẽ chỉnh sửa lại câu trả lời của mình (và bạn vừa lưu cho tôi 9 byte :))
ElPedro

1
Tôi viết lại chuyển đổi cơ sở 3, nó không còn là lambda nữa, tôi phải biến nó thành một hàm, nhưng nó có thể được chuyển đổi trở lại thành lambda. Bạn có thể tìm thấy chức năng ở đây .
nedla2004

Cảm ơn. Tôi nghĩ rằng sự kết hợp của cả hai có thể hoạt động nhưng đó có lẽ là một công việc cho tối mai :) Cảm ơn một lần nữa cho ý kiến ​​của bạn.
ElPedro

1
Tôi đã nhận nó xuống 169, ở đây .
nedla2004

2

Ruby, 135 byte

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

Mảng số tương ứng với từng thành phần của mỗi dòng, được dịch sang cơ sở 3: = 0, \= 1,/ = 2, sau đó được chuyển đổi thành số thập phân. Các cuộc gọi gsub () là quá lớn, mặc dù.

Và, ngay lúc này, tôi đã thấy câu trả lời của @ ElPedro. :-( Chỉ là trùng hợp.


e.to_s(3).rjust(8,"0")("%8s"%e.to_s(3)); gsub("0"," ").gsub("1","\\")..gsub("2","/")tr("013"," \\/"); "\n"$/; .join*"". Bạn cũng có thể lưu một byte bằng cách chia tất cả các số trong mảng cho 4 và thay thế ebằng (e*4).
Jordan

Rất tiếc, tôi đoán rằng nên được tr("021"," /\\").
Jordan


2

PHP 157 126 byte

Nhận các thay đổi trong danh sách @Titus trong các nhận xét ... Tôi cảm thấy khó chịu Tôi đã bỏ lỡ điểm 1 mà tôi nên nắm bắt, nhưng tôi không biết strtr () tồn tại, nơi hầu hết các khoản tiết kiệm đến - công việc tuyệt vời!

MỚI:

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

CŨ:

<?$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
";}

Bởi vì tất cả các dấu gạch chéo ngược cần thoát, nó tiết kiệm khá nhiều không gian để đóng gói chúng thành các ký tự khác nhau và thay thế chúng cho đầu ra, và sau đó một khi tôi gọi str numplace () thì nên sử dụng nó thường xuyên nhất có thể.


1
Bạn có thể xóa thẻ mở nếu bạn sử dụng -r. Sử dụng năm bước này để lưu thêm 30 byte: ideone.com/wt4HGB 1) sử dụng $a[...]trực tiếp làm str_replacetham số thay vì gán nó. 2) strtrthay vì str_replace. 3) Sử dụng chữ số thay vì chữ cái. 4) Bao gồm các nhiệm vụ trong tiếng vang. 5) Don conct gán $a, chỉ cần sử dụng nó.
Tít

1

Trăn 2, 169 161 165 160 155 154 152

Dựa trên câu trả lời của @ ElPedro, với những cải tiến nhỏ. Để xem giải thích, xem câu trả lời của họ . Đây là Python 2, mặc dù dường như có dấu ngoặc đơn gần print.

Đã lưu 8 byte bằng cách sử dụng một biến cho replace.Điều đó chỉ hoạt động cho các chuỗi và sử dụng một hàm cho nó sẽ dài hơn.

Đã lưu 4 byte bằng cách thấy rằng @ElPedro nhận ra rằng họ không cần l, và tôi cũng không.

Đã lưu 5 byte bằng cách không lật range(8)và thay vì sử dụng +=để nối vào r, thêm r vào cuối chữ số mới. Hãy thử nó bằng cách sử dụng repl.it

Đã lưu 5 byte bằng cách đánh cắp danh sách giá trị mới của @ ElPedro.

Đã lưu 1 byte bằng cách loại bỏ khoảng trắng giữa in(.

Đã lưu 2 byte bằng cách loại bỏ biến a.

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',' ')

Bạn có thể lưu 1 bằng cách xóa khoảng in(
trắng

Ngoài ra, tôi đã mất ba byte bằng cách sắp xếp lại thứ tự các số đại diện cho mỗi ký tự trong danh sách cơ sở 3. Xem câu trả lời của tôi để giải thích. hãy sao chép. Theo như tôi biết thì đây là một nỗ lực chung và tôi rất vui khi thấy rằng ý tưởng ban đầu của tôi có ít nhất một số tiềm năng :)
ElPedro

Bạn không cần a=3**i. Chỉ cần sử dụng for i in range(8):r=x / 3 ** i% 3 +rđể lưu một cặp vợ chồng. ưu tiên nhà điều hành chăm sóc phần còn lại :)
ElPedro

Không chắc chắn làm thế nào để phân định các ký tự chuyển đổi chuỗi. Trình phân tích cú pháp đã xóa chúng trong nhận xét cuối cùng của tôi vì vậy đừng chỉ sao chép và dán từ đề xuất của tôi nếu không nó sẽ bị
hỏng

Điểm tốt, tôi hiểu.
nedla2004

1

PHP, 184 byte

<?$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";

Đầu ra:

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

0

Mẻ, 152 byte

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

Xử lý chuỗi trong Batch hút, vì vậy đây có lẽ là cách tiếp cận tốt nhất. Cuộc gọi và rơi xuống rất ngắn hơn một forvòng lặp lồng nhau . Ít nhất tôi không phải trích dẫn dấu gạch chéo ngược của mình!


0

APL, 110 byte

Tôi mới sử dụng APL, vì vậy đây là một giải pháp đơn giản.

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

Đây là cách tiếp cận của tôi: lưu ý rằng sau 8 dòng chăn đầu tiên, mẫu sẽ tự lặp lại. Do đó tôi chỉ cần xác định 8 dòng đầu tiên, và sau đó tôi có thể lặp lại chúng 3 lần. Cũng lưu ý rằng mỗi dòng lặp lại sau 8 ký tự đầu tiên. Do đó, để xác định một dòng duy nhất tôi chỉ cần xác định 8 ký tự đầu tiên và sau đó lặp lại 8 lần.

Đây là một giải pháp vô căn cứ:

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

Tôi đã lưu ý ở trên rằng D là đảo ngược của B, E là đảo ngược của A và H là đảo ngược của F. Trong mã thực tế của tôi, tôi tận dụng điều này bằng cách không xác định D, F hoặc H và sử dụng hàm đảo ngược :

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


0

Ruby, 132 byte

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

câu trả lời rất đơn giản.


0

Haskell, 96 byte

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