আপ বিট!


26

একটি পূর্ণসংখ্যা দেওয়া N নিম্নলিখিত পদক্ষেপগুলি সম্পাদন করে: (উদাহরণ হিসাবে 9 ব্যবহার করে)।

  1. এন। ( 9) ইনপুট পান
  2. বেস 10 থেকে বেস 2 তে এন রূপান্তর করুন। ( 1001)
  3. প্রতিটি বিট 1 দ্বারা বৃদ্ধি করুন ( 2112)
  4. ফলাফলটিকে বেস 3 হিসাবে বিবেচনা করুন এবং এটি আবার বেস 10 এ রূপান্তর করুন। ( 68)
  5. ফলাফল / ফলাফল আউটপুট।

ইনপুট

যে কোনও যুক্তিসঙ্গত সংখ্যার ফর্ম্যাটে প্রাপ্ত হতে পারে।
আপনার কেবলমাত্র কেসগুলি পরিচালনা করতে হবে যেখানে এন> 0।


আউটপুট

হয় নম্বর বা স্ট্রিং হিসাবে ফিরে আসুন, বা এতে মুদ্রণ করুন stdout


বিধি

  • এটি , বাইট জেতে সংক্ষিপ্ততম কোড।
  • ডিফল্ট লুফোলগুলি নিষিদ্ধ।

পরীক্ষার মামলা

1 -> 2
2 -> 7
5 -> 23
9 -> 68
10 -> 70
20 -> 211
1235 -> 150623
93825 -> 114252161

উত্তর:


15

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

f=lambda n:n and 3*f(n/2)+n%2+1

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


3
আপনি কিভাবে এটি কাজ করে তা ব্যাখ্যা করতে পারেন?

+n%2+1ডানদিকে অবস্থিত বাইনারি বিট প্লাস 1 টি ফেরার মান, যোগ করে n/2ডান-বদল আনতে n1 বাইনারি বিট দ্বারা, 3*f(n/2)যাও recursively 3 বার ঐ ডান-স্থানান্তরিত বিট এই গণনার যোগ করে, এবং n andপুনরাবৃত্তির শেষ হয় যখন n0
Noodle9

11

x>>1যেমনটি x/2তাই না তাই না?
mbomb007

@ mbomb007 আমি এখনও ঠিক এটির জন্য চিন্তা করেছি এবং এটির পরামর্শ দিয়েছি তবে স্পষ্টতই এটি জেএসে হয়ে যায় Infinity.. অনলাইনে চেষ্টা করে দেখুন। (আপনি উত্তরটিতে একটি টিআইও-লিঙ্ক যুক্ত করতে চাইতে পারেন, আই 4 এম 2 )
কেভিন ক্রুইজসেন

2
@ mbomb007 নং 1>>1=0যখন1/2=0.5
l4m2

4
@ এমবম্ব007 ... পাইথন?
ব্যবহারকারী 202729

2
হ্যাঁ। পাইথন উত্তর দেখুন। সে কারণেই এটি n/2কাজ করে এবং যে কারণে আমি এটি এখানে প্রস্তাব করেছি।
mbomb007

9

জাভা (জেডিকে 10) , 44 বাইট

long n(long x){return x<1?0:x%2+1+3*n(x/2);}

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


1
হয়ত -~সাহায্য করবে?
ব্যবহারকারী 202729

2
না, প্রাধান্য বিধি।
ব্যবহারকারী 202729

আপনার কাছে একই প্রশ্ন: কেন long? :) এবং এখানে আমি ভেবেছিলাম আমার সিকোয়েন্স
পদ্ধতিরটি

@ কেভিন ক্রুজসেন আপনার সাথে ন্যায্য হতে ...
ব্যবহারকারী 202729

6

বাইনারি, বর্ধন, টু-বেস, ৩. সত্যিই এটি বলা দরকার।
অ্যাডম

2
@ অ্যাডাম প্রযুক্তিগতভাবে এটি ফ্রম- বেস, তবে হ্যাঁ, এটি বেশিরভাগ ক্ষেত্রেই গল্ফপূর্ণ ভাষায় ক্ষুদ্র tri
এরিক আউটগলফার

6

জে , 7 বাইট

3#.1+#:

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

গ্যালেন ইভানভকে -4 বাইটের জন্য ধন্যবাদ! আমার সত্যিই আমার জে গল্ফিং দক্ষতা উন্নত করা দরকার ...



এছাড়াও টেমপ্লেটের জন্য ধন্যবাদ, আমার সম্পর্কে কিছু শিখতে হবে : 0
ব্যবহারকারী 202729

টেমপ্লেটটি আমার নয়, আমি ভুলে গিয়েছিলাম এর লেখক কে।
গ্যালেন ইভানভ 14

2
এটি আমার হবে :)
কনর ও'ব্রায়ান

6

আর , 55 43 বাইট

function(n)(n%/%2^(x=0:log2(n))%%2+1)%*%3^x

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

আর, ইনক্রিমেন্টগুলিতে স্ট্যান্ডার্ড বেস রূপান্তর ট্রিক ব্যবহার করে এবং তারপরে 3কোনও পূর্ণসংখ্যায় ফিরে রূপান্তর করার ক্ষমতা সহ ডট পণ্য ব্যবহার করে ।

12 বাইট বাদ দেওয়ার জন্য @ ব্যবহারকারী 2390246 কে ধন্যবাদ !


বাইনারি রূপান্তর চূড়ান্ত আউটপুট না, কারণ সংখ্যার ক্রম কিছু যায় আসে না। সুতরাং মেঝে (লগ (এন)) এর পরিবর্তে: 0 আপনি 0: লগ (এন) করতে পারেন এবং কিছু বাইট সংরক্ষণ করতে পারেন: 43 বাইট
ব্যবহারকারী 2390246

@ ব্যবহারকারী 2390246 অবশ্যই, আপনাকে ধন্যবাদ।
জিউসেপ


6

জাভা 10, 81 52 বাইট (বেস রূপান্তর)

n->n.toString(n,2).chars().reduce(0,(r,c)->r*3+c-47)

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

-29 ধন্যবাদ বাইট @Holger

ব্যাখ্যা:

n->{                         // Method with Long as both parameter and return-type
  n.toString(n,2)            //  Convert the input to a Base-2 String
  .chars().reduce(0,(r,c)->  //  Loop over its digits as bytes
    r*3+c-47)                //  Multiply the current result by 3, and add the digit + 1
                             //  (which is equal to increasing each digit by 1,
                             //  and then converting from Base-3 to Base-10)

জাভা 10, 171 167 151 150 149 বাইট (সিকোয়েন্স)

n->{int t=31-n.numberOfLeadingZeros(n);return a(t+1)+b(n-(1<<t));};int a(int n){return--n<1?n+2:3*a(n)+1;}int b(int n){return n<1?0:n+3*b(n/=2)+n*2;}

-১ by বাইটস ধন্যবাদ @ মিউজিকম্যান ৫৩৩ তে , পরিবর্তিত (int)Math.pow(2,t)হয়েছে (1<<t)
-১ বাইট @ হোলজারকে ধন্যবাদ , এতে পরিবর্তন (int)(Math.log(n)/Math.log(2))করে 31-n.numberOfLeadingZeros(n)

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

ব্যাখ্যা:

n->{                         // Method with Integer as both parameter and return-type
  int t=31-n.numberOfLeadingZeros(n);
                             //  2_log(n)
  return a(t+1)              //  Return A060816(2_log(n)+1)
         +b(n-(1<<t));}      //   + A005836(n-2^2_log(n))

// A060816: a(n) = 3*a(n-1) + 1; a(0)=1, a(1)=2
int a(int n){return--n<1?n+2:3*a(n)+1;}

// A005836: a(n+1) = 3*a(floor(n/2)) + n - 2*floor(n/2).
int b(int n){return n<1?0:n+3*b(n/=2)+n*2;}

আমরা যখন ক্রমটি দেখি:

2,  7,8,  22,23,25,26,  67,68,70,71,76,77,79,80,  202,203,205,206,211,212,214,215,229,230,232,233,238,239,241,242, ...

আমরা একাধিক অনুচ্ছেদ দেখতে পাচ্ছি:

A053645(n):
0,  0,1,  0,1,2,3,  0,1,2,3,4,5,6,7,  0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,  ...

A060816(A053645(n)):
2,  7,7,  22,22,22,22,  67,67,67,67,67,67,67,67,  202,202,202,202,202,202,202,202,202,202,202,202,202,202,202,  ...

A005836(A053645(n)+1)
0,  0,1,  0,1,3,4,  0,1,3,4,9,10,12,13,  0,1,3,4,9,10,12,13,27,28,30,31,36,37,39,40,  ...

সুতরাং ক্রম জিজ্ঞাসা করা হয়:

A060816(A053645(n)) + A005836(A053645(n)+1)

আমি নিদর্শন খুঁজতে স্তন্যপান তাই আমি কি আমি উপরে পাওয়া গর্বিত .. যে বলেন না, @ user202729 পাওয়া জাভা একটি ভাল এবং খাটো পদ্ধতির .. কয়েক মিনিটের মধ্যে: '(


পুনরায় n.toString(n,2).getBytes()... আমি মনে করি ম্যানুয়াল রূপান্তরটি আরও কম হতে পারে।
ব্যবহারকারী 202729

1
বিটিডাব্লু কেন longএবং না int?
ব্যবহারকারী 202729

1
আমি মনে করি ক্রম সংস্করণে আপনি এর (int)Math.pow(2,t)জন্য পরিবর্তন করতে পারেন 1<<t... এবং তারপরে সেই অভিব্যক্তিটি ইনলাইন করুন এবং ভেরিয়েবলটি আই ( 152 বাইট ) বাদ দিন
musicman523

1
বাস্তব জীবনে, আমি 31-Integer.numberOfLeadingZeros(n)পরিবর্তে ব্যবহার করব (int)(Math.log(n)/Math.log(2)), তবে এটি কম নয়। আপনি import staticযদি না শিরোনামে ব্যবহার করেন তবে এটি নিয়মগুলি খুব বেশি প্রসারিত করতে পারে।
হলগার

1
আমি কেবল আপনার প্রথম বৈকল্পিকের লুপটিকে সাফল্যের সাথে একটি স্ট্রিম সমাধানে রূপান্তরিত করার চেষ্টা করেছি:n -> n.toString(n,2).chars().reduce(0,(r,c)->r*3+c-47)
হলগার





3

সংযুক্তি , 19 বাইট

FromBase&3@1&`+@Bin

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

এটি তিনটি ফাংশনের সংমিশ্রণ:

  • FromBase&3
  • 1&`+
  • Bin

এটি প্রথমে বাইনারি ( Bin) এ রূপান্তর করে , এটিকে বৃদ্ধি করে ( 1&`+), তারপরে ত্রিনিয়ারিতে রূপান্তরিত হয় ( FromBase&3)।

বিকল্প

অ-পয়েন্টফ্রি, 21 বাইট: {FromBase[Bin!_+1,3]}

বিল্টিন ছাড়া, 57 বাইট: Sum@{_*3^(#_-Iota!_-1)}@{If[_>0,$[_/2|Floor]'(1+_%2),[]]}


3

রেটিনা 0.8.2 , 36 বাইট

.+
$*
+`^(1+)\1
$1;1
^
1
+`1;
;111
1

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

.+
$*

দশমিক থেকে আনারিতে রূপান্তর করুন।

+`^(1+)\1
$1;1

বার বার 2 দ্বারা বিভক্ত করুন, এবং মডুলোর ফলাফলটিতে 1 যুক্ত করুন।

^
1

প্রথম অঙ্কেও 1 যুক্ত করুন।

+`1;
;111

আনারি-এনকোডড বেস 3 থেকে অ্যানারিতে রূপান্তর করুন।

1

দশমিক রূপান্তর।


3

জাপট , 6 বাইট

¤cÄ n3
¤      // Convert the input to a base-2 string,
 c     // then map over it as charcodes.
  Ä    // For each item, add one to its charcode
       // and when that's done,
    n3 // parse the string as a base 3 number.

একটি সংখ্যা হিসাবে ইনপুট নেয়, একটি সংখ্যা আউটপুট দেয়।

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


ধুর! ছাই! কেন আমি তা ভেবে দেখিনি? সুন্দরভাবে সম্পন্ন.
শেগি

3

এমএটিএল , 12 7 6 বাইট

BQ3_ZA

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

সংরক্ষিত 5 : Giuseppe ধন্যবাদ এবং লুইস Mendo আরেকটি এক ধন্যবাদ বাইট।

পুরাতন 7 বাইট উত্তর:

YBQc3ZA

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

ব্যাখ্যা:

YB        % Convert to binary string
  Q       % Increment each element
   c      % Convert ASCII values to characters
    3     % Push 3
     ZA   % Convert from base 3 to decimal.

12 বাইটের জন্য পুরানো:

BQtz:q3w^!Y*

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

ওহ আমার, এটি অগোছালো ছিল ... তাই এটি: `বিকিউ 3 জিবি: কিউ ^! ওয়াই *।

ব্যাখ্যা:

               % Implicit input
B              % Convert to binary vector
 Q             % Increment all numbers
  t            % Duplicate
   z           % Number of element in vector
    :          % Range from 1 to that number
     q         % Decrement to get the range from 0 instead of 1
      3        % Push 3
       w       % Swap order of stack
        ^      % Raise 3 to the power of 0, 1, ...
         !     % Transpose
          Y*   % Matrix multiplication
               % Implicit output

3

সি # (ভিজ্যুয়াল সি # সংকলক) , 128 বাইট

using System;using System.Linq;i=>{int z=0;return Convert.ToString(i,2).Reverse().Select(a=>(a-47)*(int)Math.Pow(3,z++)).Sum();}

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

আমি গণনা করছি Systemকারণ আমি ব্যবহার করি Convertএবং Math


নির্বাচন আপনাকে alচ্ছিক প্যারামিটার হিসাবে সূচক দেয়। সুতরাং আপনি আপনার zপরিবর্তনশীল পরিত্রাণ পেতে পারে । এছাড়াও অভিব্যক্তি শরীরে আপনি পরিত্রাণ পেতে পারে {, }এবং returnবিবৃতি। সুতরাং এর মতো কিছুn=>Convert.ToString(n,2).Reverse().Select((x,i)=>(x-47)*Math.Pow(3,i)).Sum();
NtFreX


2

সি, 32 27 বাইট

n(x){x=x?x%2+1+3*n(x/2):0;}

ব্যবহারকারী 202729 এর জাভা উত্তরের উপর ভিত্তি করে । এটি এখানে অনলাইনে চেষ্টা করুন । 5 বাইট গল্ফ করার জন্য কেভিন ক্রুইজসেনকে ধন্যবাদ ।

অবরুদ্ধ সংস্করণ:

n(x) { // recursive function; both argument and return type are implicitly int
    x = // implicit return
    x ? x % 2 + 1 + 3*n(x/2) // if x != 0 return x % 2 + 1 + 3*n(x/2) (recursive call)
    : 0; // else return 0
}

আপনি এর returnসাথে প্রতিস্থাপন করে x=এবং !n(x){x=x?x%2+1+3*n(x/2):0;}
টের্নারিটি

পুনঃটুইট ধন্যবাদ!
ওব্লান্স


2

যোগাযোগ সরঞ্জাম বাক্সের সাথে অক্টাভা, 33 32 বাইট

@(x)(de2bi(x)+1)*3.^(0:log2(x))'

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

ইনপুটটিকে বাইনারি ভেক্টরে রূপান্তর করে ব্যবহার করে de2biএবং সমস্ত সংখ্যা বাড়িয়ে তোলে। যথাযথ শক্তিতে উত্থাপিত 3 টির উল্লম্ব ভেক্টরের সাথে ম্যাট্রিক্সের গুণকটি ঘটে : 1, 3, 9, ...সুতরাং সুস্পষ্ট কল ছাড়াই যোগফল পাওয়া যায় sum


যদিও এটি অত্যন্ত চালাক, আপনি 32 বাইটের জন্য এটিও করতে পারেন: এটি অনলাইনে চেষ্টা করুন!
Sanchises

এবং ম্যাটল্যাবের সাহায্যে আপনি @(x)base2dec(de2bi(x)+49,3)২ for টির জন্যও করতে পারেন (বিরল উপলক্ষে যেখানে ম্যাটল্যাব
অক্টাভের

2

পিএইচপি, 84 64 বাইট

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

মূল কোড

function f($n){$b=decbin($n);echo base_convert($b+str_repeat('1',strlen($b)),3,10);}

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

ক্রিস্টফকে ধন্যবাদ , পিএইচপি -আর দিয়ে চালিত হলে কম বাইটস

function f($n){echo base_convert(strtr(decbin($n),10,21),3,10);}

ব্যাখ্যা

function f($n){
$b=decbin($n);                    #Convert the iteger to base 2
echo base_convert(                  #base conversion PHP function
    $b+str_repeat('1',strlen($b)),  #It adds to our base 2 number
    3,                              #a number of the same digits length
    10);                            #with purely '1's
}

এখানে যখন আমি দেখি যে আমি প্রোগ্রামিংয়ে যেতে একটি লুগন উপায় পেয়েছি .... এর অস্তিত্ব সম্পর্কে কোনও ধারণা ছিল নাstrtr
ফ্রান্সিসকো হান

1
করবে !!, দুঃখিত<?="Will do!!"
ফ্রান্সিসকো হ্যান


2

হোয়াইটস্পেস , 117 বাইট

[S S S N
_Push_0][S N
S _Duplicate_0][S N
S _Duplicate_0][T   N
T   T   _Read_STDIN_as_number][T    T   T   _Retrieve][N
S S S N
_Create_Label_OUTER_LOOP][S N
S _Duplicate][S S S T   S N
_Push_2][T  S T T   _Modulo][S S S T    N
_Push_1][T  S S S _Add][S N
T   _Swap][S S S T  S N
_Push_2][T  S T S _Integer_division][S N
S _Duplicate][N
T   S N
_If_0_jump_to_Label_INNER_LOOP][N
S N
S N
_Jump_to_Label_OUTER_LOOP][N
S S N
_Create_Label_INNER_LOOP][S S S T   T   N
_Push_3][T  S S N
_Multiply][T    S S S _Add][S N
T   _Swap][S N
S _Duplicate][N
T   S T N
_If_0_jump_to_Label_PRINT_AND_EXIT][S N
T   _Swap][N
S N
N
_Jump_to_Label_INNER_LOOP][N
S S T   N
_Create_Label_PRINT_AND_EXIT][S N
T   _Swap][T    N
S T _Output_integer_to_STDOUT]

বর্ণ S(স্থান), T(ট্যাব) এবং N(নতুন লাইন) কেবল হাইলাইট হিসাবে যুক্ত করা হয়েছে।
[..._some_action]শুধুমাত্র ব্যাখ্যা হিসাবে যুক্ত।

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা স্পেস, ট্যাব এবং নতুন লাইন সহ)।

সিউডো-কোডে ব্যাখ্যা:

আমি প্রথমত পুনরাবৃত্ত ফাংশনটিকে int f(int n){return n<1?0:n%2+1+3*f(n/2);}এর পুনরাবৃত্ত আকারে রূপান্তর করেছি (সিউডো কোডে):

Integer n = STDIN as integer
Add starting_value 0 to the stack
function OUTER_LOOP:
  while(true){
    Add n%2+1 to the stack
    n = n/2
    if(n == 0):
      Jump to INNER_LOOP
    Else:
      Jump to next iteration OUTER_LOOP

function INNER_LOOP:
  while(true){
    n = 3*n
    n = n + Value at the top of the stack (the ones we calculated with n%2+1)
    Swap top two items
    Check if the top is now 0 (starting value):
      Jump to PRINT_AND_EXIT
    Else:
      Swap top two items back
      Jump to next iteration INNER_LOOP

function PRINT_AND_EXIT:
  Swap top two items back
  Print top to STDOUT as integer
  Exit program with error: Exit not defined

এবং আমি পরে এটি পূর্বনির্ধারিত স্ট্যাক ব্যবহার করে স্ট্যাক-ভিত্তিক ভাষা হোয়াইটস্পেসে এই পুনরাবৃত্তি পদ্ধতির প্রয়োগ করেছি।

উদাহরণ রান:

ইনপুট: 1

Command    Explanation                   Stack           Heap    STDIN   STDOUT   STDERR

SSSN       Push 0                        [0]
SNS        Duplicate top (0)             [0,0]
SNS        Duplicate top (0)             [0,0,0]
TNTT       Read STDIN as integer         [0,0]           {0:1}   1
TTT        Retrieve                      [0,1]           {0:1}
NSSSN      Create Label OUTER_LOOP       [0,1]           {0:1}
 SNS       Duplicate top (1)             [0,1,1]         {0:1}
 SSSTSN    Push 2                        [0,1,1,2]       {0:1}
 TSTT      Modulo top two (1%2)          [0,1,1]         {0:1}
 SSSTN     Push 1                        [0,1,1,1]       {0:1}
 TSSS      Add top two (1+1)             [0,1,2]         {0:1}
 SNT       Swap top two                  [0,2,1]         {0:1}
 SSSTSN    Push 2                        [0,2,1,2]       {0:1}
 TSTS      Int-divide top two (1/2)      [0,2,0]         {0:1}
 SNS       Duplicate top (0)             [0,2,0,0]       {0:1}
 NTSN      If 0: Go to Label INNER_LOOP  [0,2,0]         {0:1}
 NSSN      Create Label INNER_LOOP       [0,2,0]         {0:1}
  SSSTTN   Push 3                        [0,2,0,3]       {0:1}
  TSSN     Multiply top two (0*3)        [0,2,0]         {0:1}
  TSSS     Add top two (2+0)             [0,2]           {0:1}
  SNT      Swap top two                  [2,0]           {0:1}
  SNS      Duplicate top (0)             [2,0,0]         {0:1}
  NTSTN    If 0: Jump to Label PRINT     [2,0]           {0:1}
  NSSTN    Create Label PRINT            [2,0]           {0:1}
   SNT     Swap top two                  [0,2]           {0:1}
   TNST    Print top to STDOUT           [0]             {0:1}           2
                                                                                  error

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা স্পেস, ট্যাব এবং নতুন লাইন সহ)।
ত্রুটি সহ বন্ধ: প্রস্থানটি সংজ্ঞায়িত হয়নি।

ইনপুট: 4

Command    Explanation                   Stack           Heap    STDIN   STDOUT   STDERR

SSSN       Push 0                        [0]
SNS        Duplicate top (0)             [0,0]
SNS        Duplicate top (0)             [0,0,0]
TNTT       Read STDIN as integer         [0,0]           {0:4}   4
TTT        Retrieve                      [0,4]           {0:4}
NSSSN      Create Label OUTER_LOOP       [0,4]           {0:4}
 SNS       Duplicate top (4)             [0,4,4]         {0:4}
 SSSTSN    Push 2                        [0,4,4,2]       {0:4}
 TSTT      Modulo top two (4%2)          [0,4,0]         {0:4}
 SSSTN     Push 1                        [0,4,0,1]       {0:4}
 TSSS      Add top two (0+1)             [0,4,1]         {0:4}
 SNT       Swap top two                  [0,1,4]         {0:4}
 SSSTSN    Push 2                        [0,1,4,2]       {0:4}
 TSTS      Int-divide top two (4/2)      [0,1,2]         {0:4}
 SNS       Duplicate top (2)             [0,1,2,2]       {0:4}
 NTSN      If 0: Go to Label INNER_LOOP  [0,1,2]         {0:4}
 NSNSN     Jump to Label OUTER_LOOP      [0,1,2]         {0:4}
 SNS       Duplicate top (2)             [0,1,2,2]       {0:4}
 SSSTSN    Push 2                        [0,1,2,2,2]     {0:4}
 TSTT      Modulo top two (2%2)          [0,1,2,0]       {0:4}
 SSSTN     Push 1                        [0,1,2,0,1]     {0:4}
 TSSS      Add top two (0+1)             [0,1,2,1]       {0:4}
 SNT       Swap top two                  [0,1,1,2]       {0:4}
 SSSTSN    Push 2                        [0,1,1,2,2]     {0:4}
 TSTS      Int-divide top two (2/2)      [0,1,1,1]       {0:4}
 SNS       Duplicate top (1)             [0,1,1,1,1]     {0:4}
 NTSN      If 0: Go to Label INNER_LOOP  [0,1,1,1]       {0:4}
 NSNSN     Jump to Label OUTER_LOOP      [0,1,1,1]       {0:4}
 SNS       Duplicate top (1)             [0,1,1,1,1]     {0:4}
 SSSTSN    Push 2                        [0,1,1,1,1,2]   {0:4}
 TSTT      Modulo top two (1%2)          [0,1,1,1,1]     {0:4}
 SSSTN     Push 1                        [0,1,1,1,1,1]   {0:4}
 TSSS      Add top two (1+1)             [0,1,1,1,2]     {0:4}
 SNT       Swap top two                  [0,1,1,2,1]     {0:4}
 SSSTSN    Push 2                        [0,1,1,2,1,2]   {0:4}
 TSTS      Int-divide top two (1/2)      [0,1,1,2,0]     {0:4}
 SNS       Duplicate top (0)             [0,1,1,2,0,0]   {0:4}
 NTSN      If 0: Go to Label INNER_LOOP  [0,1,1,2,0]     {0:4}
 NSSN      Create Label INNER_LOOP       [0,1,1,2,0]     {0:4}
  SSSTTN   Push 3                        [0,1,1,2,0,3]   {0:4}
  TSSN     Multiply top two (0*3)        [0,1,1,2,0]     {0:4}
  TSSS     Add top two (2+0)             [0,1,1,2]       {0:4}
  SNT      Swap top two                  [0,1,2,1]       {0:4}
  SNS      Duplicate top (1)             [0,1,2,1,1]     {0:4}
  NTSTN    If 0: Jump to Label PRINT     [0,1,2,1]       {0:4}
  SNT      Swap top two                  [0,1,1,2]       {0:4}
  NSNN     Jump to Label INNER_LOOP      [0,1,1,2]       {0:4}
  SSSTTN   Push 3                        [0,1,1,2,3]     {0:4}
  TSSN     Multiply top two (2*3)        [0,1,1,6]       {0:4}
  TSSS     Add top two (1+6)             [0,1,7]         {0:4}
  SNT      Swap top two                  [0,7,1]         {0:4}
  SNS      Duplicate top (1)             [0,7,1,1]       {0:4}
  NTSTN    If 0: Jump to Label PRINT     [0,7,1]         {0:4}
  SNT      Swap top two                  [0,1,7]         {0:4}
  NSNN     Jump to Label INNER_LOOP      [0,1,7]         {0:4}
  SSSTTN   Push 3                        [0,1,7,3]       {0:4}
  TSSN     Multiply top two (7*3)        [0,1,21]        {0:4}
  TSSS     Add top two (1+21)            [0,22]          {0:4}
  SNT      Swap top two                  [22,0]          {0:4}
  SNS      Duplicate top (0)             [22,0,0]        {0:4}
  NTSTN    If 0: Jump to Label PRINT     [22,0]          {0:4}
  NSSTN    Create Label PRINT            [22,0]          {0:4}
   SNT     Swap top two                  [0,22]          {0:4}
   TNST    Print top to STDOUT           [0]             {0:4}           22
                                                                                  error

এটি অনলাইনে চেষ্টা করুন (কেবলমাত্র কাঁচা স্পেস, ট্যাব এবং নতুন লাইন সহ)।
ত্রুটি সহ বন্ধ: প্রস্থানটি সংজ্ঞায়িত হয়নি।


এই মুহুর্তে, কেন সমাবেশ লিখছেন না? এছাড়াও আমার উত্তর কোডগল্ফ.স্ট্যাক্কেচেঞ্জাও.এ
161633/17360

আমি আমার অজগর সিউডোকোড আরও সরল করেছি।
qwr

1
@Qwr আপনার পাইথন কোডটি প্রদর্শিত জাভা কোডের মতো প্রায় একই। জাভা আরও বেশি ভার্বোস এবং ত্রুটি-প্রবণ। পার্থক্যটি হ'ল আমার জাভা কোডটি নেস্টেড লুপের সময় এবং আপনার পৃথক হয়ে যায়। আমি জাভাতেও এটি করতে পারতাম, তবে যেহেতু এটি হোয়াইটস্পেসে বাসা বেঁধেছে আমি জাভা সিউডো কোডেও এটি লিখতে পছন্দ করেছি। এছাড়াও, হোয়াইটস্পেসের স্ট্যাকের মধ্যে থাকা আইটেমগুলির সংখ্যা জানার কোনও উপায় নেই, এ কারণেই আমি শুরুতে 0 টি চাপছি এবং কোডের INNER_LOOP অংশে: অদলবদল করুন, 0 টি, অদলবদল কিনা তা পরীক্ষা করে দেখুন। চমৎকার সমাবেশ উত্তর, যদিও। সুতরাং আমি এটি +1-এড করেছি। :)
কেভিন ক্রুইজসেন

আমি এখনও মনে করি আপনি n < 1n 0 না হওয়া অবধি মানগুলি চাপ দিয়ে এবং আপনার সীমানা মান (0) না চাপানো পর্যন্ত এগুলি পপিং করে আপনি চেকটি থেকে মুক্তি পেতে পারেন । স্ট্যাকের গভীরতা স্পষ্টভাবে সংরক্ষণ করার প্রয়োজন নেই এবং অদলবদল করার প্রয়োজনও হবে না (যদি আপনি শীর্ষ দুটি
মানটি

@ কিউআর " আমি এখনও মনে করি আপনি এন <1 পরীক্ষা না হওয়া অবধি মানগুলি 0 না হওয়া অবধি চাপ দিয়ে মুক্তি পেতে পারবেন " উম্ম .. চেক করা হচ্ছে n < 1(বা n == 0) মান n0 পর্যন্ত হওয়া পর্যন্ত চাপ দিচ্ছে নাকি আমি এখানে কিছু ভুল ব্যাখ্যা করছি ..: এস " স্ট্যাকের গভীরতা স্পষ্টভাবে সংরক্ষণ করার দরকার নেই " জাভাতে এটি হয়, অন্যথায় আমি অ্যারে তৈরি করতে পারি না। আমি এর java.util.Stackপরিবর্তে একটি ব্যবহার করতে পারতাম , তবে আমি এটির কম ভার্বোস তৈরি করতে কেবল একটি অ্যারে ব্যবহার করেছি। হোয়াইটস্পেসে স্ট্যাকটি নির্ধারিত আকারের।
কেভিন ক্রুইজসেন






1

পাইথ, ৮

ihMjQ2 3

কীভাবে স্থানটি মুছে ফেলা এবং Qঅন্তর্নিহিত করা যায়?

পাইথ অনলাইন


আমি বিশ্বাস করি এটি আসলে 8 বাইট
হ্যাকার 14

@ হ্যাকআর 14 হ্যাঁ, আপনি ঠিক বলেছেন
ডিজিটাল ট্রমা

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