Tìm hàm con với giá trị trung bình nhỏ nhất, 2.0


15

Bạn được cung cấp một ma trận n-by-m các số nguyên, trong đó n, m> 3 . Nhiệm vụ của bạn là tìm ma trận con 3 nhân 3 có giá trị trung bình thấp nhất và xuất giá trị này.

Các quy tắc và làm rõ:

  • Các số nguyên sẽ không âm
  • Tùy chọn định dạng đầu vào và đầu ra
  • Đầu ra phải chính xác tối đa 2 poins thập phân (nếu không phải là số nguyên)
  • Các mô hình con có thể được tạo thành từ các cột và hàng tùy ý

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

1   0   4   0   1   0
1   0   4   0   1   0
4   3   4   3   4   3
1   0   4   0   1   0

Minimum mean: 0   (We have chosen columns 2,4,6 and rows 1,2,4 (1-indexed)
-----------------------------
4    8    9    7
5   10    1    5
8    5    2    4
8    3    5   10
6    6    3    4

Minimum mean: 4.2222
-----------------------------
1   0   0   0   0
0   2   0   0   0
0   0   3   0   0
0   0   0   4   0
0   0   0   0   5

Minimum mean: 0.11111
-----------------------------
371   565   361   625   879   504   113   104
943   544   157   799   726   832   228   405
743   114   171   506   943   181   823   454
503   410   333   735   554   227   423   662
629   439   191   707    52   751   506   924

Minimum mean: 309.56

Điều gì làm cho điều này khác với phiên bản đầu tiên của thử thách này?
Kritixi Lithos

2
@KritixiLithos Nó sử dụng định nghĩa chung hơn về "hàm con" trong đó một hàm con là bất kỳ ma trận nào bạn có thể thu được từ việc xóa bất kỳ số lượng hàng và cột nào khỏi bản gốc (vì vậy các hàng / cột còn lại không phải liền kề).
Martin Ender

Câu trả lời:


9

Toán học, 77 50 byte

±x_:=x~Subsets~{3}
Min[Mean/@Mean/@±#&/@±#]&

là toán tử chuyển vị của Mathicala (và được hiển thị dưới dạng siêu ký tự T trong Mathicala).

Câu trả lời này trước tiên xác định toán tử trợ giúp ±trả về tất cả các tập hợp con 3 phần tử của danh sách, sau đó đánh giá một hàm không tên sử dụng toán tử này để giải quyết vấn đề.

Điều này được thực hiện bằng cách tính toán đầu tiên tất cả các tập hợp con 3 phần tử của các hàng của ma trận. Sau đó, đối với mỗi tập con như vậy, chúng tôi transpose nó và tính toán của nó tập con 3 phần tử của hàng. Điều này cung cấp cho chúng ta tất cả các mô hình con 3x3 có thể (mặc dù chúng được hoán vị). Sau đó, chúng tôi tính toán trung bình trên tất cả chúng và tìm mức tối thiểu chung.


7

Thạch , 15 12 byte

œc3S€Zµ⁺FṂ÷9

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

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

œc3S€Zµ⁺FṂ÷9  Main link. Argument: M (matrix)

œc3           Yield all combinations of 3 rows.
   S€         Map column-wise sum over the combinations.
     Z        Zip, transposing rows and columns.
      µ       Combine all links to the left into a chain.
       ⁺      Duplicate the chain, executing it twice.
        F     Flatten.
         Ṃ    Take the minimum.
          ÷9  Divide it by 9.

œc3S€µ⁺€FṂ÷9là những gì tôi đã nhận được ... EDIT - hah và cứ như thế bạn làm như vậy: D
Jonathan Allan

Ninja'd 17 giây. : P Dù sao cũng cảm ơn. :)
Dennis

Tôi không thể không nghĩ rằng có một cách để loại bỏ 9bằng cách chia cho 3bên trong chuỗi lặp đi lặp lại, nhưng liệu có thể có được 3lý lẽ đúng như vậy trong 11 không?
Jonathan Allan

Không phải trong một byte, và đó là những gì nó cần để lưu một byte. Bạn không thể đặt 3 bên ngoài chuỗi (cả hai vì nó đơn điệu và bạn phải nhóm nó để sử dụng ) và bên trong chuỗi bạn phải xác định 3rõ ràng hoặc nhóm nó với ÷.
Dennis

4

05AB1E , 21 16 byte

2Fvyæ3ùO})ø}˜9/W

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

Giải trình

  • Đối với mỗi hàng, hãy lấy tổng của từng tập hợp con có thứ tự kích thước 3
  • Chuyển đổi ma trận kết quả
  • Đối với mỗi hàng, hãy lấy tổng của từng tập hợp con có thứ tự kích thước 3
  • Làm phẳng ma trận kết quả
  • Chia cho 9
  • Lấy tối thiểu


0

Bean , 198 byte

Hexdump:

00000000 bc 81 bd a0 65 40 a0 5d dd a0 68 50 80 a0 77 20  ¼.½ e@ ]Ý hP. w 
00000010 80 01 dd a0 66 25 3b 52 cc cb c0 50 84 a0 5d 20  ..Ý f%;RÌËÀP. ] 
00000020 66 87 4c cc a0 68 8b 20 66 8c 25 3b cd d0 84 a0  f.LÌ h. f.%;ÍÐ. 
00000030 5d 20 66 80 4e a0 66 81 4c d3 a0 65 a0 5d a0 68  ] f.N f.LÓ e ] h
00000040 4c a0 66 8c 25 3a 8b 25 3a 50 84 a0 5d 20 66 bd  L f.%:.%:P. ] f½
00000050 a0 6e 43 a5 39 a5 3a a5 3b 00 bd a0 5f 43 cf 20   nC¥9¥:¥;.½ _CÏ 
00000060 6e 00 3d a0 69 20 12 b6 a7 36 a7 26 4d a0 69 80  n.= i .¶§6§&M i.
00000070 53 d0 80 a0 1f 20 80 45 a0 69 53 d0 80 a0 6e 20  SÐ. . .E iSÐ. n 
00000080 80 8b 40 a0 6f a0 75 4c a0 6f 8b 53 d0 80 a0 5f  ..@ o uL o.SÐ. _
00000090 20 80 8b 40 a0 6f a0 74 4c a0 6f 8b 50 84 d0 84   ..@ o tL o.P.Ð.
000000a0 a0 77 20 75 20 74 4c d3 a0 65 a0 5f 50 80 a0 43   w u tLÓ e _P. C
000000b0 20 80 01 81 25 3b 4c d3 a0 65 20 6e 81 25 3b 26   ...%;LÓ e n.%;&
000000c0 4c a0 69 8e 25 42                                L i.%B
000000c6

JavaScript tương đương:

// indices array increment function
var i=(a,l=$.length,j=2)=>++a[j]>=l+j-2?a[j]=j&&i(a,l,j-1)+1:a[j],
// row indices
    r=[0,1,2],
// column indices
    c=[...r],
// minimum sum
    m=Infinity;
do{
  do{
// calculate sum of current row/column indices and keep minimum
    m=Math.min(m,
      (r.reduce((s,y)=>s+c.reduce((s,x)=>s+$[y][x])))
    )
// until column indices loop
  }while(i(c,A.length)!=2)
// until row indices loop
}while(i(r)!=2)
// output mean
m/9

Hãy thử bản demo 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.