সেখানে, আমি এটি ঠিক করেছি (টেপ সহ)


41

চ্যালেঞ্জ:

কেবলমাত্র উপরের এবং / বা ছোট অক্ষর (আপনি যাকে পছন্দ করুন) ধারণকারী একটি স্ট্রিং দেওয়া হয়েছে, tapeএটি ঠিক করার জন্য অনুভূমিকভাবে রাখুন। আমরা বর্ণমালায় দুটি সংলগ্ন বর্ণের পার্থক্য পরীক্ষা করে (মোড়কের চারপাশে উপেক্ষা করে কেবল এগিয়ে যাচ্ছি), এবং প্রয়োজনীয় স্থান TAPE/ tapeপ্রয়োজনীয় স্থান পূরণ করে এটি করি।


উদাহরণ:

ইনপুট: abcmnnnopstzra
আউটপুট:abcTAPETAPETmnnnopTAstTAPETzra

কেন?

  • এর মধ্যে cএবং mহওয়া উচিত defghijkl(দৈর্ঘ্য 9), সুতরাং আমরা এটি পূরণ করব TAPETAPET;
  • এর মধ্যে pএবং sহওয়া উচিত qr(দৈর্ঘ্য 2), সুতরাং আমরা এটি পূরণ করব TA;
  • এর মধ্যে tএবং zহওয়া উচিত uvwxy(দৈর্ঘ্য 5), সুতরাং আমরা এটি পূরণ করব TAPET

চ্যালেঞ্জ বিধি:

  • পার্থক্যটি কেবলমাত্র সামনের দিকে প্রযোজ্য তাই কোনও টেপ এর মধ্যে নেই zra
  • একই সংলগ্ন বর্ণগুলির মতো একাধিক পাওয়া সম্ভব nnn
  • আপনাকে কোনও যুক্তিসঙ্গত বিন্যাসে ইনপুট নেওয়ার অনুমতি দেওয়া হয়েছে। একক স্ট্রিং, স্ট্রিং-অ্যারে / তালিকা, অক্ষর-অ্যারে / তালিকা ইত্যাদি হতে পারে আউটপুটে একই নমনীয়তা থাকে।
  • আপনি যেভাবে চান ছোট হাতের এবং / বা বড় হাতের অক্ষর ব্যবহারের অনুমতি দেওয়া হয়। এটি ইনপুট, আউটপুট এবং উভয় ক্ষেত্রেই প্রযোজ্য TAPE
  • এটি সম্ভব কোনও TAPEপ্রয়োজন নেই, সেক্ষেত্রে ইনপুট অপরিবর্তিত থাকে।

সাধারণ নিয়ম:

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

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

Input:  "abcmnnnopstzra"
Output: "abcTAPETAPETmnnnopTAstTAPETzra"

Input:  "aza"
Output: "aTAPETAPETAPETAPETAPETAPEza"

Input:  "ghijk"
Output: "ghijk"

Input:  "aabbddeeffiiacek"
Output: "aabbTddeeffTAiiaTcTeTAPETk"

Input:  "zyxxccba"
Output: "zyxxccba"

Input:  "abccxxyz"
Output: "abccTAPETAPETAPETAPETAPExxyz"

Input:  "abtapegh"
Output: "abTAPETAPETAPETAPETtaTAPETAPETAPETApeTgh"

Input:  "tape"
Output: "taTAPETAPETAPETApe"

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

@ জোনাথন অ্যালান হেহে, আপনি সত্যই বলেছেন যে এটি 'টেপ' এর অপচয় waste হুম, এমন কিছু হতে পারে যা আমি চ্যালেঞ্জের অংশ 2 তে ব্যবহার করতে পারি । ;)
কেভিন ক্রুইজসেন

যদি স্ট্রিংটি টেপ দিয়ে আসে - উদাহরণস্বরূপ, AbTAPEgh?
মনঃশেকাটজ-পুনরায় ইনস্টল করুন মনিকা

@ মানাসেখ্যাটজ এটি অন্য প্রতিটি চরিত্র হিসাবে ব্যাখ্যা করা হবে, সুতরাং ab[TAPETAPETAPETAPET]TA[TAPETAPETAPETA]PE[T]gh( []এটিকে আরও পাঠযোগ্য করে তোলার জন্য যোগ করা হয়েছে)।
কেভিন ক্রুইজসেন

1
@ কেভিন ক্রুজসেন যা সামঞ্জস্যপূর্ণ, যদিও ("নষ্ট টেপ" প্রশ্নের সাথে) 100% যৌক্তিক নয়। সুতরাং সম্ভবত আরও একটি পরীক্ষার কেস: ইনপুট টেপ, আউটপুট TATAPETAPETAPETAPE (আমি মনে করি আমি এটি অধিকার পেয়েছি ...)
মনসাহেকাটজ-রিইনস্টেট মনিকা

উত্তর:


8

05 এ বি 1 ই , 14 12 বাইট

'¡ÉIÇ¥<∍‚ζJJ

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

ব্যাখ্যা

'¡É            # push the string "tape"
   I           # push input
    Ç          # convert to a list of character codes
     ¥         # calculate deltas
      <        # decrement
       ∍       # extend the string "tape" to each of these sizes
               # results in an empty string for sizes smaller than zero
        ‚ζ     # zip with input (results in a list of pairs)
          JJ   # join to a list of strings and then to a string

4
আপনি একটি ব্যাখ্যা যোগ করতে আপত্তি হবে? আমি মনে করি এটি জেলি উত্তরের সাথে মোটামুটি সমান, তবে আমি কৌতূহল করছি যে ফলাফলটি পেতে কোন ক্রিয়াকলাপের জন্য ব্যবহৃত হয়। আমার চ্যালেঞ্জগুলির একটি সাধারণ নিয়ম: " এছাড়াও, দয়া করে প্রয়োজনে একটি ব্যাখ্যা যুক্ত করুন " ", জেলি, 05 এবি 1 ই, চারকোল, এপিএল ইত্যাদির মতো ভাষার সাথে এটি ধরে নেওয়া যায় যে বেশিরভাগ লোকেরা এটি পড়তে পারে না এবং ব্যাখ্যা বাধ্যতামূলক is । :)
কেভিন ক্রুইজসেন

@ কেভিন ক্রুজসেন: অবশ্যই। আমি আমার 05AB1E উত্তরগুলিতে সাধারণত একটি ব্যাখ্যা যুক্ত করি, তবে আমি যখন পোস্ট করি তখন আমার সবসময় সময় থাকে না।
এমিগনা

1
@ কেভিন ক্রুজসেন যে কোনও 05AB1E টিআইও লিঙ্কের যুক্তিতে আপনি -dব্যাখ্যাটির পরিবর্তে যা চলছে তার কাঁচা স্ট্যাক অপারেশন-বাই-অপারেশন ডাম্প যুক্ত করতে যোগ করতে পারেন , তবে আমি সেগুলি পোস্ট করার চেষ্টাও করছি এটি বিশেষত কিছুটির পক্ষে সোজা নয় আমার LOL এর।
ম্যাজিক অক্টোপাস আরন

10

জেলি , 13 বাইট

OI’“¡ʂƁ»ṁ$€ż@

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

ব্যাখ্যা

ওআই '' ¡ʂƁ »ṁ $ € ż @ - সম্পূর্ণ প্রোগ্রাম। কমান্ড লাইন আর্গুমেন্ট হিসাবে একটি স্ট্রিং নিন।
ও - সাধারণ প্রতিটি চরিত্রের ASCII মান পান।
 আমি '- ইনক্রিমেন্ট (ডেল্টাস) পান এবং প্রত্যেকের কাছ থেকে 1 টি বিয়োগ করুন।
          € - প্রতিটি পার্থক্যের জন্য আমি ...
   "¡ꟅƁ» ṁ $ - এই মানগুলি অনুযায়ী সংকুচিত স্ট্রিং "টেপ" oldালুন।
                মূলত "টেপ" প্রয়োজনীয় দৈর্ঘ্যে প্রসারিত / সংক্ষিপ্ত করে।
           ż @ - ইনপুট সহ ইন্টারলিভ।


@ জোনাথান অ্যালান এটি আমার কাছে অবৈধ বলে মনে হচ্ছে। এটি abctapetapetmnnnopapstetapezraপরিবর্তে আউটপুট abctapetapetmnnnoptasttapetzra
মিঃ এক্সকোডার

7
ওহ, হ্যাঁ এটি অবৈধ - আমি বুঝতে পারি নি যে আমরা রোল থেকে টেপ নষ্ট করব!
জোনাথন অ্যালান

7

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

f(x:y:r)=x:take(length[x..y]-2)(cycle"TAPE")++f(y:r)
f s=s

এটি অনলাইন চেষ্টা করুন! ফাংশনটি fস্ট্রিংয়ের উপরে পুনরাবৃত্তি করে এবং একটানা অক্ষর xএবং এর দিকে তাকায় ycycle"TAPE"অসীম স্ট্রিং দেয় "TAPETAPETAPE..."। অন্তর্ভুক্তিতে বর্ণগুলির [x..y]পরিসীমা xপেতে পারে y, সুতরাং আমাদের দৈর্ঘ্য থেকে দুটি বিয়োগ করতে হবে। xবর্ণমালায় পরে yবা উভয়ই একই চরিত্রের ক্ষেত্রে দেখা যায় , বিয়োগের পরে আমরা একটি নেতিবাচক সংখ্যা পাই, তবে ভাগ্যক্রমে সেগুলিও takeগ্রহণ করে এবং কিছুই নেয় না।


6

পার্ল 5 , -F46 বাইট

#/usr/bin/perl -F
use 5.10.0;
say map{((P,E,T,A)x7)[2..-$^H+($^H=ord)],$_}@F

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


2
এর P,E,T,Aপরিবর্তে কেন জিজ্ঞাসা করতে চলেছিল T,A,P,Eতবে আমি এখন লক্ষ্য করেছি আপনি দুটি বাইট সংরক্ষণের ((P,E,T,A)x7)[2..-$^H+($^H=ord)পরিবর্তে আপনি ব্যবহার করেছেন ((T,A,P,E)x7)[0..-$^H+($^H=ord)-2। চমৎকার উত্তর!
কেভিন ক্রুইজসেন

সত্যিই খুব সুন্দর! আমার নাইভ পদ্ধতির চেয়ে অনেক ভাল! আপনি আক্ষরিক ^H( \x08) যদিও ব্যবহার করে 2 বাইট সংরক্ষণ করতে পারেন !
ডম হেস্টিংস

@ ডোমহাস্টিংস ইতিমধ্যে বেশ কয়েকটি পার্ল সংস্করণের জন্য অক্ষরীয় নিয়ন্ত্রণের অক্ষর অক্ষর অক্ষম করা হয়েছে। আমি পুরানো পার্ল সংস্করণে স্কোর দাবি করতে পারি (যেমন আমি সম্প্রতি করেছি do$0) তবে এটি এখানে মাত্র 2 বাইট, তাই আমি বিরক্ত করিনি
টন হসপেল

আহ, অবশ্যই! এটি কারণ ম্যাকোসের ডিফল্টরূপে 5.18.2 রয়েছে তাই এটির সংস্করণটি আমি সবচেয়ে বেশি পরিচিত!
ডম হেস্টিংস




4

পাইথন 3 , 98 বাইট

lambda a:"".join(sum(zip(a,[("TAPE"*9)[:y>x and~ord(x)+ord(y)]for x,y in zip(a,a[1:])]),()))+a[-1]

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

-1 বাইট ধন্যবাদ অসন তুহিদকে


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

ঠিক আছে, একটি -1 বাইট থাকুন
Asone Tuhid 5'18

@ অ্যাসোনটুইহিদ ওহ ঠিক আছে, ধন্যবাদ
হাইপারনিউটারিনো

4

স্কালা , 66 বাইট

(s:String)=>s./:("z"){(o,c)=>o+("TAPE"*6).take(c-o.last-1)+c}.tail

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

ব্যাখ্যা

/: foldLeft over the string
("z") starting with a non-empty string to we don't have to handle the first iteration in a special way
"TAPE"*6 generate a long enough string of TAPETAPETA...
.take(c-o.last-1) take the difference between this character and the previous (now the last char in the output so far) characters from the TAPETAPETA... string. o.last will always be safe because we start with a non-empty string.
o+...+c append it to the output so far ... and add this character to the end
.tail get rid of the leading z we added

পিপিসিজিতে স্বাগতম, এবং প্রথম প্রথম উত্তর! আমার কাছ থেকে +1
কেভিন ক্রুইজসেন

4

পিএইচপি , 85 বাইট

$s=str_split($argv[1]);foreach($s as$l)echo str_pad($l,ord(next($s))-ord($l),'TAPE');

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

ব্যাখ্যা

$s = str_split($argv[1]);   // convert the parameter string to an array
foreach($s as $l)           // loop the array
echo str_pad(               // print
  $l,                       // the letter
  ord(next($s)) - ord($l),  // calculate the distance to the next letter using ASCII values
  'TAPE'                    // padding string
);                          // profit!

2
সাইটে স্বাগতম! :)
DJMcMayhem

3

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

4 বাইট রিক হিচককের জন্য ধন্যবাদ সংরক্ষণ করেছে

z=(a=>[...a].reduce((x,y)=>x+[...Array((f=y[c='charCodeAt']()-x.slice(-1)[c]())>1?f-1:0)].reduce((e,r,t)=>e+"TAPE"[t%4],"")+y))

Unrolled

z- র = একটি => [... একটি] .reduce (
  (X, Y) =>
    এক্স + [... অ্যারে (
      (f = y.charCodeAt () - (x.slice (-1) .CharCodeAt ())) 1? (f-1): 0
    )]। কমাতে (
      (ঙ, R, T) => 
        e + "ট্যাপ" [টি% 4], "") + y
);

এখানে আমার সমস্যা হ'ল জাভাস্ক্রিপ্টের অক্ষর a এবং b এর মধ্যকার দূরত্ব পাওয়ার কোনও পরিষ্কার উপায় ছিল না।

<script>
  z=(a=>[...a].reduce((x,y)=>x+[...Array((f=y[c='charCodeAt']()-x.slice(-1)[c]())>1?f-1:0)].reduce((e,r,t)=>e+"TAPE"[t%4],"")+y))
</script>

<main>
  <input id="input-box" type="text">
  <pre id=output>output</pre>
</main>

<script>
  inputBox = document.getElementById("input-box");
  inputBox.addEventListener("keyup", function(e){
    output.innerText = z(inputBox.value);
  });
</script>


1
খুশী হলাম। পেছনের আধা-কোলনটি সরিয়ে আপনি একটি বাইট সংরক্ষণ করতে পারেন এবং charCodeAtভেরিয়েবলকে বরাদ্দ দিয়ে আরও কয়েকটি বাইট সংরক্ষণ করতে পারেন: z=(a=>[...a].reduce((x,y)=>x+[...Array((f=y[c='charCodeAt']()-x.slice(-1)[c]())>1?f-1:0)].reduce((e,r,t)=>e+"TAPE"[t%4],"")+y))
রিক হিচকক

ধন্যবাদ! এটি কীভাবে কাজ করে আমি একেবারে বিরক্ত, তবে এটি জেনে রাখা ভাল যে এটি ভবিষ্যতের জন্য কী করে।
ঝাল



2

পিপ , 29 বাইট

O@a{"TAPE"@<MX[0v-$-Ag]}.BMPa

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয় (লোয়ার- বা বড় হাতের অক্ষর নয়)। এটি অনলাইন চেষ্টা করুন!

ব্যাখ্যা

O@a{"TAPE"@<MX[0v-$-Ag]}.BMPa
                               a is 1st cmdline arg; v is -1 (implicit)
O                              Output without newline
 @a                            the first character of a
                          MPa  Map this function to pairs of successive characters of a:
                    Ag          Get the ASCII codes of the two characters
                  $-            Fold on subtraction (i.e. asc(first)-asc(second))
                v-              -1 minus the above (i.e. asc(second)-asc(first)-1)
              [0      ]         A list containing 0 and the above
            MX                  Max of the list
          @<                    The first ^ characters (with cyclic indexing)
    "TAPE"                      of this string
   {                   }.B      Concatenate the second character

2

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

f=([s,...S],t=S[0])=>t?s.padEnd((t>s)*(parseInt(s+t,36)-370)%37,'TAPE')+f(S):s

দুটি অক্ষরের মধ্যকার দূরত্বটি তাদের সংক্ষিপ্তকরণটিকে বেস 36 এ রূপান্তর করে 370, মডিউল 37 বিয়োগ করে নির্ধারণ করা যেতে পারে।

উদাহরণস্বরূপ (parseInt('cy',36)-370)%37 == 22,।

এরপরে আমরা padEndশূন্যস্থান পূরণ করতে এবং লুপটি পরিচালনা করতে পুনরাবৃত্তি করতে পারি।

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


2

K4 , 48 বাইট

সমাধান:

{,/_[w;x],',[1_d w:&0<d:-1+-':"j"$x;0]#\:"TAPE"}

উদাহরণ:

q)k){,/_[w;x],',[1_d w:&0<d:-1+-':"j"$x;0]#\:"TAPE"}"abcmnnnopstzra"
"abcTAPETAPETmnnnopTAstTAPETzra"
q)k){,/_[w;x],',[1_d w:&0<d:-1+-':"j"$x;0]#\:"TAPE"}"aza"
"aTAPETAPETAPETAPETAPETAPEza"
q)k){,/_[w;x],',[1_d w:&0<d:-1+-':"j"$x;0]#\:"TAPE"}"zyxxccba"
"zyxxccba"
q)k){,/_[w;x],',[1_d w:&0<d:-1+-':"j"$x;0]#\:"TAPE"}"aabbddeeffiiacek"
"aabbTddeeffTAiiaTcTeTAPETk"

ব্যাখ্যা:

মোটামুটি সহজ সমাধান, তবে একটি উচ্চ বাইট গণনা ... ডেল্টাসগুলি সন্ধান করুন, স্ট্রিং থেকে নেওয়া "TAPE", যেখানে ডেল্টাস> 1 রয়েছে সেখানে মূল স্ট্রিং কাটে যোগ দিন।

{,/_[w;x],',[1_d w:&0<d:-1+-':"j"$x;0]#\:"TAPE"} / the solution
{                                              } / lambda
                                         "TAPE"  / the string TAPE
                                      #\:        / take each-left
           ,[                      ; ]           / join (,)
                                   0             / zero (ie append zero)           
                              "j"$x              / cast input to int
                           -':                   / deltas
                        -1+                      / subtract 1
                      d:                         / assign to d
                    0<                           / delta greater than 0?
                   &                             / indices where true
                 w:                              / assign to w
               d                                 / index into deltas at w
             1_                                  / drop first
         ,'                                      / join each-both
   _[w;x]                                        / cut input x at indices w
 ,/                                              / flatten

2

এক্সেল ভিবিএ, 106 বাইট

একটি বেনামে ভিবিই তাত্ক্ষণিক উইন্ডো ফাংশন যা সেলের মাধ্যমে বড় হাতের স্ট্রিং হিসাবে ইনপুট নেয় A1এবং ভিবিই তাত্ক্ষণিক উইন্ডোতে আউটপুট দেয়।

a=90:For i=1To[Len(A1)]:c=Mid([A1],i,1):b=Asc(c):For j=2To b-a:?Mid("peta",j Mod 4+1,1);:Next:?c;:a=b:Next

2

রুবি , 59 53 বাইট

->s{s.reduce{|x,y|x+y.rjust(y.ord-x[-1].ord,"TAPE")}}

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

এটি আসলে বেশ সহজবোধ্য - আমরা আমাদের স্ট্রিংটিকে চার্জের একটি অ্যারেতে বিভক্ত করার হিসাবে ইনপুট নিই (এটি নির্দেশ করার জন্য অসোন তুহিদকে ধন্যবাদ জানাই) এবং হ্রাস অপারেশন প্রয়োগ করি, যেখানে আমরা ফিলার স্ট্রিং হিসাবে "টেপ" ব্যবহার করে প্রয়োজনীয় প্রতিটি দৈর্ঘ্যকে যথাযথভাবে প্রমাণ করি।


প্রশ্নটি বলেছে আপনি অক্ষরের অ্যারে হিসাবে ইনপুট নিতে পারেন। ( 53 বাইট )
অসোন তুহিদ

2

কে (ওকে) , 33 বাইট

{,/((0|-1+0,1_-':x)#\:"TAPE"),'x}

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

{ } যুক্তি সহ বেনামে ফাংশন x

-':x প্রতিটি পূর্বে বিয়োগ করুন (প্রথম আইটেমের আগে একটি কাল্পনিক 0 ব্যবহার করুন)

1_ প্রথম আইটেম ড্রপ

0, একটি 0 প্রিপেন্ড করুন

-1+ যোগ -1

0| সর্বাধিক (0, ...)

(... বাম দিকের তালিকা থেকে প্রতিটি আইটেমের )#\:"TAPE"স্ট্রিংটি পুনরায় আকার দিন"TAPE"

(... প্রতিটি পুনরায় আকারযুক্ত স্ট্রিংয়ের ),'xসাথে সংশ্লিষ্ট চরিত্রটি যুক্ত করুনx

,/ সব একত্রিত করা


2

রুবি , 78 77 64 62 বাইট

-1 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ

f=->s,*t{t[0]?s+('TAPE'*6)[0,[0,t[0].ord+~s.ord].max]+f[*t]:s}

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


আপনি এতে বাইট পরিবর্তন ord-l[-1].ord-1করে সংরক্ষণ করতে পারেন ord+~l[-1].ord। ভাল উত্তর, যদিও। আমার কাছ থেকে +1
কেভিন ক্রুইজসেন 15

2

জাভা (জেডিকে) , 91 বাইট

s->{var p='z';for(var c:s)System.out.print("ETAP".repeat(9).substring(1,c>p?c-p:1)+(p=c));}

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

ব্যাখ্যা

s->{                       // char[]-accepting lambda consumer, printing a String
 var p='z';                //  store the previous character
 for(var c:s){             //  for each character of the string
  System.out.print(        //   print...
   "ETAP".repeat(9)        //    "ETAP" repeated 9 times (to go above 26 chars)
    .substring(1,          //     of which, we substring c-p -1 characters
     c>p?c-p:1             //
    )                      //
   +(p=c)                  //    and append c, while also storing the previous character
  );

ক্রেডিট

  • -2 বাইট ধন্যবাদ আরএম
  • জাভা 10+ তে আপগ্রেড করে এবং প্রকারগুলিতে স্যুইচিং করে সিলিংক্যাটকে -4 বাইট ধন্যবাদvar
  • -3 বাইট কেভিন ক্রুইজসেনকে ধন্যবাদ , আমার (পূর্ববর্তী) বিকল্প সংস্করণটির ফলাফলটি ফেরত না দিয়ে মুদ্রণ করে

int p=123একটি চরিত্র বাঁচাতে হবে। যতক্ষণ না pএটি প্রথম অক্ষরের চেয়ে বড় বা সমান ততক্ষণ প্রথম পুনরাবৃত্তিতে যা আছে তা বিবেচ্য নয়। প্রথম অক্ষরটির সবচেয়ে বড় মানটি 'z'== ASCII 122, সুতরাং 123 যথেষ্ট ভাল। এছাড়াও, যদি আপনি বড় বড় অক্ষর ব্যবহার করেন তবে আপনি 123 এর পরিবর্তে 91 ব্যবহার করতে পারেন, অন্য একটি অক্ষর সংরক্ষণ করেছিলেন।
আরএম

@ আরএম ধন্যবাদ, সত্যই এটি কার্যকর!
অলিভিয়ার গ্রাগোয়ার


1

সি # (.নেট কোর) , 122 111 বাইট

11 কেট ক্রুইজসেনকে ধন্যবাদ 11 বাইট সংরক্ষণ করা হয়েছে

s=>{var r=""+s[0];for(int i=1,e,d;i<s.Length;r+=s[i++])for(e=d=s[i]-s[i-1];d-->1;)r+="ETAP"[(e-d)%4];return r;}

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

ব্যাখ্যা:

s => 
{
    var r = "" + s[0];                  //Declare string for the result and initialize with the first character from the input.
    for (                               //Loop over the input,
        int i = 1, e, d;                //starting with the second character, also declare helper variables.
        i < s.Length;                   //Loop until the end of the input is reached.
        r += s[i++])                    //Add the current character to the result and increase the counter.
        for (                           //Loop for adding the TAPE.
            e = d = s[i] - s[i - 1];    //Calculate the differnce between the current and the previous character.
            d-- > 1;)                   //Loop until the difference is 1.
            r += "ETAP"[(e - d) % 4];   //Add a character from the TAPE to the result.
    return r;                           //Return the result.
}

1
ভাল উত্তর, আমার কাছ থেকে +1। আপনি পরিবর্তন করে 4 বাইট সংরক্ষণ করতে পারবেন whileএকটি থেকে forএবং বন্ধনী সরানোর: for(int i=1,e,d;i<s.Length;r+=s[i++])for(e=d=s[i]-s[i-1];d-->1;r+=t[(e-d)%4]);। :) ওহ, এবং যেহেতু আপনি ব্যবহার করছেন t="ETAP"শুধুমাত্র একবার, আপনি এটি সরাসরি ব্যবহার করতে পারেন, এবং পরিবর্তন stringকরার জন্য varআরো 7 বাইট সংরক্ষণ করতে: s=>{var r=""+s[0];for(int i=1,e,d;i<s.Length;r+=s[i++])for(e=d=s[i]-s[i-1];d-->1;r+="ETAP"[(e-d)%4]);return r;}
কেভিন ক্রুইজসেন 13

@ কেভিন ক্রুজসেন: ধন্যবাদ, আমি লুপের জন্য স্টাফটি সরানোর মাধ্যমে বন্ধনীগুলি থেকে মুক্তি পাওয়ার কথা ভাবিনি। এছাড়াও যদি আমি "ETAP" সরাসরি ব্যবহার করতে পারি যে হারিয়ে যাওয়ার জন্য বোকা বোধ করে।
রাজনগুল

আপনার উত্তরটি এখনও দুর্দান্ত, তাই এটি নিয়ে চিন্তা করবেন না। :) আমি নিজের প্রতি উত্তর পোস্ট করার সময় প্রায় প্রতিটি সময়ই গল্ফ-টিপস পেয়ে যাই .. এবং কোনও বিদ্যমান উত্তর শুরু থেকে পুরোপুরি গল্ফ হওয়ার চেয়ে আরও বেশি গল্ফ করা আরও সহজ। দ্রষ্টব্য: আপনি যদি ইতিমধ্যেই তাদের দেখা হতে পারে, কিন্তু টিপস C # কোড-golfing জন্য এবং <সমস্ত ভাষা> এ golfing জন্য টিপস আপনি এখনো আছে মাধ্যমে পড়তে আকর্ষণীয় হতে পারে।
কেভিন ক্রুজসসেন


1

পাইথন 3, 90 বাইট

p,o=' ',''
for t in input():y=(ord(t)-ord(p)-1)*(p!=' ');o+=('TAPE'*y)[0:y]+t;p=t
print(o)

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


হাই, আমি থেকে আপনার শিরোনাম ঠিক করেছি **title**করতে #title। এছাড়াও, আপনি কি টেস্ট কোডের সাথে একটি ট্রাইআটঅনলাইন-লিঙ্ক যুক্ত করতে আপত্তি করবেন ?
কেভিন ক্রুইজসেন

1

ক্লোজার, 139 119 বাইট

#(reduce-kv(fn[r x c](let[a(cycle "TAPE")i int d(-(i(nth(cycle %)(inc x)))(i c))](str r(if(> d 1)(apply str c(take(dec d)a))c))))""(vec %))

অজ্ঞাতনামা ফাংশন যা স্ট্রিং নেয় এবং টেপযুক্তটিকে ফেরত দেয়। সর্বদা হিসাবে, Clojure সব খুব ভাল পারফরম্যান্স বলে মনে হচ্ছে না। আমি যা সত্যিই কাজ করতে পারি না তা হ'ল সংক্ষিপ্ত উপায়ে পরবর্তী চরটি আনা। শেষ চরটিতে আমি একটি OutOfBoundsExceptionকারণ পেয়ে যাব । সুতরাং আমি cycleএটি একটি চারপাশে রাখি । আরও একটি মার্জিত সমাধান হতে পারে।

Ungolfed

#(reduce-kv
  (fn [r x c]
    (let [a (cycle "TAPE")
          i int
          d (-
             (i (nth (cycle %) (inc x)))
             (i c))]
      (str r
           (if (> d 1)
             (apply str c (take (dec d) a))
             c))))
  ""
  (vec %))

হালনাগাদ

কয়েকটা বাইট বন্ধ করে দেওয়ার ব্যবস্থা করা। ifপার্থক্য হ্রাস করে pesky বিবৃতি থেকে মুক্তি পেয়েছি । takeসংখ্যাটি 0 বা তার চেয়ে কম হলে একটি খালি তালিকা তৈরি করে যার ফলশ্রুতিতে একটি খালি স্ট্রিং আসে।

#(reduce-kv(fn[r x c](let[d(-(int(nth(cycle %)(inc x)))(int c)1)](str r c(apply str(take d(cycle "TAPE"))))))""(vec %))

Ungolfed

#(reduce-kv
  (fn [r x c]
    (let [d (-
             (int (nth (cycle %) (inc x)))
             (int c)
             1)]
      (str
       r
       c
       (apply
        str
        (take
         d
         (cycle "TAPE"))))))
  ""
  (vec %))

1

এপিএল (ডায়ালগ ক্লাসিক) , 30 বাইট

{∊⍵,¨⍨⍴∘'TAPE'¨0,0⌈-1+2-/⎕a⍳⍵}

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

{ } যুক্তি সহ বেনামে ফাংশন

⎕a⍳⍵ বর্ণমালায় এর অক্ষরের সূচকগুলি সন্ধান করুন

2-/ যুগলতর পার্থক্য (পরের মাইনাস পরবর্তী)

1+ যোগ করুন 1

- অস্বীকার করা

0⌈ সর্বাধিক (0, ...)

0, একটি 0 প্রিপেন্ড করুন

⍴∘'TAPE'¨চক্রাকারে 'TAPE'প্রতিটি স্ট্রিংকে পুনরায় আকার দিন

⍵,¨⍨ যুক্তিকে পুনরায় আকারযুক্ত স্ট্রিংয়ে প্রতিটি চর যুক্ত করুন

চেপটান


1

সিজেম , 27 25 বাইট

q_:i2ew.{:-~0e>_"TAPE"*<}

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

অন্যান্য গল্ফিং ভাষা থেকে অনেক দূরে তবে আমি যাইহোক এই গল্ফ নিয়ে গর্বিত।

ব্যাখ্যা

q                            Read the input
     ew                      And take windows of size
    2                          2
   i                           from the code points
  :                            of each of its characters.
        {               }    For each of these windows:
         :                     Reduce with
          -                      subtraction.
                                 Since there are only 2 elements, this just subtracts them.
             e>                Take the maximum
           ~                     of this difference's bitwise negation
            0                    and zero.
                                 This returns -n-1 if n is negative, and 0 otherwise.
                                 Call this new value m.
                      *        Repeat
                "TAPE"           the string "TAPE" m times.
               _       <       And then take the first m elements.
                             The result of this will be an array of strings which consist of
                             the string "TAPE" repeated the proper amount of times.
       .                     Zip this array with the original input.
                             Since the original input is one element longer than this array,
                             the nothing is pushed after the final character.
                             Implicitly print everything.



0

জাভা, 213 166 153 বাইট

i->{String o="";for(int a=0,l=i.length;++a<=l;){char u=i[a-1],n;o+=u;if(a<l){n=i[a];o+="TAPETAPETAPETAPETAPETAPET".substring(0,n-u>0?n+~u:0);}}return o;}

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

    String o = "";
    for (int a = 0, l = i.length; ++a <= l; ) {              // for each character
        char u = i[a - 1];                                    //  current character
        o += u;                                               //  add current character to output string 
        if (a < l) {                                          //  if it's not the last one
            char n = i[a];                                    //  next character
            o += "TAPETAPETAPETAPETAPETAPET".substring(0, n - u > 0 ? n +~ u : 0); // fill with enough tape but only forward
        }
    }
    return o;

এটি আরও ভাল করতে দয়া করে আমাকে সহায়তা করুন।

হোয়াইটস্পেসে টিপ দেওয়ার জন্য @ কায়ারডকয়েনেরিংহিংকে ধন্যবাদ। টেপ স্ট্রিংয়ে টিপ দেওয়ার জন্য @ আরএমকে ধন্যবাদ। ল্যাম্বদা এবং এক্সপ্রেশন টিপসের জন্য @ কেভিন ক্রুইজসেনকে ধন্যবাদ।


1
সাইটে স্বাগতম! এই উত্তরটি গল্ফ করার জন্য আপনি প্রচুর সাদা জায়গা সরিয়ে ফেলতে পারেন এবং জাভাতে গল্ফ করার জন্য এই টিপসটি পরীক্ষা করে দেখতে নিশ্চিত করতে পারেন !
16:40 এ 16

1
আপনার ভেরিয়েবল টি তৈরি করার দরকার নেই, কারণ আপনি কেবল এটি একবার ব্যবহার করছেন। আপনি ঠিক করতে পারেন "TAPETAPETAPETAPETAPETAPET".substring...
আরএম

পিপিসিজিতে আপনাকে স্বাগতম! @ আরএম যা বলেছে তা ছাড়াও , আপনি আরও কয়েকটি জিনিস গল্ফ করতে পারেন: int a=1,l=i.length;a<=l;a++হতে পারে int a=0,l=i.length;++a<=l;, char u=i[a-1];o+=u;if(a<l){char n=হতে পারে char u=i[a-1],n;o+=u;if(a<l){n=, (n-u)প্রথম বন্ধনী প্রয়োজন হয় না এবং n-u-1হতে পারে n+~u। এছাড়াও, আপনার উত্তরটি বর্তমানে কোনও ফাংশনের পরিবর্তে একটি স্নিপেট। এটিকে ল্যাম্বদা তৈরি করতে আপনাকে i->{সামনে এবং }শেষে যুক্ত করতে হবে। সুতরাং মোট: অনলাইন চেষ্টা করে দেখুন। 153 বাইট
কেভিন ক্রুইজসেন

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