জাল পূর্বাভাস


15

নতুন কম্পিউটার আবহাওয়া সুপার কম্পিউটার এসে গেছে, এবং এটি কার্যকর হয় না।

এরই মধ্যে আপনার বস আপনার দৈনিক বাতাসের মানচিত্রগুলি নকল করে প্রযুক্তিবিদদের কিছুটা সময় কিনতে চান।

আপনার কাজটি বাতাসের দিকের প্রতিনিধিত্বকারী তীরগুলির গ্রিড আঁকানো।

গ্রিডটি হ'ল:

  • 15px বর্গক্ষেত্র টাইল গঠিত
  • 8 টাইল 8 টাইল
  • মোট 120px বর্গ
  • 000 ব্যাকগ্রাউন্ড

প্রতিটি গ্রিড টাইলের 8 টি সম্ভাব্য ওরিয়েন্টেশন রয়েছে যা বায়ুর দিকটি উপস্থাপন করে:

  1. উত্তর
  2. উত্তরপূর্বকোণ
  3. পূর্ব
  4. দক্ষিণ-পূর্ব
  5. দক্ষিণ
  6. নৈর্ঋত
  7. পশ্চিম
  8. বায়ুকোণ

যা অবশ্যই নিম্নরূপ চিত্রিত হতে হবে:

এন এন এনই এনইই এস দঃপূঃ এস এস এস ডব্লু দঃপঃ ডাব্লু ওয়াট এনডাব্লুউঃপঃ

বিশ্বাসযোগ্য হওয়ার জন্য মানচিত্রগুলি ধীরে ধীরে পরিবর্তিত হতে হবে।

এর অর্থ প্রতিটি টাইল কেবল এক ধাপে তার প্রতিবেশী থেকে পৃথক হতে পারে। বিশেষ করে:

  • একটি টাইল 4 সংলগ্ন 4 টি টাইলগুলির প্রতিটি থেকে কেবল একটি বৃদ্ধি বা হ্রাস দ্বারা পৃথক হতে পারে। (বা পাশের টাইলগুলির জন্য 3, কর্নার টাইলসের জন্য 2)।
  • উদাহরণস্বরূপ প্রতিবেশী E এর সাথে একটি টাইল NE, E বা SE হতে পারে (ধরে নেওয়া এটি তার অন্যান্য প্রতিবেশীদের সাথে সম্মত হয়)।
  • ওরিয়েন্টেশনগুলি প্রায় লুপ করতে পারে, যেমন এন -> এনডাব্লু এবং এনডাব্লু -> এন।

উদাহরণস্বরূপ, নিম্নলিখিত মানচিত্রটি বৈধ:

NW  N NE NE NE NE NE NE 
 N NE NE NE NE NE NE  E 
NE NE NE NE NE NE  E SE 
 E NE NE NE NE  E SE  S 
SE  E  E  E  E SE  S SE 
 S SE SE SE SE  S SE  E 
SW  S  S  S  S SE  E NE 
SW SW  S  S SE  E NE  N 

মানচিত্র অবশ্যই অনন্য হতে হবে , বিভিন্ন ইনপুটগুলির জন্য একই মানচিত্র তৈরি করবেন না।

  • ইনপুটটি এখন এবং আপনার পূর্বাভাসের মধ্যবর্তী দিনের সাথে সামঞ্জস্যপূর্ণ (যেমন 1 কালকের পূর্বাভাস, 365 এক বছরের সময়)।
  • আউটপুট একটি চিত্র হিসাবে মানচিত্র।
  • আউটপুট পুনরায় উত্পাদনযোগ্য হতে হবে, একই ইনপুট সর্বদা একই আউটপুট দেয়
  • আপনাকে অবশ্যই কমপক্ষে 8 বছরের জন্য অনন্য মানচিত্র দিতে হবে - যেমন 1 এবং 2920 এর মধ্যে কোনও ইনপুটের জন্য অভিন্ন আউটপুট নয় (আমি লিপ বছরগুলি উপেক্ষা করছি)।
  • 2920 এর চেয়ে বড় কোনও ইনপুটের জন্য কোনও সংজ্ঞায়িত আউটপুট নেই।

বিজয়ী জমাটি সোর্স কোডের কয়েকটি স্বল্প বাইট সহ বৈধ মানচিত্র (দিন পর্যন্ত 2920) উত্পাদন করবে।


সর্বাধিক ইনপুট যা হ্যান্ডেল করা প্রয়োজন? কি কোনও বাধা আছে, যেমন, টানা দুটি উপায়ে পূর্বাভাস কেবলমাত্র সর্বোচ্চ পরিমাণেও পৃথক হতে পারে?
ইনগো বার্ক

সর্বাধিক ইনপুট যা হ্যান্ডেল করা দরকার তা হ'ল 2920 । ধারাবাহিক পূর্বাভাসের কোনও বাধা নেই (সেগুলি অবশ্যই অনন্য হওয়া উচিত)
jsh

ওহ, দুঃখিত, আমি অবশ্যই শেষ বুলেট পয়েন্টটি উপেক্ষা করেছি। :)
ইনগো বার্ক

8
সামান্য বিষয় ছাড়াই: আবহাওয়ার পূর্বাভাসকারী একজন বন্ধুকে কেবল এটি দেখিয়েছিলেন এবং তিনি আমাকে বলেছিলেন যে আপনি যেসব আবহাওয়া অ্যাপ্লিকেশন পেতে পারেন সেগুলির কিছু আমরা এখানে যা করছি তার থেকে বেশি ভাল নয়, যেহেতু তারা আপাতত নিখরচায় আবহাওয়ার ডেটা গ্রহণ করে বড় বিমানবন্দরগুলি এবং এগুলি বিভক্ত করে তোলে, প্রায়শই এই অন্তরঙ্গগুলি কেবল স্তন্যপান করে না।
flawr

2
"সুপার কম্পিউটারটির পূর্বাভাসকারী নতুন আবহাওয়া এসে গেছে, এবং এটি কার্যকর হয় না" " এটি জলবায়ু বিজ্ঞানের আন্তর্জাতিক জার্নালে জমা দিন। এটা অবশ্যই সমান হবে। : পি
COTO

উত্তর:


4

বিবিসি বেসিক, 83 এএসসিআইআই অক্ষর, টোকেনাইজড ফাইল আকার 72 72

Http://www.bbcbasic.co.uk/bbcwin/bbcwin.html এ এমুলেটরটি ডাউনলোড করুন

  INPUTn:VDU23,48,516;543;4;0;23,49,783;5,9;0;0:WIDTH8FORi=1TO64PRINT;1ANDn;:n/=2NEXT

এটি মূলত মার্টিনের ধারণার একটি বন্দর, তবে বিবিসি বেসিকের প্রয়োগটি খুব আলাদা। আমি সংখ্যার জন্য ফন্টটি পুনরায় প্রোগ্রাম করি 0এবং 1তারপরে nবিপরীত ক্রমে বাইনারি অঙ্কগুলি আউটপুট করি ।

নিখরচায় কোডটি নীচে। বিবিসি বেসিকটিতে আপনি VDUকমান্ডটি ব্যবহার করে স্বতন্ত্র ASCII অক্ষর মুদ্রণ করতে পারেন , তবে ভাষাটিতে মেশিন-নির্দিষ্ট কোডগুলির একটি ধারা রয়েছে যা পালানোর ক্রমগুলির মতো তবে অরক্ষিত অক্ষর দিয়ে শুরু হয়। ফন্টটি পুনরায় প্রোগ্রাম করার জন্য, আমরা ASCII 23 দিয়ে শুরু করি Nor

  INPUTn
  VDU23,48,4,2,31,2,4,0,0,0         :REM redefine font for "0" as an east facing arrow, with an 8x8 bitmap
  VDU23,49,15,3,5,9,0,0,0,0         :REM redefine font for "1" as a northeast facing arrow, with an 8x8 bitmap
  WIDTH8                            :REM set print width to 8 characters
  FORi=1TO64PRINT;1ANDn;:n/=2:NEXT  :REM print the binary digits of n in reverse order from least significant to most significant.

আউটপুট

0 থেকে 7 সংখ্যার জন্য নোট করুন যে প্রোগ্রামের শেষে ফন্টটি পুনরায় সেট করা হয়নি, সুতরাং 0 এবং 1 নম্বরগুলি প্রথম দুটি উদাহরণে তীর হিসাবে উপস্থিত হবে। এখানে চিত্র বর্ণনা লিখুন


ভাল যুক্তি! :) তবে কি টাইলস 15x15?
মার্টিন এন্ডার

@ মার্টিনব্যাটনার বিবিসি বেসিক আপনাকে 8x8 গ্রিডে একটি ফন্ট নতুন করে সংজ্ঞায়িত করতে দেয়। সংখ্যাগুলি ছোট রাখতে, আমি সবচেয়ে স্বল্পতম স্বীকৃত পূর্ব তীরটি (5x5 গ্রিডের উপরের ডান কোণে সংকুচিত হয়ে) করেছি এবং সর্বাধিক অনুরূপ দেখতে উত্তর-পূর্ব তীর তৈরি করেছি। এখানে ব্যবহৃত স্ক্রিনমোডে, সংজ্ঞায় পিক্সেলের সাথে 1: 1 চিঠিপত্র রয়েছে (এবং সারিগুলির মধ্যে যথেষ্ট ফাঁক ফেলেছে) তবে আমি এসই তে আরও ভাল আকারের চিত্র পেতে উইন্ডোজ পেইন্টের গ্রিডের আকার দ্বিগুণ করেছি। বিবিসি বেসিকের অন্যান্য স্ক্রিন মোডগুলির কয়েকটি গ্রিড উপাদানগুলিতে 1 পিক্সেলের বেশি এবং ব্যবহারকারী সংজ্ঞায়িত অক্ষরগুলি নিয়মিত ফন্টের চেয়ে লক্ষণীয়ভাবে আরও গ্রেডিয়র হয়।
স্তর নদী সেন্ট

23

মতলব (182 *)

ধারণা করা হয় যে ইনপুটটি সঞ্চিত আছে n। মুরগি অ্যালগোরিদমের দিকে তাকিয়েছে, এটি নিশ্চিত নয় যে ফলাফলগুলি অনন্য হবে, তবে আমি এটি পরীক্ষা করেছিলাম n=1 upto 3000যে তারা অনন্য এবং নিয়মগুলি সন্তুষ্ট করে। আমি মূলত কেবল ইউনিট বৃত্তের জটিল সংখ্যাগুলি ব্যবহার করি এবং গাওসীয় ফিল্টার দিয়ে কনফ 2 দ্বারা তাদের 'স্মুথেন' করি। এর পরে তারা 8 টি সম্ভাব্য দিকটিতে 'বৃত্তাকার' হয়ে যায়।

* আমি নির্দিষ্ট পিক্সেলের আউটপুটকে কীভাবে স্কেল করতে পারি তার কোনও উপায় আমি জানি না, সুতরাং এটি ম্যানুয়ালি করতে হবে = /

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

ইনপুট:

n = 1

কোড:

rand('seed',0);
for x=1:n
    b = exp(1i*rand(8)*2*pi);
end
for k=1:12
    b = conv2(b,[1,2,1]'*[1,2,1],'same');b=b./abs(b);
end
c = exp(1i*round(angle(b)*4/pi)*pi/4)/3;
quiver(real(c),imag(c));

ভেক্টর ক্ষেত্র


"নির্দিষ্ট সংখ্যক পিক্সেলের আউটপুট স্কেল করুন", তীর স্কেল করুন বা চিত্রটি কী বোঝাতে চান?
krs013

@ krs013 মানে পুরো চিত্রটি স্কেলিং করা, এটি কীভাবে করা যায় তা আমি এখনও খুঁজে পাইনি এটির উদাহরণস্বরূপ যথাযথ 8 * 16 পিক্সেলের প্রস্থ রয়েছে।
flawr

15

গণিত, 116 115 বাইট tes

f@n_:=Graphics[Array[(d=n~BitGet~#;Arrow@{1+{w=15#~Mod~8+6.5d,h=15Floor[#/8]},14+{w-13d,h}})&,64,0],ImageSize->120]

আমি মনে করি একটি ভাল ঘোড়া কখনই তার চেয়ে বেশি লাফ দেয় না। 2920 বিভিন্ন গ্রিড কেবলমাত্র দুটি দিক ব্যবহার করে খুব সহজেই অর্জন করা হয় (আমি ব্যবহার করছি Nএবং NE) যা ধারাবাহিকতা নিয়মকে তুচ্ছ করে তোলে। আমি কেবল বিটের উপর ভিত্তি করে N এবং NE এর মধ্যে নির্বাচন করছি n, সুতরাং এটি আসলে 2 64 বিভিন্ন বায়ু মানচিত্র তৈরি করবে ।

এখানে প্রথম দশটি মানচিত্র রয়েছে:

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

পিএস: আমার আসল ধারণাটি ছিল 4 টি কোণার জন্য সমস্ত 8 4 টি সংমিশ্রণ এবং বাকী গ্রিডের "রৈখিকভাবে" অন্তরোলন গণনা করা । এটি সম্ভবত উত্তম মানচিত্রের ফলাফল হতে পারে, তবে এটি সর্বোপরি কোড গল্ফ, তাই আমি ন্যূনতম প্রয়োজনীয়তাগুলি কী পূরণ করে তা নিয়ে গিয়েছিলাম।


আমার 2 ^ 64 + 1 গ্রিডের জন্য জিজ্ঞাসা করা উচিত ছিল। :)
jsh

@jsh আমি দুটি সংলগ্ন দিকের জন্য 8 টি পছন্দ পেয়েছি। এটি কোডটি কিছুটা দীর্ঘতর করে দিত, তবে এটি এখনও একইভাবে সহজ ছিল, এবং 2 ^ 67 টি স্বতন্ত্র গ্রিডের জন্য অনুমতি দিত। তবে চিন্তা করবেন না, আমি মনে করি এটি এখনও একটি দুর্দান্ত কোড গল্ফ - গ্রাফিকাল আউটপুট গল্ফ করা শক্ত (প্রয়োজনীয় উদ্দেশ্যমূলকতার কারণে) এবং আমি মনে করি আপনি এটির সাথে মোটামুটি ভাল কাজ করেছেন।
মার্টিন এন্ডার

আমি দ্বিখণ্ডনের ধারণাটি পছন্দ করি তবে আপনি যখন চারটি কোণার প্রতিটি কেন্দ্রে নির্দেশ করবেন তখন কীভাবে সংক্ষিপ্ত বিবরণ করবেন?
flawr

4
@ মার্টিনবাটনার: যদিও এই প্রযুক্তিগতভাবে এই অনুমানগুলি পূরণ করে, এটি মান্যাকে বিশ্বাসযোগ্য করে তোলার জন্য চ্যালেঞ্জের চেতনার পরিপন্থী বলে মনে হচ্ছে না। শুধু একটি পর্যবেক্ষণ।
COTO

2
@ কোটো খুব সত্য, তবে এটির গল্ফ কোডও এবং জনপ্রিয়তার প্রতিযোগিতা নয় এবং "বিশ্বাসযোগ্যতা" কোনও উদ্দেশ্য বৈধতার মানদণ্ড নয়।
মার্টিন এন্ডার

5

পিএইচপি 5.4, 549 বাইট

তীরগুলি গ্রাফিক্স হিসাবে সংজ্ঞায়িত করার প্রয়োজনে কিছুটা বাধা, এখানে আমার পিএইচপি কোডটি রয়েছে:

<? $i=$argv[1];$p="R0lGODdhBQAFAIAAAP///wAAACwAAAAABQAFAAAC";$a=[$p."BwRiicGsDwoAOw",$p."CEQeoLfmlhQoADs",$p."CARiF8hnmGABADs",$p."CIwDBouYvGIoADs",$p."BwRil8Gs+QoAOw",$p."CIQRYcqrnkABADs",$p."CARihscYn1YBADs",$p."CAx+Bmq6HWIBADs"];$c=[$i&7,$i>>3&7,$i>>6&7,$i>>9];$m=imagecreate(120,120);imagecolorallocate($m,255,255,255);foreach($a as$_)$z[]=imagecreatefromstring(base64_decode($_));for($y=0;$y<8;$y++)for($x=0;$x<8;$x++)imagecopy($m,$z[($c[0]*(7-$x)*(7-$y)+$c[1]*$x*(7-$y)+$c[2]*(7-$x)*$y+$c[3]*$x*$y)/49%8],$x*15+5,$y*15+5,0,0,5,5);imagepng($m);

কমান্ড লাইন থেকে তার যুক্তি গ্রহণ করে যেমন:

php windmap.php 123

এই সমাধানটি চারটি কোণার সংজ্ঞা হিসাবে ইনপুটটি ব্যবহার করবে। মানচিত্রের বাকী অংশগুলি মানগুলির মধ্যে সহজেই বিক্ষিপ্ত হবে। এটি 0 থেকে 4095 পর্যন্ত সমস্ত মানের জন্য ফলাফল সংজ্ঞায়িত করেছে, জাল পূর্বাভাসের 11,55 মিলিয়ন ডলার, যা আবহাওয়ার সফ্টওয়্যারটি ঠিক করার জন্য পর্যাপ্ত সময়ের চেয়ে বেশি হওয়া উচিত!

সমস্ত ফলাফলের একটি জিআইএফ এখানে রয়েছে:

গরম বাতাস!

এবং প্রতিটি মানচিত্রযুক্ত একটি জিপ এখানে ডাউনলোড করা যায়

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

Unsquishified:

<?php
$input = $argv[1];
$prefix = "R0lGODdhBQAFAIAAAP///wAAACwAAAAABQAFAAAC";
$arrows = [
    $prefix."BwRiicGsDwoAOw", // E
    $prefix."CEQeoLfmlhQoADs", // NE
    $prefix."CARiF8hnmGABADs", // N
    $prefix."CIwDBouYvGIoADs", // NW
    $prefix."BwRil8Gs+QoAOw", // W
    $prefix."CIQRYcqrnkABADs", // SW
    $prefix."CARihscYn1YBADs", // S
    $prefix."CAx+Bmq6HWIBADs", // SE
];
$points = [
    $input & 7,
    $input >> 3 & 7,
    $input >> 6 & 7,
    $input >> 9 // input beyond 0o7777 (4095) will be undefined due to lack of & 7 here
];
$img = imagecreate(120,120);
imagecolorallocate($img,255,255,255);
$arrowimgs = [];
foreach($arrows as $src) {
    $arrowimgs[] = imagecreatefromstring(base64_decode($src));
}
for($y=0; $y<8; $y++) {
    for($x=0; $x<8; $x++) {
        $point = (
              $points[0] * (7-$x)/7 * (7-$y)/7
            + $points[1] *   $x  /7 * (7-$y)/7
            + $points[2] * (7-$x)/7 *   $y  /7
            + $points[3] *   $x  /7 *   $y  /7
        ) % 8;
        imagecopy($img,$arrowimgs[$point],$x*15+5,$y*15+5,0,0,5,5);
    }
}
imagepng($img,"out.png");

কীভাবে দোলক কাজ করে?
flawr

@ ফ্লোয়ার এটি প্রতিটি কোণে দূরত্বের একটি আনুমানিক পরিমাণ নেয় এবং সেই কোণার মানটি বর্তমান পয়েন্টের মানকে কতটা প্রভাবিত করতে পারে তার ওজন হিসাবে এটি ব্যবহার করে।
নীট দ্য ডার্ক আবসোল

তবে এক্ষেত্রে প্রতিটি তীরটি ফ্রেম 1647 এর মাঝখানে নির্দেশ করবে? tinyurl.com/o7z9grl
flawr

1
@ ফ্লোরার নীচের বিপরীতে,, ৫, ৪, ৩, ২ ... সমস্ত মান দিয়ে through (এসই) থেকে ১ (এনই) তে কীভাবে "ইন্টারপোলটিং" করছে তা দেখতে বাম দিকের কলামটি নীচে দেখুন " 0, 1 "যা আপনি আশা করতে পারেন। অ্যালগরিদম এর মতো ঘূর্ণনের সাথে বিভক্ত করতে যথেষ্ট পরিশীলিত নয়।
নেট দ্য ডার্ক অ্যাবসোল

আহ্ কীভাবে আপনি এটি সমাধান করেছেন! এটি সত্যিই দুর্দান্ত, যেহেতু '7,0,1' এর সাথে মিলিত হওয়ার ফলে তীর গ্রাফিক্সের জন্য একটি অবৈধ তীর ক্ষেত্র =) +1 হত!
flawr
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.