Vẽ một mô hình Houndstooth


22

Viết chương trình hoặc hàm có hai số nguyên dương, chiều rộng và chiều cao và vẽ mẫu lưới houndstooth nghệ thuật ASCII với các kích thước đó bằng cách sử dụng lưới văn bản 25 × 26 này làm ô cơ sở:

.......#.....#####.......
.......##.....#####......
.......###.....#####.....
.......####.....####.....
.......#####.....###.....
.......######.....##.....
.......#######.....#.....
.......########..........
####################.....
.####################....
..####################...
...####################..
....####################.
.....####################
#.....##############.####
##.....#############..###
###....#############...##
####...#############....#
#####..#############.....
.#####.#############.....
..##################.....
........#####............
.........#####...........
..........#####..........
...........#####.........
............#####........

Vì vậy, nếu đầu vào là 2,1đầu ra sẽ là:

.......#.....#####..............#.....#####.......
.......##.....#####.............##.....#####......
.......###.....#####............###.....#####.....
.......####.....####............####.....####.....
.......#####.....###............#####.....###.....
.......######.....##............######.....##.....
.......#######.....#............#######.....#.....
.......########.................########..........
####################.....####################.....
.####################.....####################....
..####################.....####################...
...####################.....####################..
....####################.....####################.
.....####################.....####################
#.....##############.#####.....##############.####
##.....#############..#####.....#############..###
###....#############...#####....#############...##
####...#############....#####...#############....#
#####..#############.....#####..#############.....
.#####.#############......#####.#############.....
..##################.......##################.....
........#####....................#####............
.........#####....................#####...........
..........#####....................#####..........
...........#####....................#####.........
............#####....................#####........

Và nếu đầu vào là 5,4đầu ra sẽ là:

.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
.......#.....#####..............#.....#####..............#.....#####..............#.....#####..............#.....#####.......
.......##.....#####.............##.....#####.............##.....#####.............##.....#####.............##.....#####......
.......###.....#####............###.....#####............###.....#####............###.....#####............###.....#####.....
.......####.....####............####.....####............####.....####............####.....####............####.....####.....
.......#####.....###............#####.....###............#####.....###............#####.....###............#####.....###.....
.......######.....##............######.....##............######.....##............######.....##............######.....##.....
.......#######.....#............#######.....#............#######.....#............#######.....#............#######.....#.....
.......########.................########.................########.................########.................########..........
####################.....####################.....####################.....####################.....####################.....
.####################.....####################.....####################.....####################.....####################....
..####################.....####################.....####################.....####################.....####################...
...####################.....####################.....####################.....####################.....####################..
....####################.....####################.....####################.....####################.....####################.
.....####################.....####################.....####################.....####################.....####################
#.....##############.#####.....##############.#####.....##############.#####.....##############.#####.....##############.####
##.....#############..#####.....#############..#####.....#############..#####.....#############..#####.....#############..###
###....#############...#####....#############...#####....#############...#####....#############...#####....#############...##
####...#############....#####...#############....#####...#############....#####...#############....#####...#############....#
#####..#############.....#####..#############.....#####..#############.....#####..#############.....#####..#############.....
.#####.#############......#####.#############......#####.#############......#####.#############......#####.#############.....
..##################.......##################.......##################.......##################.......##################.....
........#####....................#####....................#####....................#####....................#####............
.........#####....................#####....................#####....................#####....................#####...........
..........#####....................#####....................#####....................#####....................#####..........
...........#####....................#####....................#####....................#####....................#####.........
............#####....................#####....................#####....................#####....................#####........
  • Đối số chiều rộng phải đến trước. Bất kỳ định dạng đầu vào hợp lý (ví dụ như w,h, w h, (w, h)) là tốt.
  • In hoặc trả lại kết quả với một dòng mới tùy chọn.
  • Bạn có thể sử dụng bất kỳ hai ký tự ASCII có thể in riêng biệt thay cho .#.
  • Bạn có thể dịch ô cơ sở theo chiều dọc hoặc chiều ngang, như thể nó có các điều kiện biên định kỳ . Do đó, góc trên cùng bên trái của đầu ra sẽ không nhất thiết phải là hình chữ nhật 7 × 8 của .. ( Quy tắc mới! )

Mã ngắn nhất tính bằng byte thắng.

Như một phần thưởng, tạo ra một hình ảnh thay vì mỗi .pixel là một pixel của một màu và mỗi #pixel là một pixel của một màu khác.


Những loại tiền thưởng? Một cái bánh quy ..? ;-)
Zach Gates

4
Vặn "chiến thắng mã ngắn nhất" của bạn, tôi đang làm điều này!
El'endia Starman

7
@ZachGates Có lẽ là bánh quy chó.
Sở thích của Calvin

Cuộn thủy triều đến đó!
Greg Bacon

Câu trả lời:


17

Pyth, 61 60 55 49 byte

j*vwmjk*Qd++Rm012Jmms}k++Rhd5U-d4T=T13+Lm1T_mP_dJ

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

chỉnh sửa 1: Kết hợp hai câu lệnh tạo băng tần và hình tam giác (xem bên dưới)

chỉnh sửa 2: Không thấy rằng chúng ta có thể sử dụng bất kỳ biểu tượng nào. Đã lưu 5 byte chỉnh sửa

chỉnh sửa 3: @ Calvin'sHob sở thích cho phép dịch hình ảnh cơ sở. Vì cách tiếp cận của tôi dựa trên ý tưởng này, điều này đã giúp ích khá nhiều. -6 byte

Và đối với phần thưởng Cookie :

.w*vw*RQ++Rm012Jmm*K255}k++Rhd5U-d4T=T13+LmKT_mP_dJ

Đây chỉ dài hơn 2 byte (51 byte) và tạo tệp o.png. Đối với đầu vào, 5\n4nó tạo ra hình ảnh sau đây:

Mô hình Houndstooth

Giải trình:

Mô hình Houndstooth trông thực sự khá bất thường. Nhưng nếu chúng ta đưa 7 cột bên trái sang bên phải và 5 hàng trên cùng cho trang phục, chúng ta sẽ có được một mẫu đẹp hơn nhiều:

.#####...................
..#####..................
...#####.................
....#####................
.....#####...............
#.....#####..............
##.....#####.............
###.....#####............
####.....####............
#####.....###............
######.....##............
#######.....#............
########.................
#############.....#######
##############.....######
###############.....#####
################.....####
#################.....###
##################.....##
#############.#####.....#
#############..#####.....
#############...#####....
#############....#####...
#############.....#####..
#############......#####.
#############.......#####

Đầu tiên tôi tạo khối 13x13 trên cùng bên trái:

.#####.......
..#####......
...#####.....
....#####....
.....#####...
#.....#####..
##.....#####.
###.....#####
####.....####
#####.....###
######.....##
#######.....#
########.....

Có 2 bất đẳng thức đơn giản, mô tả hai #-areas. Các ban nhạc có thể được mô tả bởi y + 1 <= x <= y + 5và tam giác có thể được mô tả bởi x <= y - 5. Tôi đã kết hợp hai điều kiện sau:

Jmms}k++Rhd5U-d4T=T13
                 =T13   T = 13
 m               T      map each d of [0, 1, ..., 12] to: 
                           the list produced by
  m             T          map each k of [0, 1, ..., 12] to:
       +Rhd5                  the list [d+1, d+2, ..., d+5]
      +                       extended by 
            U-d4              the list [0, 1, ..., d - 5]
    }k                        test if k is in the list
   s                          and convert the boolean result to 1 or 0
J                       assign this 13x13 block to J

Sau đó +Rm012thêm 12 số không ở cuối mỗi hàng, để có được khối 25x13 phía trên.

Khối 25x13 thấp hơn bây giờ thực sự đơn giản:

+Lm1T_mP_dJ
      m   J    map each row d of J to:
       P_d        reverse the row and pop the last element
     _         reverse the order the rows
+Lm1T          add T ones at the beginning of each row. 

Bây giờ tất cả còn lại là lặp lại mẫu và in nó

j*vwmjk*Qd+upperlower   implicit: Q = first input number
          +upperlower   combine the two blocks to a 25x26 block
    m                   map each row d to:
       *Qd                 repeat d Q times
     jk                    and join to a string
 *vw                    read another number from input and repeat
j                       join by newlines and print

Sự khác biệt của mã thưởng Cookie :

  • 255 thay vì 1
  • thay vì mjk*Qdtôi sử dụng *RQ, vì tôi không muốn một chuỗi
  • .w lưu mảng 2D này vào tập tin (chuyển đổi nó thành png ngầm)

5
Giải thích tuyệt vời!
trichoplax

Bạn rõ ràng có nghĩa là "5 hàng dưới cùng lên trên cùng", đó chỉ là một lỗi đánh máy. Tôi không hiểu tại sao bình luận của tôi bị xóa mà không có hành động. Kết quả là tôi ngại đi và tự mình chỉnh sửa bài viết của mình. Tất cả trong tất cả, một câu trả lời rất tốt và một lời giải thích tuyệt vời. Tôi đã nâng cấp nó trước đó
Level River St

@steveverrill ơi, xin lỗi. Tôi nghĩ rằng bạn muốn sửa tiếng Anh của tôi trong đoạn văn, trong đó tôi đã mô tả sự chuyển đổi trở lại. Đã sửa nó ngay. Cảm ơn.
Jakube

11

CJam, 106 73 71 byte

0000000: 71 7e 22 04 94 51 af 40 6e 73 b2 68 3a e1 7e 13 f2 a1  q~"..Q.@ns.h:.~...
0000012: 3e 1d de f5 64 9c 6b 0f 27 4c 36 d7 81 3d 30 35 56 f8  >...d.k.'L6..=05V.
0000024: cd e8 cd 7c dc 90 31 59 40 8b 8c 22 32 35 36 62 32 32  ...|..1Y@.."256b22
0000036: 62 41 73 33 39 2a 2e 2a 73 32 35 2f 2a 66 2a 4e 2a     bAs39*.*s25/*f*N*

In 10thay vì .#. Hãy thử trực tuyến trong trình thông dịch CJam .

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

q~      e# Read and evaluate all input. This pushes W and H.
"…"     e# Push an encoding of run lengths of the characters in the output.
256b22b e# Convert from base 256 to base 22.
As39*   e# Push "10" and repeat it 39 times.
.*      e# Vectorized character repetition; multiply each base 22 digit (run
        e# length) by the corresponding character of "10…10".
s25/    e# Flatten and split into chunks of length 25.
*       e# Repeat the resulting array of rows H times.
f*      e# Repeat each row W times.
N*      e# Join the rows, separating by linefeeds.

Phần thưởng cookie

0000000: 27 50 6f 31 70 71 7e 5d 5f 5b 32 35 5f 29 5d 2e 2a 5c  'Po1pq~]_[25_)].*\
0000012: 7e 22 04 94 51 af 40 6e 73 b2 68 3a e1 7e 13 f2 a1 3e  ~"..Q.@ns.h:.~...>
0000024: 1d de f5 64 9c 6b 0f 27 4c 36 d7 81 3d 30 35 56 f8 cd  ...d.k.'L6..=05V..
0000036: e8 cd 7c dc 90 31 59 40 8b 8c 22 32 35 36 62 32 32 62  ..|..1Y@.."256b22b
0000048: 41 73 33 39 2a 2e 2a 73 32 35 2f 2a 66 2a 73 2b 4e 2a  As39*.*s25/*f*s+N*

in một BitMap di động thay vì nghệ thuật ASCII.

Dưới đây là đầu ra cho đầu vào 24 13, được chuyển đổi thành PNG:

đầu ra


7

Befunge-93 , 2120 1967 byte

Đây là một số befunge chất lượng cao, với xử lý ngoại lệ để gỡ lỗi!

&&00p10pv
v       <
    >94+2*20p        v
>00g|   >                v
    @                >10g>0020gv-1:<
                               >:0`|
                     ,       v    $<
                     +        >v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v
 v_$1-:#^_$20g1-20p55^       >|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>"!DAB"....@
 ,:
 >^".......#.....#####......."                                                    <
  ^".......##.....#####......"                                                  <
  ^".......###.....#####....."                                                <
  ^".......####.....####....."                                              <
  ^".......#####.....###....."                                            <
  ^".......######.....##....."                                          <
  ^".......#######.....#....."                                        <
  ^".......########.........."                                      <
  ^"####################....."                                    <
  ^".####################...."                                  <
  ^"..####################..."                                <
  ^"...####################.."                              <
  ^"....####################."                            <
  ^".....####################"                          <
  ^"#.....##############.####"                        <
  ^"##.....#############..###"                      <
  ^"###....#############...##"                    <
  ^"####...#############....#"                  <
  ^"#####..#############....."                <
  ^".#####.#############....."              <
  ^"..##################....."            <
  ^"........#####............"          <
  ^".........#####..........."        <
  ^"..........#####.........."      <
  ^"...........#####........."    <
  ^"............#####........"  <
^                     p00-1g00<

(Rõ ràng, điều này vẫn rất có thể chơi được. Tôi chỉ muốn nhận được câu trả lời ở đây bây giờ)

Vì vậy, điều này được tạo thành từ các phần khác nhau.

&&00p10p

Đây chỉ là trình khởi tạo, nó lấy các giá trị và lưu trữ chúng

    >94+2*20p
>00g|      > 
    @  

Phần này đặt lại số lượng hàng, vì vậy chúng tôi có thể in ra một hình ảnh (chiều rộng) khác cạnh nhau. 94+2*đang tính 26, số lượng hàng. Ngoài ra, nếu chiều cao bằng không, chương trình sẽ chấm dứt.

>10g

Điều này có được chiều rộng trên ngăn xếp để chúng tôi biết có bao nhiêu để in

0020gv-1:<
     >:0`|
         $

Điều này thêm hai giá trị giả vào ngăn xếp để cho biết khi nào chúng tôi hoàn thành một thao tác, cũng như hàng (n) chúng tôi đang thực hiện. Điều này sau đó thêm n giá trị vào ngăn xếp

>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v>v
|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>|>"!DAB"....@

                                                    <
                                                  <
                                                <
                                              <
                                            <
                                          <
                                        <
                                      <
                                    <
                                  <
                                <
                              <
                            <
                          <
                        <
                      <
                    <
                  <
                <
              <
            <
          <
        <
      <
    <
  <
<

Đây là phần điều khiển sẽ đến hàng (26-n). Đây là cách dễ nhất tôi có thể tìm ra cách để làm điều đó.

".......#.....#####......."
".......##.....#####......"
".......###.....#####....."
".......####.....####....."
".......#####.....###....."
".......######.....##....."
".......#######.....#....."
".......########.........."
"####################....."
".####################...."
"..####################..."
"...####################.."
"....####################."
".....####################"
"#.....##############.####"
"##.....#############..###"
"###....#############...##"
"####...#############....#"
"#####..#############....."
".#####.#############....."
"..##################....."
"........#####............"
".........#####..........."
"..........#####.........."
"...........#####........."
"............#####........"

Điều này, rõ ràng, được đọc và sẽ bật bất cứ hàng nào được đọc lên ngăn xếp ngược. Điều này có nghĩa là khi chúng tôi bật nó ra, nó sẽ in đúng.

v_
,:
>^

Điều này sẽ in cho đến khi ngăn xếp đạt 0, mà chúng ta đã để lại trước đó.

1-:#^_

Điều này sẽ mất 1 số lượng dòng cụ thể để in, sau đó kiểm tra xem nó có bằng 0 hay không. Nếu nó khác không, chúng ta quay lại khối mã thứ tư.

          ,
          +
20g1-20p55^

Điều này trừ 1 từ hàng (n), in một dòng mới và quay lại khối 3

p00-1g00

Một khi tất cả các hàng đã được in, điều này sẽ trừ một từ chiều cao ban đầu và quay lại khối 2.

Tất cả phần còn lại của mã là kiểm soát luồng hoặc quản lý ngăn xếp. Viết mas này nhiều hơn tôi nghĩ, nhưng tôi hài lòng với vẻ ngoài của nó. Nó dễ chơi hơn nhiều, và đó có thể sẽ vẫn là một dự án cho một ngày khác.

2120 -> 1967 : cắt xén một số dòng với nhiều khoảng trống bị lãng phí


1
Tôi đánh gôn nó. Không phải câu trả lời của bạn cụ thể, nhưng tôi đã chơi một giải pháp trong Befunge!
El'endia Starman

6

Perl, 243

(Thêm một byte cho công -ntắc để tìm nạp đầu vào từ stdin.)

($w,$h)=split;for(1..$h){print((sprintf("%025b",hex)x$w).$/)foreach qw(20f80 307c0 383e0 3c1e0 3e0e0 3f060 3f820 3fc00 1ffffe0 fffff0 7ffff8 3ffffc 1ffffe fffff 107ffef 183ffe7 1c3ffe3 1e3ffe1 1f3ffe0 fbffe0 7fffe0 1f000 f800 7c00 3e00 1f00)}

Điều này khá đơn giản - tất cả những gì nó làm là chuyển đổi một mảng gồm 26 số hex thành nhị phân và in chúng ra số lần cần thiết.

Thí dụ:

Đầu vào:

3 2

Đầu ra:

000000010000011111000000000000001000001111100000000000000100000111110000000
000000011000001111100000000000001100000111110000000000000110000011111000000
000000011100000111110000000000001110000011111000000000000111000001111100000
000000011110000011110000000000001111000001111000000000000111100000111100000
000000011111000001110000000000001111100000111000000000000111110000011100000
000000011111100000110000000000001111110000011000000000000111111000001100000
000000011111110000010000000000001111111000001000000000000111111100000100000
000000011111111000000000000000001111111100000000000000000111111110000000000
111111111111111111110000011111111111111111111000001111111111111111111100000
011111111111111111111000001111111111111111111100000111111111111111111110000
001111111111111111111100000111111111111111111110000011111111111111111111000
000111111111111111111110000011111111111111111111000001111111111111111111100
000011111111111111111111000001111111111111111111100000111111111111111111110
000001111111111111111111100000111111111111111111110000011111111111111111111
100000111111111111110111110000011111111111111011111000001111111111111101111
110000011111111111110011111000001111111111111001111100000111111111111100111
111000011111111111110001111100001111111111111000111110000111111111111100011
111100011111111111110000111110001111111111111000011111000111111111111100001
111110011111111111110000011111001111111111111000001111100111111111111100000
011111011111111111110000001111101111111111111000000111110111111111111100000
001111111111111111110000000111111111111111111000000011111111111111111100000
000000001111100000000000000000000111110000000000000000000011111000000000000
000000000111110000000000000000000011111000000000000000000001111100000000000
000000000011111000000000000000000001111100000000000000000000111110000000000
000000000001111100000000000000000000111110000000000000000000011111000000000
000000000000111110000000000000000000011111000000000000000000001111100000000
000000010000011111000000000000001000001111100000000000000100000111110000000
000000011000001111100000000000001100000111110000000000000110000011111000000
000000011100000111110000000000001110000011111000000000000111000001111100000
000000011110000011110000000000001111000001111000000000000111100000111100000
000000011111000001110000000000001111100000111000000000000111110000011100000
000000011111100000110000000000001111110000011000000000000111111000001100000
000000011111110000010000000000001111111000001000000000000111111100000100000
000000011111111000000000000000001111111100000000000000000111111110000000000
111111111111111111110000011111111111111111111000001111111111111111111100000
011111111111111111111000001111111111111111111100000111111111111111111110000
001111111111111111111100000111111111111111111110000011111111111111111111000
000111111111111111111110000011111111111111111111000001111111111111111111100
000011111111111111111111000001111111111111111111100000111111111111111111110
000001111111111111111111100000111111111111111111110000011111111111111111111
100000111111111111110111110000011111111111111011111000001111111111111101111
110000011111111111110011111000001111111111111001111100000111111111111100111
111000011111111111110001111100001111111111111000111110000111111111111100011
111100011111111111110000111110001111111111111000011111000111111111111100001
111110011111111111110000011111001111111111111000001111100111111111111100000
011111011111111111110000001111101111111111111000000111110111111111111100000
001111111111111111110000000111111111111111111000000011111111111111111100000
000000001111100000000000000000000111110000000000000000000011111000000000000
000000000111110000000000000000000011111000000000000000000001111100000000000
000000000011111000000000000000000001111100000000000000000000111110000000000
000000000001111100000000000000000000111110000000000000000000011111000000000
000000000000111110000000000000000000011111000000000000000000001111100000000

3

Rev 1, C, 118 115 byte

i,x,y;f(w,h){for(i=26*h*(w*=25);i--;i%w||puts(""))x=i%25,y=i/w%26,putchar(((y>x^y>x+5^x>y+4)&y/13==x/13^y/13)+34);}

9 byte được lưu do quy tắc mới cho phép dịch ô. 3 byte được lưu bằng cách sử dụng w*=25. Phần còn lại của bài vẫn không thay đổi.

Rev 0, C, 127 byte

i,x,y;f(w,h){for(i=650*w*h;i--;i%(25*w)||puts(""))x=(i+20)%25,y=(i/25/w+8)%26,putchar(((y>x^y>x+5^x>y+4)&y/13==x/13^y/13)+34);}

Điều này đi qua các ký tự, in chúng từng cái một. i%(25*w)||puts("")chèn một dòng mới ở cuối mỗi dòng.

Cách xem thiết kế của tôi tương tự như của Jakube, nhưng tôi đưa 8 hàng trên cùng xuống dưới cùng và 5 cột bên phải ở bên trái để có chế độ xem sau. Trong chương trình, bước này được "đảo ngược" bởi +20+8trong các biểu thức cho x và y.

"""""####################
#"""""###################
##"""""##################
###"""""#################
####"""""################
#####"""""###############
"#####"""""##############
""#####"""""#############
"""#####""""#############
""""#####"""#############
"""""#####""#############
""""""#####"#############
"""""""##################
"""""""""""""#####"""""""
""""""""""""""#####""""""
"""""""""""""""#####"""""
""""""""""""""""#####""""
"""""""""""""""""#####"""
""""""""""""#"""""#####""
""""""""""""##"""""#####"
""""""""""""###"""""#####
""""""""""""####"""""####
""""""""""""#####"""""###
""""""""""""######"""""##
""""""""""""#######"""""#
""""""""""""########"""""

Ngoài "sự đảo ngược của màu sắc", nó có thể trông rất giống nhau, nhưng có một sự khác biệt quan trọng: các sọc chéo khớp với nhau. (lưu ý rằng thiết kế ban đầu không có đối xứng đường chéo vì nó có kích thước 25x26.)

Biểu thức ((y>x^y>x+5^x>y+4)^y/13)+34tạo ra các giá trị sau, trong đó các toán tử so sánh khác nhau tạo ra các sọc, ^y/13tạo ra "lật màu" một nửa và +34lấy số kết quả 0,1và tăng nó lên phạm vi ASCII 34,35.

"""""####################
#"""""###################
##"""""##################
###"""""#################
####"""""################
#####"""""###############
"#####"""""##############
""#####"""""#############
"""#####"""""############
""""#####"""""###########
"""""#####"""""##########
""""""#####"""""#########
"""""""#####"""""########
########"""""#####"""""""
#########"""""#####""""""
##########"""""#####"""""
###########"""""#####""""
############"""""#####"""
#############"""""#####""
##############"""""#####"
###############"""""#####
################"""""####
#################"""""###
##################"""""##
###################"""""#
####################"""""

Thuật ngữ ước tính &y/13==x/13thành false = 0 ở các phần trên cùng bên phải và dưới cùng bên trái, tạo ra phần vuông của mẫu như được hiển thị trước đó. Lưu ý rằng vì chương trình đếm ngược, gốc x = y = 0 nằm ở dưới cùng bên phải. Điều này rất tiện lợi vì hình vuông #có chiều rộng 13 ký tự trong khi hình vuông "chỉ rộng 12 ký tự.


2

Befunge -93, 968 byte

Vâng đúng vậy! Một câu trả lời cạnh tranh Befunge!

&:&\00p10p:520pv:g00p02<v  <
    #   p1*45-1_v#:" "  <  v
    |`-1*65:g02$<      ,
    >:" "\39*\p:" "\47 *v
+:"<"\39*\p:"v"\47*\p25^>\p 1
".......#.....#####......."<v
".......##.....#####......"
".......###.....#####....."
".......####.....####....."
".......#####.....###....."
".......######.....##....."
".......#######.....#....."
".......########.........."
"####################....."
".####################...."
"..####################..."
"...####################.."
"....####################."
".....####################"
"#.....##############.####"
"##.....#############..###"
"###....#############...##"
"####...#############....#"
"#####..#############....."
".#####.#############....."
"..##################....."
"........#####............"
".........#####..........."
"..........#####.........."
"...........#####........."
"............#####........"
,,,,,,,,,,,,,,,,,,,,,,,,,  v>
    > 10g1-:10p #v_@
 " " \47*\p5:"<"v>:" "\39*\ p
\*74 \"v":p\*93\<      v,*5 2p

Giải thích ngày mai, ngủ ngay. Tuy nhiên, tôi sẽ nói rằng tôi làm những việc thông minh bằng cách di chuyển một vài mũi tên chuyển hướng và tôi cũng sử dụng thuộc tính bao quanh khá nhiều. Kiểm tra nó trong phiên dịch trực tuyến này .

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.