3x3 Thành phần được kết nối


9

Các thách thức

Hãy xem xét lưới vua 3x3, như được hiển thị trong đồ họa ASCII sau:

A--B--C
|\/|\/|
|/\|/\|
D--E--F
|\/|\/|
|/\|/\|
G--H--I

Bạn được cung cấp dưới dạng đầu vào một danh sách dài 9 số nguyên biểu thị nhãn của các nút. Ví dụ: đầu vào [0,1,1,2,1,0,5,5,1]đại diện cho ghi nhãn sau:

0--1--1
|\/|\/|
|/\|/\|
2--1--0
|\/|\/|
|/\|/\|
5--5--1

Đầu ra của bạn là tập hợp các số nguyên trong đầu vào hình thành các tập hợp các nút được kết nối. Rõ ràng hơn, đầu ra phải chứa một số nguyên ntừ đầu vào khi và chỉ khi tập hợp các nút có nhãn nđược kết nối. Trong ví dụ này, một đầu ra chấp nhận được sẽ là [1,2,5]do hai 0s không được kết nối. Số byte thấp nhất sẽ thắng.

Quy tắc chi tiết

  • Bạn có thể chọn một thứ tự cố định cho các nút trong danh sách đầu vào của bạn và bạn nên nêu điều này trong câu trả lời của mình. Theo thứ tự EFBDHCAGI, việc ghi nhãn ở trên sẽ được đưa ra là [1,0,1,2,5,1,0,5,1].
  • Bạn có thể viết một chương trình đầy đủ hoặc một chức năng. Trong trường hợp sau, đầu ra có thể là một tập hợp các số nguyên nếu ngôn ngữ của bạn hỗ trợ các số nguyên đó.
  • Danh sách đầu ra có thể chứa các bản sao, nhưng độ dài của nó không được vượt quá 9.
  • Sơ hở tiêu chuẩn là không được phép.

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

Chúng có các số có một chữ số được căn chỉnh theo lưới; điều chỉnh chúng theo thứ tự bạn đã chọn

011
210 => 1 2 5
551

010
202 => 0 2
221

110
123 => 0 2 3
221

111
111 => 1
111

111
141 => 1 4
111

Câu trả lời:


4

J, 54 byte

#~3 :'0<*/,+/ .*/^:8~y#|:y#,/,"1/({0&,:)3 3$#:13'"1@e.

Một chức năng lấy một danh sách theo thứ tự ABCDEFGHI.


Với một kề ma trận A của một đồ thị về trật tự n , đồ thị được kết nối khi và chỉ khi tất cả các mục của ( A + Tôi ) n là khác không, nơi tôin × n ma trận sắc.

Chúng tôi bắt đầu với ma trận kề (cộng) cố định (cố định) của lưới vua 3 × 3 (theo thứ tự ABCDEFGHI,) cụ thể là:

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

. Đối với mỗi nhãn l, chúng tôi chọn các hàng và cột tương ứng với các nút của nhãn l. Điều này cung cấp cho chúng ta ma trận kề-cộng-nhận dạng của sơ đồ con của lcác nút được gắn nhãn. Sau đó chúng tôi sử dụng ma trận này để kiểm tra xem sơ đồ con có được kết nối không, như được mô tả ở trên.

Chúng tôi xây dựng ma trận trên bằng cách lưu ý rằng nếu chúng ta để

    0 0 0
Z = 0 0 0
    0 0 0

    1 1 0
O = 1 1 1
    0 1 1

, sau đó ma trận có thể được xem là ma trận khối 3 × 3

O O Z
O O O
Z O O

, có mẫu tương tự như O! Ođược tạo ra bằng cách lặp lại mô hình 1 1 0 1trong khối 3 × 3.


Đây là một giải pháp tuyệt vời! Về nhận thức, ma trận kề có lẽ là cách ngắn nhất để làm điều này, đặc biệt là với một ngôn ngữ như J.
Zgarb

3

CJam, 56 67 byte

q~4/~\@{a1$2<-\(+}%)_)-{_(+{\(a@-\}}A?%+:+[$_(d+1$)c\+@]zLf|2f>:+|`

Đặt hàng : CIGABFHDE.

Ví dụ đầu vào:

[1 1 5 0 1 0 5 2 1]

Đầu ra:

[1 2 5]

Đầu tiên, nó sẽ loại bỏ các số ở các góc giống như các số được kết nối ở hai bên. Sau đó, nó loại bỏ các số ở các mặt giống như các số ở các mặt tiếp theo. Cuối cùng, nó loại bỏ tất cả các số xảy ra hai lần trở lên và thêm số trung tâm.


2

CJam, 90 byte

Điều này dựa trên việc lấp lũ lặp đi lặp lại được giải thích ở đây và có thể được đánh gôn rất nhiều!

q~:Q{:IQ3/S*Sca5*+:T;G,G*{:AT=1$={[WXZ5 4_~_)_)]Af+Tf=AT='#a+&,g{TA'#t:T;}*}*}%;aT\/,3<},p

Yêu cầu đầu vào theo thứ tự ABCDEFGHnhư:

[0 1 1 2 1 0 5 5 1]

và đầu ra là các nút được kết nối:

[1 1 2 1 5 5 1]

Giải thích ngắn gọn

  • Đầu tiên, tôi lặp lại mảng đầu vào cho mỗi nhãn.
  • Trong mỗi lần lặp, tôi thực hiện lệnh lấp lũ để tìm ra các nút bị ngắt kết nối.
  • Nếu số lượng nút bị ngắt kết nối lớn hơn 1, thì nhãn đó sẽ bị ngắt kết nối.
    • 1 vì một nhãn cũng có thể có 1 lần xuất hiện trong mảng đầu vào.
  • Sau đó, tôi chỉ cần lọc ra các nhãn bị ngắt kết nối và in mảng.

Giải thích đầy đủ để làm theo

Dùng thử trực tuyến tại đâ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.