চ্যাম্পারটাউন ধ্রুবকটিতে নম্বরটি সন্ধান করুন


35

ভূমিকা

দশম বেসে, চ্যাম্পেরন ধ্রুবকটি ধারাবাহিক পূর্ণসংখ্যার উপস্থাপনা দ্বারা সংজ্ঞায়িত করা হয়। বেস 10: 0.1234567891011121314151617...এবং অন্যান্য।

আপনি দেখতে পাচ্ছেন যে দশমিক 15শুরুতে প্রথম উপস্থিতি 20th:

  Position
  0000000001111111111222222222233333333334444444444555555555566666666
  1234567890123456789012345678901234567890123456789012345678901234567
                     ^
0.1234567891011121314151617181920212223242526272829303132333435363738...
                     ^^
                     15 = position 20

দশমিক প্রথম 45শুরু 4th:

  Position
  0000000001111111111222222222233333333334444444444555555555566666666
  1234567890123456789012345678901234567890123456789012345678901234567
     ^               
0.1234567891011121314151617181920212223242526272829303132333435363738...
     ^^
     45 = position 4

সুতরাং, কাজ সহজ। একটি অ-নেতিবাচক পূর্ণসংখ্যার দেওয়া, চ্যাম্পারটাউন ধ্রুবরে পূর্ণসংখ্যার অবস্থান আউটপুট দেয়।

বিধি

  • আপনি কোনও ফাংশন বা একটি প্রোগ্রাম সরবরাহ করতে পারেন
  • এটি , তাই সর্বনিম্ন পরিমাণ বাইটের সাথে জমাটি জয়!

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

Input: 20
Output: 30

Input: 333
Output: 56

Input: 0
Output: 11 (note that the 0 before the decimal point is ignored)

Input: 2930
Output: 48

আমাদের সর্বোচ্চ পদে কাজ করার দরকার কী? উদাহরণস্বরূপ, সংখ্যাটি কি কখনও 987654321123456877654234354675.
মরগান থ্রাপ

@ মরগানথ্রাপ আমি সম্ভবত পরিসীমাতে পূর্ণসংখ্যার পরীক্ষা করব 0 <= x <= 99, তবে এটি তাত্ত্বিকভাবে এর চেয়ে বেশি পূর্ণসংখ্যার জন্য কাজ করা উচিত 99
আদনান

উত্তর:


8

পাইথ, 10

hxjkS+QT`Q

প্রথম input + 10সংখ্যাগুলি সংঘবদ্ধ করে তার পরে 0 ভিত্তিক সূচক এবং একটিকে খুঁজে বের করে .. অতিরিক্ত দশটি কেবল 0 এর জন্য প্রয়োজন।

পরীক্ষা স্যুট


আমার মনে হয় অন্তর্নিহিত ইনপুটটি আগে প্রয়োগ করা হয়েছিল 2015-12-17 15:01:23Zবা কিছু?
এরিক দি আউটগল্ফার

@ এরিকথ আউটগল্ফার এটি ২০১ 2016 সালে যুক্ত করা হয়েছিল: github.com/isaacg1/pyth/commit/…
ফ্রাইআম

10

ল্যাবভিউ, 29 ল্যাবভিউ পুরষ্কার

এটি আপাতত স্ট্রিং ব্যবহার করে। এটি একটি নিদর্শন হিসাবে ইনপুটটির সাথে মেলে এবং অফসেটকে আউটপুট দেয় - (ইনপুট দৈর্ঘ্য -১)।


6

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

a=prompt();for(y=b=" ";y<a+11;)b+=++y;alert(b.indexOf(a))

কনর ও ব্রায়েনকে 1 বাইট সংরক্ষণ করা হয়েছে


আমি মনে করি আপনি y=অংশটি স্থানান্তর করতে পারেন y=b=" "; একটি স্থান বাড়ানো শূন্য বৃদ্ধি করার মতো। ( a=prompt(y=b=" ");...)
কনার ও'ব্রায়েন

1
@ CᴏɴᴏʀO'Bʀɪᴇɴ ভাল লাগবে।
সুপারজেডি ২৪

4

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

a#b|and$zipWith(==)a b=1|1<2=1+a#tail b 
(#(show=<<[1..])).show

ব্যবহারের উদাহরণ: (#(show=<<[1..])).show $ 2930-> 48

কিভাবে এটা কাজ করে: a # b এর aমধ্যে অবস্থানটি সন্ধান করে b: যদি প্রত্যাবর্তনের aউপসর্গ হয় , অন্যথায় একটি পুনরাবৃত্ত কলটিতে যুক্ত করুন । পয়েন্টফ্রি ফাংশনটি একটি (নামবিহীন) আর্গুমেন্ট এবং কলগুলি প্রত্যাশা করে ।b11a # tail b(#(show=<<[1..])).shownshow n # show=<<[1..]

ফাংশনটি কাজটিও subIndexকরবে #, তবে প্রয়োজনীয় import Data.List.Utilsঅর্থ প্রদান করবে না।


আমি মনে করি না যে আপনার প্রয়োজন.show
গম উইজার্ড


4

রুবি, 28

->n{[*0..n+10]*''=~/\B#{n}/}

শুরুতে একটি 0 অন্তর্ভুক্ত করে যাতে ম্যাচগুলি 1-সূচকযুক্ত হয় তবে \Bএটি ম্যাচটি স্ট্রিংয়ের শুরুতে না হওয়া প্রয়োজন uses


4

জাপট, 11 বাইট

এটি মূলত পাইথকে মারছিল, তবে দৃশ্যত এটি ইনপুটটির জন্য কাজ করে নি 0

1+1oU+B ¬bU

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

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

1+1oU+B ¬ bU
1+1oU+B q bU  // Implicit: U = input integer
  1oU+B       // Generate the range [0, U+11).
        q bU  // Join and take the index of U.
1+            // Add one to get the correct result.
              // Implicit: output last expression

আপনার "এটি কীভাবে কাজ করে" বিভাগে কোডটিতে একটি যুক্ত রয়েছে qএবং লজিক্যাল নেগ্রহের প্রতীকটি নেই ¬কেন?
10-15

@ ফ্যাটালাইজ ¬হ'ল একটি শর্টকাট (এটি qনিম্নলিখিত স্থান সহ)। এটি প্রায়শই বিভ্রান্তির একটি বিন্দু বলে মনে হয়, তাই আমি সংক্ষিপ্ত সংস্করণটি পুরোটি দিয়ে সাজিয়ে রেখেছি।
ইটিএইচ প্রডাকশনগুলি

3

লুয়া, 54 বাইট

s=""for i=1,1e4 do s=s..i end print(s:find(io.read()))

দ্রষ্টব্য: বর্তমানে এই প্রোগ্রামটি স্ট্রিংয়ের প্রথম চরটির প্রথম উপস্থিতি এবং যেখানে এটি শেষ হয় সেখানে উভয়ই মুদ্রণ করে। যদি এটি অনুমোদিত না হয় তবে এর জন্য আরও কয়েকটি বাইট লাগবে। আমি বোনাসের জন্য আবেদন করতে চাই কারণ আমার প্রোগ্রামটি ইনপুট নম্বরটির প্রথম অবস্থান এবং শেষ অবস্থান উভয়ই প্রিন্ট করে।


1
আপনি কি সংখ্যার প্রথম উপস্থিতির সূচনা সূচনাগুলি এবং শেষ সূচকগুলি বোঝাতে চান? কারণ তাত্ত্বিকভাবে সংখ্যাটি সেখানে অসীম পরিমাণে আসত।
Rɪᴋᴇʀ

হ্যাঁ, প্রথম ঘটনাটির জন্য শুরু করুন এবং শেষ করুন।
নিকোলাই 9

3

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

it10+:Yst' '=~)wYsXf1)

ইনপুট নিন ( i), ভেক্টরটিকে ইনপুট + 10 ( 10+:) এ তৈরি করুন, ভেক্টরটিকে একটি স্ট্রিংয়ে রূপান্তর করুন ( Ys), এবং স্পেসগুলি সরান, যা বেদনাদায়ক, ( t' '=~))। তারপরে, ইনপুটটিকে একটি স্ট্রিং ( Ys) এ রূপান্তর করুন , সংখ্যার স্ট্রিংয়ে ইনপুট স্ট্রিংটি কোথায় রয়েছে তা সন্ধান করুন ( Xf) এবং প্রথম অবস্থান ( 1)) নিন। t'S এবং wএর স্ট্যাক (প্রতিলিপি এবং swap' র, যথাক্রমে) সাধিত হয়।


3

পাওয়ারশেল, 39 44 বাইট

[সম্পাদনা করুন: আমার ধারণা ধরে রাখে না, 1-0 থেকে অ্যারে তৈরি করা জায়গাটিতে 0 খুঁজে পায় না 11 পরিবর্তে 0-কে পরিচালনা করার জন্য 1-x + 10 থেকে তৈরি করুন, এখন 44 বাইট]

param($i)(1..($i+10)-join'').IndexOf("$i")+1

আপনি সর্বশেষতম পয়েন্টে চ্যাম্পেরনউন ধ্রুবকটির একটি স্ট্রিং তৈরি করার সময় সর্বদা এক্স পাবেন যখন আপনি শেষ প্রান্তে এক্স যুক্ত করবেন , সুতরাং 1-x এর অ্যারের মধ্যে সর্বদা উত্তর থাকবে। প্রশ্নটি হয়ে যায় "এটির চেয়ে খুব শীঘ্রই কোনও ঘটনা ঘটে?" । এই কোড

param($i)(1..$i-join'').IndexOf("$i")+1

e.g.

PS C:\Temp> .\Champer.ps1 20
30

সংখ্যার পরিসীমা তৈরি করে, এটিকে একটি স্ট্রিংয়ে কাস্ট করে এবং এর ভিতরে প্যারামিটার অনুসন্ধান করে। পাওয়ারশেল যেহেতু একটি অবজেক্ট ওরিয়েন্টেড শেল, তাই প্যারামিটারটি আসলে এক [int]প্রকার, সুতরাং দুটি অক্ষর সংরক্ষণ করার চেষ্টা করে .IndexOf($i)একটি পূর্ণসংখ্যার জন্য স্ট্রিংটি অনুসন্ধান করতে এবং কিছুই খুঁজে পাওয়া যায়নি। এজন্য আমি স্ট্রিং ইন্টারপোলেশন ব্যবহার করি "$i"


1
এটি করার চতুর উপায়। হতাশার কারণ যে .IndexOf()বাহ্যিকভাবে -joinপ্যারেন্স এবং উক্তিগুলি বাধ্য করার চেয়ে অ্যানারি তুলনায় উচ্চতর অপারেটিং পছন্দ রয়েছে has : - /
অ্যাডমবর্কবর্ক

3

এমএটিএল ( ০.০.১ প্রকাশ করুন), ২২ বাইট

iXK10+:"@Ys]N$hKYsXf1)

উদাহরণ

>> matl iXK10+:"@Ys]N$hKYsXf1)
> 333
56

ব্যাখ্যা

i       % Input
XK      % Copy to clipboard K            
10+     % Add 10. This is needed in case input is 0
:       % Vector of equally spaced values, starting from 1
"       % For each
  @Ys   %   For loop variable as a string
]       % End                            
N$h     % Horizontal concatenation of all stack contents
KYs     % Paste from clipboard K (input number) and convert to string
Xf      % Find one string within another 
1)      % First value

এমএটিএল ( 20.8.0 প্রকাশ করুন), 16 বাইট (ভাষা পোস্টডেটস চ্যালেঞ্জ)

প্রোগ্রামটির এই সংস্করণটির জন্য @ জিউজ্পে ক্রেডিট (কিছুটা সংশোধিত)

10+:"@V]&hGVXf1)

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

ব্যাখ্যা

10+     % Implicit Input. Add 10. This is needed in case input is 0 
:       % Vector of equally spaced values, starting from 1
"       % For each
  @V    %   For loop variable as a string 
]       % End
&h      % Horizontal concatenation of all stack contents
GV      % Paste from automatic clipboard G (input number) and convert to string
Xf      % Find one string within another 
1)      % First value

আমি মনে করি না যে এটি হ্যান্ডেল করে 0 :(
ডেভিড

@ ডেভিড এখন এটি করে। দেখার জন্য ধন্যবাদ! এটির জন্য 3 বাইটের দাম :-)
লুইস মেন্ডো

এখন যে ক্লিপবোর্ডে Gইনপুট রয়েছে (এবং অন্তর্নিহিত ইনপুট), আমি অনুমান করি যে এই উত্তরটি যথেষ্ট পরিমাণে সংক্ষিপ্ত করা যেতে পারে, এবং যাইহোক Ysপরিবর্তনের সমস্ত প্রয়োজন V; আমি 10+:"@Vv]!GVXf1)16 বাইট জন্য এসেছি ।
জিউসেপ্পে

@ জিউসেপ মাথা উঁচু করার জন্য ধন্যবাদ! যথাযথ ক্রেডিট সহ আপডেট হয়েছে (এবং "ভাষার পোস্টডেটস চ্যালেঞ্জ" নোট সহ; আমি নতুন নিয়মের কোনও বড় অনুরাগী নই )
লুইস মেন্ডো

আমি সেই নিয়মটিকে এতটা আপত্তি করি না ( যদিও পতাকাগুলি আমাকে পাগল করে তোলে, যদিও); আমি প্রায়শই এখানে মন্তব্য করছিলাম যেহেতু আমি লক্ষ্য করেছি যে দোভাষীর সর্বাধিক আধুনিক সংস্করণে ব্যবহারের Ysজন্য পরিবর্তন করতে হবে Vto ভাষাটি কতটা উন্নতি করেছে তা নিয়ে আমি সর্বদা মুগ্ধ!
জিউসেপ্পে

2

পাওয়ারশেল, 54 50 বাইট

for($c='';!($x=$c.IndexOf("$args")+1)){$c+=++$i}$x

লুপের জন্য লুপটি অদলবদলের ধারণার জন্য টেসেলেলটিংহেকলারের ধন্যবাদ ।whilefor

একটি forলুপ মাধ্যমে কার্যকর । অন্যান্য ভাষার মতো, লুপের প্রথম বিবৃতিটি ভেরিয়েবল এবং অ্যাসাইনমেন্টগুলি তৈরি করতে পারে, সুতরাং $cএটি কেবল খালি স্ট্রিংয়ের সমান দিয়ে শুরু হয় ''যাতে আমরা চ্যালেঞ্জের দশমিক সূচীকরণের সাথে স্ট্রিংটির শূন্য-সূচীকরণ করতে পারি। আমরা একটি লুপ তারপর করছি যে কিনা তা পরীক্ষা $cইনপুট পূর্ণসংখ্যা (হয়েছে $args) এটিকে মধ্যে কোথাও (অর্থাত, যেহেতু .IndexOf()আয় -1যদি পংক্তিটি পাওয়া না গেলে, আমরা এক যে যোগ ( 0) এবং (না $TRUE) লুপ অব্যাহত রাখার জন্য)। যদি এটি না পাওয়া যায় তবে আমরা লুপটি ভেঙে আমাদের প্রাক-বর্ধিত সংযোজন করি । অবশেষে, আমরা সূচকটি আউটপুট করি ।$i কাউন্টার ভেরিয়েবলটি যুক্ত করি, তারপরে স্ট্রিংটি পুনরায় পরীক্ষা করুন। একবার স্ট্রিংটি পাওয়া গেলে, .IndexOf()ইতিবাচক মানটি ফিরে আসবে, যার মধ্যেটি হবে না$FALSE$x


ক্লাসিক forলুপের জন্য আদর্শ ... for($c='.';($x=$c.IndexOf("$args"))-lt0;$c+=++$i){}$xএবং 1 টি অক্ষর সংরক্ষণ করুন। যেহেতু ইনডেক্স অফের বেশিরভাগ কল -1 ফিরে আসবে, তাই এটিতে একটি যুক্ত করুন এবং বুলিয়ান! একটি ছোট পরীক্ষা জন্য এটি নিক্ষেপ। তবে এটি করার জন্য আপনার প্যারেন্স দরকার। খালি ns সি এবং +1 বিদ্যমান প্যারেনগুলির ভিতরে, বোনাস এটি খাটো। for($c='';!($x=$c.IndexOf("$args")+1);$c+=++$i){}$x51 বাইট। (তবে আমি আমার 39 বাইটটিকে তার নিজস্ব উত্তর হিসাবে পোস্ট করেছি কারণ এটি সম্পূর্ণ ভিন্ন পদ্ধতির: পি)।
টেসেল্ল্যাটিংহেকলার

1
@ টেসেল্লাটিংহেকলার লুপটি পুনরায় লেখার জন্য দুর্দান্ত উপায় - ধন্যবাদ! আমি $cউপসংহারটি লুপের মধ্যে একটি সেমিকোলনে গল্ফে স্থানান্তরিত করেছি । এখন 50 এ।
অ্যাডমবর্কবার্ক

2

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

x=>(f=n=>n?f(n-1)+n:" ")(x+11).search(x)

fলুপগুলি এড়াতে পুনরাবৃত্ত ফাংশন ব্যবহার করে । দ্যঅনুসন্ধান পদ্ধতি হিসাবে একই ভাবে কাজ করে indexOfছাড়া এটি একটি প্যারামিটার, যা এই চ্যালেঞ্জ জন্য অপ্রাসঙ্গিক যেমন কোন RegExp লাগে যে।

কেসের " "জন্য যুক্ত করা n=0(জেএসে শূন্য মিথ্যা) +সংযোজনের পরিবর্তে স্ট্রিং কনটেনটেশন সম্পাদন করতে জোর করে এবং শূন্য-ভিত্তিক সূচকের জন্য সংশোধন করে।



1

সিজেম, 11 বাইট

r_i),s\#Be|

এটি এখানে পরীক্ষা করুন।

আমি অবস্থান সন্ধান করছি N01234...N 1-ভিত্তিক সূচক জন্য অ্যাকাউন্টে স্ট্রিংয়ের । অবশেষে আমি 011 দিয়ে লজিকাল ওআর প্রয়োগ করে ঠিক করেছি ।


1

গম্ভীরভাবে, 13 বাইট

;≈9u+R`$`MΣí

পূর্ণসংখ্যা হিসাবে ইনপুট নেয়। অপ্রিন্টেবলগুলি ধারণ করে, তাই হেক্সডাম্প:

0c3bf739752b526024604de4a1

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

ব্যাখ্যা:

;≈9u+R`$`MΣí
<form feed>   push str(input)
;≈9u+R        dupe, push [1,...,input+10]
      `$`MΣ   string concatenation of list
           í  get index of input


1

k4, 21 বাইট

{*1+(,/$1+!10+x)ss$x}

সবাই হিসাবে একই মত aten সম্মতি [1..10+x] স্ট্রিং স্ট্রিং হিসাবে সন্ধান করুন, এক-ভিত্তিক সূচীতে রূপান্তর করুন, প্রথম হিট ফিরে আসুন।

পরীক্ষার কেসগুলি পরীক্ষা করা হচ্ছে:

  &/20 4 30 56 11 48={*1+(,/$1+!10+x)ss$x}'15 45 20 333 0 2930
1b

1

গণিত, 101 বাইট

(If[#==0,11,m=Min@SequencePosition[s=Flatten[(K=IntegerDigits)/@Range[0,#]],K@#];Length@s[[;;m-1]]])&

1

হাস্কেল , 82 73 55 বাইট

সদৃশ থেকে স্থানান্তরিত

x!b|or$zipWith(==)x b=0
x!(_:b)=1+x!b
(!(show=<<[1..]))

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

ব্যাখ্যা

প্রথমে আমরা সংজ্ঞায়িত করি !। প্রথম উপস্থিতি x!bছাঁটাই । এটা তোলে চেক করে এই আছে যদি দিয়ে শুরু হয় ( ) ফিরে যদি এটা আছে এবং অন্যথায় স্ট্রিং নিচে এক চলন্ত। তারপরে আমরা আমাদের মূল ফাংশনটি সংজ্ঞায়িত করি। আমাদের মূল ফাংশনটি একটি বিন্দু মুক্ত ফাংশন যা ধ্রুবক ( ) নেয় এবং এটির প্রথম উপস্থিতিতে ছাঁটাই করে । এটি একটি স্ট্রিং হিসাবে লাগে ।bxbxor$zipWith(==)x bxshow=<<[1..]xx



1

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

x=s=``
f=n=>-~s.search(n)||f(n,s+=++x)

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

x=s=``
f=n=>-~s.search(n)||f(n,s+=++x)
o.innerText=f(i.value=15);oninput=_=>o.innerText=f(+i.value)
<input id=i type=number><pre id=o></pre>






0

পার্ল 6 / রকুডো 29 বাইট

{$_~=$++until /(.+)$^a/;$0.chars}

একটি ইনপুট ($ ^ a) দিয়ে একটি ফাংশন সংজ্ঞায়িত করে। এইভাবে কল করুন:

say {$_~=$++until /(.+)$^a/;$0.chars}(333)
> 56

ইনপুট না পাওয়া পর্যন্ত ইনকামিং $, একটি বেনামে ভেরিয়েবল যুক্ত করা, এবং তারপরে অক্ষরের সংখ্যা গণনা করা। রেজেক্সে কমপক্ষে 1 টির আগে প্রয়োজনীয় প্রয়োজন 0-> 0 কেস বাদ দেয়$++$^a.+


0

জে, 30 বাইট

{.I.(":E.[:}.' '-.~":@i.@+&11)

বিশেষত প্রথম এন + 10 পূর্ণসংখ্যাকে একত্রিত করার ক্ষেত্রে সম্ভবত আরও কিছুটা গল্ফ করা যেতে পারে।

ব্যাখ্যা:

{.I.(":E.[:}.' '-.~":@i.@+&11)
                      i.@+&11   | Integers 0 to n+10
                   ":@          | Format list to string
             ' '-.~             | Strip spaces
           }.                   | Behead (remove leading 0)
         [:                     | Cap (previous verbs executed in order, not as a fork)
     ":E.                       | Find matches to the string n (returns a boolean vector)
  I.                            | Indexes of 1s
{.                              | Take only the first

নোট করুন যে এটি 0-সূচকযুক্ত। উদাহরণ:

    {.I.(":E.[:}.' '-.~":@i.@+&11) 1
0
    {.I.(":E.[:}.' '-.~":@i.@+&11) 0
10
    {.I.(":E.[:}.' '-.~":@i.@+&11) 333
55

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