পোলারিটি বিপরীত


12

এই চ্যালেঞ্জের উদ্দেশ্যটি এমন একটি প্রোগ্রাম লিখুন যা নিম্নলিখিত শর্তগুলিকে সন্তুষ্ট করে:

  • প্রোগ্রামটি প্যালিনড্রমিক বা মূল প্যালিনড্রমিক নয় (অর্থাত্ প্রোগ্রামের প্রভাবগুলি পরিবর্তন না করে অক্ষরগুলি প্যালিনড্রোম হিসাবে তৈরি করা মুছে ফেলা সম্ভব)।

  • প্রোগ্রামটি কোনও চালান নয় (এর অর্থ এটি আউটপুট চলাকালীন এটির মূল ইনপুট উত্পাদন করে না)

  • বিপরীত-প্রান্তিকতা প্রোগ্রাম স্বাভাবিক প্রোগ্রামের বিপরীত হয়; সুতরাং যখন বিপরীত প্রোগ্রামটি সাধারণ প্রোগ্রামের আউটপুটে চালিত হয় তখন এটি আসল ইনপুটটি দেয়।

কী বিপরীত-প্রান্তিকতা মানে? ঠিক আছে, এটি ভাষার মধ্যে পার্থক্য করে।

  • বেশিরভাগ নন-এসোলেংগুলির জন্য, এর অর্থ একটি একক ক্রিয়াকলাপে উপ-ক্রিয়াকলাপকে বিপরীত করা, আর্গুমেন্টের ক্রমটিকে বিপরীত করা এবং হার্ড-কোডেড তালিকাগুলি / অ্যারে / টুপলস / অভিধান / স্ট্যাক / সারি / ইত্যাদির বিষয়বস্তুগুলিকে বিপরীত করা means কোড-ব্লক এবং একা একা লাইনের ক্রমকে বিপরীত হিসাবে (তবে ব্লকের মধ্যে লাইন নয়)

উদাহরণ:

হাস্কেল : x`mod`y-> y`mod`x; zipWith ((*3).(+)) [1,2,3] [4,5,6]->zipWith ((+).(*3)) [6,5,4] [3,2,1]

পাইথন : 2**3-> 3**2; for x,y in [(1,2),(3,4),(5,6)]->for y,x in [(6,5),(4,3),(2,1)]

  • যে ভাষাগুলিতে 1-চরিত্রের ফাংশন রয়েছে (যেমন পাইথ, এপিএল), কেবল নির্দেশাবলীর স্ট্রিংটি বিপরীত করুন

  • বিএফ-এর মতো 1-মাত্রিক ইওসোলংগুলির জন্য, নির্দেশাবলীর বিপরীত করুন বা মেরুটি অদলবদল করুন; পোলারিটি অদলবদলগুলি []-> {}, +-> -, --> +, >-> <, <-> >, .-> ,এবং ,-> .(তবে উভয়ই নয়)

  • বেফুঞ্জের মতো দ্বি-মাত্রিক এ্যাসল্যাংগুলির জন্য, আপনি হয় x- বা y- অক্ষ বা একটি তির্যক জুড়ে একটি প্রতিচ্ছবি সম্পাদন করতে পারেন, 180 ডিগ্রি ঘোরান, বা প্রতিবিম্ব এবং একটি ঘূর্ণনের সংমিশ্রণটি করতে পারেন

অভিযোজনমূলক ক্রিয়াকলাপ অনুমোদিত, তবে প্যালেন্ড্রোমিক সংঘটিত নয়: 2*xভাল, তবে x+xখারাপ। পোলারিটি-বিপরীতের সংজ্ঞাটি বেশ আলগা, তবে আপনার রায়টি কী বোঝায় তা ব্যবহার করুন; অবজেক্টটি সর্বাধিক চতুর লুফোলটি সন্ধান করতে নয়, তবে সবচেয়ে চতুর সমাধানটি সন্ধান করতে।

এটি একটি জনপ্রিয়তা প্রতিযোগিতা, সুতরাং খুব চতুর লুফোলটি জনপ্রিয় হতে পারে তবে এই চ্যালেঞ্জের মনোভাবের মধ্যে রাখার চেষ্টা করুন। কমপক্ষে 1 টি আপভোটের সাথে কমপক্ষে 10 টি সমাধানের পরে বিজয়ীর নাম ঘোষণা করা হবে এবং কমপক্ষে 1 টি upvote জমা দেওয়ার চেয়ে আরও বেশি upvotes সহ কমপক্ষে একটি সমাধান রয়েছে; বা 1 মাসে, যেটি প্রথমে আসে। এটি আমার প্রথম চ্যালেঞ্জ, সুতরাং ন্যায্য হওয়ার চেষ্টা করুন এবং আমাকে গঠনমূলক প্রতিক্রিয়া জানান, তবে এটি আমাকে জানাতেও যদি এটি অযৌক্তিক চ্যালেঞ্জ হয় বা এটি কোনওভাবেই বিভ্রান্তিকর বা অস্পষ্ট। আমি এখানে যে কবুতরের গর্তগুলি স্থির করেছি তার কোনওটির সাথে খাপ খায় না এমন কোনও ভাষা সম্পর্কে আপনার যদি প্রশ্ন থাকে তবে মন্তব্য করুন এবং কোনও নির্দিষ্ট ব্যাখ্যা বা নিয়ম-পরিবর্তনের জন্য দৃ out় আওয়াজ উঠলে আমি সম্প্রদায়ের ইচ্ছার দিকে ঝুঁকছি।

হালনাগাদ

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


1
বিপরীত-পোলারিটি প্রোগ্রাম বলতে কী বোঝায় যে সাধারণ প্রোগ্রামের বিপরীত হয়? আউটপুট কি কোনওভাবে পৃথক হয়?
Sp3000

এটি বিপরীত অপারেশন সম্পাদন করে; বিপরীত প্রোগ্রামটি যখন সাধারণ প্রোগ্রামের আউটপুটে চালিত হয় তখন এটি আসল ইনপুটটি দেয়।
archaephyrryx

ত্রুটির জন্য দুঃখিত; আমি এর আগে শুনিনি, এবং এটি আমার কাছে কিছুটা বিদ্বেষপূর্ণ বলে মনে হয়েছিল, তাই আমি অবশ্যই ধরে নিয়েছিলাম এটি একটি এষোলং ছিল; আমি এটা পরিবর্তন করব।
archaephyrryx

1
সম্ভবত কিছু যা সম্ভবত নির্দিষ্ট করা উচিত - ()প্যালেন্ড্রোমিক কি? প্রযুক্তিগতভাবে, বিপরীত হয় )(
Sp3000

1
হাস্কেলের উদাহরণে ফাংশন যুক্তিটি কেন শেষ পর্যন্ত পরিবর্তিত হয় না? বিপরীতগুলি কি এমনভাবে নির্বাচন করা হয় যাতে প্রকারের সুরক্ষা সংরক্ষণ করে? আমাদের কি পোলারিটি রিভার্সাল অপারেশনের কিছু বিবরণ চয়ন করার অনুমতি দেওয়া হচ্ছে?
জন ডিভোরাক

উত্তর:


41

Befunge

ওহ, এটি একটি কাজ ছিল, এমনকি আমি এই চ্যালেঞ্জটির জন্য যে সম্পাদক তৈরি করেছি with আমি যা পেয়েছি তা এখানে একটি দুর্দান্ত 11x12 ব্লক:

v$,g6<6g,$v
v,$ _^_ $,v
1W>v\B\v>L1
~T+:1E1:-O~
+F00-F-02L+
>:|6gUg6|:>
{a@>^N^>@z`
>1+|@G$| +>
:^9< E<  ^1
~>7^@_,#:>:
 xD>65 ^=P~
v,-\+**<  v

দুঃখজনকভাবে কেবল ছোট হাতের অক্ষরের জন্য এটি বেশ কয়েকটি কাজ করে।

এর মানে কি

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

abcxyz      -> bcdyza
exampletext -> fybnqmfufyu

অনুভূমিকভাবে উল্টানো গেলে, এটি সাইফারের বিপরীত হয়। চ্যালেঞ্জের জন্য এটি প্রয়োজনীয়তা, তবে এটি এখানেই শেষ হয় না।

bcdyza      -> abcxyz
fybnqmfufyu -> exampletext

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

abcxyz      -> zyxcba
exampletext -> vcznkovgvcg

শেষ অবধি, 180 ডিগ্রি ঘোরানো হলে, এটি ইনপুট বিপরীত হয়। আমার মনে হচ্ছে এটি কোনও কিছুর বিপরীত হতে হবে (ইঙ্গিত: ইনপুট)।

abcxyz      -> zyxcba
exampletext -> txetelpmaxe

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

ব্লকটি মূলত চারটি আধা-ওভারল্যাপিং অ্যালগরিদম নিয়ে গঠিত।

সিজার সাইফার এনকোডার

v$,g6<
v,$ _^
1 >v\
~ +:1
+ 00-
>:|6g
{a@>^

সিজার সাইফার ডিকোডার (অনুভূমিকভাবে উল্টানো)

v$,g6<
v,$ _^
1 >v\
~ -:1
+ 20-
>:|6g
`z@>^

বিপরীত বর্ণমালা সাইফার (উল্লম্বভাবে উল্টানো)

v,-\+**<
   >65 ^
~>7^
:^9<
>1+|@
   >^

পাঠ্য বিপরীতমুখী (180 ডিগ্রি ঘোরানো)

v  <
~      
:>:#,_@
1^  <
>+ |$
   >^

2
আমি মনে করি বেফঞ্জ এখানে সামান্য উপকারে চলেছে, কারণ আপনি সর্বদা কেবল উপরের বাম চতুর্ভুজটি ব্যবহার করতে পারেন এবং বাকী কোডের মধ্যে যা আছে তা সম্পূর্ণ উপেক্ষা করতে পারেন। ভাল কাজ যদিও!
মার্টিন ইন্ডার

1
কি দারুন! আমি এটি upvote করতে চাই, এর অর্থ যদিও আমি তৃতীয় স্থানে নেমেছি।
স্তর নদী সেন্ট

18

ব্রেইনফাক, ৫

,+.-,

সম্ভবত প্রথমবারের মতো, ব্রেইনফাক একটি উত্তর তৈরি করে যা কোড দৈর্ঘ্যের ক্ষেত্রে প্রতিযোগিতামূলক। লজ্জা এটি কোনও কোড-গল্ফ প্রশ্ন নয়।

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

* (বা উভয় দিকের সমস্ত কোড সহ কিছু কার্যকর করার বিষয়ে)

সাধারণ ফলাফল (যদি দেওয়া হয় তবে দ্বিতীয় বর্ণটি উপেক্ষা করা হবে)।

ফরোয়ার্ড: B->C

বিপরীত: B-> Aবা C->B


11

Marbelous

আমাদের শুরু করার জন্য এখানে একটি সহজ। এটি STDIN থেকে একটি অক্ষর পড়ে, বৃদ্ধি করে এবং মুদ্রণ করে।

--
]]
00
]]
++

আমরা যদি এটি 180 by (বন্ধনীগুলির অদলবদল না করে) ঘোরান, বা এটি এক্স-অক্ষে মিরর করি তবে আমরা পাই

++
]]
00
]]
--

যা এসটিডিআইএন থেকে একটি বাইট পড়ে এবং এটি হ্রাস করে।

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

আমি আরও কিছু জটিল মার্বেলাস প্রোগ্রামগুলি খতিয়ে দেখতে পারি তবে আমি নিশ্চিত এস এস ২৪৪৪ আমাকে এতে পরাজিত করবে। ;)

ব্যাখ্যা

00মান 0 (যা নির্বিচারে) সহ একটি মার্বেল হয়। ]]ডিভাইসের stdin থেকে একটি বাইট পড়া - যেমন, একটি মার্বেল তাদের মাধ্যমে পড়ে, মার্বেল মান পঠিত বাইট মধ্যে পরিবর্তিত হয়। ++এবং --ডিভাইস কেবল বৃদ্ধি অথবা (গেলিক ভাষার 256) একটি মার্বেল মান হ্রাস দিন এটা মাধ্যমে পড়া। কোনও মার্বেল বোর্ড থেকে পড়ে গেলে বাইটটি STDOUT এ লেখা হয়।

অতএব, শীর্ষে থাকা দুটি ডিভাইস কেবল এড়ানো হয় কারণ নিয়ন্ত্রণ প্রবাহ কখনও তাদের কাছে পৌঁছায় না।


বিকল্পভাবে, আপনি একক ইনপুট ডিভাইস দ্বারা আপনার তিনটি মাঝারি সারিগুলি প্রতিস্থাপন করতে পারেন।
ওভাররেেক্টর

@ ওভারেক্টর বা আপনি কি বোঝাতে চান }0এবং এটি একটি সাববোর্ড হিসাবে ব্যবহার করেন?
মার্টিন ইন্ডার

}0একটি কমান্ড লাইন ইনপুট হিসাবে সুনির্দিষ্ট হতে।
ওভাররেেক্টর

5

Marbelous

এই বোর্ডটি একটি যুক্তি ( x) নেয় এবং ফেরত দেয় (101 * x) mod 256

.. @5 .. }0 }0 @1 .. @0 .. @2 .. 
.. /\ Dp << \\ .. &0 >0 &1 .. .. 
!! @3 .. << }0 .. \/ -- \/ .. }0 
@4 .. .. &0 @1 /\ &0 65 &1 /\ @2 
/\ Dp .. @4 .. .. @3 @0 @5 !! \\

Y- অক্ষ বরাবর ঘরগুলি মিরর করার ফলে একটি বোর্ড তৈরি হবে যা একটি যুক্তি ( y) গ্রহণ করে এবং ফেরত দেয় (101 * y + 8 * y) mod 256যা প্রথম বোর্ডের বিপরীত।

.. @2 .. @0 .. @1 }0 }0 .. @5 ..
.. .. &1 >0 &0 .. \\ << Dp /\ ..
}0 .. \/ -- \/ .. }0 << .. @3 !!
@2 /\ &1 65 &0 /\ @1 &0 .. .. @4
\\ !! @5 @0 @3 .. .. @4 .. Dp /\

এখানে এটি পরীক্ষা করুন । নলাকার বোর্ড এবং অন্তর্ভুক্ত গ্রন্থাগার উভয়ই পরীক্ষা করা উচিত।

ইনপুট / আউটপুট উদাহরণ :

Original Board:      Mirrored Board:
Input   Output       Input    Output
025     221          221      025
042     146          146      042
226     042          042      226

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

101দুটি কারণে বেছে নেওয়া হয়েছিল: এটি একটি প্রাইম (এবং এই প্রোগ্রামের প্রতিটি সম্ভাব্য ইনপুট একটি অনন্য আউটপুট দেয়), এবং জড়িত বিপরীতমুখী অপারেশন 109, যা 8 থেকে দূরে একটি সুবিধাজনক দূরত্ব 101

সংক্ষিপ্ত বর্ণনা

কক্ষগুলি সমন্বিত কলাম (উপরে থেকে নীচে) @0 >0 -- 65 @0উভয় বোর্ডে একই চলবে এবং 101ডান দিকে যাবার আগে লুপগুলি একবার। >0শাখার দুপাশে আলাদা সিঙ্ক্রোনাইজার রয়েছে; কোনটি বেছে নেওয়া হয়েছে তা বোর্ড মিরর করা হয়েছে কিনা তার উপর নির্ভর করে।

প্রতিটি দিকে, কেন্দ্রের লুপের সাথে সিঙ্কে, ইনপুটটি বারবার সংক্ষিপ্ত করা হয়, এইভাবে প্রাপ্ত 101*x mod 256। বিপরীত বোর্ডে, ইনপুটটির দুটি অনুলিপিও বাম দিকে ( input * 4) দু'বার কিছুটা স্থানান্তরিত হয় , তারপরে সংক্ষেপে এবং একটি সিঙ্ক্রোনাইজারে রেখে যায়।

কেন্দ্রের লুপটি শেষ হয়ে গেলে, সামঞ্জস্য করা মার্বেলগুলি মুদ্রণের জন্য প্রেরণ করা হয়, যা বোর্ডের পাশে থাকে (মূল বোর্ডের জন্য বাম দিকে, মিরর জন্য ডানদিকে)। মুদ্রণের পরে, একটি !!কক্ষ পৌঁছে যায়, বোর্ডটি সমাপ্ত করে। নোট করুন যে প্রদত্ত লুপটি 101 * xবোর্ডের সমাপ্ত হওয়া অবধি নিজের দ্বারা চালিত হতে থাকবে।

Dp কেবলমাত্র দশমিক সংখ্যা হিসাবে ফলাফল মুদ্রণ করে।


5

Theseus

এটি একটি লুফোল হিসাবে বিবেচিত হতে পারে, তবে আমি ভাষা পছন্দ করি, তাই এখানে যায়। এই প্রোগ্রামটি একটি ফাংশন সংজ্ঞায়িত fস্বাভাবিক সংখ্যার উপর মানচিত্র 3N করার 3N +1 , 3N +1 করতে 3N +2 , এবং 3N +2 থেকে 3N যে জন্য, এন

data Num = Zero | Succ Num

iso f :: Num <-> Num
  | n                          <-> iter $ Zero, n
  | iter $ m, Succ Succ Succ n <-> iter $ Succ m, n
  | iter $ m, Succ Succ Zero   <-> back $ m, Zero
  | iter $ m, Succ Zero        <-> back $ m, Succ Succ Zero
  | iter $ m, Zero             <-> back $ m, Succ Zero
  | back $ Succ m, n           <-> back $ m, Succ Succ Succ n
  | back $ Zero, n             <-> n
  where iter :: Num * Num
        back :: Num * Num

থিসাস হ্যাশেল-এর মতো সিনট্যাক্স সহ একটি বিপরীতমুখী ভাষা, যেখানে প্রতিটি ফাংশন ইনভারটিভেবল (অ-সমাপ্তির সাথে ইস্যু ছাড়)। এটি অত্যন্ত পরীক্ষামূলক, এবং গবেষণা উদ্দেশ্যে ডিজাইন করা হয়েছে। উপরের কোডটি প্রাকৃতিক সংখ্যা এবং ফাংশনের জন্য একটি ডেটাটাইপ সংজ্ঞায়িত করে f। একটি ইনপুট নম্বর দেওয়া, আপনি বাম দিকে এটি প্যাটার্ন-ম্যাচ (এটি সর্বদা মেলে n) matches তারপরে আপনি ডানদিকে প্যাটার্নটি দেখুন। যদি সেই প্যাটার্নটির একটি লেবেল থাকে (এখানেiter), আপনি এটিকে বাম-হাতের সাথে প্যাটার্ন-মেলতে এগিয়ে যান এবং আবার ডান হাতের সাথে সংশ্লিষ্ট মানটি নেন। ডানদিকে একটি লেবেলযুক্ত মান না পাওয়া পর্যন্ত এটি পুনরুক্ত হবে এবং এটি আপনার আউটপুট। বাম দিকে এবং ডানদিকে নিদর্শনগুলি অবশ্যই সম্পূর্ণ এবং অ-ওভারল্যাপিং হতে হবে (প্রতিটি লেবেলের জন্য পৃথকভাবে)। এখন, "পোলারিটির বিপরীত" fকরতে আমি নিম্নলিখিতটি করি।

  • প্রতিটি লেবেলের দুটি মান অদলবদল করুন। এটি এর শব্দার্থবিজ্ঞানের পরিবর্তন করে না f
  • ফাংশন বডিটিতে ডান এবং বাম-পাশের অংশগুলি অদলবদল করুন। এটি f নকশার দ্বারা বিপরীত কার্য নির্ধারণ করে ।

ফলাফল:

iso f :: Num <-> Num
  | iter $ n, Zero             <-> n
  | iter $ n, Succ m           <-> iter $ Succ Succ Succ n, m
  | back $ Zero, m             <-> iter $ Succ Succ Zero, m
  | back $ Succ Succ Zero, m   <-> iter $ Succ Zero, m
  | back $ Succ Zero, m        <-> iter $ Zero, m
  | back $ Succ Succ Succ n, m <-> back $ n, Succ m
  | n                          <-> back $ n, Zero
  where iter :: Num * Num
        back :: Num * Num

3

TR

a b

উদাহরণ:

$ echo "apple" | tr a b
bpple
$ echo "bpple" | tr b a
apple

স্ট্রিংগুলির ডোমেনে কেবলমাত্র একটি সত্য বিপরীত যা 'ক' এবং 'বি' উভয়ই অন্তর্ভুক্ত করে না।


আপনাকে আসলে এর চেয়ে কিছুটা বেশি ডোমেনকে সীমাবদ্ধ করতে হবে। উদাহরণস্বরূপ, আপনি যদি "বগ" দিয়ে শুরু করেন, আপনার প্রোগ্রাম এবং এর বিপরীতে "বগ" -> "বগ" -> "অগ" দেয়। সুতরাং 'বি' সমন্বিত যে কোনও স্ট্রিং একটি সমস্যা (বা 'এ' যুক্ত রয়েছে, যদি আপনি প্রথমে বিপরীত প্রোগ্রামটি প্রয়োগ করেন)।
ব্যবহারকারী19057

আপনি tr abc bcaবিপরীত মেরু সংস্করণ ব্যবহার করতে পারেন tr acb cba
ক্রিশ্চান সিভর্স

2

আরও মার্বেল উত্তর

আসল ডানটি কমান্ড লাইন ইনপুট (একটি 8 বিট মান) স্থানান্তর করে, যদি 1 স্থানান্তরিত হয়ে হারিয়ে যায় তবে একটি নেতৃস্থানীয় যোগ করে। ( 0000 0001 -> 1000 0000)

{0 ..
~~ ..
>> {0
-2 =0
.. ^0
\/ }0
}0 Sb
<< ..
\\ ..
:Sb
// ..
Sb >>
}0 ..
^7 }0
{0 \/

180 180 দ্বারা এই বোর্ডটি ঘোরানো (তবে প্রতিটি কক্ষের বিষয়বস্তু একই রেখে) প্রোগ্রামটি পরিবর্তন করে যাতে এটি শিফ্ট ছেড়ে যায় ( 1000 0000 -> 0000 0001)

\/ {0
}0 ^7
.. }0
>> Sb
.. //
:Sb
.. \\
.. <<
Sb }0
}0 \/
^0 ..
=0 -2
{0 >>
.. ~~
.. {0

আপনি এটি এখানে পরীক্ষা করতে পারেন । (আপনাকে 'দশমিক সংখ্যা হিসাবে প্রদর্শন আউটপুট চালু করতে হবে))

ব্যাখ্যা

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

original:      flipped:
   }0          }0
}0 Sb          .. }0
<< ..          >> Sb
\\ ..          .. //

এগুলি বেশ সহজবোধ্য বোর্ড, উভয়ই ইনপুটটির দুটি অনুলিপি নেয় (যা }0কোষগুলির স্থান নেয় The মূল একটি সংস্করণকে বাম শিফ্ট ডিভাইসে ফিড <<করে ফ্লিপড সংস্করণটি ডান শিফট ডিভাইসে রাখে >>এগুলি বিটশিফ্ট সম্পাদন করে তবে দুর্ভাগ্যক্রমে কোনও বাতিল করুন বিট হারিয়েছে Which Sbবোর্ডগুলির মধ্যে যা আসে, তারা যাচাই করে the

Sbমূল প্রোগ্রামের জন্য মূল বোর্ডের সম্পর্কিত অংশটি এখানে :

}0
^7
{0

এটি এক অবিশ্বাস্যরকম সহজ, `। 7 'সবচেয়ে উল্লেখযোগ্য বিটের মান পরীক্ষা করে। যদি এটি 1 হয়, বাম শিফট সম্পাদন করা এই বিটটি হারিয়ে ফেলবে। সুতরাং এই বোর্ডটি এই বিটের মানকে বিটশিটের ফলাফলের সাথে যুক্ত করতে একটি 8 বিট মান হিসাবে আউটপুট করে।

উল্টানো সংস্করণটির জন্য, Sbকমপক্ষে উল্লেখযোগ্য বিটটি দেখতে হবে এবং ফিরে আসতে হবে 128বা 0এটি কিছুটা জটিল complicated

}0
^0 ..
=0 -2
{0 >>
.. ~~
.. {0

অন্তত গুরুত্বপূর্ণ বিট (যেমন দ্বারা পরীক্ষা তাহলে ^0) 0, এটা ঠিক 0. ফেরৎ যদি এক হয়, ^0ইচ্ছা আউটপুট 1। এটি সমতা পরীক্ষায় ব্যর্থ হবে 0 =0এবং ডানদিকে ধাক্কা দেবে। তারপরে আমরা -2255 পেতে 2 বিয়োগ করি , >>127 পাওয়ার জন্য বাম শিফট এবং ~~128 না পাওয়ার জন্য বাইনারি করি (আমরা কেবল ++128 পাওয়ার জন্য একটি যোগ করতে পারি, তবে তাতে মজা কোথায়?)

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