একটি স্ট্রিং খুলে ফেলুন


48

আমরা ইতিমধ্যে এখন তার স্পেসগুলি থেকে স্ট্রিংটি কীভাবে ফেলা যায়।

তবে যথাযথ ভদ্রলোক / মহিলা হিসাবে আমাদের উচিত এটি পরিহিত করা।


একটি স্ট্রিং আনড্রেসিং স্ট্রিপিং সমান, কেবল আরও সূক্ষ্ম। সমস্ত নেতৃস্থানীয় এবং অনুসরণযোগ্য স্থান একবারে সরিয়ে না দেওয়ার পরিবর্তে আমরা সেগুলি একে একে একে অপসারণ করি । আমরা অগ্রণী এবং পিছনের মধ্যেও বিকল্প , যাতে পদক্ষেপগুলি বার্ন না করা।

উদাহরণ, " codegolf "(পাঁচটি শীর্ষস্থানীয় এবং অগ্রবর্তী স্থান) দিয়ে শুরু করে:

     codegolf     
    codegolf     
    codegolf    
   codegolf    
   codegolf   
  codegolf   
  codegolf  
 codegolf  
 codegolf 
codegolf 
codegolf

  1. প্রথম আউটপুট স্ট্রিং অপরিবর্তিত। তারপরে, প্রতিটি পদক্ষেপ আউটপুট। একটি নেতৃস্থানীয় স্থান অপসারণ করে শুরু করুন (যদি প্রযোজ্য হয় - বিধি # 2 দেখুন)।

  2. ইনপুটটিতে বিভিন্ন সংখ্যক শীর্ষস্থানীয় এবং পিছনের স্থান থাকতে পারে। যদি আপনার একপাশে ফাঁকা স্থান চলে যায়, তবে স্ট্রিংটি খালি না হওয়া পর্যন্ত অপরটি পরিচ্ছন্ন করুন।

  3. ইনপুটটির কোনও নেতৃস্থানীয় বা পিছনে স্থান নেই। যদি এটি হয় তবে এটি যেমন হয় তেমন আউটপুট।

  4. ব্যবহারের PPCG ডিফল্ট ইনপুট / আউটপুট পদ্ধতিপিপিসিজি ডিফল্ট লুফোলগুলি নিষিদ্ধ।

  5. খালি ইনপুট, বা ইনপুট যাতে কেবল ফাঁকা স্থান রয়েছে এ সম্পর্কিত অপরিজ্ঞাত আচরণ ঠিক is

  6. আপনি ধরে নিতে পারেন যে স্ট্রিংটিতে কেবলমাত্র ASCII মুদ্রণযোগ্য স্থান ( 0x20থেকে 0x7E) এর অক্ষর থাকবে ।


উদাহরণ - .আরও ভাল পাঠযোগ্যতার জন্য স্পটগুলি বিন্দু দ্বারা প্রতিস্থাপন করা হয়েছে :

4 leading spaces, 5 trailing: "....Yes, Sir!....."
....Yes, Sir!.....
...Yes, Sir!.....
...Yes, Sir!....
..Yes, Sir!....
..Yes, Sir!...
.Yes, Sir!...
.Yes, Sir!..
Yes, Sir!..
Yes, Sir!.
Yes, Sir!

6 leading, 3 trailing: "......Let's go golfing..."
......Let's go golfing...
.....Let's go golfing...
.....Let's go golfing..
....Let's go golfing..
....Let's go golfing.
...Let's go golfing.
...Let's go golfing
..Let's go golfing
.Let's go golfing
Let's go golfing

0 leading, 2 trailing: "Hello.."
Hello..
Hello.
Hello

0 leading, 0 trailing: "World"
World

21 leading, 5 trailing: ".....................a....."
.....................a.....
....................a.....
....................a....
...................a....
...................a...
..................a...
..................a..
.................a..
.................a.
................a.
................a
...............a
..............a
.............a
............a
...........a
..........a
.........a
........a
.......a
......a
.....a
....a
...a
..a
.a
a

একজন ভদ্রলোক / ভদ্রমহিলা সংক্ষিপ্ত, তাই বাইট জয়ী সংক্ষিপ্ত উত্তর



আমরা কি ধরে নিতে পারি যে কমপক্ষে একটি অ-স্থানের অক্ষর থাকবে?
মার্টিন এেন্ডার

2
@ কেভিন ক্রুজসেন আপনাকে কেবল মুদ্রণযোগ্য স্পেসে ( 0x20থেকে 0x7E) এএসসিআইআই অক্ষর পরিচালনা করতে হবে । অন্যগুলি হ'ল অনির্ধারিত আচরণ।
নাথন।ইলিশা শিরাইনি

1
@ কেভিন ক্রুজসেন হ্যাঁ, এর মতো কোনও পরীক্ষার মামলা হবে না। এর মতো " test\r "বা কোনও কিছুই থাকবে না " \v test"
নাথন।ইলিশা শিরাইনি

1
এটি কি বৈধ পরীক্ষার কেস ".....................a....."? যদি তাই হয় তবে আমি এটিকে যুক্ত করার পরামর্শ দিচ্ছি কারণ কিছু উত্তর এই ধরণের পরীক্ষায় ব্যর্থ বলে মনে হচ্ছে। (বিন্দুগুলি অবশ্যই আরও ভাল পঠনযোগ্যতার জন্য)
সিনাসকি

উত্তর:


11

রেটিনা , 26 বাইট

{m`^ (.+)\z
$&¶$1
 $
 ¶$%`

এটি অনলাইন চেষ্টা করুন! (টেস্ট স্যুট স্পষ্টতার জন্য পিরিয়ড ব্যবহার করে The ফুটার এবং শিরোলেখগুলি এগুলি মূল কোডের জন্য এবং স্পেস থেকে রূপান্তর করে))

ব্যাখ্যা

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

সুতরাং পরিবর্তে, আমরা সমস্ত মধ্যবর্তী ফলাফলগুলি সহ একটি একক স্ট্রিং তৈরি করছি এবং শেষে মুদ্রণ করব।

{m`^ (.+)\z
$&¶$1

{একটি লুপ স্টপ যা পুনরাবৃত্তি স্ট্রিং পর্যন্ত পরিবর্তন (যার মানে কোন নেতৃস্থানীয় হয় / trailing স্পেস বাম) এ কর্মসূচির উভয় পর্যায়ে গোপন। স্টেজ নিজেই স্ট্রিংয়ের চূড়ান্ত লাইনের একটি শীর্ষস্থানীয় স্থানের সাথে এবং সেই চূড়ান্ত লাইনের সাথে মেলে এবং তারপরে ম্যাচটি আবার লিখে দেয়, পাশাপাশি নতুন লাইনে স্থানের পরে স্টাফগুলি (যার ফলে অনুলিপিটিতে শীর্ষস্থানটি ফেলে দেওয়া হয়)।

 $
 ¶$%`

পেছনের স্থান অপসারণ করা কিছুটা সহজ। যদি আমরা কেবলমাত্র চূড়ান্ত জায়গার সাথে মেলে, আমরা এর সামনে (একই লাইনে) স্টাফগুলি অ্যাক্সেস করতে পারি $%`যা দিয়ে উপসর্গের বিকল্পের একটি লাইন-সচেতন বৈকল্পিক $`


11

পাইথন 2 , 122 107 103 102 98 95 93 91 90 88 87 বাইট

s=input()+' '
a=0
while-a*s!=id:
 if a:id=s
 a=~a
 if'!'>s[a]:s=s[1+a:len(s)+a];print s

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


পাইথন 3 , 97 95 93 90 বাইট

s=input()
a=p=print
p(s)
while s!=a:
 a=s
 if'!'>s:s=s[1:];p(s)
 if'!'>s[-1]:s=s[:-1];p(s)

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


s=input()একটি ফাংশন পরিবর্তে ব্যবহার কম বাইট নিতে হবে।
জোনাথন ফ্রেচ

রেফারিং 5. Undefined behaviour on empty input, or input that only contains spaces, is OK., 98 বাইট
জোনাথন ফ্রেচ


@ জোনাথানফ্রেচ আমি এটি দেখিনি; ধন্যবাদ :)
টিফিল্ড

2
শুরুতে এটি সংজ্ঞায়িত করার জন্য আপনি পাইথন 2 কোডটি aবিল্ট-ইন ফাংশনটির সাথে প্রতিস্থাপন করে আরও গল্ফ করতে পারেন id-২ বাইট।
LyricLy

7

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

@ নয়েলহোফের জন্য 3 বাইট সংরক্ষণ করা হয়েছে।

{($_,{$++%2??S/" "$//!!S/^" "//}...*)[^.comb*2].unique}

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

ব্যাখ্যা : ($_,{$++%2??S/" "$//!!S/^" "//}...*)একটি পুনরাবৃত্তিমূলক অসীম অনুক্রম যা মূল স্ট্রিং ( $_) দিয়ে শুরু হয় এবং পরবর্তী উপাদানটি পূর্ববর্তী উপাদানটিকে ডাকা ব্লক দিয়ে দেয়।

ব্লকটি নিজেই $_ভেরিয়েবলের স্ট্রিং পায় । অপারেটর S/(regex)/(string)/প্রথম occurence অনুসন্ধান করবে এর (regex)মধ্যে $_, সঙ্গে এটি প্রতিস্থাপন (string), এবং এর ফলে ফেরৎ। যদি কোনও মিল না থাকে, তবে এটি $_অপরিবর্তিত থাকা সামগ্রীতে ফিরে আসে । আমরা ?? !!শর্তের সাথে টার্নারি অপারেটরটি ব্যবহার করি $++%2, যা এর মধ্যে বিকল্প হয় Falseএবং True( $এটি একটি ফ্রি ভেরিয়েবল যা ব্লকের কলগুলিতে এর বিষয়বস্তু সংরক্ষণ করে))

সবচেয়ে খারাপ ক্ষেত্রে (একদিকে সমস্ত স্থান এবং অন্য 1 টি চরিত্র), আমরা প্রতি 2 পদক্ষেপে 1 টি স্থান সরিয়ে ফেলি। সুতরাং আমরা নিশ্চিত হতে পারি যে 2 * (স্ট্রিংয়ের দৈর্ঘ্য) পদক্ষেপে সমস্ত স্পেস সরানো হবে। আমরা পুনরাবৃত্তির ক্রম থেকে অনেকগুলি উপাদানকে সাথে [^.comb*2]নিয়ে যাই এবং অবশেষে নকলগুলি (যা ঘটে যখনই কোনও স্থান অপসারণ করা উচিত ছিল তবে এটি সেখানে নেই) বাতিল করে দেয় .unique। এটি স্ট্রিংগুলির তালিকা প্রদান করে, ক্রমান্বয়ে স্পেসগুলি ছড়িয়ে দেওয়া।


[^.comb*2]2 বাইট সংরক্ষণ কিছু কারণে এটি কাজ করে, কিন্তু [^2*.comb]হয় না। কেন জানি না। ?? !!রেজেক্স নির্বাচন করতে একটি টের্নারি ব্যবহার করা অন্য বাইট সংরক্ষণ করে।
nwellnhof

ধন্যবাদ! আমি চেষ্টা করেছি [^2*.comb]এবং এটি কাজ করে না, তাই আমি কেবল ব্যবহার করেছি [0..2*.comb]। আর ধন্যবাদ তিন জন্য, আমি শুধু এটা খুব ব্যয়বহুল চিন্তা এবং এটা আমার ঘটেনি যে আমি এটা কিছু এমনকি আরো ব্যয়বহুল দিয়ে প্রতিস্থাপিত ...
Ramillies

7

05 এ বি 1 ই , 21 15 বাইট

=v¬ðQi¦=}¤ðQi¨=

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

ব্যাখ্যা ^

=                 # print input
 v                # for each character in input
  ¬ðQi  }         # if the first char in the current string is a space
      ¦=          # remove it and print without popping
         ¤ðQi     # if the last char in the current string is a space
             ¨=   # remove it and print without popping

ডাং, আমি অনুরূপ কিছু চেষ্টা করেছিলাম তবে কিছু কারণে আমি নিশ্চিত যে মাথা / লেজ স্ট্রিংগুলিতে কাজ করে না, এবং আমি গিথুবে এটি নিয়ে একটি বিষয় উত্থাপন করতে চলেছি। অবশ্যই ডিবাগ লগগুলি ভুল পড়েছে। :-)
স্কটনেট

1
@ স্কটনেট: আমি শেষ-চেকের কাছাকাছি আসার একটি উপায় খুঁজে পেয়েছি :)
এমিগিনা

ওহ ... আমরা এর আগে কেন ভাবিনি? যেহেতু আমরা শর্তাধীন মুদ্রণ করি ঠিক সময়ে সঠিক সংখ্যার লুপ করার প্রয়োজন হয় না, তাই আমাদের কেবল পর্যাপ্ত সময় লুপ করা দরকার। আমি আমার উত্তরটি উন্নত করতে এই ধারণাটি
নিচ্ছি

1
@ স্কটনেট: হ্যাঁ আপনি এটি সম্পর্কে চিন্তা করলে এটি সুস্পষ্ট, তবে কখনও কখনও সহজে এই জিনিসগুলি মিস করা সহজ হয়: P
Emigna


7

সি (জিসিসি) , 89 84 বাইট

পুনরাবৃত্ত সংস্করণটি ছোট ;-)

j;f(char*s){puts(s);*s^32||puts(++s);s[j=strlen(s)-1]<33?s[j]=0,f(s):*s^32||f(s+1);}

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

সি (জিসিসি) , 107 102 101 100 99 বাইট

স্থান এবং using ব্যবহার করে @ জোনাথন ফ্রেঞ্চকে 2 বাইট সংরক্ষণ করা হয়েছে ~

i,j,k;f(char*s){for(i=~++k,puts(s);i^k;k=s[j=strlen(s)-1]<33?s[j]=0,puts(s):0)*s^32?i=0:puts(++s);}

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


2
আমি মনে করি প্রশ্নটি সত্যই চায় যে আপনি বিন্দুগুলির চেয়ে স্থানগুলি সরিয়ে ফেলুন। স্পেস ব্যবহার করার একটি সুবিধাও রয়েছে; আপনি প্রতিস্থাপন করতে পারেন ==46সঙ্গে <33যেমন স্থান ক্ষুদ্রতম মুদ্রণযোগ্য চরিত্র এবং আপনি শুধুমাত্র ঐ হ্যান্ডেল করতে হবে।
জোনাথন ফ্রেচ

কি করে ++k+?
জোনাথন ফ্রেচ

@JonathanFrech এটা প্রাক বাড়তি kএবং এক, যা সমতূল্য যোগ k = k + 1; i = k + 1;বা i = k + 2; k = k + 1
হাইপারনিউটারিনো

প্রযুক্তিগতভাবে i=k+++2এটিও কাজ করে যা আমি ব্যবহার করতাম কারণ +++
চেহারাটি

@ হাইপারনিউট্রিনো হ্যাঁ, আমি জানি প্রাক-বর্ধনকারী অপারেটর কী করে; যদিও কোডটি ছাড়া এটি কীভাবে কাজ করে তা আমি পাই না । সুতরাং সত্যিই আমি জিজ্ঞাসা করছিলাম এটি কী ভূমিকা পালন করে, তার পরিবর্তে এটি কীভাবে সংজ্ঞায়িত হয়।
জোনাথন ফ্রেচ

6

জাভাস্ক্রিপ্ট (ES6) 92

@ আপভোটার্স: নীচে অন্য জেএস উত্তরটি দেখুন যেটি 76 বাইট দীর্ঘ

(s,q,l=2,p=0)=>{for(alert(s);l--;p=!p)s[+p&&s.length-p]<'!'&&alert(s=s.slice(!p,-p||q,l=2))}

একটি লুপ সামনে বা শেষে কোনও স্থান সন্ধান করছে। যদি পাওয়া যায়, স্থান এবং আউটপুট স্ট্রিং সরান। যদি 2 বার কোনও স্থান না পাওয়া যায় তবে থামুন।

F=
(s,q,l=2,p=0)=>{for(alert(s);l--;p=!p)s[+p&&s.length-p]<'!'&&alert(s=s.slice(!p,-p||q,l=2))}

// some trick to show dots instead of spaces, for test
alert=x=>console.log(x
  .replace(/^ +/g,z=>'.'.repeat(z.length))
  .replace(/ +$/g,z=>'.'.repeat(z.length))
)

function go() {F(I.value.replace(/\./g,' '))}

go()
<input ID=I value='....yes Sir!....'> (use dot instead of space)
<button onclick='go()'>Go</button>


এর সাথে স্থানটি পরীক্ষা করে আপনি একটি বাইট সংরক্ষণ করতে পারেন <'!'। আপনার স্নিপেটটি এখনও কাজ করতে replaceআপনি আপনার কার্যক্রমে যাওয়ার আগে ফাঁকা জায়গাগুলি সময়সীমা করতে পারেন ।
জাস্টিন মেরিনার

@ জাস্টিনমারিনার এখনই ঠিক আছে, কারণ ওপিকে '' এর চেয়ে কম আশা করা হয়নি বলে জানিয়েছে। ধন্যবাদ
edc65

6

পার্ল 5, 32 বাইট

অবিগাইলের কারণে 4 বাইট সংরক্ষণ করা হয়েছে ।

1while s/^ /!say/e+s/ $/!say/e

অনুরোধ -plকরা 2 হিসাবে গণনা করা হয় -E

নমুনা ব্যবহার

$ echo '   test   ' | perl -plE'1while s/^ /!say/e+s/ $/!say/e'
   test   
  test   
  test  
 test  
 test 
test 
test

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


ফাঁকা স্থান ছাড়াই স্ট্রিংয়ের জন্য সঠিকভাবে কাজ করে না।
nwellnhof

print;s/^ //&&print,s/ $//&&print while/^ | $/-nপতাকা সহ কাজ করে , এছাড়াও -lপ্রয়োজন হয় না
নাহুয়েল ফিউইলুল

পছন্দ করেছেন
প্রিমো

5

সি # (.নেট কোর) , 192 183 182 181 179 178 বাইট

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

n=>{var o=n+"\n";for(var e=1;n.Trim()!=n;){if(1>(e^=1))if(n[0]<33)n=n.Remove(0,1);else continue;else if(n.TrimEnd()!=n)n=n.Remove(n.Length-1);else continue;o+=n+"\n";};return o;}

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


গল্ফকে কিছু জিনিস: var e=1;while(n.Trim()!=n)-> for(var e=1;n.Trim()!=n;); if(n[0]==' ')->if(n[0]<33)
কেভিন ক্রুইজসেন

আমি দ্বিতীয়টি সম্পর্কে ভেবেছি, তবে যদি পরীক্ষার স্ট্রিংয়ে নিউলাইনগুলি থাকে?
কেউ

ঠিক আছে, <33ওপির নতুন যুক্ত হওয়া নিয়মের কারণে এটি সম্ভব: " আপনি ধরে নিতে পারেন যে স্ট্রিংটিতে কেবলমাত্র ASCII মুদ্রণযোগ্য স্থান ( 0x20থেকে 0x7E) এর অক্ষর থাকবে " "
কেভিন ক্রুইজসেন

5

জাভা 8, 150 146 145 137 বাইট

s->{String r=s;for(int f=0;s!=s.trim();f^=1)r+="\n"+(s=f+s.charAt(0)<33|!s.endsWith(" ")?s.substring(1):s.replaceAll(" $",""));return r;}

-4 বাইট ধন্যবাদ @ নেভেতে পরিবর্তিত (f<1&s.charAt(0)<33)করার জন্য f+s.charAt(0)<33@ সোনার সি # থেকে ট্রিকটি
ব্যবহার করে বাইট করুন .NET এর পরিবর্তে উত্তর দিন । -8 ধন্যবাদ বাইট @Nevay আবার পরিবর্তন করে থেকে , কারণ "ফিরে আসবে সাদা স্থান মুছে সামনের এবং পিছনের সঙ্গে এই স্ট্রিং এর একটি অনুলিপি অথবা এই স্ট্রিং যদি গেছে কোন নেতৃস্থানীয় বা সাদা ব্যবধান trailing ", এইভাবে রেফারেন্স থাকার বিষয়টি মতেই একই এবং একই মানটি পরীক্ষা করার পরিবর্তে এগুলি একই রেফারেন্স কিনা তা পরীক্ষা করতে ব্যবহার করা যেতে পারে ।!s.trim().equals(s)s.matches(" .*|.* ")
!s.trim().equals(s)s!=s.trim()String#trim!=.equals

ব্যাখ্যা:

তা এখানে চেষ্টা করুন (অথবা একটি আরো দৃষ্টিলব্ধ সংস্করণ চেষ্টা এখানে দিয়ে #পরিবর্তে স্পেস)।

s->{                               // Method with String as both parameter and return-type
  String r=s;                      //  Result-String (starting at the input)
  for(int f=0;                     //  Flag-integer (starting at 0)
      s!=s.trim();                 //  Loop as long as `s` contains leading/trailing spaces
      f^=1)                        //    And XOR(1) `f` after every iteration (0->1; 1->0)
    r+="\n"                        //   Append the result with a new-line
       +(                          //    Followed by:
         s=f+                      //     If `f` is 0,
             s.charAt(0)<33        //     and `s` starts with a space
           |!s.endsWith(" ")?      //     Or doesn't end with a space
            s.substring(1)         //      Remove the first leading space
           :                       //     Else:
            s.replaceAll(" $",""));//      Remove the last trailing space
                                   //  End of loop (implicit / single-line body)
  return r;                        //  Return the result-String
}                                  // End of method

1
আপনি (-4 বাইট) এর s=f+s.charAt(0)<33পরিবর্তে ব্যবহার করতে পারেন (f<1&s.charAt(0)<33)
নেভায়ে

1
আপনি (-8 বাইট) এর s!=s.trim()পরিবর্তে ব্যবহার করতে পারেন !s.trim().equals(s);
নেভায়ে


4

জেলি , 16 বাইট

Ḋ=⁶Ḣ$¡UµÐĿ¹Ṛƭ€QY

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

-২ বাইটস এরিক দ্য আউটগল্ফারকে
ধন্যবাদ -১ মাইল থেকে বাইট ধন্যবাদ

ব্যাখ্যা

Ḋ=⁶Ḣ$¡UµÐĿ¹Ṛƭ€QY  Main link
       µÐĿ        While the results are unique (collecting intermediate results), apply the last link (`µ` creates a new monadic link):
Ḋ=⁶Ḣ$¡            Remove a space from the beginning if there is one
 =⁶Ḣ$             If the first character is a space, then 1, else 0
 =                Compare each character to
  ⁶               ' '
   Ḣ              Get the first comparison
Ḋ                 Then Dequeue the string (s -> s[1:])
    ¡             That many times
     U            And reverse the string (the next time this is called, it will remove spaces from the end instead)
             €    For each string
            ƭ     Alternate between two commands:
          ¹       Identity (do nothing), and
           Ṛ      Reverse
          ¹Ṛƭ€    Correct all strings that are reversed to remove the trailing space
              Q   Remove duplicates (where there was no space to remove)
               Y  Join on newlines


@ এরিকথ আউটগলফার ধন্যবাদ, সম্পাদনা আসছে।
হাইপারনিউটারিনো

বিপরীত / পরিচয়ের বিকল্প কমান্ড সহ দুর্দান্ত ধারণা!
Emigna

@ এমিগনা ধন্যবাদ! : ডিআই বেশিরভাগই নতুন
কুইকটি

ƭযদি চেইন দুটির চেয়ে দীর্ঘ হয় তবে কেবল নীলাদ লাগবে। ¹Ṛƭএখানে ঠিক কাজ করে।
মাইল


3

জাভা (ওপেনজেডিকে 8) , 161 147 146 বাইট

x->{for(int l=0,r=x.length(),k=-1,u,v;((u=32-x.charAt(l)>>k)*(v=32-x.charAt(r-1)>>-1))<1;x+="\n"+x.substring(l-=k&~u|v,r+=(k=~k)&~v|u));return x;}

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

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

x -> {
    /*
     * l: left index (inclusive)
     * r: right index (exclusive)
     * k: side to remove from, -1:=left, 0:=right
     * u: left character   0:=space, <0:=no space (-1 if k is left side)
     * v: right character  0:=space, -1:=no space
     */
    for (int l = 0, r = x.length(), k = -1, u, v;
            ((u = 32 - x.charAt(l) >> k)
           * (v = 32 - x.charAt(r - 1) >> -1)) < 1; // loop while left or right has space(s)
            x += "\n" + x.substring(                // append newline and substring
                    l -= k & ~u | v,                // inc. left  if k is left side
                                                    //               and left has space
                                                    //            or right has no space
                    r += (k = ~k) & ~v | u));       // dec. right if k is right side
                                                    //               and right has space
                                                    //            or left has no space
    return x;
}

1
হেই, আমি আপনার মুছে ফেলা উত্তরটি দেখেছি এবং আপনি যখন আমার 150 বাইটের নিচে যাচ্ছেন এবং অবাক করে ফেলবেন তা ভাবছিলাম। ;)
কেভিন ক্রুইজসেন

1
আমি পুরোপুরি নিশ্চিত নই, তবে আমি মনে করি আপনি পরিবর্তন (u=32-x.charAt(l)>>-1)করে বাইট গল্ফ করতে পারবেন(u=32-x.charAt(l)>>k)
কেভিন ক্রুইজসেন

@KevinCruijssen করা হবে না কাজ, kহয় 0প্রতি মাসের দ্বিতীয় পুনরাবৃত্তির।
নেভায়ে

1
হ্যাঁ, তবে অদ্ভুত অংশটি হল টিআইও কাজ করে এবং এই পরিবর্তনের সাথে সমস্ত পরীক্ষার ক্ষেত্রে সঠিক ফলাফল দেয় u। যখন আমি পরিবর্তন করে না -1থেকে kজন্য v। আমি যদিও k0k=~k
বিস্মিত

1
@ কেভিন ক্রুইজসেন দৃশ্যের জন্য k=0: যদি বামে ফাঁকা জায়গা থাকে তবে uতার আগের মতোই মান থাকবে ( 0); যদি বামের কোনও ফাঁকা জায়গা না থাকে, তবে ( ) এর (k=~k)&~v|uজন্য মূল্যায়ন করুন , সুতরাং এর অপরিজ্ঞাত (negativeণাত্মক) মান কিছু যায় না ( )। -1|u~0&-1|uu-1|x==-1
নেভায়ে

3

05 এ বি 1 ই , 25 17 বাইট

এমিগনার কাছ থেকে কোনও শেষের জন্য চেক আইডিয়া ধার করে -8 বাইট

,v2F¬ðQi¦DNiR},}R

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

আমি নিশ্চিত যে খুব কম সরল পদ্ধতি সহজেই সমাধানটিকে পরাভূত করতে পারে। আপাতত ...

ব্যাখ্যা:

,v2F¬ðQi¦DNiR},}R           Full Programm
,                           Print the input string
 v                          For each char of the string
                               (we don't really care, we only need to loop
                                enough times to accomplish our task, since
                                we print conditionally we can loop more
                                times than necessary)
  2F...........}            Two times...
    ¬õQi                       Is 1st item a space?
        ¦D                        Remove 1st item + duplicate
          NiR}                    If on the second pass: reverse the list
              ,                   Pop & print with newline
               }               End If
                 R          Reverse the list

লুপটির সাথে আপনার মতামতটি আমি পছন্দ করি :) আমি একাধিক ifs ছাড়াই এক পাসে সব কিছু করার উপায় বের করার চেষ্টা করেছি, তবে আমি এখনও এটি খুঁজে পাইনি। এছাড়াও, আপনার ব্যাখ্যায় কোনও স্থানের পরিবর্তে খালি স্ট্রিং রয়েছে বলে মনে হচ্ছে।
Emigna

ধন্যবাদ! আমি ব্যাখ্যাটি স্থির করে দিয়েছি, আমি আমার কোডটি গল্ফ করার সময় "খালি" অংশটি সম্পাদনা করতে ভুলে গিয়েছিলাম (-1 বাইট) এর Sপরিবর্তে using #লুপ ... ভাল ... এটি একটি সোজাসুজি পদ্ধতির তুলনায় পুরো 1 বাইট সংরক্ষণ করে। আমি বর্তমানে কার্যটির শেষ সনাক্ত করার জন্য একটি আরও ছোট উপায় সন্ধান করছি (এর জন্য 5 বাইট অনেক বেশি), এবং আমি সম্পূর্ণ আলাদা পদ্ধতিতে বিবেচনা করছি। আমি মনে করি এই চ্যালেঞ্জ সমাধানের আরও চতুর উপায় আছে।
স্কটনেট

আপনি যদি চেষ্টা করেন এবং একটি পাসে সব কিছু করেন (যেমনটি আমি বর্তমানে সন্ধান করছি), লুপটি বের করার জন্য আমার কাছে সেরা চেকটি হ'ল 8 বাইট ...
এমিগেনা

3

আর , 145 133 111 বাইট

-12 বাইটস @ জিউজ্পিকে ধন্যবাদ, subএকটি নতুন পরিবর্তনশীলের ফলাফল সংরক্ষণ করে এবং এটি পরিবর্তন হয়েছে কিনা তা পরীক্ষা করে

-22 বাইটগুলি নতুন লাইনের সাথে স্ট্রিংয়ের পরিবর্তে স্ট্রিংয়ের ভেক্টরকে ফেরত দিয়ে

function(s){L=s
while(grepl("^ | $",s)){if((x=sub("^ ","",s))!=s)L=c(L,x)
if((s=sub(" $","",x))!=x)L=c(L,s)}
L}

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

আংশিকভাবে অমীমাংসিত সংস্করণে ব্যাখ্যা:

function(s){
  L=s                          # Initialise a vector with the original string
  while(grepl("^ | $",s)){     # While there are leading or trailing spaces...
    if((x=sub("^ ","",s))!=s){ # Check whether we can remove a leading space
      L=c(L,x)                 # If so, add the shortened string to the vector
    }
    if((s=sub(" $","",x))!=x){ # Check whether we can remove a trailing space
      L=c(L,x)                 # If so, add the shortened string to the vector
    }
  }
  L                            # Return the vector
}                              

আপনি C(s<-sub(),\n)পৃথক মুদ্রণ বিবৃতি পরিবর্তে ব্যবহার করতে পারবেন না ? আহ, না, কারণsep=" "
জিউসেপ

@ জিউসেপ হ্যাঁ, আমি মনে করি এটি যুক্ত করার প্রয়োজনীয়তার কারণে এটি সমস্ত একক বিবৃতিতে অন্তর্ভুক্ত করতে কিছুটা দীর্ঘ সময় কাজ করে sep=""। বেশিরভাগ চ্যালেঞ্জগুলিতে অতিরিক্ত পিছনের স্থানটি কোনও ব্যাপার নয়, তবে দুর্ভাগ্যক্রমে এটি এখানে!
ব্যবহারকারী 2390246

133 বাইট - আপনার ব্যবহার সম্পর্কে কিছু subশুধু এই প্রস্তাব, idk কেন
: Giuseppe

@ জিউসেপ খুব মার্জিত!
ব্যবহারকারী 2390246

আপনি কি কেবল L=sস্ট্রিংয়ের একটি ভেক্টর সেট এবং ফিরিয়ে দিতে পারেন?
জিউসেপ

3

জাভা (ওপেনজেডিকে 8) , 137 125 121 120 124 বাইট

s->{int i=1;do System.out.println(s);while(s!=(s=s.substring(s.charAt(0)<33?i:(i=0),s.length()-(s.endsWith(" ")?i^=1:0))));}

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


চমৎকার উত্তর! 137 বাইটের আমার উত্তর হিসাবে কেবল সংক্ষিপ্ত , তবে আপনি এখনও 12 বাইটের মতো গল্ফ করতে পারেন:s->{for(int i=0;s!=s.trim();)System.out.println(s=s.substring(s.charAt(0)<33?1-i%2:0,s.length()-(s.endsWith(" ")?i++%2:0)));}
কেভিন ক্রুইজসেন

এটি বর্তমানে "... স্ট্রিং অপরিবর্তিত আউটপুট" দেয় না এবং নেতৃস্থানীয় স্পেস এবং কোনও পিছনে স্থান ছাড়াই ইনপুট ব্যর্থ হয়।
নেভায়ে

1
হতে পারে আপনি s->{int i=1;do System.out.println(s);while(s!=(s=s.substring(s.charAt(0)<33?i:(i=0),s.length()-(s.endsWith(" ")?i^=1:0))));}(124 বাইট) ব্যবহার করতে পারেন (সঠিক বলে মনে হচ্ছে তবে বেশি পরীক্ষা হয়নি)।
নেভায়ে

3

এমএটিএল , 21 16 বাইট

tnE:"t@o&)w46-?x

এটি বৃহত্তর স্বচ্ছতার জন্য ফাঁকের পরিবর্তে বিন্দু ব্যবহার করে uses স্পেস 46দ্বারা প্রতিস্থাপন 32

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

ব্যাখ্যা

tn      % Input (implicit). Duplicate and push length, say L
E       % Multiply by 2
:       % Push range [1 2 ... 2*L]
"       % For each k in that array
  t     %   Duplicate the string at the top of the stack
  @     %   Push k
  o     %   Parity: gives 1 or 0
  &)    %   Two-ouput indexing. Pushes the k-th entry of the string and then
        %   the rest of the string. The 1-st output is the first, the 0-th
        %   is the last (indexing is 1-based dand modular)
  w     %   Swap
  46-   %   Subtract 46, which ias ACII for '.'
  ?     %   If non-zero
    x   %     Delete sub-string that was obained by removing that entry
        %   End (implicit)
        % End (implicit)
        % Display stack (implicit)

3

হুশ , 23 22 বাইট

u§↑L`G`I¢e₁ȯ↔₁↔
?tI<"!

লিও -1 বাইট জন্য ধন্যবাদ।

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

ব্যাখ্যা

ফাংশনটি `G`Iসত্যই অন্তর্নির্মিত হওয়া উচিত ...

?tI<"!  Helper function: remove initial space.
?  <"!  If less than the string "!",
 t      remove first character,
  I     else return as is.
u§↑L`G`I¢e₁ȯ↔₁↔  Main function.
         e       List containing
          ₁      the helper function
           ȯ↔₁↔  and the composition reverse-helper-reverse.
        ¢        Repeat it cyclically.
    `G`I         Cumulative reduce from left by function application
                 using input string as initial value.
 §↑L             Take first length(input) values.
u                Remove duplicates.

নিস! প্রকৃতপক্ষে চক্রাকারে ফাংশন প্রয়োগের জন্য আমাদের আরও বিল্টিন প্রয়োজন হবে ... বিটিডব্লিউ আমি প্রথম স্থানটি সরিয়ে ফেলার জন্য একটি স্বল্পতমতম উপায় খুঁজে পেয়েছি: tio.run/##yygtzv7/v/…
লিও

@ লিও ধন্যবাদ! ব্যবহার ?
হ্যান্ডসাইটে

3

সি ++, 196 193 189 186 183 বাইট

-10 বাইট জনাথন
ফ্রেচকে ধন্যবাদ -3 জ্যাচারকে ধন্যবাদ বাইটস ý

#include<iostream>
#include<string>
#define D std::cout<<s<<'\n'
#define R ~-s.size()
auto u=[](auto s){D;while(s[0]<33||s[R]<33){if(s[0]<33)s.erase(0,1),D;if(s[R]<33)s.erase(R),D;}};

এমএসভিসির সাথে সংকলনের জন্য এসডিএল চেকগুলি আন-অ্যাক্টিভেশন প্রয়োজন


আপনি এটির ==32সাথে প্রতিস্থাপন করতে সক্ষম হতে পারেন <33
জোনাথন ফ্রেচ

আমি কোন সি ++ মাস্টার নই, যদিও #include<string> আসলেই প্রয়োজনীয় ?
জোনাথন ফ্রেচ

if(...){...;D;}-> if(...)...,D;
জোনাথন ফ্রেচ

@ জোনাথনফ্রেচ আপনি সেখানে যা করেছেন তা সংকলক নির্দিষ্ট, মান দ্বারা গ্যারান্টেড ছিল না। ভিসি ++ স্ট্রিংয়ের স্পষ্ট অন্তর্ভুক্তি ছাড়া << অপারেটরগুলির একটি সংজ্ঞা খুঁজে পাচ্ছেন না।
হাটসুপয়েন্টারকুন

#define R ...<33, ||R){এবং if(R){-> #define R ...<33), ||R{এবং if(R{
জোনাথন ফ্রেচ

2

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

using System;s=>{Action o=()=>Console.WriteLine(s);o();Func<int>l=()=>s.Length-1;while(s!=s.Trim()){if(s[0]<33){s=s.Remove(0,1);o();}if(s[l()]<33){s=s.Remove(l());o();}}}

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

এটি @ কারওর উত্তরের বিকল্প , এবং সরাসরি স্ট্রিংগুলি আউটপুট করে।


আপনার প্রোগ্রাম স্পেসগুলি অপসারণের আগে স্ট্রিংটি অবিস্মরণযুক্ত আউটপুট দেয় না।
নাথান।ইলিশা শিরাইনি

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

2

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

f=(s,r,n,l=s.length)=>s[r?--l:0]<"!"?s+`
`+f(s.slice(!r,l),!r):n?s:f(s,!r,1)

মাল্টলাইন স্ট্রিং হিসাবে আউটপুট।

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

বেশিরভাগ উত্তর যেমন করছে তেমনি স্থানগুলির পরিবর্তে বিন্দু ব্যবহার করা হচ্ছে।



2

অক্টাভা , 88 83 বাইট

স্টিভি গ্রিফিনকে ধন্যবাদ 5 বাইট !

x=[input('') 0];for p=mod(1:sum(x),2)if x(~p+end*p)<33,disp(x=x(2-p:end-p)),end,end

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


খুব সুন্দর. "যাইহোক, দেখুন আপনি কয়েকটি বাইট সরিয়ে ফেলতে পারেন কিনা " :
স্টিভি গ্রিফিন

@ স্টেভি গ্রিফিন আমি আপনার উত্তরে বলতে চাইছিলাম ... :- ভাল ধারণা, ধন্যবাদ!
লুইস মেন্ডো

আমি আমার মুছে ফেলতে পারি ... এর তুলনায় এটি এতটাই অপ্রয়োজনীয় ...
স্টিভি গ্রিফিন

@ স্টেভিগ্রিফিন এখানে দুটি বাইট অপসারণ করার জন্য একটি ধারণা দেওয়া হয়েছে । ক্রমশ সঙ্কুচিত হওয়ার minকারণে যে করুণা প্রয়োজনs
লুইস মেন্ডো

2

লিনাক্সের জন্য x86 মেশিন কোড, 60 বাইট

e8 1f 00 00 00 31 c0 80 3f 20 75 09 47 4d 74 10
e8 0f 00 00 00 80 7c 2f ff 20 74 05 84 c0 75 e5
c3 4d eb dc 6a 04 58 50 31 db 43 89 f9 89 ea cd
80 58 6a 0a 89 e1 89 da cd 80 58 c3

এটি লিনাক্স x86 এর জন্য একটি ফাংশন। এটি স্ট্রিং ইনপুট পয়েন্টার হিসাবে ediএবং স্ট্রিংয়ের দৈর্ঘ্যের হিসাবে নেয় ebp

পরীক্ষিত করার জন্য কিছু অবকাঠামো সহ উদগঠিত (এফএএসএম সহ সংকলন, প্রোগ্রাম আর্গুমেন্ট হিসাবে স্ট্রিং দিয়ে চালান; undress:প্রকৃত ফাংশন কোডের জন্য লেবেল সন্ধান করুন ):

format ELF executable
segment executable
SYS_WRITE = 4
    jmp     callUndress
; -------------------- the function itself --------------------------------
; Input:
;   edi=string
;   ebp=length
undress:
undressLoopPrint:
    call    print
undressLoop:
    xor     eax, eax    ; flag of having printed anything on this iteration
    cmp     byte [edi], ' '
    jne     startsWithoutSpace
    inc     edi
    dec     ebp
    jz      quit
    call    print
startsWithoutSpace:
    cmp     byte [edi+ebp-1], ' '
    je      endsWithSpace
    test    al, al      ; if print has been called, then we have 0x0a in eax
    jnz     undressLoop
quit:
    ret
endsWithSpace:
    dec     ebp
    jmp     undressLoopPrint
print:
    push    SYS_WRITE
    pop     eax
    push    eax
    xor     ebx, ebx
    inc     ebx ; STDOUT
    mov     ecx, edi
    mov     edx, ebp
    int     0x80
    pop     eax
    push    0x0a    ; will print newline
    mov     ecx, esp
    mov     edx, ebx ; STDOUT=1, which coincides with the length of newline
    int     0x80
    pop     eax
    ret
; --------------------- end undress ---------------------------------------
SYS_EXIT = 1
STDERR = 2
callUndress:
    pop     eax     ; argc
    cmp     eax, 2
    jne     badArgc
    pop     eax     ; argv[0]
    pop     edi
    mov     al, 0
    cld
    mov     ecx, -1
    repne   scasb
    lea     edi, [edi+ecx+1] ; argv[1]
    neg     ecx
    sub     ecx, 2
    mov     ebp, ecx     ; strlen(argv[1])
    call    undress
    xor     ebx, ebx
exit:
    mov     eax, SYS_EXIT
    int     0x80
    ud2
badArgc:
    mov     esi, eax
    mov     eax, SYS_WRITE
    mov     ebx, STDERR
    mov     ecx, badArgcMsg
    mov     edx, badArgcMsgLen
    int     0x80
    mov     ebx, esi
    neg     ebx
    jmp     exit
badArgcMsg:
    db      "Usage: undress YourString",0x0a,0
badArgcMsgLen = $-badArgcMsg
segment readable writable
string:
    db      100 dup(0)
    stringLen = $-string

sys_write()eaxঅ-শূন্য করে তোলে (বিশেষত 1বর্ণিত অক্ষরের সংখ্যা, এটি ধরে নেই -errno), সুতরাং আপনি printযদি pop eaxশেষ না করেন তবে তা ঘটবে । আপনি ঠিক xor eax,eaxআগে cmp byte [edi], ' 'এবং সংরক্ষণ করতে পারেন mov al,1এবং কিছু eaxসংরক্ষণ / পুনরুদ্ধার করতে পারেন। যদিও আপনি ক্লোবার্বিংয়ের পরে এটি সংরক্ষণ করেন না SYS_WRITE। হুম, পরিবর্তে 0, আপনি SYS_WRITEবনাম ব্যবহার করতে পারেন 1, যেহেতু cmp al, imm8একই আকার test al,al
পিটার কর্ডস

আপনি কি দ্বিতীয়টি না করে '\n'অ্যারেতে রেখে mov byte [ecx + edx], '\n'দিতে পারেন write()? (এবং মুদ্রণের পরে দৈর্ঘ্য হ্রাস?) আপনাকে কয়েকটি নির্দেশিকা বাঁচাতে পারে।
পিটার

প্রকৃতপক্ষে, print()বর্তমানে এটি ছেড়ে '\n'যায় eaxযা থেকে আলাদা SYS_WRITE, তাই আপনি এখনও এটি পরীক্ষা করতে পারেন। আমি ভেবেছিলাম আপনি সংরক্ষণ / পুনরুদ্ধার করছেন eaxতবে এটি কেবল একটি ধ্রুবক অনুলিপি করে বাইটগুলি সংরক্ষণ করছিল। দীর্ঘ স্ট্রিংয়ের জন্য, sys_write()ইএক্সের উচ্চ বাইটগুলি শূন্য-শূন্য ছাড়তে পারে, যাতে দুর্ভাগ্যক্রমে কেবল ব্যবহার না করেই বাতিল হয়ে যায় mov al, SYS_WRITE
পিটার

@ পিটারকর্ডস আসলে হ্যাঁ, mov al, 1বহিরাগত ছিল। -২ বাইট এখন, ধন্যবাদ।
রুসলান

একটি রেজিস্টার কলিং কনভেনশন আপনাকে বোঝার নির্দেশাবলী সংরক্ষণ করবে। কোড-গল্ফে, একটি কাস্টম কলিং কনভেনশন হ'ল এএসএমের জন্য সাধারণত ন্যায্য খেলা। ওওহ, যদি আপনি বরং স্ট্যান্ড-আরোগুলি কলিং কনভেনশনটি গল্ফ করেন তবে এটিও আকর্ষণীয়।
পিটার

2

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

আমি শুরুতে একটি অতিরিক্ত স্থান যুক্ত করি যাতে এটি স্থানটি নিয়ে যায় এবং কোনও অতিরিক্ত কোড ছাড়াই আসলটি দেখায়।

কীনা এটিতে নতুন ... পিএইচপি ফাইলের শুরুতে <? পিএইচপি এবং স্পেসে 6 টি অতিরিক্ত বাইট যুক্ত হবে বা আমি কী বিনামূল্যে পাব?

$s=" $argn";while($r!=$s){$r=$s;if($s[0]==" ")echo($s=substr($s,1))."
";if($s[-1]==" ")echo($s=substr($s,0,-1))."
";}

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


1
আপনার পদ্ধতিটি ব্যবহার করে 6 বাইট হ্রাস করা যেতে পারে: এটি অনলাইনে চেষ্টা করুন!
রাত 2

1
আপনি পিএইচপি এর খোলার ট্যাগটি বাদ দিতে পারেন যেহেতু আপনি এটির মতো একটি আদেশ দিয়ে এটি চালাতে পারেন: php -r "echo 1;"তবে আপনি যদি কিছু ব্যবহার করতে চান <?=1;তবে ট্যাগটি বাইটস গণনায় অন্তর্ভুক্ত করতে হবে।
রাত 2

1

পাইথ , 28 বাইট

QW<lrKQ6lQ=hZ?&%Z2qdhQ=tQ=PQ

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

ব্যাখ্যা

QW<lrKQ6lQ=hZ?&%Z2qdhQ=tQ=PQ   ~ Full program. Q is autoinitialized to input.

Q                              ~ Output the input.
 W<lrKQ6lQ                     ~ Loop while the condition is met.
  <                            ~ Is smaller?
   lrKQ6                       ~ The length of the original input, stripped on both sides.
        lQ                     ~ The length of the current Q.
          =hZ                  ~ Increment a variable Z, initially 0
             ?&%Z2qdhQ         ~ If Z % 2 == 1 and Q[0] == " ", then:
                      =tQ      ~ Make Q equal to Q[1:] and output, else:
                         =PQ   ~ Make Q equal to Q[:-1] and output.

1

পাইথন 2 , 79 বাইট

-1 বাইট @ জোনাথনফ্রেচকে ধন্যবাদ

f=lambda s,i=1:[s]+(s>i*'!'and'!'>s[-1]and f(s[:-1])or'!'>s and f(s[1:],0)or[])

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

পরীক্ষা মামলা প্রতিস্থাপন "."সঙ্গে " "ফাংশন কলিং এবং প্রতিস্থাপিত সামনে " "ফিরে "."স্বচ্ছতার জন্য ফলাফল প্রিন্ট করার পূর্বে।


'!'*i and-> i*'!'and
জোনাথন ফ্রেচ


1

অক্টাভা , 89 বাইট

s=input('');while any(s([1,end])<33)if s(1)<33,s(1)=[],end,if s(end)<33,s(end)=[],end,end

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

আমি পরে একটি ব্যাখ্যা যুক্ত করব, যখন আমার সময় হবে। আমি যদি পদ্ধতিটি পুরোপুরি পরিবর্তন করি তবে আমি কিছু বাইটগুলি গল্ফ করতে সক্ষম হতে পারি, তবে দুর্ভাগ্যজনকভাবে আমি দেখতে পাচ্ছি না।

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


এটি দিয়ে আউটপুট বৈধ s = ...? (সাধারণ প্রশ্ন, আমি জানি)
লুইস মেন্ডো

যাইহোক, দেখুন আপনি কয়েকটি বাইট সরিয়ে ফেলতে পারেন কিনা :
লুইস মেন্ডো

1

ব্যাশ, 98 94 বাইট

সিকোয়েন্সগুলির পরিবর্তে সাবশেল ব্যবহার করে 4 টি বাইট সংরক্ষণ করা হয়েছে (খারাপ অভিনয়)

r()(s=$1;[[ $s = $b ]]||([[ $s = $a ]]||echo "$s"
b=$a a=$s;((i=!i))&&r "${s# }"||r "${s% }"))

প্রথম উত্তর

r(){ s=$1;[[ $s = $b ]]||{ [[ $s = $a ]]||echo "$s"
b=$a a=$s;((i=!i))&&r "${s# }"||r "${s% }";};}

!ইন্টারেক্টিভ মোডে অবশ্যই পালাতে হবে নোট করুন

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