পূর্ণসংখ্যার লগারিদম


12

প্রদত্ত ইন্টিজার N , P > 1, বৃহত্তম পূর্ণসংখ্যা এটি Mযেমন যে P ^ M ≤ N

ইনপুট / আউটপুট:

ইনপুট 2 পূর্ণসংখ্যা হিসাবে দেওয়া হয় Nএবং P। আউটপুটটি পূর্ণসংখ্যা হবে M

উদাহরণ:

4, 5 -> 0
33, 5 -> 2
40, 20 -> 1
242, 3 -> 4 
243, 3 -> 5 
400, 2 -> 8
1000, 10 -> 3

মন্তব্য:

ইনপুটটি সর্বদা বৈধ থাকবে, অর্থাত্ এটি সর্বদা 1 এর চেয়ে বড় পূর্ণসংখ্যার হবে।

ক্রেডিট:

নামের কৃতিত্ব @cairdcoinheringaahing এ যায়। শেষ 3 টি উদাহরণ @ নাইট্রডন এবং বিবরণে উন্নতির কৃতিত্ব @ জিউজেপ্পে যায়।


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

9
আমরা প্রথমে স্যান্ডবক্সে চ্যালেঞ্জগুলি পোস্ট করার পরামর্শ দেওয়ার অন্য কারণ , যাতে আপনি সহায়ক প্রতিক্রিয়া পেতে পারেন, একটি দুর্দান্ত চ্যালেঞ্জ পোস্ট করতে পারেন এবং অনেক কম গোলমাল (প্রচুর কাছাকাছি এবং নীচে ভোটের মত) সহ প্রচুর উচ্চমানের উত্তর পেতে পারেন। :)
জিউসেপ

2
আপনার স্যান্ডবক্স চ্যালেঞ্জগুলিকে কিছুটা বেশি মনোযোগ দেওয়ার জন্য আপনি সর্বদা সাধারণ পিপিসি চ্যাটরুমে পোস্ট করতে পারেন ।
জিউসেপে

12
ভাসমান-পয়েন্ট গণিতের উপর ভিত্তি করে প্রায় সমস্ত বর্তমান উত্তরগুলি এমনকি গোলাকার ত্রুটির কারণে (1000, 10) এর মতো সহজ ক্ষেত্রেও ভুল ফলাফল দেয়, তাই আমি আরও একটি পরীক্ষার কেস যুক্ত করেছি।
nwellnhof

3
@ এমপিডাব্লু সমস্ত প্রতিক্রিয়া মুছে ফেলা হয়েছে, এবং আমার দেওয়া পরামর্শগুলি পোস্টে সম্পাদনা করা হয়েছিল, সুতরাং সেগুলি আর প্রাসঙ্গিক ছিল না।
জিউসেপ

উত্তর:


8

ব্রেন-ফ্লাক , 74 বাইট

(({}<>)[()])({()<(({})<({([{}]()({}))([{}]({}))}{})>){<>({}[()])}{}>}[()])

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

এটি স্ট্যান্ডার্ড ব্রেন-ফ্লাক পজিটিভ ইন্টিজার ডিভিশন অ্যালগরিদমের মতো একই ধারণাটি ব্যবহার করে।

# Push P and P-1 on other stack
(({}<>)[()])

# Count iterations until N reaches zero:
({()<

  # While keeping the current value (P-1)*(P^M) on the stack:
  (({})<

    # Multiply it by P for the next iteration
    ({([{}]()({}))([{}]({}))}{})

  >)

  # Subtract 1 from N and this (P-1)*(P^M) until one of these is zero
  {<>({}[()])}{}

# If (P-1)*(P^M) became zero, there is a nonzero value below it on the stack
>}

# Subtract 1 from number of iterations
[()])


6

এক্সেল, 18 বাইট

=TRUNC(LOG(A1,A2))

A1 এ "n" এবং এ 2 এ "পি" ইনপুট নেয়।


আমি মনে করি আপনি 2 বাইট সংরক্ষণ করার INTপরিবর্তে ফাংশন ব্যবহার করতে পারেন TRUNC
pajonk

4

জেলি , 3 বাইট

bḊL

এটি ভাসমান-পয়েন্ট পাটিগণিত ব্যবহার করে না, সুতরাং নির্ভুলতার কোনও সমস্যা নেই।

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

কিভাবে এটা কাজ করে

bḊL  Main link. Left argument: n. Right argument: p

b    Convert n to base p.
 Ḋ   Dequeue; remove the first base-p digit.
  L  Take the length.

3

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

.+
$*
+r`1*(\2)+¶(1+)$
#$#1$*1¶$2
#

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

.+
$*

যুক্তিগুলিকে অচল করে রূপান্তর করুন।

+r`1*(\2)+¶(1+)$
#$#1$*1¶$2

যদি দ্বিতীয় আর্গুমেন্টটি প্রথমটি ভাগ করে, প্রথম যুক্তিকে একটি #পূর্ণসংখ্যার ফলাফলের সাথে প্রতিস্থাপন করুন , অবশিষ্টটি বাদ দিয়ে। প্রথম যুক্তি দ্বিতীয়টির চেয়ে কম না হওয়া পর্যন্ত এটি পুনরাবৃত্তি করুন।

#

লুপটি কতবার চালিয়েছিল তা গণনা করুন।


3

জাপট, 8 বাইট

@<Vp°X}a

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


এটি সত্যিই ঝরঝরে, আমি এখনও জাপটে ফাংশন পদ্ধতিগুলির জন্য ভাল ব্যবহার করতে দেখিনি, এটি একটি ভাল উদাহরণ।
নিত

@ নীট, তাদের সাথে আঁকড়ে ধরতে আমার খুব ভাল লাগলো, সম্প্রতি - কেবলমাত্র এর জন্য ব্যবহারগুলি সন্ধান করতে শুরু করেছে F.g()- তবে তারা অবিশ্বাস্যভাবে দরকারী।
শেগি


3

পার্ল 6 , 13 বাইট

&floor∘&log

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

কনগেটেশন লগ এবং মেঝে রচনা, স্পষ্টতই 2 টি আর্গুমেন্ট কারণ প্রথম ফাংশন লগ আশা 2। ফলাফল একটি ফাংশন।


3
যুক্তিগুলির জন্য 1000, 10এই 2টি ফেরত দেয়
শান 22

@ শিয়ান: হুঁ, আকর্ষণীয় নির্ভুলতার বিষয়টি
ফিল এইচ

3

হাস্কেল , 16 বাইট

(floor.).logBase

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

হাস্কেল গণিতবিদদের দ্বারা ডিজাইন করা হয়েছিল সুতরাং এটি প্রিলিডে গণিত সম্পর্কিত ফাংশনগুলির একটি দুর্দান্ত সেট রয়েছে।


6
রাউন্ডিং ত্রুটির কারণে (1000, 10) এর জন্য কাজ করে না।
নওহ্নহোফ

3

আর , 25 বাইট

function(p,n)log(p,n)%/%1

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

Pবেসের লগ নিন Nএবং 1এর চেয়ে কম হিসাবে সংখ্যার সাথে পূর্ণসংখ্যা বিভাগ করুন floor()। এটি সংখ্যার নির্ভুলতার থেকে কিছুটা ভুগছে, সুতরাং আমি নীচের উত্তরটিও পাশাপাশি উপস্থাপন করছি, যা সম্ভবত পূর্ণসংখ্যার ওভারফ্লো ব্যতীত হওয়া উচিত নয়।

আর , 31 বাইট

function(p,n)(x=p:0)[n^x<=p][1]

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


1
আমি জানি না যে চ্যালেঞ্জটি আমাদের পক্ষে গোলাকার ত্রুটির ক্ষেত্রে কতটা কঠোর হতে হবে তবে উদাহরণস্বরূপ, চ (243,3) 4 এর সমান যখন এটি সম্ভবত 5 হওয়া দরকার
জেডিএল

@ জেডিএল এটি ন্যায্য বিষয়; আমি বিশ্বাস করি যে একটি নিখুঁত সুনির্দিষ্ট উত্তরটি 31 ডলার বাইট হবে।
জিউসেপ

1
আমি মনে করি আপনি 25 বাইট উত্তরের pদ্বারা প্রতিস্থাপন করতে পারেন p+.1এবং আপনি এখনও ঠিক থাকবেন, 28 বাইটের জন্য
জেডিএল

সংখ্যাগত নির্ভুলতার সমস্যাগুলি ছাড়াই আর একটি 28 বাইট সমাধান
রবিন রাইডার


2

রুবি , 31 বাইট

ঠিক আছে, সুতরাং সমস্ত লগ-ভিত্তিক পদ্ধতির রাউন্ডিং ত্রুটির প্রবণতা রয়েছে, সুতরাং এখানে আরও একটি পদ্ধতি যা পূর্ণসংখ্যার সাথে কাজ করে এবং এই সমস্যাগুলি থেকে মুক্ত:

->n,p{(0..n).find{|i|p**i>n}-1}

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

তবে লোগারিদমগুলিতে ফিরে যাওয়া, যদিও ইনপুটটিকে আমাদের কী নির্ভুলভাবে সমর্থন করতে হবে তা এখনও পরিষ্কার নয়, তবে আমি মনে করি যে এই সামান্য কৌশলটি কমবেশি "বাস্তববাদী" সংখ্যার জন্য গোলাকার সমস্যাটি সমাধান করবে:

রুবি , 29 বাইট

->n,p{Math.log(n+0.1,p).to_i}

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


2

আমি জানি long longতবে কি bytes bytes? : পি
সম্পূর্ণরূপে

এছাড়াও পতাকাগুলি আপনার বাইট গণনাতে আর যুক্ত করে না, তাই এটির প্রতিফলিত করার জন্য আমি সম্পাদনা করেছি।
সম্পূর্ণমানবিক

5
রাউন্ডিং ত্রুটির কারণে (1000, 10) এর জন্য কাজ করে না।
nwellnhof

f(n,m){n=(float)log(n)/log(m);}কাজ বলে মনে হয় @ 31 বাইট
জিপিএস


2

এপিএল (ডায়ালগ ইউনিকোড) , 2 বাইট

⌊⍟

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

অনেকটাই অকপট.

লগিন

মেঝে


বাইট সংরক্ষণের জন্য ডায়াডিক করুন:⌊⍟
অ্যাডাম

আমি কিছুটা লজ্জা পাচ্ছি আপনাকে আসলে আমাকে এটি>>>> বলে দিতে হয়েছিল, যদিও ধন্যবাদ!
জে স্যালা

2

এটি কেবল অন্য সবার কাছেই অন্যায় বলে মনে হচ্ছে
ফ্লোরিস

1
@ ফ্লোরিস প্রতিযোগিতাগুলি প্রতিটি ভাষায় জমা দেওয়ার মধ্যে ভাষাগুলির মধ্যে নয়?
ব্যবহারকারী 202729

@ ব্যবহারকারী202729 হ্যাঁ এবং না। আমার মনে, শেষ পর্যন্ত, "সংক্ষিপ্ততম কোড জিতেছে"। তবে আমি লক্ষ্য করেছি যে আরও নীচে একটি 2-বাইট সমাধান রয়েছে ... এই গল্ফ ভাষাগুলি আমার মনকে উড়িয়ে দেয়।
ফ্লোরিস

1
@ ফ্লোরিস "কোড-গল্ফ ভাষাগুলি নন-কোডগল্ফিং ভাষাগুলির সাথে উত্তর পোস্ট করতে আপনাকে নিরুৎসাহিত করবেন না। 'যে কোনও' প্রোগ্রামিং ভাষার পক্ষে যতটা সম্ভব সংক্ষিপ্ত উত্তর নিয়ে আসার চেষ্টা করুন।"
ব্যবহারকারী 202729

1
@ ফ্লোরিস এছাড়াও ... এমনকি এক্সেল 2 বিল্টিনে এটি করতে পারে । গল্ফিংয়ের ভাষা 2 বিল্ট-ইন-এও এটি করতে পারে, কেবল অন্তর্নির্মিত নামগুলি ছোট। অবাক হওয়ার মতো কিছু নেই।
ব্যবহারকারী 202729

2

জাভাস্ক্রিপ্ট , 40 33 বাইট

-3 বাইট ধন্যবাদ ড্যানিয়েল ইন্ডিকে

বাক্য গঠন সিনট্যাক্সে ইনপুট নেয়।

a=>b=>(L=Math.log)(a)/L(b)+.001|0

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



1
28 বাইট এবং সম্ভবত যদি আপনি কারি পদ্ধতি চান
ড্যানিয়েলইন্ডি



4
toStringসমাধান কেবল 36 থেকে ঘাঁটি জন্য কাজ করে
nwellnhof

2

পরী / জিপি, 6 বাইট

logint

(অন্তর্নির্মিত সংস্করণ ২.7, মার্চ ২০১৪ এ যুক্ত হয়েছে an twoচ্ছিক তৃতীয় রেফারেন্স সহ দুটি যুক্তি গ্রহণ করে, যদি উপস্থিত থাকে তবে ফলাফলটিতে উত্থাপিত বেসে সেট করা থাকে)


পরী / জিপি এবং পার্ল / এনটিওরি উভয় থেকেই @ স্টিভিগ্রিফিন লগিন্ট (এক্স, ওয়াই) 1000,10 এর জন্য '3' সহ বর্তমানে প্রদর্শিত 7 টি উদাহরণের সঠিক ফলাফল দেয়।
দানাজে

+1, তবে আমি এটি 6 বাইট হিসাবে গণনা করব।
চার্লস

2
আপনাকে হার্ডকডযুক্ত ইনপুটগুলি ব্যবহার করার অনুমতি নেই, সুতরাং এটি অবশ্যই একটি ফাংশন (যেমন ল্যাম্বডা বা সংজ্ঞা হিসাবে) হওয়া উচিত। তবে আপনি কেবল ব্যবহার করতে পারেন logintযা বৈধ এবং 5 বাইট কম গণনা করে।
4

2

পাইথন 2, 3, 46 বাইট

-১ ধন্যবাদ জোনাথনকে

def A(a,b,i=1):
 while b**i<=a:i+=1
 return~-i

পাইথন 1, 47 বাইট

def A(a,b,i=1):
 while b**i<=a:i=i+1
 return~-i

n~-iএর চেয়ে এক বাইট ছোট n i-1
জোনাথন ফ্রেচ

এছাড়াও, দয়া করে আপনার পাইথনের সংস্করণটি লিখুন।
জোনাথন ফ্রেচ

কোনও সংস্করণে কাজ করবে, তাই না?
বেদান্ত কান্দোই

এটি পাইথন ১ এ কাজ করবে না
জোনাথন ফ্রেচ

2

জাভাস্ক্রিপ্ট (নোড.জেএস) , 22 বাইট

m=>f=n=>n<m?0:f(n/m)+1

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

কারিকৃত পুনরাবৃত্তি ফাংশন। হিসাবে ব্যবহার করুন g(P)(N)ব্যবহারেরMath.log চেয়ে ভাসমান-পয়েন্ট ত্রুটিগুলির প্রবণতা কম এবং (আমার বিশ্বাস) কোড যতক্ষণ না উভয় ইনপুট নিরাপদ পূর্ণসংখ্যার (অধীনে 2**52) সঠিক মান দেয় ।




1

ওল্ফ্রাম ভাষা (গণিত) 15 10 বাইট matic

Floor@*Log 

(ইনপুটটিতে বিপরীত ক্রম প্রয়োজন)

আসল জমা দেওয়া

⌊#2~Log~#⌋&

⌊Log@##⌋&একটি বাইট সংক্ষিপ্ত
লুকাস ল্যাং

@ ম্যাথ 172, এটি একটি চরিত্রের চেয়ে ছোট, তবে আমি এটিতে 13 বাইট গণনা করি। বাম তল এবং ডান তল ইউটিএফ -8 এ প্রত্যেকে 3 বাইট হিসাবে গণনা করুন।
কেলি লোডার

@ স্টেভিগ্রিফিন% [১০,১০০০০] ৩ দেয় The
কেলি লোদার

1

ফোর্থ (গফার্থ) , 35 বাইট

: f swap s>f flog s>f flog f/ f>s ;

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

প্রত্যাশিত ইনপুট প্যারামিটারগুলি অদলবদল করে 5 বাইট সংরক্ষণ করতে পারে, তবে প্রশ্নটি নির্দিষ্ট করে এন অবশ্যই প্রথম হওয়া উচিত (একটি যুক্তি এমন হতে পারে যে একটি পোস্টফিক্স ভাষায় "প্রথম" মানে টপ-অফ-স্ট্যাক, তবে আমি নিয়মের চিঠিতে আটকে থাকব) এখন)

ব্যাখ্যা

swap       \ swap the parameters to put N on top of the stack
s>f flog   \ move N to the floating-point stack and take the log(10) of N
s>f flog   \ move P to the floating-point stack and take the log(10) of P
f/         \ divide log10(N) by log10(P)
f>s        \ move the result back to the main (integer) stack, truncating in the process

1

পাইথ, 6 4 বাইট

s.lF

মেমোনমিকের জন্য 2 বাইট সংরক্ষণ করা হয়েছে
এটি অনলাইনে চেষ্টা করুন

কিভাবে এটা কাজ করে

.lলগ হল বি (এ)
সত্য বলতে, কীভাবে Fকাজ করে তা আমার কোনও ধারণা নেই । তবে এটি যদি কাজ করে তবে তা কাজ করে।
sকোন int একটি ভাসা আমাদের জন্য সর্বোচ্চ পূর্ণসংখ্যা দিতে কাটছাঁট করে M


2
1000,10 ইনপুট হিসাবে আউটপুট হিসাবে 2 দেয়
স্টিভি গ্রিফিন

আর একটি অনুরূপ সমাধান হ'ল/FlM
আরকে।

1

আশ্চর্য , 9 বাইট

|_.sS log

ব্যবহারের উদাহরণ:

(|_.sS log)[1000 10]

ব্যাখ্যা

ভার্বোজ সংস্করণ:

floor . sS log

এটি লিখিত পয়েন্টফ্রি স্টাইল। sSকোনও ফাংশনে আর্গুমেন্ট হিসাবে তালিকা আইটেমগুলি পাস করে (এই ক্ষেত্রে, log)।


1

গফার্থ , 31 বাইট

SWAP S>F FLOG S>F FLOG F/ F>S .

ব্যবহার

242 3 SWAP S>F FLOG S>F FLOG F/ F>S . 4 OK

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

ব্যাখ্যা

দুর্ভাগ্যক্রমে FORTH একটি নিবেদিত ভাসমান-পয়েন্ট-স্ট্যাক ব্যবহার করে। তার জন্য আমাকে SWAPইনপুট মানগুলি (এক্সচেঞ্জ) করতে হবে যাতে তারা সঠিক ক্রমে ভাসমান পয়েন্ট স্ট্যাকের কাছে যায়। আমাকে মানগুলি সেই স্ট্যাকের সাথেও স্থানান্তর করতে হবে S>F। ভাসমান-পয়েন্ট ফলাফলটি পূর্ণসংখ্যায় ফিরে যাওয়ার সময় (F>S ) বিনা মূল্যে ছাঁটাই পাওয়ার সুবিধা আমার রয়েছে।

সংক্ষিপ্ত সংস্করণ

প্রয়োজনীয়তাগুলি প্রসারিত করে এবং ফ্লোট-ফর্ম্যাট এবং সঠিক ক্রমে ইনপুট সরবরাহ করুন, 24 বাইট সহ একটি সংক্ষিপ্ত সংস্করণ রয়েছে।

FLOG FSWAP FLOG F/ F>S .
3e0 242e0 FLOG FSWAP FLOG F/ F>S . 4 OK

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


সাধারণত কোডগল্ফ উত্তরগুলির জন্য, স্নিপেটগুলি অনুমোদিত নয় (যদি না অন্যথায় চ্যালেঞ্জে নির্দেশিত হয়)। এই উত্তরটি হয় একটি ফাংশন ( : f .... ;KEYACCEPT
ফরথ

@ রিফু একটি স্নিপেট কী? আমার মতে কিছু দেখানোর জন্য একটি ছোট কোডের অংশ, যা নিজের জন্য অর্থবহ কিছু করে না। অন্যদিকে, আমি যে কোড সরবরাহ করেছি তা "এটি অনলাইনে চেষ্টা করে দেখুন!" এ পরিবর্তন ছাড়াই কাজ করে। আমাদের মেটা যাওয়া উচিত?
কিতানা 20

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



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