একটি মুদ্রা মেলা তৈরি


36

আপনার একটি মুদ্রা রয়েছে যা উত্পাদন করে 0বা 1। তবে আপনি সন্দেহ করেন যে মুদ্রা পক্ষপাতদুষ্ট হতে পারে , যার অর্থ 0(বা 1) এর সম্ভাব্যতা অবশ্যই 1/2 নয়।

একজন সুপরিচিত করার জন্য একটি বাক্সে "রুপান্তর" একটি পক্ষপাতমূলক মুদ্রা পদ্ধতি ন্যায্য মুদ্রা (সমান সম্ভাবনা ফলাফল প্রাপ্ত করার জন্য বড়), যেমন ভন নিউম্যান দ্বারা প্রস্তাবিত নিম্নরূপ, করা হয়। দুটি কয়েন টসসের ব্লকের দুটি মান মুছে না দেওয়া পর্যন্ত ব্লক তৈরি করুন (অ-ওভারল্যাপিং); এবং সেই ব্লকে প্রথম মান আউটপুট করে (দ্বিতীয় মানটিও করবে, তবে এই চ্যালেঞ্জের উদ্দেশ্যে আমরা প্রথমটি বেছে নিই)। স্বজ্ঞাতভাবে, এর 1চেয়ে বেশি সম্ভাবনা থাকতে পারে 0, 01এবং 10একইভাবে সম্ভবতও হতে পারে।

উদাহরণস্বরূপ, ইনপুটটি 1110...প্রথম ব্লকটি বাতিল করবে, তারপরে 1দ্বিতীয় ব্লক থেকে একটি উত্পাদন করবে ...

এই পদ্ধতিটি ব্যয়বহুল , কারণ একক ফলাফল তৈরি করতে বেশ কয়েকটি কয়েন টসস গ্রাস করা হয়।

চ্যালেঞ্জ

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

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

বিধি

ইনপুটটিতে কোনও ধরণের অ-নেতিবাচক সংখ্যা থাকতে পারে, অগত্যা ইতিবাচক বা এমনকি নয়।

ইনপুট ফর্ম্যাটটি হতে পারে:

  • শূন্য এবং বেশী একটি অ্যারে;
  • জিরোগুলির একটি স্ট্রিং এবং একটি alচ্ছিক বিভাজক সহ ones

আউটপুট ফর্ম্যাট হতে পারে:

  • জিরো এবং একটি স্ট্রিং, বিভাজক বা তার সাথে ছাড়া;
  • শূন্য এবং বেশী একটি অ্যারে;
  • একক শূন্য বা একযুক্ত স্ট্রিংগুলি, নিউলাইন দ্বারা পৃথক;
  • আপনার ভাষা অনুসারে যে কোনও অনুরূপ, যুক্তিসঙ্গত ফর্ম্যাট।

কোড গল্ফ। সবচেয়ে কম বাইট জেতা

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

ইনপুট এবং আউটপুট এখানে স্ট্রিং হিসাবে ধরে নেওয়া হয়।

Input         -->  Output

'1110'        -->  '1'
'11000110'    -->  '01'
'1100011'     -->  '0'
'00'          -->  ''
'1'           -->  ''
''            -->  ''
'1101001'     -->  '0'
'1011101010'  -->  '1111'

প্রতিটি ইনপুট (যেমন বর্তমান আউটপুট বিটওয়াইস না) জন্য দুটি সম্ভাব্য আউটপুট থাকা উচিত নয়?
wizzwizz4

1
@ wizzwizz4 আপনি একটি বা অন্য নিতে পারেন, তবে উভয়ই নয় (কারণ তারা পরিসংখ্যানগতভাবে স্বতন্ত্র থাকবেন না)। এই চ্যালেঞ্জটিতে আমি নির্বিচারে প্রথমটি বেছে নিয়েছি
লুইস মেন্ডো



1
@ ডোনমুসলি ম্যান, সেই কাগজে থাকা সতর্কতার তালিকা চিত্তাকর্ষক : পি
জিওবিটস

উত্তর:



14

রেটিনা , 16 14 বাইট

(.)\1|(.)?.
$2

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

ব্যাখ্যা

এটি মোটামুটি সহজ। কোডটি (.)\1|(.)?.দ্বিতীয় গ্রুপটি যা কিছু ক্যাপচার করেছে তার সাথে সমস্ত (অ-ওভারল্যাপিং) ম্যাচ প্রতিস্থাপন করে একটি একক রেজেক্স বিকল্পটিকে সংজ্ঞায়িত করে। এটি একটিতে তিনটি পৃথক কেস একত্রিত করে:

(.)\1 --> <empty>

যদি দুটি পুনরাবৃত্ত অঙ্কগুলি সমান হয়, আমরা সেগুলি স্ট্রিং থেকে সরিয়ে ফেলি (কারণ গ্রুপ 2 অপব্যবহৃত) is

(.).  --> $2

অন্যথায়, আমরা যদি দুটি অক্ষরের সাথে মেলে ধরতে পারি, তবে উভয়টিকে প্রথমটির সাথে প্রতিস্থাপন করে দ্বিতীয়টিকে সরিয়ে ফেলুন। যদি এটি না হয় ?তবে গ্রুপটি বাদ দেবে:

.     --> <empty>

এটি কেবল তখনই ঘটে যখন কোনও অযৌক্তিক ট্রেইলিং চরিত্র থাকে, যা সরানো হয়।


এটি আমি দেখেছি সংক্ষিপ্ততম রেটিনা উত্তর হতে পারে :-)
লুইস মেন্ডো

9
@ ডোনমুসলি উম্মম ...
মার্টিন এন্ডার

11

ল্যাবরেথ , 21 12 বাইট

"(. :
""*$,@

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

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

নীচে-বামেও "একটি স্থান হতে পারে, তবে এটি সেখানে থাকার কারণে ব্যাখ্যাটি সহজতর হয়।

ব্যাখ্যা

এটি একটি সামান্য কৌশলযুক্ত, তাই এটি চিত্র সহ। তবে প্রথমে একটি দ্রুত প্রাইমার:

  • ল্যাবরেথ একটি স্ট্যাক-ভিত্তিক 2D ভাষা। মেমোরিতে একটি প্রধান স্ট্যাক এবং একটি সহায়ক স্ট্যাক থাকে।
  • লাইব্রের্থের স্ট্যাকগুলি নিবিড় এবং শূন্যে ভরা, সুতরাং খালি স্ট্যাকের উপর অপারেশন করা কোনও ত্রুটি নয়।
  • প্রতিটি সংযোগে, যেখানে নির্দেশ পয়েন্টারটি যাওয়ার জন্য দুটি বা ততোধিক পাথ রয়েছে, মূল স্ট্যাকের শীর্ষে কোথায় যেতে হবে তা নির্ধারণ করার জন্য পরীক্ষা করা হয়। Gণাত্মক বাম দিকে ঘুরছে, শূন্যটি সরাসরি এগিয়ে এবং ধনাত্মক ডানদিকে বাঁকানো। যদি কোনও পালা ব্যর্থ হয়, পয়েন্টারটি অন্য দিকে ঘোরার চেষ্টা করে।

সেটআপ

এখানে চিত্র বর্ণনা লিখুন

প্রোগ্রামটি উপরের-বামে শুরু হয় ", যা কোনও অপশন নয়। তারপরে আমরা সম্পাদন করি:

(        Decrement a bottom zero to -1. Since -1 is negative we try to turn 
         left at this junction, fail, and turn right instead.
"        No-op junction, turn left
*        Multiply top of stack (-1) with a 0 at bottom of stack, giving 0.
         This makes us go straight ahead at this junction.
$        Bitwise xor (of 0 and 0)

এটি স্ট্যাকটিকে একক 0 দিয়ে ফেলেছে যা ল্যাবরেথের উদ্দেশ্যে খালি হিসাবে ভাল।

ইনপুট এবং সমাপ্তি পড়া হচ্ছে

এখানে চিত্র বর্ণনা লিখুন

,ইনপুট থেকে একটি গৃহস্থালি সার্চ, 48 বা 49 এর জন্য ফিরে 0বা 1যথাক্রমে, এবং -1 ফাইলের শেষে হয়। যেহেতু এটি নঞ্জেরো, তাই যে কোনও উপায়ে আমরা সেইটিতে পরিণত করি :যা স্ট্যাকের শীর্ষটিকে নকল করে।

:, একটি মৃত শেষ হয় তাই আমরা চারপাশে ঘুরিয়ে এবং চালানো ,আরো একবার। এখন যদি শেষ ইনপুট ফাইলের শেষে ছিল, তারপর আমরা বাম এবং সাথে সাথে সমাপ্ত ঘুরিয়ে @, অন্যথায় আমরা ডান মত খুঁজছেন স্ট্যাক দিয়ে ধাপে, [a a b](যেখানে a, bদুই অক্ষর আছে)।

মুদ্রা টস ব্যাখ্যা

এখানে চিত্র বর্ণনা লিখুন

যদি আমরা শেষ না করি তবে আমাদের পরবর্তী পদক্ষেপটি $আবার (বিটওয়াইজ জোর) চালানো exec যদি ইনপুট অক্ষর একই হয়, অন্যথায় 1 টি দেয়। এরপরে আমরা a0 বা অন্যটি দিয়ে এই ফলাফলটির সাথে গুণ করি a। যেহেতু এটি *একটি জংশনে রয়েছে তাই এই শীর্ষ স্ট্যাক মানটি পরবর্তী কী ঘটে তা নির্ধারণ করে।

0 ক্ষেত্রে, আমরা সরাসরি এগিয়ে যাই এবং "একটি (ক্ষয় সম্পাদন করার আগে তিনটি অপসকে কার্যকর করি। সেটআপের মতো এটি আমাদের আরও ঘুরতে "*$পড়তে প্রস্তুত রেখে দেয় এবং চালিত করে।

এখানে চিত্র বর্ণনা লিখুন

অন্যথায়, aক্ষেত্রে, আমরা মোড়টি ডান দিকে ঘুরছি যেহেতু aইতিবাচক (48 বা 49)। .স্ট্যাকটি খালি রেখে চরের আউটপুট দেয় এবং (0 থেকে -1 ঘুরিয়ে স্ট্যাকের শীর্ষে হ্রাস পায়। আবার, এটি আমাদের বাম দিকে পরিণত করে, "*$সেটআপের মতো কার্যকর করে, আমাদের আরও ইনপুট পড়ার জন্য প্রস্তুত রাখে।


...কি দারুন. এইমাত্র. কৌতূহলের বাইরে ... আপনি প্রতিটি লাইন থেকে নেতৃস্থানীয় উক্তিটি সরিয়ে ফেললে কী হবে?
ETH প্রোডাকশনগুলি

@ ইথ প্রডাকশনগুলি দ্বিতীয় কলামটি আর কোনও জংশন নয়, সুতরাং আইপি (তখন .255 (-1 মডিউল 256) আউটপুট করে, কার্যকর করা শুরু করে । সুতরাং এটি ইতিমধ্যে সেখান থেকে শুরু করে ভুল হয়েছে, দুর্ভাগ্যক্রমে: পি
এসপি 3000

8

সিজেম, 10 8 বাইট

l2/{)-}%

এটি এখানে পরীক্ষা করুন।

ব্যাখ্যা

এটি একটি খুব সহজ সমাধান: প্রতিটি জোড়ায়, শেষ চরিত্রের সমস্ত উদাহরণ সরিয়ে ফেলুন। পুনরাবৃত্ত অঙ্কগুলি এবং অনির্দিষ্ট পেছনের অঙ্কগুলি সরানো হবে, যেহেতু অসম সংখ্যাগুলির কোনও জোড়ায় দ্বিতীয় সংখ্যা হবে:

"0"  --> ""
"1"  --> ""
"00" --> ""
"01" --> "0"
"10" --> "1"
"11" --> ""

এটি কেবলমাত্র আমাদের জন্য অনুসন্ধান করা অঙ্কগুলি ফেলে দেয়। কোডটি কীভাবে এটি গণনা করে তা এখানে:

l     e# Read input.
2/    e# Split into pairs. Odd inputs will yield a single-character string at the end.
{     e# Map this block over the pairs...
  )   e#   Pull the last character off the string.
  -   e#   Remove all occurrences of that character from the remainder (which is either
      e#   an empty string to begin with or a single-digit string).
}%

প্রোগ্রামটির শেষে তালিকাটি স্বয়ংক্রিয়ভাবে মুদ্রিত হলে খালি স্ট্রিংগুলি সহজেই বাদ দেওয়া যায়।


3
আপনি এবং @ ডোনমুসলিই কেবলমাত্র কোড ব্যতীত অন্যদের উত্তরগুলিতে কোনও ব্যাখ্যা সহ একমাত্র ব্যক্তি। ধন্যবাদ।
আর

7

পার্ল, 19 18 17 বাইট

@ মার্টিন বাটনার রেটিনা সমাধান 2 বাইট লাভের অনুপ্রেরণা জাগিয়ে তুলল

এর জন্য +1 অন্তর্ভুক্ত -p

STDIN এ ইনপুট দিয়ে চালান, যেমন perl -p fair.pl <<< 11000110

fair.pl:

s/(.)\1|.?\K.//g

এটি স্পেসিফিকেশনের (পরোক্ষ) অনুবাদ হওয়ায় এখানে ব্যাখ্যা করার মতো বেশি কিছু নেই:

  • (.)\1 যদি প্রথম 2 অঙ্ক একই হয় তবে এগুলি বাদ দিন
  • .\K. অন্যথায় প্রথম দুটি অঙ্ক আলাদা। ( \K) প্রথম রাখুন
  • .?\K.প্রথমটি alচ্ছিক ব্যতীত .। এটি স্ট্রিংয়ের শেষে একক ম্যাচের অনুমতি দেয় যা রক্ষিত অংশটি খালি থাকায় এটি বাতিল করা হয়

5

গণিত, 36 38 বাইট

-2- উপাদানগুলির তালিকাটি {0,1} বা {1,0 is কিনা তা নির্ধারণের জন্য @ LegionMammal978 এর কার্যকারিতা চুরি করার পরে -2

#&@@@Select[#~Partition~2,Tr@#==1&]&

আর্গুমেন্টটি পূর্ণসংখ্যার একটি তালিকা হিসাবে প্রত্যাশিত।


ওহ না, তিনটি গণিতে এক প্রশ্নের উত্তর!
ক্যালকুলেটরফলাইন

5

হেক্সাগনি , 23 21 বাইট

,){,/;(_\/'%<\{)/>~$>

দুচোখে:

    , ) { ,
   / ; ( _ \
  / ' % < \ {
 ) / > ~ $ > .
  . . . . . .
   . . . . .
    . . . .

এটি একটি ত্রুটি সহ শেষ হয়, তবে ত্রুটি বার্তাটি STDERR এ যায়।

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

মিররগুলির সংখ্যা বিচার করে এটিকে পার্শ্ব-দৈর্ঘ্য 3 এ ফিট করা সম্ভব হবে তবে এখন পর্যন্ত আমার ভাগ্য হয়নি।

ব্যাখ্যা

টিমউইর হেক্সাগনি কলরারের সাথে উত্পন্ন সাধারণ চিত্র এখানে রয়েছে :

এখানে চিত্র বর্ণনা লিখুন

প্রোগ্রামটি শুধুমাত্র তিনটি মেমরির প্রান্ত, লেবেলযুক্ত ব্যবহার একটি , বি , আর সি এখানে (Timwi এর ডায়াগ্রাম সৌজন্যে EsotericIDE ):

এখানে চিত্র বর্ণনা লিখুন

ফাঁসি কার্যকর হয় নীল পথে। /শুধু আয়না যে নির্দেশ পয়েন্টার (আইপি) পুনর্নির্দেশ হয়, প্রকৃত কোড হল:

,   Read character from STDIN into memory edge A.
)   Increment.
{   Move to memory edge B.
,   Read character from STDIN into memory edge B.
)   Increment.
'   Move to memory edge C.
%   Compute A mod B in memory edge C.

,প্রান্ত সেট হবে -1যদি আমরা ফাইলের শেষে আঘাত করেছি চরিত্র কোডের পরিবর্তে। যেহেতু আমরা উভয় ইনপুট বৃদ্ধি করছি যা সেগুলি সমান কিনা তা পরিবর্তন হয় না তবে এটি ইওএফকে রূপান্তরিত করে 0

আমরা সাম্যতা যাচাই করতে মডুলো ব্যবহার করি, কারণ এটি অসম অক্ষর এবং সমান অক্ষরের জন্য হয় 1বা 49(ধনাত্মক) 0। এটি প্রোগ্রামের শেষ হিসাবে কাজ করে, কারণ যখন আমাদের থাকে0 ইওএফ থেকে , শূন্য দ্বারা চেষ্টা করা বিভাগ ত্রুটি ঘটায়।

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

চরিত্রগুলি পৃথক হলে পরিবর্তে সবুজ পথ নেওয়া হবে। এই এক বিড়বিড়। এটি প্রথমে কোনও অনির্বাণে ঝাঁপ দেয় $, তারপরে /বাম প্রান্তে প্রায় আবৃত হয় , তারপরে ডান থেকে বামে দ্বিতীয় থেকে শেষ সারিটি ঘুরিয়ে দেয় এবং অবশেষে সোর্স কোডটির আকর্ষণীয় অংশটি আবার প্রবেশ করে {। কোডের একটি মূলত রৈখিক বিট রয়েছে, যা আমি একটি সেকেন্ডে ব্যাখ্যা করব, এর আগে $আইপি >দুটি পাথ আবার মার্জ করার জন্য ঝাঁপিয়ে পড়ে ।

কোডটির লিনিয়ার টুকরোটি এখানে:

{    Move to memory edge A.
(    Decrement to recover the actual character we read.
;    Print the character back to STDOUT.
'    Move to memory edge B.
~    Multiply the value there by -1, making it negative. This is
     necessary to ensure that the path correctly wraps back to the top.

মনে রাখবেন যে এই ক্ষেত্রে, পরবর্তী পুনরাবৃত্তির জন্য প্রান্তগুলির ভূমিকাগুলিও চক্রাকারে অদলবদল করা হয়, তবে বি এর সাথে এবং আরও অনেকের ভূমিকা গ্রহণ করে।



4

> <> , 11 বাইট

i:i:0(?;-?o

> <> এই সময়ে চ্যালেঞ্জ-এ-একবার-চ্যালেঞ্জ পড়ার পক্ষে বেশ উপযুক্ত :) এটি অনলাইনে চেষ্টা করুন!

i:            Read char and duplicate
i             Read char
:0(?;         Halt if last char was EOF
-             Subtract
?o            Output first char if the subtraction was non-zero (i.e. not equal)

নির্দেশের পয়েন্টারটি যখন কোনও লাইনের শেষের দিকে পৌঁছে যায় তখন এটি প্রায় শেষ হয়ে যায়।


-1 এ> <> প্রোগ্রামের জন্য যা কোনও >বা নেই<
লুইস মেন্ডো 6'16

3

পাইথন, 42 বাইট

f=lambda L:L[1:]and L[:L[0]^L[1]]+f(L[2:])

পুনরাবৃত্তি এবং বিটওয়াইজ জোর দিয়ে মজা করুন। ইনপুট হিসাবে 1 গুলি এবং 0 এর তালিকা নিয়ে থাকে T


3

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

s=>s.filter((c,i)=>++i%2&c!=s[i])

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

s=>s                // Take the input array.
.filter((c,i)=>   ) // Filter to only the chars that are both:
++i%2&              //  on an even index, and
c!=s[i]             //  not equal to the one after them.

অ্যারে হওয়ার জন্য ইনপুট প্রয়োজন হয়ে আপনি কিছু বাইট সংরক্ষণ করতে পারেন। (প্রশ্ন দ্বারা অনুমোদিত।)
মামা ফান রোল

@ মামাফুনরল টিপটির জন্য ধন্যবাদ!
ইটিএইচ প্রডাকশনস 6:36

3

প্রিলিওড , 12 বাইট

11(-(#!)?^?)

এটি এমন একটি দোভাষীকে অনুমান করে যা অক্ষরগুলি পড়ে এবং মুদ্রণ করে। আপনি সাজানোর চেষ্টা করতে পারেন অনলাইন। তবে সেই দোভাষী দু'টি পূর্ণসংখ্যা মুদ্রণ করে, সুতরাং প্রত্যেকের জন্য 0আপনি পাবেন 48এবং প্রত্যেকের পরিবর্তে 1আপনি পাবেন 49(এবং একটি লাইনফিড)।

ব্যাখ্যা

এটি খুব বিরল যে আপনি প্রিলিডে একটি লাইনে একটি অ-তুচ্ছ প্রোগ্রাম লিখতে পারেন (কারণ প্রিলেডকে টুরিং-কমপ্লিট হওয়ার জন্য একাধিক লাইনের বেশি প্রয়োজন)।

11      Push two 1s. We need something non-zero on the stack to enter the loop, and by
        pushing the same value twice, we make sure that the loop doesn't print anything
        on the first iteration.
(       Main loop...
  -       Subtract the last two values. This will be zero for equal values, and non-zero
          otherwise...
  (       This "loop" is simply used as a conditional: if the last two values were
          were equal, skip the code inside...
    #       Discard the conditional.
    !       Print the value below.
  )       The loop is exited because the value below is always zero.
  ?       Read the first character of the next pair from STDIN.
  ^       Duplicate it, so the lower copy can be printed.
  ?       Read the second character of the pair. This returns 0 at EOF, which
          terminates the loop.
)

3

পার্ল, 27 21 বাইট

say grep$_-chop,/../g

বাইট যোগ হয়েছে -nপতাকার ।

                /../g  match groups of two chars
    grep       ,       select/filter on...
           chop        remove the last character, mutating the string
        $_-            is it different than the remaining char?
                         (subtract it, empty string is falsy)
say                    output if so

টেস্ট:

llama@llama:~$ perl -nE 'say grep$_-chop,/../g'
1110
1
11000110
01
1100011
0
00

1



1101001
0
1011101010
1111

@ টোনহোপেলকে 6 বাইটের জন্য ধন্যবাদ !


আপনি পরীক্ষাটি সংক্ষিপ্ত করে কিছু বাইট অর্জন করতে পারেন:say grep$_-chop,/../g
টন হসপেল

@ টনহোপেল খুব সুন্দর, ধন্যবাদ!
ডুরকনব

3

বেফঞ্জ 93 , 16 বাইট

~:~:0`!#@_->#,_$

কমপ্যাক্টনেসের জন্য একটি ওয়ান-লাইনার। এই অনলাইন দোভাষী ব্যবহার করে পরীক্ষিত ।

~:                     Read input char a and dup
  ~                    Read input char b (-1 on EOF)
   :0`!                Push 1 if b <= 0, 0 otherwise
       #@_             Halt if b <= 0 (i.e. EOF)
          -            Subtract to check whether a != b
           >#,_$       Output a if so

শেষ অংশটি এই সত্যটি ব্যবহার করে যে একটি ফাঁকা বেফঞ্জ -৩৩ স্ট্যাক থেকে পপিংয়ের ফলন 0 হয়

যদি a != b, আমরা পারফর্ম

>                      Move rightward
#                      Bridge: skip next
_                      Horizontal if - go right if 0, else left. But a != b, so we go left
,                      Output a
#                      Bridge: skip next
-                      Subtract (0 - 0 = 0)
_                      If: go right since 0 is popped
>#                     Go right and skip next
_                      If: go right since 0 is popped
$                      Pop top of stack, stack is now empty

অন্যথায়, যদি a == b, আমরা সম্পাদন করি:

>                      Move rightward
#                      Bridge: skip next
_                      If: go right since a == b (i.e. a-b is 0)
$                      Pop top of stack and discard, keeping stack empty


2

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

lambda n:[s for s,t in zip(*[iter(n)]*2)if s!=t]

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

আমি যে জিনিসটি মিস করেছি সেগুলি নির্দেশ করার জন্য ডেনিস এবং ভল্টাহাকে ধন্যবাদ


আমি মনে করি আপনি ভাল পুরানো ' zip(*[iter(n)]*2)
গ্রেপার

একটি ল্যাম্বডা কাজ করবে না?
ডেনিস

2

গণিত, 41 39 বাইট

Select[#~Partition~2,Tr@#==1&][[1]]&

অন্যান্য উত্তরের চেয়ে কম জটিল এবং খাটো। বাক্সটি একটি ট্রান্সপোজ চরিত্র।


2

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

s=>s.replace(/(.)\1|(.)?./g,"$2")

রেটিনা উত্তর বিরক্তিকর বন্দর।


2

সেড, 34 33 বাইট

s/../& /g;s/00\|11//g;s/.\b\| //g

টেস্ট:

llama@llama:~$ sed 's/../& /g;s/00\|11//g;s/.\b\| //g'             
1110
1
11000110
01
1100011
0
00

1



1101001
0
1011101010
1111

1
আমি fold(1)জোড়ায় বিভক্ত করার জন্য কমান্ডটি ব্যবহার করার চেষ্টা করেছি । তাও 34 এ বেরিয়েছে! fold -s2|sed 's+01+0+p;s+10+1+p;d'
জোয়েটউইডল

@ জোয়েটউইডেল fold -s2সমান fold -2, সেই 33 বাইট তৈরি করে ... যা আমি খাঁটি সেড দ্রবণটি কেবল গল্ফড করেছিলাম। : P: P
Doorknob

আমি দ্বিতীয় এবং তৃতীয় বিকল্পটি একত্রিত করে আরও 4 বাইট শেভ করলাম:s/../& /g;s/00\|11\|.\b\| //g
টবি স্পিড

2

ল্যাবরেথ , 31 বাইট

এসপি 3000 এর সমাধানের মতো সংক্ষিপ্ত এবং ঝরঝরে নয়, তবে আমি ভেবেছিলাম যে এটিকে অন্য পদ্ধতির হিসাবে পোস্ট করব:

"" @
,, :{"
)  { $;
*"})";.
 ""

ব্যাখ্যা

প্রথম লুপটি সহজভাবে

""
,,

যা একবারে দুটি অক্ষরে পড়ে (এটি "কোনও অপশন নয়)। ইওএফ-এর পরে ,ফিরে আসবে -1তবে প্রতিটি দ্বিতীয় চরিত্রে কেবল ইওফের জন্য পরীক্ষা করুন। তার মানে যে কোনও ক্ষেত্রে স্ট্যাকের শীর্ষটি তখন হবে -1এবং নীচের মানটিও হয়-1 বা এমন কোনও বর্ণচিহ্নের কোড যা আমরা যত্ন করি না কারণ এটি একটি অযৌক্তিক মুদ্রা টস।

তারপর )*দেখা যাচ্ছে -1এবং একটি একক নিচের মান 0যা আমরা একটি প্রয়োজন) সঠিকভাবে পরবর্তী লুপ প্রবেশ করতে ঐ দুই মূল্যবোধ ও খ) পরিত্রাণ পেতে। পরবর্তী লুপটি সহজভাবে

"}
""

যা সমস্ত মানকে সহায়ক স্ট্যাকের উপরে স্থানান্তরিত করে। এটি প্রয়োজনীয় কারণ আমরা প্রথমে যে জোড়গুলি পড়েছিলাম তা প্রক্রিয়া শুরু করতে চাই। এখন চূড়ান্ত লুপ:

:{"
{ $;
)";.

দ্য )শুধু বাড়তি কিছু ডামি মান নিশ্চিত করতে এটা ইতিবাচক এবং নির্দেশ পয়েন্টার পালাক্রমে উত্তর। {পরবর্তী জোড়ার প্রথম অঙ্কের উপরে টানুন এবং :এটির সদৃশ করুন। এখন যখন আমরা প্রক্রিয়াজাতকরণটি শেষ করব 0, এটি সহায়ক স্ট্যাকের নীচ থেকে একটি হবে । তা না হলে এটা হয় 48বা 49। শূন্যের ক্ষেত্রে, আমরা লুপটি প্রস্থান করি এবং শেষ করি @, অন্যথায়, আইপিটি পূর্ব দিকে পরিণত হয়।

{বর্তমান জুটির অন্যান্য অঙ্কের উপরে টান দেয়। $তাদের মধ্যে এক্সওআর নেয়। যদি এটি 0 হয়, যেমন দুটি সমান হয়, আইপি ঠিক দক্ষিণে অগ্রসর হতে থাকে, ;শূন্যকে বিচ্ছিন্ন করে দেয় এবং আইপি পশ্চিমে পরবর্তী পুনরাবৃত্তিতে পরিবর্তিত হয়। যদি এক্সওআরটি ছিল 1, যেমন তারা পৃথক ছিল, আইপি পশ্চিমে পরিণত হয়, বিযুক্ত করে1 সাথে; এবং প্রথম প্রিন্ট করে .


2

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

`-?6MD]T

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

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

`         % do...while loop
  -       %   take two inputs implicitly. Compute difference
  ?       %   if nonzero
    6M    %     push first of the two most recent inputs again
    D     %     display (and remove from stack)
  ]       %   end if
  T       %   true. Used as loop condition, so the loop is infinite
          % end loop implicitly

পুরানো পদ্ধতির, 11 বাইট

2YCd9L)Xz0<

ইনপুট একটি স্ট্রিং। আউটপুট হল নিউলাইনগুলি দ্বারা পৃথক করা সংখ্যা।

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

2YC      % implicitly take input as a string. Generate 2D array of length-2
         % overlapping blocks as columns, padding with a zero if needed.
d        % difference of the two values in each column of that array
9L       % predefined literal [1 2 0]. This corresponds to "1:2:end" indexing
)        % keep only values at indices 1, 3, 5, ... This reduces the set of blocks
         % to non-overlapping, and discards the last (padded) block if the input had
         % odd length
Xz       % keep only nonzero entries, corresponding to blocks that had different values
0<       % 1 if negative, 0 if possitive. Implicitly display

2

রুবি, 46 বাইট

এই আলাদা l[0], l[1]এবং l[2..{end}]যেমন a, bএবং c। তারপর এটি সঙ্গে একটি স্ট্রিং তৈরি করে aযদি a!=bবা ''অন্যথায় এবং f[c]যদি c[0]বিদ্যমান বা ''অন্যথায়।

f=->l{a,b,*c=l;"#{a!=b ?a:''}#{c[0]?f[c]:''}"}

Ungolfed:

def f(l)
  a = l[0]
  b = l[1]
  c = l[2..l.length]
  s = ''
  if a!=b
    s += a.to_s
  end
  if c[0]       # equivalent to !c.empty?
    s += f[c]   # no .to_s because the output will be a string
  end
  puts s
end

2

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

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

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

ব্যাখ্যা:

মেমরি সেল মানচিত্র

+---------+---------+-----------------+
|1st input|2nd input|copy of 1st input|
+---------+---------+-----------------+

নির্দেশ

,>,                               read two instruction at once | first to first cell |
                                  second to second cell
   [                              Until the input is EOF
    <                             look at first cell
     [->->+<<]                    move the first cell to additional cells while
                                  subtracting the second cell with this at same
                                  time
              >[                  if the second cell is nonzero (it means that first cell and
                                  the second cell is the same)
                [-]>.<            Print the copied first input
                      ]
                       >[-]       clear the first input to prevent it polluting next input
                           <<,>,  continue with next two input
                                ]

1
খুব সুন্দর! আমি নিজেই একটি বিএফ এর উত্তর লেখার চেষ্টা করছিলাম। তবে আমি এটি খুব বিএফ-আইং পেয়েছি
লুইস মেন্ডো

1

গণিত, 41 বাইট

Cases[#~Partition~2,a_/;Tr@a==1:>a[[1]]]&

বেনামে ফাংশন যা শূন্য এবং এর তালিকা আউটপুট করে।


অপেক্ষা করুন, আপনি কোনও ভেক্টরকে যোগ করতে ট্র ব্যবহার করতে পারেন? অবশ্যই উত্তরগুলির একগুচ্ছ সম্পাদনা করতে হবে ...
ক্যালকুলেটরফলাইন

#&@@a1 টির বাইট খাটো a[[1]]
ক্যালকুলেটরফলাইন

@ ক্যাটস আরেফ্লুফি আমি এটির কথা ভাবছিলাম, তবে তা ভেঙে যায় RuleDelayed
LegionMammal978

আমার উত্তরটির সাথেও কাজ করে না Transpose:(
ক্যালকুলেটরফলাইন

1

পাইথ, 10 বাইট

hMf!qFTcz2

পরীক্ষা স্যুট


আপনি প্রতিস্থাপন করতে পারেন !qদ্বারা nএবং তারপর ফিল্টার fnFTদ্বারা nF#। (hMnF#cz2 ; এই জিনিসটি আমি যখন আমি চ্যালেঞ্জটি দেখেছিলাম তখন ভেবেছিলাম তবে আপনার পক্ষে এটি আলাদাভাবে পোস্ট করা আমার পক্ষে যথেষ্ট নয়)
পূর্কাকাডারী

@ Pietu1998 আমি এটি চেষ্টা করেছি। এটি যেমন ব্যর্থ হয়1
isaacg

1

সি, 66 বাইট

main(char*p,char**x){for(p=x[1];*p&p[1];p+=2)write(1,p,*p^p[1]);}

অভিমানী sizeof(int) == sizeof(char *)

"চতুর" সমাধান - 84 81 বাইট

main(int c,short**x){while(!((c=*x[1]++-12336)&~511))c>>8^c&1&&putchar(48|c&1);}

লিট-এন্ডিয়ান মেশিন ধরে ধরে ধরে short2 বাইট ধরে কাজ করে । ইনপুটটি আর্গুমেন্ট হিসাবে পাস করা হয়। প্রোগ্রামটি কয়েক জোড়া অক্ষরের উপরে পুনরাবৃত্তি হয় এবং 0x3130 এর জন্য 0 এবং 0x3031 এর জন্য 1 মুদ্রণ করে। বড় endian উপর ফলাফলের বিপরীত করা হবে (প্রতিস্থাপন 48|c&1সঙ্গে 49^c&1এই সমাধানের জন্য)।


1

সি, 57 বাইট

f(char*p,char*r){for(;*p*p[1];)*r=*p++,r+=*r!=*p++;*r=0;}

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

পরীক্ষা প্রোগ্রাম:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>
int main(int argc, char **argv) {
    while (*++argv) {
        char *result = malloc(1+strlen(*argv));
        f(*argv, result);
        printf("%s => %s\n", *argv, result);
        free(result);
    }
    return EXIT_SUCCESS;
}

পরীক্ষার আউটপুট:

$ ./74864 1110 11000110 1100011 00 1 "" 1101001 1011101010
1110 => 1
11000110 => 01
1100011 => 0
00 => 
1 => 
 => 
1101001 => 0
1011101010 => 1111

1

Befunge-93 , ৪০ বাইট

v  ,-1<
      | -<
>~1+:~1+:|
^     <  @

আপনি এটি এখানে চেষ্টা করতে পারেন । "শো" বোতামের নীচে স্পেসে কোডটি আটকান, "শো" টিপুন, ইনপুট সংজ্ঞায়িত করুন, "রান" টিপুন। প্রোগ্রামটি কীভাবে কাজ করে তা দেখতে আমাদের "পদক্ষেপ" বোতামটি ব্যবহার করুন।


1
আমার প্রথম বেফঞ্জ উত্তর!
লুইস মেন্ডো

1

ডস / উইন্ডোজ ব্যাচ, 201 162 বাইট

@echo off
set/pi=
:a
for /f "tokens=2" %%a in ("%i%") do goto l
exit/b
:l
for /f "tokens=1,2" %%a in ("%i:~0,4%") do if %%a neq %%b echo %%a
set "i=%i:~4%"
goto a

ইনপুট উদাহরণস্বরূপ, একটি স্পেস সেপারেটেড স্ট্রিং 1 0 0 1 1। সেন্টিমিডি থেকে শুরু করুন, অন্যথায় স্ক্রীনটি অবিলম্বে প্রস্থান করে


1

মোম ,45 35 বাইট

আমি এটি 10 ​​বাইট দ্বারা গল্ফ করতে পারি - খুব খারাপ না।

pgy~1z;L?gAF1<<?V_
>&?@yg&?~@ KQd{b

আমি মুদ্রা টসেস পদ্ধতির সম্পূর্ণ স্ট্রিংটি পড়েছি , যা প্রোগ্রামটি বেশ বড় করে তোলে। কেবলমাত্র এক এক করে পূর্ণসংখ্যা পড়া প্রোগ্রামটিকে ছোট করে তুলবে - সম্ভবত প্রায় 22 বাইট বা তার বেশি - তবে এটি ব্যবহার করা খুব অসুবিধেও হবে।

উদাহরণ:

julia> beeswax("FairCoin.bswx")
s1110
1
Program finished!

julia> beeswax("FairCoin.bswx")
s11000110
01
Program finished!

julia> beeswax("FairCoin.bswx")
s1100011
0
Program finished!

julia> beeswax("FairCoin.bswx")
s00

Program finished!

julia> beeswax("FairCoin.bswx")
s10101001010111111100000010011001110100010110101110100001011
1110001010000111100
Program finished!

আমার মোম গীতহাবের সংগ্রহশালা।

রোস্টা কোডে আমার মোমের উদাহরণ।

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