Nuevo bono! (Vea abajo)
El equipo de cartografía del candidato presidencial republicano de EE. UU. Ben Carson está teniendo algunos problemas con sus mapas (imagen a través del Washington Post ):
El problema es que no tienen la herramienta adecuada para el trabajo ™. Necesitan el programa más compacto y confiable posible, por lo que nunca tendrán que preocuparse por volver a hacer mapas. Por eso te contrataron. Debe tomar este mapa y enviarlo nuevamente con el color deseado:
Por Theshibboleth [GFDL ( http://www.gnu.org/copyleft/fdl.html ) o CC-BY-SA-3.0 ( http://creativecommons.org/licenses/by-sa/3.0/)] , a través de Wikimedia Commons
Si no sabe dónde están todos los estados (porque no es estadounidense ... o es estadounidense), aquí hay un mapa con todos los nombres (Washington DC no es necesario para este desafío):
"Mapa de Estados Unidos con nombres de estado 2". Licenciado bajo CC BY-SA 3.0 a través de Wikimedia Commons - https://commons.wikimedia.org/wiki/File:Map_of_USA_with_state_names_2.svg#/media/File:Map_of_USA_with_state_names_2.svg
Por ejemplo, si la entrada es Ohio, Indiana, Illinois;New York, New Jersey, Florida
, la salida:
La imagen del mapa en blanco está disponible en formatos SVG y PNG . Para su conveniencia, aquí hay una lista de los 50 estados en orden alfabético
Este es un desafío de código de golf y salida gráfica . La salida debe ser como un archivo SVG o de imagen. Simplemente mostrar la salida en la pantalla no es suficiente. La entrada debe tomarse de STDIN o leyendo un archivo de texto. Soy flexible con la forma en que formatea la entrada, aunque debe contener los nombres completos de cada estado, con los estados rojos (republicanos) en primer lugar y los azules (demócratas) en segundo lugar. Dos tonos distintos de rojo y azul son aceptables para la coloración. Por supuesto, puede tener la imagen del mapa en blanco en la misma carpeta que su programa con el nombre de archivo que desee.
Criterios de precisión
Si su salida es un archivo ráster, debe tener al menos 800 px por 495 px, y las líneas no deben desviarse del resultado de escalar el SVG al mismo tamaño en más de 1.5 píxeles. Si su salida es un archivo vectorial, las líneas no deben desviarse del SVG en más de 1.5 píxeles cuando ambas se escalan a 800 px por 495 px.
¡Prima!
Ben está tratando de reducir la dependencia de las bibliotecas extranjeras, y ahora ofrece una bonificación de -50% a cualquiera que use solo una versión de mapa ráster del mapa como entrada y cree su propio algoritmo para la detección de regiones. En última instancia, es mi opinión la que determina si su enfoque cuenta como un algoritmo de "escritura propia".
¡Buena suerte!
fuente
Respuestas:
Python 626
En el siguiente enfoque, agregué .rstate y .bstate basado en .state en la descripción de CSS. En mi renombré el archivo .svg proporcionado a
v.svg
. Toma una entrada como se describe a continuación y escribe en un archivow.png
. Para transferir del nombre completo del estado a la versión abreviada, los busco según las dos primeras letras de los estados.Entrada de ejemplo:
Salida de ejemplo:
O inspirado por la bandera de Francia:
fuente
Procesamiento, 425 bytes (259 bytes + 1 +165 bytes de archivo)
Código:
El mapa en blanco debe llamarse " M.svg " y almacenarse en una carpeta llamada / data (todos los demás archivos están en la misma carpeta que el programa).
Archivo de entrada (" a "):
Archivo de clave (" b "): http://pastebin.com/0pNufAH9
Salida (" m.tif "):
Ok, aquí está mi intento en mi propio desafío. Algunas notas:
Si alguien tiene alguna discrepancia con mi auto adjudicación de mi código, no dude en dejar un comentario.
Además, si alguien tiene curiosidad por probar este desafío en Processing , es compatible tanto con la lectura de archivos SVG
PShape
como en el análisis de archivos SVG como XML.fuente
for(int i=0;i++<51;)
lugar defor(int i=0;i<51;i++)
. Ahorra 1 byte y tiene una cara sonriente;)++i
para que funcione. ¿Eso suena bien?String[] a
PHP, 714 bytes
El resultado es el archivo SVG en blanco, que debe almacenarse en un archivo llamado
a
, con CSS adicional para colorear los estados, que debe almacenarse en un archivob
con el siguiente formato:He agregado algunas líneas nuevas para facilitar la lectura.
Aquí está la versión sin golf:
El principio es simple: en el SVG en blanco, cada ruta tiene una ID correspondiente a la abreviatura del estado que representa (por ejemplo,
<path d="…" id="HI" />
para Hawai).Todo lo que tenemos que hacer es agregar un poco de CSS para colorear esta ruta en el tono apropiado. Pero ya hay algo de CSS en el archivo en blanco (en particular, la
<style type="text/css">…</style>
etiqueta ya existe), por lo que es realmente fácil y corto hacerlo. Podemos notar que la cadena.b
solo se encuentra en el CSS para.border
. ¡Buenas noticias! Solo lo reemplazaremos.b
conOUR_WONDERFUL_CSS.b
.Crear "nuestro maravilloso CSS" no es realmente más difícil:
Ohio0Indiana0Illinois1New York0New Jersey0Florida
.OH0IN0IL1NY0NJ0FL
.0
caracteres con,#
:OH,#IN,#IL1NY,#NJ,#FL
.1
personaje con{fill:red}#
:OH,#IN,#IL{fill:red}#NY,#NJ,#FL
.#
al principio y{fill:blue}
al final:#OH,#IN,#IL{fill:red}#NY,#NJ,#FL{fill:blue}
.fuente
implode
y su nombre de usuario!Mathematica 1025
No es elegante pero funciona.
No sabía que los archivos SVG tenían rutas para cada estado, así que encontré los estados usando
MorphologicalComponents
y luego asocié cada componente con su estado respectivo. Estados como Michigan (con penínsulas superior e inferior) y Hawai (múltiples islas) tienen más de un componente.El código supone que el archivo de mapa está contenido en la variable, m .
A continuación se muestra la imagen que se exportará mediante la siguiente entrada:
fuente