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


11

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

উল্লেখ

উদাহরণ ইনপুট:

3

উদাহরণ আউটপুট:

000
001
011
010
110
111
101
100

মন্তব্য:

  • এই প্রশ্নের একটি ডুপ আছে বলে মনে হচ্ছে তবে তা নয়, কারণ এই প্রশ্নটি কোনও কোড-গল্ফ নয় এবং এটি বিভিন্ন আউটপুট দাবি করে। যদিও এটির উত্তরগুলি পরীক্ষা করতে সহায়তা করবে।
  • আপনি একটি পরিবর্তনশীল ধরে নিতে পারেন nযা ইনপুট ধারণ করে।

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

2
আমি @ এডনিসের সাথে একমত এবং তাই মূল প্রশ্নে আমি নিম্নলিখিত অপ্রচলিত উত্তরটি অগ্রাহ্য করেছি। "আপনি যে উত্তরটির সন্ধান করছেন তা যদি কঠোরভাবে দ্রুত ফলাফল হয়, তবে আপনি যদি ধূসর কোডগুলির একটি অ্যারে ঘোষণা করেন ..." তবে মূল প্রশ্নটি হ'ল এডি-এর একটি 7-বর্ণ এবং 4-বর্ণের উত্তর রয়েছে তাই আমি ডোন´ টি উন্নতির জন্য অনেক জায়গা দেখুন। অতএব আমি বর্তমানে পুনরায় খোলা ভোট দিচ্ছি না।
লেভেল নদী সেন্ট


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

উত্তর:


2

জাভাস্ক্রিপ্ট (77)

for(i=0;i<1<<n;)alert((Array(n*n).join(0)+(i>>1^i++).toString(2)).substr(-n))

আরও ব্রাউজার-বান্ধব সংস্করণ (কনসোল.লগ এবং প্রম্পট ()):

n=prompt();for(i=0;i<1<<n;)console.log((Array(n*n).join(0)+(i>>1^i++).toString(2)).substr(-n))

হতে পারে এই অ্যারে ... জয়েন হ'ল ওভারকিলfor(i=0;i<(l=1<<n);i++)console.log((i^(i>>1)|l).toString(2).slice(1));
edc65

2

পাইথন 2 (47)

for i in range(2**n):print bin(2**n+i/2^i)[3:]

অভিব্যক্তি i/2^iজন্য i'ম ধূসর কোড নম্বর থেকে এই উত্তর । সেই প্যাডকে দৈর্ঘ্যে অগ্রণী জিরো যুক্ত করতে n, আমি দৈর্ঘ্যের 2**nএকটি স্ট্রিং তৈরি করে বাইনারি স্ট্রিংয়ে রূপান্তরিত করার আগে যুক্ত করি n+1। তারপর, আমি নেতৃস্থানীয় অগ্রভাগ ছাঁটিয়া 1এবং নম্বর টাইপ উপসর্গ 0bসঙ্গে [3:]



2

এপিএল (ডায়ালগ ক্লাসিক) , 11 বাইট

2≠/0,↑,⍳n2

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

n⍴2হয় 2 2...2- nদু'জনের ভেক্টর

nআকারের সাথে একটি- মাত্রিক অ্যারের সূচকগুলি 2 2...2- যা নেস্টেড ভেক্টরগুলির একটি 2 × 2 × ... × 2 অ্যারে। যেহেতু আমরা 0-ইনডেক্সিং ( ⎕IO←0) ব্যবহার করি , সেগুলি দৈর্ঘ্যের সমস্ত বাইনারি ভেক্টর n

,2 × 2 × ... × 2 আকারটি সমতল করুন, সুতরাং আমরা 2 এন নেস্টেড বাইনারি ভেক্টরগুলির একটি ভেক্টর পাই

"মিক্স" - ভেক্টরের ভেক্টরকে একটি শক্ত 2 n × n ম্যাট্রিক্সে রূপান্তর করুন । দেখে মনে হচ্ছে:

0 0 0
0 0 1
0 1 0
0 1 1
1 0 0
1 0 1
1 1 0
1 1 1

0, ম্যাট্রিক্সের বামে শূন্যগুলি প্রিপেন্ড করে

2≠/জোড় ( 2) xor ( ) শেষ মাত্রা বরাবর ( /বিপরীতে ) গণনা ; অন্য কথায়, প্রতিটি উপাদান তার ডান প্রতিবেশীর সাথে xor-ed পায় এবং শেষ কলামটি অদৃশ্য হয়ে যায়

0 0 0
0 0 1
0 1 1
0 1 0
1 1 0
1 1 1
1 0 1
1 0 0

আপনি একটি দ্রুত ব্যাখ্যা যোগ করতে আপত্তি হবে?
জোনা

1
@Jonah নিশ্চিত, যোগ
ngn

খুব চালাক, থেক্স
জোনা

2

কীভাবে ùব্যবহৃত হয় তার নিখুঁত উদাহরণ । যেহেতু N.z(n)ডিফল্ট আরগ = 2 সহ পূর্ণসংখ্যা বিভাগ, আপনি এটির মাধ্যমে দুটি বাইট সংরক্ষণ করতে পারেন 2pU Ç^z)¤ùTU: এটি অনলাইনে চেষ্টা করুন!
ইটিএইচ প্রডাকশনগুলি

@ ইথ প্রডাকশনস ধন্যবাদ, আমি এখনও এবং পরে এখনও ডিফল্ট আরগগুলি মিস করছি। খুব সহজ, অনেক ধন্যবাদ।
নিট

1

পাইথন - 54

চ্যালেঞ্জে দেওয়া রেফারেন্স থেকে অ্যালগরিদমের ভিত্তিতে:

for i in range(2**n):print'{1:0{0}b}'.format(n,i>>1^i)

Ungolfed:

# For each of the possible 2**n numbers...
for num in range(2**n):
    gray = num>>1 ^ num

    # Print in binary and pad with n zeros.
    print '{1:0{0}b}'.format(grey)

1

PowerShell (168)

গোলাপএফ-তে আরেকবার চেষ্টা করে ফিরে এসেছি শৌখিন পাওয়ারশেল! আশা করি আপত্তি নেই! খুব কমপক্ষে এই প্রশ্নগুলি মজাদার এবং বুট করার জন্য একটি শেখার অভিজ্ঞতা। ধরে নিচ্ছি এন ইনপুট করা হয়েছে, আমাদের আছে:

$x=@('0','1');for($a=1;$a-lt$n;$a++){$x+=$x[($x.length-1)..0];$i=[Math]::Floor(($x.length-1)/2);0..$i|%{$x[$_]='0'+$x[$_]};($i+1)..($x.length-1)|%{$x[$_]='1'+$x[$_]}}$x

যে পাওয়ারশেলটির সাথে আমি কাজ করছি তা কেবলমাত্র ২.০, আমি কোনও বিট শিফটিং সেমিডলেট ব্যবহার করতে পারি না যা সংক্ষিপ্ত কোডের জন্য তৈরি হতে পারে। সুতরাং আমি প্রশ্ন উত্সে বর্ণিত একটি পৃথক পদ্ধতির সুবিধা নিয়েছি , অ্যারেটি উল্টিয়ে নিজে এটিকে যুক্ত করেছি, উপরের অর্ধেকের সামনের দিকে 0 যুক্ত করে এবং নীচের অর্ধেকের 1 টি রেখেছি।


1

এফ # (86) (84) (80)

for i in 0..(1<<<n)-1 do printfn"%s"(Convert.ToString(i^^^i/2,2).PadLeft(n,'0'))

এটি সম্ভবত আরও উন্নত হতে পারে।

এছাড়াও নোট করুন, যদি এফএসআইতে চালানো হয় তবে আপনার open System;;প্রথমে দরকার । যদি আপনি এটিটি আমদানি করা এড়াতে চান, (এবং যদি মানগুলি যেভাবে মুদ্রিত হয় সেটির বিষয়ে যদি আপনি যত্ন না করেন) তবে আপনি এই -২-অক্ষরের সংস্করণটি ব্যবহার করতে পারেন:

for i in 0..(1<<<n)-1 do(for j in 0..n-1 do printf"%i"((i^^^i/2>>>j)%2));printfn""

1

রুবি - 42 39

একই অ্যালগরিদম, বিভিন্ন ভাষা:

(2**n).times{|b|puts"%0#{n}b"%(b>>1^b)}

থেকে স্যুইচ #mapকরতে #times@voidpigeon প্রস্তাব দেওয়া যেমন 3 টি অক্ষর পরিমাণ সঞ্চয় হয়।


1
পরিবর্তে [*0...2**n].mapআপনি ব্যবহার করতে পারেন (2**n).times
সুস্পষ্ট


1

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

W:qt2/kZ~B

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

"পুরাতন" এক্স >> এন সহ এন >> 2 "পদ্ধতিটি ভাল।

W- কম্পিউট 2 ^ (ইনপুট) (ইনপুট পরোক্ষভাবে পায়)
:q- 1 - 0 2 ^ এন থেকে সংখ্যার পরিসর তৈরি
t - যে পরিসর প্রতিলিপি
2/k2 এবং মেঝে দ্বারা MATL, bitshift নেই তাই ডিভাইড (প্রতিটি সংখ্যা) -
Z~ - elementwise XOR যাও মূল 0 থেকে 2 ^ n - 1 অ্যারে সহ ফলাফল
B - ফলাফলের প্রতিটি সংখ্যা বাইনারি রূপান্তরিত করে
(স্পষ্টভাবে আউটপুট প্রদর্শন করে))


1

কে (এনএনজি / কে) , 25 বাইট

{(x-1){,/0 1,''|:\x}/0 1}

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


  • |:\x"বিপরীত স্ক্যান এক্স"। আউটপুট ইনপুট সমান না হওয়া অবধি এক্সের বিপরীতে প্রযোজ্য এবং প্রতিটি পুনরাবৃত্তি প্রদর্শন করে। প্রথম পাসে (0 1; 1 0) প্রদান করে।
  • 0 1,''"0 1 প্রত্যেকে যোগদান করুন"। প্রথম পাসের প্রতিটি মানের সাথে 0 এবং দ্বিতীয় পাসের প্রতিটি মানের 1 টির সাথে প্রথম পাসে ((0 0; 0 1); (1 1; 1 0)) যোগ দেয়
  • ,/ "যোগ দিন", এবং তালিকাতে সমতল হয়।
  • (x-1){...}/0 10 1এক্স -1 বারের চেয়ে বেশি "প্রয়োগ {ফানক " করা হয়। শেষ পুনরাবৃত্তির আউটপুটটিকে ইনপুট হিসাবে গ্রহণ করে

0

এপিএল (22)

{(0,⍵)⍪1,⊖⍵}⍣(n-1)⍪0 1

এটি তার সারি হিসাবে বিটগুলি যুক্ত একটি এন বাই বাই 2 mat n ম্যাট্রিক্সকে আউটপুট করে:

      n←3
      {(0,⍵)⍪1,⊖⍵}⍣(n-1)⍪0 1
0 0 0
0 0 1
0 1 1
0 1 0
1 1 0
1 1 1
1 0 1
1 0 0

ব্যাখ্যা:

  • {... }⍣(n-1)⍪0 1: n-1প্রাথমিক ইনপুট ম্যাট্রিক্স (0 1)T(যা 1-বিট ধূসর কোড) এর সাথে ফাংশন বার চালান

    • (0,⍵): প্রতিটি সারি একটি 0উপসর্গযুক্ত,
    • : শীর্ষে,
    • 1,⊖⍵: বিপরীত ক্রমে একটি 1উপসর্গযুক্ত প্রতিটি সারি

0

জেকিউ 1.5 , 105 100 বাইট

def g(n):if n<2then. else map([0]+.)+(reverse|map([1]+.))|g(n-1)end;[[0],[1]]|g(N)[]|map("\(.)")|add

ধরে নিই এন ইনপুট সরবরাহ করে। যেমন

def N: 3 ;

সম্প্রসারিত

def g(n):  # recursively compute gray code
  if n < 2
  then .
  else map([0]+.) + (reverse|map([1]+.)) | g(n-1)
  end;

  [[0],[1]]                 # initial state
| g(N)[]                    # for each element in array of gray codes
| map("\(.)")|add           # covert to a string

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



-1

টি-এসকিউএল 134

এই চ্যালেঞ্জটি tes (0), (1) Car এর কার্টেসিয়ান শক্তি ফিরিয়ে দিতে বলছে} এই স্নিপেট কোডটি তৈরি করে যা কার্টেসিয়ান পণ্যটি {(0), (1)} n বার কার্যকর করে।

DECLARE @ int=4,@s varchar(max)='SELECT*FROM's:set @s+='(VALUES(0),(1))t'+ltrim(@)+'(b)'if @>1set @s+=','set @-=1if @>0goto s exec(@s)

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