টেপ পরিমাপ স্ট্রিং


15

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

চ্যালেঞ্জ : প্রদত্ত দৈর্ঘ্যের একটি টেপ পরিমাপ স্ট্রিং আউটপুট করতে একটি প্রোগ্রাম লিখুন । একটি টেপ পরিমাপের স্ট্রিং স্ব তার দৈর্ঘ্য বরাবর যতটা সম্ভব তার দৈর্ঘ্য বর্ণনা করে।

বিধি :

  1. টেপ পরিমাপের স্ট্রিংয়ের মোট দৈর্ঘ্যের জন্য আপনার প্রোগ্রামকে অবশ্যই একটি ইতিবাচক পূর্ণসংখ্যা প্যারামিটার নিতে হবে
  2. আউটপুটে প্রতিটি সংখ্যার সংখ্যক স্ট্রিংয়ের জন্য, এই অঙ্কগুলি অবশ্যই সঠিকভাবে এখনও পর্যন্ত আউটপুটটির দৈর্ঘ্যের প্রতিবেদন করতে হবে - সমেত !
    1. দৈর্ঘ্য স্ট্রিংয়ের শুরু থেকে প্রতিটি সংখ্যার শেষে পরিমাপ করা হয়
  3. যতগুলি সম্ভব দৈর্ঘ্যের সংখ্যাগুলি স্ট্রিংয়ে অন্তর্ভুক্ত করা উচিত
  4. অস্পষ্টতা এড়িয়ে চলুন। বিভাজক / ডিলিমিটারগুলি সংখ্যাগুলি জুস্টপোজড এড়াতে ব্যবহার করা যেতে পারে, অর্থাত 12বারো নয় এক, দু'টি বলে।
  5. স্ট্রিংটি সর্বদা সঠিকভাবে তার মোট দৈর্ঘ্যটি তার শেষের দিকে, কোনও পিছনের বিভাজক ছাড়া রিপোর্ট করতে হবে
  6. দৈর্ঘ্য সঠিক রাখতে আপনার একাধিক বিভাজকের প্রয়োজন হতে পারে, উদাহরণস্বরূপ, এখানে দৈর্ঘ্য 4 এর টেপ মাপার স্ট্রিংয়ের একটি উদাহরণ রয়েছে: 1--4

অ প্রেসক্রিপটিভ / সম্পূর্ণ উদাহরণ:

  • দৈর্ঘ্য 1 টেপ পরিমাপ স্ট্রিং: 1
  • দৈর্ঘ্য 2 টেপ পরিমাপ স্ট্রিং: -2
  • দৈর্ঘ্য 3 টেপ পরিমাপ স্ট্রিং: 1-3
  • টেপ পরিমাপ স্ট্রিংয়ের দৈর্ঘ্য 4: 1--4বা -2-4(উভয়ই যতবার সম্ভব দৈর্ঘ্যের দৈর্ঘ্যের অর্থাত্ দ্বিগুণ এবং সঠিক মোট দৈর্ঘ্যের সাথে শেষ হবে)
  • দৈর্ঘ্যের 10 টেপ পরিমাপ স্ট্রিং: 1-3-5-7-10
  • দৈর্ঘ্য 11 টেপ পরিমাপ: STRING 1-3-5-7--11বা 1-3-5--8-11বা 1-3--6-8-11বা 1--4-6-8-11বা -2-4-6-8-11(সব সম্ভব হিসাবে অনেক দৈর্ঘ্য সংখ্যা এবং মোট স্ট্রিং দৈর্ঘ্য সঙ্গে ফিনিস যেমন আছে)

সুতরাং স্ট্রিংয়ের প্রতিটি অঙ্ক অন্য সংখ্যার সাথে সংলগ্ন নয়, স্ট্রিংটি সম্পূর্ণ ড্যাশগুলি সমন্বয়ে গঠিত -এবং আপনার স্ট্রিংয়ে যতগুলি দৈর্ঘ্যের চিহ্ন থাকতে পারে তার দরকার আছে?
আর

আমরা 0 ভিত্তিক সূচক ব্যবহার করতে পারি?
আর

@ ইস্টারলিআইর্ক বিধি 3 যত বেশি সংখ্যক স্ট্রিংয়ের সাথে মানানসই হতে হবে।
পোস্ট রক গারফ হান্টার


@ ইস্টারলিআইর্ক আপনার সমস্ত ড্যাশ থাকতে পারে না কারণ এটি অনুপ্রেরণা পূরণ করতে ব্যর্থ হয় এবং 3 এবং 5 এর বিধি ভঙ্গ করে There মাত্র দৈর্ঘ্য। সুতরাং না, একটি টেপ পরিমাপের দৈর্ঘ্যের স্ট্রিং, হতে পারে না 0
টম ভিনার

উত্তর:


12

পাইথন, 50 48 47 46 বাইট

f=lambda x:x*"1"if x<2else f(x-len(`-x`))+`-x`

ব্যাখ্যা

খুব সহজ পুনরাবৃত্ত ল্যাম্বদা দ্রবণ

আমাদের বেস ক্ষেত্রে 1 এবং 0 যার দ্বারা ঢেকে রাখা হয়েছে "1"*xঅন্যথায় আমরা এর স্ট্রিং পেতে -xসঙ্গে `-x`এবং এর ফাংশন কলিং ফলাফল পূর্বে লিখুন len(`-x`)কম।


1
আপনি স্ট্রিংফাইটিং করে বাইটস সংরক্ষণ করতে পারেন -x?
মার্টিন Ender

@ মার্টিনএন্ডার ঠিক আছে আমি এটি কাজ করতে পেরেছি। টিপ জন্য ধন্যবাদ! আগে না দেখে আমি একধরনের বোবা অনুভব করছি।
পোস্ট রক গার্ফ হান্টার

5

গণিত, 67 57 বাইট

10 বাইট জেটিসনিংয়ের জন্য মার্টিন ইন্ডারকে ধন্যবাদ!

""["1"][[#]]/._@__:>#0[#-1-IntegerLength@#]<>ToString@-#&

নামহীন ক্রিয়াকলাপটি একটি nonnegative পূর্ণসংখ্যার যুক্তি গ্রহণ এবং একটি স্ট্রিং ফিরে। খুব সুস্পষ্ট পুনরাবৃত্তির অ্যালগরিদম: স্ট্রিংটি একটি এর পূর্বে ইনপুট নম্বর দিয়ে শেষ হয়ে গেছে তা নিশ্চিত করুন "-"এবং তারপরে আবার ব্যবহার করে ফাংশনটি কল করুন #0

তবে অ্যালগরিদম বাস্তবায়নে গোলাপী মজা আছে। অভিব্যক্তির তৃতীয় যুক্তিকে ""["1"][[#]]বোঝায়: 0 #তম যুক্তিটি ""["1"]প্রধান ""এবং 1 ম আর্গুমেন্টটি দৃশ্যমান "1", যা পুনরাবৃত্তির বেস কেসগুলি সরবরাহ করে। যদি এটি #1 ছাড়িয়ে যায় তবে ""["1"][[#]]ত্রুটি বার্তা নিক্ষেপ করে এবং অব্যক্ত ফাংশন হিসাবে থেকে যায়। তবে তারপরে /._@__:>একটি নিয়ম যা কোনও অপ্রয়োজনীয় ফাংশন নেয় এবং এটিকে পরবর্তী সময়ে প্রকাশিত অভিব্যক্তিতে রূপান্তরিত করে, এটি আসল ফাংশনে পুনরাবৃত্তি কল।

আসল জমা:

If[#<2,""["1"][[#]],#0[#-1-IntegerLength@#]<>"-"<>IntegerString@#]&

2
""["1"][[#]]/._@__:>#0[#-1-IntegerLength@#]<>ToString@-#&এড়িয়ে এক বাইট সংরক্ষণ Ifএবং এড়িয়ে বাইট একটি গুচ্ছ IntegerStringএবং "-"<>
মার্টিন এেন্ডার

1
ওম, _@__অশুভ যাদু
গ্রেগ মার্টিন

3

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

f=(n,s='',t=''+-n)=>n>1?f(n-t.length,t+s):n?n+s:s
<input type=number oninput=o.value=f(this.value)><br><textarea id=o></textarea>


1
আমি মনে করি আপনাকে সংজ্ঞায়িত করতে হবেf
টম ভিনার

@ টমভাইনার আমি সবসময় এটি করে চলেছি। (কমপক্ষে আমার কাছে সঠিক বাইট গণনা ছিল))
নীল


1

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

{[R~](-$_,{$_+.comb}...^*>-1).&{S/^\-1/1/}}

ব্যাখ্যা:

{                                         }  # A lambda.
                    ...                      # Generate a sequence...
      -$_                                    #   starting from the negated lambda argument,
         ,{        }                         #   continuing iteratively using the formula:
           $_+.comb                          #     Last element plus length of last element.
                        *>-1                 #   until we hit 0 or higher,
                       ^                         end-point not inclusive.
 [R~](                      )                # Reverse and concatenate the number sequence.
                             .&{         }   # Apply to this the transformation:
                                S/^\-1/1/    #   Remove the sign from a leading "-1".

সুতরাং ইনপুট 10 এর উদাহরণস্বরূপ, এটি ক্রমটি তৈরি করে (-10, -7, -5, -3, -1)এবং সেই স্ট্রিং -1-3-5-7-10থেকে এবং এটি চূড়ান্ত স্ট্রিং থেকে 1-3-5-7-10

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

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