... Dan Meksiko akan Membayar untuk Itu!

26

Donald Trump sangat terkesan dengan karya orang-orang di situs ini. Dia melihat betapa menakjubkannya pekerjaan yang Anda lakukan membantu Ben Carson , jadi dia bahkan mempekerjakan Anda untuk membangun temboknya . Dia pikir kamu hebat. Sekarang dia membutuhkan bantuanmu lagi. Walaupun ia telah berhasil membangun temboknya, sekarang ia membutuhkan pemerintah Meksiko untuk membayarnya. Dia ingin menagih $ 1 juta per mil, dan dia mengatakan kepada mereka bahwa perbatasan AS-Meksiko adalah 1.989 mil . Namun mereka tidak yakin angka ini akurat, sehingga mereka ingin representasi visual skala juga. Di situlah Anda masuk. Anda harus mengambil peta ini: masukkan deskripsi gambar di sini

dan untuk setiap n (50 <= n <= 500) mil di perbatasan menggambar garis panjang 25 piksel, tegak lurus dengan kemiringan perbatasan pada titik itu. Menggunakan skala di sisi kanan peta, saya telah menentukan bahwa 100 mil ~ 50 piksel . Saya telah mengambil sampel dari 3 baris pertama untuk n = 60, tetapi ini hanya perkiraan:

masukkan deskripsi gambar di sini

Catatan:

  • Satu-satunya input adalah n . Keluaran harus berupa gambar peta, dengan garis-garis ditambahkan, ditarik ke layar atau disimpan dalam file gambar raster (Anda dapat menimpa file peta asli).
  • Anda dapat menyimpan file peta kosong dengan nama file apa pun yang Anda inginkan. Ini adalah JPEG, tetapi Anda dapat mengonversinya ke format raster umum lainnya jika diinginkan. Selain itu, Anda dapat mengurangi ukuran gambar hingga 50%, selama Anda menjaga dimensi tetap proporsional, dan garis Anda masih berskala.
  • Setiap garis harus tegak lurus terhadap kemiringan perbatasan pada titik itu. Kemiringan harus dihitung mulai 50 mil sebelum titik dan berakhir 50 mil setelah titik.

Ketepatan:

  • Kemiringan setiap garis dapat memiliki margin kesalahan ± 5 °
  • Jarak antara setiap baris dapat memiliki margin kesalahan ± 20 mil (10 piksel pada peta biasa).
geokavel
sumber
3
Harga $ 10.000 / mil mungkin dimatikan dengan faktor 100, kecuali dengan "dinding" yang Anda maksudkan adalah 3 helai kawat berduri yang dipasang oleh pekerja menghasilkan $ 2,50 / jam.
Glenn Randers-Pehrson
1
Juga, Mma menyatakan bahwa perbatasan AS-Meksiko sekitar 1952 mil.
LegionMammal978
18
Baik untuk diketahui, tetapi yang penting adalah tak satu pun dari angka-angka itu berarti apa pun untuk tantangan ini.
geokavel
@geokavel Silakan jawab.
programmer5000
1
Selain itu, apakah maksud dari tantangan ini untuk dapat memproses gambar dan mengidentifikasi perbatasan sebelum menggambar garis, atau apakah dapat diterima untuk hanya dapat menggambar garis tanpa benar-benar memproses gambar (pada dasarnya dengan asumsi seperti apa gambar akan seperti )?
notjagan

Jawaban:

7

Python 2 + numpy + OpenCV , 576 byte

Demo 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)

Program ini hampir seluruhnya ungolfed, dan ada aspek-aspeknya yang agak tidak akurat saat ini, tetapi setidaknya itu berfungsi sebagian besar. Selain itu, ada sedikit sedikit hardcoding, tapi itu hanya untuk jendela perkiraan melampirkan perbatasan dan koordinat pixel pertama di perbatasan (yang terakhir yang saya akan benar-benar kemungkinan besar menghapus kemudian).

Gambar yang digunakan oleh program ini dibelah dua di area (yaitu 1120 x 865), sehingga panjang garis yang ditarik dan jarak antara garis lebih kecil.

notjagan
sumber
2
keren!! senang melihat jawaban!
geokavel
sarankan untuk menghapus tautan tio yang tidak berfungsi
Евгений Новиков
1
gif demo i.stack.imgur.com/RWQu4.gif . Terapkan edit saya
Евгений Новиков
@ ЕвгенийНовиков Terima kasih atas gif! Ini jauh lebih ilustratif (dan succint) daripada gambar yang saya miliki sebelumnya.
notjagan