আমি উত্সটি গুণ করি, আপনি (সম্ভবত) আউটপুটকে গুণান!


18

কার্য

কাজটি এমন একটি প্রোগ্রাম লিখতে হয় যা একটি সামঞ্জস্যপূর্ণ তবে অন্যথায় স্বেচ্ছাচারিত ইতিবাচক পূর্ণসংখ্যার x (এত সহজেই 0 এর চেয়ে বড়) হয়। ধরা পড়ার জন্য: উত্সটি N বার পুনরাবৃত্তি করা হয় (কোডটি নিজের সাথে এনডি সংযুক্ত / সংযুক্ত করা হয়), প্রোগ্রামটির একটি of আউটপুট পাওয়ার সম্ভাবনা এবং এর অবশিষ্ট সম্ভাবনা থাকা উচিত outputting এর অপরিবর্তিত।N11NNxN1Nx

উদাহরণ

আসুন ধরে নেওয়া যাক আপনার প্রাথমিক উত্সটি হল XYZএবং পূর্ণসংখ্যা উত্পাদন করে 3। তারপর:

  • জন্য N=2 : XYZXYZউচিত আউটপুট একটি সম্ভাব্যতা সঙ্গে (সময় 50%) এবং একটি সম্ভাব্যতা সঙ্গে31223=612 পাশাপাশি (সময়ের 50%)।

  • জন্য N=3 : XYZXYZXYZউচিত আউটপুট 3 একটি সম্ভাব্যতা সঙ্গে 23 (সময় এর 66,666%) এবং33=9একটি সম্ভাব্যতা সঙ্গে13 (সময়ের 33.333%)

  • জন্য এন=4 : XYZXYZXYZXYZউচিত আউটপুট 3 একটি সম্ভাব্যতা সঙ্গে 34 (সময়ের 75%) এবং1 এর সম্ভাব্যতা সহ43=1214 (সময়ের 25%)

ইত্যাদি

বিধি

  • আপনাকে অবশ্যই একটি সম্পূর্ণ প্রোগ্রাম তৈরি করতে হবে । আউটপুটটি STDOUT এ মুদ্রণ করতে হবে।

  • আপনার প্রোগ্রামটি, তাত্ত্বিকভাবে, উপরে বর্ণিত সম্ভাব্যতার সাথে প্রতিটি সম্ভাব্য মান আউটপুট করা উচিত, তবে এলোমেলো বাস্তবায়নের কারণে এ থেকে সামান্য বিচ্যুতি ঠিক আছে ( প্রদত্ত যে বাস্তবায়নটি আলাদা বিতরণের নয়) - আপনি এটি ব্যবহার করতে পারবেন না বাইটস সংরক্ষণের জন্য সাধারণ বিতরণ )

  • প্রোগ্রামটি (আবার তাত্ত্বিকভাবে) একটি নির্বিচারে বড় এন জন্য কাজ করা উচিত , তবে নির্ভুলতার কারণে প্রযুক্তিগত সীমাবদ্ধতা বড় এন

  • আউটপুট অবশ্যই বেস 10 এ থাকতে হবে (অন্য কোনও বেসে বা বৈজ্ঞানিক স্বরলিপি সহ আউটপুট নিষিদ্ধ)। চলার / শীর্ষস্থানীয় স্থান এবং নেতৃস্থানীয় শূন্যগুলি অনুমোদিত।

  • প্রাথমিক উত্স অবশ্যই (অবশ্যই) কমপক্ষে 1 বাইট দীর্ঘ হতে হবে। আপনি আপনার উত্সের অনুলিপিগুলির মধ্যে একটি নতুন লাইন ধরে নাও নিতে পারেন। প্রোগ্রামটির ইনপুট নেওয়া উচিত নয় (বা একটি অব্যক্ত, খালি ইনপুট থাকতে হবে)।

  • এটি , সুতরাং একটি উত্তরের স্কোর হ'ল (মূল) উত্সের দৈর্ঘ্য হ'ল কম স্কোর আরও ভাল।

দ্রষ্টব্য: এই চ্যালেঞ্জ একটি (অনেক) এর কঠিন সংস্করণ এই এক


প্রোগ্রামটি কি তার উত্স কোডটি পড়তে পারে?
আমার সর্বনামটি 14

3
হ্যাঁ, এটি অনুমোদিত,
মিঃ এক্সকডার

উত্তর:


16

আর , 66 35 বাইট

-২৯ বাইটস ডিগএএমএলকে ধন্যবাদ ।

-2 ধন্যবাদ বাইট : Giuseppe

+0->A
x=!0:F
F=F+1
sample(F*x+!x,1)

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

এন = 4 এর জন্য বিতরণ পরীক্ষা করুন।

কীটি হ'ল ডান দিকের অ্যাসাইনমেন্ট ->। কোডটি N বারের সাথে গুণিত করা হলে , প্রথম N1 কলগুলি sampleবরাদ্দ করা হবে Aএবং কেবলমাত্র শেষ কলটি মুদ্রণ করা হবে।

আসল, আরও সংশ্লেষিত সমাধান:

আর , 66 বাইট

T->TT
F=F+1
TT=0
`?`=function(x)if(x)sample(c(1,F),1,,c(1,F-1))
?T

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

এটি অনলাইনে চেষ্টা করুন (3 বার পুনরাবৃত্তি)!

দুটি কৌশল অবলম্বন করে: 1) আগ্রহের মূল ফাংশনটি কল করুন ?, যাতে আমরা বন্ধনীর মাধ্যমে প্রোগ্রামটি শেষ না করে কল করতে পারি এবং 2) ভেরিয়েবল Tএবং TTকোড দিয়ে শুরু হয় যা দিয়ে শুরু Tহয় ?T

Fপুনরাবৃত্তি কাউন্টার। ?একটি ফাংশন যা বুলিয়ান যুক্তি লাগে পুনরায় সংজ্ঞায়িত: যদি ইনপুট ?হয় TRUE(অথবা T), এটা প্রয়োজনীয় র্যান্ডম স্যাম্পলিং আছে; যদি ইনপুটটি FALSE(বা 0) হয় তবে তা কিছুই করে না। এর মান TTহিসাবে সংজ্ঞায়িত করা হয় 0, যাতে ?Tএটি নমুনা দেয় তবে ?TTকিছুই করে না।

উত্সটি পুনরাবৃত্তি করা হলে, এটির মতো দেখাচ্ছে:

T->TT
F=F+1
TT=0
`?`=function(x)if(x)sample(c(1,F),1,,c(1,F-1))
?TT->TT
F=F+1
TT=0
`?`=function(x)if(x)sample(c(1,F),1,,c(1,F-1))
?T

সুতরাং মধ্য কল ?TTকল ?Tআউটপুট চূড়ান্ত কল ছাড়া এলোমেলো ফলাফল।


5
আমি মনে করি না যে আমি কখনও ->কোড গল্ফের এমন পরিস্থিতিতে <-পড়তে দেখেছি যেখানে হতে পারে না; এই এত শান্ত!!
জিউসেপ

পিএস আমি এক পর্যায়ে এটি একটি অনুদান দিতে হবে।
জিউসেপে

2
একদম চমত্কার!
digEmAll


@ ডিজিএম সব আরও পরিষ্কার, ধন্যবাদ!
রবিন রাইডার

11

পাইথন 3 , 81 79 বাইট

+0if[]else 1
from random import*
try:n+=1
except:n=1
print([1,n][random()*n<1])

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

-1 বাইট @ নিশিওকে ধন্যবাদ

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


-1 বাইট:+0 if[]else 1
নিশিওকা

ধন্যবাদ নিশিওকা আপডেট করা হয়েছে।
জোয়েল

11

বাশ , 31 বাইট

trap echo\ $[RANDOM%++n?1:n] 0;

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

trap ... 0প্রস্থান করার সময় থাকা কোডটি চালাবে। বারবার trapগুলি পুরানোগুলি ওভাররাইট করবে। $[arithmetic expansion]প্রতিবার নতুন একটি ফাঁদ সেট হয়ে গেলে দাবীবিহীন দৌড়ে যায়।


Zsh এর মাধ্যমে একটি বাইট সংরক্ষণ করতে পারে <<<:

trap "<<<$[RANDOM%++n?1:n]" 0;



4

পাইথন 3 , 78 76 75 বাইট

পোস্ট করা লিঙ্কটির মতো একই কৌশল ব্যবহার করে , এখানে পাইথন রয়েছে (x = 1 সহ)।

from random import*;n=len(*open(__file__))//75;print(1+~-n*(random()<1/n))#

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

-2 বাইটস জনাব এক্সকোডারকে তার (n-1)সূত্রের জন্য ধন্যবাদ, ~-nযার সাথে নিশিওকার কাছে *
-1 বাইটের চেয়ে বেশি অগ্রাধিকার রয়েছে


1
আমার কাছে ভালই মনে হচ্ছে! import random;n=len(*open(__file__))//76;print(1+~-n*(random.random()<1/n))#-2 বাইট জন্য কাজ করা উচিত
মিঃ এক্সকোডার

1
আমি এন -1 করার এই উপায়টি কখনও দেখিনি! আমি এটি পছন্দ করি, ধন্যবাদ :)
পেরিস ডুয়াদি


অন্য -১ বাইট তবে কিছুটা ভিন্ন পদ্ধতির সাথে: tio.run/##K6gsycjPM/7/…
নিশিওকা

হ্যাঁ আমি random()<1/n;-) এর কারণে করি
পেরিস ডুয়াদি




3

রুবি , 40 বাইট

1
n||=@x=0
n+=1
puts 1>rand(n)?n:1 if @x

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

এটি অনলাইনে চেষ্টা করুন (3 বার অনুলিপি করা হয়েছে)!

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

রুবি , 38 বাইট

ফাইলটি পড়ে 2 বাইট সংরক্ষণ করা হয়েছে:

n=File.size($0)/38;puts 1>rand(n)?n:1#

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


2

রুনিক এনেক্যান্টমেন্টস , 31 বাইট

UwR'10<;$\
I+:'RA0)?/1$;
1
l;
y

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

উত্সটিকে কতবার নকল করা হয়েছে তা গণনা করতে এই উত্তর হিসাবে একই কাঠামো ব্যবহার করে :

ফাঁসি কার্যকর

কেবলমাত্র তালিকার নবম সংখ্যাটি আউটপুট না দেওয়ার পরিবর্তে আমরা সেই মানটি এলোমেলোভাবে একটি সংখ্যা উত্পন্ন করতে ব্যবহার করি, যদি ফলাফল 0 না হয়, 1 মুদ্রণ করুন, অন্যথায় সেই সংখ্যাটি মুদ্রণ করুন।


2

জাপট , 9 8 বাইট

(°Tö)ΪT

পরীক্ষা করুন | দ্বিগুণ | 10 টি পুনরাবৃত্তির পরে 10000 রানের বিতরণ ত্রিবিধ পরীক্ষা
করুন

(°Tö)ΪT
(            :Prevent the operator that follows from being implicitly applied to the first input variable, U
 °T          :Increment T (initially 0) by 1
   ö         :Random element in the range [0,T)
    )        :Closing the parentheses here instead of after the T saves a byte as there would need to be a space here to close the random method
     Î       :Sign - 0 (falsey) or 1 (truthy)
      ªT     :Logical OR with current value of T

আসল, 13 11 10 9 বাইট

পেছনের স্থানটি নোট করুন।

NoÎp°T ö 

পরীক্ষা করুন | দ্বিগুণ | 10 টি পুনরাবৃত্তির পরে 10000 রানের বিতরণ ত্রিবিধ পরীক্ষা
করুন

NoÎp°T ö 
N             :Initially, the (empty) array of inputs
 o            :Replace the last element with
  Î           :  Its sign (always 1)
   p          :Push
    °T        :  T (initially 0) incremented
       ö      :Random element of N

2

জাভাস্ক্রিপ্ট ( জাভাস্ক্রিপ্ট শেল 71 ), 78 বাইট

(async x=>x)().then(x=>f((''+f).length/78));f=x=>print(1-~x*Math.random()|0)//

কোনও টিও লিঙ্ক নেই, টিও-তে স্পাইডারমনকি খুব পুরানো ...

ফায়ারফক্স (স্পাইডারমনকি) মন্তব্যটিকে ফাংশনের অংশ হিসাবে বিবেচনা করে f। ফলস্বরূপ, (''+f).lengthহতে হবে b+79nযেখানে খ <78, এবং (ঢ + 1 টি) পুনরাবৃত্তি উত্স কোডের বার।

এই বগি (? আমি নিশ্চিত নই। আমি পছন্দ করবো এটি যে কোনও অনুবাদকের চেয়ে জাভাস্ক্রিপ্টের স্পেসিফিকেশনের একটি বাগ ) এই উত্তর পোস্ট করার পরে অন্য কোনও ব্যক্তির আচরণ বিএমওতে জমা দেওয়া হয়েছিল: https://bugzilla.mozilla.org/ show_bug.cgi? id = 1579792 । (বিএমও থ্রেড বা টুইটের কোনওটিই আমার দ্বারা পোস্ট করা হয়নি))


কি দিয়ে (async x=>x)()? কেন এটি async হয়?
টোমা জাটো - মনিকা

@ টোমাজাটো এটি আক্ষরিক অর্থেই asyncকঠোর। সুতরাং x=>f(...)ফাংশন fসংজ্ঞায়িত হওয়ার পরে কলব্যাক শুরু করা হবে ।
tsh

1

সি # (ভিজ্যুয়াল সি # ইন্টারেক্টিভ সংকলক) , 133 114 112 বাইট

এটিই প্রথম (এবং আশাকরি সর্বশেষ) সময়টি আমি কখনও সি # প্রিপ্রোসেসর নির্দেশিকা ব্যবহার করেছি।

#if!I
#define I
static int i;
class p{~p()=>Console.Write(new Random().Next(i)<1?i:1);}p s=new p();
#endif
i++;

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


1

কাঠকয়লা , 12 বাইট

⎚I⎇‽L⊞Oυω¹Lυ

এটি অনলাইন চেষ্টা করুন! লিঙ্কিত প্রশ্নের আমার উত্তরের ভিত্তিতে। nসম্ভাব্যতা সহ ফলাফল আউটপুট ¹/ₙ, অন্যথায় 1। ব্যাখ্যা:

⎚               Remove output from previous iterations
       υ        Initially empty list
        ω       Empty string
     ⊞O         Push
    L           Length
   ‽            Random integer [0..length)
  ⎇             Ternary
         ¹      If nonzero then literal 1
          Lυ    If zero then the new length
 I              Cast to string for implicit print
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.