Càng và Mexico sẽ trả tiền cho nó!


26

Donald Trump rất ấn tượng với công việc của người dân trên trang web này. Anh ấy đã thấy công việc tuyệt vời mà bạn đã làm khi giúp Ben Carson , vì vậy anh ấy thậm chí còn thuê bạn xây tường . Anh ấy nghĩ bạn thật tuyệt vời. Bây giờ anh ấy cần sự giúp đỡ của bạn một lần nữa. Trong khi anh ta đã xây dựng thành công bức tường của mình, bây giờ anh ta cần chính phủ Mexico trả tiền cho nó. Ngài muốn sạc 1 $ triệu một dặm, và ông đã nói với họ rằng biên giới Mỹ-Mexico là dài 1.989 dặm . Tuy nhiên, họ không chắc chắn con số này là chính xác, vì vậy họ cũng muốn một đại diện trực quan quy mô. Đó là nơi bạn đến. Bạn sẽ lấy bản đồ này: nhập mô tả hình ảnh ở đây

và cho mọi n (50 <= n <= 500) dặm trên biên giới vẽ một đường 25 pixel chiều dài, vuông góc với độ dốc của đường biên giới tại thời điểm đó. Sử dụng thang ở phía bên phải của bản đồ, tôi đã xác định rằng 100 dặm ~ 50 pixel . Tôi đã vẽ một mẫu của 3 dòng đầu tiên cho n = 60, nhưng đây chỉ là gần đúng:

nhập mô tả hình ảnh ở đây

Ghi chú:

  • Đầu vào duy nhất là n . Đầu ra phải là hình ảnh bản đồ, với các dòng được thêm vào, được vẽ vào màn hình hoặc được lưu trong tệp hình ảnh raster (bạn có thể ghi đè lên tệp bản đồ gốc).
  • Bạn có thể lưu tệp bản đồ trống với bất kỳ tên tệp nào bạn muốn. Nó là một JPEG, nhưng bạn có thể chuyển đổi nó sang định dạng raster phổ biến khác nếu bạn thích. Ngoài ra, bạn có thể giảm kích thước của hình ảnh tới 50%, miễn là bạn giữ kích thước theo tỷ lệ và các dòng của bạn vẫn được chia tỷ lệ.
  • Mỗi đường thẳng phải vuông góc với độ dốc của đường viền tại điểm đó. Độ dốc nên được tính bắt đầu từ 50 dặm trước khi các điểm và kết thúc 50 dặm sau dấu.

Độ chính xác:

  • Độ dốc của mỗi đường có thể có biên sai số là ± 5 °
  • Khoảng cách giữa mỗi dòng có thể có một sai số ± 20 dặm (10 điểm ảnh trên bản đồ thông thường).

3
Giá 10000 đô la / dặm có thể giảm đi bởi hệ số 100, trừ khi bằng "tường", bạn có nghĩa là 3 sợi dây thép gai được lắp đặt bởi những người lao động kiếm được 2,50 đô la / giờ.
Glenn Randers-Pehrson

1
Ngoài ra, Mma khẳng định rằng biên giới Mỹ-Mexico là về dài 1952 dặm.
LegionMammal978

18
Điều tốt để biết, nhưng điều quan trọng là cả hai con số đó không có ý nghĩa gì đối với thử thách này.
geokavel

@geokavel Đi trước và trả lời nó.
lập trình

1
Ngoài ra, mục đích của thử thách này là có thể xử lý hình ảnh và xác định đường viền trước khi vẽ các đường hoặc có thể chấp nhận để chỉ có thể vẽ các đường mà không thực sự xử lý hình ảnh (về cơ bản giả định hình ảnh sẽ như thế nào )?
notjagan

Câu trả lời:


7

Python 2 + numpy + OpenCV , 576 byte

Bản thử nghiệm GIF

from cv2 import*
from numpy import*
n=input()/4
f="m.png"
i=imread(f)
b=array([0]*3)
y=array([165,195,225])
j=inRange(i,b,b+120)
k=inRange(i,y,y+25)
for x,y in zip(*where(j)):j[x,y]=k[x+3,y]-j[x+1,y]>1
j=j[506:732,152:557]
p=[array([11,9])]
for c in sorted(zip(*where(j)),key=lambda c:c[1]):r=range(p[-1][1]+1,c[1]+1);p+=map(array,zip(map(int,interp(r,*zip(p[-1],c)[::-1])),r))
for x,c in enumerate(p[25:-25:n]):s=-1/true_divide(*p[x*n+50]-p[x*n+25]);k=6/(1+s**2)**.5;line(i,*map(tuple,[(c+[int(k*s)+506,int(k)+152])[::-1],(c-[int(k*s)-506,int(k)-152])[::-1],b]))
imwrite(f,i)

Chương trình này gần như hoàn toàn không được cung cấp, và có những khía cạnh của nó có phần không chính xác tại thời điểm này, nhưng ít nhất nó hoạt động với hầu hết các phần. Bên cạnh đó, có một chút chút hardcoding, nhưng nó chỉ dành cho một cửa sổ gần đúng kèm theo biên giới và phối hợp của các điểm ảnh đầu tiên trên biên giới (sau này trong đó tôi sẽ thực sự rất có thể loại bỏ sau).

Hình ảnh được sử dụng bởi chương trình được giảm một nửa diện tích (tức là 1120 x 865), và do đó, độ dài của các đường được vẽ và khoảng cách giữa các dòng nhỏ hơn.


2
mát mẻ!! thật tuyệt khi thấy một câu trả lời!
geokavel

đề nghị xóa không hoạt tio liên kết
Евгений Новиков

1
bản giới thiệu gif i.stack.imgur.com/RWQu4.gif . Áp dụng chỉnh sửa của tôi
Евгений Новиков

@ ВгенийiTовиков Cảm ơn các gif! Nó minh họa hơn nhiều (và succint) so với những hình ảnh tôi có trước đây.
notjagan
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.