Xây cho tôi một bức tường gạch!


73

Thử thách

Tôi cần giúp đỡ xây dựng một bức tường gạch! Kết hợp một số mã cho tôi bằng cách không sử dụng đầu vào và tạo ra tường đầu ra sau đây được hiển thị bên dưới:

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

Bây giờ, bức tường này chính xác là 10nhân vật cao và 70rộng nhân vật.

Như đã nêu ở trên, không có đầu vào, chỉ có mã. Ít nhất là byte, chúng ta phải xây dựng bức tường gạch này một cách hiệu quả. Rõ ràng, chương trình này có chức năng để xây tường ..? hoặc rõ ràng là nó sẽ không tự xây dựng! Chúc may mắn!


Người chiến thắng

Người chiến thắng đến Marinus bằng APLngôn ngữ, yêu cầu cả 12byte! https://codegolf.stackexchange.com/a/99028/61857


Cảm ơn mọi người vì đã tham gia!



8
Cũng liên quan. (kỳ lạ là điều này sẽ xuất hiện ngày hôm nay, haha)
Conor O'Brien

1
Vậy là được rồi. Tôi sẽ cho bạn biết khi tôi có một thông dịch viên làm việc. Tôi đang làm việc với nó ngay bây giờ, thực sự :)
ETHproductions 10/11/2016


30
Đối với điểm thưởng, làm cho Mexico trả tiền cho nó.
Dawood ibn Kareem

Câu trả lời:


46

APL, 12 byte

10 70⍴'_|__'

Đầu ra:

      10 70⍴'_|__'
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

1
Tôi chỉ nhận thấy câu trả lời này khi tôi đặt câu trả lời J của tôi. về cơ bản chúng giống nhau haha
Conor O'Brien

2
Điều này tạo ra một cái gì đó khác ngoài bức tường ascii. Điều này có được phép không?
Bộ đệm đã đọc

Khi sử dụng tryapl.org, tôi đã nhận được kết quả đầu ra. Bạn đã nhận được gì @TheBitByte?
FivePixels

4
@Dylan Có lẽ anh ấy bối rối, vì người trả lời đã đưa chương trình vào đầu ra mà không biết bản chất REPL của APL.
Conor O'Brien

191

Trumpscript , 303 285 244 231 226 byte

make i 1000005-1000000
as long as,i;:
make i,i - fact;
say "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
say "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"!
America is great

Tôi muốn nói rằng đây là một trong những ngôn ngữ dài dòng nhất mà hầu hết mọi thứ không thể biên dịch thành một chương trình làm việc.

Rõ ràng liệu -công việc thay vì minushoàn toàn phụ thuộc vào người phiên dịch và đôi khi làm việc. Lần này nó đã làm như vậy tôi đang đưa nó vào như chơi gôn.

Lạm dụng thực tế Trumpscript được viết bằng Python và do đó factkhi được sử dụng như một số nguyên là một.

Lời khuyên chơi golf chào mừng.


48
Tôi lấy nó Trumpscript không cho phép số ít hơn 1.000.000? ;-)
Sản phẩm ETH

3
bạn nói đúng.
Màu xanh

2
Bạn có thể sử dụng i is 1000005-1000000i is i-fact? (Chỉ cần xem qua phần đọc của Trumpscript.)
AlexRacer

19
Tôi ngạc nhiên khi nó cho phép bạn sử dụng 1000000. Tài liệu nhà nước All numbers must be strictly greater than 1 million. The small stuff is inconsequential to us..
Nhà vật lý điên

9
Factlies(và các hằng số thật / sai khác) có cơ hội ngẫu nhiên, dựa trên thời gian để lật flop (bị đảo ngược) trong quá trình token hóa (xem tokenizer.py, tìm kiếm flip_flop) có thể là lý do tại sao nó minusthực sự không hoạt động với facttại thời điểm đó
pinkfloydx33

20

J, 12 byte

10 70$'_|__'

Định hình chuỗi bên phải thành hình 10 x 70. Đơn giản!


18

BBC BASIC, 28 byte

Tokenised tập tin kích thước 23 byte.

WIDTH70P.STRING$(175,"_|__")

WIDTH70thông thường sẽ được theo sau bởi một dòng mới. Nó đặt chiều rộng trường thành 70. Sau đó, chúng tôi chỉ cần in 175 bản sao của chuỗi, bao quanh.


2
Sử dụng tốt nhất (ab) WIDTH mà tôi đã thấy :)
ElPedro

Điều này sẽ có "23 byte" trong tiêu đề.
Adám

@ Adám Chỉ khi phiên bản mã thông báo được đăng làm câu trả lời.
ErikE

17

Brainfuck, 171 byte

+++++[>+++++++++++++++++++<-]+++++++[>>++++++++++++++++++<<-]>>--<<++[>>>+++++<<<-]+++++[>.>.>>+++++++++++++++++[<<<...>.>>-]<.>+++++++++++++++++[<<<...>.>>-]<<<..>>.<<<-]

Brainfuck là niềm vui, đây là trình của tôi.

Đây là đầu ra:

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

Đây là một liên kết để thử nó

https://repl.it/EW2Z/0


16

WinDbg, 45 byte

f2000000 L2bc 5f 7c 5f 5f;da/c46 2000000 L2bc

Làm thế nào nó hoạt động:

f 2000000 L2bc 5f 7c 5f 5f; *Repeat the pattern _|__ (5F 7C 5F 5F) to fill 2BC (700) bytes 
                            *starting at 2000000
da /c46 2000000 L2bc        *Show 2BC (700) ASCII chars starting from 2000000 in lines 
                            *of length 0x46 (70)

Đầu ra:

0:000> f2000000 L2bc 5f 7c 5f 5f;da/c46 2000000 L2bc
Filled 0x2bc bytes
02000000  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
02000046  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
0200008c  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
020000d2  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
02000118  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
0200015e  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
020001a4  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
020001ea  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"
02000230  "_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|"
02000276  "___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__"

10

Bình thường, 12 byte

Mã số:

jcT*175"_|__

Giải trình:

       "_|__    # For the string "_|__"
   *175         # Repeat it 175 times
 cT             # Chop into 10 equal pieces
j               # Join them by newlines

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


10

Python 2, 37 byte

s="_|__"*17;print(s+"_|\n__%s\n"%s)*5

Phân tách hai hàng thành 17 bản sao _|__, cộng với một bản sao khác bị gián đoạn bởi một dòng mới, cộng thêm 17 bản sao, cộng với một dòng mới khác.

Các lựa chọn thay thế dài hơn:

print"%s_|\n__%s\n"%(2*("_|__"*17,))*5

s="_|__"*17;print"%s_|\n__%%s\n"%s%s*5

for i in[0,2]*5:print("_|__"*18)[i:i+70]

print("_|__"*17+"_|\n"+"___|"*17+"__\n")*5

for s in["_|__","___|"]*5:print(s*18)[:70]

s="_|__"*99;exec"print s[:70];s=s[2:];"*10

print("%s"*70+"\n")*10%(175*tuple("_|__"))

Sự thay thế cuối cùng của bạn ngắn hơn như print(("%s"*70+"\n")*10%(175*(*"_|__",)))trong Python 3.
mbomb007

8

05AB1E , 13 byte

Mã số:

"_|__"175×Tä»

Giải trình:

"_|__"         # For the string "_|__"
      175×     # Repeat that 175 times
          Tä   # Split into 10 even pieces
            »  # And join them by newlines

Sử dụng mã hóa CP-1252 . Hãy thử trực tuyến!


7

PHP, 44 42 41 ký tự

<?=chunk_split(str_pad(_,700,"|___"),70);

(Chỉ vì không có cơ hội sử dụng chunk_split()trước đây.)

Nhờ vào:

  • user59178 để đề xuất sử dụng str_pad()(-1 ký tự)

Chạy mẫu:

bash-4.3$ php <<< '<?=chunk_split(str_pad(_,700,"|___"),70);'
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

byte, không đếm ký tự.
FivePixels

2
Tương tự. Tôi không sử dụng các ký tự đa nhân.
manatwork


2
@pajonk, Đã sửa lỗi với PPCG - Đã vượt qua 44 kiểu người dùng trên máy của tôi: i.stack.imgur.com/czn5h.png
manatwork 8/11/2016

Bạn có thể lưu một byte bằng cách sử dụng str_padthay vì str_repeat, phần lớn là do _được coi là hằng số có giá trị _.
dùng59178

7

Vim, 30 24 19 tổ hợp phím

18a___|<esc>YP2x}h.yk4P

Cảm ơn DrMcMoylex và nmjcman101 vì đã lưu các tổ hợp phím có giá trị!


1
Câu trả lời tốt đẹp, chào mừng đến với trang web! Một số mẹo: 1) acần tính, vì vậy bạn có thể làm 18a___|<esc>thay vì tạo macro. 2) <cr>ở chế độ bình thường tương đương với j0, vì vậy bạn có thể lấy một byte khỏi macro thứ hai của mình.
DJMcMayhem

Thật tuyệt, cảm ơn vì những lời khuyên!
karpfen

1
Tôi đánh golf giải pháp của bạn một chút cho vui. Định dạng tường trước khi sao chép / dán sẽ lưu tất cả các byte không tạo macro: 18a___|<esc>YP2x}h.yk5Plà 19 byte.
nmjcman101

Rất vui, tôi sẽ cập nhật câu trả lời! Tôi sẽ chỉ thay khóa thứ hai thành khóa cuối cùng bằng 4, nếu không bức tường đang trở nên quá cao :)
karpfen

6

Perl, 47 34 29 byte

$_="_|__"x175;say for/.{70}/g

Bạn có thể đánh gôn xuống 29:say for("_|__"x175)=~/.{70}/g
Dada

Vì một số lý do, điều đó được sử dụng để không tạo ra đầu ra mỗi lần tôi thử nó, nhưng tôi đã tìm thấy một giải pháp khác có nhiều byte. Cảm ơn bạn mặc dù!
Gabriel Benamy

Chà, mã tôi đề xuất không tạo ra đầu ra hợp lệ ... Có lẽ bạn đã quên dấu ngoặc đơn xung quanh "_|__"x175hoặc một cái gì đó tương tự?
Dada

Tôi nghĩ đó là những gì nó được. Tôi đã nghĩ rằng dấu ngoặc đơn phải đi đâu đó, tôi không thể tìm ra nơi nào, lol
Gabriel Benamy

Huhu, khó nhớ quyền ưu tiên của mọi nhà khai thác ( =~có quyền ưu tiên cao hơn x)!
Dada

5

Perl, 31 byte

say+($@="_|__"x17,"_|
__$@
")x5

Bạn sẽ cần -Ecờ để chạy nó:

perl -E 'say+($@="_|__"x17,"_|
__$@
")x5'

Suy nghĩ về một cách tiếp cận hơi khác nhau cho 29 byte: say for("_|__"x175)=~/.{70}/g:). Tôi thích thủ thuật bạn làm ở đó!
Dom Hastings

@DomHastings huhu, tôi đã viết cùng một mã chính xác trong các bình luận về câu trả lời của Gabriel Benamy!
Dada

Ôi! Không thấy cái đó! Ngoài ra sau đó thấy nó đã được sử dụng rất nhiều trong các câu trả lời khác .. Oh tốt!
Dom Hastings

@DomHastings Yea, ban đầu tôi không nghĩ về nó và nó đã có trong câu trả lời của Gabriel, vì vậy đó là lý do tại sao tôi không cập nhật câu trả lời của mình sau;)
Dada

5

V , 24 , 16 byte

175i_|__ò70|lé

Hãy thử trực tuyến! Điều này có chứa các <esc>ký tự ( 0x1B) vì vậy đây là một hexdump:

0000000: 3137 3569 5f7c 5f5f 1bf2 3730 7c6c e90a  175i_|__..70|l..

8 byte được lưu gián tiếp nhờ Jordan!


Mặc dù vậy, 19 byte: v.tryitonline.net/ nam Tôi không thể tìm ra cách sử dụng .\{-}phím tắt được đề cập trong tài liệu V.
Jordan

@Jordan Wow, rất tuyệt! Các \{-}phím tắt sẽ không hoạt động dù sao, kể từ khi bạn không thể thay đổi số lượng bên trong. Tuy nhiên, bạn có thể thiết lập bit cao trên \{để có được điều này thay vào đó. Hãy gửi bài đó như một câu trả lời.
DJMcMayhem

Ah, điều đó có ý nghĩa. Đăng tại đây: codegolf.stackexchange.com/a/99070/11261
Jordan

Chết tiệt, tôi vẫn cần phải
mò mẫm

5

V , 18 byte

-1 byte nhờ DJMcMayhem.

175i_|__<Esc>Ó.û70}/°ò

Đây là ký tự không thể in ở định dạng xxd:

0000000: 3137 3569 5f7c 5f5f 1bd3 2efb 3730 7d2f  175i_|__....70}/
0000010: b0f2                                     ..

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


Thật tuyệt, tôi không còn là người duy nhất đã sử dụng V! Bây giờ tôi sẽ phải xem liệu tôi có thể lấy lại vị trí dẫn đầu không, haha
DJMcMayhem

5

MATL, 15 byte

'_|__'700:)70e!

Tất nhiên, bạn có thể dùng thử trực tuyến! Giải trình:

'_|__' % Put a brick on the stack
700    % 700 times
:)     % Makes a happy mason...
70e!   % Secret freemason code

OK, thực sự, nó hoạt động như sau:

'_|__' % Put the first bit of the string on the stack
700:   % Put 1, 2, ..., 700 on the stack as array
)      % Index into the string, modularly. Result: '_|___|__ ... __'
70e    % Reshape into 70 rows (and consequently, 10 columns)
!      % Transpose to get the desired output.

Làm tốt! Và nụ cười của bạn tốt hơn của tôi
Luis Mendo 8/11/2016

@LuisMendo Thực sự, sử dụng mặt cười có thể được coi là một mẫu thiết kế trong MATL. xD Có lẽ bạn có thể có :)trên C... nhưng đó sẽ là điểm mã 1 byte cuối cùng của bạn biến mất (hoặc có lý do nào khác Ckhông được sử dụng?)
Sanchise

Bạn muốn thoát khỏi mặt cười ?? :-P
Luis Mendo

5

Python 2, 46 44 byte

Chỉ cần sử dụng phép nhân chuỗi để xây dựng chuỗi và cắt để có các bit đúng :)

k='_|__'*18
print'\n'.join([k[:70],k[2:]]*5)

cảm ơn Antony Hatchkins vì đã lưu hai byte :)


Có thể ít hơn 2 byte:print'\n'.join([k[:70],k[2:]]*5)
Antony Hatchkins

@AntonyHatchkins Cảm ơn!
Kade

4

PowerShell v2 +, 34 30 byte

'_|__'*175-split"(.{70})"-ne''

Thuật toán khớp regex ngu ngốc yêu cầu -ne''... lãng phí năm byte!

'_|__'*175-split"(.{70})"-ne''
'_|__'*175                     # Repeat this string 175 times
          -split"       "      # Split on this regex pattern:
                  .{70}        # Match any character 70 times
                 (     )       # Encapsulated in parens so we keep the regex results
                         -ne'' # But don't select the empty strings
                               # Output with newlines via Write-Output is implicit

Đã lưu 4 byte nhờ Conor!


Sẽ .{70}ngắn hơn cho regex teh?
Conor O'Brien

splithoạt động như thế trong các ngôn ngữ khác - bạn luôn có được những phần chưa từng có cho dù bạn muốn hay không. Một số ngôn ngữ có matchtoán tử có thể được sử dụng để trả về một mảng chỉ có kết quả phù hợp, nhưng tôi không thấy PowerShell tương đương với điều đó.
Neil

@Neil Biểu diễn 'abc'-split'(.)'sẽ trở lại ('','a','','b','','c',''). Không có gì sánh được, nhưng do cách thuật toán xử lý thông qua chuỗi đầu vào, bạn sẽ nhận được các chuỗi trống trở lại. Xem tại đây .
admBorkBork

Vâng, và tôi đang nói rằng bạn không nên ngạc nhiên với kết quả đó, bởi vì đó là điều đáng lẽ phải làm.
Neil

@Neil Ngạc nhiên? Không thật sự lắm. Điều đó không có nghĩa là tôi phải hài lòng về điều đó. : D
admBorkBork

4

C, 131 115 113 103 97 95 byte

i,j;main(){for(;i<10;puts(i++&1?"|__":"|"))for(j=0;j<18-(i&1);printf(&"|___"[j++?0:i&1?1:3]));}

Đã đến lúc bắt đầu chơi gôn này ...

_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__
_|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|__

3

Thạch , 14 byte

“_|__”ṁ700s70Y

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

Làm sao?

“_|__”ṁ700s70Y - Main link: no arguments
“_|__”         - literal ['_','|','_','_']
      ṁ700     - mould like something 700 long
          s70  - split into chunks of length 70
             Y - join with line feeds

1
Theo định nghĩa, Jelly không thể dài hơn J.
Adám

Tôi đã làm một cái gì đó tương tự mà không có đặc thù : “_|__”ẋ175œs⁵Y(14 byte)
Erik the Outgolfer



3

Javascript REPL, 45 byte

"_|__".repeat(175).match(/.{70}/g).join("\n")

1
Chào mừng đến với PPCG! Điều này nên được đánh dấu là "JavaScript REPL" hoặc tương tự, vì điều này không in bất cứ thứ gì bên ngoài môi trường bảng điều khiển tương tác.
Martin Ender

1
Đây có phải là 45 byte không?
acrolith

@daHugLenny bạn nói đúng, tôi đã tính \ n là một byte đơn
Juan Tonina

console.log ở đâu?
cardeol

1
Miễn là bạn đang sử dụng ES6 (tôi nghĩ là vậy), bạn có thể sử dụng các chuỗi mẫu, do đó, hãy join("\n")tham gia <backtick> <dòng chữ mới> <backtick>
Stephen


3

Bash, 44, 41 , 40 byte

printf _\|__%.0s {1..175}|egrep -o .{70}

Printf tạo một dòng dài 700 ký tự, egrep khớp với 70 ký tự một lần.





2

Ruby, 30 byte

Cảm ơn manatwork cho giải pháp này

puts ("_|__"*175).scan /.{70}/

Ruby, 39 byte

10.times{|i|puts ("_|__"*18)[i%2*2,70]}

2
Cách tiếp cận tạo tất cả sau đó cũng được chia ngắn hơn ở đây : puts ("_|__"*175).scan /.{70}/.
manatwork

@manatwork cảm ơn rất nhiều! Tôi hiếm khi nghĩ đến việc sử dụng scanvì tôi không thoải mái với regexes. Bạn biết rằng bạn có thể đã đăng nó như là câu trả lời của riêng bạn ...
Level River St

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.