#OctothorpeAsciiArt


35

Một Octothorpe, (còn được gọi là ký hiệu số, hàm băm hoặc hashtag hoặc dấu thăng) là ký tự ASCII sau:

#

Đó không phải là một hình dạng vui vẻ? Hãy làm cho phiên bản lớn hơn của nó! Vì vậy, đây là thách thức của bạn:

Cho một số nguyên dương N , sản lượng một hashtag ASCII kích thước N .

Ví dụ: hashtag ASCII có kích thước 1 trông như thế này:

 # # 
#####
 # # 
#####
 # # 

Trailing khoảng trắng trên mỗi dòng được cho phép, nhưng không bắt buộc.

Đầu vào sẽ luôn là số nguyên dương hợp lệ, do đó bạn không phải xử lý các số không, âm hoặc 0. Đầu ra của bạn có thể ở bất kỳ định dạng hợp lý nào, do đó, xuất ra STDOUT, trả về danh sách các chuỗi hoặc chuỗi với dòng mới, ma trận 2D của các ký tự, ghi vào tệp, v.v ... đều ổn.

Các trường hợp thử nghiệm

2:
  ##  ##
  ##  ##
##########
##########
  ##  ##
  ##  ##
##########
##########
  ##  ##
  ##  ##

3:
   ###   ###   
   ###   ###   
   ###   ###   
###############
###############
###############
   ###   ###   
   ###   ###   
   ###   ###   
###############
###############
###############
   ###   ###   
   ###   ###   
   ###   ###   

4:
    ####    ####    
    ####    ####    
    ####    ####    
    ####    ####    
####################
####################
####################
####################
    ####    ####    
    ####    ####    
    ####    ####    
    ####    ####    
####################
####################
####################
####################
    ####    ####    
    ####    ####    
    ####    ####    
    ####    ####    

5:
     #####     #####     
     #####     #####     
     #####     #####     
     #####     #####     
     #####     #####     
#########################
#########################
#########################
#########################
#########################
     #####     #####     
     #####     #####     
     #####     #####     
     #####     #####     
     #####     #####     
#########################
#########################
#########################
#########################
#########################
     #####     #####     
     #####     #####     
     #####     #####     
     #####     #####     
     #####     #####     

Vì đây là môn đánh gôn, hãy cố gắng viết giải pháp ngắn nhất có thể, và trên hết, hãy vui vẻ!


Câu trả lời:


21

MATL , 20 16 12 11 byte

3 byte nhờ DJMcMayhem.

1 byte nhờ Luis Mendo.

21BwY"&*~Zc

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

Giải trình

    % stack starts with input e.g. 2
21  % push 21 to stack             2 21
B   % convert to binary            2 [1 0 1 0 1]
w   % swap                         [1 0 1 0 1] 2
Y"  % repeat                       [1 1 0 0 1 1 0 0 1 1]
&*  % one-input multiplication    [[1 1 0 0 1 1 0 0 1 1]
                                   [1 1 0 0 1 1 0 0 1 1]
                                   [0 0 0 0 0 0 0 0 0 0]
                                   [0 0 0 0 0 0 0 0 0 0]
                                   [1 1 0 0 1 1 0 0 1 1]
                                   [1 1 0 0 1 1 0 0 1 1]
                                   [0 0 0 0 0 0 0 0 0 0]
                                   [0 0 0 0 0 0 0 0 0 0]
                                   [1 1 0 0 1 1 0 0 1 1]
                                   [1 1 0 0 1 1 0 0 1 1]]
~   % complement                  [[0 0 1 1 0 0 1 1 0 0]
                                   [0 0 1 1 0 0 1 1 0 0]
                                   [1 1 1 1 1 1 1 1 1 1]
                                   [1 1 1 1 1 1 1 1 1 1]
                                   [0 0 1 1 0 0 1 1 0 0]
                                   [0 0 1 1 0 0 1 1 0 0]
                                   [1 1 1 1 1 1 1 1 1 1]
                                   [1 1 1 1 1 1 1 1 1 1]
                                   [0 0 1 1 0 0 1 1 0 0]
                                   [0 0 1 1 0 0 1 1 0 0]]
Zc  % convert 0 to spaces            ##  ##  
      1 to octothorpes               ##  ##  
      and join by newline          ##########
                                   ##########
                                     ##  ##  
                                     ##  ##  
                                   ##########
                                   ##########
                                     ##  ##  
                                     ##  ##  

1
Bạn có thể sử dụng Zcthay vì 35*c~(logic KHÔNG) thay vì0=
DJMcMayhem

1
@DJMcMayhem @ _ @ tại sao lại được tích hợp sẵn
Leaky Nun

1
Trên thực tế, lý do đó là một nội dung thực sự thú vị. Tôi có thể sai, nhưng tôi nghĩ conor đã gợi ý nó, và Suever đã viết một kịch bản xem xét tất cả các câu trả lời MATL để xem những chức năng nào phổ biến hơn cho các cải tiến trong tương lai. Zc vừa được thêm vào
DJMcMayhem

Ngoài ra, vì mỗi ô chỉ phải khác không, bạn có thể làm Qthay vì2<
DJMcMayhem

1
@LeakyNun Bạn có thể đổi !t*sang &*. Cái sau có nghĩa là "phép nhân một đầu vào", nhân bội (yếu tố khôn ngoan) đầu vào bằng chuyển vị của nó
Luis Mendo

14

Brain-Flak , 420 byte

(()()()){({}<(({})){({}<<>(<>({})<>){({}<((((()()()()){}){}()){}())>[(
)])}{}(<>({})<>){({}<((((()()()()){}){}){})>[()])}{}(<>({})<>){({}<(((
(()()()()){}){}()){}())>[()])}{}(<>({})<>){({}<((((()()()()){}){}){})>
[()])}{}((()()()()()){})<>>[()])}{}((({}))<(({})(({}){}){})>){({}<<>(<
>({})<>){({}<((((()()()()){}){}()){}())>[()])}{}((()()()()()){})<>>[()
])}{}{}>[()])}{}({}<>)(({})((({({})({}[()])}{})){}){}{}){({}<{}>[()])}

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

Không, điểm số 420 không cố ý. Tôi hứa. Phiên bản dễ đọc:

# 3 Times...
(()()())
{
({}<

    #Duplicate the input
    (({}))

    #Input times...
    {
        ({}<

        #Switch to the main stack
        <>

        #Grab the duplicate of the input
        (<>({})<>)

        #That many times...
        {({}<

            # Push a hash
            ((((()()()()){}){}()){}())

        >[()])}{}

        #Grab the duplicate of the input
        (<>({})<>)

        #That many times...
        {({}<

            #Push a space
            ((((()()()()){}){}){})

        >[()])}{}

        #Grab the duplicate of the input
        (<>({})<>)

        #That many times...
        {({}<

            # Push a hash
            ((((()()()()){}){}()){}())

        >[()])}{}

        #Grab the duplicate of the input
        (<>({})<>)

        #That many times...
        {({}<

            #Push a space
            ((((()()()()){}){}){})

        >[()])}{}

        #Push a newline
        ((()()()()()){})

        #Toggle back to the alternate stack
        <>

        #Decrement the (second) loop counter
        >[()])

    #Endwhile
    }

    #Pop the now zeroed loop counter
    {}

    #Turn [a] into [a, a*5, a]
    ((({}))<(({})(({}){}){})>)

    #A times....
    {
        ({}<

        #Toggle back over
        <>

        #Grab a*5
        (<>({})<>)

        #That many times...
        {({}<

            #Push a space
            ((((()()()()){}){}()){}())

        >[()])}{}

        #Push a newline
        ((()()()()()){})

        #Toggle back
        <>

        #Decrement the (second) loop counter
        >[()])

    }

    #Pop the loop counter and the a*5
    {}{}

#Decrement the outer loop counter
>[()])
}

#Pop the zeroed loop counter
{}

#Pop a over
({}<>)

#Pushes (a**2) * 5 + a
(({})((({({})({}[()])}{})){}){}{})

#That many times...
{({}<

    #Pop a character off the output stack
    {}

>[()])}

13

Mã máy 6502 (C64), 59 56 byte

00 C0 20 9B B7 A9 06 85 FC 86 FE A6 FE 86 FD A9 03 4D 1F C0 8D 1F C0 C6 FC D0
01 60 A9 23 A0 05 49 00 20 D2 FF CA D0 FA A6 FE 88 D0 F3 A9 0D 20 D2 FF C6 FD
D0 E6 F0 D3

Bản demo trực tuyến

Cách sử dụng: SYS49152,Ntrong đó N là một số từ 1 đến 255.

(giá trị lớn hơn 4 sẽ quá lớn đối với màn hình C64, bắt đầu từ 8, đầu ra thậm chí quá rộng)

Giải thích :

         00 C0       .WORD $C000    ; load address

.C:c000  20 9B B7    JSR $B79B      ; read N into X
.C:c003  A9 06       LDA #$06       ; number of "logical" lines plus 1 for hash
.C:c005  85 FC       STA $FC        ; store in counter variable for lines
.C:c007  86 FE       STX $FE        ; store N in counter variable for char repetitions
.C:c009  A6 FE       LDX $FE        ; load repetition counter
.C:c00b  86 FD       STX $FD        ; store in counter variable for line repetitions
.C:c00d  A9 03       LDA #$03       ; value to toggle the character toggle
.C:c00f  4D 1F C0    EOR $C01F      ; xor character bit toggle
.C:c012  8D 1F C0    STA $C01F      ; store character bit toggle
.C:c015  C6 FC       DEC $FC        ; decrement "logical" lines
.C:c017  D0 01       BNE $C01A      ; not 0 -> continue
.C:c019  60          RTS            ; program done
.C:c01a  A9 23       LDA #$23       ; load hash character
.C:c01c  A0 05       LDY #$05       ; load "logical" columns for hash
.C:c01e  49 00       EOR #$00       ; in each odd "logical" line, toggle character
.C:c020  20 D2 FF    JSR $FFD2      ; output one character
.C:c023  CA          DEX            ; decrement character repetition
.C:c024  D0 FA       BNE $C020      ; not 0 -> back to output
.C:c026  A6 FE       LDX $FE        ; reload character repetition
.C:c028  88          DEY            ; decrement "logical" columns
.C:c029  D0 F3       BNE $C01E      ; not 0 -> back to character toggle
.C:c02b  A9 0D       LDA #$0D       ; line done, load newline character
.C:c02d  20 D2 FF    JSR $FFD2      ; and output
.C:c030  C6 FD       DEC $FD        ; decrement line repetitions
.C:c032  D0 E6       BNE $C01A      ; not 0 -> back to character init
.C:c034  F0 D3       BEQ $C009      ; else back to main loop (toggle char toggling)

Ảnh chụp màn hình


5
+1 cho nỗi nhớ (lắp ráp 6502 trên c64 là trải nghiệm lập trình đầu tiên của tôi ...)
Olivier Dulac


8

Python 2 , 55 byte

def f(n):p=[(" "*n+"#"*n)*2]*n;print(p+["#"*n*5]*n)*2+p

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

Điều này trả về một danh sách 2D của các nhân vật.

Python 2 , 65 byte

def f(n):p=((" "*n+"#"*n)*2+"\n")*n;print(p+("#"*n*5+"\n")*n)*2+p

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

Python 2 , 66 byte

def f(n):p=[(" "*n+"#"*n)*2]*n;print'\n'.join((p+["#"*n*5]*n)*2+p)

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


Wat witchkraft là yer footer
Leaky Nun

@LeakyNun A cho vòng lặp :)
Ông Xcoder

Không, tôi đang nói về việc f(i);lưu trữ kết quả trong một temp và printtruy cập nó.
Nữ tu rò rỉ

1
@LeakyNun Ya hiểu lầm: f(i)bản in và printtrong Python 2 thêm một dòng mới: P
Ông Xcoder

Ôi, thật ngu ngốc với tôi.
Leaky Nun

6

Than , 21 byte

NθUOײθ#UOθ F²⟲OO²⁴⁶θ

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Ban đầu tôi đã thử một cách tiếp cận bitmap dễ thương:

F⁵F⁵F&|ικ¹«J×ιIθ×κIθUOθ#

Hãy thử trực tuyến! Liên kết là phiên bản dài dòng của mã. Giải thích: Hoạt động bằng cách xem xét #như một mảng các hình vuông 5 × 5. Các hình vuông nằm trong các hàng hoặc cột lẻ cần được điền vào.


than thực sự không có hình dạng hashtag tích hợp?
dzaima

Tôi đã buộc than O_O?
Bạch tuộc ma thuật Urn

yay (hmm có vẻ như tôi cần phải sửa nó một chút)
ASCII chỉ có

@ ASCII-Chỉ cần sửa gì?
Neil

Oblong không nên in các bước cho đa giác mà nó sử dụng trong nội bộ lol
ASCII chỉ có

6

J, 22 byte

#('# '{~#:5$21,0)#~"1]

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

Rất nhiều điểm tương đồng với câu trả lời J khác, mặc dù tôi không hiểu rõ về các chuyến tàu có nhiều danh từ, vì vậy câu trả lời của tôi có ba byte tiềm năng để cắt bỏ (hai parens và một phản xạ- ~).

Giải trình

Tạo octothorpe

Các octothorpe được thực hiện bởi tất cả mọi thứ trong ngoặc đơn, được sao chép dưới đây để thuận tiện.

'# '{~#:5$21,0

Rất nhiều cách tôi tạo ra octothorpe là lạm dụng cách J đệm các mảng của nó khi chúng không đủ dài.

21,0chỉ đơn giản là tạo ra các mảng 21 0.

5$định hình lại mảng đó thành mảng 5 nguyên tử : 21 0 21 0 21.

#:chuyển đổi mỗi nguyên tử thành một số nhị phân. Vì #:hoạt động trên mỗi nguyên tử, đầu ra là một ma trận. Mỗi cái 21được thay thế bằng 1 0 1 0 1như mong đợi, nhưng mỗi cái 0được thay thế bởi 0 0 0 0 0! Điều này là do các mảng đệm J không đủ dài để khớp với hình dạng của mảng 2D kết quả bị buộc là 5 5do các 1 0 1 0 1hàng. May mắn thay, với số lượng nó đệm 0, vì vậy chúng ta có được ma trận kết quả

1 0 1 0 1
0 0 0 0 0
1 0 1 0 1
0 0 0 0 0
1 0 1 0 1

'# '{~chuyển đổi từng 1đến một không gian và 0đến #. {có nghĩa là "lấy" và ~có nghĩa là "chuyển đổi các đối số dyadic, vì vậy J xem từng phần tử trong ma trận như các chỉ số cho chuỗi '# 'có nghĩa là mỗi 0phần tử trở thành phần tử zeroth #và mỗi 1phần tử trở thành phần tử đầu tiên, một khoảng trắng. Điều này mang lại kích thước một octothorpe.

Thay đổi kích thước octothorpe

Đây chỉ đơn giản là vấn đề sao chép nthời gian dọc theo mỗi trục, được thực hiện bằng cách sử dụng

đầu tiên #(là một phần của một cái móc) và #~"1]. #bản sao dọc trục ngang và #"1bản sao dọc trục dọc.


1
##"1&('# '{~#:5$21,0)tiết kiệm một byte.
Zgarb

6

CJam, 27 26 25 byte

{_[{S3*'#*'#5*}3*;]fe*e*}

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

Sự thật thú vị: Điều này ban đầu bắt đầu ở 29 byte và byte đã được loại bỏ từng cái một kể từ đó, xen kẽ giữa chế độ khối và chương trình đầy đủ.

Giải trình:

{                          e# Stack:               | 2
 _                         e# Duplicate:           | 2 2
  [                        e# Begin array:         | 2 2 [
   {                       e# Do the following 3 times:
    S                      e#   Push a space       | 2 2 [" "
     3*                    e#   Repeat it 3 times: | 2 2 ["   "
       '#*                 e#   Join with '#':     | 2 2 [" # # "
          '#               e#   Push '#':          | 2 2 [" # # " '#
            5*             e#   Repeat it 5 times: | 2 2 [" # # " "#####"
              }3*          e# End:                 | 2 2 [" # # " "#####" " # # " "#####" " # # " "#####"
                 ;         e# Delete top of stack: | 2 2 [" # # " "#####" " # # " "#####" " # # "
                  ]        e# End array:           | 2 2 [" # # " "#####" " # # " "#####" " # # "]
                   fe*     e# Repeat characters:   | 2 ["  ##  ##  " "##########" "  ##  ##  " "##########" "  ##  ##  "]
                      e*   e# Repeat strings:      | ["  ##  ##  " "  ##  ##  " "##########" "##########" "  ##  ##  " "  ##  ##  " "##########" "##########" "  ##  ##  " "  ##  ##  "]
                        }  e# End
e# Result:
e# ["  ##  ##  "
e#  "  ##  ##  "
e#  "##########"
e#  "##########"
e#  "  ##  ##  "
e#  "  ##  ##  "
e#  "##########"
e#  "##########"
e#  "  ##  ##  "
e#  "  ##  ##  "]

Ai đó đã chuẩn bị cho thử thách này: P
Sản xuất ETH

@ETHproductions Đó là một CMC và được chuyển đến chính ...
Esolanging Fruit

@ETHproductions Không thể thực sự đổ lỗi cho anh ấy về điều đó ...
Leaky Nun

6

Husk , 12 10 byte

´Ṫ▲Ṙ" # # 

Hãy thử trực tuyến! Lưu ý không gian dấu.

Giải trình

´Ṫ▲Ṙ" # #   Implicit input, e.g. n=2.
   Ṙ" # #   Repeat each character of the string n times: "  ##  ##  "
´Ṫ          Outer product with itself by
  ▲         maximum: ["  ##  ##  ","  ##  ##  ","##########","##########","  ##  ##  ","  ##  ##  ","##########","##########","  ##  ##  ","  ##  ##  "]
            Print implicitly, separated by newlines.

6

J , 23 19 byte

' #'{~1=]+./~@#i:@2

Đã lưu 4 byte nhờ @LeakyNun.

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

Giải trình

' #'{~1=]+./~@#i:@2  Input: integer n
                  2  The constant 2
               i:@   Range [-2, -1, 0, 1, 2]
        ]            Get n
              #      Copy each n times
         +./~@       GCD table
      1=             Equals 1, forms the hashtag for input 1
' #'{~               Index and select the char

Chuột! Đã sắp đăng một giải pháp (dài hơn 4 byte) của riêng tôi. Tôi thực sự ấn tượng bởi cách bạn có thể soạn các hàm này mà không cần mũ và với một vài liên kết.
cole

@cole Cảm ơn. Đôi khi mũ có thể tránh được bằng cách sử dụng một danh từ và dyad. Ví dụ, [:|:fcó thể là0|:f
dặm

' # '{~]#"1]#+./~@i:@2lưu một byte
Conor O'Brien

lặp lại trước khi nhân cho bạn 19 byte:f=:' #'{~1=]+./~@#i:@2
Leaky Nun

1
@hoosierEE Đây là một tính năng mới trong J 8.06. Bạn có thể thử các phiên bản beta jsoftware.com/download/j806/install
dặm

5

Thạch , 14 13 11 byte

Đã lưu 2 byte nhờ @Jonathan ALLen

5ẋ€Ẏ&þ`ị⁾ #

Một liên kết đơn âm trả về một danh sách các dòng. Lưu ý không gian dấu.

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

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

5ẋ€Ẏ&þ`ị⁾ #    Main link. Arguments: n (integer)            1
5              Yield 5.
 ẋ€            Create a range and repeat each item n times. [[1], [2], [3], [4], [5]]
   Ẏ           Tighten; dump all sublists into the main list.
                                                            [1, 2, 3, 4, 5]
     þ         Create a table of                            [[1, 0, 1, 0, 1],
    &          bitwise ANDs,                                 [0, 2, 2, 0, 0],
      `        reusing this list.                            [1, 2, 3, 0, 1],
                                                             [0, 0, 0, 4, 4],
                                                             [1, 0, 1, 4, 5]]
       ị⁾ #    Index into the string " #".                   [" # # ",
               0 -> "#", 1 -> " ", 2 -> "#", etc.             "#####",
                                                              " # # ",
                                                              "#####",
                                                              " # # "]

Quan sát tốt về bitwise hoặc - lưu hai byte bằng cách chuyển từ hoặc sang và - loại bỏ nhu cầu hạ thấp, cho phép phạm vi ngầm và loại bỏ nhu cầu µ(hoặc thay vào đó bạn có thể có) ...5ẋ€Ẏ&þ`ị⁾ #
Jonathan Allan

@Jonathan ALLan Thú vị - tại sao không 5Ḷẋ€yêu cầu µ, nhưng không 5ẋ€?
Sản phẩm ETH

Tôi nghĩ rằng nhu cầu chỉ là dừng hành động nvà sau đó chuyển nó sang bên phải ẋ€, vì với một chuỗi hàng đầu nilad-dyad được gọi là đơn phương thì không cần thiết. Tuy nhiên, tôi không chắc lắm, làm thế nào `để đặt 5 (hoặc có thể là danh sách độ dài đó) ở bên phải của tab &.
Jonathan Allan

4

Ngôn ngữ nhà sản xuất trò chơi, 138 108 byte

n=argument0 s=''for(j=0;j<5*n;j+=1){for(l=0;l<5*n;l+=1)if(j div n|l div n)&1s+='#'else s+=' 's+='
'}return s

Dự định là một tập lệnh (tên của Game Maker cho các hàm do người dùng xác định), do đó, n=argument0return s. 20 byte có thể được cạo bằng cách lấy ntrực tiếp từ thể hiện hiện tại và sử dụngs làm kết quả. (Ví dụ nhận được các biến này vì chúng không được khai báo var).

Tất nhiên coi chừng #được sử dụng bởi công cụ đồ họa của Game Maker như một nhân vật dòng mới thay thế, vì vậy bạn có thể muốn thêm tiền tố vào nó\ nếu bạn muốn xuất ra màn hình;)

Cũng lưu ý rằng tôi đang sử dụng phiên bản GML của Game Maker 8.0 tại đây; các phiên bản GML hiện đại có thể có các tính năng có thể lưu thêm byte.

Một số ý tưởng lịch sự của bạn bè wareya và hợp âm.


Tôi nghĩ rằng đây là câu trả lời GML đầu tiên tôi từng thấy
Timothy Groote

@TimothyGroote Thật xấu hổ vì nó không được sử dụng nhiều hơn, dấu ngoặc và dấu chấm phẩy tùy chọn của nó rất phù hợp để chơi gôn :)
Andrea

4

Perl 5 , 49 + 1 (-p) = 50 byte

$_=' # # 
'=~s/./$&x$_/gre x$_;$_.=(y/ /#/r.$_)x2

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

Làm sao?

Hoàn toàn lưu trữ đầu vào bằng $ _ thông qua -pcờ. Bắt đầu với dòng trên cùng cơ bản nhất có thể " # # "với dòng mới của nó. Sao chép từng ký tự đó bằng số đầu vào. Sau đó sao chép số đó bằng số đầu vào để tạo thành phần trên cùng của octothorpe, lưu trữ tất cả số đó trở lại bằng $ . Sau đó nối dòng với tất cả các ký tự được thay thế bằng '#' lần số đầu vào. Sau đó nối phần trên cùng. Làm hai câu cuối cùng tổng cộng hai lần. Đầu ra của $ được ẩn trong -pcờ.


Tôi thích cách câu trả lời của bạn dễ đọc như của tôi.
admBorkBork

Họ đã luôn nói rằng Perl là một ngôn ngữ chỉ viết.
Xcali

3

05AB1E , 25 22 21 byte

•LQ•bûε×}5ôεS„# èJ¹F=

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


-1 vì Emigna ghét phiên âm và, may mắn thay, nhắc nhở tôi rằng tôi cũng nên: P.


Phải là một cách tốt hơn so với bitmap nó ... Vẫn hoạt động.


Suy ngẫm ... không phải là câu trả lời trong 05AB1E, mặc dù có vẻ như nó có thể ...
Bạch tuộc ma thuật Urn

5ôεS„# èJ¹F=tiết kiệm một byte.
Emigna

@Emigna sẽ tốt cho việc này?
Bạch tuộc ma thuật Urn

Có thể. Tôi chưa thử bức tranh này vì vậy tôi không thực sự chắc chắn về khả năng của nó. Có vẻ như một cái gì đó nó được làm cho.
Emigna

3

JavaScript (ES6), 79 byte

f=
n=>[...Array(n*5)].map((_,i,a)=>a.map((_,j)=>` #`[(i/n|j/n)&1]).join``).join`
`
<input type=number oninput=o.textContent=f(this.value)><pre id=o>

Cổng của phương pháp bitmap mà tôi đã sử dụng cho nỗ lực Than ban đầu của mình.


3

Trăn 2 , 124 , 116 , 113 , 112 , 98 , 96 66 byte

Mới (Tín dụng: HyperNeutrino):

def f(a):i='print(" "*a+"#"*a)*2;'*a;exec(i+'print"#"*a*5;'*a)*2+i

Cũ:

a=input();b,c="# "
for i in"012":
	exec'print c*a+b*a+c*a+b*a;'*a
	if i<"2":exec'print b*a*5;'*a

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

Rõ ràng không phải là giải pháp ngắn nhất, nhưng tôi nghĩ nó là tốt. Bất kỳ thông tin phản hồi sẽ được đánh giá cao!


1
a,b,c=input()," #"nên lưu một số byte.
DJMcMayhem

@DJMcMayhem Điều đó đã cho tôi một lỗi. Ý bạn là a,b,c=input(),"#"," "sao Mà không ngắn hơn ... Tôi đánh giá cao sự giúp đỡ!
Braeden Smith

Ồ xin lỗi. Tôi cho rằng làm việc vì a,b="# "công việc.
DJMcMayhem

a=input();b,c="# "sẽ hoạt động và lưu byte
Wheat Wizard

Bạn cũng có thể thoát khỏi parens (i==2)và thêm khoảng trắng vào đầu.
Thuật sĩ lúa mì

3

Brain-Flak , 338 332 byte

6 byte nhờ Riley.

(({}<>)<(())>)(()()()()()){({}<(<>)<>{({}<<>({}<(((((()()()()())){})){}{}{})<>([({})]()){(<{}({}<((((({}))){}){}{}){({}<<>(({}))<>>[()])}{}>)>)}{}(({})<{{}(<(()()()()()){({}<<>(<([{}](((((()()){}){}){}){}()){}())>)<>{({}<<>({}<(({}))>())<>>[()])}<>({}<>{})>[()])}{}>)}>{})<>((()()()()()){})>())<>>[()])}<>({}<>{}<([{}]())>)>[()])}<>

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

Phiên bản "dễ đọc" hơn

(({}<>)<(())>)(()()()()())
{({}<(<>)<>{({}<<>({}<(((((()()()()())){})){}{}{})<>
  ([({})]()){(<{}({}<
    ((((({}))){}){}{}){({}<<>(({}))<>>[()])}{}
  >)>)}{}(({})<{{}(<
    (()()()()()){({}<<>(<([{}](((((()()){}){}){}){}()){}())>)<>{({}<<>({}<(({}))>())<>>[()])}<>({}<>{})>[()])}{}
  >)}>{})
<>((()()()()()){})>())<>>[()])}<>({}<>{}<([{}]())>)>[()])}<>

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


(({})<>)(())<>({}<>)lúc đầu có thể được thay thế bằng(({}<>)<(())>)
Riley

2

SOGL (SOGLOnline cam kết 2940dbe) , 15 byte

ø─Ζ┘Χ⁴‘5n{.∙.*T

Để chạy cái này, tải cái này xuống và chạy mã trong index.htmltập tin.

Sử dụng tại cam kết đó (và trước đó) * lặp lại từng ký tự, không phải toàn bộ chuỗi.

Giải trình:

ø─Ζ┘Χ⁴‘          push " # # ##### # # ##### # # "
       5n        split into lines of length 5
         {       for each line do
          .∙       multiply vertically input times
            .*     multiply horizontally input times
              T    output in a new line

Phần thưởng: thêm 2 đầu vào cho chiều dài X và Y riêng biệt!


"Cam kết 2940dbe" - Tôi thích ý tưởng đó. Bạn có thể giải thích tại sao ø─Ζ┘Χ⁴‘đẩy điều đó mặc dù?
Bạch tuộc ma thuật Urn

1
@MagicOctopusUrn Đó là nén SOGL, ở đây lưu trữ một từ điển "" và #dữ liệu cơ sở 2 cần thiết cho chuỗi đó.
dzaima

Không , nó có đủ ổn định để tôi bắt đầu sử dụng không :)?
Bạch tuộc ma thuật Urn

1
@MagicOctopusUrn Chà nó khá ổn định vì không có thay đổi nào về câu trả lời kể từ SOGLOnline, nhưng liệu bạn có thể sử dụng nó (như hiểu nó) là một câu hỏi khác. Bạn có thể thử mặc dù và đặt câu hỏi trong TNB
dzaima

Haha ... Tôi chờ tài liệu rồi. Tôi cần được mã hóa một chút.
Bạch tuộc ma thuật Urn

2

Brainfuck , 224 byte

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

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

Tạo nên

Tôi đã cố gắng xây dựng mã này bằng tay và mất khá nhiều giờ, vì vậy tôi quyết định tạo một bộ chuyển mã bằng Python.

Đây là mã tôi đã nhập để tạo mã này:

read(0)
copy(0,(1,1),(5,1))
add(3,1)
add(4,5)
loop(4)
loop(1)
add(2,1)

add(7,1)
add(8,5)
loop(8)
loop(5)
add(6,1)

loop(3)
add(9,1)
loop(7)
add(10,1)
add(11,-3)
end(7)
end(3)
copy(9,(3,1))
copy(10,(7,1))
add(10,5)
copy(10,(11,7))
write(11)
clear(11)

end(5)
copy(6,(5,1))
copy(7,(6,-1))
add(6,1)
copy(6,(7,1))
end(8)
add(6,10)
write(6)
clear(6)

end(1)
copy(2,(1,1))
copy(3,(2,-1))
add(2,1)
copy(2,(3,1))
end(4)

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






1

PowerShell , 72 68 63 60 byte

param($a)(,($x=,((' '*$a+"#"*$a)*2)*$a)+,("#"*5*$a)*$a)*2;$x

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

Đưa đầu vào $a. Sau đó, chúng tôi thực hiện một loạt các phép thuật chuỗi và thao tác mảng.

(,($x=,((' '*$a+"#"*$a)*2)*$a)+,("#"*5*$a)*$a)*2;$x
         ' '*$a+"#"*$a                              # Construct a string of spaces and #
        (             )*2                           # Repeat it twice
      ,(                 )*$a                       # Repeat that $a times to get the top as an array
  ($x=                       )                      # Store that into $x and immediately output it
 ,                            +                     # Array concatenate that with ...
                               ,("#"*5*$a)          # another string, the middle bar ...
                                          *$a       # repeated $a times.
(                                            )*2;   # Do that twice
                                                 $x # Output $x again

Bạn có thể bóc ra các phần của lời giải thích bắt đầu từ phía dưới để xem đầu ra được xây dựng như thế nào, vì vậy hy vọng lời giải thích của tôi có ý nghĩa.


1

Haskell, 72 byte

a#b=a++b++a++b++a
c%l=((c<$l)#('#'<$l))<$l
f n=(' '%[1..n])#('#'%[1..n])

Trả về một danh sách các chuỗi. Hãy thử trực tuyến!

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

a#b=a++b++a++b++a          -- concatenate the strings a and b in the given pattern
c%l=                       -- take a char c and a list l (we only use the length
                           -- of l, the actual content doesn't matter)
    c<$l                   -- make length l copies of c
         '#'<$l            -- make length l copies of '#'
        #                  -- combine them via function #
               <$l         -- and make length l copies of that string
f n=                       -- main function
              #            -- make the "a b a b a" pattern with the strings
                           -- returned by the calls to function %                                
    ' '%[1..n]             --   one time with a space 
               '#'%[1..n]  --   one time with a '#'

1

Toán học, 63 byte

ArrayFlatten@Array[x=#;Table[If[OddQ@-##," ","#"],x,x]&,{5,5}]&

Giải trình

ArrayFlatten@Array[x=#;Table[If[OddQ@-##," ","#"],x,x]&,{5,5}]&  (* input N *)

                   x=#                                           (* Set x to N *)
                                                      &          (* A function that takes two inputs: *)
                             If[OddQ@-##," ","#"]                (* if both inputs are odd (1), " ". "#" otherwise *)
                       Table[                    ,x,x]           (* Make N x N array of that string *)
             Array[                                     ,{5,5}]  (* Make a 5 x 5 array, applying that function to each index *)
ArrayFlatten@                                                    (* Flatten into 2D array *)

(1) -##phân tích thànhTimes[-1, ##]


ArrayFlattenrất đẹp
Đánh dấu S.

1

Python 2, 113 byte

Là một chuỗi các chuỗi:

r=[1-1*(i%(2*n)<n)for i in range(5*n)]
print[''.join(' #'[r[k]+r[j]>0]for k in range(len(r)))for j in range(n*5)]

Như nghệ thuật ASCII:

Python 3, 115 byte

r=[1-1*(i%(2*n)<n)for i in range(5*n)]
for j in range(n*5):print(*(' #'[r[k]+r[j]>0]for k in range(len(r))),sep='')

Python 3, 117 byte

p=range(5*n)
for i,e in enumerate([j%(2*n)>=n for j in p]for k in p):print(*[' #'[i%(2*n)>=n or k]for k in e],sep='')

Là một mảng của booleans

Python 2, 75 byte

p=range(5*n)
f=lambda o:o%(2*n)>=n
print[[f(j)or f(i)for j in p]for i in p]


1
Lâu rồi, không gặp :-)
ETHproductions 17/8/17

Vâng, nó có! @ETHproductions
Zach Gates

1

Java 8, 103 byte

Lambda chấp nhận Integervà in octothorpe theo tiêu chuẩn. Đúc để Consumer<Integer>.

n->{for(int s=5*n,x=0,y;x<s;x++)for(y=0;y<s;)System.out.print((x/n%2+y++/n%2>0?'#':32)+(y<s?"":"\n"));}

Dùng thử trực tuyến

Lambda

n -> {
    for (
        int
            s = 5 * n,
            x = 0,
            y
        ;
        x < s;
        x++
    )
        for (y = 0; y < s; )
            System.out.print(
                (x / n % 2 + y++ / n % 2 > 0 ? '#' : 32)
                + (y < s ? "" : "\n")
            );
}

Quan sát chính ở đây là, trên một lưới 5 x 5 của n bởi n tế bào, octothorpes xuất hiện bất cứ nơi nào hàng hoặc cột số (dựa trên 0) là số lẻ. Tôi khá chắc chắn rằng đây là cách tiếp cận chung rẻ nhất, nhưng có vẻ như chơi gôn hơn.

Lời cảm ơn

  • -1 byte nhờ Kevin Cruijssen

1
Bạn có thể đặt int s=5*n,x=0,yvòng lặp thay thế để lưu một byte trên dấu chấm phẩy.
Kevin Cruijssen


1

R , 87 85 62 byte

m=matrix(" ",x<-scan()*5,x);m[s,]=m[,s<-rep(!1:0,e=x/5)]="#";m

2 byte được lưu bằng cách biểu thị c (F, T) là! 1: 0, nhờ LeakyNun

23 byte được lưu nhờ Giuseppe

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

Giải thích (vô danh):

x=scan()*5              # Multiply input by 5 to get the required width/height of the matrix
m=matrix(" ",x,x)       # Create a matrix of the required dimensions
s=rep(!1:0,each=x/5)    # The sequence s consists of F repeated n times, followed by T repeated n times
m[s,]="#"               # Use s as logical indices to set those rows as "#" characters.
                        # R recycles the sequence to the height of the matrix.
m[,s]="#"               # Same, with columns
write(m,"",x,,"")       # Print out across the required number of columns             

Nó không hoạt động trên TIO vì nó quét dòng tiếp theo, đó là một mã.
Leaky Nun




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.