আমেরিকা (এন ম্যাপস) কে আবার গ্রেট করুন


16

নতুন বোনাস! (নিচে দেখ)

মার্কিন রিপাবলিকান রাষ্ট্রপতি আশাবাদী বেন কারসনের কার্টোগ্রাফি দলটি তাদের মানচিত্র ( ওয়াশিংটন পোস্টের মাধ্যমে চিত্র ) নিয়ে কিছুটা সমস্যা করছে :

একগুচ্ছ রাজ্য সহ মানচিত্র ভুল জায়গায় চলে গেছে (বেন কারসনের প্রচার দল দ্বারা) এবং এর পাশের মার্কিন যুক্তরাষ্ট্রের একটি আসল মানচিত্র

সমস্যাটি হ'ল তাদের কাছে কাজের জন্য সঠিক সরঞ্জাম নেই ™ ™ তাদের সম্ভাব্যতম কমপ্যাক্ট এবং নির্ভরযোগ্য প্রোগ্রাম প্রয়োজন, তাই তাদের আর কখনও মানচিত্র তৈরির বিষয়ে চিন্তা করতে হবে না। এজন্য তারা আপনাকে ভাড়া করেছে। আপনার এই মানচিত্রটি নিতে এবং এটি পছন্দসই রঙিন দিয়ে আবার আউটপুট করতে হবে:

রাষ্ট্রের সীমানা যুক্ত আমেরিকা যুক্তরাষ্ট্রের খালি মানচিত্র

থিশিব্বোলেথ [জিএফডিএল ( http://www.gnu.org/copyleft/fdl.html ) বা সিসি-বাই-এসএ-3.0 ( http://creativecommons.org/license/by-sa/3.0/)] এর মাধ্যমে উইকিমিডিয়া কমন্স

আপনি যদি জানেন না যে সমস্ত রাজ্য কোথায় (কারণ আপনি আমেরিকান নন ... বা আপনি আমেরিকান), এখানে সমস্ত নাম সহ একটি মানচিত্র রয়েছে (এই চ্যালেঞ্জের জন্য ওয়াশিংটন ডিসি প্রয়োজন নেই): রাষ্ট্রের সীমানা এবং এতে নাম সহ আমেরিকা যুক্তরাষ্ট্রের মানচিত্র

"মার্কিন যুক্তরাষ্ট্রের মানচিত্রের রাষ্ট্রের নাম 2"। উইকিমিডিয়া কমন্সের মাধ্যমে সিসি বিওয়াই-এসএ ৩.০ এর আওতাধীন - https://commons.wikimedia.org/wiki/File:Map_of_USA_with_state_names_2.svg#/media/File:Map_of_USA_with_state_names_2.svg

উদাহরণস্বরূপ যদি ইনপুট হয় Ohio, Indiana, Illinois;New York, New Jersey, Florida, আপনি আউটপুট: রাষ্ট্রের সীমানা সহ মার্কিন যুক্তরাষ্ট্রের মানচিত্র।  ওহিও, ইন্ডিয়ানা এবং ইলিনয় লাল রঙের;  নিউ ইয়র্ক, নিউ জার্সি ফ্লোরিডা নীল রঙে রঙ্গিন।

ফাঁকা মানচিত্রের চিত্রটি এসভিজি এবং পিএনজি ফর্ম্যাটে উপলব্ধ। আপনার সুবিধার জন্য, বর্ণানুক্রমিক ক্রমে সমস্ত 50 টি রাজ্যের একটি তালিকা এখানে রয়েছে

এটি একটি এবং চ্যালেঞ্জ। আউটপুট অবশ্যই একটি এসভিজি বা চিত্র ফাইল হিসাবে হওয়া উচিত। কেবলমাত্র পর্দায় আউটপুট প্রদর্শন করা যথেষ্ট নয়। ইনপুটটি অবশ্যই STDIN থেকে বা কোনও পাঠ্য ফাইল পড়ার মাধ্যমে নেওয়া উচিত। আপনি কীভাবে ইনপুটটি ফর্ম্যাট করেন তার সাথে আমি নমনীয়, যদিও এতে প্রতিটি রাজ্যের পুরো নাম থাকা উচিত, লাল (প্রজাতন্ত্র) রাষ্ট্রগুলি প্রথম এবং নীল (গণতান্ত্রিক) রাজ্যগুলির দ্বিতীয় তালিকাভুক্ত থাকে। লাল এবং নীল যে কোনও দুটি পৃথক শেড রঙিনের জন্য গ্রহণযোগ্য। অবশ্যই, আপনি যা চান ফাইলের নাম সহ আপনার প্রোগ্রামের মতো একই ফোল্ডারে ফাঁকা মানচিত্রের চিত্র থাকতে পারে।

নির্ভুলতার মানদণ্ড

যদি আপনার আউটপুট কোনও রাস্টার ফাইল হয় তবে এটি অবশ্যই 495 পিক্স দ্বারা কমপক্ষে 800px হওয়া উচিত এবং লাইনগুলি 1.5 পিক্সেলের বেশি করে একই আকারে এসভিজি স্কেলিংয়ের ফলাফল থেকে বিচ্যুত হবে না। যদি আপনার আউটপুট একটি ভেক্টর ফাইল হয়, উভয়ই 495px দ্বারা 800px এ স্কেল করা হলে লাইনগুলি 1.5 পিক্সেলের বেশি এসভিজি থেকে বিচ্যুত হবে না।

বোনাস!

বেন বিদেশী লাইব্রেরিগুলির উপর নির্ভরতা হ্রাস করার চেষ্টা করছেন, এবং এখন যে কেউ মানচিত্রের রাস্টার গ্রাফিক্স সংস্করণটিকে ইনপুট হিসাবে ব্যবহার করেন এবং অঞ্চল সনাক্তকরণের জন্য তাদের নিজস্ব অ্যালগরিদম তৈরি করেন তাদের কাছে এখন -50% বোনাস দেওয়া হচ্ছে। শেষ পর্যন্ত, এটি আমার রায় যা নির্ধারণ করে যে আপনার পদ্ধতিকে "আপনার নিজের লেখার" অ্যালগরিদম হিসাবে গণনা করা হয় কিনা।

শুভকামনা!


উদাহরণটি পূরণ করা হয়নি এমন লাইনগুলির আশেপাশে কিছু এলিয়াসিং দেখায়? তা কি গ্রহণযোগ্য?
স্পার

@ স্পার আমি একটি চিত্র সম্পাদকের সাহায্যে উদাহরণটি তৈরি করেছি, তাই আমি এটিকে "নিখুঁত" বলে মনে করি, সুতরাং আপনি যদি কোনও কিছু মিস করেন তবে এটি ঠিক আছে।
জিওকাভেল

শুধু নিশ্চিত হতে: আমাদের কি ফাঁকা এসভিজি ফাইলটি সংশোধন করার অনুমতি দেওয়া হচ্ছে? এটির আকারটি আমাদের স্কোরের মধ্যে গণনা করে? "কেবলমাত্র পর্দায় আউটপুট প্রদর্শন করা যথেষ্ট নয়" এর অর্থ কী?
ব্ল্যাকহোল

@ ব্ল্যাকহোল না, আপনি খালি এসভিজি ফাইলটি পরিবর্তন করতে পারবেন না, তবে আপনি যতক্ষণ বাহ্যিকভাবে লোড করবেন ততক্ষণ এটি আপনার স্কোরের অংশ হিসাবে গণ্য হবে না।
জিওকাভেল

@ ব্ল্যাকহোল আমার অর্থ, আপনাকে একটি ফাইল আউটপুট দিতে হবে।
জিওকাভেল

উত্তর:


7

পাইথন 626

নীচের পদ্ধতির মধ্যে, আমি CSS বর্ণনায় .state এর ভিত্তিতে .স্টেট এবং .bstate যুক্ত করেছি added আমার মধ্যে আমি সরবরাহিত .svg ফাইলটির নতুন নামকরণ করেছি v.svg। এটি নীচে বর্ণিত হিসাবে একটি ইনপুট লাগে এবং একটি ফাইল লিখতে w.png। পূর্ণ রাষ্ট্রের নাম থেকে সংক্ষিপ্ত সংস্করণে স্থানান্তর করতে আমি তাদের রাজ্যের প্রথম এবং শেষ দুটি অক্ষরের উপর ভিত্তি করে সন্ধান করি।

r='Ama,Aka,Ana,Aas,Cia,Cdo,Cut,Dre,Fda,Gia,Hii,Iho,Iis,Ina,Iwa,Kas,Kky,Lna,Mne,Mnd,Mts,Man,Mta,Mpi,Mri,Mna,Nka,Nda,Nre,Ney,Nco,Nrk,Nna,Nta,Oio,Oma,Oon,Pia,Rnd,Sna,Sta,Tee,Tas,Uah,Vnt,Via,Won,Wia,Win,Wng'.split(',')
y='lkzraotelaidlnasyaedainsotevhjmycdhkraicdnxttaaviy'
v=open('v.svg','r')
s=v.read()
v.close()
k=s.find('.state')
j=s.find('.',k+1)
t=input().split(';')
w=open('w.svg','w')
k+=1
c='#E0E0E0'
s=s[:j]+'.r'+s[k:j].replace(c,'red')+'.b'+s[k:j].replace(c,'blue')+s[j:]
c='rb'
for j in range(2):
 for d in t[j].split(','):k=s.find('state '+d[0].lower()+y[r.index(d[0]+d[-2:])]);s=s[:k]+c[j]+s[k:]
w.write(s)
w.close()

উদাহরণ ইনপুট:

'California,Illinois,Iowa,Mississippi;New Mexico,Pennsylvania,South Dakota,Vermont'

উদাহরণ আউটপুট: আউটপুট চিত্র

বা ফ্রান্সের পতাকা দ্বারা অনুপ্রাণিত: আউটপুট ফিগার ফ্রান্স


খুব ভালো, গণতন্ত্র চলছে!
জিওকাভেল

অভিনন্দন, আপনি বিজয়ী! যারা অংশগ্রহণ করেছেন সবাইকে ধন্যবাদ!
জিওকাভেল

6

প্রক্রিয়াজাতকরণ, 425 বাইট (259 বাইট +1 +165 বাইট ফাইল)

কোড:

size(959,593);String[]a=loadStrings("a"),b=loadStrings("b");PShape m=loadShape("M.svg");m.disableStyle();for(int i=0;i<51;i++){fill(255);int r=0;for(String j:a){if(j.isEmpty())r++;if(j.contains(b[i]))fill(r>0?#0000FF:#FF0000);}shape(m.getChild(i));}save("m");

ফাঁকা মানচিত্রটির নাম " এমএসভিজি " রাখা উচিত এবং / ডাটা নামক ফোল্ডারে সংরক্ষণ করা উচিত (অন্যান্য সমস্ত ফাইল প্রোগ্রামের মতো একই ফোল্ডারে রয়েছে।)

ইনপুট ফাইল (" একটি "):

Mississippi
California
Connecticut

Delaware
Florida
Wyoming
Hawaii

কী ফাইল (" বি "): http://pastebin.com/0pNufAH9

আউটপুট (" এম.ফিট "):

এখানে চিত্র বর্ণনা লিখুন

ঠিক আছে, এখানে আমার নিজের চ্যালেঞ্জের চেষ্টা করছি। কিছু নোট:

  • আউটপুট মানচিত্র নিম্নলিখিত উপায়ে ইনপুট মানচিত্র থেকে পৃথক দেখায়
    1. ইনপুট মানচিত্রে স্বচ্ছ পটভূমিতে ধূসর রঙের ফিলিং ছিল। আউটপুটটিতে ধূসর ব্যাকগ্রাউন্ডে সাদা ভরাট রয়েছে। আমি মনে করি এটির অনুমতি দেওয়া উচিত, কারণ সাদা, ধূসর এবং স্বচ্ছতা সবই নিরপেক্ষ।
    2. আউটপুট মানচিত্রে হাওয়াই এবং আলাস্কার চারপাশে যে ইনপুটটি ছিল তা অনুপস্থিত। আবারও, আমি মনে করি এটি ঠিক আছে কারণ লাইনগুলি মানচিত্রের উল্লেখযোগ্য অংশ নয়।
  • প্রোগ্রামটি কীগুলি ধরে রাখতে একটি বাহ্যিক ফাইল ব্যবহার করে। এই মেটা পোস্ট অনুসারে , আমাকে একটি অতিরিক্ত ফাইলের জন্য কেবল 1 বাইট যুক্ত করতে হবে।

কারও কাছে যদি আমার কোড সম্পর্কে আমার স্ব-বিচারের সাথে কোনও ত্রুটি থাকে তবে নির্দ্বিধায় কোনও মন্তব্য করবেন না।

এছাড়াও, যদি কারও প্রসেসিংয়ে এই চ্যালেঞ্জটি চেষ্টা করার বিষয়ে আগ্রহী হয় তবে এটি এসভিজি ফাইলগুলি উভয়কে পড়া PShape, পাশাপাশি এসএমজি হিসাবে এসভিজি ফাইলগুলি পার্সিং উভয়কেই সমর্থন করে ।


আপনার লুপ জন্য, for(int i=0;i++<51;)পরিবর্তে আছে for(int i=0;i<51;i++)। এটি 1 বাইট সাশ্রয় করে এবং এতে এতে একটি হাসিখুশি মুখ আছে;)
ক্রিটিক্সী লিথোস

@ ΚριτικσιΛίθος ++iএটি কাজ করার জন্য আমাকে এটি তৈরি করতে হয়েছিল। এটা ঠিক আছে?
জিওকাভেল

@। এটি কোনও বাইট সংরক্ষণ করতে পারে তবে লুপের অভ্যন্তরে এটি সম্পূর্ণরূপে আচরণ পরিবর্তন করে।
টম কার্পেন্টার

@ Ea হ্যাঁ, আমি অনুমান করি যে আমি তখন এটি ব্যবহার করতে পারি না কারণ আমি হাওয়াইকে হারিয়েছি। সম্ভবত এটি জাভাতে অন্য ভাষাগুলিতে আলাদাভাবে কাজ করে।
জিওকাভেল

আপনি একটি অতিরিক্ত অকেজো স্থান পেয়েছেনString[] a
ক্রিতিক্সী লিথোস

5

পিএইচপি, 714 বাইট

আউটপুটটি হ'ল ফাঁকা এসভিজি ফাইল, যা নামক কোনও ফাইলে aসংরক্ষণ করা উচিত, রাজ্যগুলিকে রঙ করার জন্য অতিরিক্ত সিএসএস সহ, যা bনিম্নলিখিত ফর্ম্যাটে নামক কোনও ফাইলে সংরক্ষণ করা উচিত :

Ohio0Indiana0Illinois1New York0New Jersey0Florida

আমি পঠনযোগ্যতার জন্য কিছু নতুন লাইন যুক্ত করেছি।

<?
$x=str_replace;echo$x('.b','#'.$x([0,1],[',#','{fill:red}#'],$x(split(0,'Alabama0Alaska0
Arizona0Arkansas0California0Colorado0Connecticut0Delaware0Florida0Georgia0Hawaii0Idaho0Illin
ois0Indiana0Iowa0Kansas0Kentucky0Louisiana0Maine0Maryland0Massachusetts0Michigan0Minnesota0M
ississippi0Missouri0Montana0Nebraska0Nevada0New Hampshire0New Jersey0New Mexico0New York0Nor
th Carolina0North Dakota0Ohio0Oklahoma0Oregon0Pennsylvania0Rhode Island0South Carolina0South
 Dakota0Tennessee0Texas0Utah0Vermont0Virginia0Washington0West Virginia0Wisconsin0Wyoming'),s
tr_split(ALAKAZARCACOCTDEFLGAHIIDILINIAKSKYLAMEMDMAMIMNMSMOMTNENVNHNJNMNYNCNDOHOKORPARISCSDT
NTXUTVTVAWAWVWIWY,2),file(b)[0])).'{fill:blue}.b',implode('',file(a)));

নিখরচায় সংস্করণটি এখানে:

<?php
$stateNames = 'Alabama0Alaska0Arizona0Arkansas0California0Colorado0Connecticut0Delaware0Florida0Georgia0Hawaii0Idaho0Illinois0Indiana0Iowa0Kansas0Kentucky0Louisiana0Maine0Maryland0Massachusetts0Michigan0Minnesota0Mississippi0Missouri0Montana0Nebraska0Nevada0New Hampshire0New Jersey0New Mexico0New York0North Carolina0North Dakota0Ohio0Oklahoma0Oregon0Pennsylvania0Rhode Island0South Carolina0South Dakota0Tennessee0Texas0Utah0Vermont0Virginia0Washington0West Virginia0Wisconsin0Wyoming';
$statesAbbreviations = 'ALAKAZARCACOCTDEFLGAHIIDILINIAKSKYLAMEMDMAMIMNMSMOMTNENVNHNJNMNYNCNDOHOKORPARISCSDTNTXUTVTVAWAWVWIWY';

$blankSVG = implode('', file('a'));

$inputWithStateNames = file('b')[0];
$inputWithStateAbbreviations = str_replace(
    explode('0', $stateNames),
    str_split($statesAbbreviations, 2),
    $inputWithStateNames
);

echo str_replace(
    '.border',
    '#'. str_replace(
        [
            '0',
            '1'
        ],
        [
            ',#',
            '{fill:red}#'
        ],
        $inputWithStateAbbreviations
    ) .'{fill:blue}.border',
    $blankSVG
);

নীতিটি সহজ: ফাঁকা এসভিজিতে প্রতিটি পাথের একটি সংখ্যক রাজ্যের সংক্ষিপ্তসার সম্পর্কিত ID থাকে যা এটি প্রতিনিধিত্ব করে (উদাহরণস্বরূপ, <path d="…" id="HI" />হাওয়াইয়ের জন্য)।

আমাদের যা করতে হবে তা হল উপযুক্ত ছায়ায় এই পথটি রঙিন করার জন্য কিছু সিএসএস যুক্ত করা। তবে ফাঁকা ফাইলে ইতিমধ্যে কিছু সিএসএস রয়েছে (বিশেষত <style type="text/css">…</style>ট্যাগটি ইতিমধ্যে বিদ্যমান রয়েছে), তাই এটি করা খুব সহজ এবং সংক্ষিপ্ত। স্ট্রিংটি .bকেবলমাত্র সিএসএসে পাওয়া যায় তার চেয়ে আমরা লক্ষ্য করতে পারি .border। ভাল খবর! আমরা ঠিক .bসঙ্গে প্রতিস্থাপন করব OUR_WONDERFUL_CSS.b

"আমাদের বিস্ময়কর সিএসএস" তৈরি করা সত্যিই বেশি কঠিন নয়:

  1. পড়ুন ফাইল থেকে ইনপুট:
    Ohio0Indiana0Illinois1New York0New Jersey0Florida
  2. তাদের বর্ণমালা সঙ্গে রাজ্যের নাম প্রতিস্থাপন করুন:
    OH0IN0IL1NY0NJ0FL
  3. প্রতিস্থাপন 0দিয়ে অক্ষর ,#:
    OH,#IN,#IL1NY,#NJ,#FL
  4. প্রতিস্থাপন 1সঙ্গে চরিত্র {fill:red}#:
    OH,#IN,#IL{fill:red}#NY,#NJ,#FL
  5. যোগ #শুরুতে এবং {fill:blue}শেষে:
    #OH,#IN,#IL{fill:red}#NY,#NJ,#FL{fill:blue}

ঠিক আছে, দুর্দান্ত কাজ প্রযুক্তিগতভাবে এটি কোনও ফাইল আমার ইচ্ছে মতো লিখেনি, ব্যবহারকারী সহজেই ব্রাউজারে "সেভ পৃষ্ঠা হিসাবে" চাপ দিয়ে চিত্র সংরক্ষণ করতে পারে। আমি এই ধরণের উত্তর অনুমতি দেব।
জিওকাভেল

3
মজার বিষয় যে পেনসিলভেনিয়া, রোড আইল্যান্ড এবং দক্ষিণ ক্যারোলিনার সংক্ষিপ্ত বিবরণগুলি প্যারিস বানান।
জিওকাভেল

@ জোকাভেল আমি প্রয়োজনে সহজেই একটি ফাইল তৈরি করতে পারি। আমার উত্তর পরিবর্তন করা উচিত? হ্যাঁ, দীর্ঘ লাইভ প্যারিস! যাইহোক, আটলান্টিকের ওপারে এই শক্ত সময়ে আপনার সমর্থনের জন্য ধন্যবাদ!
ব্ল্যাকহোল

@ ডেভিডকারারহর আমি কিছু ব্যাখ্যা যুক্ত করেছি। আমি আশা করি এটি আমার উত্তর বুঝতে আপনাকে সহায়তা করবে।
ব্ল্যাকহোল

+1 implodeএবং আপনার ব্যবহারকারীর নাম!
কেয়ার্ড কোইনরিঙ্গিংহিং

3

গণিত 1025

মার্জিত নয় তবে এটি কাজ করে।

আমি জানতাম না যে এসভিজি ফাইলগুলির প্রতিটি রাজ্যের জন্য পথ রয়েছে, সুতরাং আমি রাজ্যগুলি দেখতে পেয়েছি MorphologicalComponentsএবং তারপরে প্রতিটি উপাদানকে তার নিজ রাজ্যের সাথে যুক্ত করেছি। মিশিগান (উচ্চ এবং নিম্ন উপদ্বীপ সহ) এবং হাওয়াই (একাধিক দ্বীপপুঞ্জ) এর মতো রাজ্যের একাধিক উপাদান রয়েছে।

কোডটি ধরে নিয়েছে যে মানচিত্রের ফাইলটি ভেরিয়েবলের মধ্যে রয়েছে, মি

r=Thread[{"Washington","Montana","Maine","Minnesota","North Dakota","Oregon","Michigan","New Hampshire","Vermont","Wisconsin","New York","Idaho","South Dakota","Wyoming","Massachusetts","California","Connecticut","Nevada","Pennsylvania","Iowa","New Mexico","New Jersey","Ohio","Nebraska","Illinois","Indiana","Colorado","Delaware","Maryland","West Virginia","Virginia","Missouri","Washington, D.C.","Kansas","Kentucky","North Carolina","New Mexico","Tennessee","Arizona","Oklahoma","Arkansas","South Carolina","Georgia","Alabama","Mississippi","Texas","Louisiana","Alaska","Florida","Hawaii"}->{6,7,8,9,10,11,{13,23},14,16,18,{19,39},20,24,25,26,27,31,32,36,37,38,40,41,42,43,44,45,46,{47,55},49,50,51,52,53,56,57,58,59,60,61,62,65,66,67,69,{71,80,87},72,{73,75,82,93,101,104},74,{79,81,83,84,85,89,92}}]; 
v=Flatten;c=MorphologicalComponents@Binarize@m;
h@s_:=v[((Reverse/@Position[c,#])/.{x_,y_}:>{x,1241-y})&/@s,1]
k@{s_,c_}:=Thread[(h@s)->c]
f@{a_,b_}:=Export["f.jpg",(ReplacePixelValue[map,v[k[{v[#/.r],#2}]&@@@{{a,Red},{b,Blue}}]])]

নীচের চিত্রটি নিম্নলিখিত ইনপুট দ্বারা রফতানি করা হবে:

f[{{"Ohio", "Indiana", "Illinois", "Alaska"}, {"New York", "Michigan","Oregon", "New Jersey", "Florida"}}]

মানচিত্র

আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.