অর্ধেক ফলস


19

কার্য

একটি খালি খালি অ্যারে দেওয়া 0এবং 1, এর রান দৈর্ঘ্য অর্ধেক করুন 0

ইনপুট

একটি অ্যারে 0এবং 1। গ্রহণযোগ্য বিন্যাস:

  • আপনার ভাষায় আসল অ্যারে
  • লাইনফিড-বিচ্ছিন্ন স্ট্রিং এর 0এবং1
  • এর সংক্ষিপ্ত স্ট্রিং 0এবং1
  • অন্য কোনও যুক্তিসঙ্গত বিন্যাস

উদাহরণস্বরূপ, নিম্নলিখিত তিনটি ইনপুট সমস্ত গ্রহণযোগ্য:

  • [1, 0, 0, 1]
  • "1\n0\n0\n1"(যেখানে \nলাইনফিড U + 000A রয়েছে)
  • "1001"

আপনি ধরে নিতে পারেন যে রানগুলির দৈর্ঘ্য আরও বেশি 0হবে ।

আউটপুট

উপরের গ্রহণযোগ্য বিন্যাসে একটি অ্যারে 0এবং 1

Testcases

input ↦ output
[1,0,0,1,0,0,1] ↦ [1,0,1,0,1]
[1,1,0,0,1,1,0,0,1] ↦ [1,1,0,1,1,0,1]
[1,1,0,0,1,1,1,0,0,1,1] ↦ [1,1,0,1,1,1,0,1,1]
[1,1,1] ↦ [1,1,1]
[0,0,1] ↦ [0,1]
[0,0] ↦ [0]
[1,1,1,0,0,0,0,1,1,1,1,0,0,1,0,0,1,1,0,0,1,1,1,1,0,0,1,0,0] ↦ [1,1,1,0,0,1,1,1,1,0,1,0,1,1,0,1,1,1,1,0,1,0]

স্কোরিং

এটি । বাইট জিতে সংক্ষিপ্ত উত্তর।

স্ট্যান্ডার্ড লুফোলস প্রযোজ্য।


শেষ টেস্টকেসে, শূন্যদের রানগুলির দৈর্ঘ্যও কি নয়?
OldBunny2800

@ OldBunny2800 পরীক্ষার কেসটি মনোযোগ সহকারে পড়ুন; 0-রানের দৈর্ঘ্য 4, 2, 2, 2, 2 এবং 2 হয়
হাইপার নিউট্রিনো

আমরা নিতে পারি trueএবং falseপরিবর্তে 1এবং 0?
সাইওস

@ কোয়েস কোন ভাষা?
ফাঁস নুন

@ ল্যাকইনন রুবি, যা 0সত্যবাদী বলে মনে করে।
সাইওস

উত্তর:



11

05 এ বি 1 ই , 5 বাইট

00¤.:

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

ব্যাখ্যা

00     # push 00
  ¤    # tail, pushes 0
   .:  # replace

2
এটা সহজ; কেন আমি এটা ভেবে দেখিনি?
ফাঁস নুন

00কি এক অদ্ভুত আচরণ ...
এরিক দি আউটগলফার

@EriktheOutgolfer: আনুক্রমিক সংখ্যা, একটি সংখ্যা গঠন করতে ঘনিভূত হয়, তাই 11এগারো এবং নয় 1,1। এর একটি পার্শ্ব প্রতিক্রিয়া এটি এর পরিবর্তে 00হয়ে যায় :)000,0
এমিগিনা

@ এমিগনা আমি আশা করতাম এটি হয়ে উঠবে 0বা 0 0পরিবর্তে, যাই হোক না কেন।
এরিক আউটগল্ফার

7

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

f(0:0:r)=0:f r
f(x:r)=x:f r
f e=e

এটি অনলাইন চেষ্টা করুন! ব্যবহার: f[1,1,0,0,1,1,0,0,1]। তালিকার উপরে আইট্রেট করে এবং পরপর দুটি শূন্যকে এক শূন্য দ্বারা প্রতিস্থাপন করে।


আমি অনুভব করি যে এটি প্রোলগ
লিকি নুন

7

সি (জিসিসি) , 35 বাইট

f(char*s){while(*s)putchar(*s),*s++-48?:s++;}

48 হল '0' এর আসকি কোড

নীলের পরামর্শ অনুসারে 43 বাইটের আরও ভাল সংস্করণ

f(char*s){while(*s)putchar(*s),s+=2-*s%2;}

এবার আরও 40 টি বাইট (আবার নীল ও ভিজ্যুয়ালমেলনের পরামর্শ অনুসারে) :)

f(char*s){for(;*s;s+=50-*s)putchar(*s);}

এবং তারপরে খালেদ.কে ধন্যবাদ 35 বাইট

f(char*s){*s&&f(s+50-putchar(*s));}

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


1
চান s+=2-*s%2কাজ করে?
নীল

1
আমি যদি সঠিকভাবে গণনা করি তবে আমি মনে করি for(;*s;s+=2-*s%2)putchar(*s);অন্য একটি বাইট সংরক্ষণ করে।
নিল

1
এর সাথে কী ভুল হবে s+=50-*s? যুগে যুগে সি করা হয়নি এবং সংজ্ঞায়িত আচরণটি চালিয়ে নিজেকে বিব্রত করতে চান না (সি # থেকে সেখানে যেখানে কিছুই নেই)
ভিজুয়েলমেলন

1
putcharদস্তাবেজের দিকে তাকিয়ে আপনি কি করতে পারেন f(char*s){for(;*s;s+=50-putchar(*s));}?
ভিজুয়ালমেলন

3
আপনি এটিকে পুনরাবৃত্ত করে 5 টি বাইট সংরক্ষণ করতে পারেনf(char*s){*s&&f(s+50-putchar(*s));}
খালেদ.কে


6

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

@(s)strrep(s,'00','0')

সমস্ত পরীক্ষার কেসগুলি এখানে যাচাই করুন।

এটি একটি অনামী কাজ '1001000011'যা ইনপুট হিসাবে ফর্ম্যাটটিতে একটি স্ট্রিং নিয়ে থাকে এবং একক শূন্যের সাথে পরপর দুটি শূন্যকে প্রতিস্থাপন করে।


6

জাভা, 50 বাইট

String f(String s){return s.replaceAll("00","0");}

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


1
একটি খুব ভাল ইনপুট পছন্দ! যাইহোক, যদি আপনি একটি জাভা 8+ সমাধান স্যুইচ করতে আগ্রহী হন, আপনি একটি ল্যামডা ব্যবহার করতে পারে: s->s.replaceAll("00","0")
Jakob

আরও ভাল, 3 বাইট সংরক্ষণ করার replaceপরিবর্তে ব্যবহার করুনreplaceAll
বেনজমিন আরউখার্ট

@BenjaminUrquhart replaceশুধুমাত্র প্রথম সংঘটন প্রতিস্থাপন করবে
Khaled.K

জাভাস্ক্রিপ্টে @ খালেদ.কে, হ্যাঁ জাভাতে, এটি সমস্ত ঘটনাকে প্রতিস্থাপন করে
বেনজামিন আরউখার্ট

5

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

f(h:t)=h:f(drop(1-h)t)
f e=e

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

খালি তালিকা না পাওয়া পর্যন্ত পুনরাবৃত্তভাবে প্রথম উপাদানটি গ্রহণ করে, প্রথমটি শূন্য হলে দ্বিতীয়টি বাদ দেয়। যদি প্রথম এন্ট্রি হয় h, তবে প্রথমটিকে 1-hবাকি অংশ থেকে বাদ দেওয়া হয়।


5

জাপট , 7 6 5 বাইট

d'0²0

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

ইনপুটটিতে দুটি শূন্যের প্রতিটি রানকে কেবল এক শূন্য দ্বারা প্রতিস্থাপন করে। স্ট্রিং ইনপুট (যেমন "1001001") ব্যবহার করে ।


1
নিস! আপনার 'আমার এমনকি ভাবার দরকার নেই
ETH প্রোডাকশনগুলি

ওহ, আপনি :-) "00"দিয়ে প্রতিস্থাপন করে আরেকটি বাইট সংরক্ষণ করতে পারেন'0²
ETH প্রোডাকশনগুলি

আচ্ছা, এটা অদ্ভুত। ধন্যবাদ যদিও!
লুক 13


4

এলিস , 13 বাইট

/oe00/
@iS0e\

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

ব্যাখ্যা

/.../
@...\

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

ie00e0So@

এটি একটি সরল স্ট্রিং প্রতিস্থাপন:

i   Read all input.
e   Push an empty string.
00  Append two zeros to create the string "00".
e   Push an empty string.
0   Append a zero to create the string "0".
S   Substitute all occurrences of "00" in the input with "0".
o   Output the result.   
@   Terminate the program.

দুটি স্ট্রিংকে ধাক্কা দেওয়ার আরও কয়েকটি উপায় আছে, যেমন '00'0বা e000t, তবে আমি সেখানে 5 টি বাইট পিটানোর মতো কোনও কিছুই পাইনি (এবং প্রোগ্রামটি সংক্ষিপ্ত করতে সক্ষম হতে আমার দুটি বাইট মুভ করতে হবে)।


2
দেখে মনে হচ্ছে আপনি সম্প্রতি অ্যালিসের প্রেমে
পড়েছেন

6
@ লেকিউনুন দয়া করে আমার স্ত্রীকে বলবেন না ...
মার্টিন এন্ডার

@ মার্টিনএন্ডার আমি মিসেস এন্ডারকে এটি বলতে চাই!
এরিক আউটগল্ফার

3

একটি দীর্ঘস্থায়ী উত্তর, তবে আমি যা প্রত্যাশা করছিলাম তা নয় ...
লিকি নুন

*অপারেটরটি ব্যবহার করার জন্য দুর্দান্ত কৌশল ।
ফাঁস নুন


3

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

স্ট্রিং হিসাবে ইনপুট নেয় এবং একটি স্ট্রিং প্রদান করে।

s=>s.replace(/00/g,0)

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

f=
s=>s.replace(/00/g,0)
i.addEventListener("input",_=>o.innerText=f(i.value))
console.log(f("1001001")) // "10101"
console.log(f("110011001")) // "1101101"
console.log(f("11001110011")) // "110111011"
console.log(f("111")) // "111"
console.log(f("001")) // "01"
console.log(f("00")) // "0"
console.log(f("11100001111001001100111100100")) // "1110011110101101111010"
<input id=i><pre id=o>


3

লুয়া, 33 বাইট

print((io.read():gsub("00","0")))

ইনপুট দিয়ে একটি স্ট্রিং নেয় এবং ডাবল জিরো ঘনীভূত করে। সহজ।


3

জেলি , 8 বাইট

ṣ1j1,1m2

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

সম্ভবত .replace()একইরকম ভাষা ছাড়া অন্য উত্তরগুলি এই কৌশলটি ব্যবহার করতে পারে।

ব্যাখ্যা

ṣ1j1,1m2 - (duplicates the 1s, then halves all lengths)
ṣ1       - split by the element 1
  j1,1   - join the elements with the two-element list 1,1
      m2 - get every second element

3

অ্যালিস , 12 10 বাইট

মার্টিন ইন্ডারকে 2 বাইট সংরক্ষণ করা হয়েছে thanks

i.h%.7%$io

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

ব্যাখ্যা

এটি কার্ডিনাল মোডে অপারেটিং করা একটি 1-ডি কোড, সুতরাং এর প্রবাহ অনুসরণ করা সহজ:

i                   Read a byte from input (pushes -1 on EOF)
 .h                 Duplicate it and add 1 to the copy
   %                Compute n%(n+1). This will exit with an error on n==-1
                    and return n for any non-negative n.
    .7%             Duplicate the input again and compute its value modulo 7
                    This returns 6 for '0' (unicode value 48) and 0 for '1'
                    (unicode value 49)
       $i           If this last result was not 0, input another number.
                    This ignores every other '0' in the input
                    and moves to the following number (another '0')
         o          Output the last byte read

                    At the end, wrap back to the beginning of the line

আপনি আসলে আরও দুটি বাইট সংরক্ষণ করতে পারেনi.h%...
মার্টিন এন্ডার

@ মার্টিনের মধ্যে আপনি একজন দুষ্ট ব্যক্তি, মানুষকে নোংরা খেলা শেখানোর জন্য ঘুরে বেড়াচ্ছেন ...: ডি
লিও

2

পাইথন (তালিকা I / O), 36 বাইট

f=lambda l:l and l[:1]+f(l[2-l[0]:])

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

পুনরাবৃত্তভাবে প্রথম উপাদানটি নেয়, তারপরে প্রথমটি শূন্য হলে বাকীটি অপসারণ করে।


38 বাইট:

lambda l:eval(`l`.replace('0, 0','0'))

অনলাইনে এটি ব্যবহার করে দেখুন এটি একটি পাইথন তালিকা গ্রহণ করে এবং তার স্ট্রিং উপস্থাপনায় প্রতিস্থাপন করে পাইথন তালিকার আউটপুট দেয়। স্ট্রিং আই / ও আরও সরাসরি এবং খাটো সমাধানের অনুমতি দেয়, যেমন

lambda s:s.replace('00','0')

'1001' বিন্যাসের জন্য ।


নির্দিষ্ট উত্তর ফর্ম্যাট সহ প্রথম উত্তর।
ফাঁস নুন

1
স্ট্রিং ইনপুট / আউটপুট হয় মঞ্জুরিপ্রাপ্ত। lambda s:s.replace('00','0')জরিমানা করা উচিত.
জোনাথন অ্যালান


2

পার্ল 5, 7 + 1 (-p পতাকা) = 8 বাইট

<>if/0/

নিউলাইন পৃথক সংখ্যা হিসাবে ইনপুট নেয় T পরের লাইনটি যদি কোনও শূন্য দেখায় তবে এড়িয়ে যায়।



2

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

FFOZt

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

ব্যাখ্যা

এটি স্টিভি গ্রিফিনের অক্টাভ উত্তরের মতো :

FF     % Push [0 0]
O      % Push 0
Zt     % Implicitly take input. Replace [0 0] by 0. Implicitly display

8 বাইট

vy~f2L)(

এটি স্ট্রিং / অ্যারে রিপ্লেসমেন্ট বিল্টিন এড়িয়ে চলে।

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

ব্যাখ্যা

[1,0,0,1,0,0,1]উদাহরণ হিসাবে ইনপুট বিবেচনা করুন :

v      % Concatenate stack (which is empty): pushes []
       % STACK: []
y      % Implicit input. Duplicate from below
       % STACK: [1,0,0,1,0,0,1], [], [1,0,0,1,0,0,1]
~f     % Negate, find: gives indices of zeros
       % STACK: [1,0,0,1,0,0,1], [], [2,3,5,6]
2L     % Push [2,2,1i]. As an index, this is interpreted as 2:2:end
       % STACK: [1,0,0,1,0,0,1], [], [2,3,5,6], [2,2,1i]
)      % Reference indexing. This selects the even-indexed entries
       % STACK: [1,0,0,1,0,0,1], [], [3,6]
(      % Assignment indexing. This deletes the specified entries
       % (assigns them the empty array). Implicitly display
       % STACK: [1,0,1,0,1]

1

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

ḅ{cẹ|ḍh}ᵐc

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

নিশ্চিত না যে এটি এখনও সর্বোত্তম…

ব্যাখ্যা

এটি cপূর্ণসংখ্যার তালিকার শীর্ষস্থানীয় শূন্যগুলিতে ব্যর্থ হ'ল বাগটি ব্যবহার করে ।

ḅ               Blocks; group consecutive equal elements together
 {     }ᵐ       Map on each block:
  c               It is possible to concatenate the block into an int (i.e. it contains 1s)
   ẹ              Split it again into a list of 1s
    |             Else
     ḍh           Dichotomize and take the head
         c      Concatenate the blocks into a single list

কিভাবে এটি একটি বাগ?
লিকি নুন

@LeakyNun আমরা কনক্যাটেনেট করতে সক্ষম হওয়া উচিত [0,0,4,2]মধ্যে 42। শীর্ষস্থানীয় জিরোগুলি এখনই এটি ব্যর্থ করে দেয় কারণ ইনপুটটি পরিবর্তনশীল হলে অসীম নেতৃস্থানীয় শূন্যগুলি প্রতিরোধ করার জন্য এটি এখানে রয়েছে তবে এখানে ইনপুট পুরোপুরি ভিত্তিতে তৈরি হয়েছে যাতে সীমাবদ্ধতার অস্তিত্ব না থাকে।

আপনি একটি prolog উত্তর লিখবেন?
ফাঁস নুন

1

সি #, 191 বাইট

string a(string s){var l=(s+'1').ToCharArray();s="";int b=0;for(int i=0;i<l.Length;i++){if(l[i]=='1'){if(b>0){s+=new string('0',b/2);b=0;}s+=l[i];}else b++;}return s.Substring(0,s.Length-1);}

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

এটি পরিষ্কার বা সংক্ষিপ্ত নয়, তবে এটি কার্যকর।

অক্ষরের একটি সংক্ষিপ্ত স্ট্রিং হিসাবে ইনপুট নেয়, একই ফর্ম্যাটে আউটপুট

ব্যাখ্যা:

string a(string s){                  //Define method a that takes input string s and returns a string
  var l=(s+'1').ToCharArray();       //Add a 1 to the end of s and split into char array l
  s="";                              //Empty s
  int b=0;                           //Initialize int b with value 0
  for(int i=0;i<l.Length;i++){       //Loop through l
    if(l[i]=='1'){                   //If current char is 1
      if(b>0){                       //If b is not 0
        s+=new string('0',b/2);      //Add half the amount of 0s we've counted to s
        b=0;                         //Reset b
      }                              //End if b is not 0
      s+=l[i];                       //Add current char to s
    }                                //End if current char is 1
    else b++;                        //If current char is not 1, increment b
  }                                  //End loop
  return s.Substring(0,s.Length-1);  //Return string minus last char
}                                    //End method

বিঃদ্রঃ

হ্যাঁ আমি সচেতন যে এটি কেবল s.Replace("00","0")ব্যবহার করেই করা যেতে পারে, আমার উদ্দেশ্য ছিল সুস্পষ্ট সমাধানটি ব্যবহার করা এড়ানো। সর্বোপরি, পিপিসিজির পুরো পয়েন্টটি মজা করা উচিত, তাই না? ;)


@ মিঃ এক্সকোডার এটি সত্য নয়। এটি ভাষা-র অন্তর্নির্মিত Replace আমি সি # ব্যবহার না করে আপনি যেমন পেতে পারেন তেমনই গল্ফ হয় তাই আমি খুব কম সংখ্যক কোড প্রাপ্তি সম্পর্কে বিশেষত জেলির মতো ভাষা নিয়ে কোনও বিভ্রান্তির অন্তর্ভুক্ত নই, তাই কিছুটা মজাও করতে পারে প্রক্রিয়া.
স্কিডদেব

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

@ মিঃ এক্সকোডার কোনও কঠোর অনুভূতি নেই, শেষ পর্যন্ত আমরা সবাই মজাদার জন্য এবং কোডটি যতটা সম্ভব সংকোচনের অপ্রয়োজনীয় দক্ষতার উপর নমনীয় করার জন্য এখানে আছি;)
স্কিডসদেব

আপনি প্রতিস্থাপন ছাড়াই এর চেয়ে অনেক কম করতে পারেন ! string a(string s){var r="";for(int i=0;i<s.Length;i+=50-s[i])r+=s[i];return r;} (দেখে মনে হচ্ছে এটি মূলত সি উত্তর)
ভিজুয়ালমেলন


1

অজানা - 18 বাইট

প্রথমে অ্যাওকের সাথে কিছু করার চেষ্টা করুন যাতে এটি আরও গল্ফ করা সম্ভব হয়।

{gsub(00,0);print}

ব্যবহার: echo "1001001" | awk '{gsub(00,0);print}'


1

ব্যাচ, 24 বাইট

@set/ps=
@echo %s:00=0%

STDIN এ ইনপুট নেয়। কিছুটা হলেও প্রতিযোগিতামূলক একবার


1

সাধারণ লিপ, এসবিসিএল, 48 32 বাইট

-16 বাইট জুলিয়ান ওল্ফ ধন্যবাদ

(format t"~{~[0~*~;1~]~}"(read))

ইনপুট:

(1 0 0 0 0 1 1 1 0 0)

আউটপুট:

1001110

ব্যাখ্যা

আমরা ইনপুট তালিকা পড়ি। তালিকা formatফাংশনে ব্যবহৃত হয় । 1উপাদানটি যদি হয় 1এবং আউটপুট 0এবং তালিকার পরবর্তী উপাদানটি বাদ দিলে আমরা এর মাধ্যমে লুপ করি 0


এর ~[পরিবর্তে ব্যবহার করে ~:[আপনাকে সরাসরি 0 এবং 1 দিয়ে সূচী করতে দেয় যা আপনাকে একগুচ্ছ বাইটস সংরক্ষণ করতে পারে
জুলিয়ান ওল্ফ

@ জুলিয়ানওল্ফ আপনাকে ধন্যবাদ!

1

গণিত, 24 বাইট

StringReplace["00"->"0"]

একটি ফাংশন যা "0"গুলি এবং "1"এর একটি স্ট্রিং প্রত্যাশা করে এবং একই ধরণের স্ট্রিং প্রদান করে। স্ব-ব্যাখ্যামূলক বাক্য গঠন। গণিতের অনেকগুলি রূপান্তর বিল্টিন রয়েছে; কীটি হ'ল এটি ব্যবহার করা যা প্রতিটি প্রাসঙ্গিক subexpression (বিপরীত /.) রূপান্তর করে তবে কেবল একবারে প্রকাশ (বিপরীত //.) হয়ে যায়।


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