এই সংখ্যাটি (3 ^ x) - 1 ফর্ম্যাটে লেখা যেতে পারে?


41

চ্যালেঞ্জ:

এমন একটি প্রোগ্রাম তৈরি করুন যা ইতিবাচক পূর্ণসংখ্যাকে গ্রহণ করে এবং এটি (3 ^ x) -1 আকারে লেখা যেতে পারে কিনা তা পরীক্ষা করে, যেখানে এক্সটি আরও একটি ইতিবাচক পূর্ণসংখ্য

যদি এটি করতে পারে, এক্স আউটপুট

এটি না পারলে আউটপুট -1 বা মিথ্যা বিবৃতি।

উদাহরণ ইনপুট / আউটপুট

ইনপুট:

2

এটি (3 ^ 1) - 1 হিসাবে লেখা যেতে পারে, তাই আমরা এক্স আউটপুট যা 1 হয়

আউটপুট:

1

ইনপুট:

26

26 (3 ^ 3) - 1 হিসাবে লেখা যেতে পারে, সুতরাং আমরা এক্স (3) আউটপুট দেব

আউটপুট:

3

ইনপুট:

1024

1024 (3 ^ x) - 1 আকারে লেখা যায় না, তাই আমরা আউটপুট -1 করি

আউটপুট:

-1

এটি তাই কমপক্ষে পরিমাণে বাইট জিততে পারে


সম্পর্কিত ওইআইএস : A024023


4
আমি এক্স আউটপুট জিজ্ঞাসা করব কারণ আমি বিশ্বাস করি যে এটি সেভাবে আরও চ্যালেঞ্জযুক্ত। আমার মতে, যদি এটি 3। X - 1 ফর্ম্যাটের হয় তবে এটি চ্যালেঞ্জের পক্ষে খুব সহজ হবে।
পি কেটিনোস

2
যদি আপনার প্রোগ্রামিং ভাষায় এটি মিথ্যা বিবৃতি না দেয় তবে তা না।
পি কেটিনোস

2
আমি কি তিন নম্বরটি ইনপুট হতে চান?
জন ডিভোরাক

2
অ-নেতিবাচক ইন্টারজারগুলি পরিচালনা করা 0 টিকে 3^0-1 বৈধ আউটপুট তৈরি করে এবং এভাবে মিথ্যা হিসাবে ব্যবহারযোগ্য না
জেসেন

2
যে কেউ log()তাদের উত্তরটি ব্যবহার করার কথা ভাবছে তা নিশ্চিত করা উচিত ইনপুট 5হলে এটি সঠিক উত্তর দেয় 242
জেসেন

উত্তর:


23

গণিত, 21 16 বাইট

-1&@@Log[3,#+1]&

গণিতের প্রতীকী গণনা ব্যবহার করে। যদি #+1তিনটি শক্তি হয় তবে Log[3,#+1]একটি পূর্ণসংখ্যার ফলাফল গণনা করবে যা একটি পারমাণবিক মান। অন্যথায় আমরা Log[#+1]/Log[3]যেমনটি পেয়ে যাব । যেহেতু এটি কোনও পারমাণবিক মান নয়, এটি একটি অভিব্যক্তি যা সর্বদা রূপের head[val1,val2,...]। এই ক্ষেত্রে এটি আসলে মত কিছু Times[Power[Log[3], -1], Log[#+1]]

আমরা ফলাফলের সাথে অন্য একটি ফাংশন প্রয়োগ করে দুটি ক্ষেত্রে পার্থক্য করি। সত্যিই প্রয়োগ কী তা হ'ল এটি headএকটি অভিব্যক্তির অংশটি প্রতিস্থাপন করে । যেহেতু পূর্ণসংখ্যার ফলাফলগুলি পারমাণবিক হয় তাই এগুলিতে কোনও ফাংশন প্রয়োগ করা কিছুই করে না। বিশেষ করে f @@ atom == atom

যাইহোক, অন্য ক্ষেত্রে, মাথা প্রতিস্থাপিত হয়। আমরা যে ফাংশনটি ব্যবহার করছি -1&তা হ'ল এটি একটি সাধারণ ফাংশন যা এর যুক্তি এবং রিটার্ন উপেক্ষা করে -1। সুতরাং আমরা -1&[Power[Log[3], -1], Log[#+1]]অ-পূর্ণসংখ্যক ক্ষেত্রে এমন কিছু পাই যা সরাসরি মূল্যায়ন করে -1। যাদু মাধ্যমে বিশেষ কেসিং।


13

পাইথন, 46 44 বাইট

lambda x:max(n*(3**n-1==x)for n in range(x))

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

এই ক্ষেত্রে, 0মিথ্যা মান হবে। আমার ভুল আউটপুটটি পাশাপাশি 2 বাইটের কোনও []সঞ্চয় নেই উল্লেখ করার জন্য @ mbomb007 কে ধন্যবাদ ।


আপনি [n for n in range(x)if 3**n-1==x]-4 বাইট হিসাবে খালি তালিকাতে খালি তালিকা লিখতে পারেন
রড

স্থির, আপনাকে ধন্যবাদ! @ রড তখন ফিরে আসবে [এন] এর পরিবর্তে আমি ভাবি
nmjcman101

@ nmjcman101 যা কোনও সমস্যা হওয়া উচিত নয়
রড

@ রড আমি এখনকার জন্য নির্দিষ্টভাবে কঠোরভাবে অনুসরণ করা পছন্দ করব
nmjcman101

@ রড যদি কোনও পূর্ণসংখ্যার আউটপুট আউট প্রয়োজন হয়, আপনি যদি ওপি নির্দিষ্টভাবে এটির অনুমতি না দেন তবে আপনি এটি তালিকায় আউটপুট করতে পারবেন না।
mbomb007


11

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

3IÝm<¹k

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

ব্যাখ্যা

3        # push 3 
 I       # push input
  Ý      # range [0 ... input]
   m     # 3^[0 ... input]
    <    # -1
     ¹k  # find index of input, return -1 if not found

05AB1E দৃশ্যত বেস রূপান্তর এ ভাল এটি সত্যিই সেরা পদ্ধতির?
জেসেন

1
@ জেসেন: বেস রূপান্তরের সাথে আমার প্রচেষ্টাগুলি আরও দীর্ঘ হয়েছে। এর থেকে ভাল উপায় যদি থাকে তবে আমি এটি দেখছি না। যদিও আমাকে ভুল প্রমাণ করতে নির্দ্বিধায় :)
Emigna

যথেষ্ট পরিমাণে, আমি কেবল ভাষার বর্ণনাই পড়েছি এবং তাই 5 বাইট সমাধান দেখার প্রত্যাশা করা হয়েছে ....
জেসেন

1
@ জেসেন <3zm©.ïi®সবচেয়ে কাছের যে আমি তার মতো রেঞ্জ ব্যবহার করিনি using
যাদু অক্টোপাস আরন

1
3DÝms<k... কিছু নয় ... আরও একটি বাইট শেভ করতে পারছি না, শপথ করে বলতে পারলাম।
যাদু অক্টোপাস উরান


6

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

f=lambda n,i=0:i*0**n or n%3/2*f(n/3,i+1)

একটি পুনরাবৃত্তি ফাংশন যা 0অ-মিল না করা ইনপুটগুলির জন্য ফিরে আসে । বারবার তলটি 3 দ্বারা ইনপুট ভাগ করে, পদক্ষেপের সংখ্যা গণনা করে i, যা শেষ পর্যন্ত আউটপুট। তবে, যদি কোনও পদক্ষেপ nএমন কোনও মান উত্পাদন করে যা 2 টি মডুলো 0 নয়, তবে সংখ্যাটি ছিল না 3^i-1, তাই আউটপুট 0 দ্বারা গুণিত হয়।


6

পার্ল, 31 বাইট

say grep{3**$_-1==$i}0..($i=<>)

প্রয়োজন -Eরান পতাকা:

perl -E 'say grep{3**$_-1==$i}0..($i=<>)' <<< 26

ব্যাখ্যা: পরীক্ষার তৃপ্তি দেয়
grep{3**$_-1==$i}0..($i=<>)এমন পরিসরের উপাদানগুলির 0..$_(যেমন 0 থেকে ইনপুট পর্যন্ত) একটি তালিকা প্রদান করে 3**$_-1==$i। কেবলমাত্র একটি উপাদানই এই পরীক্ষাটি সন্তুষ্ট করতে পারে, সুতরাং এই নির্দেশনা 0 বা 1 উপাদানের অ্যারে ফিরিয়ে দেবে। তারপরে আমরা এই তালিকাটি মুদ্রণ করি: হয় হয় না Xকিছুই (যা মিথ্যা)।


5

পাইথ, 11 বাইট

?-JjQ3 2ZlJ

বেস 3 এ রূপান্তর করে এবং সমতাতে পরীক্ষা করে [2, 2, ..., 2]


আপনার সাথে এক বাইট দ্বারা এই কমে যায় ?-2JjQ3ZlJ, যেহেতু <col> <num>এবং <num> <col>জন্য বিনিমেয় -Pyth হবে।
notjagan

5

জাভাস্ক্রিপ্ট (ES7), 38 36 34 বাইট

f=(n,k=33)=>3**k-n-1&&--k?f(n,k):k

বা ব্যর্থতার সাথে ত্রুটিযুক্তভাবে প্রস্থান করা ঠিকঠাক থাকলে 29 30 বাইট:

f=(n,k)=>~(n-3**k)?f(n,-~k):k

পরীক্ষা


5

জাভা 8, 37 58 67 বাইট

i->{String s=i.toString(i,3);return s.matches("2*")?s.length():-1;}

এই ল্যাম্বদা একটি Function<Integer, Integer>রেফারেন্সে ফিট করে এবং সাধারণ বেস 3 ট্রিক ব্যবহার করে।

এবার এটি সঠিকভাবে কাজ করা উচিত।


3
যখন এটি ফর্ম্যাটে লেখা যায় তখন কি কেবল সত্য বা মিথ্যা মুদ্রণ করবে না? ফলাফলটি সত্য হওয়ার সময় আমি
ঘটনাকারীর

2
এটাই প্রতিভা! খুব চালাক পদ্ধতির জন্য +1
DJMcMayhem

এটি চতুর ... আমি বিশ্বাস করি আপনি পেরেনগুলি সরিয়ে কেবল এটি তৈরি করতে পারেন i->। এছাড়াও, আপনি যদি এটি iহিসাবে গ্রহণ করেন তবে আপনি Longব্যবহার করতে পারেন a.toString(...)(আইডিস স্ট্যাটিক ফাংশনগুলি ভুলভাবে ব্যবহার সম্পর্কে কিছু সতর্কতা দেবে, তবে সংকলন করা উচিত)। যাইহোক, ওপি যেমন বলেছে, আপনাকে কেবল সত্য বা মিথ্যা নয়, মানটি ফিরিয়ে দিতে হবে।
ফ্লিপট্যাক

ল্যাম্বদা যদি কোনও আলাদা ফাংশনের ধরণের জায়গায় সঞ্চয় থাকে তবে স্ট্যাটিক ট্রিক কাজ করে। আমিও ফেরতের মান ঠিক করে দিয়েছি। আমি অবশ্যই সেই অংশটি মিস করেছি।

5

প্রক্রিয়াজাতকরণ, 60 56 বাইট

void q(float n){n=log(n+1)/log(3);print(n>(int)n?-1:n);}

-1মিথ্যা হলে ফলাফল

ব্যাখ্যা

void q(float n){              // n is input
  n=log(n+1)/log(3);          // finds X in 3^X+1=n as a float (here we'll storing that in n)
  print(n>(int)n?-1:n);       // checks if the float is greater than
                              // the number rounded down (by int casting)
                              // if it is greater, output -1
                              // otherwise output X
}

voidব্যবহারের চেয়ে 1 বাইট কম float, তাই এই ফাংশনটি কোনও মান ফেরানোর পরিবর্তে সরাসরি আউটপুট করে।

বিকল্প সমাধান

void z(float n){int c=0;for(++n;n>1;c++)n/=3;print(n==1?c:-1);}

by৩ বাইটের জন্য, তবে আমি মনে করি যে এই এলটিটি মূল সমাধানের চেয়ে খাটো হতে পারে। আমি এটার উপর কাজ করছি.


@ ফ্লিপট্যাক হ্যাঁ, আমি জানতাম এটি জাভাতে হবে না। আমি কেবল জিজ্ঞাসা করেছি যেহেতু আমি নিশ্চিত ছিলাম না যে প্রসেসিং এই লাইনের সাথে কিছু যোগ করে নি। ব্যবহৃত হবে "স্বতন্ত্র মান" -1 যদিও, 0 নয়, যদিও এটি পরিবর্তিত হয়েছে, যদিও, আমি সম্ভবত এটি সম্পর্কে আমার মন্তব্যগুলি পরিষ্কার করব।
জিওবিটস

অপেক্ষা কর, তাহলে কি এখনই ফিরতে পারি 0?
ক্রিটসি লিথোস

আমি এখনও না বলব। প্রশ্নটি মিথ্যাবাদী হলে ব্যবহারের জন্য একটি বিকল্প পূর্ণসংখ্যার মান দেয় তবে 0জাভা / প্রসেসিংয়ে আমি জানি এটি কখনই মিথ্যা নয় ।
জিওবিটস

আমি প্রসেসিং ভাবিনি হতে অনুমিত ছিল কম চেয়ে versbose জাভা
পাভেল

@ পাভেল তবে আমি ল্যাম্বডাস ব্যবহার করি না: /
ক্রিটিং লিথোস

4

ব্র্যাচল্যাগ , 8 বাইট

,3:.^-?,

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

মানটি যদি সত্য হয় এবং false.যদি এটি অসম্ভব হয় তবে ফলাফলগুলি আউটপুট করে ।

ব্যাখ্যা

এটি প্রদত্ত সম্পর্কের সরাসরি প্রতিলিপি:

,     ,      (Disable implicit unification)
 3:.^        3^Output…
     -?              … - 1 = Input

আপনি এটি প্রায় 7 বাইট হিসাবে গল্ফ করতে পারেন +~^r~:3, তবে দুর্ভাগ্যক্রমে ~:আপনি যা আশা করতে পারেন তা করেন না (সম্ভবত কারণ :একটি বিল্টিনের চেয়ে বাক্য গঠন), এবং এটির সাথে একইরকম আচরণ করা হবে বলে মনে হয় :

@ ais523 এটি সঠিক, :একটি নিয়ন্ত্রণ প্রতীক, এবং ~কেবলমাত্র ভবিষ্যদ্বাণীগুলির উপর কাজ করে।
18-18 এ ঘটনাক্রমে

3

পার্ল 6 ,  25  24 বাইট

{first $_==3** *-1,0..$_}

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

{first $_==3***-1,0..$_}

পরে জায়গা সরানো হচ্ছে **কাজ, কারণ এটা অন্যান্য পোতা অপারেটর মেলে পারে চেয়ে দীর্ঘতর হয় *
তাই বরং …***…পার্স করা হয় ।… ** * …… * ** …

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

সম্প্রসারিত:

{  # bare block lambda with implicit parameter 「$_」

  first
    $_ == 3 ** * - 1,   # WhateverCode lambda
    #          ^- current value

    0 .. $_             # a Range up-to (and including) the input

}

3

আর, 24 বাইট

প্ল্যানাপাসের উত্তর থেকে আলাদা পদ্ধতির , এবং একটি বাইট সংক্ষিপ্ত!

match(scan(),3^(1:99)-1)

থেকে সমস্ত পূর্ণসংখ্যার উত্পন্ন 3^1-1করতে 3^99-1, এবং চেক stdin ম্যাচ পারেন। যদি তা হয় তবে এটি সূচকটি মেলে যা এটি মেলে যা হয় x। যদি তা না NAহয় তবে মিথ্যা মান হিসাবে ফিরে আসে ।

ঘটনাচক্রে, এটি ইনপুট হিসাবে একাধিক মান গ্রহণ করবে এবং সেগুলির সবকটি পরীক্ষা করবে, যা একটি ঝরঝরে বৈশিষ্ট্য।




2

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

3i:^qG=f

xএটি উপস্থিত থাকলে সংখ্যাটি আউটপুট করে বা অন্যথায় কিছুই আউটপুট দেয় না যা মিথ্যা।

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

ব্যাখ্যা

3    % Push 3
i    % Input n
:    % Range: gives `[1 2 ... n]
^    % Power, element-wise. Gives [3^1 3^2 ... 3^n]
q    % Subtract 1, element-wise. Gives [3^1-1 3^2-1 ... 3^n-1]
=    % Test for equality. Contains 'true' at the position x, if any,
     % where 3^x-1 equals n
f    % Find. Gives index of the 'true' position, which ix x; or gives
     % an empty array if no such position exists. Implicitly display


2

পাইথন 3, 74 66 64 বাইট

-10 বাইটস @ এমবম্ব007, @ ফ্লিপট্যাক এবং @ এনএমজেসিম্যান 101 এর জন্য ধন্যবাদ

from math import*
def f(n):x=ceil(log(n,3));print((3**x-1==n)*x)

আপনি আপনার সমস্ত কোড এক লাইনে রেখে ব্যবহার করতে পারেন from math import*। এছাড়াও return n==3**x-1and x
mbomb007


@ mbomb007 ফাংশনগুলিতে ফলাফল মুদ্রণের অনুমতি দেওয়া হয়েছে STDOUT, যাতে আপনি সেই মুদ্রকে ফিরে যেতে পারেন।
ফ্লিপট্যাক

আপনি যদি পাইথনের পরিবর্তে সেজম্যাথ সমাধান হিসাবে উপস্থাপন করেন তবে আপনি প্রথম লাইনটি পুরোপুরি বাদ দিতে পারেন।
ফেডারিকো পোলোনি

65 বাইটে অন্যান্য হ্রাসের পাশাপাশি, আপনি import mathএবং math.ceilএকক বাইট ব্যবহার করতে পারেন । এছাড়াও আপনি 3**x-1==n and xx*(3**x-1==n)
পাল্টাতে


2

সি, 56 বাইট

 n;f(a){n=0;for(a++;!(a%3)&&(a/=3);++n);return --a?-1:n;}

একটি ইনপুটে যুক্ত করুন এবং তারপরে বাকিটি না পাওয়া পর্যন্ত বার বার তিনটি দিয়ে ভাগ করুন, যদি কেউ পৌঁছে যায় তবে বিভাজনের গণনা ফেরত -1


এর a%3<1পরিবর্তে একটি বাইট সংরক্ষণ করুন !(a%3)0মিথ্যা জন্য আরও একটি ।
তিতাস

ধরে নিই আপনি সংকলন করার জন্য জিসিসি ব্যবহার করছেন আপনি মোট 10 (11) বাইট সংরক্ষণ করতে পারবেন: আপনি যদি জেনেন যে আপনি কেবল একবার এই ফাংশনটি কল করবেন তখনই ডিফল্ট অনুসারে এন শূন্য হবে (যদি আপনি জেনে থাকেন তবে n শূন্যে শুরু করতে হবে না) কারণ এটি গ্লোবাল) - এটি 4 বাইট কম; এছাড়াও আপনার রিটার্ন স্টেটমেন্টের দরকার নেই, লিখে a=--a?-1:n;আপনি 5 বাইট সংরক্ষণ করবেন। যদি একটি অ-শূন্য ফাংশনটির কোনও রিটার্ন না থাকে তবে এটি কেবলমাত্র শেষ অ্যাসাইনমেন্টটি ব্যবহার করবে। এছাড়াও @ টিটুস যা বলেছিলেন।
এতাওইন শারদলু

1
সুপারিশ a%3?0:(a/=3)পরিবর্তে!(a%3)&&(a/=3)
ceilingcat

2

ব্যাশ / ইউনিক্স ইউটিলিটিস, 37 35 বাইট

bc<<<`dc<<<3o$1p|grep ^2*$|wc -c`-1

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

বেস 3 তে রূপান্তর করতে ডিসি ব্যবহার করে, ফলাফলটি যে স্ট্রিংটি সমস্ত 2s রয়েছে তা পরীক্ষা করে, অক্ষরের সংখ্যা গণনা করে (একটি নতুন লাইন সহ) এবং তারপরে বিসি 1 বিয়োগ করতে ব্যবহার করে।

যদি বেস 3 তে সংখ্যাটি 2 2 না হয় , তবে গ্রেপ কিছুই আউটপুট করে না (এমনকি একটি নতুন লাইনও নয়), তাই অক্ষর গণনা 0 হয় এবং 1 টি ফলন -1 বিয়োগ করে।


2

সি ক্ল্যাং 3.8.1, 53 , 52 , 54 , 51 বাইট সহ সংকলিত

n;f(y){y++;for(n=0;y%3==0;y/=3)n++;return y^1?0:n;}

@ স্টেডিবক্স ইতিমধ্যে সিতে একটি সমাধান পোস্ট করেছে, তবে আমি একটি ভিন্ন পদ্ধতির ব্যবহার করছি।

বাইটস সংরক্ষণে সহায়তা করার জন্য @ জেসেনকে ধন্যবাদ।


1
হ্যাঁ, তবে এটি কি কাজ করে? সমতার জন্য ফ্লোটের তুলনা করা প্রায়শই অপ্রত্যাশিত ব্যর্থতার একটি রেসিপি (বৃহত ইনপুট চেষ্টা করে দেখুন)
জেসেন

@ জেসেন হুম, এটি চেষ্টা করেননি, তবে সি-তে logপ্রত্যাবর্তন হয়েছে doubleসম্ভবত এটি কার্যকর হতে পারে।
ওয়েড টাইলার

ডাবল হ'ল এক প্রকার ভাসমান পয়েন্ট মান তাই তার সমস্যাটি থেকেই যায়।
জেসেন

3 ^ 19 এর জন্য ঠিক আছে বলে মনে হচ্ছে এটি সম্ভবত যথেষ্ট বড়।
জেসেন

@ জেসেন এটি 3 ^ 10 এর জন্য কাজ করে না
ওয়েড টাইলার

2

সি, 42 বাইট, ওয়েড টাইলার্স থেকে অনুকূলিত

n;f(y){for(n=0;y%3>1;y/=3)n++;return!y*n;}

চেষ্টা

সি, 37 বাইট, ছাড়াই return

n;f(y){for(n=0;y%3>1;y/=3)n++;n*=!y;}

চেষ্টা

nগ্লোবাল তবে (I)MULএটি কেবল একটি রেজিস্টারে তার ডেস্ট অপারেন্ড করতে পারে, সুতরাং EAXসেখানে (স্বাভাবিক পছন্দ) এবং সেখানে চালানো যেতে হবে

জাভাস্ক্রিপ্ট 6, 32 বাইট

f=(y,n)=>y%3>1?f(y/3|0,-~n):!y*n
;[1,2,3,8,12,43046720].forEach(x=>console.log(f(x)))

যদি "মিথ্যা" একইরকম হওয়া প্রয়োজন, 33 বাইট:

f=(y,n)=>y%3>1?f(y/3|0,-~n):!y&&n

2

পাইট , 10 9 বাইট

←⁺3ĽĐĐƖ=*

ব্যাখ্যা:

←                Get input
 ⁺               Add one
  3Ľ             Log base 3
    ĐĐ           Triplicate top of stack
      Ɩ          Convert top of stack to integer
       =         Check for equality between top two on stack
        *        Multiply by log_3(input+1)


স্পষ্টভাবে 1 যোগ করার পরিবর্তে বর্ধিত ফাংশনটি ব্যবহার করে একটি বাইট সংরক্ষণ করা হয়েছে


কোন কোড পৃষ্ঠাতে 9 বাইট হয়? (ইউটিএফ -8 এ এটি 17 বাইট)
জেসেন

1

পাইথন, 64 বাইট

আউটপুট Falseযদি সংখ্যা বিন্যাসে লেখা যেতে পারে না।

def f(n):L=[3**x-1for x in range(n)];print n in L and L.index(n)

এটি 64৪ বাইটেও কাজ করে এবং খালি স্ট্রিংটিকে মিথ্যা আউটপুট হিসাবে মুদ্রণ করে:

def f(n):
 try:print[3**x-1for x in range(n)].index(n)
 except:0

0মিথ্যা জন্য আউটপুট, 65 বাইট জন্য একটি সৃজনশীল সমাধান :

lambda n:-~",".join(`3**x-1`for x in range(n+1)).find(',%s,'%n)/2

না আউটপুট xনা -1
dfernan

প্রোগ্রামটি ম্যাচের ক্ষেত্রে xপরিবর্তে আউটপুট করা উচিত n
dfernan

না, এটি ইতিবাচক পূর্ণসংখ্যাকে আউটপুট করা উচিত যা এক্স দিয়ে প্রতিস্থাপন করা হলে আপনি ইনপুট পান। প্রশ্নটি
এক্সটিকে

@ পি.ক্টিনোস এটি ঠিক করে দিয়েছে।
mbomb007


1

জুলিয়া, 30 বাইট

n->findfirst(n.==3.^(0:n)-1)-1

এটি একটি সাধারণ ফাংশন - এটি একটি ভেক্টর তৈরি করে যার trueকেবলমাত্র একই অবস্থানে থাকে 3^a-1, যেখানে a0 এবং এর মধ্যে পূর্ণসংখ্যাযুক্ত ভেক্টর থাকে n। এটি "প্রথম" অবস্থানটি সন্ধান করে যা true1 এবং বিয়োগ করে (যদি এটি সব হয় falseতবে অনুসন্ধানটি শূন্যের দিকে মূল্যায়ন করে এবং এটি -1 এ ফিরে আসে)।

প্রথম স্থানে যেমন 0:nআছে 0, বিয়োগ 1 টি সূচকের জন্য সংশোধন করে এবং -1মিথ্যা প্রতিক্রিয়াটিকে সক্ষম করে ।



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