কোড গল্ফ: বল বিতরণ (I)


12

চ্যালেঞ্জ

এই টাস্কটিতে আপনার কাছে কমপক্ষে একটি বল থাকার প্রতিটি কক্ষের সাথে আমরা বি কোষগুলিতে A বলগুলি বিতরণ করতে পারি তার সংখ্যার গণনা করতে হবে।

ইনপুট এ এবং বি একটি ফাঁকা দ্বারা পৃথক একক লাইনে দেওয়া হয়, ইনপুটগুলি ইওএফ দ্বারা সমাপ্ত হয়।

আপনি এখানে আপনার সমাধানগুলি পরীক্ষা করতে পছন্দ করতে পারেন

ইনপুট

0 0
1 0
12 4
6 3
18 17
20 19
15 13
18 9
20 20
17 14
9 2
14 13
18 11

আউটপুট

1
0
14676024
540
54420176498688000
23112569077678080000
28332944640000
38528927611574400
2432902008176640000
21785854970880000
510
566658892800
334942064711654400

সীমাবদ্ধতাসমূহ

  • প্রতিটি এ এবং বি স্বতন্ত্র হতে পারে।
  • 0 <= এ, বি <= 20
  • আপনি আপনার পছন্দের যে কোনও ভাষা ব্যবহার করতে পারেন
  • সবচেয়ে কম সমাধানে জয়!

1
সময় সীমা আছে?

@ টিম নর্ডেনফুর: আপডেট হয়েছে :-)
কুইসোটিক

সেই লিঙ্কটি আমার পক্ষে অবৈধ।
মেল্লামোকব

3
@ দেবানজান আমি এখানে এসপিওজে-র প্রশ্ন আটকানোর ধারণা পছন্দ করি না। লোকেরা সেখানে প্রতিযোগিতার জন্য তাদের কোড জমা দেয় এবং এটি তাদের সাথে অন্যায় হবে।
fR0DDY

1
@Debanjan, আমি আপনার রেফারেন্স দেখতে পাবে এবং আপনার বাড়াতে Mathworld (eqn। 5 বলছেন যে S(n,0)হয় 1যদি n=0এবং 0অন্যথায়)। আপনি যদি চান তবে আমি দৃ stronger় বিবৃতিটির জন্য একটি রেফারেন্স খুঁজে পেতে পারি যে স্ট্র্লিং 2 হ'ল ঘনিষ্ঠ রিওর্ডান গ্রুপের সহযোগী সাবগ্রুপে।
পিটার টেলর

উত্তর:


4

জাভাস্ক্রিপ্ট (90 93 )

function f(a,b){n=m=r=1;for(i=b;i>0;n*=-1){r+=n*m*Math.pow(i,a);m=m*i/(b-i--+1)}return--r}

http://jsfiddle.net/RDGUn/2/

স্পষ্টতই, এপিএলের মতো কোনও গণিত-ভিত্তিক ভাষা সিনট্যাক্স ভার্বোসিটি এবং অন্তর্নির্মিত গাণিতিক কাঠামোর অভাবের কারণে আমাকে মারবে :)

সম্পাদন করা এছাড়াও, জাভাস্ক্রিপ্ট সহ স্ট্যান্ডার্ড ইনপুট কীভাবে ব্যবহার করবেন তা নিশ্চিত নন, ফাংশনটিতে প্যারামিটারগুলি ব্যতীত আমার কোনও ইনপুট-সম্পর্কিত কার্যকারিতা নেই sure

সম্পাদনা: সরান i--মধ্যে m=m*অভিব্যক্তি; সরানো n*=-1মধ্যে for; r=1অ্যাসাইনমেন্টগুলি একত্রিত করতে এবং প্রত্যাবর্তনের মধ্যে বহিরাগতকে সরাতে শুরু করুন। (3 টি অক্ষর সংরক্ষণ করুন)


আপনি স্পাইডারমনকি শেলটি ব্যবহার করতে পারেন - এটি কমপক্ষে readlineএবং রয়েছে print। আমি জানি না যে এখানে অন্যরা কী ব্যবহার করে।
জেসি মিলিকান

@ জেসি: আকর্ষণীয়। আমি যেভাবেই হেরে যাব।
মেল্লামোকব

promptএবং alertজাভাস্ক্রিপ্টের "স্ট্যান্ডার্ড" আইও, কারণ আপনি সাধারণত জাভাস্ক্রিপ্টের মাধ্যমে ব্লকিং আইও ব্যবহার করবেন না এই সত্ত্বেও তারা সাধারণ ব্লকিং আইও কল।
zzzzBov

4

গল্ফস্ক্রিপ্ট - 56 50 49 48 41 40 38 37 অক্ষর

n%{~),{!}%\{0.@{.@+2$*@)@}/;;]}*)p;}/

দ্রষ্টব্য: এটি একাধিক লাইন ইনপুট পরিচালনা করে, দ্রুত (পরীক্ষার ক্ষেত্রে 1/8 সেকেন্ড), এবং কোনও আইনি ইনপুট ভঙ্গ করে না।

(প্রথম সংস্করণটি আমার প্রথম গল্ফস্ক্রিপ্ট প্রোগ্রামও ছিল; আমি মিস করেছি এমন কয়েকটি কৌশলগুলি নির্দেশ করার জন্য ই-বিজনেসকে ধন্যবাদ)।

এটিও একটি দরকারী শিক্ষাগত পোস্ট করার জন্য, এটি কীভাবে কাজ করে তার একটি ব্যাখ্যা এখানে। আমরা পুনরাবৃত্তি দিয়ে শুরু f(n, k) = k * (f(n-1, k) + f(n-1, k-1))। এটি সংমিশ্রণভাবে বোঝা যায় যে পার্থক্যজনক বালিতে আলাদা nআলাদা বল রাখতে kযেমন প্রতিটি বালতিতে কমপক্ষে একটি বল থাকে, আপনি kপ্রথম বলের জন্য একটি বালতি বেছে নিন ( k *) এবং তারপরে এটিতে অন্তত আরও একটি বল থাকবে ( f(n-1, k)) বা এটি হবে না ( f(n-1, k-1))।

এই গ্রিডের ফলে প্রাপ্ত মানগুলি; গ্রহণ nসারি সূচক হিসেবে এবং kকলাম সূচক হিসাবে এবং 0 থেকে উভয় সূচিবদ্ধ এটা শুরু হয়

1   0   0   0    0    0   0 ...
0   1   0   0    0    0   0 ...
0   1   2   0    0    0   0 ...
0   1   6   6    0    0   0 ...
0   1  14  36   24    0   0 ...
0   1  30 150  240  120   0 ...
0   1  62 540 1560 1800 720 ...
.   .   .   .    .    .   . .
.   .   .   .    .    .   .  .
.   .   .   .    .    .   .   .

সুতরাং প্রোগ্রামে বাঁক,

n%{~ <<STUFF>> }/

ইনপুটটিকে লাইনে বিভক্ত করে এবং তারপরে প্রতিটি লাইনের জন্য এটি মূল্যায়ন করে, স্ট্যাক লাগানো nএবং লাগানো kএবং তারপরে কল করে <<STUFF>>, যা নীচে:

),{!}%\{0.@{.@+2$*@)@}/;;]}*)p;

এটি সেই গ্রিডের প্রথম সারির প্রথম k+1এন্ট্রিগুলি গণনা করে n+1। প্রাথমিকভাবে স্ট্যাকটি হ'ল n k
),স্ট্যাক n [0 1 2 ... k]
{!}%দেয় 0 টি n [1 0 0 ... 0]আছে যেখানে স্ট্যাক দেয় k। এটিকে শীর্ষে
\{ <<MORE STUFF>> }*নিয়ে আসে nএবং এটি আমাদের সম্পাদন করার সময়কে সংখ্যায় পরিণত করে <<MORE STUFF>>
আমাদের স্ট্যাক বর্তমানে টেবিলের একটি সারি: [f(i,0) f(i,1) ... f(i,k)]
0.@0 টির দশকের আগে এই অ্যারে রাখে। প্রথমটি হবে jএবং দ্বিতীয়টি হবে f(i,j-1)
{ <<FINAL LOOP>> }/অ্যারের উপাদানগুলির মধ্য দিয়ে লুপগুলি; প্রত্যেকের জন্য এটি স্ট্যাকের উপরে রাখে এবং তারপরে লুপের বডি চালায়। বাম-ওভার থেকে পপস
.@+2$*@)@নিতে ... j f(i,j-1) f(i,j)এবং ফলনের জন্য বোরিং স্ট্যাক ম্যানিপুলেশন is... j*(f(i,j-1)+f(i,j)) j+1 f(i,j)
;;]k+1 f(i,k)এবং লুপের চারিদিকে যাওয়ার জন্য প্রস্তুত, একটি অ্যারেতে সমস্ত কিছু জড়ো করে।
শেষ অবধি, যখন আমরা nটেবিলের তম সারিটি তৈরি করেছি ,
)p;শেষ উপাদানটি গ্রহণ করি, এটি মুদ্রণ করি এবং বাকী সারিটি বাতিল করি।

উত্তরসূরির জন্য, এই নীতিটিতে তিনটি 38-চর সমাধান:
n%{~),{!}%\{0.@{.@+@.@*\)@}/;;]}*)p;}/
n%{~),{!}%\{0:x\{x\:x+1$*\)}/;]}*)p;}/
n%{~),{!}%\{0.@{@1$+2$*\@)}/;;]}*)p;}/


1
একটি শিক্ষানবিসের জন্য খুব ভাল, কয়েকটি সম্ভব ছোট স্কেল হ্রাস আছে, তাত্ক্ষণিকভাবে আমি খুঁজে পেতে পারি [0]-> 1,জিপ পরে স্থান সরিয়ে নেওয়া যেতে পারে, এবং আপনি যদি কে এর পরিবর্তে অপারেটরে সঞ্চয় করেন তবে অন্য স্থান সরিয়ে নেওয়া যেতে পারে। আমি আপনার কোডটি এখনও প্রবেশ করি নি, তবে আমার সন্দেহ হয় যে আপনি কোনও কোনও স্পটে অ্যারে না রেখে কেবল কোনও মান ব্যবহার করে পালিয়ে যেতে পারেন I
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআ

1
+ 1, আমি গল্ফস্ক্রিপ্ট বুঝতে পারি না তবে এটি যথেষ্ট দ্রুত এবং এখনও খুব ছোট দেখাচ্ছে।
কুইসোটিক

@ বিজনেস এবং @ পিটার টেইলর: অন্য একটি নোটে .. আপনি শিখতে সহজ স্কেলগুলিতে গল্ফস্ক্রিপ্টকে কতটা হার দিয়েছেন?
কুইসোটিক

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

@ দেবানজান - এটি দেখতে যত সহজ তার চেয়ে অনেক সহজ, আপনি প্রায় সঙ্গে সঙ্গে কোড লেখা শুরু করতে পারেন, তবে অবশ্যই সমস্ত ছোট কৌশলগুলি শিখতে কিছুটা সময় লাগে।
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআআ

3

জে, 40

4 :'|-/x(^~*y!~])i.1x+y'/&.".;._2(1!:1)3 

যেমন

4 :'-/((x^~|.@:>:)*y&(!~))i.y'/x:".>{.;:(1!:1)3
15 13
28332944640000

সমস্ত পরীক্ষার ক্ষেত্রে <1 সেকেন্ড।

সম্পাদনাগুলি

  • (52 → 47)-/ বিকল্প পরিবর্তে (1 _1)*(জবি ধারণা) এর সাথে হ্রাস করুন
  • (47 → 53) লক্ষ্য করা মাল্টলাইন ইনপুট প্রয়োজনীয়তা: - /
  • (53 → 48) বাইনোমিয়ালের প্রতিসাম্য প্রদর্শন করুন।
  • (48 → 48) স্বচ্ছন্দ করুন!
  • (48 → 41)
  • (41 → 40) স্ক্রিজ ইনক্রিমেন্ট + রূপান্তর1x+

1
হে! এটাই আমার ধারণা! ও :-)
জেবি

ঠিক আছে, আমি 1x+তখন এটি চুরি করব , তবে এটি কেবল আমাকে 1 টি চরিত্র কিনে দেবে, যেখানে আপনি 5 নিয়েছেন!
জেবি

3

কমন লিস্প (83)

(defun b (x y)
  (if (= (* x y) 0)
      (if (= (+ x y) 0) 1 0)
      (* y (+ (b (decf x) y) (b x (1- y)))))))

দেখে মনে হচ্ছে বেস কেসগুলি পরীক্ষা করার জন্য আরও ছোট্ট উপায় থাকা উচিত, তবে আমার কাছে কিছুই আপেন্ড হয় না।


3

জে, 38 থেকে 42

ইন্টারেক্টিভ ভাষা এবং আউটপুট উপস্থাপনা সম্পর্কে আপনার কঠোরতা পছন্দগুলির উপর নির্ভর করে সমাধানের জে স্পেক্টর থেকে আপনার বাছাই করুন:

  • 38 স্বল্পতম ইন্টারেক্টিভ:4 :'|-/(!&y*^&x)i.1x+y'/&".;._2(1!:1)3
    জকনসোল চালু করুন, এটি প্রবেশ করুন, তারপরে ইনপুটটি পেস্ট করুন (সিডির সাথে শেষ করুন)। আপনি আউটপুটটি স্পেস-বিভাজিত লক্ষ্য করেছেন (জে একটি ভেক্টর ভাষা, এটি পুরো ইনপুটটিতে সম্পূর্ণ গণনা সম্পাদন করে এবং এটি 1 ডি ভেক্টর হিসাবে ফিরিয়ে দেয়, যার ডিফল্ট উপস্থাপনা একক লাইনে থাকে)। আমি ঠিক মনে করি, এই সমস্যার স্পিরিট গণনা, উপস্থাপনা নয়। তবে আপনি যদি এর পরিবর্তে নতুন লাইনের বিষয়ে জেদ করেন:
  • 39 আর ইন্টারেক্টিভ: 4 :'|-/(!&y*^&x)i.1x+y'/&.".;._2(1!:1)3
    প্রতিস্থাপন করা হচ্ছে কম্পোজ ( &সঙ্গে) অধীনে ( &.) স্ট্রিং একটি ভেক্টর, যার উপস্থাপনা পৃথক লাইন শেষ পর্যন্ত ফেরৎ।
  • 42 ব্যাচ মোড: 4 :'echo|-/(!&y*^&x)i.1x+y'/&".;._2(1!:1)3
    কমান্ড লাইন থেকে চালানো$ jconsole balls.ijs < balls.in

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


&.ইন্টারেক্টিভ মোডে সঠিকভাবে কাজ করার জন্য আপনার আন্ডার প্রয়োজন ।
এলেভেক্স

@ ইভেলেক্স আপনার অবশ্যই "সঠিকভাবে" এর আলাদা ব্যাখ্যা করতে হবে। আমি জকনসোল, পেস্ট কোড, পেস্ট ইনপুট, সিডি শুরু করি এবং আউটপুট গ্রহণ করি। প্রয়োজনের অধীনে নেই। তোমার কোনটা?
জেবি

আমাদের কোডগুলি মিলিত: 4 :'|-/(!&y*^&x)i.1x+y'/&.".;._2(1!:1)339 অক্ষর।
এভেলেক্স

ছাড়া প্রতিধ্বনি বা অধীনে আমি শুধুমাত্র (একাধিক লাইনের পরিবর্তে) এক লাইনে আউটপুট পেতে।
এভেলেক্স

এমএলএক্স আসলেই, তবে তা স্পষ্টভাবে নিষিদ্ধ নয়।
জেবি

3

গল্ফস্ক্রিপ্ট - 45 38 36 টি অক্ষর

মাঝারি বল নোংরা বাস্তবায়ন পুনরাবৃত্তি সম্পর্ক ( 38 36 টি অক্ষর):

n%{~{.2$*{\(.2$f\2$(f+*}{=}if}:f~p}/

পিটার টেলরস সমাধান থেকে যে পুনরাবৃত্তির সম্পর্কটি আমি চুরি করেছি, এটি এরকম হয়:

f(x, y) = y * ( f(x-1, y) + f(x-1, y-1) )

বিশেষ ক্ষেত্রে যদি হয় চলক 0 হয়।

আমার বাস্তবায়ন পূর্ববর্তী ফলাফলগুলি পুনরায় ব্যবহার করে না, সুতরাং প্রতিটি ফাংশন কল শাখাকে দুটি নতুন কল করে, যদি না শূন্যের একটির কাছে পৌঁছানো হয়। এটি আমার মেশিনে 30 সেকেন্ড সময় নেয় এমন 2 ^ 21-1 ফাংশন কলগুলির মধ্যে সবচেয়ে খারাপ পরিস্থিতি দেয়।

হালকা-বল সিরিজের সমাধান (45 টি অক্ষর):

n%{~.),0\{.4$?3$,@[>.,,]{1\{)*}/}//*\-}/p;;}/

2

জে, 55 টি অক্ষর

(wd@(4 :'(y^x)--/(!&y*^&x)|.i.y')/@".@,&'x');._2(1!:1)3
  • বর্তমান পরীক্ষার কেস পাস করে। আমি মনে করি আমি গণিতটি বুঝতে পারি ...
  • j602, কেবল কনসোল ( wd)। স্টিডিনে ইনপুট, স্টডআউটে আউটপুট।

বাশ পরীক্ষার লিপি:

jconsole disballs.ijs <<END
12 4
6 3
END

জে 6 এএক্সএক্সএক্স কি করে wd?
জেবি

আমি সত্যিই জে 602 বোঝাতে চাইছি ... আমি অনুমান করছি এটি জে 601 এও আছে। এটি হিসাবে সংজ্ঞায়িত করা হয় echo, যা হিসাবে সংজ্ঞায়িত করা হয় 0 0&$@(1!:2&2)। এর অর্থ কী তা আমি নিশ্চিত নই তবে এটি লাইন ব্রেক সহ প্রিটি-প্রিন্ট র‌্যাঙ্ক 1 আইটেমের মতো কিছু করে। (আমি এখন কেবল লক্ষ্য করছি যে 4 এর পরিবর্তে 2 ব্যবহার করে ... আমার মনে হয় এটি এখনও কমসোল মোডে স্টাডাউট করতে চলেছে, কমপক্ষে))
জেসি মিলিকান

এই কোডটি চালাতে আমার সমস্যা হচ্ছে। আমি কি কেবল এটি কনসোলে টাইপ করব?
মেল্লামোকব

@ মেল্লামোকব আমি উপরের টেস্ট স্ক্রিপ্টের মতো কিছু ব্যবহার করেছি, প্রোগ্রামটি disballs.ijs হিসাবে সংরক্ষণ করা হয়েছে এবং j602 / বিন / জকনসোলের সঠিক পথ।
জেসি মিলিকান

@ জেসি: আমি এটি উইন্ডোতে চালাচ্ছি। আমি << was unexpected at this time. দুঃখিত আমি জে ইনপুটটিতে নতুন, আমি এটি সর্বদা কনসোল মোডে ব্যবহার করি।
মেল্লামোকব

2

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

সতর্কতা: 12 4 টির ক্ষেত্রে অনেক স্মৃতি দরকার (যদিও নীচের উত্তরের চেয়ে বেশি নয়) এবং চালাতে বেশ খানিকটা সময় নেয়

~:)\?:x,{x+)base(;.&,)=},,

স্পষ্টতই এই উত্তরটির কিছু সমস্যা আছে তবে আমি এটি এখানে রেখে যাব কারণ মন্তব্যগুলি এতে উল্লেখ করেছে এবং মেল্লামবকের উত্তর এটি ভিত্তিক।

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

সতর্কতা: 12 4 টির ক্ষেত্রে প্রচুর স্মৃতি দরকার এবং এটি চালাতে বেশ খানিকটা সময় নেয়

~:o)\?,{o)base[0]-,o=},,

2
আমি বুঝতে পারি না আপনি কীভাবে এই কোডটি নিয়ে এসেছেন, এই পদ্ধতিটি কেবল বড় ইনপুটগুলির জন্য মেমরির বাইরে চলে যাবে তা নয়, বর্ধিত অপারেটরগুলির জন্য কী ভাল তা আমিও বুঝতে পারি না। আপনি 6% এর পক্ষে যে টার্গেটটি করেছেন তা ভাগ্য ছাড়া কিছুই বলে মনে হচ্ছে না।
আআআআআআআআআআআআআআআআআআআআআআআআআআআআআ

ওটা কোনও বিদূষক নয়, এটাই আমার স্ত্রী!
জেসি মিলিকান

2
আমি গল্ফস্ক্রিপ্ট বুঝতে পারছি না তবে আপনি যেমন বলেছিলেন এবং আমি সম্মতি দিচ্ছি আপনার পদ্ধতিটি খুব ধীর।
কুইসোটিক

3
@ মেল্লামোকব, এটি কীভাবে কাজ করার কথা ছিল তা কাজ করার জন্য আপনার পক্ষে ভাল :) এই বাগটি ঠিক করতে কেবল 2 অতিরিক্ত অক্ষর লাগল এখন আমরা সংক্ষিপ্ত অঞ্চলে রয়েছি যেখানে সংক্ষিপ্ততম কোডটি সঠিক হতে পারে তবে ব্যবহারিক নয়। কোড-গল্ফ অত্যধিক অক্ষম উত্তর দিয়ে ধাঁধা হয় তবে মাইক্রোসেকেন্ড বনাম সেকেন্ডে কিছু আসে যায় না। এটি একটি চরম কেস ( প্রচুর স্মৃতিশক্তি)। Debanjan জানিয়েছেন যে উত্তর দ্রুততর হতে হবে, কিন্তু এই সাইটটি নয় SPOJ, এই প্রশ্নের হয় বাঁধা কোড-গলফ
gnibbler

1
@gnibbler, 0 0উত্পাদন করা উচিত 1; 0 kঅন্য কারও জন্য kউত্পাদন করা উচিত 0; n 1জন্য n > 0উত্পাদন করা উচিত 1
পিটার টেলর

2

পাইথন 140 চর

import sys
f=lambda n,k:(n and k and n>=k and k*(f(n-1,k-1)+f(n-1,k)))or(n+k==0 and 1)or 0
for l in sys.stdin:print f(*(map(int,l.split())))

2

ডিসি, 100 চর

[0q]s5[1q]s6[l2l3>5l3 0>5l2 0=6l2 1-S2l3dS3 1-S3l1xL3s9l1xL2s9+L3*]s1[?z0=5S3S2l1xL3L2+s9fs9l4x]ds4x

হায়, ডিসি আদর্শ দ্বারা সমর্থিত বলে মনে হচ্ছে না। দু'একটি চরিত্র এখনও বেরোতে পারে, তবে এটি শোবার সময় time

দ্রষ্টব্য: এটি একাধিক লাইন ইনপুট সমর্থন করে, এমনকি সঠিক আউটপুট দেওয়ার পক্ষেও যথাযথ নির্ভুলতা রয়েছে 20 19(আপনার শপথ, পার্ল, আমি আমার সমাধানটি ডিবাগ করার জন্য সময় নষ্ট করেছি!), এবং এর জন্য সঠিক আউটপুট দেয় 0 0

ন্যাব এর পরামর্শগুলি কমপক্ষে যতদূর সম্ভব হ্রাস করার অনুমতি দেয়

[0q]sZ[1q]sI[?z0=ZSkSn[lnlk>Zlk0>Zln0=Iln1-SnlkdSk1-SklFxLks9lFxLns9+Lk*]dsFxfs9l4x]ds4x

রেজিস্টার স্ট্যাকগুলিতে জাঙ্ক ছেড়ে দেওয়ার ব্যয়ে (এবং এভাবে যদি আমরা কয়েক বিলিয়ন জবাব গণনা করি তবে স্মৃতি থেকে বেরিয়ে যায়)।


নিবন্ধগুলি সর্বদা একক অক্ষর হয় (আপনি যে কোনও অক্ষর ব্যবহার করতে পারেন যা কোডটি আরও পঠনযোগ্য করে তুলবে) তাই l11পার্স করা হয় l1 1(আপনি যদি কোনওভাবেই যথার্থ পরিবর্তন করতে না চান তবে আপনি Kএকটি একক অক্ষর টোকেন হিসাবে ব্যবহার করতে পারেন 0)। আপনি ইনপুট লুপটি পরিবর্তন করতে পারেন ?[...?z1=4]। আপনি নিবন্ধে ম্যাক্রোটিকে ইনলাইন করতে পারেন 1। এবং আপনি সম্ভবত সাধারণভাবে আরও বেশি অক্ষর সংরক্ষণ করতে পারেন, তবে আমি এটির জন্য এটি আরও সংক্ষিপ্ত হওয়ার জন্য অপেক্ষা করব।
নাব্ব

@ নাব, আহ, আমি ম্যান পেজটি সাবধানতার সাথে পড়িনি। আমি কেবল 8 বা 9 টি রেজিস্টার ব্যবহার করছি, তাই আমি আমার ভুল বোঝাবুঝির পরিণতিতে প্রবেশ করিনি। ধন্যবাদ।
পিটার টেলর

1

গল্ফস্ক্রিপ্ট (28 31 37 )

~):$\.($\?:@;?,{@+}%{$base$,\-[0]=},,

থেকে সংশোধন gnibblerএর GolfScript সমাধান। আমি মনে করি এটি একটি কার্যকরী সমাধান - [3,2], [4,2], [6,3], এবং [9,2] সহ সঠিক উত্তর সহ পরীক্ষিত। (আমি ব্যবহার করেছি $এবং @ভেরিয়েবলগুলির জন্য baseকীওয়ার্ডের চারপাশে স্থান শক্ত করতে )।

gnibblerএর বর্তমান সমাধানে দুটি সমস্যা রয়েছে ।

  1. [0] অপসারণের পরে দৈর্ঘ্য পরীক্ষা করা কোনও সমাধানের গ্যারান্টি দেয় না, কেননা [1,1,1,1] ইনপুট [4,2] এর জন্য বৈধ হবে, যদিও সমস্ত 4 বল একই কক্ষে (1) থাকে। সুতরাং আমি এটিও পরীক্ষা করে দেখেছি যে সমস্ত অঙ্ক ব্যবহার করা হয়েছে, অর্থাৎ অ্যারেটিতে 1-2 রয়েছে, তাই প্রতিটি ঘরে কমপক্ষে একটি বল থাকে।
  2. ইনপুট [4,2] এর ক্ষেত্রে, 0-27 সংখ্যার বেস -3 ফর্ম্যাটটি 4 ডিজিটের চেয়ে কম এবং বাম-সর্বাধিক 0 এর অন্তর্ভুক্ত নেই। এর অর্থ [1,1] বৈধ সমাধান হিসাবে অন্তর্ভুক্ত রয়েছে যদিও এটি প্রযুক্তিগতভাবে আসলে [0,0,1,1], যার অর্থ প্রথম দুটি বল কোথাও রাখা হয় না। আমি প্রতিটি এন্ট্রিতে 3 adding 3 যুক্ত করে (সাধারণভাবে k ^ n-1 কে ^ n এন্ট্রিগুলির অ্যারেতে) যুক্ত করে ঠিক করেছি যাতে প্রথম এন্ট্রিগুলি বেস-কে ফর্ম্যাটে কমপক্ষে এন-ডিজিট থাকার দিকে wardর্ধ্বমুখী স্থানান্তরিত হয় এবং শেষটি এন্ট্রিগুলি যে কোনওভাবে স্বয়ংক্রিয়ভাবে অবৈধ হবে এবং সমাধানটিকে প্রভাবিত করবে না (কারণ দ্বিতীয় সংখ্যাটি সর্বদা 0 হবে)।

সম্পাদন করা

~:@\?:$,{$+}%{@base(;@,\-,0=},,

`~:@\?:$,{$+@base(;@,\-,0=},,`

আরও ভাল সমাধান এখনও! বাড়ানোর দরকার নেই, কেবলমাত্র সমস্ত সংখ্যায় যুক্ত করুন যাতে তারা [1] দিয়ে শুরু হয় এবং আপনি প্রথম অঙ্কটি ডেকে নিলে কোনও সংখ্যা (0 এর বাম-প্যাডিং সহ) নিখোঁজ হবে না। এই সমাধানটি কাজ করা উচিত এবং উপরের একই এন্ট্রিগুলির সাথে পরীক্ষা করা হয়েছে। এটিও অনেক দ্রুত কারণ কারণ অ্যারে জেনারেট করার জন্য আমরা এক্সপোনেন্ট নেওয়ার আগে ইনক্রিমেন্ট করছি না (তবে এখনও বড় ইনপুটটির জন্য একই পারফরম্যান্স / মেমরির সমস্যায় ভুগছি)।

সম্পাদনা করুন : অতিরিক্ত পদক্ষেপের পরিবর্তে ফিল্টারটির gnibblerসংযোজন স্থানান্তরিত করার ধারণাটি ব্যবহার করুন$ । (3 টি অক্ষর সংরক্ষণ করুন)


ইনপুট বিরতি 0 0
পিটার টেলর

এছাড়াও ইনপুট শুধুমাত্র একটি লাইন হ্যান্ডেল প্রদর্শিত হবে।
পিটার টেলর

এবং n 1কোনও এন এর জন্য বিরতি দেয় , এটি স্তব্ধ হয়ে যায়। হুম ..
মেল্লামব্যাক

1
সংখ্যাকে বেস 1 এ রূপান্তর করা এটি করবে :)
gnibbler

@gnibbler: আপনার কি কোনও পরামর্শ আছে? শুরুতে যদি এই মামলাগুলি ধরার জন্য বিবৃতি দেওয়া হয় তবে আমি কি কিছুকে ছুঁড়ে ফেলার দরকার করব? মনে হচ্ছে আমি সেভাবে অনেকটাই হারাব।
মেল্লামব্যাক

0

05 এ বি 1 , 19 বাইট

#D`ULX.Œʒ€gßĀ}gs_P+

দ্রষ্টব্য: এটি অত্যন্ত ধীর এবং ইতিমধ্যে এর জন্য সময় বেরিয়ে গেছে 12 4। যদিও এটি উদ্দেশ্য হিসাবে কাজ করছে। আমি কোনও বিকল্প পদ্ধতি নিয়ে আসতে পারি কিনা তা দেখতে পাবে যা যুক্তিসঙ্গত সময়ে সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে।খুব দ্রুত সংস্করণের জন্য নীচে দেখুন যা একটি পরীক্ষার চেয়ে কম পরীক্ষায় কেস চালায়।

এটি অনলাইনে চেষ্টা করুন বা আরও কয়েকটি (ছোটগুলির) পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

#               # Split the (implicit) input-string by spaces
 D              # Duplicate it
  `             # Push both values to the stack
   U            # Pop and store the second value in variable `X`
    L           # Create a list in the range [1,n] for the first value
     X        # Create a list of all possible ways to divide this list into `X` partitions
                # (including empty sublists, so we'll have to filter them out:)
        ʒ       # Filter this list of lists of partition-lists by:
         g     #  Get the length of each partition-list
           ß    #  Get the minimum length
            Ā   #  Truthify; 0 remains 0 (falsey); anything else becomes 1 (truthy)
             }g # After the filter, take the length to get the amount left
 s              # Swap so the duplicated input-list is at the top of the stack again
  _             # Check for each value if they're equal to 0 (1 if truthy; 0 if falsey)
   P            # Take the product of the two to check if both input-values are 0
    +           # And add it to the earlier calculated product (edge case for [0,0] = 1)
                # (After which the result is output implicitly)

05 এ বি 1 ই , 29 বাইট

এখানে একটি তাত্পর্যপূর্ণ সংস্করণ যা টিআইও-তে প্রায় 0.5 সেকেন্ডের মধ্যে সমস্ত পরীক্ষার ক্ষেত্রে কাজ করে:

Î#R`V©LRvyYmX*NÈ·<*+Xy*®y->÷U

@ মেল্লামোকব এর জাভাস্ক্রিপ্ট উত্তরের পোর্ট , সুতরাং তাকে উর্ধ্বতন নিশ্চিত করুন!

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

Î                    # Push (result=) 0 and the input
 #                   # Split the input by spaces
  R`                 # Push the values to the stack reversed
    V                # Pop and store the first value in variable `Y`
     ©               # Store the second value in variable `®` (without popping)
      LRv            # Loop `y` in the range [`®`,1], with index `N` in the range [0,`®`):
         yYm         #  Calculate `y` to the power `Y`
            X*       #  Multiply it by `X`
                     #  (Note: `X` is 1 before setting it to another value initially)
              NÈ     #  Check if index `N` is even (1 if truthy; 0 if falsey)
                ·<   #  Double it; and decrease it by 1 (1 if truthy; -1 if falseY0
                  *  #  Multiply it to the earlier number
                   + #  And add it to the result
         Xy*         #  Push `X` multiplied by `y`
         ®y->        #  Push `®` - `y` + 1
             ÷       #  Integer divide them
              U      #  Pop and store it as new variable `X`
                     # (output the result at the top of the stack implicitly after the loop)

দ্রষ্টব্য: 0 0এই ক্ষেত্রে প্রান্তের ক্ষেত্রে কাজ করে (জাভাস্ক্রিপ্টের উত্তরগুলির বিপরীতে আমি এই পদ্ধতিটি পোর্ট করেছি), কারণ Lবিল্টিন একটি তালিকা তৈরি করবে [0,1]

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