Cầu thang chữ số xếp chồng


17

Cho các số nguyên dương và đầu ra cột và hàng văn bản như được mô tả dưới đây.h w hwhwh

Hàng đầu tiên bắt đầu với 11 0s, hàng thứ hai với 10 1s, thứ ba với chín 2s và cứ thế xuống hàng thứ mười với hai 9s. Trên mỗi mười hàng đầu tiên này, sau lần chạy đầu tiên của các chữ số liên tiếp, chữ số thấp nhất tiếp theo xuất hiện hai lần trước khi chữ số thấp thứ hai tiếp theo xuất hiện hai lần, với mẫu này lặp lại mãi mãi. Nếu một lần chạy 0s xảy ra, các chữ số sau nó luôn luôn 9là s.

Các hàng bên dưới hàng thứ mười giống như hàng ngay phía trên nó nhưng được dịch sang phải một. Chữ số mới xuất hiện giống như chữ số ngoài cùng bên trái trước đó nếu nó không nằm cạnh một thể hiện khác của chính nó. Nếu không, nó là chữ số cao nhất tiếp theo (đạp xe từ 9 trở về 0).

phần tử lần đầu tiên như sau:11×10

00000000000
11111111110
22222222211
33333333221
44444443322
55555544332
66666554433
77776655443
88877665544
99887766554

Dưới đây là một hình ảnh với văn bản màu để làm cho mô hình rõ ràng hơn.

văn bản cố định

Nếu bạn cần tạo ra ít cột / hàng hơn thì bạn chỉ cần cắt văn bản trên.

Nếu bạn cần sản xuất nhiều cột / hàng hơn thế này, cầu thang hiện tại nên được mở rộng. Nếu nhiều cột / hàng thêm các bậc thang mới của các chữ số liên tiếp, các chữ số sẽ được chọn theo chu kỳ từ các số nguyên. Do đó, đối với đầu vào , đầu ra phải là(15,13)

000000000009988
111111111100998
222222222110099
333333332211009
444444433221100
555555443322110
666665544332211
777766554433221
888776655443322
998877665544332
099887766554433
009988776655443
100998877665544

Dưới đây là hình ảnh của văn bản này với màu sắc:

văn bản mở rộng

Quy tắc

  • Đầu ra có thể được đưa ra bởi bất kỳ phương pháp thuận tiện .
  • Một chương trình đầy đủ hoặc một chức năng được chấp nhận. Nếu một chức năng, bạn có thể trả lại đầu ra thay vì in nó.
  • Bạn có thể trả về một danh sách các dòng nếu bạn thích.
  • Bạn có thể trả về một mảng 2D các chữ số hoặc danh sách các danh sách các chữ số nếu bạn thích.
  • Sơ hở tiêu chuẩn không được phép.

Mã ngắn nhất sẽ thắng.

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

Đầu vào được lấy là cho các trường hợp thử nghiệm.(w,h)

1,1
0

3,2 000 111

20,1 00000000000998877665

11,10 00000000000 11111111110 22222222211 33333333221 44444443322 55555544332 66666554433 77776655443 88877665544 99887766554

15,13 000000000009988 111111111100998 222222222110099 333333332211009 444444433221100 555555443322110 666665544332211 777766554433221 888776655443322 998877665544332 099887766554433 009988776655443 100998877665544


8
Tôi không thực sự hiểu mô hình. Bạn có thể giải thích cụ thể mô hình hơn là mong đợi nó được ngoại suy từ các ví dụ. Một số người tìm thấy các ví dụ hữu ích nhưng tôi thực sự không thấy chính xác mô hình theo sau các ví dụ như thế nào.
Phù thủy lúa mì

@WW Cảm ơn, tôi đã thêm một chút giải thích kỹ lưỡng hơn ở đầu trang
dylnan

1
Thật thú vị khi chúng ta có TeX, bạn thực sự có thể tạo lưới màu trong văn bản. Kiểm tra:1234
qwr

@qwr ồ, không biết chúng tôi có thể làm điều đó. Lệnh nào bạn đã làm với?
dylnan

\ color {red} {text} Tôi tin rằng
qwr

Câu trả lời:


7

Python 3, 94 93 78 77 74 byte

lambda x,y:[[[(j-i+10)//2%10,j][j+i<9]for i in range(x)]for j in range(y)]

-1 byte từ dylnan

-15 byte bằng cách trả về danh sách danh sách thay vì in từ xnor

-1 byte bằng cách chuyển đổi thứ tự (j-i+10)//2%10jcác phần của if-else

-3 byte từ Jo King bằng cách thay đổi if- elsethành một danh sách.

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


Sử dụng hàm lambda sẽ tiết kiệm một byte: TIO
dylnan

@dyl Nam Cảm ơn!
pizzapants184

1
Thử thách cho phép xuất ra danh sách các danh sách các chữ số, vì vậy có vẻ như bạn không cần phải thực hiện bất kỳ việc in hoặc tham gia nào.
xnor


2

Canvas, 14 byte

[⁷{¹∔⁶+»¹m◂@]]

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

Trong khi thực hiện điều này, tôi nhận thấy ở một số nơi tôi có modul âm trong Canvas (ở đây, điều đó có nghĩa là »- tầng div 2 - làm tròn về 0). Câu trả lời 18 byte trước đó hoạt động mà không sửa, không hoạt động nữa (vì tôi chỉ lưu main.jsgiữa các phiên bản) nhưng TIO vẫn có phiên bản cũ

Giải trình:

[            ]  for 1..input
 ⁷{         ]     for 1..2nd input
   ¹∔               subtract from this loop counter the outer loops one
     ⁶+             add 12
       »            divide by 2, rounded to -∞
        ¹m          minimum of that & the outer loops counter
          ◂@        in the string "0123456789", get the xth char, 1-indexed

2

Than , 20 17 byte

Eη⭆θ﹪⌊⟦ι÷⁺⁻ιλχ²⟧χ

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 trình:

 η                  Height
E                   Map over implicit range
   θ                Width
  ⭆                 Map over implicit range and join
          ⁻ιλ       Subtract column from row
         ⁺   χ      Add 10
        ÷     ²     Integer divide by 2
       ι            Current row
     ⌊⟦        ⟧    Take the minimum
    ﹪           χ   Modulo by 10
                    Implicitly print each row on its own line

Chỉnh sửa: Đã lưu 3 byte bằng cách chuyển sang thuật toán của @ dzaima.


2

Thạch , 14 byte

_@þ:2+6«"J$’%⁵

wh

Hãy thử trực tuyến! Hoặc xem một bộ thử nghiệm (định dạng sau).

Làm sao?

_@þ:2+6«"J$’%⁵ - Link: integer w, integer h
  þ            - outer product using (i.e. [[f(i,j) for i in 1..w] for j in 1..h]):
_@             -   subtraction with swapped arguments (i.e. f(i,j): j-i)
               -   e.g. the 4th row is [3, 2, 1, 0,-1,-2,-3,-4,-5,-6,-7,-8,-9,-10,-11,...]
   :2          - integer divide by two (vectorises)
               -                       [1, 1, 0, 0,-1,-1,-2,-2,-3,-3,-4,-4,-5,-5,-6,...]
     +6        - add six (vectorises)
               -                       [7, 7, 6, 6, 5, 5, 4, 4, 3, 3, 2, 2, 1, 1, 0,...]
          $    - last two links as a monad:
         J     -   range of length -> [1,2,3,...,h]
        "      -   zip with:
       «       -     minimum (vectorises)
               -                       [4, 4, 4, 4, 4, 4, 4, 4, 3, 3, 2, 2, 1, 1, 0,...]
           ’   - decrement (vectorises)
               -                       [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0,-1,...]
             ⁵ - literal ten
            %  - modulo (vectorises)
               -                       [3, 3, 3, 3, 3, 3, 3, 3, 2, 2, 1, 1, 0, 0, 9,...]


2

Thạch , 19 byte

Sử dụng một cách tiếp cận rất giống với pizzapants 'Neil's . Lưu được 1 byte nhờ Jonathan Allan .

p’Ḣ_/HḞ+ʋS<9Ɗ?€5s%⁵

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


Liên kết người trợ giúp

_/HḞ+5

Đây là một liên kết đơn (tương đương Jelly của một hàm đối số), có thể được gọi từ liên kết tiếp theo bằng cách sử dụng nhanh Ç. Nó nhận một danh sách hai số nguyên và thực hiện như sau:

_/

Giảm bằng phép trừ.

HḞ+5%⁵

Đặt một nửa của nó thành một số nguyên và thêm 5, sau đó lấy modulo 10.

Liên kết chính

p’ḢÇS<9Ɗ?€s

çxy

p’

1([0,x)Z)×([0,y)Z)

S<9Ɗ?€

Và đối với mỗi cặp trong sản phẩm của Cartesian, nếu tổng của chúng nhỏ hơn 9, thì:

Lấy đầu của cặp (yếu tố đầu tiên). Nếu không thì,

Ç

Gọi liên kết người trợ giúp (giải thích ở trên) trên cặp.

s%⁵

y


Bạn có thể di chuyển mod 10 đến cuối và sau đó nối tiếp trình trợ giúp để lưu một byte - có thể là một dyad với p’Ḣ_/HḞ+ʋS<9Ɗ?€5s%⁵hoặc p’Ḣ_/:2+ʋS<9Ɗ?€5s%⁵, hoặc là một đơn nguyên vớip’Ḣ_/:2+5ƲS<9Ɗ?€s%⁵
Jonathan Allan
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.