অ্যালেক্স-শৈলীর সংযোজন


57

অ্যালেক্সের মহিমান্বিত দ্বারা অনুপ্রাণিত হয়ে আপনি দুর্দান্ত উপকারের জন্য একটি আর শিখুন, আমরা নম্রভাবে অ্যালেক্সের "একটি সত্যিকারের আর" প্রোগ্রামটি আবার তৈরি করতে যাচ্ছি - তবে একটি মোড় নিয়ে।

অ্যালেক্স-স্টাইল সংযোজন এটির মতো কাজ করে - এতে দুটি প্রদত্ত দুটি সংখ্যার যোগফল ফিরে আসার 90% সম্ভাবনা রয়েছে এবং প্রথম সংখ্যা এবং দ্বিতীয় সংখ্যাটি ১. পুনরাবৃত্তভাবে অ্যালেক্স-যোগ করার 10% সম্ভাবনা রয়েছে যার অর্থ সম্ভাব্যভাবে , 1 বা আরও বেশি সংযোজন বন্ধ হতে পারে।

চ্যালেঞ্জ

একটি সম্পূর্ণ প্রোগ্রাম বা ফাংশন লিখুন যা দুটি পূর্ণসংখ্যা নেয় এবং সংজ্ঞায়িত হিসাবে অ্যালেক্স-যুক্ত করে। আপনি ধরে নিতে পারেন যে আপনার ভাষাতে লেজ পুনরাবৃত্তি না হলে আপনার প্রোগ্রামটি ওভারফ্লোতে স্ট্যাক করবে না। (মনে রাখবেন যে যতক্ষণ সম্ভাবনা একই থাকে ততক্ষণ আপনি এটি পুনরাবৃত্তভাবে প্রয়োগ করতে হবে না))

রেফারেন্স বাস্তবায়ন (গ্রোভি)

int alexAdd(int a, int b) {
  int i = new Random().nextInt(11);
  if(i == 1) {
    return alexAdd(a,b+1);
  } else {
    return a + b;
  }
}

অনলাইনে এই ঝাঁকুনি চেষ্টা করুন।

লিডারবোর্ড

var QUESTION_ID=66522,OVERRIDE_USER=8478;function answersUrl(e){return"https://api.stackexchange.com/2.2/questions/"+QUESTION_ID+"/answers?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+ANSWER_FILTER}function commentUrl(e,s){return"https://api.stackexchange.com/2.2/answers/"+s.join(";")+"/comments?page="+e+"&pagesize=100&order=desc&sort=creation&site=codegolf&filter="+COMMENT_FILTER}function getAnswers(){jQuery.ajax({url:answersUrl(answer_page++),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){answers.push.apply(answers,e.items),answers_hash=[],answer_ids=[],e.items.forEach(function(e){e.comments=[];var s=+e.share_link.match(/\d+/);answer_ids.push(s),answers_hash[s]=e}),e.has_more||(more_answers=!1),comment_page=1,getComments()}})}function getComments(){jQuery.ajax({url:commentUrl(comment_page++,answer_ids),method:"get",dataType:"jsonp",crossDomain:!0,success:function(e){e.items.forEach(function(e){e.owner.user_id===OVERRIDE_USER&&answers_hash[e.post_id].comments.push(e)}),e.has_more?getComments():more_answers?getAnswers():process()}})}function getAuthorName(e){return e.owner.display_name}function process(){var e=[];answers.forEach(function(s){var r=s.body;s.comments.forEach(function(e){OVERRIDE_REG.test(e.body)&&(r="<h1>"+e.body.replace(OVERRIDE_REG,"")+"</h1>")});var a=r.match(SCORE_REG);a&&e.push({user:getAuthorName(s),size:+a[2],language:a[1],link:s.share_link})}),e.sort(function(e,s){var r=e.size,a=s.size;return r-a});var s={},r=1,a=null,n=1;e.forEach(function(e){e.size!=a&&(n=r),a=e.size,++r;var t=jQuery("#answer-template").html();t=t.replace("{{PLACE}}",n+".").replace("{{NAME}}",e.user).replace("{{LANGUAGE}}",e.language).replace("{{SIZE}}",e.size).replace("{{LINK}}",e.link),t=jQuery(t),jQuery("#answers").append(t);var o=e.language;/<a/.test(o)&&(o=jQuery(o).text()),s[o]=s[o]||{lang:e.language,user:e.user,size:e.size,link:e.link}});var t=[];for(var o in s)s.hasOwnProperty(o)&&t.push(s[o]);t.sort(function(e,s){return e.lang>s.lang?1:e.lang<s.lang?-1:0});for(var c=0;c<t.length;++c){var i=jQuery("#language-template").html(),o=t[c];i=i.replace("{{LANGUAGE}}",o.lang).replace("{{NAME}}",o.user).replace("{{SIZE}}",o.size).replace("{{LINK}}",o.link),i=jQuery(i),jQuery("#languages").append(i)}}var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe",COMMENT_FILTER="!)Q2B_A2kjfAiU78X(md6BoYk",answers=[],answers_hash,answer_ids,answer_page=1,more_answers=!0,comment_page;getAnswers();var SCORE_REG=/<h\d>\s*([^\n,]*[^\s,]),.*?(\d+)(?=[^\n\d<>]*(?:<(?:s>[^\n<>]*<\/s>|[^\n<>]+>)[^\n\d<>]*)*<\/h\d>)/,OVERRIDE_REG=/^Override\s*header:\s*/i;
body{text-align:left!important}#answer-list,#language-list{padding:10px;width:290px;float:left}table thead{font-weight:700}table td{padding:5px}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <link rel="stylesheet" type="text/css" href="//cdn.sstatic.net/codegolf/all.css?v=83c949450c8b"> <div id="answer-list"> <h2>Leaderboard</h2> <table class="answer-list"> <thead> <tr><td></td><td>Author</td><td>Language</td><td>Size</td></tr></thead> <tbody id="answers"> </tbody> </table> </div><div id="language-list"> <h2>Winners by Language</h2> <table class="language-list"> <thead> <tr><td>Language</td><td>User</td><td>Score</td></tr></thead> <tbody id="languages"> </tbody> </table> </div><table style="display: none"> <tbody id="answer-template"> <tr><td>{{PLACE}}</td><td>{{NAME}}</td><td>{{LANGUAGE}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table> <table style="display: none"> <tbody id="language-template"> <tr><td>{{LANGUAGE}}</td><td>{{NAME}}</td><td>{{SIZE}}</td><td><a href="{{LINK}}">Link</a></td></tr></tbody> </table>


6
সুতরাং এটি ব্যর্থতার সম্ভাবনা 1/10 সহ দুটি সংখ্যার যোগফলকে জ্যামিতিক এলোমেলো পরিবর্তনশীল যোগফল দেয়?
xnor

@ এক্সনর মূলত, হ্যাঁ আমি এটিকে পুনরাবৃত্তভাবে সংজ্ঞায়িত করেছি যাতে এটি বুঝতে সহজ হয়, তবে আপনাকে এটি পুনরাবৃত্তভাবে করতে হবে না (সিজে্যাম সমাধানটি উদাহরণস্বরূপ হয় না)
একটি স্প্যাগেটো

10
কেন এই স্যান্ডবক্সটি 20 মিনিটের জন্য রাখা হয়েছিল? এটি স্যান্ডবক্সের বিন্দুটি অনুপস্থিত মনে হচ্ছে।
পিটার টেলর

3
@ পিটারটেলর এটির সাথে একটি ছোটখাটো বিষয়টি প্রায় সঙ্গে সঙ্গেই সমাধান করা হয়েছিল, এবং প্রশ্নটি এত সহজ ছিল যে আমি মনে করি না যে এটি দীর্ঘকাল ধরে স্যান্ডবক্সে থাকা দরকার (এটি ইতিমধ্যে 10 জন ব্যক্তির দিকে তাকিয়েছিল যা আমি ভেবেছিলাম যথেষ্ট পিয়ার ছিল যেমন একটি সহজ চ্যালেঞ্জ জন্য পর্যালোচনা)। আমার স্যান্ডবক্সে এটির মূল কারণটি ছিল লোকেরা এটিকে খুব সাধারণ মনে করে কিনা।
একটি স্প্যাগেটো

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

উত্তর:


40

পাইথ, ৮

u+G!OTsQ

এটি অনলাইনে চেষ্টা করুন

এটি হ্রাস করার উপর পাইথের দ্বিতীয় মোড ব্যবহার করে, যা বারবার ইনপুট পরে বাইরে বের হয় looks

ব্যাখ্যা

u+G!OTsQ  ##  Implicit: Q=eval(input())
u     sQ  ##  reduce with 2 arguments, which causes a loop until the reduce gets the
          ##  same argument twice
 +G       ##  lambda G,H: G + ...
   !OT    ##  boolean not of random value from 0 to 9 inclusive

অতিরিক্ত অ্যালেক্স-অ্যাড দেখা দিলে এটি আবার চলবে, তবে তা না হলে এটি বেরিয়ে আসে।


13
এটি ... খাঁটি কালো জাদু। ও_ও
ডুরকনব

1
এটি ... হাস্যকর।
বিড়াল

36

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

from random import*
lambda a,b:a+b+18-len(`1+random()`)

এটি করার একেবারে উদ্ভট উপায়।

ফাংশনটি random[0,1) এ একটি ভাসা দেয় এবং ডিফল্টরূপে এর স্ট্রিং উপস্থাপনা দশমিক পয়েন্টের পরে মোট 18 টি অক্ষরের জন্য 16 টি সংখ্যা থাকে। তবে, কারণ 0 এর বাম বাদ দেওয়া হয়েছে, এটি সংক্ষিপ্ত হতে পারে। শেষ থেকে অঙ্কগুলি পড়া, প্রত্যেকেরই 0 হওয়ার সম্ভাবনা রয়েছে এবং আমরা যখন ননজারো অঙ্কটি আঘাত করি তখন আমরা থামি। অতএব অনুগ্রহপূর্ব শূন্যগুলির সংখ্যা বিতরণ করা হয় ঠিক তেমনি আলেক্সের সংখ্যার পুনরাবৃত্তির সংখ্যার মতোই, তাই আমরা স্ট্রিংয়ের দৈর্ঘ্যটি 18 বিয়োগ করে এই বিতরণ থেকে নমুনা করতে পারি।

প্রকৃতপক্ষে, পাইথন ছোট সংখ্যার জন্য 18 টিরও বেশি অঙ্ক প্রদর্শন করবে, কখনও কখনও বৈজ্ঞানিক স্বরলিপিও, তাই আমরা এটি ঠিক করতে 1 যুক্ত করব।

এটি কখনই যোগফলের চেয়ে 15 টির বেশি দেবে না, তবে এটি ঠিক আছে কারণ মহাজাগতিক রশ্মি গণনা ব্যাহত করার চেয়ে 10 ^ 15 অনেক কম ।


1
দুঃখিত, এই উত্তরটি অবৈধ, কারণ এতে সঠিকভাবে কাজ না করার 10 ^ -15 সম্ভাবনা রয়েছে , যা লিঙ্কযুক্ত মেটা পোস্ট দ্বারা স্পষ্টভাবে নিষিদ্ধ।
পিপ্পারি

22

আর, 60 47 28 বাইট

function(a,b)a+b+rgeom(1,.9)

এটি একটি নামবিহীন ফাংশন অবজেক্ট যা দুটি সংখ্যা গ্রহণ করে এবং একটি নম্বর দেয়। এটি পুনরাবৃত্তি ব্যবহার করে না।

এক্সএনওর একটি মন্তব্যে উল্লেখ করেছেন, এই সমস্যাটি ব্যর্থতার সম্ভাবনা 1-10 এর সাথে দুটি সংখ্যা এবং একটি জ্যামিতিক র্যান্ডম ভেরিয়েবল যুক্ত হিসাবে দেখা যেতে পারে।

কেন এটা সত্য? এটি পোস্টে বর্ণিত হিসাবে এটি পুনরাবৃত্তি হিসাবে বিবেচনা করুন। প্রতিটি পুনরাবৃত্তিতে আমাদের 1 যোগ এবং পুনরাবৃত্তি হওয়ার 10% সম্ভাবনা রয়েছে এবং আরও সংযোজন ছাড়াই ফাংশনটি থেকে বেরিয়ে আসার 90% সুযোগ রয়েছে। প্রতিটি পুনরাবৃত্তিটি তার নিজস্ব স্বতন্ত্র বার্নোল্লি পরীক্ষায় ফলাফলগুলি যুক্ত করে "যোগ 1, পুনরাবৃত্তি " (ব্যর্থতা) এবং "প্রস্থান" (সাফল্য)। সুতরাং ব্যর্থতার সম্ভাবনা 1/10 এবং সাফল্যের সম্ভাবনা 9-10 হয়।

স্বাধীন বার্নোল্লি ট্রায়ালগুলির একটি সিরিজ নিয়ে কাজ করার সময়, একক সাফল্য পেতে প্রয়োজনীয় পরীক্ষার সংখ্যা জ্যামিতিক বিতরণকে অনুসরণ করে । আমাদের ক্ষেত্রে, প্রতিটি পুনরাবৃত্তি মানে 1 যুক্ত করা, সুতরাং আমরা যখন শেষ পর্যন্ত ফাংশনটি থেকে বেরিয়ে আসি, তখন আমরা প্রথম সাফল্যের আগে ঘটে যাওয়া ব্যর্থতার সংখ্যাটি মূলত গণনা করেছি। এর অর্থ হ'ল ফলাফলটি যে পরিমাণে বন্ধ হবে তা হ'ল জ্যামিতিক বিতরণ থেকে এলোমেলো পরিবর্তন ate

এখানে আমরা সম্ভাব্যতা বিতরণ অন্তর্নির্মিত এবং ব্যবহারের আর এর বিস্তৃত স্যুটটির সুবিধা নিতে পারি rgeom, যা জ্যামিতিক বিতরণ থেকে এলোমেলো মান দেয়।

Ungolfed:

f <- function(a, b) {
    a + b + rgeom(n = 1, prob = 0.9)
}

13

মিনকোলাং 0.14 , 19 11 12 বাইট

এটি "ফাংশন" সংস্করণ; এটি ধরে নেওয়া হয় aএবং bইতিমধ্যে স্ট্যাকের মধ্যে রয়েছে, সেগুলি পপ করে ফেলে এবং এর পরিবর্তিত সংস্করণটি ধাক্কা দেয় a+b। Minkolang ইন ফাংশান নিকটস্থ সমতুল্য ব্যবহার করা Fহয়, যা বন্ধ পপ b, aএবং জাম্প (a,b)codebox হবে। তারপরে যখন প্রোগ্রামের কাউন্টারটি হিট হয় f, এটি যেখানে Fব্যবহৃত হয়েছিল সেখানে ফিরে আসে ।

(+$01$h`d)xf

এটি পুরো প্রোগ্রাম সংস্করণ, 15 বাইট । ( nnইনপুট থেকে দুটি সংখ্যা নেয় এবং N.ফলাফল আউটপুট দেয় এবং থামে))

nn(+$01$h`d)xN.

আমি ডুরকনব এর উত্তর থেকে অ্যালগরিদমটি চুরি করেছি ; যখন লুপটি এতক্ষণ পুনরাবৃত্তি করে ততক্ষণে উত্পাদিত এলোমেলো সংখ্যা 0.1 এর চেয়ে কম হয় এবং প্রতিবার 1 যোগ করে। এটি এখানে চেষ্টা করুন (সম্পূর্ণ প্রোগ্রাম সংস্করণ) এবং এটি এখানে 100 বার চালান

ব্যাখ্যা

(              Open a while loop
 +             Adds the top two items of the stack
  $0           Pushes 0.1
    1$h        Pushes a random number between 0.0 and 1.0, inclusive
       `       Pops b,a and pushes a > b
        d      Duplicate the top of stack
         )     Close the while loop when the top of stack is 0
          x    Dump the extra, leading 0

ক্লিভারেস্ট অংশটি এখানে d। সময়ে সেই সময়ে স্ট্যাকের শীর্ষটি হয় 0 বা 1 হবে it's এটি যদি 0 হয় তবে লুপটি প্রস্থান করে। অন্যথায়, এটি অবিরত। আমি স্ট্যাকের শীর্ষটিকে সদৃশ হিসাবে, এটি [a+b,1]দ্বিতীয় বার লুপের মাধ্যমে আসবে , সুতরাং +শুরুতে 1 যোগ করা হবে (এবং একইভাবে পরবর্তী ভ্রমণের জন্য)।


এটি কি আসলেই একটি ফাংশন? আমি ভাষা ডকুমেন্টেশনের মাধ্যমে দ্রুত স্ক্যান করেছিলাম, এবং ফাংশন সংজ্ঞা বর্ণনা করে কিছু খুঁজে পাইনি। ব্যাখ্যার উপর ভিত্তি করে, এটি একটি কোড খণ্ডের মতো দেখায়।
রেটো কোরাডি

@ রিটোকোরাডি: আমি এর নিজস্ব লাইনে এ জাতীয় "কোড টুকরা" রাখতে পারি, এটিতে 0 কেএফ (যেখানে কে কিছু সংখ্যক) দিয়ে ঝাঁপিয়ে পড়তে পারি, এবং শেষে চ দিয়ে ফিরে যেতে পারি। এটি মিনকোল্যাং-এ কোনও ফাংশনে আপনি নিকটতম হন।
এল'েন্ডিয়া স্টারম্যান

2
প্রযুক্তিগতভাবে কি "আমার সিজেএম কোড খণ্ডটি একটি ফাংশন বলার মতো নয়; আপনাকে কেবল এটি কোঁকড়া ধনুর্বন্ধনী দ্বারা ঘিরে ফেলতে হবে"? খুব কমপক্ষে, আপনার সম্ভবত fচার্ট গণনার শেষে অন্তর্ভুক্ত করা উচিত (এবং প্রযুক্তিগতভাবে আপনি যদি অতিরিক্ত পেডেন্টিক অনুভব করেন তবে পূর্ববর্তী নিউলাইনটি, তবে আমি এটি প্রয়োজনীয় মনে করি না)।
ডোরকনবব

1
যদি ভাষাটির কোনও কার্যকারিতা না থাকে তবে আপনি সর্বদা সম্পূর্ণ প্রোগ্রাম পোস্ট করতে পারেন। আমার বোধগম্যতা হল এটি যখন "ফাংশন" বলবে তখন তা হয় একটি নামকৃত ফাংশন বা একটি বেনামি ফাংশন (যা সাধারণত একটি অভিব্যক্তি যা কোনও ফাংশন ভেরিয়েবলের জন্য নির্ধারিত হতে পারে) হতে হবে। আমি একবার সিজেমে এর সাথে অনুরূপ কিছু পোস্ট করেছি এবং মার্টিন দ্রুত আমাকে এতে ডেকে বললেন, এটি কোনও কোড নয়, কোনও ফাংশন নয়।
রেটো কোরাডি

@ রিটোকোরাডি: ঠিক আছে, এটি বোধগম্য। আপনি ডোরকনব এর পরামর্শ সম্পর্কে কি মনে করেন?
এল'েন্ডিয়া স্টারম্যান

12

সিজেম, 12 11 বাইট

{{+Amr!}h;}

এই সুপার চতুর কৌতুক সহ একটি বাইট সংরক্ষণ করার জন্য @ মার্টিনবাটারকে ধন্যবাদ!

{         }
 {     }h    Do-while that leaves the condition on the stack.
  +          Add: this will add the numbers on the first iteration...
   Amr!      ... but a `1` (i.e. increment) on future ones.
         ;   Pop the remaining 0.

পুরানো উত্তর:

{+({)Amr!}g}

এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

{          }  A "function."
 +            Add the input numbers.
  (           Decrement.
   {     }g   A while loop.
    )         Increment.
     Amr      Random number [0,9).
        !     Boolean NOT.

বেসিক অ্যালগরিদমটি "যখন (0.1 সুযোগ) হয়, সংখ্যা বৃদ্ধি করে", যা পুনরাবৃত্তির প্রয়োজনীয়তা অপসারণ করে।


8

জাভাস্ক্রিপ্ট ES6, 38 বাইট

f=(a,b)=>Math.random()<.1?f(a,b+1):a+b

f=(a,b)=>new Date%10<1?f(a,b+1):a+b35 বাইটের জন্য
ওয়েলওয়েস্ট

2
@ ওলিওয়েস্ট দুর্ভাগ্যক্রমে Dateটাইমস্ট্যাম্প ব্যবহার করার সময় সম্ভাবনাটি সঠিক হবে না কারণ এটি যদি মূল্যায়ন trueকরে তবে এটি 1মিলিসেকেন্ডের বাকি অংশগুলিতে যোগ করতে থাকবে ।
ব্যবহারকারী 81655

আমি জ্যামিতিক বিতরণ চেষ্টা করেছি f=(a,b)=>a+b-~~Math.log10(Math.random())তবে এটি 2 বাইট দীর্ঘ longer
নীল

8

এমএটিএল , 14 13 12 বাইট

is`r.1<tb+w]

এটি কেবল লুপ পদ্ধতি, ইনপুটগুলি যুক্ত করুন (হিসাবে প্রবেশ করা হয়েছে [a b]) তারপরে একটি যুক্ত করতে থাকুন যখন 0 এবং 1 এর মধ্যে অভিন্ন র্যান্ডম সংখ্যা 0.1 এর কম হয়। সম্পূর্ণ বিবরণ নীচে:

i         % input [a b]
s         % sum a and b
`         % do...while loop                                      
  r       % get a uniformly distributed pseudorandom numbers between 0 and 1       
  .1      % push 0.1 onto the stack                                   
  <       % is the random number less than 0.1?
  t       % duplicate the T/F values                                        
  b       % bubble a+b to the top of the stack                       
  +       % add the T/F to a+b     
  w       % swap elements in stack to get the other T/F back to exit/continue the loop                           
]         % end    

(থেকে ইনপুট বৈশিষ্ট পরিবর্তন করে 1 বাইট খুলে নিয়ে ii+যাও is)।


পুরানো উপায়টি 0 থেকে 1 এর মধ্যে একটি এলোমেলো সংখ্যার বেস -10 লগটি যোগ করার পরিমাণটি বের করার জন্য নেওয়া হয়েছিল a+b, তবে এটি কেবলমাত্র ভাসমান পয়েন্টের নির্ভুলতার কারণে 15 টি পুনরাবৃত্তি পর্যন্ত কাজ করতে পারে।

iir10,2$YlZo-+

এই 10,2$YlZo-কোডটিতে, এলোমেলো সংখ্যার বেস -10 লোগারিদম করে এবং নিকটতম পূর্ণসংখ্যার বৃত্তাকার হয়।


নিখুঁত মন্তব্য, যদিও আমি আপনাকে অন্য যে কোনও সমাধান উপস্থাপনের সাথে 15 জেনারেট করতে দেখতে চাই: পি অন্য একটি উপায়, 15 বাইটের জন্য, সহজ লুপিং সংস্করণ ii+`10Yr1=tb+w]:, এখনও গল্ফ করা হয়নি।
ডেভিড

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

খুব সুন্দরভাবে সম্পন্ন!
লুইস মেন্ডো 10

7

বাইনারি-এনকোডেড গল্ফিকাল , 32 29 + 1 ( -xপতাকা) = 30 বাইট

হেক্সডাম্প (ট্রান্সপ্লেলারের চিত্র-থেকে-বাইনারি অংশে বাগের জন্য সংশোধন করার জন্য ম্যানুয়ালি সম্পাদনা করা হয়েছে, যা পরে স্থির করা হয়েছে):

00 B0 02 15 14 0C 01 14 15 14 1B 1E 3A 14 0C 01
14 00 0A 14 38 00 01 23 1D 4C 14 17 14

এই এনকোডিংটি অন্তর্ভুক্ত এনকোডার ইউটিলিটি ব্যবহার করে মূল গ্রাফিকাল উপস্থাপনায় ফিরে রূপান্তর করতে পারে, বা -xপতাকা ব্যবহার করে সরাসরি চালানো যেতে পারে ।

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

ম্যাগনিফাইড 50x:

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

ব্যাখ্যা: উপরের সারিটি মূল ব্লক। এটি একটি সংখ্যা পড়ে, ডানদিকে এটি অনুলিপি করে, অন্য একটি সংখ্যা পড়ে, তাদের যোগ করে, ডানদিকে ফলাফলটি অনুলিপি করে, কিছু আরএনজি জিনিস তোলে, এবং 90% সম্ভাব্যতার সাথে সংযোজনের ফলাফল মুদ্রণ করে। বাকি সময়, এটি নীচের সারিতে প্রেরণ করা হয়, যেখানে এটি প্রথম কক্ষে একটি রাখে এবং সংযোজনের নির্দেশের ঠিক আগে (পূর্ব দিকে বাঁক দিয়ে উত্তর টার্ন ব্যবহার করে) প্রথমে মূল সারিতে ফিরে যায়।


2
আপনি একটি ব্যাখ্যা যোগ করতে পারেন? এটা দুর্দান্ত।
বিড়াল

7

পাইথন, 66 65 64 63 বাইট

from random import*
g=lambda*s:randint(0,9)and sum(s)or g(1,*s)

এটি অনলাইনে চেষ্টা করুন

সংশোধন এবং বাইট সংরক্ষণের জন্য শেরলক 9 কে ধন্যবাদ।

আরেকটি বাইটের জন্য ম্যাথিয়াস এটিঙ্গারকে ধন্যবাদ।

একটি বাইট জন্য mbomb007 ধন্যবাদ।




@ এএসসিআইআই-কেবলমাত্র .9>random()10-এর মধ্যে 9-এর বাইরে নয়,
ভাসমানদের

6

জুলিয়া, 30 বাইট

f(a,b)=rand()>0.9?f(a,b+1):a+b

এটি একটি পুনরাবৃত্ত ফাংশন fযা দুটি সংখ্যা গ্রহণ করে এবং একই ধরণের একটি সংখ্যা প্রদান করে। এটি কোনও সংখ্যাসূচক প্রকারের জন্য সূক্ষ্মভাবে কাজ করা উচিত।

প্রথমে আমরা 0 এবং 1 এর মধ্যে এলোমেলো ভাসমানটি 0.9 এর চেয়ে বেশি কিনা তা পরীক্ষা করে দেখি। যদি তা হয় তবে আমরা কিছুটা 'সামথিন' দিয়ে কিছুটা পুনরুক্তি করি, অন্যথায় আমরা কেবল যুক্ত করি।


6

টিআই-বেসিক, 15 বাইট

While rand<.1
Ans+.5
End
sum(Ans

এটি থেকে দ্বি-উপাদান তালিকা হিসাবে ইনপুট নেয় Ans। যদিও এলোমেলো সংখ্যার চেয়ে কম 0.1, এটি 0.5তালিকাতে ভেক্টরাইজড সংযোজন করে। প্রতিটি উপাদান 0.5বৃদ্ধি করে যোগফল 1 টি বৃদ্ধি করে I আমি বিশ্বাস করি এটি হ'ল সংক্ষিপ্ততম টিআই-বেসিক সমাধান।

9-বাইট প্রোগ্রামটি sum(Ans)-int(log(10randকাজ করে না, কারণ randকেবল 14 সংখ্যক যথার্থতা রয়েছে এবং সুতরাং এটি কোনও সংখ্যা 10 -14 এর চেয়ে কম দিতে পারে না ।


1
এটি 14 যোগ করার জন্য মূল্যবান, আপনাকে শূকরগুলি উড়তে হবে এবং নরককে হিমায়িত করতে হবে। এবং আপনি 14 যুক্ত করার সময় আমি আমার জীবন দিয়ে কিছু করব with
নিক হার্টলি

5

এপিএল, 17 বাইট

{1=?10:⍺∇⍵+1⋄⍺+⍵}

এটি একটি নামবিহীন ডায়াডিক ফাংশন।

Ungolfed:

{1=?10:            ⍝ If a random number between 1 and 10 is 1,
       ⍺∇⍵+1       ⍝ Recurse on the inputs with one incremented
            ⋄⍺+⍵}  ⍝ Otherwise return the sum of the inputs

5

পাইথ, 14 12 বাইট

KsQW!OT=hK;K

আমার প্রথম বাস্তব পাইথ গল্ফ!

ফর্ম্যাটে STDIN এ ইনপুট নেয় a,b

ব্যাখ্যা:

KsQ       read STDIN, assign sum to variable K
W         while...
  !OT       not rand(10)
  =hK;      increment K
K         implicit-output of K

একটি ভেরিয়েবল ইনক্রিমেন্ট করার জন্য একটি ছোট্ট উপায় দিয়ে আমাকে দুটি চর মুণ্ডন করার জন্য @ ফ্রাইআমএইটিজিমনকে ধন্যবাদ!


5

ভিটসি , 12 10 বাইট

aR)[1+0m]+
aR          Get a random number in [0,10)
  )[    ]   If its truncated int is 0, do the stuff in brackets.
    1+0m    Add 1 to one of the items and execute the 0th index of code.
         +  Add the numbers together.

এটি অনলাইন চেষ্টা করুন!

মনে রাখবেন যে এটিতে স্ট্যাক ওভারফ্লো ত্রুটির একটি ক্ষুদ্র সম্ভাবনা রয়েছে। আমরা (.1)^400সুযোগ বলছি । আমি কীভাবে পুনরাবৃত্তি করেছি তার কারণে এটি ত্রুটি থেকেও বেরিয়ে আসে।


4

লিস্প, 58 বাইট

আমার প্রথমবারের মতো লিস্প!

(defun +(a b)(if(<(random 10)9)(- a(- b))(- a(-(+ b 1)))))

আপনি সাধারণত এই বিশেষ সংযোজনটি ঠিক যেমন ব্যবহার করতে পারেন যেমন আপনি লিস্পে যোগ করবেন:

> (+ 1 3)
4
> (+ 1 3)
5

আমি ভাষায় একেবারে নতুন হওয়ায় আমি পরামর্শগুলি শুনতে পছন্দ করব।


চান (- a(- -1 b))কাজ করে? এটি করলে 2 বাইট সংরক্ষণ করে Sa
নীল

@ নীল, আমি মনে করি না যে এটি কাজ করে কারণ ফাংশনটি পুনরাবৃত্ত হওয়া উচিত
sudo rm -rf slash

অভিব্যক্তিটি কেন এত জটিল মনে হচ্ছে তা বোঝানোর জন্য ধন্যবাদ।
নিল

4

সিরিয়াসলি, 10 বাইট

,Σ1±╤_G_\+

এই প্রোগ্রামটি জ্যামিতিক বিতরণ থেকে অভিন্ন বিতরণকে রূপান্তরিত করে একটি এলোমেলো পরিবর্তনশীল উত্পন্ন করে। এটি তালিকা হিসাবে ইনপুট নেয়: [2,3](braচ্ছিক বন্ধনী)। এটি অনলাইনে চেষ্টা করুন

ব্যাখ্যা:

,Σ1±╤_G_\+
,Σ          get sum of input
  1±╤_      push ln(0.1)
      G_    push ln(random(0,1))
        \   floored division
         +  add

একটি এলোমেলো ভেরিয়েবল দেওয়া X ~ Uniform(0, 1), এটি Y ~ Geometric(p)সূত্রের সাহায্যে একটি এলোমেলো ভেরিয়েবলে রূপান্তরিত হতে পারে Y = floor(log(X)/log(p))


3

গণিত, 32 বাইট

If[RandomReal[]<.1,+##,#0@##+1]&

ব্যাখ্যা:

                               &   A function returning
If[                           ]     if
   RandomReal[]                       a random number in [0,1)
               <                     is less than
                .1                    .1
                  ,                 , then
                   +                 the sum of
                    ##                all arguments
                      ,             , otherwise,
                       #0@            this function applied to
                          ##           all arguments
                            +        plus
                             1        one.

মনে রাখবেন যে এই ফাংশনটি সংখ্যার ইনপুটগুলির জন্য কাজ করে।



3

ক্যান্ডি , 11 বাইট

+#10H{.}10g

দীর্ঘ ফর্মটি হ'ল:

add          # add two numbers on the stack
number digit1 digit0 rand  # random int from 0 to 9         
if           # if non-zero
  retSub     # terminate loop
endif
digit1       # push 1 to stack
digit0 goto  # loop to start

3

সি, 71 51 39 37 বাইট

প্রথম কোড-গল্ফ, সি-তে করা হয়েছে ... আমি মনে করি না এটি কোনও কিছুকে পরাজিত করবে এবং অনেকটা গল্ফ হতে পারে

সম্পাদনা 3: ০.০ এর পরিবর্তে .১ লিখে এবং টার্নারি অপারেটরটি পুনরায় লেখার জন্য @ মেগোকে ধন্যবাদ জানিয়ে 2 বাইট

a(x,y){return(rand()<.1?a(1,y):y)+x;}

সম্পাদনা 2: gnu99 অনুসরণ করে 12 বাইট চিহ্নিত করা হয়েছে, অন্য পরিবর্তনগুলি যদি বর্ণিত না হয় তবে প্রতিটি ভেরিয়েবল একটি ইনট হয়। একই ফাংশন রিটার্ন টাইপ জন্য যায়

a(x,y){return rand()<0.1?a(x,y+1):x+y;}

সম্পাদনা: 20 বাইট হিসাবে চিহ্নিত, বেসিকটি ভুলে গেছে h সি 99 এ প্রয়োজনীয় নয় (উদাহরণস্বরূপ জিসিসি ব্যবহার করে)। এটি একটি সতর্কতা উত্পাদন করবে :)

int a(int x,int y){return rand()<0.1?a(x,y+1):x+y;}

71 বাইট সমাধান:

#include <stdlib.h>
int a(int x,int y){return rand()<0.1?a(x,y+1):x+y;}

আপনি যদি প্রচুর আউটপুট দেখতে চান তবে নীচের কোডটি ব্যবহার করতে পারেন

#include <stdio.h> 
#include <stdlib.h>
int a(int x,int y){return rand()<0.1?a(x,y+1):x+y;}

int main(void) 
{
    int i,j;
    for(i=0;i<10;i++)
        for(j=0;j<10;j++)
            printf("%d + %d = %d\n",i,j,a(i,j));
    return 0;
}

3

এমএটিএল , 12 13 14 বাইট

r.1H$YlY[ihs

ইনপুটটি ফর্মের [3 4], অর্থাৎ দুটি সংখ্যার সারি ভেক্টর।

উদাহরণ

>> matl r.1H$YlY[ihs
> [3 4]
7

ব্যাখ্যা

এটি লুপ ছাড়াই জ্যামিতিক এলোমেলো পরিবর্তনশীল উত্পন্ন করে, সরাসরি অভিন্ন র্যান্ডম ভেরিয়েবলটিতে আ ট্রান্সফরমেশন প্রয়োগ করে । লক্ষ্য করুন লগ ইন 0.1 একটি লগ পরিবর্তে ব্যবহার করা হয় একটি 1 বাইট সংরক্ষণ করতে / log 0.1।

r        % random number with uniform distribution in (0,1)
.1       % number 0.1
H$       % specify two inputs for next function
Yl       % logarithm in specified base (0.1)
Y[       % floor. This produces the geometric random variable with parameter 0.1
i        % input vector of two numbers
h        % concatenate horizontally with the previously generated random value
s        % sum of vector elements

3

মাইক্রোস্ক্রিপ্ট , 29 21 বাইট

isi+vzr10!{l1vzr10!}l

আমি একটি মাইক্রোস্ক্রিপ্ট দ্বিতীয় উত্তর দেওয়ার চেষ্টা করেছি তবে কোনও কারণে আমি ঠিক মতো কাজ করার জন্য লুপটি পেতে পারি না :(


3

মাউস -2002 , 41 39 38 বাইট

কোন পুনরাবৃত্তি।

&TIME &SEED ??&RAND k*&INT 9=[+1+!|+!]

ব্যাখ্যা:

&TIME &SEED               ~ painfully obvious

? ?                       ~ get some input
&RAND 10 * &INT 8 >       ~ get a random number 0-1 * 10, make it an int & check if >8
[                         ~ if true
  + 1 + !                 ~ add the input then add 1 and print
|                         ~ else
  + !                     ~ add and print
]                         ~ endif
$                         ~ (implicit) end of program

অথবা, যদি আপনি একটি কার্যনির্বাহী প্রোগ্রামিং ফ্যানবয় হন এবং পুনরাবৃত্তি আপনার চুক্তি হয় তবে 57 বাইট :

&TIME &SEED #A,?,?;!$A&RAND k*&INT 9=[#A,1%,2%1+;|1%2%+]@

ব্যাখ্যা:

&TIME &SEED            ~ painfully obvious

#A, ?, ?; !            ~ call with input & print

$A                     ~ begin a definition of a function A

  &RAND 10 * &INT 8 >  ~ same as above
  [
    #A, 1%, 2% 1 +;    ~ call with args and add 1
  |
    1% 2% +            ~ else just add
  ]
@                      ~ end func
$                      ~ as above

3

জেলি , 7 বাইট (প্রতিদ্বন্দ্বী)

‘⁵XỊ¤¿+

এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

‘⁵XỊ¤¿+  Main link. Arguments: n, m (integers)

    ¤    Combine the three atoms to the left into a niladic chain.
 ⁵       Yield 10.
  X      Pseudo-randomly generate a positive integer not greater than 10.
   Ị     Insignificant; test if the generated integer is 1 (or less).
     ¿   While chain yields 1:
‘          Increment n.
      +  Add m to the result.

3

এপিএল (ডায়ালগ ইউনিকোড) , 13 12 বাইট এসবিসিএস

মূলত FryAmTheEggman এর পাইথ সলিউশন হিসাবে একই । -1 এরিক দ্য আউটগোল্ফারকে ধন্যবাদ।

বেনামে টাসিট ইনফিক্স ফাংশন।

{⍵+1=?10}⍣=+

এটি অনলাইন চেষ্টা করুন!

+ যুক্তি যুক্ত করুন

{}⍣= পরপর দুটি প্রয়োগের একই ফল না পাওয়া পর্যন্ত নিম্নলিখিত ফাংশনটি প্রয়োগ করুন:

?10 1-10 ব্যাপ্তির মধ্যে এলোমেলো পূর্ণসংখ্যা

1= এর সমান এক? (অর্থাত্ 110 তম সুযোগ)

⍵+ যুক্তি যুক্ত করুন


আপনি দুটি আর্গুমেন্ট হিসাবে দুটি পূর্ণসংখ্যার নিতে এবং এটি সরাতে পারেন /
এরিক আউটগলফার

পুনঃটুইট
অ্যাডম

2

পার্ল 6 , 26 বাইট

আসলে এটি পুনরাবৃত্তভাবে করছেন:

sub f{.1>rand??f |@_,1!![+] @_} # 31 bytes

1যুক্তিগুলির পরে একটি সম্ভবত শূন্য সিক্যুয়েন্স তৈরি করুন , তারপরে সমস্তগুলি একসাথে যোগ করুন।

{[+] {1}...^{rand>.1},|@_} # 26 bytes

(এটি আসলে যে কোনও সংখ্যক আর্গুমেন্ট নিতে পারে)

ব্যবহার:

# give the lambda a name
my &f = {...}

say f 1,2; # one of 3,4,5 ... *


2

পাইথ, 11 বাইট

+sQ-18l`hO0

আমার পাইথন উত্তরের একটি সরাসরি পাইথ বন্দর ।

+             Add up
 sQ            the sum of the input and
   -           the difference of
    18          18 and
      l`         the string length of
        hO0       one plus a random number in [0,1)

2

অক্টাভা, 20 বাইট

@(a,b)a+b+geornd(.9)

ইনপুটগুলির যোগফল, প্যারামিটার সহ জ্যামিতিক বিতরণ থেকে একটি এলোমেলো নমুনা 0.9


2

গম্ভীরভাবে, 13 বাইট

,,1W+9uJYWDkΣ

ডুরকনব-এর সিজেএম উত্তরের অনুরূপ কৌশল ব্যবহার করে (বর্ধিত সংখ্যা যখন এলোমেলো ফ্লোট 0.1 এর চেয়ে কম) ব্যতীত, এটি পূর্ণসংখ্যার ব্যবহার করে এবং বর্ধনশীল যখন এলোমেলো পূর্ণসংখ্যা [0,9]1 এর চেয়ে কম হয় তবে সহজেই পুনরাবৃত্তির অভাব ব্যথা করে।

এটি অনলাইনে ব্যবহার করে দেখুন (ম্যানুয়াল ইনপুট প্রয়োজন)

ব্যাখ্যা:

,,1W+9uJYWDkΣ
,,1            get input, push 1
   W     W     while loop:
    +            add top two elements
     9uJ         push a random integer in [0, 9]
        Y        push 1 if random value is falsey (0) else 0
          DkΣ  decrement top value and add everything together

যখন লুপটি স্ট্যাকটি ছেড়ে যায়:

n: the # of times the random value was < 0.1, plus 1
b: the second input
a: the first input

ভুয়া থাকার nকারণে চালানোর সময় লুপটি পেতে 1 দ্বারা স্থানান্তরিত হওয়া প্রয়োজন 0। এটি nলুপের পরে হ্রাস করে সহজেই মোকাবেলা করা হয় , সুতরাং চূড়ান্ত ফলাফল a + b + (n - 1)


2

ম্যাটল্যাব, 51 বাইট

function f(a,b)
if rand > .1;a+b;else;f(a,b+1);end

'আনস' স্বয়ংক্রিয় চলকটিতে ফলাফল পাওয়া যায়

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