Tôi đã loay hoay với các mạng điện trở vô hạn (câu chuyện dài) khi tôi bắt gặp mô hình đệ quy thú vị sau:
|-||
|---
Mỗi trường hợp của mẫu này rộng gấp đôi chiều cao của nó. Để đi từ một cấp của mẫu sang cấp tiếp theo, bạn chia hình chữ nhật này thành hai khối phụ (mỗi khối là một hình vuông NxN):
AB =
|-||
|---
so A =
|-
|-
and B =
||
--
Các nửa này sau đó được nhân đôi và sắp xếp lại theo mẫu sau:
ABAA
ABBB
giving
|-|||-|-
|---|-|-
|-||||||
|-------
Thử thách
Viết chương trình / hàm, cho một số N
, đưa ra N
lần lặp thứ của thiết kế đệ quy này. Đây là golf.
Định dạng I / O tương đối nhẹ nhàng: bạn có thể trả về một chuỗi đơn, danh sách các chuỗi, một mảng ký tự 2D, v.v ... khoảng trắng theo dõi tùy ý được cho phép. Bạn cũng có thể sử dụng lập chỉ mục 0 hoặc 1.
Ví dụ
Một số lần lặp đầu tiên của mẫu như sau:
N = 0
|-
N = 1
|-||
|---
N = 2
|-|||-|-
|---|-|-
|-||||||
|-------
N = 3
|-|||-|-|-|||-||
|---|-|-|---|---
|-|||||||-|||-||
|-------|---|---
|-|||-|-|-|-|-|-
|---|-|-|-|-|-|-
|-||||||||||||||
|---------------
N = 4
|-|||-|-|-|||-|||-|||-|-|-|||-|-
|---|-|-|---|---|---|-|-|---|-|-
|-|||||||-|||-|||-|||||||-||||||
|-------|---|---|-------|-------
|-|||-|-|-|-|-|-|-|||-|-|-|||-|-
|---|-|-|-|-|-|-|---|-|-|---|-|-
|-|||||||||||||||-|||||||-||||||
|---------------|-------|-------
|-|||-|-|-|||-|||-|||-|||-|||-||
|---|-|-|---|---|---|---|---|---
|-|||||||-|||-|||-|||-|||-|||-||
|-------|---|---|---|---|---|---
|-|||-|-|-|-|-|-|-|-|-|-|-|-|-|-
|---|-|-|-|-|-|-|-|-|-|-|-|-|-|-
|-||||||||||||||||||||||||||||||
|-------------------------------
Tôi tự hỏi nếu có một số cách đại số ngắn để tính toán cấu trúc này.
f(n,x,y)
có thể tính toán trực tiếp xem một tọa độ đã cho có nên chứa -
hay không |
. Nó có thể liên quan đến các hoạt động modulo hoặc hoạt động bitwise. Các kỹ thuật tôi đã thấy cho đến nay đều liên quan đến việc cắt / nối các mảng như thể hiện trong thông số kỹ thuật.
f(x,y)
cũng hoạt động, vì nếu x,y
hợp lệ thì kết quả không phụ thuộc vàon
|-
không?