কারখানার শ্রমিক


18

চ্যালেঞ্জ

কারখানার শ্রমিকরা সাধারণত খুব পরিশ্রমী হয়। তবে, এখন তাদের কাজগুলি সাধারণত মেশিনগুলির সাথে প্রতিস্থাপিত হচ্ছে।

আপনাকে এমন একটি প্রোগ্রাম লিখতে হবে যা একটি সংখ্যা ইনপুট হিসাবে নেয়। এটি 10 ​​শ্রমিকের একটি কারখানা 10 বার মুদ্রণ করবে। প্রতিবার, প্রতিটি কর্মীর ক1/input 'চাকরীচ্যুত' হওয়ার এবং মেশিন দ্বারা প্রতিস্থাপনের সুযোগ রয়েছে।

ইনপুট

একটি পূর্ণসংখ্যা, STDIN বা কোনও ফাংশন কল থেকে আসছে।

আউটপুট

কারখানার ১০ টি কেস, প্রত্যেকটিতে সাধারণত আরও বেশি শ্রমিককে বরখাস্ত করা হয়।

আউটপুট ফর্ম্যাট - কীভাবে একটি কারখানা মুদ্রণ করা যায়

কারখানার মতো দেখতে:

|0000000000| অথবা |0000011001|

একটি পাইপ দেয়ালগুলি উপস্থাপন করে, 0 টি একজন শ্রমিককে এবং 1 টি মেশিনকে উপস্থাপন করে, তাই কারখানার প্রথম মুদ্রণ সর্বদা থাকবে |0000000000|

উদাহরণ

ইনপুট: 10

আউটপুট:

|0000000000| //always start off with this
|0000000010| //a 1/10 chance means that this worker lost his job
|0000010010|
|0010010010|
|1010010010|
|1010110010|
|1010110011|
|1010111011|
|1010111111|
|1110111111|


ইনপুট: 5

আউটপুট:

|0000000000| //always start here
|0000001001| //a 1/5 chance means that 2 workers got fired
|1000101001|
|1000101111|
|1101101111|
|1111111111| //after achieving all machinery, the machines continue to be printed
|1111111111|
|1111111111|
|1111111111|
|1111111111|

বিঃদ্রঃ

বরখাস্ত কর্মীদের সংখ্যা র‌্যাঁদোম - আমার উদাহরণগুলিতে 1/5 chanceসর্বদা ২ জন কর্মী বরখাস্ত থাকত তবে আপনার প্রোগ্রামটি এলোমেলোভাবে করতে হবে - কখনও কখনও 1 এবং কখনও কখনও 3 - তাদের বরখাস্ত হওয়ার মাত্র 1/5 সুযোগ রয়েছে।


1
এতে কিছু যায় আসে না
কর্মীটিকে

2
10 এর ইনপুটটির অর্থ কি প্রতিটি শ্রমিকের প্রতিবার তাদের চাকরি হারানোর 1-10 সম্ভাবনা রয়েছে, বা প্রতিবার 1/10 তম শ্রমিককে বরখাস্ত করা হবে?
12Me21

1
প্রাক্তনটি
নোটটিতে

1
@ 12Me21 এর অর্থ প্রতিটি কর্মীর চাকরি হারানোর 1-10 সুযোগ রয়েছে, পরে নয়।
লাউড

6
@ উরিল নো, আমি অর্থ =)
লন্ডন

উত্তর:


7

জাপট -R , 22 21 20 19 18 বাইট

AÆP=®|!UöêAçTÃû|C

চেষ্টা করে দেখুন


ব্যাখ্যা

AÆP=®|!UöêAçTÃû|C     :Implicit input of integer U
A                      :10
 Æ                     :Map the range [0,A)
  P=                   :  Assign to P (initially the empty string)
    ®                  :    Map P
     |                 :      Bitwise OR with
      !                :      The negation of
       Uö              :      A random integer in the range [0,U)
         Ã             :    End Map
          ª            :    OR, for the first element when the above will still be an empty string (falsey)
           Aç          :    Ten times repeat
             T         :      Zero
              Ã        :End Map
               û|      :Centre pad each element with "|"
                 C     :  To length 12
                       :Implicitly join with newlines and output

7

আর , 92 89 বাইট

cat(t(cbind("|",apply("[<-"(matrix(runif(100)<1/scan(),10),1,,0),2,cummax),"|
")),sep="")

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

Ungolfed:

m <- matrix(runif(100)<1/n,10,10)   #10x10 matrix of TRUE with probability 1/n
                                    #and FALSE with probability 1-1/n
m[1,] <- 0                          #set first row to 0
m <- apply(m,2,cummax)              #take the column cumulative maxima
m <- cbind("|",m,"|\n")             #put "|" as the first and last columns
m <- t(m)                           #transpose m for the write function
cat(m,sep="")                       #print m to stdout, separated by ""


1
আমি সাফল্যের সাথে বিভিন্ন বাস্তবায়ন replicateএবং forলুপগুলি ব্যবহার করে আজ বিকেলে 92 কে মারার চেষ্টা করার জন্য বেশ কিছুটা সময় ব্যয় করেছি , তবে আপনার টিপসের সাহায্যে Do-while loopsঅবশেষে আমি বুঝতে পেরেছি এটি {সম্ভাব্য কতটা আপত্তিজনক । আমি এই অপব্যবহারটি for()92 বাইট সমাধান সহ একটি উদাহরণে প্রসারিত করেছি । আপনি {যখন এই টিপ পোস্টটি লিখেছেন তখন আপত্তিজনক প্রভাবগুলি ইতিমধ্যে বুঝতে পেরেছিলেন , তবে আমি এখনই উপলব্ধি করেছি। tio.run/##K/r/...
Vlo

@ ভলো এটি কি সঠিক টিআইও লিঙ্ক? তবুও, দেখে মনে হচ্ছে আপনি কোনও ফাংশন দিয়ে আমাকে মারধর করেছেন! আমি আপনাকে 82 বাইটে
জিউসেপ্পে

আমি একজন আর চ্যাটরুম শুরু করা উচিত ... আমি মনে করি "for"প্রায় সবসময় কোন বেশী ভালো for, এবং এটা মাঝে মাঝে খারাপ !
জিউসেপ্পে

হা হা, অবশ্যই pmaxব্যবহার করা যেতে পারে। {অপারেটর সম্পর্কে আমার পূর্ববর্তী পয়েন্টটি এখানে । tio.run/##PZDBasNADETv@xVDfKhNjcGHXAKl5OJTT2l/...
Vlo

6

জাভাস্ক্রিপ্ট (ES6), 84 বাইট

n=>[...s=2e9+''].map(j=>`|${s=s.replace(/./g,i=>i&1|Math.random()*n<!+j)}|`).join`
`

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


পুনরাবৃত্ত সংস্করণ, 88 বাইট

n=>(g=k=>k?`|${s=s.replace(/./g,i=>i%5|Math.random()*n<(s!=k))}|
`+g(k>>3):'')(s=5e9+'')

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

কিভাবে?

আমরা k = s = '5000000000' দিয়ে শুরু করি

প্রতিটি পুনরাবৃত্তিতে:

  • আমরা প্রতিটি অক্ষর নিগৃহীত আমি এর গুলি একটি সংখ্যা, এর কম্পিউট আমি মডিউল 5 - তাই নেতৃস্থানীয় যে 5 একটি মত চিকিত্সা করা হয় 0 - এবং এলোমেলোভাবে একটি bitwise সঞ্চালন বা 1 প্রত্যাশিত সম্ভাবনা সঙ্গে 1 / এন , প্রথম পুনরাবৃত্তির ছাড়া ।

  • কাউন্টার কে 3 বিট দ্বারা ডান স্থানান্তরিত। আমরা কে = 0 এর সাথে সাথে পুনরাবৃত্তি বন্ধ করি , যা 10 টি পুনরাবৃত্তি দেয়।

    এটি লক্ষণীয় যে 5000000000 একটি 32-বিট পূর্ণসংখ্যার চেয়ে সামান্য বড়, সুতরাং এটি প্রথম বিটওয়াইফ শিফট হওয়ার ঠিক আগে 5000000000 এবং 0xFFFFFFF = 705032704 এ স্পষ্টত রূপান্তরিত হয়। অতএব নিম্নলিখিত পদক্ষেপগুলি:

     step | k
    ------+-----------
       0  | 705032704
       1  | 88129088
       2  | 11016136
       3  | 1377017
       4  | 172127
       5  | 21515
       6  | 2689
       7  | 336
       8  | 42
       9  | 5
      10  | 0
    

4

এপিএল (ডায়ালগ) , 37 বাইট

⎕{⎕←' '~⍨⍕'|''|'⋄×⍵+⍺=?10⍴⍺}⍣10100

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

কিভাবে?

10⍴0 - 10 জিরো দিয়ে শুরু করুন।

⎕←' '~⍨⍕'|'⍵'|' - প্রতিবার বিন্যাসিত অ্যারে মুদ্রণ করুন,

?10⍴⍺- 1ইনপুট থেকে শুরু করে মান সহ একটি এলোমেলো অ্যারে তৈরি করুন,

⍺=- ইনপুট সঙ্গে উপাদান ভিত্তিক তুলনা। চিহ্নিত করা উচিত1উপাদানগুলির / ইনপুট , প্রতিবার একটি 1/ ইনপুট প্রদান করে,

⍵+ - অ্যারে যুক্ত করুন,

×- সাইনাম শূন্য শূন্য থাকে, একের চেয়ে বড় কিছু আবার ফিরে আসে।

⍣10 - 10 বার পুনরাবৃত্তি করুন।


বিভ্রান্ত আমি, +1 =)
লাউড

3

রেটিনা , 30 বাইট

.+
|¶10*$(*0¶
.-10+0\%0<@`\d
1

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

আমি রেটিনা rand এ এলোমেলোভাবে প্রচুর মজা করছি ^^

ব্যাখ্যা

প্রথম পর্যায়ে স্ট্রিংটি সেট আপ করা হয় যার সাথে আমরা কাজ করব:

.+
|¶10*$(*0¶

এটি পুরো ইনপুটটি |একটি নতুন লাইন দিয়ে প্রতিস্থাপন করে এবং তারপরে 0ইনপুট যেমন বলেছে তেমন 10 টি লাইন যুক্ত করে। প্রতিটি লাইনের প্রথম চরিত্রটি কারখানার একজন শ্রমিককে উপস্থাপন করবে।

নিম্নলিখিত পর্যায়ের অর্থ:

.                     Disable automatic printing at the end of the program
 -10+                 Do the following exactly 10 times:
       %                For each line:
        0<                Print the first character, then
          @`\d            Pick a random digit and
1 (on the next line)      replace it with a 1
     0\                 Then print the first character of the whole string
                        followed by a newline

ওয়ার্কিং স্ট্রিংয়ের প্রথম লাইনে কেবল একটি রয়েছে | যা লুপের প্রতিটি পুনরাবৃত্তির দ্বারা মুদ্রিত প্রথম অক্ষর (প্রথম লাইনের প্রথম চরিত্র) এবং প্রতিটি পুনরাবৃত্তির শেষেও মুদ্রিত হবে (প্রথমটি হচ্ছে পুরো স্ট্রিং এর চরিত্র)। প্রতিস্থাপনের এই লাইনে কখনও কোনও প্রভাব পড়বে না কারণ এতে কোনও অঙ্ক নেই।

একে অপরের লাইনে nসংখ্যা, তাই একটি 1 আছে nএকটি মধ্যে লাইনের প্রথম অক্ষর (যা শুধুমাত্র অর্থপূর্ণ এক) মোড় সুযোগ 1


3

পাওয়ারশেল , 82 80 69 বাইট

param($x)($a=,0*10)|%{"|$(-join$a)|";$a=$a|%{$_-bor!(Random -ma $x)}}

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

ইনপুট নেয় $x। সমস্ত শূন্যের একটি অ্যারে তৈরি করে, এটি সংরক্ষণ করে $aএবং তারপরে বহুবার লুপ করে। সুবিধার্থে, কারখানাটি যেমন বিস্তৃত তেমনি প্রশস্ত। প্রতিটি পুনরাবৃত্তি, আমরা আমাদের বর্তমান কারখানার সাথে আউটপুট "|$(-join$a)|", তারপর প্রতিটি উপাদান দিয়ে লুপ $a

আমরা বর্তমান উপাদান নির্বাচন করছি ইনসাইড $_যে হয়েছে -binary- orসঙ্গে ইডি পারেন 1উপর ভিত্তি করে Randomইনপুটের ভিত্তিতে সুযোগ $x। উদাহরণস্বরূপ, ইনপুট জন্য 10, Get-Random -max 10মধ্যে পরিসীমা হবে 0এবং 9এবং হতে 0প্রায় 1 / সময় 10। এইভাবে !(...)মোড়কের সাহায্যে Randomআমরা 1প্রায় একটি 1/inputসময় এবং অন্যান্য 1-1/inputসময় পাব $_। হ্যাঁ, এর মাঝেমধ্যে এর অর্থ হ'ল আমরা 1অন্যটির সাথে একটি ওভাররাইট করছি 1তবে এটি ঠিক।

ফলস্বরূপ অ্যারেটি পরে $aপরবর্তী গো-রাউন্ডে পুনরায় সংরক্ষণ করা হয় । ফলাফলযুক্ত সমস্ত স্ট্রিং পাইপলাইনে রেখে যায়, এবং Write-Outputপ্রোগ্রাম সমাপ্তিতে নিহিত আমাদের নিখরচায় নতুন লাইন দেয়।

-২ বাইট ধন্যবাদ ভেস্কাহকে।
-11 বাইটস কেবলমাত্র ASCII- এর জন্য ধন্যবাদ।



@ ভেসকাঃ হ্যাঁ, এটি দুর্দান্তভাবে কাজ করবে। ধন্যবাদ!
অ্যাডমবর্কবার্ক



@ এএসসিআইআই-ওহ নিশ্চিত, $aআমরা ইতিমধ্যে যখন এটি লুপ করছি তখন কেন আমরা পুনরায় সূচীকরণ করব? তোমার আর সাথে একটি চালাক চালাকি -bor। ধন্যবাদ!
অ্যাডমবর্কবার্ক

2

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

{say "|$_|" for 0 x 10,|[\~|] ([~] +(1>$_*rand)xx 10)xx 9}

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

+(1 > $_ * rand)এর প্রয়োজনীয় ফ্রিকোয়েন্সি সহ একটি বিট উত্পন্ন করে 1xx 10বিটগুলির তালিকা হিসাবে একক কারখানার উদাহরণ তৈরি করতে দশবার সেই অভিব্যক্তিটির প্রতিলিপি তৈরি করে এবং [~]সেই তালিকাটিকে একটি স্ট্রিংয়ের সাথে যুক্ত করে। xx 9ফ্যাক্টরি-স্ট্রিং-উত্পন্ন এক্সপ্রেশনটি নয় বার প্রতিলিপি [\~|]করে এবং তারপরে স্ট্রিংওয়াইজ বা অপারেটরের সাহায্যে ত্রিভুজাকার হ্রাস (যা কিছু অন্যান্য ভাষায় "স্ক্যান" নামে ডাকে) করে ~|, যাতে পূর্ববর্তী পুনরাবৃত্তিতে চালিত কর্মী পরবর্তী সময়ে গুলি বহাল থাকে।


1
খুশী হলাম। আপনি আগে স্থান সরাতে পারেন for{say "|{.join}|"for [\<<+|>>] (?$++X*!<<^$_).roll(10)xx 10}আমি দুটি বাইট দ্বারা নাম্বার-ভিত্তিক সমাধানটি কাজ করছিলাম ts সঙ্গে[\Z+|]এটির 56 বাইট হবে তবে এটি কোনও কারণে কাজ করে না।
নয়েলহোফ

1
আপনি $_*randসাথে প্রতিস্থাপন করতে পারেন .rand। আমি যেভাবে নিয়মগুলি ব্যাখ্যা করি, "ফ্যাক্টরি" স্ট্রিংগুলির তালিকা ফিরিয়ে দেওয়াও ঠিক হবে।
nwellnhof


2

জেলি , 22 বাইট

ẋ⁵ẋ€⁵¬1¦X€€=1o\j@€⁾||Y

একটি পূর্ণ প্রোগ্রাম পূর্ণসংখ্যাটি কমান্ড লাইন ইনপুট হিসাবে গ্রহণ করে এবং আউটপুটটি STDOUT এ মুদ্রণ করে।
(মোনাডিক লিঙ্ক হিসাবে এটি অক্ষর এবং পূর্ণসংখ্যার একটি তালিকা ফেরত দেয়))

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

কিভাবে?

প্রতিটি শ্রমিক (যে কোনও মেশিন সহ) তাদের চাকরিটি হারাতে পারে (কার্যকরভাবে এন-এর সম্ভাব্য একজনের সাথে) প্রতিটি পর্যায়ে কার্যকরভাবে সিদ্ধান্ত নেয়, তবে মেশিনগুলি মেশিন দ্বারা প্রতিস্থাপিত হয় (যৌক্তিক-ওআর ব্যবহার করে)।

ẋ⁵ẋ€⁵¬1¦X€€=1o\j@€⁾||Y - Main link: integer, N
 ⁵                     - literal ten
ẋ                      - repeat -> [N,N,N,N,N,N,N,N,N,N]
    ⁵                  - literal ten
  ẋ€                   - repeat €ach -> [[N,N,N,N,N,N,N,N,N,N],...,[N,N,N,N,N,N,N,N,N,N]]
       ¦               - sparse application...
      1                - ...to indices: [1]
     ¬                 - ...do: logical-NOT -> [[0,0,0,0,0,0,0,0,0,0],[N,N,...],...]
        X€€            - random integer for €ach for €ach
                       -   (0s stay as 0s; Ns become random integers in [1,N])
           =1          - equals one? (vectorises)
             o\        - cumulative reduce with logical-OR
                  ⁾||  - literal list of characters = ['|','|']
               j@€     - join with sw@pped arguments for €ach
                     Y - join with line feeds
                       - implicit print

2

এমএটিএল , 26 বাইট

'|'it10th&Yr=0lY(Y>48+y&Yc

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

(দীর্ঘ) ব্যাখ্যা

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

'|'    % Push this character
       % STACK: '|'
it     % Take input. Duplicate
       % STACK: '|'
                5
                5
10th   % Push [10 10]
       % STACK: '|'
                5
                5
                [10 10]
&Yr    % Random 10×10 matrix of integers from 1 to input number
       % STACK: '|'
                 5
                 [4 5 4 4 5 5 2 1 2 3
                  3 4 3 3 1 4 4 3 1 5
                  5 1 4 5 4 4 5 2 3 2
                  3 4 5 2 1 3 2 5 3 4
                  4 1 2 2 4 1 1 5 1 1
                  4 5 3 1 5 3 5 2 4 1
                  2 1 4 3 3 1 3 5 3 5
                  1 2 2 1 2 2 4 3 5 3
                  4 5 4 1 2 2 5 3 2 4
                  4 1 2 5 5 5 4 3 5 1]
=      % Is equal? Element-wise
       % STACK: '|'
                [0 1 0 0 1 1 0 0 0 0
                 0 0 0 0 0 0 0 0 0 1
                 1 0 0 1 0 0 1 0 0 0
                 0 0 1 0 0 0 0 1 0 0
                 0 0 0 0 0 0 0 1 0 0
                 0 1 0 0 1 0 1 0 0 0
                 0 0 0 0 0 0 0 1 0 1
                 0 0 0 0 0 0 0 0 1 0
                 0 1 0 0 0 0 1 0 0 0
                 0 0 0 1 1 1 0 0 1 0]
0lY(   % Write 0 in the first row
       % STACK: '|'
                [0 0 0 0 0 0 0 0 0 0
                 0 0 0 0 0 0 0 0 0 1
                 1 0 0 1 0 0 1 0 0 0
                 0 0 1 0 0 0 0 1 0 0
                 0 0 0 0 0 0 0 1 0 0
                 0 1 0 0 1 0 1 0 0 0
                 0 0 0 0 0 0 0 1 0 1
                 0 0 0 0 0 0 0 0 1 0
                 0 1 0 0 0 0 1 0 0 0
                 0 0 0 1 1 1 0 0 1 0]
Y>     % Cumulative maximum down each column
       % STACK: '|'
                [0 0 0 0 0 0 0 0 0 0
                 0 0 0 0 0 0 0 0 0 1
                 1 0 0 1 0 0 1 0 0 1
                 1 0 1 1 0 0 1 1 0 1
                 1 0 1 1 0 0 1 1 0 1
                 1 1 1 1 1 0 1 1 0 1
                 1 1 1 1 1 0 1 1 0 1
                 1 1 1 1 1 0 1 1 1 1
                 1 1 1 1 1 0 1 1 1 1
                 1 1 1 1 1 1 1 1 1 1]
48+    % Add 48, element-wise. This transforms each number into the
       % ASCII code of its character representation
       % STACK: '|'
                [48 48 48 48 48 48 48 48 48 48
                 48 48 48 48 48 48 48 48 48 49
                 49 48 48 49 48 48 49 48 48 49
                 49 48 49 49 48 48 49 49 48 49
                 49 48 49 49 48 48 49 49 48 49
                 49 49 49 49 49 48 49 49 48 49
                 49 49 49 49 49 48 49 49 48 49
                 49 49 49 49 49 48 49 49 49 49
                 49 49 49 49 49 48 49 49 49 49
                 49 49 49 49 49 49 49 49 49 49]
y      % Duplicate from below
       % STACK: '|'
                [48 48 48 48 48 48 48 48 48 48
                 48 48 48 48 48 48 48 48 48 49
                 49 48 48 49 48 48 49 48 48 49
                 49 48 49 49 48 48 49 49 48 49
                 49 48 49 49 48 48 49 49 48 49
                 49 49 49 49 49 48 49 49 48 49
                 49 49 49 49 49 48 49 49 48 49
                 49 49 49 49 49 48 49 49 49 49
                 49 49 49 49 49 48 49 49 49 49
                 49 49 49 49 49 49 49 49 49 49]
                 '|'
&Yc    % Horizontally concatenate all stack contents as char arrays.
       % 1-row arrays are implicitly replicated along first dimension
       % STACK: ['|0000000000|'
                 '|0000000001|'
                 '|1001001001|'
                 '|1011001101|'
                 '|1011001101|'
                 '|1111101101|'
                 '|1111101101|'
                 '|1111101111|'
                 '|1111101111|'
                 '|1111111111|']
       % Implicitly display

2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 105 93 90 বাইট

x=>w.map(a=>(`|${w=w.map(j=>j|Math.random()<1/x),w.join``}|
`)).join``,w=Array(10).fill(0)

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

ফাংশনের ভিতরে অ্যারে রাখার জন্য +2 বাইটস, এটি নির্দেশ করার জন্য @ শ্যাগি ধন্যবাদ

(x,w=Array(10).fill(0))=>w.map(a=>(`|${w=w.map(j=>j|Math.random()<1/x),w.join``}|
`)).join``

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


1
নোট করুন যে এখানে ফাংশনগুলি পুনরায় ব্যবহারযোগ্য হওয়া দরকার, তাই আপনার ফাংশনের মধ্যেইw এটি ঘোষণা করা দরকার ।
শেগি

@ শেগি, ধন্যবাদ আমি এটি সম্পাদনা করেছি। দুর্ভাগ্যক্রমে এটি 2 বাইট যুক্ত করেছে
Joost K

2

সি (জিসিসি) , 110 106 বাইট

@ সেলিংক্যাট থেকে -4 বাইট

char l[]="|0000000000|",i,j;f(n){for(srand(time(i=0));i++<10;)for(j=!puts(l);j++<10;)rand()%n||(l[j]=49);}

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

প্রতিস্থাপনের প্রতিটি রাউন্ডের জন্য অক্ষরের একটি তালিকা দিয়ে আইট্রেট করে।

Ungolfed:

f(n)
{
    //start with a fresh factory
    char l[]="|0000000000|";

    //init rng
    srand(time(0));

    //print 11 lines
    for(int i = 0; i < 11; i++)
    {
        //print current factory
        puts(l);

        //iterate through the workers. start at index 1 to skip the '|'
        for(int j = 1; j < 11; j++)
        {
            //the expression (rand()%n) has n possible values in the range [0,n-1],
            //so the value 0 has 1/n chance of being the result and thus the worker
            //has 1/n chance of being replaced
            if(rand()%n == 0)
            {
                l[j] = '1';
            }
        }
    }
}

আমি মনে করি আপনি 1 টি অনেক বেশি কারখানা মুদ্রণ করেছেন। উদাহরণটি 10 ​​দেখায়, তবে আপনার টিআইও লিঙ্কটি ১১ টি দেখায়
ব্রায়ান জে

হুম ঠিক বলেছেন। কারওর সমাধানের 11 বছর হওয়ার কথা বলে মন্তব্যটি পড়ে আমি এটিকে 11 এ পরিবর্তন করেছি, তবে আমি চ্যালেঞ্জ থেকে উদাহরণটি বাস্তবে যাচাই করি নি। ধন্যবাদ
ওয়াজ

1

স্মাইলব্যাসিক, 75 বাইট

INPUT N
FOR J=0TO 9?"|";BIN$(F,10);"|
FOR I=0TO 9F=F OR!RND(N)<<I
NEXT
NEXT


1

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

TÅ0TFDJ'|.ø=sITи€L€ΩΘ~

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

গল্ফ করার জন্য আরও কিছু জায়গা থাকা উচিত।

  • TÅ0 - 10 শূন্যের একটি তালিকা চাপুন।
  • TF... - এটি 10 ​​বার করুন:
    • DJ - বর্তমান আইটেমটির সদৃশ করুন এবং এতে যোগদান করুন।
    • '|.ø=- এটি দুটি |এস দিয়ে ঘিরে এবং STDOUT এ মুদ্রণ করুন।
    • ITи - ইনপুটটি 10 ​​বার পুনরাবৃত্তি করুন।
    • €L€Ω- এবং প্রতিটি ঘটনার জন্য, [1 ... N] এর এলোমেলো উপাদান পান । (এটির জন্য একটি বিল্ট-ইন থাকতে পারে যা আমি এখনও দেখিনি)
    • Θ- পুশ করুন 05AB1E সত্যায়িত ™। প্রতিটি জন্য, এটি 1 সমান কিনা তা পরীক্ষা করে দেখুন ।
    • s...~ - যুক্তিযুক্ত বা বর্তমান আইটেম দ্বারা ফলাফল।


1

জাভা 10, 153 152 131 বাইট

n->{for(int j=10,a[]=new int[j],i;j-->0;){var s="|";for(i=0;i<10;a[i++]|=Math.random()*n<1?1:0)s+=a[i];System.out.println(s+"|");}}

-18 বাইট ধন্যবাদ @ অলিভিগ্রগ্রোয়ারকে , এবং জাভা 8 কে জাভা 10 এ রূপান্তর করে আরও 3 বাইট।

ব্যাখ্যা:

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

n->{                             // Method with integer parameter and no return-type
  for(int j=10,a[]=new int[j],i; //  Create the array with 10 workers (0s)
      j-->0;){                   //  Loop 10 times

    var s="|";                   //  Start a String with a wall
    for(i=0;i<10;                //  Loop `i` from 0 to 10 (exclusive)
        a[i++]                   //    After every iteration, change the current item to:
         |=                      //     If it's a 0:
           Math.random()*n<1?    //      If the random value [0:1) is below 1/n
            1                    //       Change the worker to a machine
           :                     //      Else:
            0;                   //       It remains a worker
                                 //     Else (it already is a machine)
                                 //      It remains a machine
      s+=a[i];                   //   Append the current item to the String
    System.out.println(s+"|");}} //   Print the String, with a trailing wall and new-line

1
131 বাইট । জাভা 9 এবং নীচে এবং অতিরিক্ত 3 বাইট varদ্বারা প্রতিস্থাপন করুন String। আমি আপনার দুটি লুপকে মূলত একত্রিত করেছি।
অলিভিয়ার গ্রাগোয়ার

1

কাঠকয়লা , 30 29 27 বাইট

⊞υ×χ0Fχ⊞υ⭆§υ±¹‽⁺1×κ⊖θEυ⪫||ι

এটি অনলাইন চেষ্টা করুন! লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

⊞υ×χ0

0খালি তালিকায় একটি স্ট্রিং 10 টি চাপুন u

Fχ

পরবর্তী কমান্ডটি 10 ​​বার পুনরাবৃত্তি করুন।

⊞υ⭆§υ±¹‽⁺1×κ⊖θ

শেষ স্ট্রিংয়ের প্রতিটি চরিত্রের জন্য, এটি n-1বারবার পুনরাবৃত্তি করুন 1, একটি যুক্ত করুন এবং স্ট্রিং থেকে একটি এলোমেলো চরিত্র চয়ন করুন। এটি একটিতে 1/nচরিত্রটি পরিবর্তন করার সুযোগ দেয় 1। ফলাফলের দিকে ঠেলে দেওয়া হয়u

Eυ⪫||ι

স্ট্রিংয়ের তালিকার উপরের মানচিত্র, প্রতিটিকে ঘিরে |, তারপরে স্পষ্টভাবে প্রতিটি তার নিজস্ব লাইনে মুদ্রণ করুন।



0

এপিএল + উইন, 30 40 35 বাইট

কোনও ফাঁকা জায়গা ছাড়াই কিছুটা মিস করেছেন; (- নির্ধারিত এবং -৩ বাইটের জন্য ইউরিয়েলকে ধন্যবাদ

সংখ্যার স্ক্রিন ইনপুট জন্য অনুরোধ জানানো হয়

'|',(⍕0⍪×+⍀n=?9 10⍴n←⎕)[;2×⍳10],'|'

উরিল এর অনুরূপ ব্যাখ্যা:

?9 10⍴n create a 9x10 matrix of numbers selected at random between 1 and number

×+⍀n= compare elements of matrix to number, cumulatively sum columns and signum

[;2×⍳10] take non-space columns

'|',(⍕0⍪.......,'|' concatenate a row of zeros and front and back columns of |

9 10⍴?90⍴5?9 10⍴5। এছাড়াও আপনি শূণ্যস্থান নিষ্কাশন প্রয়োজন
ঊরীয়েল

@ ইউরাইল -৩ বাইটের জন্য ধন্যবাদ এবং আমি কোনও স্থানের নিয়মটি মিস করেছি।
গ্রাহাম

0

ভিবিএ, 144 বাইট

Sub f(i)
Dim w(9) As Long
For x = 0 To 9
s = "|"
For y = 0 To 9
s = s & w(y)
If i * Rnd() < 1 Then w(y) = 1
Next
Debug.Print s; "|"
Next
End Sub

সহজ পাঠের জন্য অভিযুক্ত:

Sub f(i)
    Dim w(9) As Long
    For x = 0 To 9
        s = "|"
        For y = 0 To 9
            s = s & w(y)
            If i * Rnd() < 1 Then w(y) = 1
        Next
        Debug.Print s; "|"
    Next
End Sub

২ টি পয়েন্টের সুবিধা নেয়: ভিবিএ অ্যারেগুলি বেস 0 তে ডিফল্ট হবে (ঠিক তেমনই w(9)একই w(0 to 9)) এবং দীর্ঘ হিসাবে অ্যারে তৈরি করা এটি স্বয়ংক্রিয়ভাবে 0 এ সূচিত হবে।

(বিরক্তিকরভাবে, 20 বাইটগুলি স্বয়ংক্রিয় বিন্যাস যা ভিবিএ যোগ করেছে তবে আসলে প্রয়োজন নেই - 19 স্পেস এবং একটি আধা-কোলন)


0

আমি এখনও রুবির জন্য উত্তর দেখতে পাচ্ছি না, সুতরাং:

রুবি , 92 বাইট

n=gets.to_i
z='0'*x=10
x.times do
puts'|'+z+'|'
x.times do|s|
z[s]='1' if rand(n)==0
end
end

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


ব্যবহার করে একটি বাইট সংরক্ষণ rand(n)<1পরিবর্তে rand(n)==0, এবং ব্যবহার করে অল্প কতিপয় লোক ব্যতীত {..}পরিবর্তে do..endযেমন,x.times{puts'|'+z...}
পিকলু

0

রুবি, 67 বাইট

->n{f=[0]*10;10.times{p"|#{f.join}|";f.map!{|l|rand>(1.0/n)?l:?1}}}

আমি মনে করি আমি এখানে কয়েকটি জিনিস প্রতারণা করেছি। প্রথমত, এই ফাংশনটি প্রতিটি লাইনের চারপাশে উদ্ধৃতি সহ আউটপুট মুদ্রণ করে, যেমন:

pry(main)> ->n{f=[0]*10;10.times{p"|#{f.join}|";f.map!{|l|rand>(1.0/n)?l:?1}}}[5]
"|0000000000|"
"|0100100000|"
"|0100100000|"
"|0100100000|"
"|0100100100|"
"|0100110100|"
"|0101110100|"
"|0111110100|"
"|1111110110|"
"|1111110110|"
=> 10

যদি এটি অগ্রহণযোগ্য হয় (প্রদত্ত যে এটি , সম্ভবত এটি ক্ষেত্রে) তবে এখানে একটি সমাধান রয়েছে যা 70০ বাইটের জন্য উদ্ধৃতি ছাড়াই মুদ্রণ করে :

->n{f=[0]*10;10.times{puts"|#{f.join}|";f.map!{|l|rand>(1.0/n)?l:?1}}}

ব্যাখ্যা:

->n{                                                              } # defines anonymous lambda
    f=[0]*10;                                                       # initializes f to [0,0,0,...] (10)
             10.times{                                           }  # main loop
                      p"|#{f.join}|";                               # joins f and prints | before and after
                                     f.map!{|l|                 }   # maps each element of f
                                               rand>(1.0/n)? :      # if rand is greater than 1.0/n
                                                            l ?1    # keep current element or replace with '1'

0

পিএইচপি, 71 70 বাইট

মার্জিং লুপগুলি 5 বাইট সংরক্ষণ করেছে (আবার):

for(;$k<91;$v|=!rand(0,$argn-1)<<$k++%10)$k%10||printf("|%010b|
",$v);

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


সম্পাদনা 1: স্থির ফর্ম্যাট এবং প্রথম আউটপুট (অতিরিক্ত গল্ফিংয়ের জন্য বাইট গণনায় কোনও পরিবর্তন নেই)
সম্পাদনা 2: আরও একটি বাইট গল্ফ করুন: শেষ মুদ্রণের পরে, কাউকে গুলি চালানোর আর দরকার নেই।


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