স্ট্রিং দৈর্ঘ্য যুক্ত করা হচ্ছে


51

চ্যালেঞ্জ:

sঅক্ষরের উপর একটি স্ট্রিং দেওয়া a- z, A- Z, 0- 9, sমোট দৈর্ঘ্যের অংশ হিসাবে দৈর্ঘ্যে অতিরিক্ত অক্ষর (গুলি) গণনা করে নিজের মধ্যে দৈর্ঘ্য যুক্ত করুন s

ইনপুট:

স্বেচ্ছাসেবী দৈর্ঘ্যের একটি স্ট্রিং (খালি থাকতে পারে)।

আউটপুট:

একই স্ট্রিং, তবে এর দৈর্ঘ্যটি শেষ পর্যন্ত যুক্ত হয়। দৈর্ঘ্যের প্রতিনিধিত্বকারী অক্ষরগুলি দৈর্ঘ্যের অংশ হিসাবেও গণনা করা উচিত। সংক্ষিপ্তকরণের জন্য একাধিক বৈধ দৈর্ঘ্য রয়েছে এমন ক্ষেত্রে, সম্ভাব্যতম ক্ষুদ্রতমটি বেছে নিন (উদাহরণগুলির জন্য পরীক্ষার কেসগুলি দেখুন)।

পরীক্ষার কেস:

INPUT     -> OUTPUT       // Comment
aaa       -> aaa4
          -> 1            // Empty string
aaaaaaaa  -> aaaaaaaa9    // aaaaaaaa10 would also normally be valid, but violates using the smallest number rule mentioned above
aaaaaaaaa -> aaaaaaaaa11
a1        -> a13          // Input can contain numbers at the end of the string, you do not have to handle the fact that it looks like 13 rather than 3.

Longer test case(s):

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa101
aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa -> aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa102

নিয়মাবলী:

এটি , তাই বাইট জেতে সংক্ষিপ্ততম কোড। স্ট্যান্ডার্ড লুফোলগুলি নিষিদ্ধ। সাবমিশনগুলি একটি সম্পূর্ণ প্রোগ্রাম বা কোনও ফাংশন হতে পারে এবং আপনি ফলটি স্টাডাউটের জন্য মুদ্রণ করতে পারেন বা কোনও ফাংশন থেকে পরিবর্তনশীল হিসাবে ফিরিয়ে দিতে পারেন।


ইনপুটটিতে কোন অক্ষর উপস্থিত হতে পারে?
মার্টিন এন্ডার

@ মার্টিনএন্ডার বর্ণমালার অক্ষর কেবল 0-9 এবং এজেড / এজেড। হ্যাঁ, আপনার শেষে সংখ্যার সাথে স্ট্রিং থাকতে পারে। আমি একজনের জন্য একটি পরীক্ষার কেস যুক্ত করব।
ইয়োডল

উত্তর:



18

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

f=(s,n=0)=>(s+n)[n]?f(s,n+1):s+n

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

f = (s, n = 0) =>   // given a string 's' and starting with n = 0:
  (s + n)[n] ?      // if the Nth character of (s + n) exists:
    f(s, n + 1)     //   try again with n + 1
  :                 // else
    s + n           //   return s + n

শুরু করে N=0, আমরা মূল ইনপুট স্ট্রিংয়ের সংক্ষিপ্তকরণ এবং এর দশমিক প্রতিনিধিত্বের দ্বারা তৈরি স্ট্রিংয়ের নবম অক্ষর (0-ভিত্তিক) পরীক্ষা করি NNএই চরিত্রটির আর অস্তিত্ব না পাওয়া পর্যন্ত আমরা বৃদ্ধি করি ।

উদাহরণ:

N =  0 : abcdefghi0
         ^
N =  1 : abcdefghi1
          ^
N =  2 : abcdefghi2
           ^
...
N =  8 : abcdefghi8
                 ^
N =  9 : abcdefghi9
                  ^
N = 10 : abcdefghi10
                   ^
N = 11 : abcdefghi11    -> success
                    ^

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


বাহ, জেএস এর জন্য পাইথনের চেয়ে অনেক বেশি পরিশ্রুত।
mbomb007

@ আরনাউল্ড আমি এদিকে মাথা পেতে পারি না। এই কোডটি কীভাবে কাজ করে তা বোঝাতে আপনার কি আপত্তি আছে?
গোথাম

12

ল্যাটেক্স, 108/171

\newcounter{c}\def\s#1#2]{\stepcounter{c}\def\t{#2}\ifx\empty\t\arabic{c}\else#1\s#2]\fi}\def\q[#1]{\s#10]}

\q[] //1


ওহ, আমি মনে করি না আমি এর আগে পিপিসিগিতে কোনও ক্ষীর উত্তর দেখেছি।
pajonk

5

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

f=(s,t=s,u=s+t.length)=>t==u?t:f(s,u)
<input oninput=o.textContent=f(this.value)><pre id=o>


আমি ক্লিক করলে আমি Run Code Snippetএকটি ত্রুটি বার্তা দেখতে পাই। আমার জাভাস্ক্রিপ্ট সম্পর্কে কোনও জ্ঞান নেই - আমি কেবল চেষ্টা করছিলাম
প্রসন্ন্না

@ প্রসন্ন ফায়ারফক্সে আমার জন্য কাজ করে; আপনি কোন ব্রাউজার ব্যবহার করছেন?
নীল

@ প্রসন্ন সর্বশেষ গুগল ক্রোমে কাজ করে। আপনি কি নিশ্চিত যে আপনি IE11 বা তার চেয়েও বেশি বয়সী, অপেরা বা এমন কিছু ব্যবহার করছেন না যা ES6 সমর্থন করে না?
ইসমাইল মিগুয়েল

আমি একটি পুরানো ভাল ক্রোম ( Version 48.0.2564.97) ব্যবহার করছি । আমি IE দিয়ে এটি চেষ্টা করব। আমার ক্রোম আপডেট করতে পারে না - অফিসের সুরক্ষা সংক্রান্ত সমস্যাগুলি
প্রসন্ন্না

5

সি, 67 65 61 বাইট

x;f(*v){printf("%d",(int)log10(x=-~printf(v))*-~(x%10>8)+x);}

Wandbox


1
ওহ, হ্যাঁ, আমি প্রিন্টফ্যাড করব ... যাইহোক, সংক্ষিপ্ততর সি সমাধানের বিষয়ে সম্মতি জানাতে: ডি +1
বিড়াল

4

লুয়া 5.2, 32 বাইট

a=arg[1]print(a..#a+#(''..#a+1))

যেখানে ভ্যারিয়েবল হ'ল ইনপুট স্ট্রিং।


3

পাইক, 8 বাইট ( পুরানো সংস্করণ )

.f+liq)+

ব্যাখ্যা:

.f    )  -  first where (i++)
  +      -    input + i
   l     -    len(^)
    iq   -   ^ == i
       + - input + ^

এখানে চেষ্টা করুন! (নতুন সংস্করণ, 9 বাইট)


এটি সর্বদা আমাকে বিভ্রান্ত করে তোলে যে প্রকৃত আউটপুটটি কীভাবে সমাধিস্থ করা হয়েছিল তা সতর্কতা বা অন্যান্য বার্তার মধ্যে রয়েছে :-)
লুইস মেন্ডো

2
আমার সত্যই কপির লিঙ্কে ওয়েব বাগটি ঠিক করা উচিত যা সতর্কতা স্যুইচটি স্বয়ংক্রিয়ভাবে অক্ষম করে
ব্লু


3

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

f s=[l|i<-[0..],l<-[s++show i],length l==i]!!0

ব্যবহারের উদাহরণ: f "aaaaaaaa"-> "aaaaaaaa9"

কেবল 0 দিয়ে শুরু করে সমস্ত সংখ্যা চেষ্টা করে দেখুন এবং প্রথমটি ফিট করে।


3

গণিত, 57 বাইট

#<>ToString[(a=Length@#)+(i=IntegerLength)[a+i@a]~Max~1]&

নামহীন ফাংশন ইনপুট হিসাবে অক্ষরের অ্যারে নেওয়া এবং একটি স্ট্রিং ফিরে returning এই সত্যটি ব্যবহার করে যে যদি ইনপুটটির aদৈর্ঘ্য হয় তবে ইনপুটটিতে aসংযুক্ত করার সংখ্যাটি কেবল সংখ্যার সংখ্যার চেয়ে বেশি সংখ্যার পরিবর্তে ( a+ দৈর্ঘ্যের a) aমধ্যে অঙ্কের সংখ্যা a। দুর্ভাগ্যক্রমে এটি খালি স্ট্রিং ইনপুটটির জন্য ~Max~1বিশেষ ক্ষেত্রে ছাড়া সঠিক উত্তর দেয় না ।


3

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

l<L$@:?rc.lL,

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

ব্যাখ্যা

মূলত সমস্যার বিবরণ। এটি Lইনপুটটির দৈর্ঘ্যের চেয়ে বড় প্রতিটি মান চেষ্টা করবে যতক্ষণ না এটি কোনও সন্ধান করে, যখন ইনপুটটির সাথে সংমিশ্রিত করা হয়, সেই কনটেন্টেশনটির দৈর্ঘ্য।

l<L              length(Input) < L
  L$@            Convert L to a string
     :?rc.       The Output is the concatenation of the Input with L as string
         .lL,    The length of the Output is L itself

3

ব্রেইনফাক, 258 বাইট

,>+<----------[++++++++++>+[>+<-],----------]<[<]>[.>]>>>++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]

লাইনফিড (এলএফ) দ্বারা ইনপুটটি অবশ্যই শেষ করতে হবে। শুধুমাত্র 256 (এলএফ সহ) এর চেয়ে কম দৈর্ঘ্যের ইনপুটগুলির জন্য কাজ করে।

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

ব্যাখ্যা

# read first char and add one to cell #1
# the cell after the input will contain the length
,>+<
# subtract 10 to check for LF
----------
# while the input is not 10 (LF)
[
# restore the input to its original value
++++++++++
# add one to the length
>+
# cut and paste the length to the next cell, then read the input
[>+<-],
# subtract 10 to check for LF
----------
]
# for input abc, the tape here would be: a b c *0* 4
# rewind to the beginning of the input
<[<]>
# print the input string
[.>]>
# convert the length to ascii chars and output them
>>++++++++++<<[->+>-[>+>>]>[+[-<+>]>+>>]<<<<<<]>>[-]>>>++++++++++<[->-[>+>>]>[+[-
<+>]>+>>]<<<<<]>[-]>>[>++++++[-<++++++++>]<.<<+>+>[-]]<[<[->-<]++++++[->++++++++
<]>.[-]]<<++++++[-<++++++++>]<.[-]<<[-<+>]

দ্রষ্টব্য: আমি দৈর্ঘ্যটিকে এসকিআই আউটপুটে রূপান্তর করতে এই এসও উত্তর থেকে কোড ব্যবহার করেছি ; আমি আশা করি এটি পিপিসি-তে গ্রহণযোগ্য। এটি আমার প্রথম কোডগলফ জমা, এবং আমার দ্বিতীয় বিএফ প্রোগ্রাম। মতামত স্বাগত জানানো হয়।


1
এটি তখন বৈধ নয়, এটি অবশ্যই সমস্ত পরীক্ষার কেস পাস করতে হবে
বিড়াল

সুতরাং 999 পর্যন্ত দৈর্ঘ্য সমর্থন করা যথেষ্ট হবে?
ফোরেন্ট ভিনটিয়ার

অনুমানটি বলেছে "স্বেচ্ছাসেবী দৈর্ঘ্য" যার অর্থ "আপনার ভাষা যতক্ষণ পরিচালনা করতে সক্ষম বা স্মৃতিশক্তি ছাড়াই সক্ষম" "
বিড়াল

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

আপনাকে ডেনিস ধন্যবাদ, আমি সেই অনুযায়ী আমার
জমাটি


2

রুবি, 62 58 56 বাইট

s=gets.chomp;p s+"#{(s+"#{(s+"#{s.size}").size}").size}"

পরীক্ষিত irb

এটি করার আরও ভাল উপায় সম্ভবত আছে তবে আমি এই প্রথম জিনিসটি নিয়ে এসেছি। গল্ফিংয়ে যে কোনও সহায়তা প্রশংসিত হবে।

সম্পাদনা: আমি বুঝতে পেরেছি যে আমার প্রথম বন্ধনীর ব্যবহার অত্যধিক।


আপনি কেবল lএক জায়গায় ব্যবহার করুন । আপনি যদি ইনলাইন করেন তবে আপনি 3 বাইট সংরক্ষণ করতে পারবেন l=;। তবে আপনার সমাধানটি এখনও আমার চেয়ে দীর্ঘতর হবে;)
ডিপ্রেশনডানিয়েল

2

পার্ল 6 ,  46  35 বাইট

{$_~(.chars,*.chars+.chars...{$^a==$^b})[*-1]}
{$_~(.chars,*.chars+.chars...*)[2]}

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

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

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

  $_  # the input

  ~   # concatenated with

  (  # sequence generator

    .chars,  # the number of chars in 「$_」 (seed the generator)


    *\      # Whatever lambda input (represents previous value)
    .chars  # number of chars in that
    +       # plus
    .chars  # the number of chars in 「$_」


    ...     # keep doing that until

    *       # indefinitely

  )[2] # get the value at index 2 of the sequence
}


2

পাইথন, 39 বাইট

lambda a:eval('a+str(len('*3+'a))))))')

দীর্ঘতর ফর্ম:

lambda a:a+str(len(a+str(len(a+str(len(a))))))

স্বতঃস্ফূর্তভাবে পাইথন 2 (41 বাইট):

x=a=input();exec"x=a+`len(x)`;"*3;print x

xইনপুট স্ট্রিং হিসাবে শুরু করে a, x -> a + str(len(x))তিনবার রূপান্তর প্রয়োগ করে । আমি এখনও স্পষ্ট নই যে কেন সবসময় নির্দিষ্ট পয়েন্টে পৌঁছানোর জন্য তিনটি অ্যাপ্লিকেশন প্রয়োজন।


3 বার কেন? প্রথমে পাঠ্যের দৈর্ঘ্য সংযোজন, দ্বিতীয় সংখ্যার অন্তর্ভুক্ত করার জন্য দৈর্ঘ্য সামঞ্জস্য করতে দ্বিতীয়, অ্যাডজাস্টমেন্টে অতিরিক্ত অঙ্ক যুক্ত হলে তৃতীয়।
টম ভিনার 21


2

বাশ, 47 বাইট

 for((n=-1;${#s} != $n;));{ s=$1$[++n];};echo $s

এটি একটি স্ক্রিপ্ট হিসাবে সংরক্ষণ করুন এবং একটি যুক্তি হিসাবে ইনপুট স্ট্রিং পাস করুন।

এটি একটি নিষ্ঠুর শক্তি প্রয়োগ: আপনি যেটি কাজ করে এমন কোনওটি না পাওয়া পর্যন্ত প্রতিটি সংখ্যা ঘুরে দেখার চেষ্টা করুন।


2

> <> (মাছ) 35 বাইট

i:1+?!v:o
ln;v9l<  >
*9+>:&)?!^1l&a

স্ট্যাকের উপর ইনপুট নেয়, 9,99,999 মানগুলির তুলনায় দৈর্ঘ্যটি পরীক্ষা করে ... এবং যদি দৈর্ঘ্য স্ট্যাকের দৈর্ঘ্যে 1 যোগ করার চেয়ে বড় হয়।



1

সি #, 77 বাইট

n=>{int a=n.Length;int c=(a+1).ToString().Length-1;return(n+(n.Length+1+c));}

1
আমি এখন না C # এর না, কিন্তু আপনি ব্যবহার করতে পারে return(n+(a+1+c))যেমন a=n.Length?
লাইকনি

এবং ফিরে এবং -1থেকে ড্রপ ? int c=(a+1).ToString().Length-1+1
লাইকনি

1
অপেক্ষা করুন, এটি কি বৃহত্তর পরীক্ষার কেসগুলি সঠিকভাবে পরিচালনা করে? দেখে মনে হচ্ছে এটি 99 টি পরীক্ষার ক্ষেত্রে aa...a100পরিবর্তে ফিরে আসে । aa...a101a
লাইকনি

1

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

`G@Vhtn@>]&

এটি অনলাইন চেষ্টা করুন! বা সমস্ত পরীক্ষার কেস যাচাই করুন

`      % Do...while
  G    %   Push input
  @    %   Push iteration index (1-based)
  V    %   Convert number to string
  h    %   Concatenate horizontally
  t    %   Duplicate
  n    %   Get length of concatenated string
  @    %   Push iteration index
  >    %   True if length of concatenated string exceeds iteration index
]      % End. Run next iteration if top of stack is true; else exit loop
&      % Specifiy that next function (implicit display) takes only one input
       % Implicitly display top of the stack. This is the concatenated string
       % that had a length equal to the iteration index

1

রুবি, ৫১ বাইট (প্রোগ্রাম)

রুবি, 49 বাইট (ফাংশন)

প্রোগ্রাম (সর্বশেষ নিউলাইনটি প্রয়োজনীয় নয় এবং এভাবে অনস্ক্রিন করা হয়নি):

x=gets.strip
i=0
i+=1 until(y=x+i.to_s).size==i
p y

ফাংশন (শেষ নিউলাইনটি স্কোর হয়েছে):

def f x
i=0
i+=1 until(y=x+i.to_s).size==i
y
end

1

ফ্যাক্টর, 55 বাইট

পার্কে হাঁটা! আমি প্রশ্নটি পড়ার সাথে সাথে এটি আমার মাথায় নিয়ে এসেছি।

[ dup length dup log10 ⌈ + >integer 10 >base append ]

1

ক্লোজার, 72 বাইট

(defn f([s](f s 1))([s n](if(=(count(str s n))n)(str s n)(f s(inc n)))))

1

আর, 49 বাইট

cat(a<-scan(,""),(t<-nchar(a))+nchar(t+1),sep='')

খুব সোজা সমাধান।


এটি আমার জন্য কাজ করে না: Read 1 item Error in nchar(x + 1) : object 'x' not found। আমি যে (t<-nchar(a))+...কাজ করেছি।
জাদাদ

@ জারকো ডাবডেলডাম: আমার খারাপ!
ফ্রেডেরিক

1

ওল্ফ্রাম, 56

#<>ToString@Nest[l+IntegerLength@#&,l=StringLength@#,2]&

প্রদত্ত l = StringLength[x]এটা appends l + IntegerLength[l + IntegerLength[l]]করতে x



1

ফোর্স ল্যাং, 83 বাইট

set s io.readln()
label 1
set n 1+n
set t s+n
if t.len=n
 io.write t
 exit()
goto 1
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.