একটি অ্যারের স্কেলারগুলি এলোমেলো করে দিন


14

0-nঅন্তর্ভুক্ত থেকে প্রতিটি সংখ্যার সাথে আপনাকে অবশ্যই একটি অ্যারে পূরণ করতে হবে। কোন সংখ্যা পুনরাবৃত্তি করা উচিত। তবে এগুলি অবশ্যই একটি এলোমেলো ক্রমে থাকা উচিত।

বিধি

সমস্ত স্ট্যান্ডার্ড নিয়ম এবং মান লুফোলগুলি নিষিদ্ধ

অ্যারেটি সিউডো-এলোমেলোভাবে তৈরি করা আবশ্যক। প্রতিটি সম্ভাব্য ক্রমের সমান সম্ভাবনা থাকা উচিত।

ইনপুট

n মেটাতে আই / ও পোস্টে যে কোনও উপায়ে অনুমোদিত।

আউটপুট

সংখ্যার অ্যারে 0-nঅন্তর্ভুক্ত থেকে স্ক্র্যাম্বল ।


আউটপুট নিউলাইন দ্বারা পৃথক করা যেতে পারে?
DrnglVrgs

@ রিলে অপ্স যা দুঃখিত হওয়ার কথা ছিল।
ক্রিস্টোফার

@ ড্রংলভির্গ হ্যাঁ এটি করতে পারে
ক্রিস্টোফার

"সংখ্যা" দ্বারা আমি ধরে নিয়েছি আপনি "পূর্ণসংখ্যার" অর্থ?
জাকারি

1
@ কেভিন ক্রুজসেন আইএমও তালিকাগুলি = অ্যারে তবে অনুসন্ধান সমর্থন সহ। তাই নিশ্চিতভাবে একটি তালিকা ব্যবহার করুন
ক্রিস্টোফার

উত্তর:




8

পাইথ, 3 বাইট

.Sh

প্রদর্শন

.Sএলোমেলো হয়। এটি সুস্পষ্টভাবে nব্যাপ্তির জন্য একটি ইনপুট পূর্ণসংখ্যার কাস্ট করে [0, 1, ..., n-1]hহয় +1, এবং ইনপুট সুস্পষ্টভাবে নেওয়া হয়।




5

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

lambda n:sample(range(n+1),n+1)
from random import*

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

আছে random.shuffle()তবে এটি যুক্তির পরিবর্তে পরিবর্তে পরিবর্তিত করে ...


আপনি ব্যবহার করতে পারেনrandom.shuffle
কেয়ার্ড coinheringaahing

@ Cairdcoinheringaahing হ্যাঁ, তবে এটি কার্যকর হবে না। উদাহরণস্বরূপ, lambda n:shuffle(range(n+1))কোথাও আউটপুট লিখবেন না।
নিখুঁতভাবে






3

জাপট , 4 বাইট

ò öx

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


    :Implicit input of integer U
ò   :Generate array of 0 to U.
öx  :Generate random permutation of array.
    :Implicit output of result.

এটিকে ঘৃণা করুন, আমি ভেবেছিলাম öxযতক্ষণ না আমি "অন্তর্ভুক্ত" অংশটি লক্ষ্য করি enough (আপনি x
বিটিডব্লিউর

@ ইথ প্রডাকশনস, এটি আমার প্রথম চিন্তাও ছিল।
শেগি

3

সি #, 76 বাইট

using System.Linq;i=>new int[i+1].Select(x=>i--).OrderBy(x=>Guid.NewGuid());

এটি একটি IOrriedEnumerable ফিরিয়ে দেয়, আমি আশা করি ঠিক আছে, নাহলে একটি .ToArray () এর জন্য আমার আরও কয়েকটি বাইট দরকার


3

সিজেম , 7 6 বাইট

1 বাইট সরানো হয়েছে এরিক আউটগলফারকে ধন্যবাদ ।

{),mr}

এটি একটি বেনামে ব্লক (ফাংশন) যা স্ট্যাক থেকে একটি পূর্ণসংখ্যা নেয় এবং ফলাফলের সাথে এটি প্রতিস্থাপন করে। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

{     e# Begin block
)     e# Increment: n+1
,     e# Range: [0 1 ... n]
mr    e# Shuffle
}     e# End block

নন {),mr}1 বাইট খাটো?
এরিক আউটগল্ফার

পছন্দ করেছেন ধন্যবাদ
লুইস মেন্ডো

3

জাভা 8, 114 111 97 বাইট

import java.util.*;n->{List l=new Stack();for(;n>=0;l.add(n--));Collections.shuffle(l);return l;}

-3 বাইট এবং বাগ-স্থির ধন্যবাদ @ অলিভিগ্রগ্রোয়ারকে ধন্যবাদ ।
-4 ধন্যবাদ বাইট @Jakob
-10 বাইট সরিয়ে .toArray()

ব্যাখ্যা:

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

import java.util.*;        // Required import for List, Stack and Collections
n->{                       // Method with integer parameter and Object-array return-type
  List l=new Stack();      //  Initialize a List
  for(;n>=0;l.add(n--));   //  Loop to fill the list with 0 through `n`
  Collections.shuffle(l);  //  Randomly shuffle the List
  return l;                //  Convert the List to an Object-array and return it
}                          // End of method

1
বাগ: অন্তর্ভুক্ত নয় n। ত্রুটিমুক্ত ও গলফ: for(n++;--n>=0;l.add(n));। এছাড়াও, আমি বলি আপনাকে আরে ফেরানোর দরকার নেই। অ্যারে এবং তালিকা বেশিরভাগ ভাষায় একই, সুতরাং কেবল তালিকাটি ফিরিয়ে দিন।
অলিভিয়ার

@ অলিভিগ্রগ্রোওরে ওউফস .. সঠিকভাবে পরীক্ষা না করে এবং কেবল পোস্ট করার জন্য এটিই আপনি পেয়েছেন .. বাগ-ফিক্সের জন্য ধন্যবাদ (এবং প্রসেসে 4 বাইট সংরক্ষিত)।
কেভিন ক্রুইজসেন

1
ঠিক আছে, তিনটি আসলে, কারণ আমি আবার সম্পাদনা করেছি, নিজের সাথে আরেকটি বাগ প্রবর্তন করেছি: >হওয়া উচিত >=
অলিভিয়ার

1
-4 বাইট: একটি এর Stackপরিবর্তে একটি ব্যবহার করুন Vectorএবং আপনার লুপটি এতে পরিবর্তন করুন for(;n>=0;l.add(n--));। এবং ফিরে আসা java.util.Listঅবশ্যই জরিমানা।
জাকব


2

পাইথ, 4 বাইট

.S}0

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


আপনি 3 বাইট গল্ফ করতে পারেন। .Sএকটি পূর্ণসংখ্যার যুক্তির সাথে একই .SU, এবং [0..n]কোড করা যায় Uh, যাতে আপনি ব্যবহার করতে পারেন .SUh, যা পরে হয়ে যায় .Sh
এরিক দি আউটগল্ফার

@ এরিকথ আউটগল্ফার ইঙ্গিতটির জন্য ধন্যবাদ, তবে আপনার প্রস্তাবিত সমাধান কেউ যদি পোস্ট করে ফেলেছে তবে আমি এটিকেই ছেড়ে দেব।
কার্লকাস্টার

Well, it's borderline whether that should've been a separate answer or not, but I believe it counts as a dupe, so even it being allowed, I'd consider it just builtin substitution, so nah, I didn't want to post separate, but isaacg did.
Erik the Outgolfer

2

C, 75 bytes

a[99],z,y;f(n){if(n){a[n]=--n;f(n);z=a[n];a[n]=a[y=rand()%(n+1)];a[y]=z;}}

Recursive function that initializes from the array's end on the way in, and swaps with a random element before it on the way out.


What if n > 98?
LegionMammal978

It would fail, of course, but input range wasn't specified in the problem. Please don't make me malloc :)
Computronium

change a into a para to fit the rule more?
l4m2


2

Charcoal, 33 bytes

A…·⁰NβFβ«AβδA‽δθPIθ↓A⟦⟧βFδ¿⁻θκ⊞βκ

Try it online! Link is to verbose version of code.

Apparently it takes 17 bytes to remove an element from a list in Charcoal.

সম্পাদনা করুন: আজকাল এটি কেবল তিনটি বাইট নেয়, ধরে নিই আপনি তালিকা থেকে আইটেমের সমস্ত উপস্থিতি সরাতে চান। এই প্লাসের অন্যান্য কাঠকয়ালের পরিবর্তনগুলি উত্তরটি 21 বাইটে কেটে ফেলেছে: এটি অনলাইনে চেষ্টা করুন!


হাই যে অনেকগুলি
ক্রিস্টোফার

2

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

?⍨1+⊢

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

ধরে নেওয়া যায় ⎕IO←0, যা অনেকগুলি মেশিনে ডিফল্ট।

ব্যাখ্যা

সঠিক যুক্তি

1+ এটিতে 1 যুক্ত করুন

?⍨0 নম্বর তৈরি করুন .. 1+⊢-1 এবং এলোমেলোভাবে একটি অ্যারেতে তাদের ডিল করুন যাতে কোনও দুটি সংখ্যা পুনরাবৃত্তি না করে


2

কিউ / কেডিবি +, 11 বাইট

সমাধান:

{(0-x)?1+x}

উদাহরণ:

q){(0-x)?1+x}10
5 9 7 1 2 4 8 0 3 10
q){(0-x)?1+x}10
6 10 2 8 4 5 9 0 7 3
q){(0-x)?1+x}10
9 6 4 1 10 8 2 7 0 5

ব্যাখ্যা:

সদৃশ ছাড়াই সম্পূর্ণ তালিকা দেওয়ার জন্য একটি নেতিবাচক ইনপুট সহ ? অপারেটরটি ব্যবহার করুন 0->n:

{(0-x)?1+x} / solution
{         } / lambda expression
         x  / implicit input
       1+   / add one
      ?     / rand
 (0-x)      / negate x, 'dont put item back in the bag'

2

টিআই -83 বেসিক, 5 বাইট (বোরিং)

randIntNoRep(0,Ans

হ্যাঁ, একটি বিল্টিন randIntNoRep(একটি দ্বি-বাইট টোকেন, এবং Ansএটি একটি বাইট।

আরও মজা, 34 বাইট:

Ans→N
seq(X,X,0,N→L₁
rand(N+1→L₂
SortA(L₂,L₁
L₁

সোজা তিবাসিকদেব থেকে । সম্ভবত গল্ফযোগ্য, তবে আমি এখনও কিছু খুঁজে পাইনি।

এটি কী করে: দ্বিতীয় আর্গের উপাদানগুলি ( L₁এখানে) তাদের সংশ্লিষ্ট উপাদানগুলির মতো একইভাবে চলমান এলোমেলো অ্যারে বাছাই করে।


1

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

n=>[...Array(n+1).keys()].sort(_=>.5-Math.random())

2
আমি মনে করি না এটি অভিন্ন; আমি f(5)10 বার চেষ্টা করেছি এবং 5প্রতিবার শেষ দুটি আইটেমগুলির মধ্যে একটি হয়েছি ।
ETH প্রোডাকশনগুলি

শুধু তা আবার বার কয়েক নিজেকে দৌড়ে গিয়ে পেয়েছিলাম 1,5,4,0,2,3& 1,0,2,5,3,4। সম্পাদনা করুন: এবং আরও কিছু prnt.sc/fe0goe
শেগি

3
মাত্র একটি দ্রুত পরীক্ষা f(5)চালিয়েছেন যা 1e5 বার চলে এবং ফলাফলগুলিতে প্রতিটি সংখ্যার গড় অবস্থান খুঁজে পায়। ফলস্বরূপ অ্যারে ছিল [ 1.42791, 1.43701, 2.00557, 2.6979, 3.3993, 4.03231 ], সুতরাং আমি এটি অভিন্ন বলে মনে করি না। ( কোড )
ইটিএইচ প্রোডাকশনগুলি

আমি মনে করি আমার কাছে একটি 93 বাইট সমাধান রয়েছে যা কাজ করতে পারে। n=>(a=[...Array(n).keys(),n++]).reduce((a,v,i)=>([a[i],a[j]]=[a[j=n*Math.random()|0],v],a),a)?
কামোরসো94

ফলাফলের উপর বাছাই করা random()অভিন্ন নয়। (উদাহরণস্বরূপ) দেখুন en.wikipedia.org/wiki/BrowserChoice.eu#Criticism
নিল

1

অ্যাসেটো , 15 14 16 বাইট

@lXp
Y!`n
zi&
0r

স্ট্যাকের শূন্যে পুশ করুন, একটি পূর্ণসংখ্যা পড়ুন, একটি পরিসীমা তৈরি করুন এবং এটিকে বদল করুন:

Y
zi
0r

একটি ক্যাচ মার্ক সেট করুন, 0 এর জন্য পরীক্ষার দৈর্ঘ্য এবং (সেই ক্ষেত্রে) প্রস্থান:

@lX
 !`

অন্য মান, একটি নতুন লাইন মুদ্রণ করুন এবং দৈর্ঘ্য পরীক্ষায় ফিরে যান:

   p
   n
  &

(আমাকে কোডটি পরিবর্তন করতে হয়েছিল কারণ আমি বুঝতে পেরেছিলাম যে প্রশ্নটি ভুলভাবে পড়েছি এবং 0-n নয়, 1-n থেকে একটি পরিসীমা তৈরি করেছি))




1

8 ম , 42 36 34 বাইট

কোড

>r [] ' a:push 0 r> loop a:shuffle

এসইডি (স্ট্যাক এফেক্ট ডায়াগ্রাম) n -- a

ব্যবহার এবং উদাহরণ

ok> 5 >r [] ' a:push 0 r> loop a:shuffle .
[2,5,0,3,1,4]

1

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

n=>[...Array(n+1)].map((n,i)=>[Math.random(),i]).sort().map(n=>n[1])

ফর্মের একটি অ্যারে তৈরি করে

[[Math.random(), 0],
 [Math.random(), 1],
 [Math.random(), 2],...]

তারপরে এটি বাছাই করে নতুন ক্রমে সর্বশেষ উপাদানগুলি প্রদান করে


1

জে, 11 বাইট

(?@!A.i.)>:

ব্যাখ্যা:

         >:   | Increment
(?@!A.i.)     | Fork, (f g h) n is evaluated as (f n) g (h n)
      i.      | Integers in range [0,n) inclusive
 ?@!          | Random integer in the range [0, n!)
    A.        | Permute right argument according to left

উদাহরণ:

    0 A. i.>:5
0 1 2 3 4 5
    1 A. i.>:5
0 1 2 3 5 4
    (?@!A.i.)>: 5
2 3 5 1 0 4
    (?@!A.i.)>: 5
0 3 5 1 2 4

1

Tcl , 90 বাইট

proc R n {lsort -c {try expr\ rand()>.5 on 9} [if [incr n -1]+2 {concat [R $n] [incr n]}]}

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

Tcl , 96 বাইট

proc R n {proc f a\ b {expr rand()>.5}
set i -1
while \$i<$n {lappend L [incr i]}
lsort -c f $L}

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


আউটগল্ফের জন্য একই বাইট গণনাটি পাওয়ার চেষ্টা করুন: tio.run/…
সার্জিওল
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.