Có bao nhiêu hình vuông ở đó?


12

Thử thách này được lấy cảm hứng từ một bức ảnh thường xuyên lang thang trên Facebook trông như thế này . Ngoại trừ hình vuông cơ sở của chúng tôi sẽ trông giống như thế này:

┌─┬───┬─┐
├─┼─┬─┼─┤
├─┼─┴─┼─┤
├─┼─┬─┼─┤
└─┴─┴─┴─┘

Hình vuông được tạo từ n x mhình vuông 1x1, bạn phải đếm xem có bao nhiêu hình vuông phụ (1x1, 2x2, 3x3, 4x4, 5x5, v.v.) có thể vừa trong hình vuông đó. Hình vuông có thể thiếu một số đường lưới (như trong ví dụ trên) hoặc hoàn thành như trong ví dụ dưới đây. Điều đó có nghĩa là một sự cố toán học là không thể (theo như tôi biết).

Đầu vào:

  • Số lượng dòng ( n) của đầu vào để xây dựng hình vuông;
  • Một hình vuông được làm từ các ký tự sau: |trên ncác dòng đầu vào.

Đầu ra:

  • Số lượng hình vuông có kích thước bất kỳ có thể vừa trong hình vuông đầu vào (chúng tôi chỉ muốn một số duy nhất ở đây, không phải là số cho mỗi kích thước).

Tiêu chí chiến thắng:

Câu trả lời nhỏ nhất (số byte) thắng.

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

Trong:

5
┌─┬─┬─┬─┐
├─┼─┼─┼─┤
├─┼─┼─┼─┤
├─┼─┼─┼─┤
└─┴─┴─┴─┘

Hết: 30


Trong:

3
┌─┬─┐
├─┼─┤
└─┴─┘

Hết: 5


Trong:

5
┌─┬─┐
├─┴─┤
├───┤
├─┬─┤
└─┴─┘

Hết: 7


Trong:

4
┌─┬─┬─┬─┬─┬─┐
├─┼─┼─┼─┼─┼─┤
├─┼─┼─┼─┼─┼─┤
└─┴─┴─┴─┴─┴─┘

Hết: 32


Trong:

2
┌─┐
└─┘

Hết: 1


Trong:

4
┌─┬─┬─┬─┬─┬─┐
├─┴─┼─┼─┼─┴─┤
├─┬─┼─┼─┼─┬─┤
└─┴─┴─┴─┴─┴─┘

Hết: 22


3
Tôi đã không đếm những cái lớn hơn, nhưng không phải cái thứ ba có 11 ô vuông trong đó?
Mực giá trị

@ KevinLau-notKenny Bạn nói đúng, tôi đã phạm sai lầm.
Simon Landry

Tôi nghĩ là quá đơn giản, nó được tính thông qua một hình thức kết hợp, bạn có muốn xem xét định dạng hình ảnh của facebook không?
Abr001am

1
Để tham khảo, các trường hợp hình chữ nhật là A271916 , mang đến cho m*(m+1)*(3*n-m+1)/6cho một mbằng nhình chữ nhật với n >= m(kích thước bù đắp bởi một từ mục nói về điểm chứ không phải là hình vuông bản thân)
Sp3000

1
@SimonLandry tôi không có nghĩa là tổ hợp theo nghĩa thuần túy, tôi nghĩ sp3000 đã chỉ ra rằng, phiên bản đầu tiên của câu đố của bạn (trước khi chỉnh sửa) đã mở cho một bước đột phá toán học đơn giản
Abr001am

Câu trả lời:


2

JavaScript (ES6), 292 byte 306 325

Chỉnh sửa Tôi đã làm sai số byte hoàn toàn, sửa ngay bây giờ thx http://bytesizematters.com/ sửa lần cuối cùng Tôi hy vọng thx Cᴏɴᴏʀ O'Bʀɪᴇɴ xem https://goo.gl/LSHC1U (và giảm 1 byte bằng cách sử dụng một chữ bản tin mới của '\ n')

(h,z)=>(o=>{r=p=>" ),┌(─┐┬'└│├┘┴┤┼".search(z[p]);for(q=s=0;++s<o/2&s<h;)for(y=0;y<(h-s)*o;y+=o)for(x=0;x<o-s*2;q+=!n,x+=2)for(n=i=0,t=x,u=y;i<=s;t+=2,u+=o,i++)n|=i<s&(!(r(t+y)&r(t+y+s*o)&1)|!(r(x+u)&r(x+u+s*2)&2))|i>0&(!(r(t+y)&r(t+y+s*o)&4)|!(r(x+u)&r(x+u+s*2)&8))})(-~z.search`
`)|q

Dài hơn tôi mong đợi (có thể mất một vài byte nữa)

Tất cả các hình vuông có thể được kiểm tra và tính.

Các rchức năng bản đồ mỗi nhân vật một bitmap có

  • 1: tâm đường ngang bên phải
  • 2: tâm đường thẳng đứng xuống dưới
  • 4: tâm đường ngang sang trái
  • 8: tâm đường thẳng đứng lên trên

Một hình vuông có kích thước bất kỳ phải có

  • 4 trong tất cả các ô trừ hàng đầu tiên ở hàng trên cùng và dưới cùng
  • 1 trong tất cả các ô trừ hàng cuối cùng ở hàng trên cùng và dưới cùng
  • 8 trong tất cả các ô trừ cột đầu tiên ở cột ngoài cùng bên phải và ngoài cùng
  • 2 trong tất cả các ô trừ cột cuối cùng ở cột ngoài cùng bên phải và ngoài cùng

Kiểm tra

f=(h,z)=>(o=>{r=p=>" ),┌(─┐┬'└│├┘┴┤┼".search(z[p]);k=(p,d,m)=>r(p)&r(p+s*d)&m;for(q=s=0;++s<o/2&s<h;)for(y=0;y<(h-s)*o;y+=o)for(x=0;x<o-s*2;q+=!n,x+=2)for(n=i=0,t=x,u=y;i<=s;t+=2,u+=o,i++)n=n|i<s&(!k(t+y,o,1)|!k(x+u,2,2))|i>0&(!k(t+y,o,4)|!k(x+u,2,8));})(-~z.search`
`)|q

console.log=(...x)=>O.textContent+=x+'\n'

// Less golfed

Uf=(h,z)=>{
  o=-~z.search`\n`;
  w=o/2;
  r=p=>" ),┌(─┐┬'└│├┘┴┤┼".search(z[p]);
  k=(p,d,m)=>r(p)&r(p+s*d)&m;
  for(q=s=0;++s<w&s<h;)
    for(y=0;y<(h-s)*o;y+=o)
      for(x=0;x<(w-s)*2;q+=!n,x+=2)
        for(n=i=0,t=x,u=y;i<=s;t+=2,u+=o,i++)
          n|=i<s&(!k(t+y,o,1)|!k(x+u,2,2))
          |i>0&(!k(t+y,o,4)|!k(x+u,2,8));
  return q
}

;[[5,`┌─┬───┬─┐
├─┼─┬─┼─┤
├─┼─┴─┼─┤
├─┼─┬─┼─┤
└─┴─┴─┴─┘`,20]
,[5,`┌─┬─┬─┬─┐
├─┼─┼─┼─┤
├─┼─┼─┼─┤
├─┼─┼─┼─┤
└─┴─┴─┴─┘`,30]
,[3,`┌─┬─┐
├─┼─┤
└─┴─┘`,5]
,[5,`┌─┬─┐
├─┴─┤
├───┤
├─┬─┤
└─┴─┘`,7]
,[4,`┌─┬─┬─┬─┬─┬─┐
├─┼─┼─┼─┼─┼─┤
├─┼─┼─┼─┼─┼─┤
└─┴─┴─┴─┴─┴─┘`,32]
,[2,`┌─┐
└─┘`,1]
,[4,`┌─┬─┬─┬─┬─┬─┐
├─┴─┼─┼─┼─┴─┤
├─┬─┼─┼─┼─┬─┤
└─┴─┴─┴─┴─┴─┘`,22],
,[6,`┌─┬─────┐
├─┼─┬─┐ 
 ├─┼─┼─┤
 └─┼─┼─┤
   └─┼─┤
└─────┴─┘`,12],  
,[6,`┌─┬─┬─┬─┐
├─┴─┼─┼─┤
   └─┼─┤
├─┬─┬─┼─┤
├─┼─┼─┼─┤
└─┴─┴─┴─┘`,23]]  
.forEach(t=>{
  var r=t[0],a=t[1],k=t[2],x=f(r,a)
  console.log(x==k?'OK '+x:'KO '+x+' Expected '+k,'\n'+a)
})
<pre id=O></pre>


Tôi đếm 307 byte .
Conor O'Brien

@Conor Ok cảm ơn vì liên kết
edc65
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.