In favicon Stack Exchange


19

Thử thách

In hoặc trả về favicon Stack Exchange, như được cung cấp dưới đây:

 ___________________
/                   \
---------------------
|                   |
---------------------
|                   |
---------------------
\__________    _____/
           |  /
           | /
           |/

Đây là , vì vậy câu trả lời ngắn nhất trong mỗi ngôn ngữ sẽ thắng.


2
Là góc trên bên trái dự định sẽ hơi sai lệch?
Sản xuất ETH

@ETHproductions Nó đã được dự định, nhưng tôi đang thay đổi nó ngay bây giờ. Có vẻ như vụng về một trong hai cách.
sĩ523

2
Đầu ra thực tế là 219 byte, để tham khảo.
hoàn toàn là

Đường kẻ và / hoặc dấu cách trên đường được phép, phải không?
dzaima

Câu trả lời:


43

Hoạt động ngôn ngữ kịch bản Flashpoint , 263 195 byte

f={r="                   ";t="---------------------\n";s=" ___________________\n/"+r+"\\n"+t+"|"+r+"|\n"+t+"|"+r+"|\n"+t+"\__________    _____/\n           |  /\n           | /\n           |/";s}

Không phải là công cụ phù hợp cho công việc.

Gọi với:

hint call f;

Đầu ra:

Định dạng không thành công, vì phông chữ không phải là đơn cách.


49
Chỉ những gì khiến bạn nhìn vào một thử thách và nghĩ rằng "ồ, tôi nên trả lời rằng trong Chiến dịch Flashpoint" đánh đố tôi ...
hoàn toàn là

7
@totallyhuman Tôi đoán rằng kịch bản lang của nó chỉ thú vị để viết. Nó có khá nhiều hạn chế và hạn chế, vì vậy đôi khi bạn cần sử dụng một số cách giải quyết lạ, điều này làm cho nó thú vị (nhưng không thực tế lắm).
Steadybox

5
Hardcoding câu trả lời có thể sẽ cho bạn một điểm số tốt hơn.
NieDzejkob

2
@NieDzejkob Bây giờ, nó ngắn hơn việc chỉ mã hóa đầu ra, nhưng nhàm chán hơn phiên bản trước.
Steadybox

@totallyhuman Và đặc biệt với thử thách này, tôi muốn kiểm tra xem ngôn ngữ sẽ có giá trị như thế nào với thử thách phức tạp Kolmogorov (mà nó ít hơn nhiều so với lý tưởng).
Steadybox

11

Than , 38 37 33 30 byte

←×_χ↓F/||⟦ι¹¹⟧\×_⁹‖B_×ψ⁴↙↙³↑↑³

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Chỉnh sửa: Được quản lý để lưu một byte với sự trợ giúp của phản xạ, mặc dù @CarlosAlejo cho thấy trên thực tế nó có thể được thực hiện trong 37 byte mà không cần phản xạ. Đã lưu thêm 4 byte bằng cách vẽ bên trái và phản ánh cuối cùng. Chỉnh sửa: Câu trả lời 33 byte trước đó phụ thuộc vào việc ReflectButterflyOverlap()không in đè lên vùng chồng lấp với sự phản chiếu, vì vậy trong trường hợp hành vi này thay đổi, tôi đã tìm một giải pháp không dựa vào đó và dù sao kết quả cũng ngắn hơn, nhờ vào sử dụng sáng tạo in một mảng. Giải trình:

←×_χ                            Print 10 `_`s leftwards (top row)
    ↓                           Move down to the next row
     F/||                       For each character in the string `/||`
          ι                     Current character
           ¹¹                   Integer 11, prints as `-----------`
         ⟦   ⟧                  Put both into an array
                                Implicitly print on separate lines
              \                 Implicitly print `\`
               ×_⁹              Implicitly print 9 `_`s
                  ‖B            Reflect right, overlapping the axis
                    _           Implicitly print `_`
                     ×ψ⁴        Implicitly delete 4 characters
                        ↙↙³     Move down left and print three `/`s
                           ↑↑³  Move up and print three '|'s

2
Chơi rất tốt. Tôi thích rằng có bốn câu trả lời than cho câu hỏi này! ‖BOkhông phải là ngôn ngữ lần cuối tôi sử dụng nó - tôi sẽ phải ghi nhớ điều đó cho tương lai.
DLosc

Tôi đã phải tự mình nhìn thấy ý của bạn với "phản ánh cuối cùng ¼". Thực sự chơi tốt!
Charlie

8

/// , 98 byte

/'/  //&/
"""
|!! |//%/\\\/
!'|//#/_____//"/-------//!/'''' / ###____
\/!! \\&&
"""
\\##''#%'% %\/

Hãy thử trực tuyến! Hoặc, xem nó tương tác!


3
Có tiện ích nào cho phép tôi xem các "bước" khác nhau của chương trình /// không? (Thực hiện một phần sau mỗi lần thay thế.) Điều đó có thể giúp tôi hiểu rõ hơn về họ.
CAD97

@ CAD97 Tôi đã loay hoay với trình thông dịch trực tuyến và nó thường đi kèm với các tùy chọn gỡ lỗi, nhưng cách trình thông dịch trực tuyến ra lệnh đối số, nó không hoạt động theo cách đó. Bạn có thể tự lấy một bản sao của thông dịch viên và làm một cái gì đó như thế perl slashes.pl -d1 code.txt. Tôi hiện đang làm việc trên môi trường thực thi trực tuyến cho ///, nhưng điều đó có thể mất một chút thời gian.
Conor O'Brien

3
@ CAD97 Cho biết điều trực tuyến đã lên, hãy xem!
Conor O'Brien

8

JavaScript (ES6), 113 112 byte

(Đã lưu một byte nhờ @Craig Ayre.)

let f=

_=>` _19
/ 19\\
-21
| 19|
-21
| 19|
-21
\\_10 4_5/
 11| 2/
 11| /
 11|/`.replace(/.(\d+)/g,([a],b)=>a.repeat(b))
 
 console.log(f());


Có vẻ như bạn có một không gian đi lạc trước chức năng thay thế. Tôi vừa đưa ra một bản cập nhật tương tự cho giải pháp JS của tôi ở mức 113 byte. Không biết tôi nên đăng nó hay để bạn có nó.
Shaggy

Ah, đợi đã, chỉ thấy bây giờ bạn đã đăng giải pháp của mình trước khi tôi đăng bài của tôi. Tôi sẽ xóa của tôi khi tôi đến một máy tính và bạn có thể lưu một byte với replace(/.(\d+)/g,(a,b)=>a[0].repeat(b)).
Shaggy

Cảm ơn, Shaggy. Tôi đã viết một chương trình để tự động hóa loại câu trả lời này, và thật ngớ ngẩn khi nó đưa ra một không gian không cần thiết. replaceTuyên bố được đề xuất của bạn chắc chắn là một cải tiến, mà bây giờ tôi đã kết hợp trong chương trình của mình.
Rick Hitchcock

1
Bạn có thể lưu một mảng byte phù hợp a: ([a],b)=>a.repeat(b))?
Craig Ayre

Vâng cảm ơn! Tôi không quen với cú pháp đó.
Rick Hitchcock

7

SOGL V0.12 , 32 31 byte

^$∙r↑Ψ«2τγæΕž‘╬Æ╬⁷"ƧΡ⅟?0Ξ³‘6«8ž

Hãy thử nó ở đây!

Giải trình:

...‘               push a quarter of the icon
    Β             palindromize vertically
      ╬⁷           palindromize horizontally (these two should be ╬3 together, but spacing doesn't work correctly (though now it does since I fixed it))
        "...‘      push the extention
             6«8ž  at coordinates [12; 8] in the quad-palindromized image put that in

Một nửa:

 __________
/
-----------
|
-----------

và phần khác:

    
|  /
| /
|/

"Cùng nhau"? "Máng"? Ngoài ra, phải mất một chút thời gian để tìm ra rằng .trong lời giải thích có nghĩa string. Có thể sử dụng ^...'"...'?
Máy

@CalculatorFeline Tôi thường làm ...cho các chuỗi nén (hay còn gọi là vô nghĩa) nhưng gần đây tôi bắt đầu thực hiện một hoặc hai. Và hãy thoải mái sửa chữa lỗi lầm và ngữ pháp của tôi: p
dzaima

7

Python 2 , 115 byte, ý tưởng sáng tạo hơn

t,u,v,w,x,y,z='\n -/\\_|';k=w+t+11*u+z;i=t+21*v+t
print u+19*y+t+w+19*u+x+(i+z+19*u+z)*2+i+x+10*y+4*u+5*y+k+u,k,k+w

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

Python 2 , 102 byte, ý tưởng nhàm chán

print'eNrjUojHBFz6CpgghksXG+CqwaK2hgpqYxDuASkDM/S5kDUqKKDxUbn6XADUmClx'.decode('base64').decode('zip')

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


2
Tôi không bình chọn điều này vì tôi đã thấy phương pháp này được sử dụng quá nhiều lần. Nó chỉ là nhàm chán để xem đi xem lại nhiều lần.
R. Kap

8
@ R.Kap Trừ khi có một cách ngắn hơn, đó là một lý do khá độc đoán để downvote.
Dennis

1
@Dennis Có thể, nhưng tôi vẫn giữ quan điểm của mình và có quyền bày tỏ ý kiến ​​đó. Tôi đã thấy phương pháp này được sử dụng vô số lần cho các loại thử thách này và nó đòi hỏi rất ít để không sáng tạo về phần của OP, đó là những khía cạnh lớn, ít nhất là theo tôi, về những thách thức phức tạp của Kolomogorov, và do đó lý do tôi bỏ phiếu .
R. Kap

2
@ R.Kap Nếu các thuật toán nén mục đích chung có thể đánh bại các thuật toán thủ công một cách dễ dàng, thì đó là vấn đề của thách thức, không phải là câu trả lời. Tôi thậm chí còn không thể đánh bại Bubblegum bằng Jelly và việc giải nén có rất ít chi phí trong Jelly.
Dennis

2
@Dennis Tôi thậm chí không nói về độ dài mã ở đây. Tôi đang nói về nỗ lực và sáng tạo, mà theo tôi, câu trả lời này không thể hiện bằng ngôn ngữ mà người ta có thể làm nhiều hơn thế, đó là lý do tôi bỏ phiếu. Bây giờ, nếu bạn không đồng ý với lý luận của tôi đó là tốt. Trong trường hợp đó, chúng ta hãy đồng ý không đồng ý và kết thúc cuộc trò chuyện này ngay tại đây trước khi quá lâu. :)
R. Kap

6

Python 2, 124 byte

a,b,d,e,f,g,h=' _-|/\\\n';r=d*21+h+e+a*19+e+h;n=f+h+a*11+e;print a+b*19+h+f+a*19+g+h+r*2+r[:22]+g+b*10+a*4+b*5+n+a*2+n+a+n+f

Dùng thử trực tuyến!


Bạn không bao giờ sử dụng c, vì vậy bạn có thể loại bỏ nó trong 3 byte. Hãy thử trực tuyến!
sĩ523

@ musicman523 Tôi thậm chí không biết tại sao tôi lại đặt nó ở đó. Cảm ơn đã bắt! :)
R. Kap

6

C (gcc) , 187 byte

Đã lưu 2 byte nhờ Cody Gray và 3 byte nhờ Keyu Gan!

#define a"         "
#define s a" "a
#define l"\n---------------------\n"
f(){puts(" ___________________\n/"s"\\"l"|"s"|"l"|"s"|"l"\\__________    _____/\n"a"  |  /\n"a"  | /\n"a"  |/");}

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


2
putssẽ ngắn hơn tầm thường, nếu một dòng mới có thể chấp nhận được.
Cody Grey

bạn có thể sử dụng f()thay vì main(). Một chức năng cũng được chấp nhận.
Keyu Gan

5

Rust , 181 byte

||" ___________________
/2\\
1
1
3
\\__________    _____/
4|  /
4| /
4|/".replace("1","3
|2|").replace("2",&" ".repeat(19)).replace("3",&"-".repeat(21)).replace("4",&" ".repeat(11))

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

Rust , 184 byte

Phiên bản này có thể dễ chơi hơn khi thêm replacechi phí ít hơn cho mỗi byte. Đầu tiên replacekhông phải là một phần của vòng lặp bởi vì nó kéo thay đổi nhiệm vụ kép sthành một Stringthay vì a &'static str.

||{let mut s=" 5__5__5
/2\\
1
1
3
\\55    5/
4|  /
4| /
4|/".replace("1","3
|2|");for p in vec![("2"," ",19),("3","-",21),("4"," ",11),("5","_",5)]{s=s.replace(p.0,&p.1.repeat(p.2))}s}

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


5

C, 167 byte

i;char*d=" q    /()\\   A   |()|    A   |()|    A   \\h#c/  #&|!/   #&| /   #&|/",c,b;main(j){while(c=d[i++],b=c%5==2||c>123?c:c>95?95:c>45?45:c>=32?32:++c,i<47)for(j=c;j-->=b;)putchar(b);}

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

Lưu ý: rất nhiều khoảng trắng rõ ràng ở trên thực sự là ký tự tab.

Phiên bản dễ đọc:

i;
char *d = " q   /()\\   A   |()|    A   |()|    A   \\h#c/  #&|!/   #&| /   #&|/", c, b;
main(j) {
    while(
        c = d[i++],
        b = c % 5==2 || c > 123 ? c:
            c > 95 ? 95:
            c > 45 ? 45:
            c >= 32 ? 32:
            ++c,
        i < 47
    )
        for(j = c; j-- >= b;)
            putchar(b);
}

Giải trình:

Mảng dữ liệu, d, mã hóa câu trả lời bằng các ký tự đơn theo nghĩa đen và các ký tự lặp lại được mã hóa. Mỗi ký tự, c, trong mảng dữ liệu được ánh xạ tới một ký tự cơ sở, b và một số lần lặp lại. Sau đó nó được in rất nhiều lần.

Các ký tự chỉ được sử dụng đơn lẻ (dấu gạch chéo và đường ống) có mã ASCII 47, 92 và 124. Hai trong số này chia hết cho 5 với phần còn lại là 2 (c%5=2||c>123). Tôi không thể tìm thấy một điều kiện ngắn hơn để kiểm tra cho cả ba.

Các ký tự được lặp lại (gạch dưới, dấu gạch ngang và dấu cách), với mã ASCII lần lượt là 95, 45 và 32, được mã hóa bằng mã ASCII cao hơn - tăng thêm một lần cho mỗi lần lặp lại. Vì vậy, ví dụ, một khoảng trắng chỉ là một khoảng trắng, nhưng hai khoảng trắng có thể được mã hóa bằng ký tự ASCII tiếp theo, dấu chấm than. Trường hợp một ký tự được mã hóa sẽ không phù hợp vì nó đáp ứng điều kiện modulo ở trên, nó có thể được phân tách, như với # & để thể hiện mười một khoảng trắng. Kỹ thuật tương tự được sử dụng để tránh chồng chéo giữa phạm vi ký tự dấu cách và dấu cách.

Cuối cùng, mười dòng mới được mã hóa dưới dạng các tab để lưu byte đã được sử dụng để thoát khỏi dòng mới bằng dấu gạch chéo ngược, sau đó tăng lên để in ( ++c).


Làm tốt! Tôi biết có câu trả lời C tốt hơn ngoài kia.
sĩ523

Cảm ơn! Đó là một thử thách thú vị. Tôi đã dành khoảng bốn giờ cho nó, vì vậy tôi rất vui vì cuối cùng nó cũng hoạt động được.
0 giờ 44 phút

4

Than , 49 37 byte

↓⁵\…_χ↓↓³↗↗³…_⁵↑/↑⁵↖\←…_¹⁹↓ /F³«P²¹¶¶

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

Cuối cùng tôi có thể chơi golf này một chút. Câu trả lời này (không giống như tất cả các câu trả lời khác của Char than) không sử dụng sự phản chiếu, nhưng rút ra tất cả các đường viền trong một lượt, để lại các thanh ngang cho đến cuối.

Liên kết đến phiên bản dài dòng .


"Không giống như tất cả các câu trả lời khác của Than" Thực ra câu trả lời đầu tiên của tôi cũng không sử dụng phản xạ, nhưng tôi sẽ thừa nhận rằng tôi đã không phát hiện ra cơ hội để đánh bại một byte bằng cách bắt đầu vẽ bằng đường thẳng đứng bên trái. (Chỉ có những thay đổi khác giữa các giải pháp của chúng tôi là bạn sử dụng Phạm vi nơi tôi đã sử dụng Thời gian và bạn in một \nơi tôi vừa in :UpLeft1 bước.)
Neil

Mặc dù có vẻ như sự phản chiếu đang diễn ra ...
Neil

Ngoài ra, đó là hai lần mà khóa của tôi không hoạt động ...
Neil

3

Bong bóng , 40 byte

Đã lưu 1 byte bằng cách xóa một dòng mới, cảm ơn @ovs!

00000000: 5388 c704 5cfa 0a98 2086 4b17 1be0 aac1  S...\... .K.....
00000010: a2b6 860a 6a63 10ee 0129 0333 f4b9 9035  ....jc...).3...5
00000020: 2a28 a0f1 51b9 fa00                      *(..Q...

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


Không có một dòng mới, điều này nhận được 40 byte .
trứng

Cảm ơn! Tôi nghĩ rằng trình soạn thảo văn bản của tôi sẽ tự động đặt một cái vào.
Musicman523

Làm thế nào bạn tạo ra điều này? zlib.compress(s.encode(), 9)xuất ra 46 byte và câu trả lời dường như là zlib.
NieDzejkob

Theo đề xuất của Dennis , tôi đã sử dụng zopfli --deflateđể tạo luồng DEFLATE thô, sau đó được sử dụng xxdđể chuyển đổi nó thành định dạng xxd. Tôi tin rằng zlibđể lại một tổng kiểm tra, hoặc không phải là một luồng DEFLATE thô vì một số lý do khác.
sĩ523

3

Than , 38 byte

←…_χP↑⁵P\F³«↑P¹¹↑»↗¹…_χ‖BM²¦⁷P↓⁴… ⁴↙↙³

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

Tôi đã sử dụng câu trả lời của Carlos ở dạng ban đầu như một điểm xuất phát, nhưng đã tiết kiệm được một chút bằng cách sử dụng một phản xạ, tận dụng sự đối xứng ngang. (Đối xứng dọc không có giá trị vì dấu gạch dưới kết thúc ở hàng sai.) Bạn có thể thấy sự tiến hóa của khung vẽ ở mỗi bước ở đây .

Đây là phiên bản dài dòng .


btw bạn có thể sử dụng -dđể hiển thị từng bước (cũng xin lỗi vì tôi đã thay đổi than rất nhiều, tôi không chắc chắn rất nhiều ý tưởng mới rất hữu ích, đặc biệt là nội dung nghệ thuật dê và một phần của ngôn ngữ wolfram haha)
ASCII chỉ


3

Python 2, 119 117 116 byte

print''.join(' \n-/|\\_'[ord(x)/8-4]*int('1245abjl'[ord(x)%8],36)for x in' V(8&H(7(@&@(7(@&@(7(HT"S8(%@!8(%@ 8(%@8')

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

Một chút mã hóa chiều dài chạy bị tra tấn ...

EDIT: Lưu 3 byte bằng cách thay thế tập hợp độ dài:

[1,2,4,5,10,11,19,21][ord(x)%8]

với

int('1245abjl'[ord(x)%8],36)


Ồ Tôi đã cố gắng nghĩ ra một cách hiệu quả để tự làm việc này.
GarethPW

Mã đẹp, nhưng có vẻ như là 119 byte?
mdahmoune

@mdahmoune: Hoàn toàn đúng - quên sử dụng r''khi kiểm tra độ dài ...
Chas Brown

3

C ++ 11 - 162 159 154 152 150 byte

MSVC:

void f(){char*i="b t_b\nb/t b\\b\nv-b\nb|t b|b\nv-b\nb|t b|b\nv-b\nb\\k_e f_b/b\nl b|c b/b\nl b|b b/b\nl b|b/";while(*i)cout<<string(*i++-97,*i),i++;}

GCC: (+4 ký tự)

int f(){char*i="b t_b\nb/t b\\b\nv-b\nb|t b|b\nv-b\nb|t b|b\nv-b\nb\\k_e f_b/b\nl b|c b/b\nl b|b b/b\nl b|b/";while(*i){cout<<string(*i-97,*(i+1));i+=2;}}

Chuỗi đầu vào iđược mã hóa theo cặp char:

  1. Đếm số ký tự lặp lại (được thêm vào 'a' để trở thành ký tự dễ đọc)
  2. Char để in

Tôi nghĩ rằng, vẫn còn rất nhiều chỗ để cải thiện ở đây.

Chỉnh sửa:

  1. Thay thế putar bằng cout <<
  2. Xóa trong khi, Sử dụng hàm tạo chuỗi để lặp lại ký tự
  3. Đã xóa không gian trước con trỏ và dấu chấm phẩy giả ;;
  4. Hướng dẫn tổng hợp với dấu phẩy, loại bỏ niềng răng.

C ++ 11 không hỗ trợ autonhư kiểu trả về, đó là tính năng của C ++ 14. Tuy nhiên, bạn có thể sửa lỗi này lưu một byte bằng cách tạo kiểu trả về int. Dường như mã này không hoạt động; bạn có thể kiểm tra nó trên Dùng thử trực tuyến! và xem nếu bạn có thể sửa chữa nó?
sĩ523

Đã thay đổi kiểu trả về tự động -> void. Tôi đã thử nghiệm trên Visual Studio 2017 - tự động C ++ 14. Đã thêm một phiên bản cho gcc.
Robert Andrzejuk

Ồ được rồi, gotcha. Tôi đang chạy Linux nên tôi không có VS. Công việc tốt!
sĩ523

Xin chào Robert - phương pháp mã hóa chiều dài chạy của bạn tương tự như của tôi; thấy ở đây . Tôi cũng đóng gói mỗi cặp (độ dài, char) thành một char thay vì 2. Có 7 ký tự có thể và 8 độ dài khác nhau; vì vậy tôi sử dụng 56 ký tự ' '..'X'để mã hóa; giúp tiết kiệm 40 byte với một ít chi phí phụ để giải mã.
Chas Brown


3

Hội R16K1S60 , 152 144 byte

Ghi đầu ra ra màn hình ngoại vi R16K1S60 trong ASCII. Chạy trên The Powder Toy tiết kiệm 2012356. (Xem liên kết trong tiêu đề để biết)

Kích thước byte của chương trình là kết quả được biên dịch (Các ô được sử dụng * 2), không phải là cụm.

Bạn biết bạn đã hoàn thành tốt khi logo chiếm nhiều không gian hơn mã byte của bạn.

a:
mov ex, ip
mov ax, .string
mov sp, ip
mov dx, 0x1000
send sp, dx
.loop:
mov bx, [ax]
cmp bx, ip
je .end
cmp bx, ip
je .newline

shr bx, cx, 8
and cx, 0x00FF
.inner:
send sp, cx
sub bx, ex
jnz .inner
.reentry:
add ax, ex
jmp .loop
.newline:
add dx, 0x0020
send sp, dx
jmp .reentry
.string:
dw 0x0120
dw 0x135F
dw 0x000C
dw 0x012F
dw 0x1320
dw 0x015C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x017C
dw 0x1320
dw 0x017C
dw 0x000C
dw 0x152D
dw 0x000C
dw 0x015C
dw 0x0A5F
dw 0x0420
dw 0x055F
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0220
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x0120
dw 0x012F
dw 0x000C
dw 0x0B20
dw 0x017C
dw 0x012F
dw 0x0009
.end:
hlt

Giải trình

Mã lắp ráp ở trên thực hiện một thuật toán nén đơn giản, với các từ 0x000C là một dòng mới và 0x0009 là lệnh dừng thực thi.

Các từ khác được mã hóa đơn giản, như thế này: 0xTTCC

  • T: Lần lặp lại giá trị

  • C: Ký tự ASCII cần in

ASM sử dụng mọi thanh ghi có sẵn cho nó, bao gồm một số những cái ít được sử dụng:

  • Con trỏ lệnh, để có được một vài giá trị đã biết vào việc thu hồi nhanh để lưu một số byte (Một giá trị không đổi trong một cảm ứng không chỉ là một thanh ghi sử dụng một byte bổ sung để lưu trữ nó)

  • Con trỏ ngăn xếp được sử dụng làm thanh ghi mục đích chung thứ 6, vì không có mã nào sử dụng ngăn xếp.

Chỉ AX, BX, CX và DX thực sự được sử dụng cho dữ liệu quan trọng. EX và SP được sử dụng để lưu trữ một số hằng số được sử dụng thường xuyên.

Nó hơi đơn giản và không có cơ hội chiến thắng, nhưng thật vui khi viết!

Xem lịch sử sửa đổi cho câu trả lời cũ (Nó chỉ lớn bằng ASM)

funfact: nếu điều này được đo bằng từ (trong trường hợp R16K1S60,16 bit) thì nó sẽ nhỏ hơn câu trả lời thứ ba, ở mức 72 byte




2

Toán học, 163 byte

Row@Map[Column,Characters/@{" /-|-|-\\   ",r="_ - - -_   ",r,r,r,r,r,r,r,r,r,"_ - - - |||","_ - - -   /","_ - - -  / ","_ - - - /  ",r,r,r,r,r," \\-|-|-/   "},{1}]


2

Python 2, 171 byte

p,u,q,v,r,s,F=' ','_','/','|','-'*21,'\\',lambda f,m:f+m*19+f;B=lambda n:p*11+v+p*n+q
print'\n'.join([F(p,u),q+p*19+s,r,F(v,p),r,F(v,p),r,s+u*10+p*4+u*5+q,B(2),B(1),B(0)])

Mỗi dòng chính xác là 85 byte! Hoan hô!


2

Zsh, 244 byte

Điều này được viết riêng cho Zsh, không phải Bash, vì nó cho phép nhiều hơn một chút về cú pháp kỳ lạ.

alias p=printf
function r { p "$1%.s" {0..$2}}
function l { p $1;r $2 19;p $3;p "\n"}
l " " _ " "
l / " " \\
l - - -
l \| " " \|
l - - -
l \| " " \|
l - - -
p \\
r _ 10
r " " 4
r _ 5
p "/\n"
r " " 11
p "|  /\n"
r " " 11
p "| /\n"
r " " 11
p \|/

Lưu ý: khi tôi cố chạy nó trên tio.run thì đầu ra khác với trên thiết bị đầu cuối của tôi. Khắc phục sự cố này đang thay thế

function r { p "$1%.s" {0..$2}}

với

function r { p "$1%.0s" {0..$2}}

mà sẽ làm cho nó 245 byte ( liên kết ).

Chỉnh sửa Có vẻ như tôi đã quá háo hức để nhấn nút đăng bài đó và tôi đã bỏ lỡ một số khoảng trống, làm cho giải pháp của tôi kém hiệu quả hơn một chút. Đầu ra mới của tôi có vẻ tắt, nhưng tôi nghĩ rằng tôi đã đếm chính xác (nhưng dù sao nó cũng không thay đổi độ dài).


Chào mừng đến với PPCG! Lưu ý rằng dòng dưới của dấu gạch dưới có khoảng cách bốn khoảng trống trong đó, phần này bị thiếu từ đầu ra của mã của bạn.
Steadybox

@Steadybox Ôi tôi ngốc quá. Tôi đã cập nhật câu trả lời, cảm ơn vì đã chỉ ra!
Luca_Scorpion

Không vấn đề gì! Thật không may, tôi nghĩ rằng nó vẫn còn một chút, nhưng điều này sẽ khắc phục nó (và nó cũng giúp bạn tiết kiệm một byte!).
Steadybox

Tôi nghĩ bạn có thể lưu một vài byte bằng cách sử dụng 'funcname () {}' thay vì 'hàm funcname {}'
Winny


2

Python 2, 159 153 139 byte

s=" "*19;e="-"*21;a=" "*9;print" %s\n/%s\\\n%s\n|%s|\n%s\n|%s|\n%s\n\%s    %s/\n%s|  /\n%s| /\n%s|/"%("_"*19,s,e,s,e,s,e,"_"*8,"_"*7,a,a,a)

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

EDIT: Đã lưu 6 byte bằng cách sử dụng %định dạng thay vì .format().
EDIT: Đã lưu thêm 14 byte bằng cách sửa lỗi đầu ra, nhờ Musicman523.


1
Đây không phải là in văn bản chính xác (có thêm dòng). Sửa lỗi này có thể sẽ tiết kiệm một số byte là tốt.
chính thức tuyên bố

Đây là một phiên bản cố định , xuất hiện ở mức 139 byte nóng
musicman523

2

Japt , 79 72 71 byte

" _p
/ p\\
{"-r
| p|
"²}-r
\\_g a_b/
 h|  /
 h| /
 h|/"r".%l"_g p6nZÅnH

Kiểm tra nó

  • 7 byte được lưu nhờ đề xuất tuyệt vời của ETHproductions về việc sử dụng số nguyên cơ sở 32 cho các giá trị lặp lại.

Phương pháp nén rất đẹp. Nếu bạn sử dụng, nHbạn có thể lưu thêm một vài byte: ethproductions.github.io/japt/iêu
ETHproductions

1

JavaScript (ES6), 151 byte

_=>` 2_________
/0\\
1
|0|
1
|0|
1
\\2    _____/
3|  /
3| /
3|/`.replace(/\d/g,a=>a.repeat.call(...[[" ",19],["-",21],["_",10],[" ",11]][a]))

Kiểm tra đoạn trích

f=
_=>` 2_________
/0\\
1
|0|
1
|0|
1
\\2    _____/
3|  /
3| /
3|/`.replace(/\d/g,a=>a.repeat.call(...[[" ",19],["-",21],["_",10],[" ",11]][a]))

O.innerHTML=f()
<pre id=O>




1

,,, , 115 101 98 byte

Tôi hoàn toàn xấu hổ vì đây là sản phẩm tốt nhất tôi có thể sản xuất. >.>

"|/
"' 11×:"| /
"⇆:"|  /
"⇆'
'/'_5×' 4×'_10×92c'
'|' 19×'|'
'-21×+++++3×110⇆⊣"\
"' 19×'/'
'_19×' #
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.