… E o México pagará por isso!

26

Donald Trump está muito impressionado com o trabalho das pessoas neste site. Ele viu o quão incrível você fez em ajudar Ben Carson , e até contratou você para construir seu muro . Ele acha você fantástico. Agora ele precisa da sua ajuda novamente. Enquanto ele construiu seu muro com sucesso, agora ele precisa que o governo mexicano pague por isso. Ele quer cobrar US $ 1 milhão por milha e disse a eles que a fronteira EUA-México tem 1.989 milhas de comprimento . No entanto, eles não têm certeza de que esse número seja preciso, portanto, também gostariam de uma representação visual em escala. É aí que você entra. Você deve pegar este mapa: insira a descrição da imagem aqui

e para cada n (50 <= n <= 500) milhas na borda, desenhe uma linha de 25 pixels de comprimento, perpendicular à inclinação da borda naquele ponto. Usando a escala no lado direito do mapa, determinei que 100 milhas ~ 50 pixels . Eu desenhei uma amostra das 3 primeiras linhas para n = 60, mas estas são apenas aproximadas:

insira a descrição da imagem aqui

Notas:

  • A única entrada é n . A saída deve ser a imagem do mapa, com as linhas adicionadas, desenhadas na tela ou salvas em um arquivo de imagem rasterizada (você pode substituir o arquivo de mapa original).
  • Você pode salvar o arquivo de mapa em branco com o nome que desejar. É um JPEG, mas você pode convertê-lo para outro formato raster comum, se preferir. Além disso, você pode reduzir o tamanho da imagem em até 50%, desde que mantenha as dimensões proporcionais e suas linhas ainda estejam em escala.
  • Cada linha deve ser perpendicular à inclinação da borda nesse ponto. A inclinação deve ser calculada começando 50 milhas antes do ponto e terminando 50 milhas após o ponto.

Precisão:

  • A inclinação de cada linha pode ter uma margem de erro de ± 5 °
  • O espaçamento entre cada linha pode ter uma margem de erro de ± 20 milhas (10 pixels no mapa regular).
geokavel
fonte
3
O preço de US $ 10000 / milha provavelmente está fora de um fator de 100, a menos que por "muro" você queira dizer 3 fios de arame farpado instalados por trabalhadores que ganham US $ 2,50 / hora.
Glenn Randers-Pehrson
1
Além disso, Mma afirma que a fronteira EUA-México tem cerca de 1952 milhas de comprimento.
usar o seguinte
18
É bom saber, mas o importante é que nenhum desses números significa algo para esse desafio.
geokavel
@geokavel Vá em frente e responda.
programmer5000
1
Além disso, é a intenção desse desafio ser capaz de processar a imagem e identificar a borda antes de desenhar as linhas, ou é aceitável apenas desenhar as linhas sem realmente processar a imagem (assumindo essencialmente como será a imagem )?
notjagan

Respostas:

7

Python 2 + numpy + OpenCV , 576 bytes

GIF de demonstração

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)

Este programa é quase totalmente destruído, e há aspectos que são um tanto imprecisos no momento, mas pelo menos ele funciona na maior parte do tempo. Além disso, há um pouco de codificação, mas é apenas para uma janela aproximada que delimita a borda e a coordenada do primeiro pixel na borda (a última das quais eu provavelmente removerei mais tarde).

A imagem usada pelo programa tem metade da área (1120 x 865) e, portanto, o comprimento das linhas desenhadas e a distância entre as linhas são menores.

notjagan
fonte
2
legal!! ótimo ver uma resposta!
geokavel
sugiro excluir o link tio não útil
Евгений Новиков
1
gif demo i.stack.imgur.com/RWQu4.gif . Aplicar minha edição
Евгений Новиков
@ ЕвгенийНовиков Obrigado pelo gif! É muito mais ilustrativo (e sucinto) do que as fotos que eu tinha antes.
notjagan