বৃষ্টি হচ্ছে? আমি বলতে পারি না


10

এগুলি বৃষ্টিপাতগুলি:

! | . " :

এগুলি মেঘের কণা:

( ) _ @ $ &

বৃষ্টি হচ্ছে কি না তা পাঠ্যের একটি ব্লক দেওয়ার সময় আমি আপনাকে যাচাই করতে চাই। বৃষ্টি হচ্ছে যদি, প্রতিটি বৃষ্টিপাতের জন্য, এর উপরে কোথাও মেঘের কণা থাকে। প্রতিটি বৃষ্টিপাতের জন্য অবশ্যই একটি মেঘের কণা থাকতে হবে। আপনার সিদ্ধান্তকে বোঝায় একটি সত্যবাদী বা মিথ্যা মান আউটপুট করুন ।

বৈধ উদাহরণ

(@@@@@@)
 ( $ &  )
Q   (  )
..  .  !
 : .
  |"   !
    .

()()()
......

@_$ &
errrr
h_r-5
.:. .
 "

অবৈধ উদাহরণ

!
()

$$$$$
(   )
:::::
.....

এটি একটি তাই অক্ষরের মধ্যে সংক্ষিপ্ততম প্রোগ্রামটি জিততে পারে।


2
"প্রতিটি বৃষ্টিপাতের জন্য অবশ্যই একটি মেঘের কণা থাকতে হবে"
নীল

@ ফেয়ারসাম দ্বিতীয় অবৈধ উদাহরণটি আপনি অনুসন্ধান করছেন এমন উদাহরণ is
সীড্রাস

@ ফেয়ারসাম আমি দেখছি;)
সমুদ্র rus

আমরা কি ধরে নিতে পারি যে সারিগুলি একটি আয়তক্ষেত্র গঠনের জন্য স্পেস দিয়ে প্যাড করেছে?
feersum

3
@ জেরেজেস, না: কমপক্ষে একটি
এমএস 210

উত্তর:


4

এপিএল (30)

{∧/∊≤/+⍀¨⍵∘∊¨'!|.":' '()_@$&'}

এটি এমন একটি ফাংশন যা অক্ষরের ম্যাট্রিক্সকে ইনপুট হিসাবে গ্রহণ করে এবং একটি বুলিয়ান আউটপুট দেয়।

টেস্ট:

      ex1 ex2 ex3 ex4 ex5
┌─────────┬──────┬─────┬──┬─────┐
│(@@@@@@) │()()()│@_$ &│! │$$$$$│
│ ( $ &  )│......│errrr│()│(   )│
│Q   (  ) │      │h_r-5│  │:::::│
│..  .  ! │      │.:. .│  │.....│
│ : .     │      │ "   │  │     │
│  |"   ! │      │     │  │     │
│    .    │      │     │  │     │
└─────────┴──────┴─────┴──┴─────┘
      {∧/∊≤/+⍀¨⍵∘∊¨'!|.":' '()_@$&'}¨ex1 ex2 ex3 ex4 ex5
1 1 1 0 0

ব্যাখ্যা:

  • ⍵∘∊¨'!|.":' '()_@$&': অক্ষরের দুটি সেট (বৃষ্টি এবং মেঘ) এবং character এর প্রতিটি অক্ষরের জন্য দেখুন অক্ষরটি সেটের কোনও সদস্য কিনা।
  • +⍀¨: প্রতিটি কলাম এবং প্রতিটি সেটের জন্য চলমান যোগফল পান
  • ≤/: ⍵ এর প্রতিটি পজিশনের জন্য, পরীক্ষা করুন যে বৃষ্টিপাতের পরিমাণ চলমান যোগফলে মেঘের কণার পরিমাণের চেয়ে বেশি না
  • ∧/∊: ফলাফলের সমস্ত উপাদানগুলির বুলিয়ান এবং ফেরত দিন

5

সি ++ 11, 186 184 বাইট

#include<map>
int i,c;int main(){std::map<int,int>p;while(~(c=getchar())){for(int m:{40,41,95,64,36,38})p[i]+=c==m;for(int m:{33,124,46,34,58})if(c==m&&!p[i]--)return 1;i=c-10?i+1:0;}}

Ungolfed

#include <map>
int i, c;
int main()
{
    std::map<int, int> p;
    while (~(c = getchar()))
    {
//        for (int m : { '(', ')', '_', '@', '$', '&'})
        for (int m : { 40, 41, 95, 64, 36, 38})
            p[i] += c == m;
//        for (int m : { '!', '|', '.', '"', ':'})
        for (int m : { 33, 124, 46, 34, 58})
            if (c == m && !p[i]--)
                return 1;
        i = c - '\n' ? i + 1 : 0;
    }
    return 0;
}

বেসিক পদ্ধতির, এক সারিতে মেঘের কণার অবস্থান সংরক্ষণ করে এবং বৃষ্টির কণার মুখোমুখি হলে এটি মেঘের কণা উপরে রয়েছে কিনা তা পরীক্ষা করে এবং সেই কলামের মেঘের কণার পাল্টা হ্রাস পেয়েছে। প্রোগ্রামটি বৈধ এবং অন্যথায় 1 হলে 0 প্রদান করে।


আপনি কি c-m?0:p[i]++সাথে প্রতিস্থাপন করতে পারবেন না p[i]+=c==m? অথবা এটি আর C ++ 11 এ কাজ করে না?
মেরিনাস

@মারিনাস সম্ভবত হ্যাঁ
জেরেজেস

4

শামুক , 125

{t.{t(\(|\)|\_|\@|\$|\&)=(u.,~)d!(.,~)t.!(.,~},!{t(\!|\||\.|\"|\:)ud!(.,~}t(\(|\)|\_|\@|\$|\&)!(d.,~)u.,~},!{t(\!|\||\.|\"|\:

প্রোগ্রামটি গ্রিডের ক্ষেত্রফলকে আউটপুট করে (বা তার অঞ্চলটি 0 হলে 1) বৃষ্টি হচ্ছে যদি; অন্যথায় 0. যদি কেবল আমি রেজেক্স-স্টাইলের চরিত্রের ক্লাসগুলি প্রয়োগ করেছিলাম।

অবহেলিত সংস্করণ এতে সমস্ত জিব্বারিশ লেখার পরিবর্তে মেঘ বা বৃষ্টিপাতের জন্য জাল নির্দেশাবলী রয়েছে। \whatever( .বাস্তব প্রোগ্রামের সাথে প্রতিস্থাপিত ) এর অর্থ এমন একটি জিনিস যা বৃষ্টিপাত হওয়া উচিত, তবে আসলে কিছু হতে পারে কারণ আমরা কোনও মেঘের সাথে একটি রেইনড্রপের সাথে মেলে কিনা তাতে কিছু আসে যায় না।

{
    t \whatever   ,, Pick a drop in a new column
    {
        t \cloud ,, Find a cloud with 
        =(u.,~)  ,, nothing above in the same column marked
        !(d.,~)  ,, but not in an empty column
        t \whatever
        !(d.,~)
    },
    !(t \drop ud !(.,~) )  ,,no drops remaining in column
    t \cloud
    !(d.,~)
    u.,~
},             ,, repeated 0 or more times
! (t \drop)   ,, no drops left

আকর্ষণীয় মন্তব্য সিস্টেম।
সীড্রাস

2

পাইথন 2, 121 বাইট

def f(i):
 for l in zip(*i.split('\n')):
  s=0
  for p in l:
   s+=p in'()_@$&';s-=p in'!|.":'
   if s<0:return
 return 1

প্রত্যাশাটি ইনপুটটি আয়তক্ষেত্রযুক্ত হয়ে যাবে।


1

জাভাস্ক্রিপ্ট ES6, 112

তীর ফাংশন, স্প্রেড অপারেটর এবং টেমপ্লেট স্ট্রিং প্রয়োগ করে একটি ইকামাস্ক্রিপ্ট comp অনুবর্তী ব্রাউজারে নীচে স্নিপেট চালনা পরীক্ষা করুন (আমি ফায়ারফক্স ব্যবহার করি)

f=t=>!t.split`
`.some(r=>[...r].some((c,i)=>(c='!|.":()_@$&'.indexOf(c),n[i]=~c?c<5?~-n[i]:-~n[i]:n[i])<0),n=[])

//TEST
console.log=x=>O.innerHTML+=x+'\n';

test_valid = [
 '(@@@@@@)\n ( $ &  )\nQ   (  )\n..  .  !\n : .\n  |"   !\n    .',
 '()()()\n......',
 '@_$ &\nerrrr\nh_r-5\n.:. .\n "'
] 
console.log('Valid');
test_valid.forEach(t=>console.log(t+'\n'+f(t)+'\n'))

test_invalid = ['!\n()','$$$$$\n(   )\n:::::\n.....']
console.log('Invalid');
test_invalid.forEach(t=>console.log(t+'\n'+f(t)+'\n'))
<pre id=O></pre>


1

পার্ল 5, 80

,৯, এর -Eপরিবর্তে একের জন্য-e

@a=();while(<>){@_=split'';(0>($a[$_]+=/[()_@&\$]/-/[!|.":]/)?die:1)for@_}say 1

2
আমি পার্ল পড়তে পারি না, তবে আমি গণিতে শক্তিশালী: 79 + 1 = 80
edc65

1

জুলিয়া, 90 টি চরিত্র

s->all(cumsum(map(i->i∈"!|.\":"?-1:i∈"()_@\$&",mapfoldl(collect,hcat,split(s,"
")))').>-1)

মূল সমাধান (নীচে) এর বিপরীতে, সমাধানটি নির্ধারণ করতে এটি গণিত ব্যবহার করে। mapfoldl(collect,hcat,split(s,"\n"))(উপরে বর্ণিত \nঅক্ষর সংরক্ষণের জন্য একটি নতুন নিউলাইন দিয়ে প্রতিস্থাপিত) স্ট্রিংটিকে অক্ষরের 2d অ্যারে রূপান্তর করে। map(i->i∈"!|.\":"?-1:i∈"()_@\$&",...)অক্ষরের একটি অ্যারে তৈরি করে, 1 টি অক্ষর মেঘ হলে, -1 অক্ষরটি বৃষ্টি হয় এবং অন্যথায় 0 হয়।

cumsum(...')সারিগুলির সংশ্লেষক অঙ্কগুলি গণনা করে (সাধারণত এটি লেখা হবে cumsum(...,2), তবে যেহেতু আমরা এই দিক থেকে অভিমুখীকরণের বিষয়ে চিন্তা করি না, কেবল স্থান পরিবর্তন করার জন্য একটি চরিত্রের ব্যয় হয়) এবং তারপরে all(... .>-1)একটি নেতিবাচক সংখ্যার জন্য পরীক্ষা করা হয় - negativeণাত্মকতা কেবলমাত্র বৃষ্টিপাতের অক্ষর হলেই ঘটতে পারে মেঘের চরিত্রের আগে না উপস্থিত উপস্থিত হয়।

জুলিয়া, 139 136 টি অক্ষর

s->(t=join(mapfoldl(i->split(i,""),.*,split(s,"
")),"
");while t!=(t=replace(t,r"[()_@$&](.*?)[!|.\":]",s"\g<1>"))end;∩("!|.\":",t)==[])

এই ফাংশনটি প্রথমে পাঠ্য স্থানান্তর করে যাতে সারিগুলি কলাম এবং বিপরীত হয়ে যায়। নোট করুন যে নিউলাইনগুলি কোডটিতে প্রকৃত নিউলাইনগুলির আকারে উপস্থিত রয়েছে, উদাহরণস্বরূপ একটি অক্ষর সংরক্ষণ করতে।

ফাংশনটি পুনরাবৃত্তভাবে মেঘ / বোঁটা জোড়াগুলিকে স্পেসের সাথে প্রতিস্থাপন করে এবং এই জাতীয় সমস্ত জোড়া সরিয়ে ফেলা হলে, যদি সেখানে কোনও ফোঁটা অবশিষ্ট থাকে এবং অন্যথায় মিথ্যা থাকে তবে তা সত্য হয়।

r"[()_@$&](.*?)[!|.\":]"- এটি এমন একটি রেইজেক্স যা মেঘ / বোঁটা জোড়গুলি অলসভাবে মেলে, গ্রুপ 1 এর সাথে মেঘ এবং বোঁটাগুলির মধ্যে সমস্ত কিছু থাকবে। তারপরে s"\g<1>"এটি মেলে যাওয়া মেঘ এবং ফোঁটাগুলি সরিয়ে ফেলতে বলেছে, তবে জিনিসটি মাঝখানে রাখুন (এটিতে মেঘ থাকতে পারে প্রয়োজনীয়) - যা \g<1>হ'ল রেজেক্সের 1 গোষ্ঠীতে মিলেছে। ∩("!|.\":",t)==[]চূড়ান্ত স্ট্রিংয়ের সাথে বোঁটার অক্ষরের ছেদটি উত্পন্ন করবে এবং যদি এটি খালি হয় তবে বিন্দু বিন্দুর কোনও উপস্থিত নেই এবং বৃষ্টি হচ্ছে।


@ নিমিমি - আপনার আসলে এটির দরকার নেই। আপনি hআসল বেনাম ফাংশনটির সাথে ব্যবহারটি প্রতিস্থাপন করতে পারেন । g((s->join(foldl(.*,[split(i,"")for i=split(s,"\n")]),"\n")s->join(foldl(.*,[split(i,"")for i=split(s,"\n")]),"\n"))("()()()\n......"))এটির মতো: - এটিকে কল করা hকেবল প্রার্থনা করা সহজ করে।
গ্লেন ও

@ নিমিমি - "কল করার জন্য একক ফাংশন" হিসাবে, এটি কিছুটা যুক্তিসঙ্গত দৃser় বক্তব্য, তবে সম্প্রদায়টি কী তাতে দাঁড়িয়ে তা স্পষ্ট নয় - আমি এটি সম্পর্কে জিজ্ঞাসা করে একটি মেটা পোস্ট তৈরি করতে যাচ্ছি।
গ্লেন ও

@ নিমিমি - এই মুহূর্তে আমি একটি মেটা পোস্ট সহ স্পষ্টতা পেতে যাচ্ছি।
গ্লেন ও

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