Nouveau bonus! (Voir ci-dessous)
L'équipe de cartographie de l'espoir présidentiel républicain américain Ben Carson a des problèmes avec leurs cartes (image via le Washington Post ):
Le problème est qu'ils n'ont pas le bon outil pour le travail ™. Ils ont besoin du programme le plus compact et le plus fiable possible, afin qu'ils n'aient plus à se soucier de refaire des cartes. Voilà pourquoi ils vous ont engagé. Vous devez prendre cette carte et la renvoyer avec la coloration souhaitée:
Par Theshibboleth [GFDL ( http://www.gnu.org/copyleft/fdl.html ) ou CC-BY-SA-3.0 ( http://creativecommons.org/licenses/by-sa/3.0/)] , via Wikimedia Commons
Si vous ne savez pas où se trouvent tous les États (parce que vous n'êtes pas américain ... ou vous êtes américain), voici une carte avec tous les noms (Washington DC n'est pas requis pour ce défi):
"Carte des USA avec des noms d'état 2". Sous licence CC BY-SA 3.0 via 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
Par exemple, si l'entrée est Ohio, Indiana, Illinois;New York, New Jersey, Florida
, vous sortez:
L'image de la carte vierge est disponible en SVG et PNG formats . Pour votre commodité, voici une liste des 50 États par ordre alphabétique
Ceci est un code-golf et défi de de sortie graphique . La sortie doit être au format SVG ou image. Il ne suffit pas d'afficher simplement la sortie à l'écran. L'entrée doit provenir de STDIN ou de la lecture d'un fichier texte. Je suis flexible avec la façon dont vous formatez l'entrée, bien qu'elle devrait contenir les noms complets de chaque état, avec les états rouges (républicains) en premier et les états bleus (démocratiques) en second. Deux nuances distinctes de rouge et de bleu sont acceptables pour la coloration. Bien sûr, vous pouvez avoir l'image de carte vierge dans le même dossier que votre programme avec le nom de fichier que vous souhaitez.
Critères de précision
Si votre sortie est un fichier raster, elle doit être d'au moins 800 pixels par 495 pixels, et les lignes ne doivent pas dévier du résultat de la mise à l'échelle du SVG à la même taille de plus de 1,5 pixel. Si votre sortie est un fichier vectoriel, les lignes ne doivent pas s'écarter du SVG de plus de 1,5 pixel lorsque les deux sont mises à l'échelle à 800 pixels par 495 pixels.
Prime!
Ben essaie de réduire la dépendance vis-à-vis des bibliothèques étrangères et propose désormais un -50% bonus de à toute personne qui utilise uniquement une version graphique raster de la carte en entrée et crée son propre algorithme pour la détection de région. En fin de compte, c'est mon jugement qui détermine si votre approche compte comme «écrire votre propre» algorithme.
Bonne chance!
Réponses:
Python 626
Dans l'approche ci-dessous, j'ai ajouté .rstate et .bstate basé sur .state dans la description CSS. Dans mon, j'ai renommé le fichier .svg fourni en
v.svg
. Il prend une entrée comme décrit ci-dessous et écrit dans un fichierw.png
. Pour passer du nom d'état complet à la version abrégée, je les recherche en fonction des deux premières et dernières lettres des états.Exemple d'entrée:
Exemple de sortie:
Ou inspiré du drapeau de la France:
la source
Traitement, 425 octets (259 octets + 1 fichier +165 octets)
Code:
La carte vierge doit être nommée " M.svg " et stockée dans un dossier appelé / data (tous les autres fichiers se trouvent dans le même dossier que le programme.)
Fichier d'entrée (" a "):
Fichier clé (" b "): http://pastebin.com/0pNufAH9
Sortie (" m.tif "):
Ok, voici mon essai à mon propre défi. Quelques notes:
Si quelqu'un a des divergences avec mon auto-évaluation de mon code, n'hésitez pas à laisser un commentaire.
De plus, si quelqu'un est curieux d'essayer ce défi dans le traitement , il prend en charge la lecture des fichiers SVG dans
PShape
, ainsi que l'analyse des fichiers SVG en XML.la source
for(int i=0;i++<51;)
au lieu defor(int i=0;i<51;i++)
. Il enregistre 1 octet et a un visage souriant;)++i
fonctionner. Est-ce que ça sonne bien?String[] a
PHP, 714 octets
La sortie est le fichier SVG vierge, qui doit être stocké dans un fichier nommé
a
, avec du CSS supplémentaire pour colorer les états, qui doit être stocké dans un fichier nomméb
au format suivant:J'ai ajouté quelques nouvelles lignes pour la lisibilité.
Voici la version non golfée:
Le principe est simple: dans le SVG vierge, chaque chemin a un ID correspondant à l'abréviation de l'état qu'il représente (par exemple,
<path d="…" id="HI" />
pour Hawaï).Tout ce que nous avons à faire est d'ajouter du CSS pour colorer ce chemin dans la teinte appropriée. Mais il y a déjà du CSS dans le fichier vierge (en particulier la
<style type="text/css">…</style>
balise existe déjà), donc c'est vraiment facile et court de le faire. Nous pouvons remarquer que la chaîne.b
ne se trouve que dans le CSS pour.border
. Bonnes nouvelles! Nous allons simplement remplacer.b
parOUR_WONDERFUL_CSS.b
.Créer "notre merveilleux CSS" n'est pas vraiment plus difficile:
Ohio0Indiana0Illinois1New York0New Jersey0Florida
.OH0IN0IL1NY0NJ0FL
.0
caractères avec,#
:OH,#IN,#IL1NY,#NJ,#FL
.1
caractère avec{fill:red}#
:OH,#IN,#IL{fill:red}#NY,#NJ,#FL
.#
au début et{fill:blue}
à la fin:#OH,#IN,#IL{fill:red}#NY,#NJ,#FL{fill:blue}
.la source
implode
et votre nom d'utilisateur!Mathematica 1025
Pas élégant mais ça marche.
Je ne savais pas que les fichiers SVG avaient des chemins pour chaque état, j'ai donc trouvé les états utilisant
MorphologicalComponents
puis associé chaque composant à son état respectif. Des États comme le Michigan (avec les péninsules supérieures et inférieures) et Hawaï (plusieurs îles) ont plus d'une composante.Le code suppose que le fichier de carte est contenu dans la variable, m .
Voici l'image qui sera exportée par l'entrée suivante:
la source