আবহাওয়ার পূর্বাভাস


13

আগামী 7 দিনের আবহাওয়ার পূর্বাভাস দেওয়ার জন্য সংক্ষিপ্ততম প্রোগ্রামটি লিখুন

ইনপুট (স্টিডিন থেকে) সপ্তাহের দিন এবং মরসুম

আউটপুট (স্টাডাউট থেকে) সাত লাইনের সপ্তাহের দিন এবং সেন্টিগ্রেডে তাপমাত্রা

সপ্তাহের দিনগুলি ইনপুট সপ্তাহের দিন শুরু হয়

তাপমাত্রাটি seasonতুর উপর নির্ভর করে পরিসরের সাথে এলোমেলো সংখ্যা

বসন্ত 10 - 30 ডিগ্রি  
গ্রীষ্ম 20 - 40 ডিগ্রি  
শরৎ 5 - 25 ডিগ্রি (শরতের শরতের একটি প্রতিশব্দ)
শীতকালীন -5 - 15 ডিগ্রি

নমুনা ইনপুট

Thursday Winter

নমুনা আউটপুট

বৃহস্পতিবার -১
শুক্রবার ৩
শনিবার ৮
রবিবার।
সোমবার 10
মঙ্গলবার 10
বুধবার -১

আপনার প্রোগ্রামটি প্রতিবার একই ইনপুট দিয়ে চালিত হওয়ার সময় অভিন্ন আউটপুট থাকা উচিত নয়


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

1
আমি সমস্যাগুলি ট্যাগ করার বিষয়ে ভাবছিলাম এবং এটি পূর্বাভাসের কোনও অনুকরণের পরামর্শ দিবে ।
ডিএমকেই --- প্রাক্তন-মডারেটর বিড়ালছানা

@ হালভাবো, আমি প্রশ্নের অতিরিক্ত কোনও শর্ত যুক্ত করার ইচ্ছা করি না, এটিই হল :)
gnibbler

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

এই একটা রসিকতা?
যান্ত্রিক শামুক

উত্তর:


8

রুবি 1.8, 95 টি অক্ষর

#!ruby -nrdate
7.times{|i|puts (Date.parse($_)+i).strftime"%A #{"\023\004\016\016\035"[$_[-3]%5]-9+rand(21)}"}

স্ট্রিংয়ের ভিতরে থাকা অক্ষরটিকে তারা যে চরিত্রের প্রতিনিধিত্ব করে তার দ্বারা প্রতিস্থাপন করা উচিত।

  • ডেটা প্যাক করার জন্য একটি ছোট উপায় খুঁজে পেয়েছেন, রুবি ১.৯ এখন 4 টি অক্ষর দীর্ঘ হবে ( .ordপরে যুক্ত করুন $_[-3])।
  • 112 -> 105 জোয়ের ইনপুট বিভক্ত না করার ধারণাটি চুরি করে।
  • 105 -> 101. নোট করুন যে প্রথম লাইনটি প্রকৃতপক্ষে রুবি ইন্টারপ্রেটার নিজেই বিশ্লেষণ করেছেন, সুতরাং সমাধানটি চালানোর সময়ও এটি কাজ করে echo "Thursday Winter" | ruby1.8 forecast.rb
  • 101 -> 96. অ্যারের পরিবর্তে কেবলমাত্র স্ট্রিংটিতে তাপমাত্রা এম্বেড করার জন্য জোয়ের ধারণাটি আবার চুরি করেছে।
  • ওফস, সবেমাত্র লক্ষ্য করেছেন এটি র্যান্ড (21) হওয়া উচিত, র্যান্ড (20) নয়।
  • 96 -> 95. অপ্রয়োজনীয় সাদা স্থান সরানো।

4

উইন্ডোজ পাওয়ারশেল, 104

[dayofweek]$d,$s=-split$input
(0..6*2)[+$d..(6+$d)]|%{''+[dayofweek]$_,((random 20)-5+'☼

↓'[$s[3]%5])}

সেখানে স্ট্রিংগুলি কিছুটা আইকিযুক্ত, তাই আপনার সুবিধার জন্য একটি হেক্স ভিউ:

000: 5B 64 61 79 6F 66 77 65 │ 65 6B 5D 24 64 2C 24 73  [dayofweek]$d,$s
010: 3D 2D 73 70 6C 69 74 24 │ 69 6E 70 75 74 0A 28 30  =-split$input◙(0
020: 2E 2E 36 2A 32 29 5B 2B │ 24 64 2E 2E 28 36 2B 24  ..6*2)[+$d..(6+$
030: 64 29 5D 7C 25 7B 27 27 │ 2B 5B 64 61 79 6F 66 77  d)]|%{''+[dayofw
040: 65 65 6B 5D 24 5F 2C 28 │ 28 72 61 6E 64 6F 6D 20  eek]$_,((random
050: 32 30 29 2D 35 2B 27 0F │ 00 0A 0A 19 27 5B 24 73  20)-5+'☼ ◙◙↓'[$s
060: 5B 33 5D 25 35 5D 29 7D │                          [3]%5])}

ইতিহাস:

  • 2011-02-04 00:16 (179) - প্রথম, সোজা প্রচেষ্টা।
  • 2011-02-04 00:20 (155) - আপনি ব্যক্তিগত অক্ষর এবং একটি রেজেক্স ম্যাচ দিয়ে দূরে যেতে পারেন কেন পুরো মরসুমের নাম মেলে? অবৈধ ইনপুট নিয়ে সুন্দরভাবে আচরণ করবেন না তবে গল্ফিংয়ের ক্ষেত্রে এটি সর্বদা প্রত্যাশিত।
  • 2011-02-06 13:12 (149) - $tযা কেবলমাত্র লম্বা জিনিসগুলি থেকে মুক্তি পেয়েছে ।
  • 2011-02-10 22:50 (142) - দিনের নাম প্রজন্মকে সহজতর করা হয়েছে। আমি ঠিক এক সপ্তাহে দু'বার উত্পন্ন করি, সঠিক অবস্থানে সূচক এবং সাতটি আইটেম টান।
  • 2011-02-10 22:52 (138) - প্রাথমিক কাস্টটি ঘোষণায় সরানো $dকয়েক বাইট সাশ্রয় করে - এবং পরিত্রাণ পায় $x
  • 2011-02-10 23:03 (135) - অ্যারের কাস্ট এড়াতে পাইপলাইনের আরও নিচে কাস্ট সরানো (যা অতিরিক্ত প্রয়োজন [])। স্ট্রিংয়ে অবজেক্টের একটি তালিকা কাস্টিংয়ের ক্ষেত্রে আউটপুটও পরিবর্তিত হয়েছে যা স্পষ্টত কোনও স্থান ( $OFSডিফল্ট) সন্নিবেশ করে ।
  • 2011-02-11 20:54 (132) - চরিত্রের কোডগুলির একটি তালিকা দ্বারা রেজেক্স ম্যাচটি প্রতিস্থাপন এবং মরসুমের তৃতীয় চরিত্রের সাথে একটি হ্যাশম্যাপে ইনডেক্সিং।
  • 2011-02-11 21:00 (122) - একটি অ্যারে দ্বারা হ্যাশ মানচিত্র প্রতিস্থাপন।
  • 2011-02-11 21:12 (117) - আরও অ্যারে-ওয়াই গুড। এবং বুট খাটো। মডুলো 8 অ্যারেটিকে কিছুটা ছোট করে তোলে।
  • 2011-02-11 21:16 (116) - সংক্ষিপ্ততর 0,0,2দ্বারা প্রতিস্থাপনের জন্য পাঁচটির একটি ফ্যাক্টর বের করা 0..2
  • 2011-02-11 21:22 (114) - কিছুটা আলাদা গণনা ব্যবহৃত হয়েছে। এটি এখনও শরতের মানচিত্র এবং একই সূচীতে পড়ে এবং কেবল পাঁচটি মান প্রয়োজনের সুবিধা রয়েছে। খুব সুন্দর. স্ট্রিংয়ের নেতিবাচক সূচকটিও খুব ভাল খেলে »পড়া the বাকীগুলির চেয়ে কম হয়।
  • 2011-02-11 21:45 (112) - মরসুমের তাপমাত্রার পরিসর যা দুটি বাইটের চেয়ে কম হয় তা নির্ধারণ করার চুরি ভেন্তোরোর উপায়।
  • ২০১১-০২-১২ 03:16 (105) - ভিন্ন প্রয়াসের পরে 105-এ ফিরে এসে কেবল একটি লাইন মুদ্রণ করেছে।
  • 2011-02-12 13:23 (104) - আমি আবার বিভক্ত হওয়ার পর থেকে মরসুমে ইতিবাচক সূচক ব্যবহার করে আবার 104 এ ফিরে যান।

টেস্ট স্ক্রিপ্ট (যতক্ষণ না এটি ফলাফল কিছুতেই আউটপুট দেয় না):

foreach ($d in 'Monday','Tuesday','Wednesday','Thursday','Friday','Saturday','Sunday') {
    foreach ($s in 'Winter','Summer','Spring','Autumn','Fall') {
        $o=-split("$d $s"|./weather_foo.ps1)
        if ($o.Count -ne 14) { "Wrong output length" }
        $days = $o -notmatch '\d'
        $temps = $o -match '\d'
        if ($days[0]-ne$d) { "Found "+ $days[0] + " instead of $d" }
        $m = $temps | measure -min -max
        switch ($s) {
            'Summer'{ $min = 20 }
            'Spring'{ $min = 10 }
            'Fall'  { $min = 5  }
            'Autumn'{ $min = 5  }
            'Winter'{ $min = -5 }
        }

        if ($m.Minimum -lt $min) { "Minimum temperature $($m.Minimum) didn't match for $s" }
        if ($m.Maximum -gt $min + 20) { "Maximum temperature $($m.Maximum) didn't match for $s" }
    }
}

3

গল্ফস্ক্রিপ্ট - 110 টি অক্ষর

' ':^/){*}*43845%7&5*:|;){*}*333121%7&:$;7,{($+'Sun Mon Tues Wednes Thurs Fri Satur'^/.+='day '+20rand|+5-+n}/
  • সমস্ত তাপমাত্রা ব্যাপ্তি, .তু সম্পূর্ণ সমর্থন এবং "শরৎ" এর প্রতিশব্দ হিসাবে "ফলস" সমর্থন করে support
  • আমি মনে করি উন্নতির জন্য কিছু কক্ষ রয়েছে, তবে আমার বর্তমান গল্ফস্ক্রিপ্ট জ্ঞান এখনও সীমাবদ্ধ।

এখানে পরীক্ষাগুলি রয়েছে, এলোমেলোতা নিশ্চিত করতে 2 জন পাস করে

$ echo -n Thursday Spring | gs codegolf-404.gs
Thursday 23
Friday 28
Saturday 25
Sunday 22
Monday 19
Tuesday 14
Wednesday 25

$ echo -n Thursday Spring | gs codegolf-404.gs
Thursday 27
Friday 12
Saturday 26
Sunday 12
Monday 27
Tuesday 17
Wednesday 21


$ echo -n Friday Autumn | gs codegolf-404.gs
Friday 10
Saturday 5
Sunday 17
Monday 24
Tuesday 24
Wednesday 12
Thursday 18

$ echo -n Friday Autumn | gs codegolf-404.gs
Friday 13
Saturday 7
Sunday 14
Monday 6
Tuesday 14
Wednesday 21
Thursday 5


$ echo -n Sunday Summer | gs codegolf-404.gs
Sunday 39
Monday 31
Tuesday 35
Wednesday 34
Thursday 21
Friday 36
Saturday 28

$ echo -n Sunday Summer | gs codegolf-404.gs
Sunday 34
Monday 20
Tuesday 30
Wednesday 39
Thursday 30
Friday 31
Saturday 37


$ echo -n Monday Fall | gs codegolf-404.gs
Monday 6
Tuesday 7
Wednesday 18
Thursday 13
Friday 7
Saturday 5
Sunday 14

$ echo -n Monday Fall | gs codegolf-404.gs
Monday 16
Tuesday 22
Wednesday 19
Thursday 23
Friday 21
Saturday 9
Sunday 17


$ echo -n Saturday Winter | gs codegolf-404.gs
Saturday 0
Sunday -5
Monday 10
Tuesday -3
Wednesday -5
Thursday 13
Friday -1

$ echo -n Saturday Winter | gs codegolf-404.gs
Saturday -4
Sunday 13
Monday 11
Tuesday 0
Wednesday 0
Thursday -5
Friday 9


$ echo -n Tuesday Summer | gs codegolf-404.gs
Tuesday 38
Wednesday 29
Thursday 25
Friday 29
Saturday 34
Sunday 20
Monday 39

$ echo -n Tuesday Summer | gs codegolf-404.gs
Tuesday 33
Wednesday 26
Thursday 31
Friday 37
Saturday 39
Sunday 24
Monday 28


$ echo -n Wednesday Winter | gs codegolf-404.gs
W    ednesday 7
Thursday 12
Friday 0
Saturday -3
Sunday 11
Monday 14
Tuesday 8

$ echo -n Wednesday Winter | gs codegolf-404.gs
Wednesday 0
Thursday -1
Friday 7
Saturday 12
Sunday -5
Monday -3
Tuesday 2

2

ডি: 436 অক্ষর

import std.algorithm, std.random, std.range, std.stdio, std.typecons;

void main(string[] g)
{
    alias canFind w;
    alias tuple t;

    auto s = g[2];
    auto e = w(s, "g") ? t(10, 30) : w(s, "Su") ? t(20, 40) : w(s, "W") ? t(-5, 15) : t(5, 25) ;
    auto r = rndGen();

    int v()
    {
        r.popFront();
        return e[0] + cast(int)(r.front % (e[1] - e[0]));
    }

    auto x = findSplitBefore(["Sunday", "Monday", "Tuesday", "Wednesday", "Thursday", "Friday", "Saturday"], [g[1]]);

    foreach(q; chain(x[1], x[0]))
        writefln("%s %s", q, v());
}

এক্সটেনারেস হোয়াইটস্পেস সহ সংস্করণ সরানো হয়েছে (এটি কীভাবে এটি 436 টি অক্ষরে আসে):

import std.algorithm,std.random,std.range,std.stdio,std.typecons;void main(string[] g){alias canFind w;alias tuple t;auto s=g[2];auto e=w(s,"g")?t(10,30):w(s,"Su")?t(20,40):w(s,"W")?t(-5,15):t(5,25);auto r=rndGen();int v(){r.popFront();return e[0]+cast(int)(r.front%(e[1]-e[0]));}auto x=findSplitBefore(["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"],[g[1]]);foreach(q;chain(x[1],x[0]))writefln("%s %s",q,v());}

অবশ্যই, আপনি কেবলমাত্র সমস্ত নিউলাইন এবং ইনডেন্টেশন এবং অন্যান্য স্থানগুলি সরিয়ে দিয়ে অনেকগুলি অক্ষর সংরক্ষণ করতে পারেন? ;-)
ক্রিস জেস্টার-ইয়ং

অতিরিক্ত স্বেচ্ছাসেবী সরানো সমস্তটির সাথে আমি অক্ষরগুলি গণনা করেছি। এটি পড়তে কেবল এত কঠিন যে এটি সেভাবে পোস্ট করা নির্বোধ বলে মনে হয়েছিল।
জোনাথন এম ডেভিস

2

পিএইচপি, 353 319 305 304 288 টি অক্ষর

<?$i=split(" ",fgets(STDIN));$d=$i[0][0].$i[0][1];$s=$i[1][2];$r=json_decode('{"i":[10,30],"m":[20,40],"t":[5,25],"n":[-5,15]}',true);$n=array(Sun,Mon,Tues,Wednes,Thurs,Fri,Satur);$z=$x=0;while($z<7)if($n[++$x][0].$n[$x][1]==$d||$z){$z++;echo$n[$x%7]."day ".rand($r[$s][0],$r[$s][1])."
";}

Ungolfed

<?php
    $input = fgets(STDIN);
    $info = split(" ", $input);
    $day = substr($info[0], 0, 2);
    $season = $info[1][2];
    $range[i][] = 10;
    $range[i][] = 30;
    $range[m][] = 20;
    $range[m][] = 40;
    $range[t][] = 5;
    $range[t][] = 25;
    $range[n][] = -5;
    $range[n][] = 15;
    $days[0] = "Sun";
    $days[1] = "Mon";
    $days[2] = "Tues";
    $days[3] = "Wednes";
    $days[4] = "Thurs";
    $days[5] = "Fri";
    $days[6] = "Satur";

    $i = $d = 0;

    while($i<7)
        if(substr($days[++$d], 0, 2)==$day||$i){
            $i++;
            echo $days[$d%7]."day ".rand($range[$season][0], $range[$season][1])."\n";
        }
?>

305 -> 304: নতুন লাইন
304 -> 288 পরিবর্তন করেছেন: পিএইচপি অ্যারেগুলির পরিবর্তে জেএসএন অ্যারে ব্যবহার করে


1
কার্য বিবরণীতে উল্লিখিত হিসাবে Fallপ্রতিশব্দ হিসাবে গ্রহণ করে না Autumn
জোয়

1

সি # 350 অক্ষর

এর চেয়ে আরও কার্যকর উপায় থাকতে হবে। তবে আমি এ পর্যন্ত যা পেয়েছি তা এখানে:

using System;class P{static void Main(string[]x){var r=new Random();var s=x[1][2];int l=s=='r'?10:s=='m'?20:s=='n'?-5:5,u=s=='r'?31:s=='m'?41:s=='n'?16:26,i=0,z=(int)Enum.Parse(typeof(DayOfWeek),x[0]);for(;i<7;i++){var d=z<1?"Sun":z<2?"Mon":z<3?"Tues":z<4?"Wednes":z<5?"Thurs":z<6?"Fri":"Satur";Console.WriteLine(d+"day "+r.Next(l,u));z=z>5?0:z+1;}}}

অথবা আরও কয়েকটি পঠনযোগ্য ফর্ম্যাটে কয়েকটি মন্তব্য সহ:

using System;
class P 
{
    static void Main(string[] x) 
    {
        var r = new Random();
        var s = x[1][2]; //3rd char of season, first where all have unique letter

   // lower & upper limits for random, based on season
        int l = s == 'r' ? 10 : s == 'm' ? 20 : s == 'n' ? -5 : 5, 
            u = s == 'r' ? 31 : s == 'm' ? 41 : s == 'n' ? 16 : 26, 
            i = 0,
   // this line makes me cringe, but converting to an int and back seems
   // the easiest way to loop through days
            z = (int)Enum.Parse(typeof(DayOfWeek), x[0]); 

        for (; i < 7; i++) 
        { 
            var d = z < 1 ? "Sun" : z < 2 ? "Mon" : z < 3 ? "Tues" : z < 4 ? "Wednes" : z < 5 ? "Thurs" : z < 6 ? "Fri" : "Satur";
            Console.WriteLine(d + "day " + r.Next(l, u)); 
            z = z > 5 ? 0 : z + 1; // increments day, resets to 0 after saturday
        }
    }
}

সি # সাধারণত এটি পেতে পারে এমন সমস্ত সহায়তা প্রয়োজন, যাতে আপনি লুপের জন্য আপনার সামগ্রীগুলি এটিকে (আমার মনে হয়) দিয়ে প্রতিস্থাপন করতে পারেন: কনসোল.উইরটলাইন (এনাম.গেটনাম (টাইপফ (ডেওফিউইক)), জেড ++% 7) + "+ আর। পরবর্তী (l, u));
স্টিভ

1

পিএইচপি - 150 টি অক্ষর

<?$t=array("m"=>15,"r"=>5,"n"=>-10);for($a=split(" ",fgets(STDIN));$i<7;$i++)echo date("l ",strtotime($a[0]."+$i day")),rand(5,25)+$t[$a[1][2]],"\n";

আমি অনুভব করেছি যে বর্তমানের চ্যালেঞ্জের শর্তগুলি সম্পূর্ণরূপে সন্তুষ্ট না করার পরে আমি আমার নিজের পিএইচপি সমাধানটি লিখব।

এটি দিনটি বিশ্লেষণ করতে স্ট্রোটোটাইমের উপর নির্ভর করে এবং এটি আবার প্রতিধ্বনি করার তারিখ। Theতু নির্ধারণ করতে, এটি মরসুমের তৃতীয় অক্ষরটি অনুসরণ করে, যা অনন্য (প্রদত্ত)।

সঠিকভাবে চালানোর জন্য, এটি অক্ষম করার জন্য নোটিশ এবং সংক্ষিপ্ত ট্যাগগুলি সক্ষম করা দরকার।


0

জাভাস্ক্রিপ্ট - 251 অক্ষর

d=['Mon','Tues','Wednes','Thurs','Fri','Satur','Sun'],g=function(c){return Math.random()*21+c|0},p=prompt();for(i=0,j=7,t=true;i<j;i++){t=t&&p.indexOf(d[i])!=0;t?j++:console.log(d[i>6?i-7:i]+'day '+g(/mm/.test(p)?20:/g/.test(p)?10:/te/.test(p)?-5:5))}

দুর্ভাগ্যক্রমে স্ক্রিপ্ট স্টিডিন / স্টডআউট প্রয়োজনীয়তা পূরণ করে না তবে এটি শরৎ শব্দের প্রতিশব্দ হিসাবে ফললকে গ্রহণ করে।

Whitespaced:

  d = [
    'Mon'
  , 'Tues'
  , 'Wednes'
  , 'Thurs'
  , 'Fri'
  , 'Satur'
  , 'Sun'
  ]
, g = function(c) {
    return Math.random()*21+c|0
  }
, p = prompt()

  ;

  for(i = 0, j = 7, t = true; i < j; i++) {
    t = t && p.indexOf(d[i]) != 0; 
    t ? 
      j++ : 
      console.log(d[i > 6 ? i - 7 : i] + 'day ' + g(/mm/.test(p) ? 
                                                      20 : 
                                                    /g/.test(p) ? 
                                                      10 : 
                                                    /te/.test(p) ? 
                                                      -5 : 
                                                      5
                                                    )
                  )
  }

0

গণিত 218

s_~g~d_ := 
Grid@RotateLeft[r = Thread@{DateString[{2012, 1, #}, {"DayName"}] & /@ Range@7, 
  RandomInteger[Cases[{{"Spring", {10, 30}}, {"Summer", {20, 40}}, {"Autumn", {5, 25}}, 
  {"Winter", {-5, 15}}}, {s, _}][[1, 2]], 7]}, Position[r, d][[1, 1]] - 1]

ব্যবহার

g["Winter", "Sunday"]

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


0

পাইথন 2, 220 টি অক্ষর

কিছুটা বড় তবে (প্রায়) পঠনযোগ্য।

import random
c,e=raw_input().split()
a=[d+'day'for d in'Mon Tues Wednes Thurs Fri Satur Sun'.split()]*2
x='rmtn'.index(e[2])*2
g=(10,30,20,40,5,25,-5,15)[x:x+2]
f=a.index(c)
for b in a[f:f+7]:
 print b,random.randint(*g)

আউটপুট

# echo "Monday Summer" | python forecast.py 
Monday 33
Tuesday 29
Wednesday 33
Thursday 28
Friday 25
Saturday 21
Sunday 30
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.