এলোমেলোভাবে একটি চরিত্র নির্বাচন করুন, প্লিংকো-স্টাইল


27

আসুন দেখে নেওয়া যাক আপনার পছন্দের ভাষা নির্বাচনী এলোমেলোভাবে কতটা ভাল।

প্রদত্ত 4 অক্ষর, A, B, C, এবং D, বা 4 অক্ষরের একটি স্ট্রিং ABCD ইনপুট হিসাবে , নিম্নলিখিত সম্ভাব্যতা দিয়ে অক্ষর আউটপুট এক:

  • A বেছে নেওয়ার জন্য একটি 1/8 (12.5%) সুযোগ থাকা উচিত
  • B একটি 3/8 (37.5%) চয়ন করার সুযোগ থাকা উচিত
  • C একটি 2/8 (25%) বেছে নেওয়ার সুযোগ থাকা উচিত
  • D একটি 2/8 (25%) বেছে নেওয়ার সুযোগ থাকা উচিত

এটি নিম্নলিখিত প্লিনকো মেশিন লেআউটের সাথে একযোগে রয়েছে:

   ^
  ^ ^
 ^ ^ ^
A B \ /
     ^
    C D

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

স্কোরিং

এই তাই অল্পসংখ্যক পরিষেবা বাইট প্রতিটি ভাষার মধ্যে জিতেছে!


আমরা কি আমাদের পছন্দসই ভাষাতে অন্তর্নির্মিত এলোমেলো ফাংশনটি এলোমেলোভাবে ধরে নিতে পারি?
মিঃ এক্সকডার

@ মিঃ এক্সকোডার কারণের মধ্যে, হ্যাঁ।
স্কিডেদেব

সুতরাং, স্পষ্টতার জন্য, ইনপুটটি সর্বদা হ'ল 4 টি অক্ষর এবং এটি প্রদত্ত প্লিনকো বিন্যাস অনুসারে প্রতিটিটির জন্য সম্ভাব্যতা নির্ধারণ করা উচিত? আপনার এলোমেলো উত্স দ্বারা প্রদত্ত নির্ভুলতার মধ্যে যতক্ষণ সম্ভাবনাগুলি সঠিক হয় ততক্ষণ প্লিংক লেআউটগুলি উত্পন্ন করা বা সেগুলি সিমুলেট করা সম্পূর্ণরূপে অপ্রয়োজনীয়?
কামিল দ্রাকারী

1
নিবন্ধন করুন
স্কিডদেব

2
না খুব তার দৈর্ঘ্য কারণে দরকারী, কিন্তু আমি বুঝতে পারলাম যে অভিব্যক্তি ceil(abs(i - 6)/ 2.0)থেকে একটি সূচক ম্যাপ করবে 0-7থেকে একটি সূচক 0-3উপযুক্ত বন্টন (সঙ্গে 0 111 22 33এই চ্যালেঞ্জ জন্য) ...
গ্রীক দার্শনিক ফিনিক্স

উত্তর:


14

লিন মিন বিন মেশিন , 55 43 42 বাইট

-13 বাইট ধন্যবাদ আলেক্স ভার্গাকে ধন্যবাদ

  O
  i
  ^
 ^ ^
\ ^ ^
 i / U
 ii
 ^
i U
U

আশা করি আপনারা আমার মাত্র 2 ঘন্টা পরে আমার নিজের প্রশ্নের উত্তর দিতে আপত্তি করবেন না, তবে আমি খুব সন্দেহ করছি যে অন্য কেউ এলএমবিএম-এ উত্তর পোস্ট করার পরিকল্পনা করেছিল।

এটি আক্ষরিক অর্থেই অপি-তে প্রদর্শিত প্লিনকো লেআউটটি প্রতিফলিত করে, অপ্রয়োজনীয় শ্বেত স্পেস কাটতে অনুভূমিকভাবে উল্টিয়ে গেল।


এটি কীভাবে পরীক্ষা করতে হয় তা আমি জানি না, তবে এটি কাজ করতে পারে: gist.github.com/anonymous/e537edc8c89a72f3631ef765b352b98d
অ্যালেক্স ভার্গা

@ অ্যালেক্স ভার্গা ওহ কাজ করে
স্কিডেদেব


9

জেলি , 6 বাইট

Ḋṁ7;ḢX

একটি মোনাডিক লিঙ্ক চারটি অক্ষরের একটি তালিকা নিয়েছে এবং বর্ণিত সম্ভাব্যতা বিতরণের সাথে একটিকে ফিরে আসবে।

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

কিভাবে?

Ḋṁ7;ḢX - Link: list of characters, s  e.g. ABCD
Ḋ      - dequeue s                         BCD
 ṁ7    - mould like 7 (implicit range)     BCDBCDB
    Ḣ  - head s                            A
   ;   - concatenate                       BCDBCDBA
     X - random choice                     Note that the above has 1*A, 3*B, 2*C, and 2*D

সাথে চালাক চালাকি !
এরিক আউটগল্ফার

9

কিউবিক্স , 39 24 22 21 19 বাইট

.<.^iD>D|@oioi.\i;U

অনলাইন ইন্টারপ্রেটারে দেখুন!

এই নীচের ঘনক্ষেত নেট থেকে মানচিত্র:

    . <
    . ^
i D > D | @ o i
o i . \ i ; U .
    . .
    . .

এলোমেলো বিতরণ বাস্তবায়ন ব্যাখ্যা

কিউবিক্স এমন একটি ভাষা যেখানে কোনও নির্দেশিকা পয়েন্টার ঘনকটির মুখের চারপাশে ভ্রমণ করে এবং কমান্ডগুলির মুখোমুখি হয়। এলোমেলোতার একমাত্র রূপ হ'ল কমান্ড D, যা আইপিকে এলোমেলো পথে প্রেরণ করে: 1/4প্রতিটি উপায়ে একটি সমান সুযোগ

তবে, আমরা এটি সঠিক ওজনযুক্ত সম্ভাব্যতা তৈরি করতে ব্যবহার করতে পারি: Dদুবার ব্যবহার করে। প্রথম Dটি 1/4একটি দ্বিতীয় শিরোনাম এর DDতবে এই দ্বিতীয়টিতে তীর ( > D <)) দিয়ে দু'টি দিক অবরুদ্ধ রয়েছে যা নির্দেশ নির্দেশককে Dঅন্য দিকনির্দেশ চয়ন করতে আবার পাঠায় । এর অর্থ সেখান থেকে কেবল দুটি সম্ভাব্য দিকনির্দেশ রয়েছে, প্রতিটি 1/8ঘটনার সামগ্রিক সম্ভাবনা রয়েছে। এটি নীচের চিত্রের মতো সঠিক অক্ষর তৈরি করতে ব্যবহার করা যেতে পারে:

চিত্র প্রতিটি দিকের সম্ভাব্যতা দেখায়

(মনে রাখবেন যে, আসল কোডে ডান দিকের তীরটি একটি আয়না দিয়ে প্রতিস্থাপন করা হয়েছে, |)

কোড ব্যাখ্যা

        . <
        . ^
IP> i D > D | @ o i
    o i . \ i ; U .
        . .
        . .

নির্দেশ পয়েন্টারটি ডানদিকে, অক্ষরে iডানদিকে মুখ করে শুরু হয় । এটি এটি সম্পাদন করে i, প্রথম অক্ষরটিকে ইনপুট হিসাবে গ্রহণ করে এবং তারপরে Dউপরে প্রদর্শিত র্যান্ডম প্রক্রিয়া শুরু করে the

  • চর এ: প্রথমটি Dআমাদের পূর্ব দিকে এবং দ্বিতীয় দক্ষিণে প্রেরণ করে, আমাদের অক্ষর এটিকে মুদ্রণ করা দরকার এটি প্রথম থেকেই স্ট্যাকের মধ্যে রয়েছে i। নিম্নলিখিতটি কার্যকর করা হয়:

    • \ - আইপি প্রতিফলিত করুন যাতে এটি পূর্ব দিকে যায়
    • i; - একটি ইনপুট নিন, তারপরে আবার পপ করুন (কোনও বিকল্প নেই)
    • U - দুটি বার আইপি বাম দিকে ঘুরিয়ে, একটি ইউ-টার্ন সম্পাদন করুন
    • o - টিওএস, অক্ষর আউটপুট করুন
    • @ - প্রোগ্রামটি শেষ করুন
  • চর বি: যদি প্রথম বা দ্বিতীয় Dমাথাটি উত্তর দিকে হয় তবে আমাদের বি অক্ষর তৈরি করতে হবে যা পরবর্তী ইনপুট হবে। উভয় পাথ নিম্নলিখিত কমান্ডগুলি কার্যকর করে:

    • ^ - উত্তরের দিকে
    • < - পশ্চিম দিকে ঘুরুন, ...
    • i - অন্য একটি ইনপুট নিন, চরিত্র বি
    • o - টিওএস আউটপুট, অক্ষর বি
    • ; - টিওএস পপ করুন
    • @ - প্রোগ্রামটি শেষ করুন
  • চর সি: যদি প্রথমটি Dআমাদের পশ্চিমে প্রেরণ করে তবে নিম্নলিখিতটি কার্যকর করা হয়:

    • i - অন্য একটি ইনপুট নিন, চরিত্র বি
    • i - অন্য একটি ইনপুট নিন, অক্ষর সি
    • o - আউটপুট টিওএস, অক্ষর সি
    • @ - প্রোগ্রামটি শেষ করুন
  • চর ডি: প্রথম যদি Dআমাদের দক্ষিণে প্রেরণ করে তবে নিম্নলিখিতটি কার্যকর করা হয়:

    • i - অন্য একটি ইনপুট নিন, চরিত্র বি
    • .. - দুটি নো-অপ্স
    • i - অন্য একটি ইনপুট নিন, অক্ষর সি
    • | - এই আয়নাটি পূর্ব-পশ্চিমে প্রতিফলিত করে তবে আইপি উত্তর দিকে চলেছে, সুতরাং আমরা এর মধ্য দিয়ে যাব।
    • ^ - এটি বি চরিত্রের জন্য নেওয়া পথের সাথে মিলিত হয় তবে যাইহোক, আমরা ইতিমধ্যে দুটি ইনপুট গ্রহণ করেছি, চতুর্থ অক্ষর (চরিত্র ডি) শেষ হয়ে যাবে মুদ্রিত হওয়ার পরে।

2
এটি দর্শনীয়! আমি বিশ্বাস করতে পারি না আপনি একটি আকার -2 কিউবের যথাযথ সম্ভাব্যতা এবং চারটি পাথ ফিট করতে পেরেছেন । আমি অবাক হয়েছি আমি কিউবিক্স জবাবগুলির ফিডে সাবস্ক্রাইব করতে পারি তাই আমি সেগুলি মিস করি না ...
ETH প্রোডাকশনস

@ এথ প্রডাকশন আপনাকে ধন্যবাদ, আমি নিশ্চিত যে বাইট বা দুটি কেটে ফেলার উপায় আছে তবে আমি এই উত্তরটি নিয়ে বেশ গর্বিতও আছি :)
ফ্লিপট্যাক

8

পাইথন , 50 বাইট

lambda x:choice(x[:2]+x[1:]*2)
from random import*

একটি নামবিহীন ফাংশন স্ট্রিংগুলি গ্রহণ এবং ফিরে আসার (বা অক্ষরের তালিকাগুলি)।

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

কিভাবে?

random.choiceএকটি তালিকা থেকে একটি এলোমেলো উপাদান নির্বাচন করে, তাই ফাংশনটি সঠিক বিতরণ দিয়ে একটি স্ট্রিং গঠন করে, যা দেওয়া হয় "ABCD", "ABCD"[:2] = "AB"এবং এটি "ABCD"[1:]*2 = "BCD"*2 = "BCDBCD"যা প্লাস হয় "ABBCDBCD"


আমি আমার সমাধানটি গল্ফ করার একটি উপায় খুঁজে পেয়েছি এবং তারপরে বুঝতে পেরেছি যে এটি আপনার মতো, ঠিক বিপরীত ক্রমে: /
মিঃ এক্সকোডার

6

আর , 31 বাইট

sample(scan(,''),1,,c(1,3,2,2))

stdinস্থানগুলি দ্বারা পৃথক করা থেকে অক্ষরগুলি পড়ে । শেষ আর্গুমেন্টের দেওয়া ওজন সহ sampleদ্বিতীয় ইনপুট (তাই 1), (replacementচ্ছিক প্রতিস্থাপন যুক্তি) এর পরিমাণে এর প্রথম ইনপুট থেকে এলোমেলো নমুনা আঁকুন।

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

একবার চেষ্টা করে দেখুন n!

পরবর্তী কোডের জন্য, আমি নমুনা nবার ( nশিরোনামে সেট ) রিউস প্রতিস্থাপনের সাথে সেট করে T(এটি ডিফল্ট অনুসারে মিথ্যা), ফলাফলগুলি টেবুলেট করে এবং nইনপুটগুলির আপেক্ষিক সম্ভাবনাগুলি দেখতে ভাগ করে ।


6

পিএইচপি, 28 বাইট

<?=$argn[5551>>2*rand(0,7)];

পাইপ হিসাবে চালান -nR

01112233বেস -4 5551এ দশমিক ...


একই দৈর্ঘ্য সহ 108 টি সম্ভব মান ... 7030আমার ব্যক্তিগত পছন্দের মধ্যে is
তিতাস

5

জাভা 8, 53 44 বাইট

s->s[-~Math.abs((int)(Math.random()*8)-6)/2]

এটি একটি Function<char[], Character>

এটি অনলাইন চেষ্টা করুন! (এই পরীক্ষাটি প্রোগ্রাম উপরের ফাংশন 1,000,000 বার সঞ্চালিত হয় ও পরীক্ষামূলক সম্ভাব্যতা আউটপুট নির্বাচন A, B, C, এবং D)।

এখানে সাধারণ ধারণাটি হ'ল মানচিত্রের কিছু উপায় খুঁজে বার 0-7করা 0-3, যেমন 0প্রদর্শিত 1/8হয়, 1প্রদর্শিত 3/8হয়, 2প্রদর্শিত হয় 2/8এবং বার 3প্রদর্শিত 2/8হয়। round(abs(k - 6) / 2.0))এটির জন্য কাজ করে, যেখানে kপরিসীমাটিতে একটি এলোমেলো পূর্ণসংখ্যা [0,8)। নিম্নলিখিত ম্যাপিংয়ের ফলাফল:

k -> k - 6 -> abs(k-6) -> abs(k-6)/2 -> round(abs(k-6)/2)

0 -> -6 -> 6 -> 3   -> 3
1 -> -5 -> 5 -> 2.5 -> 3
2 -> -4 -> 4 -> 2   -> 2
3 -> -3 -> 3 -> 1.5 -> 2
4 -> -2 -> 2 -> 1   -> 1
5 -> -1 -> 1 -> 0.5 -> 1
6 -> 0  -> 0 -> 0   -> 0 
7 -> 1  -> 1 -> 0.5 -> 1

যা, যেমন আপনি দেখতে পারেন, সূচকের ফলাফল 0 111 22 33, যার মধ্যে পছন্দসই সম্ভাব্যতা উত্পাদন করে 1/8, 3/8, 2/8এবং 2/8

কিন্তু অপেক্ষা করো! কীভাবে বিশ্বে -~Math.abs(k-6)/2একই ফলাফল অর্জন করতে পারে (আবার, kপরিসীমাটিতে এলোমেলো পূর্ণসংখ্যা কোথায় [0,8])? এটি আসলে বেশ সহজ ... (x+1)/2(পূর্ণসংখ্যা বিভাগ) একই জিনিস round(x/2), এবং x + 1একই জিনিস -~x। যদিও x+1এবং -~xএকই দৈর্ঘ্য, উপরের ফাংশনে এটি ব্যবহার করা ভাল -~xকারণ এটি -~অগ্রাধিকার নেয় এবং সুতরাং প্রথম বন্ধনী প্রয়োজন হয় না।


আমি জানি এটি কিছুক্ষণ হয়ে গেছে তবে আপনি পূর্ণসংখ্যা-কাস্টের স্থান পরিবর্তন করে দুটি বাইট গল্ফ করতে পারেন (যেহেতু Math.absডাবলগুলি প্যারামিটার হিসাবে গ্রহণ করে): s->s[-~(int)Math.abs(Math.random()*8-6)/2]( 42 বাইট )।
কেভিন ক্রুইজসেন

5

এপিএল, 14 বাইট

(?8)⊃1 3 2 2\⊢

একটি স্ট্রিং হিসাবে ইনপুট।

কিভাবে?

1 3 2 2\⊢- প্রতিটি অক্ষর x বার পুনরাবৃত্তি ( 'ABCD''ABBBCCDD')

- সূচিতে উপাদানটি নিন ..

(?8) - এলোমেলো 1-8


আপনি আমার জে জবাব উত্তর পর্যালোচনা এবং এটি উন্নত করা যেতে পারে কিনা আমাকে জানতে দেওয়া আপত্তি করতে চান ?
জোনা



@ ইউরাইল এই জাতীয় কোনও এনকোডিং নেই। হয় আপনি পুরো ইউটিএফ -8 যান, বা আপনি প্রতিটি চরিত্রকে দুটি বাইট (UTF-16) হিসাবে গণনা করেন বা আপনি 5 বাইট যুক্ত করেন ⎕U2378
অ্যাডম

@ আদম ওহ, আমি দেখছি তারপরে ডায়ালগকে নতুন প্রতীকগুলির জন্য এই অনাহীন ইউরোপীয় উচ্চারণের কয়েকটি অক্ষর প্রতিস্থাপন করার জন্য বাইটস সংরক্ষণ করুন! ;)
উরিল

4

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

‽⟦εεζζηηηθ⟧

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ ভার্সনের জন্য, যদিও আপনার এটির খুব কমই প্রয়োজন; একটি এলোমেলো উপাদান বেছে নেয়, ⟦⟧একটি তালিকা তৈরি করে এবং ভেরিয়েবলগুলি হ'ল উপযুক্ত ইনপুট চিঠিগুলি (বিপরীত ক্রমে কারণ আমি এটির মতো অনুভব করেছি)।


4

পাইথ , 8 7 বাইট

O+@Q1t+

আমার পাইথন উত্তরের মতো ঠিক একই অ্যালগরিদম ব্যবহার করে।

এখানে চেষ্টা করুন!

পাইথ , 10 8 বাইট

O+<Q2*2t

জোনাথন অ্যালান এর পাইথন উত্তর হিসাবে ঠিক একই অ্যালগরিদম ব্যবহার করে।

এখানে চেষ্টা করুন!


ব্যাখ্যা

  • O- যুক্ত করে (এর সাথে +) তৈরি স্ট্রিংয়ের একটি এলোমেলো উপাদান নেয় :

    • <Q2 - স্ট্রিংয়ের প্রথম দুটি চরিত্র।
    • *2t*2প্রথম অক্ষর ( t) ব্যতীত পূর্ণ স্ট্রিং ( ) ডাবল করুন ।

এই অ্যালগরিদম এর জন্য প্রয়োগ করা হচ্ছে ABCD:

  • <Q2লাগে AB
  • *2tলাগে BCDএবং এটি দ্বিগুণ: BCDBCD
  • +যোগদান করে দুটি স্ট্রিং: ABBCDBCD
  • O একটি এলোমেলো চরিত্র নেয়।

-2 ধন্যবাদ লিকি নুনকে (দ্বিতীয় সমাধান)

-1 স্মৃতিবিদ্যার (প্রথম সমাধান) ধন্যবাদ


>Q1হয়ে যায় tQ, যা হয়ে যায় t
লিকি নুন

আপনি প্রতিস্থাপন দ্বিতীয়টি সমাধান একটি বাইট সংরক্ষণ করতে পারবেন *2সঙ্গে +এবং অন্তর্নিহিত ইনপুট দুইবার ব্যবহার করে।

@ স্মারক ধন্যবাদ, আমি মনে করি আমি এটি ব্যবহার করিনি কারণ আমি তার yপরিবর্তে ভেবেছিলাম যা স্ট্রিংয়ের পক্ষে কাজ করে না ...
মিঃ এক্সকোডার


3

সি # (.নেট কোর) , 76 55 বাইট

s=>(s+s[1]+s[1]+s[2]+s[3])[new System.Random().Next(8)]

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

আমার প্রথম উত্তরটি আমার মোবাইল ফোনটি ব্যবহার করে সরাসরি টিআইওতে লিখিত। এক ধাপ উপরে!

ব্যাখ্যা: মূল স্ট্রিংটি যদি "ABCD" হয় তবে ফাংশনটি "ABCDBBCD" স্ট্রিংটি তৈরি করে এবং এ থেকে এলোমেলো উপাদান নেয় takes


আপনার প্রোগ্রামটি STDIN
স্কিডদেব থেকে

@ মাইউব ঠিক করেছেন, যদিও এটি এখনও গল্ফড হতে পারে ...
চার্লি

3

জাভাস্ক্রিপ্ট 35 বাইট

ABCDইনপুট হিসাবে একটি স্ট্রিং নেয় , Aসময়ের 1/8 তম আউটপুট , সময়ের B3/8 Cতম সময়, 1/4 র্থ সময় এবং D1/4 র্থ সময়।

x=>x[5551>>2*~~(Math.random()*8)&3]

ব্যাখ্যা

x=>x[                     // return character at index
    5551                  // 5551 is 0001010110101111 in binary
                          // each pair of digits is a binary number 0-3
                          // represented x times
                          // where x/8 is the probability of selecting
                          // the character at the index 
    >>                    // bitshift right by
    2 *                   // two times
    ~~(                   // double-bitwise negate (convert to int, then 
                          // bitwise negate twice to get the floor for
                          // positive numbers)
        Math.random() * 8 // select a random number from [0, 8)
    )                     // total bitshift is a multiple of 2 from [0, 14]
    &3                    // bitwise and with 3 (111 in binary)
                          // to select a number from [0, 3]
]


3

> <> , 25 22 19 বাইট

i_ixio;o
ox</;
;\$o

এটি অনলাইন চেষ্টা করুন! , বা মাছের খেলার মাঠে এটি দেখুন !

> <> এর একটি সংক্ষিপ্ত বিবরণ: কোডের মধ্য দিয়ে সাঁতার কাটা একটি মাছের সাথে এটি একটি 2 ডি ভাষা, নির্দেশাবলী যেমন চলছে তেমন কার্যকর করে। যদি এটি কোডের প্রান্তে পৌঁছে যায় তবে এটি অন্য দিকে মোড়ক করে। মাছটি ডানদিকে অগ্রসর হয়ে উপরের বাম কোণে শুরু হয়। এলোমেলোভাবে> <> এ জটিল: একমাত্র র্যান্ডম নির্দেশ হ'ল xযা মাছের দিকটি এলোমেলোভাবে উপরে, নীচে, বাম এবং ডানদিকে (সমান সম্ভাবনার সাথে) নির্ধারণ করে।

প্রোগ্রামের শুরুতে, মাছ দুটি ইনপুট সহ অক্ষর পড়তে থাকে i_i(প্রত্যেকটি iSTDIN থেকে স্ট্যাকের জন্য একটি অক্ষর পড়ে, এবং _একটি অনুভূমিক আয়না, যা মাছটি এখন উপেক্ষা করে)। এটি তখন একটি পৌঁছায় x

যদি xমাছটি ডানদিকে প্রেরণ করে তবে এটি আরও একটি চরিত্রে পড়ে (তৃতীয়), এটিকে প্রিন্ট করে oএবং থামিয়ে দেয় ;। বাম দিকটি একই: মাছটি আরও দুটি অক্ষর পড়ে (তাই আমরা চতুর্থ পর্যন্ত এসেছি), ডানদিকে প্রায় আবৃত করি, চতুর্থ অক্ষরটি এবং প্রসারিতগুলি মুদ্রণ করি। যদি মাছটি সাঁতরে উঠে যায় তবে ডানদিকে প্রতিবিম্বিত হওয়ার পরে /এবং থামার আগে এটি দ্বিতীয় চরিত্রটি আবৃত এবং মুদ্রণ করে । এটি নীচে সাঁতার কাটলে এটি বামে প্রতিফলিত হয় /এবং অন্যটিকে আঘাত করে x

এবার, দুটি দিকই কেবল মাছটিকে x(ডানদিকে একটি তীর <দিয়ে এবং একটি আয়না দিয়ে উপরে _) পাঠিয়ে দেয় send ফলস্বরূপ, মাছটি xঅন্য দুটি দিকের প্রতিটি এ থেকে পালানোর 1/2 সুযোগ রয়েছে । বাম দিকের স্ট্যাকের শীর্ষ অক্ষরটি মুদ্রণ করে, যা দ্বিতীয়টি, তবে নীচের দিকে প্রথমে স্ট্যাকের দুটি উপাদানকে অদলবদল করে $, সুতরাং এই দিকনির্দেশটি প্রথম অক্ষরটি মুদ্রণ করে।

সংক্ষেপে, তৃতীয় এবং চতুর্থ অক্ষরগুলি সম্ভাব্যতার সাথে প্রতিটি 1/4 টি মুদ্রিত হয়; প্রথম চরিত্রটির সম্ভাবনা রয়েছে 1/2 x 1/4 = 1/8; এবং দ্বিতীয় অক্ষরের সম্ভাব্যতা রয়েছে 1/4 + 1/2 x 1/4 = 3/8।



2

এমএটিএল , 12 10 বাইট

l3HHvY"1Zr

এটি অনলাইন চেষ্টা করুন! বা এটিকে 1000 বার চালিত করুন (সামান্য সংশোধিত কোড) এবং প্রতিটি চর প্রদর্শিত হওয়ার সংখ্যাটি পরীক্ষা করুন।

ব্যাখ্যা

l3HH   % Push 1, 3, 2, 2
v      % Concatenate all stack contents into a column vector: [1; 3; 2; 2]
Y"     % Implicit input. Run-length decode (repeat chars specified number of times)
1Zr    % Pick an entry with uniform probability. Implicit display

পরিবর্তিত কোডে পরিবর্তনগুলি: 1000:"Gl3HH4$vY"1Zr]vSY'

  • 1000:"...]1000বার পুনরাবৃত্তি একটি লুপ ।
  • G প্রতিটি পুনরুক্তির শুরুতে ইনপুটটি চাপ দেওয়া হয়েছে কিনা তা নিশ্চিত করে।
  • পুনরাবৃত্তি জুড়ে স্ট্যাকের উপর ফলাফল জমা হয়। সুতরাং কেবল শীর্ষস্থানীয় সংখ্যাগুলিকে সংযুক্ত vকরার জন্য প্রতিস্থাপন করা 4$vদরকার 4
  • লুপ শেষে, vconcatenates 1000একটি ভেক্টর মধ্যে ফলাফল, Sএটা অসুস্থ, এবং Y'রান দৈর্ঘ্য এটা এনকোড করে। এটি চারটি অক্ষর দেয় এবং কতবার প্রদর্শিত হয়েছিল সেগুলি দেয়।

হ্যাঁ, এখনই ঠিক হয়ে গেছে বলে মনে হচ্ছে
স্কিডেদেব

@ মাইউব লক্ষ্য করার জন্য ধন্যবাদ!
লুইস মেন্ডো



2

রুবি, 34 33 29 27 বাইট

@ ভ্যালু ইঙ্ককে 2 বাইট সংরক্ষণ করা হয়েছে

চারটি অক্ষর হিসাবে ইনপুট

a=$**2
a[0]=a[1]
p a.sample

একটি অ্যারে তৈরি করুন [B,B,C,D,A,B,C,D]এবং এটি নমুনা করুন।

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

একবার চেষ্টা করে দেখুন n! (আমি এটিকে আরও সহজে পুনরাবৃত্তি করতে এটি কোনও ফাংশনে রূপান্তর করেছি, তবে অ্যালগরিদমটি একই)


$*জন্য একটি উপনাম ARGV
মান কালি

2

পাইথ, 7 বাইট

@z|O8 1

পরীক্ষা স্যুট

O80 থেকে 7 পর্যন্ত একটি এলোমেলো সংখ্যা তৈরি করে একটি | ... 1যৌক্তিক বা 1 প্রয়োগ করে 0 টি 1 এ রূপান্তর করে এবং সমস্ত কিছু একই রেখে দেয়। এই পর্যায়ে সংখ্যাটি সময়ের 1 2/8 তম এবং সময়ের 2, 3, 4, 5, 6, 7 বা 8 1/8।

@zসেই অবস্থানের ইনপুট স্ট্রিংয়ের সূচকগুলি। ইনডেক্সিং স্ট্রিংয়ের দৈর্ঘ্যের মডুলো সঞ্চালিত হয়, সুতরাং 0 পজিশনে 4 সূচক 1, পজিশনে 1 এবং আরও অনেক কিছু।

সম্ভাবনাগুলি হ'ল:

  • অবস্থান 0: সময়ের এলোমেলো সংখ্যা 4/8।

  • অবস্থান 1: এলোমেলো সংখ্যা 0, 1 বা 5. সময়ের 3/8।

  • অবস্থান 2: এলোমেলো সংখ্যা 2 বা 6. 2/8 সময়ের।

  • অবস্থান 3: এলোমেলো সংখ্যা 3 বা 7. 2/8 সময়ের।


2

জাভাস্ক্রিপ্ট, 31 30 বাইট / 23 বাইট

অ্যাসাল্যান্টের পূর্ববর্তী জাভাস্ক্রিপ্টের উত্তর দেখে আমার জেএস সম্পর্কে চিন্তাভাবনা হয়েছিল। যেমনটি তিনি বলেছেন:

ABCDইনপুট হিসাবে একটি স্ট্রিং নেয় , Aসময়ের 1/8 তম আউটপুট , সময়ের B 3/8 Cতম সময়, 1/4 র্থ সময় এবং D1/4 র্থ সময়।

খনিটি হ'ল:

x=>(x+x)[Math.random()*8&7||1]

ব্যাখ্যা:

x=>(x+x)[                 // return character at index of doubled string ('ABCDABCD')
         Math.random()*8  // select a random number from [0, 8]
         &7               // bitwise-and to force to integer (0 to 7)
         ||1              // use it except if 0, then use 1 instead
        ]

Math.random()*8&7এটি থেকে নীচে হিসাবে বিচ্ছিন্ন:

A from 4      = 12.5% (1/8)
B from 0,1,5  = 37.5% (3/8)
C from 2,6    = 25%   (1/4)
D from 3,7    = 25%   (1/4)

সংস্করণ 2, 23 বাইট

তবে তারপরে আরনাউল্ডকে ধন্যবাদ, যিনি আমার পরে পোস্ট করেছিলেন, যখন তিনি বলেছেন:

যদি সময় নির্ভর সূত্র অনুমোদিত হয় তবে আমরা কেবল এটি করতে পারি:

যা, যদি সত্যই অনুমোদিত হয় তবে তা আমাকে এখানে নিয়ে গেল:

x=>(x+x)[new Date%8||1]

যা new Date%8উপরের মত একই ব্রেক-ডাউন টেবিল ব্যবহার করে।

এবং %8হতে পারে &7; তোমারটা নাও. আবারও ধন্যবাদ, আরনাউল্ড।


2

এনএনজি / এপিএল, 10 বাইট

[এ [⌈ /? 2 4]

?2 4 সংখ্যার জোড়া এলোমেলোভাবে বেছে নিন - প্রথমটি 0 1 এর মধ্যে এবং দ্বিতীয়টি 0 1 2 3 এর মধ্যে

⌈/ "সর্বাধিক হ্রাস" - বড় সংখ্যাটি সন্ধান করুন

⎕a বড় হাতের বর্ণমালা

[ ] ইন্ডেক্স


সর্বাধিক (ক, খ) এর জন্য চার্টটি নোট করুন যখন a∊ {0,1} এবং B∊ {0,1,2,3}:

    ┏━━━┯━━━┯━━━┯━━━┓
    ┃b=0│b=1│b=2│b=3┃
┏━━━╋━━━┿━━━┿━━━┿━━━┫
┃a=0┃ 0 │ 1 │ 2 │ 3 ┃
┠───╂───┼───┼───┼───┨
┃a=1┃ 1 │ 1 │ 2 │ 3 ┃
┗━━━┻━━━┷━━━┷━━━┷━━━┛

যদি ক এবং বি এলোমেলোভাবে এবং স্বতন্ত্রভাবে নির্বাচিত হয়, আমরা পছন্দসই সম্ভাবনা বন্টন পেতে 0123 = ABCD প্রতিস্থাপন করতে পারি


1

পাইথন 3 , 64 55 51 বাইট

-9 বাইটস @ ওওএসকে ধন্যবাদ

lambda s:choice((s*2)[1:]+s[1])
from random import*

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


ব্যাখ্যা

random.choice(), স্ট্রিং একটি র্যান্ডম অক্ষর পায় যখন (s*2)[1:]+s[1]সৃষ্টি BCDABCDBএকজন ইনপুট জন্য ABCD, যা 1/8 হয়েছে Aএস, 2/8 CS, 2/8 Ds এবং 3/8 Bগুলি।


random.choice55 বাইট ব্যবহার করুন :lambda s:choice((s[0]+s[1:]*3)[:8])
ovs

@ovs একটি ছোট উপায় খুঁজে পেয়েছে ^। choice()যদিও ধন্যবাদ ।
মিঃ এক্সকোডার

1

কিউবিআইসি , 27 বাইট

?_s;+;+B+B+;+C+;+D,_r1,8|,1

ব্যাখ্যা

?           PRINT
 _s         A substring of
   ;+       A plus
   ;+B+B+   3 instances of B plus
   ;+C+     2 instances of C plus
   ;+D      2 instances of D plus
   ,_r1,8|  from position x randomly chosen between 1 and 8
   ,1       running for 1 character


1

চিপ , 60 বাইট

)//Z
)/\Z
)\/^.
)\x/Z
)\\\+t
|???`~S
|z*
`{'AabBCcdDEefFGghH

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

তিনজনের ?প্রতিটি এলোমেলো বিট উত্পাদন করে। প্রথম চক্রটিতে, এই বিটগুলি উপরের স্যুইচগুলির মাধ্যমে ( /'গুলি এবং \গুলি) চালানো হয় যা নির্ধারণ করতে আমরা এই টেবিল থেকে আউটপুট যাব:

000 a
01_ b
0_1 b
10_ c
11_ d

(যেখানে বা _হয় হতে পারে )। তারপরে আমরা যথাযথভাবে ইনপুটটি নিয়ে চলি, সঠিক মান পৌঁছে গেলে মুদ্রণ ও সমাপ্তি।01

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



1

অ্যাপলসফট, 29 ওফ, 32 বাইট

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

INPUTI$:X=RND(1)*4:PRINTMID$(I$,(X<.5)+X+1,1)

INPUT, RND, PRINT এবং MID terms পদগুলি প্রতিটি অভ্যন্তরীণভাবে একক-বাইট টোকেন হিসাবে এনকোড করা হয়।

প্রথমটি, এক্সকে 0 <X <4 রেঞ্জের মধ্যে একটি এলোমেলো মান নির্ধারিত করা হয়েছে এটি (এক্স <.5) + এক্স + 1 অনুসারে I from থেকে একটি বর্ণের একটি চয়ন করতে ব্যবহৃত হয় এক্সপ্রেশন মূল্য সংক্ষিপ্ত। এক্স <.5 X যোগ করে 1 যোগ করে যদি 5। এর চেয়ে কম ছিল, অন্যথায় 0 যুক্ত করুন: এক্স এর ফলাফলগুলি নীচে নীচে বিচ্ছিন্ন হয়েছে:

A from .5 ≤ X < 1           = 12.5%
B from X < .5 or 1 ≤ X < 2  = 37.5%
C from 2 ≤ X < 3            = 25%
D from 3 ≤ X < 4            = 25%

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

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

1

কমন লিস্প , 198 বাইট

(setf *random-state*(make-random-state t))(defun f(L)(setf n(random 8))(cond((< n 1)(char L 0))((and(>= n 1)(< n 4))(char L 1))((and(>= n 4)(< n 6))(char L 2))((>= n 6)(char L 3))))(princ(f "ABCD"))

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

রিডেবল:

(setf *random-state* (make-random-state t))
(defun f(L)
    (setf n (random 8))
    (cond 
            ((< n 1) 
                (char L 0))
            ((and (>= n 1)(< n 4))
                (char L 1))
            ((and (>= n 4)(< n 6))
                (char L 2))
            ((>= n 6)
                (char L 3))
    )
)
(princ (f "abcd"))
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.