এটি একটি প্রসারিত বিট ․․․


18

ইনপুট:

আমরা দুটি ইনপুট গ্রহণ করি:

  • bদুটি স্বতন্ত্র মান সহ একটি ইনপুট : Leftএবং Right
  • এবং একটি ইতিবাচক পূর্ণসংখ্যা n

আউটপুট:

বাম / ডান ইনপুটটির উপর ভিত্তি করে, আমরা নিম্নলিখিত দুটি সিকোয়েন্সগুলির মধ্যে উভয়েরই পরিসীমা আউটপুট করি 1-n(প্রথম 125 আইটেমের নীচে ক্রমগুলি প্রদর্শিত হয়):

Left:
1, 6, 7, 56, 57, 62, 63, 960, 961, 966, 967, 1016, 1017, 1022, 1023, 31744, 31745, 31750, 31751, 31800, 31801, 31806, 31807, 32704, 32705, 32710, 32711, 32760, 32761, 32766, 32767, 2064384, 2064385, 2064390, 2064391, 2064440, 2064441, 2064446, 2064447, 2065344, 2065345, 2065350, 2065351, 2065400, 2065401, 2065406, 2065407, 2096128, 2096129, 2096134, 2096135, 2096184, 2096185, 2096190, 2096191, 2097088, 2097089, 2097094, 2097095, 2097144, 2097145, 2097150, 2097151, 266338304, 266338305, 266338310, 266338311, 266338360, 266338361, 266338366, 266338367, 266339264, 266339265, 266339270, 266339271, 266339320, 266339321, 266339326, 266339327, 266370048, 266370049, 266370054, 266370055, 266370104, 266370105, 266370110, 266370111, 266371008, 266371009, 266371014, 266371015, 266371064, 266371065, 266371070, 266371071, 268402688, 268402689, 268402694, 268402695, 268402744, 268402745, 268402750, 268402751, 268403648, 268403649, 268403654, 268403655, 268403704, 268403705, 268403710, 268403711, 268434432, 268434433, 268434438, 268434439, 268434488, 268434489, 268434494, 268434495, 268435392, 268435393, 268435398, 268435399, 268435448, 268435449

Right:
1, 4, 7, 32, 39, 56, 63, 512, 527, 624, 639, 896, 911, 1008, 1023, 16384, 16415, 16864, 16895, 19968, 19999, 20448, 20479, 28672, 28703, 29152, 29183, 32256, 32287, 32736, 32767, 1048576, 1048639, 1050560, 1050623, 1079296, 1079359, 1081280, 1081343, 1277952, 1278015, 1279936, 1279999, 1308672, 1308735, 1310656, 1310719, 1835008, 1835071, 1836992, 1837055, 1865728, 1865791, 1867712, 1867775, 2064384, 2064447, 2066368, 2066431, 2095104, 2095167, 2097088, 2097151, 134217728, 134217855, 134225792, 134225919, 134471680, 134471807, 134479744, 134479871, 138149888, 138150015, 138157952, 138158079, 138403840, 138403967, 138411904, 138412031, 163577856, 163577983, 163585920, 163586047, 163831808, 163831935, 163839872, 163839999, 167510016, 167510143, 167518080, 167518207, 167763968, 167764095, 167772032, 167772159, 234881024, 234881151, 234889088, 234889215, 235134976, 235135103, 235143040, 235143167, 238813184, 238813311, 238821248, 238821375, 239067136, 239067263, 239075200, 239075327, 264241152, 264241279, 264249216, 264249343, 264495104, 264495231, 264503168, 264503295, 268173312, 268173439, 268181376, 268181503, 268427264, 268427391

আপনি জিজ্ঞাসা কিভাবে এই ক্রম উত্পাদিত হয়?

1 এর মাধ্যমে একটি ডিফল্ট ক্রম n=10হবে:

As integer:
1, 2, 3, 4, 5, 6, 7, 8, 9, 10

As binary:
1 10 11 100 101 110 111 1000 1001 1010

যখন আমরা বাম দিকে প্রসারিত করি, বাইনারি এটি হয়ে যাবে:

1, 110, 111, 111000, 111001, 111110, 111111, 1111000000, 1111000001, 1111000110

কেন? শেষ বিট একবার ব্যবহার করা হয়; একক-শেষ দুইবার ব্যবহৃত হয়; দ্বিতীয় শেষটি তিনবার ব্যবহৃত হয়; প্রভৃতি

So `1010` will become (spaces added as clarification): `1111 000 11 0`

এবং এই নতুন বাম প্রসারিত বাইনারি স্ট্রিংগুলি পূর্বে পূর্ণসংখ্যায় রূপান্তরিত হয়:

1, 6, 7, 56, 57, 62, 63, 960, 961, 966

প্রসারিত ডান হিসাবে, প্রথম বিট একবার ব্যবহার করা হয়; দ্বিতীয়বার; তৃতীয় তিনবার; ইত্যাদি:

As binary:
1, 100, 111, 100000, 100111, 111000, 111111, 1000000000, 1000001111, 1001110000

As integer:
1, 4, 7, 32, 39, 56, 63, 512, 527, 624

চ্যালেঞ্জ বিধি:

  • আপনি যে কোনও দুটি স্বতন্ত্র মান নিতে পারেন, তবে কোনটি ব্যবহার করেন তা উল্লেখ করুন। সুতরাং এটি হতে পারে 1/0, true/false, null/undefined, "left"/"right", ইত্যাদি
  • n সর্বদা 0 এর চেয়ে বড়।
  • কমপক্ষে আপনার ভাষার ডিফল্ট পূর্ণসংখ্যার (যা বেশিরভাগ ভাষার ক্ষেত্রে 32-বিট) সর্বাধিক আউটপুট সমর্থন করা উচিত।
  • আউটপুট বিন্যাস নমনীয়। অ্যারে / তালিকা হিসাবে মুদ্রিত বা ফিরে আসতে পারে। একটি স্পেস, কমা, পাইপ এবং ডিলিমিটারের মতো থাকতে পারে। আপনার কল (আবার, দয়া করে আপনি কী ব্যবহার করেছেন তা জানান))

সাধারণ নিয়ম:

  • এটি , তাই বাইট জেতে সংক্ষিপ্ত উত্তর।
    কোড-গল্ফ ভাষাগুলি আপনাকে নন-কোডগলফিং ভাষার সাথে উত্তর পোস্ট করতে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।
  • স্ট্যান্ডার্ড নিয়মগুলি আপনার উত্তরের জন্য প্রযোজ্য , সুতরাং আপনাকে সঠিক পরামিতি এবং রিটার্ন-টাইপ, সম্পূর্ণ প্রোগ্রাম সহ STDIN / STDOUT, ফাংশন / পদ্ধতি ব্যবহারের অনুমতি দেওয়া হবে। আপনার কল
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।
  • যদি সম্ভব হয় তবে আপনার কোডের জন্য একটি পরীক্ষার সাথে একটি লিঙ্ক যুক্ত করুন।
  • এছাড়াও, প্রয়োজনে একটি ব্যাখ্যা যোগ করুন।

1
আপনি কি বিটওয়াইজ-ভিত্তিক উত্তরগুলি কেবল সমর্থন করতে পারবেন তা গ্রহণ করার বিষয়টি বিবেচনা করবেন n < 128, যাতে ফলাফলগুলি 32-বিট পূর্ণসংখ্যায় ফিট করে?
আর্নৌল্ট

@ আরনাউল্ড এ সম্পর্কে সন্দেহ প্রকাশ করেছেন, তবে যেহেতু আপনি জিজ্ঞাসা করেছেন, কেন নয়। আপনার ভাষার পূর্ণসংখ্যার সাথে মানানসই 1000 ম্যাক্সের নিয়মগুলিকে পরিবর্তন করবে।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন এখনও কমপক্ষে ১ b বিটের মধ্যে সীমাবদ্ধ রাখার পরামর্শ দিবেন - সেখানে কমপক্ষে একটি ভাষা আছে যা কেবলমাত্র একক বিটকে ডেটা টাইপ হিসাবে সমর্থন করে।

উত্তর:




5

05 এ বি 1 ই , 14 13 বাইট

এরিক দ্য আউটগল্ফারকে ধন্যবাদ 1 বাইট সংরক্ষিত

LbεIiRƶRëƶ}JC

1বাম জন্য।
0(বা অন্য কিছু) ডান জন্য।

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

ব্যাখ্যা

L                # push range [1 ... first_input]
 b               # convert to binary
  ε              # apply to each
   Ii            # if second_input is true
     RƶR         # reverse, multiply each element with its 1-based index and reverse again
        ëƶ       # else, multiply each element with its 1-based index
          }      # end if
           J     # join
            C    # convert to base-10

2
আপনি ε-1 এর জন্য ব্যবহার করতে পারেন :LbεIiRƶRëƶ}JC
এরিক আউটগলফার

@ এরিকথ আউটগল্ফার: দুর্দান্ত ধারণা ব্যবহার করে ë। এক্ষেত্রে ifকোনও প্রয়োগে ইস্যুটি সম্পর্কে আলোচনা করা যায় :)
এমিগানা

3

হুশ , 13 বাইট

mȯḋṠṘo?ḣṫ⁰Lḋḣ

এটি অনেকগুলি বিন্দুযুক্ত চিঠি ...

তারপরে প্রথমে b( 0বাম দিকে এবং 1ডানদিকে) নিয়ে যান nএটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

mȯḋṠṘo?ḣṫ⁰Lḋḣ  Inputs b=1 and n=5 (implicit).
            ḣ  Range to n: [1,2,3,4,5]
mȯ             Map function over the range:
                 Argument: number k=5
           ḋ     Binary digits: [1,0,1]
   ṠṘ            Repeat each digit with respect to the list
     o    L      obtained by applying to the length (3) the function
      ?  ⁰       if b is truthy
       ḣ         then increasing range: [1,2,3]
        ṫ        else decreasing range: [3,2,1].
                 We get [1,0,0,1,1,1].
  ḋ              Convert back to integer: 39
               Final result [1,4,7,32,39], implicitly print.

আপনি সম্ভবত bসরাসরি বা ṫ হিসাবে নেওয়া বেছে নিতে পারেন , আপনাকে তিনটি বাইট সংরক্ষণ করে :)
লিও

@ লিও হুম, এ জাতীয় পিচ্ছিল opeাল। আমি পুরো প্রোগ্রামটির দুটি সংস্করণের bI
একটির মতোও

3

জাপট , 19 18 17 বাইট

0"বাম" 1জন্য, "ডান" এর জন্য। (এটি আসলে সেই ২ টির জায়গায় কোনও মিথ্যা বা সত্যবাদী মূল্যবোধ নিতে পারে))

õȤËpV©EĪEnFlÃn2

এটা পরীক্ষা করো


ব্যাখ্যা

পূর্ণসংখ্যা Uএবং এর অন্তর্নিহিত ইনপুট V

õ

Uসমেত 1 থেকে শুরু করে পূর্ণসংখ্যার একটি অ্যারে তৈরি করুন ।

È

প্রতিটি একটি ফাংশন মাধ্যমে পাস।

¤

বর্তমান পূর্ণসংখ্যাকে একটি বাইনারি স্ট্রিংয়ে রূপান্তর করুন

Ë           Ã

স্ট্রিংয়ের উপরে মানচিত্র, প্রতিটি অক্ষর একটি ক্রিয়াকলাপের মধ্য দিয়ে চলেছে, যেখানে Eবর্তমান সূচক এবং Fসম্পূর্ণ স্ট্রিং।

p

বর্তমানের চরিত্রটি পুনরাবৃত্তি করুন

V©  ª

©লজিকাল অ্যান্ড ( &&) এবং ªলজিকাল ওআর ||, সুতরাং আমরা এখানে Vসত্যবাদী কিনা (শূন্য নয়) তা পরীক্ষা করে দেখছি।

যদি Vসত্য হয় তবে Xবারবার Y+1বার বার পাওয়া যায়।

YnZl

যদি Vমিথ্যা হয় তবে বারের দৈর্ঘ্য ( ) থেকে Xবার বার Yবিয়োগ করা হবে ।nlZ

n2

একটি বেস 10 পূর্ণসংখ্যায় ফিরে রূপান্তর করুন।

সুস্পষ্টভাবে ফলাফল অ্যারে আউটপুট।


"নবম আইটেম" না হয়ে "ফার্স্ট এন আইটেম" তা বুঝতে পেরে আমি 16 এ
নেমেছি

@ এথ প্রডাকশন: আপনিই কেবল সেই ভুলটি করেননি;)
শেগি

2

গাইয়া , 15 বাইট

⟪¤bw¦¤;ċ%׆_b⟫¦

-1বাম এবং 1ডান জন্য ব্যবহার ।

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

ব্যাখ্যা

⟪¤bw¦¤;ċ%׆_b⟫¦  Map this block over the range 1..n, with direction as an extra parameter:
 ¤                Swap, bring current number to the top
  b               List of binary digits
   w¦             Wrap each in a list
     ¤            Bring direction to the top
      ;ċ          Push the range 1..len(binary digts)
        %         Select every direction-th element of it (-1 reverses, 1 does nothing)
         ׆       Element-wise repetition
           _      Flatten
            b     Convert from binary to decimal

2

প্রোটন , 79 বাইট

n=>d=>[int(''.join(b[x]*[l-x,x-1][d]for x:2..(l=len(b=bin(i)))),2)for i:1..n+1]

0বাম, 1ঠিক আছে।

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

Ungolfed

f=n=>d=>                        # Curried function
[                               # Collect the results in a list
 int(                           # Convert from a binary string to an int:
  ''.join(                       # Join together
   b[x]                           # Each character of the binary string of n
   *[l-x,x-1][d]                  # Repeated by its index or its index from the end, depending on d
   for x:2..(l=len(b=bin(i))))    
 ,2)
 for i:1..n+1                   # Do this for everything from 1 to n inclusive
]

2

সি # (.নেট কোর) , 192 187 + 23 বাইট

-5 বাইটস TheLethalCoder ধন্যবাদ

b=>n=>new int[n].Select((_,a)=>{var g=Convert.ToString(a+1,2);return(long)g.Reverse().SelectMany((x,i)=>Enumerable.Repeat(x,b?i+1:g.Length-i)).Select((x,i)=>x>48?Math.Pow(2,i):0).Sum();})

বাইট গণনা এছাড়াও অন্তর্ভুক্ত:

namespace System.Linq{}

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

ইনপুট: leftহয় true,right হয়false

ব্যাখ্যা:

b => n =>                                   // Take two inputs (bool and int)
    new int[n].Select((_, a) => {           // Create new collection the size of n
        var g = Convert.ToString(a + 1, 2); // Take every number in sequence 1..n and convert to base 2 (in a string)
        return (long)g.Reverse()            // Reverse the bits
               .SelectMany((x, i) =>        // Replace every bit with a collection of its repeats, then flatten the result
                   Enumerable.Repeat(x, b ? i + 1 : g.Length - i))
               .Select((x, i) => x > 48 ? Math.Pow(2, i) : 0)
               .Sum();                      // Replace every bit with a corresponding power of 2, then sum
    })


185 + 23 ^ (এক মন্তব্যে খুব দীর্ঘ ছিল)
TheLethalCoder

@ দ্য লেথলকোডার আপনাকে ধন্যবাদ! দুর্ভাগ্যক্রমে যদিও, এটি 187 যেহেতু 0 থেকে শুরু হওয়ার পরে
সূচকগুলিতে আমাদের

এর using System.Linq;চেয়ে কম নয় namespace System.Linq{}, বা আমি এখানে কিছু মিস করছি? অনেক দিন আগে আমি .NET tbh এ প্রোগ্রাম করেছিলাম ..
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুইজসেন এই ব্যবহারগুলি Mathএবং Convertউভয়ই নামপথের মধ্যে রয়েছে System, সুতরাং এর জন্য যাওয়া namespace System.Linqসবচেয়ে সংক্ষিপ্ত - এটি উভয় Systemএবং System.Linqশ্রেণি উভয়ই ব্যবহারের অনুমতি দেয় ।
গ্রজেগোর্জ পুয়াউস্কি

2

ডায়ালগ এপিএল, 23 বাইট

{2⊥b/⍨⌽⍣⍺⍳≢b←2⊥⍣¯1⊢⍵}¨⍳

বামটি 1ডান হয় 0(ফাংশনের বাম আর্গুমেন্ট হিসাবে পাস করা হয়)

সূচক জেনারেটর হয়

{... ডানদিকে প্রতিটি আইটেমে ধনুর্বন্ধনী মধ্যে ফাংশন প্রয়োগ করুন

b←2⊥⍣¯1⊢⍵b- কে বাইনারি হিসাবে এনকোড করা হয় ( বেস 2 তে উপস্থাপনের জন্য প্রয়োজনীয় বিটগুলির সর্বনিম্ন সংখ্যা পেতে ডিকোডের বিপরীত ব্যবহার করে )

⍳≢bভেক্টর বি এর জন্য সূচক তৈরি করুন (খ এর ≢bদৈর্ঘ্য)

⌽⍣⍺বিপরীত সময় (শর্তাধীন এখানে বাম বা ডান প্রসারিত জন্য ব্যবহৃত হয়)

b/⍨ বি দ্বারা প্রতিলিপি করা হয়েছে (বিপরীত সূচক অনুসারে বিটগুলি প্রতিলিপি করে)

2⊥ বেস 2 থেকে ডিকোড করুন

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


2

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

এটি শেগির উত্তরের চেয়ে উল্লেখযোগ্যভাবে দীর্ঘ , তবে আমি খাঁটি বিটওয়াইজ অ্যাপ্রোচ চেষ্টা করতে চেয়েছিলাম।

জেএস বিটওয়াইজ অপারেশনের 32-বিটের সীমাবদ্ধতার কারণে এটি কেবল এন <128 এর জন্য কাজ করে ।

সিনট্যাক্স সংবাহন ইনপুট লাগে (n)(r), যেখানে R অধিকার জন্য বাম / truthy জন্য falsy হয়।

n=>r=>[...Array(n)].map((_,n)=>(z=n=>31-Math.clz32(n),g=n=>n&&(x=z(b=n&-n),r?2<<z(n)-x:b*2)-1<<x*(r?2*z(n)+3-x:x+1)/2|g(n^b))(n+1))

ফর্ম্যাট এবং মন্তব্য

n => r => [...Array(n)]       // given n and r
  .map((_, n) => (            // for each n in [0 .. n - 1]
    z = n =>                  //   z = helper function returning the
      31 - Math.clz32(n),     //       0-based position of the highest bit set
    g = n =>                  //   g = recursive function:
      n && (                  //     if n is not equal to 0:
        x = z(b = n & -n),    //       b = bitmask of lowest bit set / x = position of b
        r ?                   //       if direction = right:
          2 << z(n) - x       //         use 2 << z(n) - x
        :                     //       else:
          b * 2               //         use b * 2
      ) - 1                   //       get bitmask by subtracting 1
      << x * (                //       left-shift it by x multiplied by:
        r ?                   //         if direction = right:
          2 * z(n) + 3 - x    //           2 * z(n) + 3 - x
        :                     //         else:
          x + 1               //           x + 1
      ) / 2                   //       and divided by 2
      | g(n ^ b)              //     recursive call with n XOR b
    )(n + 1)                  //   initial call to g() with n + 1
  )                           // end of map()

ডেমো


ঠিক আছে, আমি এখন আমার দৈর্ঘ্য সম্পর্কে কিছুটা ভাল বোধ করছি, আপনি সংক্ষিপ্ততর চেয়ে বরং দীর্ঘতর সমাধানের জন্য যাচ্ছেন।
শেগি

1
" (ওপির অনুমোদনের জন্য মুলতুবি রয়েছে)। " অনুমোদিত :) আমার কাছ থেকে +1।
কেভিন ক্রুইজসেন

2

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

ওহ, এটি এখন অনেক দীর্ঘ! আপনি যখন "আসল" জাভাস্ক্রিপ্ট, কিডিস লেখার জন্য দিনটি ব্যয় করেন তখনই এটি ঘটে থাকে; আপনি কিভাবে সঠিকভাবে গল্ফ করতে ভুলবেন না!

"বাম" এবং "ডান" থাকার bসাথে কোনও সত্যবাদী বা মিথ্যা মান ব্যবহার করে ।falsetrue

n=>b=>[...Array(n)].map(_=>eval("0b"+[...s=(++e).toString(2)].map((x,y)=>x.repeat(b?++y:s.length-y)).join``),e=0)

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

o.innerText=(f=
n=>b=>[...Array(n)].map(_=>eval("0b"+[...s=(++e).toString(2)].map((x,y)=>x.repeat(b?++y:s.length-y)).join``),e=0)
)(i.value=10)(j.value=1);oninput=_=>o.innerText=f(+i.value)(+j.value)
label,input{font-family:sans-serif;font-size:14px;height:20px;line-height:20px;vertical-align:middle}input{margin:0 5px 0 0;width:100px;}
<label for=i>Size: </label><input id=i type=number><label for=j>Direction: </label><input id=j min=0 max=1 type=number><pre id=o>



1

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

\d+
$*
1
$`1¶
+`(1+)\1
${1}0
01
1
.
$.%`$*R$&$.%'$*L
+s`(R?)(\d)(L?)(.*¶\1\3)$
$2$2$4
¶*[RL]

1
01
+`10
011
%`1

এটি অনলাইন চেষ্টা করুন! নম্বর এবং হয় Lবা Rপ্রত্যয় হিসাবে (বা পৃথক লাইনে) নেয় T ব্যাখ্যা:

\d+
$*
1
$`1¶

দশমিক থেকে আনারিতে রূপান্তর করুন এবং 1 থেকে গণনা করুন n

+`(1+)\1
${1}0
01
1

Unary থেকে বাইনারি রূপান্তর করুন।

.
$.%`$*R$&$.%'$*L

প্রতিটি বিট মোড়ানো Rএবং Lলাইনের অবস্থান অনুযায়ী অক্ষর।

+s`(R?)(\d)(L?)(.*¶\1\3)$
$2$2$4

প্রাসঙ্গিক প্রতিস্থাপন RLউপযুক্ত সংলগ্ন অঙ্ক সহ বা অক্ষরগুলি ।

¶*[RL]

1
01
+`10
011
%`1

বাম-ওভারের অক্ষরগুলি সরান এবং বাইনারি থেকে দশকে রূপান্তর করুন।


1
হাই, আপনাকে সমস্ত সংখ্যাকে আউটপুট 1করতে হবে n। শুধু n'তম সংখ্যা নয়।
কেভিন ক্রুইজসেন

@ কেভিন ক্রুইজসেন বাহ, আমার সাব -100 বাইট গণনা আছে ...
নিল

1

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

3 বাইট, ধন্যবাদ কেভিন

আমি নিশ্চিত যে এই সাইটের জন্য যথেষ্ট ES6 জানি না, তবে আমি চেষ্টা করেছি! প্রতিটি সংখ্যার মধ্য দিয়ে লুপ করুন এবং সেই সংখ্যার জন্য প্রতিটি বাইনারি উপস্থাপনার মধ্য দিয়ে লুপ করুন, প্রতিটি অক্ষর পুনরাবৃত্তি করুন তবে অনেক বার প্রয়োজন।

d=>n=>{i=0;while(i++<n){b=i.toString(2),s="",k=-1,l=b.length;while(++k<l)s+=b[k].repeat(d?k+1:l-k);console.log(parseInt(s,2))}}

f=d=>n=>{i=0;while(i++<n){b=i.toString(2),s="",k=-1,l=b.length;while(++k<l)s+=b[k].repeat(d?k+1:l-k);console.log(parseInt(s,2))}}
f(1)(10)
f(0)(10)


1
আমার কাছ থেকে +1 :) আমি মনে করি আপনি d=>n=>অন্য দুটি জেএস ES6 উত্তর মত কারিঙ ইনপুট ( ) ব্যবহার করে একটি বাইট সংরক্ষণ করতে পারেন । এছাড়াও, আমার মনে হয় আপনি পরিবর্তন করে অন্য 2 বাইট সংরক্ষণ করতে পারবেন k=-1,l=b.length;while(++k<l)s+=b[k].repeat(d?k+1:l-k);করার k=0,l=b.length;while(k<l)s+=b[k++].repeat(d?k:l+~k);(শুরু k=0পরিবর্তে -1, এবং l-k-1যা পরে প্রয়োজন বোধ করা হয় কমান হয় l+~k)। এছাড়াও, (i).toString(2)প্রয়োজনীয় বন্ধুত্বগুলি কি প্রয়োজনীয়?
কেভিন ক্রুইজসেন

1
দেখে +~kমনে হচ্ছে এটি কাজ করা উচিত, তবে আমি এটি বুঝতে পারি না, পাগল হতে থাকে। অন্যান্য টিপস জন্য ধন্যবাদ!
সোভেন রাইট কোড

1
আহ উফ, l+~kভুল, কারণ এটি কিন্তু l-k-1নয় l-k+1.. আমার খারাপ। আপনি এখনও শুরু করে গলফ এক বাইট করতে পারেন k: শূন্য যদিও উপর k=0,l=b.length;while(k<l)s+=b[k++].repeat(d?k:l-k+1);
কেভিন ক্রুইজসেন

1

রুবি, 98 বাইট

->n,r{t=->a{r ?a:a.reverse};(1..n).map{|k|i=0;t[t[k.to_s(2).chars].map{|d|d*(i+=1)}].join.to_i 2}}

টেননারীতে স্থানটি a{r ?a:a.reverse}কী প্রয়োজনীয়?
কেভিন ক্রুইজসেন

2
হ্যাঁ. রুবি পদ্ধতিগুলি শেষ হতে পারে ?, r?কোনও পদ্ধতির নাম হিসাবে ব্যাখ্যা করা হত।
এম-ক্র্যাজান

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

1

জাভা 8, 136 বাইট

লাম্বদা (তরকারি) থেকে Booleanএকজন গ্রাহক Integer। বুলিয়ান প্যারামিটার ইঙ্গিত প্রসারিত বাঁদিকে কিনা (মান true, false)। আউটপুট স্ট্যান্ডার্ড আউট এ মুদ্রিত হয়, নতুন লাইনের দ্বারা পৃথক, একটি পিছনে থাকা নতুন লাইনের সাথে।

l->n->{for(int i=0,o,c,d,s=0;i++<n;System.out.println(o)){while(i>>s>0)s++;for(o=c=0;c++<s;)for(d=0;d++<(l?s-c+1:c);o|=i>>s-c&1)o<<=1;}}

অবহেলিত ল্যাম্বদা

l ->
    n -> {
        for (
            int i = 0, o, c, d, s = 0;
            i++ < n;
            System.out.println(o)
        ) {
            while (i >> s > 0)
                s++;
            for (o = c = 0; c++ < s; )
                for (
                    d = 0;
                    d++ < (l ? s - c + 1 : c);
                    o |= i >> s - c & 1
                )
                    o <<= 1;
        }
    }

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

সীমা

যেহেতু তারা গুলিগুলিতে জমা হয় int, আউটপুটগুলি 31 বিটের মধ্যে সীমাবদ্ধ। ফলস্বরূপ, ইনপুটগুলি 7 টি বিটের মধ্যে সীমাবদ্ধ, সুতরাং প্রোগ্রামটি সর্বাধিক ইনপুটটি 127 সমর্থন করে।

ব্যাখ্যা

এই দ্রবণটি বিটওয়াইজ অপারেশনগুলি ব্যবহার করে প্রতিটি প্রসারিত সংখ্যা তৈরি করে। বাহ্যিক লুপটি i1 থেকে n পর্যন্ত প্রসারিত সংখ্যাগুলির উপরে পুনরাবৃত্তি করে এবং প্রতিটি পুনরাবৃত্তির পরে প্রসারিত মান মুদ্রণ করে।

অভ্যন্তরীণ whileলুপটি sবিটের সংখ্যায় বৃদ্ধি পায় iএবং পরবর্তী প্রতিটি বিট অবস্থানের উপরে forপুনরাবৃত্তি cহয়। এই লুপের মধ্যে, dবর্তমান বিটের পুনরাবৃত্তি করতে সংখ্যার সংখ্যা গণনা করা হয় যা ইনপুটটির উপর নির্ভর করে l। প্রতিটি পদক্ষেপে, oবামে স্থানান্তরিত হয় এবং যথাযথ বিটটি iমুখোশযুক্ত হয়ে অর্ডার করা হয়।

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