আমি প্যালিনড্রোম। আপনি?


103

এই প্রশ্নটি জিজ্ঞাসা করার জন্য বেশ কয়েকটি আগের প্রচেষ্টা হয়েছে, তবে এই সাইটের আধুনিক মানদণ্ডের সাথেও মানা হয় না। প্রতি মেটা আলোচনা , আমি এটা একটি উপায় যে আমাদের আধুনিক rulesets অধীনে সুষ্ঠু প্রতিযোগিতা জন্য করতে পারবেন মধ্যে reposting করছি।

পটভূমি

একজন যে থাকে একটি স্ট্রিং যে, "একই সম্মুখে এবং পিছনের দিকে লেখা আছে", অর্থাত স্ট্রিং এর বিপরীত স্ট্রিং নিজেই সমান। আমরা এখানে "সুবিধাজনক প্যালিনড্রোমস" সম্পর্কে কথা বলছি না, তবে চরিত্রের দ্বারা অক্ষর বিপরীত; উদাহরণস্বরূপ, ()()একটি প্যালিনড্রোম নয়, তবে ())(

কাজটি

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

  • যখন ইনপুট এস একটি প্যালিনড্রোম হয়, আউটপুট Q এর মান A হওয়া উচিত (এটি কোনও প্যালিনড্রমিক এস এর জন্য একই )।
  • যখন ইনপুট এস কোনও প্যালিনড্রোম নয়, আউটপুট Q এর মান বি হওয়া উচিত (এটি কোনও নাল-প্যালিনড্রমিক এস এর জন্য একই )।
  • এবং বি অবশ্যই একে অপরের থেকে পৃথক হতে হবে।

বা অন্য কথায়: সমস্ত প্যালিনড্রোমকে একটি মানতে এবং সমস্ত নন-প্যালিনড্রোমকে অন্য মানচিত্রে মানচিত্র করুন।

অতিরিক্তভাবে, আপনি যে প্রোগ্রাম বা ফাংশনটি লিখেছেন তা অবশ্যই একটি প্যালিনড্রোম হতে হবে (যেমন এর উত্স কোডটি অবশ্যই প্যালিনড্রমিক হতে হবে), এটি এটিকে একটি চ্যালেঞ্জ তৈরি করে।

ব্যাখ্যা

  • যদিও trueএবং এবং বি এরfalse জন্য সুস্পষ্ট পছন্দ , আপনি আপনার "একটি প্যালিনড্রোম" এবং "প্যালিনড্রোম নন" আউটপুটগুলির জন্য যে কোনও দুটি পৃথক মান ব্যবহার করতে পারেন, যার বুলিয়ান হওয়ার দরকার নেই।
  • আমরা এখানে অক্ষরের স্তরে স্ট্রিং রিভার্সাল সংজ্ঞায়িত করছি ; ééইউটিএফ -8 বা ল্যাটিন -1 এ প্রোগ্রামটি এনকোড করা হয়েছে তা নির্বিশেষে প্যালিনড্রমিক ic যদিও এটি ইউটিএফ -8 এনকোডিংয়ের পরে অক্টেটের একটি প্যালিনড্রমিক ক্রম নয়।
  • যাইহোক, আপনার প্রোগ্রামে যদি ASCII বিহীন অক্ষর থাকে তবে এটিকে কেবল ASCII ইনপুটটির জন্য কাজ করা দরকার। বিশেষ করে, ইনপুট এস শুধুমাত্র (স্থান সহ, কিন্তু সম্পর্কে newline ছাড়া) মুদ্রণযোগ্য ASCII অক্ষর উপস্থিত থাকবে। অন্যান্য জিনিসের মধ্যে, এর অর্থ হ'ল যদি আপনি ইনপুটটিকে অক্ষরের অনুক্রমের পরিবর্তে বাইটের ক্রম হিসাবে বিবেচনা করেন তবে আপনার প্রোগ্রামটি এখনও স্পেসিফিকেশনটি মেনে চলবে (যদি না আপনার ভাষার আই / ও এনকোডিং খুব অদ্ভুত থাকে)। যেমন, পূর্বের বুলেটে একটি প্যালিনড্রোমের সংজ্ঞাটি তখনই গুরুত্বপূর্ণ হয় যখন প্রোগ্রামটির সঠিক ফর্ম রয়েছে কিনা তা যাচাই করা হয়।
  • একটি মন্তব্য বা স্ট্রিং আক্ষরিক অর্ধেক প্রোগ্রামটি লুকানো আইনানুগ হয়; আপনার দৈর্ঘ্যে স্কোর হচ্ছে, সৃজনশীলতা নয়, সুতরাং আপনার প্রোগ্রামটি প্যালিনড্রোম কিনা তা নিশ্চিত করতে "বিরক্তিকর" পদ্ধতিগুলি নির্দ্বিধায় ব্যবহার করুন। অবশ্যই, আপনি দৈর্ঘ্যের উপর স্কোর করা হচ্ছে, আপনার প্রোগ্রামের কিছু অংশ যা কিছু না করে আপনার স্কোরকে আরও খারাপ করতে চলেছে, সুতরাং আপনার প্রোগ্রামের উভয় অংশকে ব্যবহার করতে সক্ষম হবেন সম্ভবত আপনি যদি এটি পরিচালনা করতে পারেন তবে সহায়ক হতে পারে ।
  • যেহেতু বিজয়ের মানদণ্ডটি বাইটগুলি পরিমাপ করা হয়, আপনার প্রোগ্রামটি এটি স্কোর করতে সক্ষম হওয়ার জন্য আপনাকে যে এনকোডিংটি লেখা হয়েছে তা নির্দিষ্ট করতে হবে (যদিও এটি বেশিরভাগ ক্ষেত্রে আপনি কী এনকোডিংটি ব্যবহার করছেন তা স্পষ্ট হবে)।

বিজয়ের মানদণ্ড

যদিও প্রোগ্রামটি চরিত্র স্তরে প্যালিনড্রোম হওয়া দরকার, আমরা কে জিতবে তা দেখার জন্য আমরা বাইট ব্যবহার করছি। বিশেষত, আপনার প্রোগ্রামটি যত কম সংখ্যক, বাইটে পরিমাপ করা তত ভাল; এটি একটি চ্যালেঞ্জ। সাবমিশনগুলিকে (বিশেষত একই ভাষায় জমা দেওয়া) তুলনা করার অনুমতি দেওয়ার জন্য, আপনার প্রোগ্রামের জন্য একটি বাইট গণনা আপনার জমা দেওয়ার শিরোনামে (আরও একটি অক্ষর গণনা, যদি এটি বাইট সংখ্যা থেকে পৃথক হয়) রাখুন।


12
কেউ দয়া করে ব্যাখ্যা করবেন কেন () () প্যালিনড্রোম হবে না ??
এমিলিও এম বুমাচার

58
@ এমিলিওবুমাচার (সাথে aএবং এর )সাথে প্রতিস্থাপনের চেষ্টা করুন b। কি ababএকটি যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে ? না, এটা হতে হবে abba। তাহলে ()()প্যালিনড্রোমও নয়; এটা হতে হবে ())(
DLosc

7
প্রোগ্রামগুলি প্যালিনড্রমিকটি তৈরি করতে সম্পূর্ণরূপে মন্তব্যগুলি ব্যবহার করা সমাধানগুলি আমার কাছে
লুফোলের

15
@ একনিটম এগুলি প্রত্যাখ্যান করা আরও খারাপ হবে, কারণ ভাষা-অজ্ঞাত পদ্ধতিতে বস্তুনিষ্ঠভাবে এটি করার কোনও সন্তোষজনক উপায় নেই। (একটি মন্তব্য কী? অব্যাহত একটি স্ট্রিং আক্ষরিকের মধ্যে অব্যবহৃত অর্ধেক রাখার বিষয়ে কী? 2D ভাষাগুলি সম্পর্কে যেখানে আপনার নিখুঁত সম্পাদনযোগ্য কোড থাকতে পারে যা কেবল কখনও পৌঁছানো যায় না?)
মার্টিন এেন্ডার

উত্তর:


137

ব্র্যাচল্যাগ (2), ব্র্যাচল্যাজের কোডেপে 3 বাইট

I↔I

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

এটি একটি সম্পূর্ণ প্রোগ্রাম যা স্ট্যান্ডার্ড ইনপুট (ধ্রুবকগুলির জন্য ব্র্যাচল্যাগের সিনট্যাক্স ব্যবহার করে, যেমন স্ট্রিংগুলি ডাবল কোটে আবদ্ধ থাকে) এবং স্ট্যান্ডার্ড আউটপুটের মাধ্যমে আউটপুট নেয়। আউটপুটগুলি true.একটি প্যালিনড্রমিক ইনপুট এবং false.নন-প্যালিনড্রোমিক ইনপুট জন্য।

কেবল এই প্রোগ্রামটি প্যালিনড্রমিক নয় এটির বাম / ডান (এবং সম্ভবত কিছু ফন্টে উপরে / নীচে) মিরর প্রতিসাম্য রয়েছে।

ব্যাখ্যা

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

ব্র্যাচল্যাগে একটি সম্পূর্ণ প্রোগ্রাম (কোনও ফাংশনের বিপরীতে) একটি বুলিয়ান দেয়, false.যদি প্রোগ্রামের সমস্ত দৃ the় প্রতিযোগিতাগুলি একবারে সঠিক করার কোনও উপায় না true.থাকে , বা যদি প্রোগ্রামের সমস্ত বক্তব্য একে অপরের সাথে সামঞ্জস্যপূর্ণ হয়। আমাদের এখানে কেবল একটি দৃser়তা রয়েছে - যে ইনপুটটিকে বিপরীত করা এটি পরিবর্তন করে না - সুতরাং প্রোগ্রামটি প্যালিনড্রোম পরীক্ষক হিসাবে কাজ করে।


49
এবং 180 ডিগ্রি ঘূর্ণন প্রতিসাম্য, এটি সুন্দর।
এটাকো

7
... এবং উলম্ব এবং অনুভূমিক অক্ষগুলির সাথে প্রতিসাম্য :-)
লুইস মেন্ডো

13
@SteakOverflow Brachylog একটি ব্যবহার কাস্টম কোড পৃষ্ঠার , তাই ঐ অক্ষর UTF-8 এনকোড করা হয় না
DJMcMayhem

4
আমি এই প্রোগ্রামটিতে ভোট দেওয়ার জন্য এই সম্প্রদায়টিতে যোগদান করেছি। কি দারুন.
বিল মিশেল

4
@ATaco বাম / ডান এবং উপরে / ডাউন প্রতিসারণের সংমিশ্রণটি 180 ডিগ্রি রোটেশনাল প্রতিসম বোঝায়। ;)
এরিক ডুমিনিল

55

পাইথ , 3 বাইট

_I_

ফেরত পাঠায় সত্য বা মিথ্যা

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

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

  _  Reverse the input.
_I   Invariant-reverse; test if the reversed input is equal to its reverse.

1
তোমার ফাইনাল দরকার কেন _?
busukxuan

34
@busukxuan প্রশ্ন থেকে "উপরন্তু, প্রোগ্রাম বা কাজ আপনি একটি যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে নিজেই হওয়া আবশ্যক লিখুন"
isaacg

1
এত উর্ধ্বে কেন ... এই উত্তরটি এত কঠিন বলে মনে হচ্ছে না ...?
ভূত_স_ই_কোড

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

4
@ ঝোস্ট_ইন_থ_কোড আমার ১০০+ এর সাথে উত্তরগুলির মধ্যে একটিই লিখতে আসলেই চ্যালেঞ্জ ছিল, তবুও এমন উত্তর রয়েছে যেগুলিতে আমি কিছু দিন ব্যয় করেছি যা কেবলমাত্র হাতে গোনা কয়েকটি মুভি পেয়েছি। শেষ পর্যন্ত, এগুলি সমস্ত ঘটনাগুলি ছড়িয়ে পড়ে ...
ডেনিস

47

পাইথন , 39 বাইট

lambda s:s[::-1]==s#s==]1-::[s:s adbmal

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

বিরক্তিকর, তবে পাইথনে সংক্ষিপ্ততা থাকলে এটি চিত্তাকর্ষক হবে।


বাহ, thos (, )কিছু ভাল (এবং বিভ্রান্তিকর) ইনপুট :) ছিলেন
ABcDexter

33

জেলি , 5 বাইট

ḂŒ
ŒḂ

ফেরত পাঠায় 1 বা 0 । প্রথম লাইনটি একটি নির্বিঘ্নে সহায়ক সহায়ক লিঙ্ক, দ্বিতীয় লাইনটি প্যালিনড্রোম পরীক্ষা কল করে।

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


বাহ, সাম্প্রতিক সংযোজন
জোনাথন অ্যালান

6
হ্যাঁ, কেবল 18 ঘন্টা বয়স।
ডেনিস

আপনি এনকোডিং নির্দিষ্ট করেন নি। আমি ইউটিএফ -8 অনুমান করছি?
ব্রায়ান মিন্টন

1
@ ব্রায়ানমিন্টন নো, এটি ইউটিএফ -8 এ 11 বাইট হবে। জেলি এই কোড পৃষ্ঠাটি ব্যবহার করে ।
ডেনিস

@ ডেনিস, তথ্যের জন্য ধন্যবাদ
ব্রায়ান মিন্টন


23

গণিত, 23 বাইট

QemordnilaP;PalindromeQ

খুব আকর্ষণীয় নয়, তবে সম্পূর্ণতার জন্য ...

উপরেরটি হ'ল CompoundExpressionযা মূল্যায়ন করে PalindromeQ, একটি বিল্ট-ইন যা চ্যালেঞ্জ সমাধান করে। QemordnilaPকেবলমাত্র একটি অনির্ধারিত শনাক্তকারী, যা কারণে উপেক্ষা করা হয় ;


21

হাস্কেল, 87 85 44 34 বাইট

p=(==)<*>reverse--esrever>*<)==(=p

ব্যাখ্যা: ((->) a)অ্যাপ্লিকটিভের একটি উদাহরণ (ধন্যবাদ @ ফৌবিগুই), <*>হিসাবে সংজ্ঞায়িত হিসাবে

(<*>) f g x = f x (g x)

সুতরাং আর্গুমেন্টগুলি স্থির করে কেউ দেখতে পাবে যে এটি কেন কাজ করে।


1
আপনি কোড ব্যাখ্যা করতে পারেন?
bli

1
@ ব্লি সব পরে --মন্তব্য একটি মন্তব্য।
theonlygusti

3
@ থিওনলিগুস্তি হাস্কেল যথেষ্ট পরিমাণে এলিয়েন যে কেবল অর্ধেকই সাহায্য করে।
ইয়াক

@Yakk এটা সমন্বয় কিছু বাছাই এর (==), reverseএবং idফাংশন ( idপরিচয় ফাংশন)।
tbodt

আপনি ব্যবহার করে 10 বাইট সংরক্ষণ করতে পারবেন <*>পরিবর্তে <$>করেছে এবং সরিয়েছে<*>id
faubi

20

05 এ বি 1 , 3 বাইট

কোড:

ÂQÂ

ব্যাখ্যা:

     # Bifurcate (duplicate and reverse the duplicate) implicit input
 Q    # Check if equal
  Â   # Bifurcate the result

সিপি -1222 এনকোডিং ব্যবহার করে । এটি অনলাইন চেষ্টা করুন!


কেন শুধু নয়ÂQ
নীল এ।

1
@NeilA। কোডটি নিজেই প্যালিনড্রোম হওয়া দরকার।
আদনান

17

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

<?=strrev($s=$_GET[s])==$s;#;s$==)]s[TEG_$=s$(verrts=?<

এছাড়াও, ভাষার নামটি একটি প্যালিনড্রোম তাই ... বোনাস পয়েন্ট!


স্নিগ্ধ সমাধান।
মার্টিজন

16

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

tPX=XPt

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

ফিরে আসে [1; 1] প্যালিনড্রমিক ইনপুট এবং [0; 0] অন্যথায়।

t       % duplicate the input
P       % reverse the second string
X=      % check the two strings are exactly equal (returns 0 or 1)
XP      % flip array (does nothing)
t       % duplicate the answer, giving either [1;1] or [0;0]
        % (implicit) convert to string and display

15

পিপ , 12 11 বাইট

এখন মন্তব্য মুক্ত!

x:RVaQaVR:x

কমান্ড-লাইন আর্গুমেন্ট হিসাবে ইনপুট নেয়; 1প্যালিনড্রোমের আউটপুট , 0নন-প্যালিনড্রোমের জন্য। এটি অনলাইন চেষ্টা করুন!

আমরা কি করতে চান কি মূল RVaQa: reverse(a) string-equals a। কোড x:RVaQaএই ফলাফলটি গণনা করে এবং এটি নির্ধারণ করে x। তারপরে ভেরিয়েবলের VR:xমান নির্ধারণ করে । যেহেতু এই অ্যাসাইনমেন্টটি প্রোগ্রামের সর্বশেষ বিবৃতি, তাই এর মানটিও স্ব-মুদ্রিত। ভাল খবর!xVR

কিছু পূর্বনির্ধারিত আচরণ ব্যবহার করে পূর্ববর্তী আকর্ষণীয় সংস্করণের জন্য, পুনর্বিবেচনার ইতিহাসটি দেখুন।



9

আর, 111 103 বাইট

all((s<-el(strsplit(scan(,"",,,"\n"),"")))==rev(s))#))s(ver==)))"",)"n\",,,"",(nacs(tilpsrts(le-<s((lla

সর্বাধিক আসল উত্তর নয়। #মন্তব্য চরিত্র আর

Ungolfed:

all((s<-el(strsplit(scan(,"",,,"\n"),"")))==rev(s))
#
))s(ver==)))"",)"n\",,,"",(nacs(tilpsrts(le-<s((lla

অক্ষরের স্ট্রিংটি ফাংশনটির scanজন্য কাঁচা বাইটে রূপান্তরিত হয় charToRaw। এই কাঁচা বাইটগুলি rev()ফাংশন থেকে তাদের প্রতিযোগীদের সাথে একে অপরের সাথে তুলনা করা হয়, যা এর যুক্তির ক্রমকে বিপরীত করে। এই অংশটির আউটপুট হ'ল TRUEএবং / অথবা এর ভেক্টর FALSE। ফাংশন তারপর আউটপুট যদি ঐ সমস্ত উপাদান
allTRUETRUE

এখানে, "\n"scanফাংশন একাধিক শব্দ দিয়ে ইনপুট জন্য প্রয়োজনীয়।

পূর্ববর্তী উত্তর (বাইট-ওয়াইস), 81 বাইট

function(s)all((s=charToRaw(s))==rev(s))#))s(ver==))s(waRoTr‌​ahc=s((lla)s(noitcnu‌​f

সাথে - 24 বাইট @ rturnbull ধন্যবাদ ।


charToRawঅ্যাসাইনমেন্টের আগে রূপান্তরটি করে sএবং আপনি কীভাবে sepযুক্তিটি সেট করেছেন তা পরিবর্তন করে আপনি কয়েকটি ভাল বাইট সংরক্ষণ করতে পারেন scan:all((s<-charToRaw(scan(,"",,,"\n")))==rev(s))#))s(ver==)))"n\",,,"",(nacs(waRoTrahc-<s((lla
rturnbull

(এছাড়াও, এই পদ্ধতির উদাহরণস্বরূপ ééকোনও ইউটিএফ -8 এনকোডিংয়ের আওতায় কাজ করে না , তবে আমি মনে করি না যে চ্যালেঞ্জের নিয়মগুলি ভেঙে যায়))
rturnbull

@ আর্টারনবুল: ইনপুটগুলির জন্য ধন্যবাদ! আমি প্রকৃতপক্ষে ééএকটি latin1এনকোডিং দিয়ে পরীক্ষা করেছি ।
ফ্রেডেরিক

যেহেতু পরীক্ষাটি অবশ্যই চরিত্রবান হতে হবে, তাই আমার মনে হয় বর্তমান প্রোগ্রামটি নিয়মগুলি ভঙ্গ করে।
ফ্রেডেরিক

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

8

আরপিগ্রন , 11 বাইট

~]S.E E.S]~

এর প্রথমার্ধটি সমস্ত ভারী উত্তোলন করে, এবং আরপিগ্রোনের সুবিধার্থে, দ্বিতীয়ার্ধটি একটি নো-অপ্ট।

~]S.E E.S]~
~           # Treat the word as a Zero Space Segment
 ]          # Duplicate the top of the stack
  S.        # Reverse the top of the stack
    E       # Compare if these values are equal
      E.S]~ # A no-op, because the ~ is at the end of the word, not the start.

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


8

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

বাইট গণনাটি আইএসও 8859-1 এনকোডিং ধরেছে।

$
¶$`
O$^`\G.
»
D`
M$`^.+$
$+.^`$M
`D
»
.G\`^$O
`$¶
$

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

আমি নিশ্চিত যে এটি এখনও সর্বোত্তম নয় ( »লাইনটি বিশেষভাবে অপব্যয়যুক্ত বলে মনে হচ্ছে, এবং আমার কাছে একটি 45-বাইট সমাধান রয়েছে যা একটি চরিত্র ব্যতীত প্যালিনড্রমিক)) তবে আমার ধারণা এটি একটি শুরু।


8

জিএনইউ সেড , 64 59 + 1 (আর ফ্ল্যাগ) = 60 বাইট ইউটিএফ -8

কোডটি প্যালিনড্রোম করার জন্য কোনও মন্তব্য বিভাগ ব্যবহার করছে না এমন একটি শিষ্ট উত্তর নিয়ে আসতে আমাকে কিছুক্ষণ সময় নিয়েছে। পরিবর্তে, আমি cকমান্ডটি ব্যবহার করি যা কোডের প্রথমার্ধটি বিপরীত ক্রমে মুদ্রণ করে, কেবলমাত্র আমি নিশ্চিত করি যে এই নির্দেশনাটি পৌঁছেছে না।

:;s:^(.)(.*)\1$:\2:;t;/../c1
d
1c/../;t;:2\:$1\)*.().(^:s;:

স্ক্রিপ্টটি প্রিন্ট করে 1যদি ইনপুট স্ট্রিংটি প্যালিনড্রোম না হয় (এটিকে একটি ত্রুটি হিসাবে মনে করে)। যদি স্ট্রিংটি একটি প্যালিনড্রোম হয় তবে কোনও আউটপুট দেওয়া হয় না (এটিকে সফলভাবে প্রস্থান করা হিসাবে ভাবেন)।

উদাহরণ চালান: অথবা এটি অনলাইন চেষ্টা করুন!

me@LCARS:/PPCG$ sed -rf palindrome_source.sed <<< "level"
me@LCARS:/PPCG$ sed -rf palindrome_source.sed <<< "game"
1

ব্যাখ্যা:

:                              # start loop
s:^(.)(.*)\1$:\2:              # delete first and last char, if they are the same
t                              # repeat if 's' was successful
/../c1                         # if at least 2 chars are left, print 1. 'c' reads
                               #till EOL, so next command must be on a new line.
d                              # delete pattern space. This line must be a
                               #palindrome itself, and must end the script.
1c/../;t;:2\:$1\)*.().(^:s;:   # (skipped) print first half of code in reverse
                               #order. Everything after 'c' is treated as string.

1
টিআইওর এখন সেডের জন্য সমর্থন রয়েছে। -rকাজ করে না, তবে আপনি কেবল পুরো জিনিসটি বেসে গুটিয়ে রাখতে পারেন। অনলাইনে চেষ্টা করে দেখুন!
রিলে

@ রিলে টিআইওতে শিরোনাম এবং পাদচরণের চমৎকার ব্যবহার, ধন্যবাদ thanks আগের কাজটি ছিল কোডটি -e সহ আর্গুমেন্ট তালিকায় স্থানান্তরিত করা, তবে আপনার উপায়টি খুব সুন্দর। আমি এটি স্থির হওয়ার জন্য অপেক্ষা করছিলাম, তবে এইভাবে আমার দরকার নেই।
শৈশুমারা

7

অ্যালিস , 19 বাইট

/@.nzRoi\
\ioRzn.@/

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

Jabberwockyপ্যালিনড্রোমগুলির জন্য মুদ্রণ এবং অ-প্যালিনড্রোমগুলির জন্য কিছুই নয়। স্বেচ্ছাসেবী UTF-8 ইনপুট জন্য কাজ করে।

ব্যাখ্যা

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

যাইহোক, আসল প্রাসঙ্গিক কোডটি হ'ল:

/ . z o
 i R n @

যা বাম থেকে ডানে একটি জিগজ্যাগে কার্যকর করা হয়।

/   Reflect the IP southeast, enter Ordinal mode.
i   Read all input as a single string.
.   Duplicate the input.
R   Reverse the copy.
z   Pop the reverse Y and the original X. If X contains Y, drop everything
    up to its first occurrence. Since we know that X and Y are the same length,
    Y can only be contained in X if X=Y, which means that X is a palindrome.
    So this will result in an empty string for palindromes and in the non-empty
    input for non-palindromes.
n   Logical NOT. Replaces non-empty strings with "", and empty strings with
    "Jabberwocky", the "default" truthy string.
o   Output the result.
@   Terminate the program.

6

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

f=(==)=<<reverse--esrever<<=)==(=f

এটি অনলাইন চেষ্টা করুন! কল f "some string", রিটার্ন Trueবা False

=<<ফাংশন উপর অপারেটর মত কাজ করে f=<<g = \s -> f (g s) s, তাই কোড সমতূল্য f s=s==reverse s, যা, হিসাবে আমি শুধু খেয়াল, একই বাইট গণনা স্থাপিত হবে।


মন্তব্য ছাড়াই সংস্করণ: (49 বাইট)

e x y=x/=y
p=e=<<reverse
esrever<<=e=p
y=/x=y x e

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

সাথে কল p "some string"Falseপ্রদত্ত স্ট্রিংটি প্যালিনড্রোম হলে এবং যদি এটি কোনও প্যালিনড্রোম না হয় তবে এই ফলাফলগুলি আউটপুট হয়True

ব্যাখ্যা:

আমি মন্তব্যটি সংস্করণ দিয়ে শুরু করে এবং মন্তব্যটিকে একটি নতুন লাইন দিয়ে প্রতিস্থাপন করে মুক্ত মন্তব্যটি পেয়েছি:

p=(==)=<<reverse
esrever<<=)==(=p

দ্বিতীয় লাইন ব্যর্থ হয়েছে কারণ প্রথম বন্ধনী মেলে না, তাই আমাদের এগুলি থেকে মুক্তি দেওয়া দরকার। আমাদের যদি এমন একটি ফাংশন থাকে eযা সাম্যতার জন্য পরীক্ষা করে, তবে

p=e=<<reverse
esrever<<=e=p

উভয়ই দ্বিতীয় লাইনের সাথে একটি ইনফিক্স-অপারেটর সংজ্ঞায়িত করবে <<=যা দুটি আর্গুমেন্ট গ্রহণ করে esreverএবং eফাংশনটি ফিরিয়ে দেবে p

eসমতা ফাংশন হিসাবে সংজ্ঞায়িত করতে একজন সাধারণত লিখতে পারে e=(==), তবে )==(=eআবার সংকলন করবে না। এর পরিবর্তে আমরা স্পষ্টভাবে দুটি আর্গুমেন্ট গ্রহণ করা এবং তাদের পাস পারে ==: e x y=x==y। এখন বিপরীত কোডটি y==x=y x eসংকলন করে তবে ==অপারেটরটিকে নতুন সংজ্ঞা e x y=x==yদেয় , যার ফলে সংজ্ঞাটি ব্যর্থ হয়। তবে আমরা যদি অসমতার অপারেটরে স্যুইচ করি তবে /=বিপরীত সংজ্ঞাটি y=/x=y x eএমন একটি =/অপারেটর হয়ে যায় এবং সংজ্ঞা দেয় যা মূল /=অপারেটরের সাথে হস্তক্ষেপ করে না ।


5

তেল , 178 বাইট

একটি ইনপুট পড়ে, এটি বিস্ফোরিত করে, আস্তে আস্তে তার দৈর্ঘ্য (বাড়ানো এবং হ্রাসের মাধ্যমে) স্ট্রিংয়ের পরে ঠিকানার জন্য ঠিকানাতে যুক্ত করে, কোডের একটি পৃথক অংশে (মাঝখানে) লাফ দেয়, ব্যান্ডের দিকটি বিপরীত করে, স্ট্রিংটি প্রবর্তিত করে আবার এবং এটি পরীক্ষা করে যে এটি মূল স্ট্রিংয়ের মতো। টিএল; ডিআর: এটি যথারীতি ব্যথা।

আউটপুট 40যদি স্ট্রিং একটি যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে না হয়, 0যদি তা না হয়।

5
0
12
0
40
1
40
2
1
40
34
10
2
3
22
16
9
2
8
35
6
11
6
37

3
4
4
27
26
0
1
10
1

40
13
2
31
04

1
01
1
0
62
72
4
4
3

73
6
11
6
53
8
2
9
61
22
3
2
01
43
04
1
2
04
1
04
0
21
0
5

2
ঝরঝরে ভাষা! :)
DLosc

5

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

f=s=>s==[...s].reverse().join``//``nioj.)(esrever.]s...[==s>=s=f

fস্ট্রিং সহ কল ফাংশন

f("abba") // returns true
f("abab") // returns false

আপনার উত্স কোডটি প্যালিনড্রোম নয়!
শৈশুমারা

@seshoumara কোড আপডেট করেছেন
প্রশান্ত বেন্দ্র

এখন ঠিক আছে। স্ট্রিংটি কোনও প্যালিনড্রোম না হলে কেবল রিটার্ন মানটি উল্লেখ করুন কেবলমাত্র সম্পূর্ণতার জন্য।
শেশমারা

@ অ্যাপসিলাররা আপনাকে ধন্যবাদ আমি উত্তর সম্পাদনা করেছি।
প্রশান্ত বেন্দ্র

কোনও ফাংশন নেই f, আপনার কোডটি আপনার তীর ফাংশনটিকে একটি ভেরিয়েবলের জন্য বরাদ্দ করে না যাতে এটি বলা যায় না
স্পেক্স

5

জাপট , 7 2 বাইট

êê

চালাও এটা

পুরানো সমাধান:

U¥UwU¥U

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

ব্যাখ্যা

U¥UwU¥U
U¥        U is the input, ¥ is a shortcut for == 
  Uw      w is a reverse function.
    U¥U   This calculates U == U (always true), but the result is ignored
          because w does not look at its arguments.

জাপট কোনও বন্ধকৃত প্রথম বন্ধনী (বা স্থান) না পৌঁছলে ফাংশন থেকে বাঁচতে পারে না।

এটি আবার লেখা যেতে পারে: U¥Uw(U¥U)U¥UwU==Uw। জাপাতে, প্রথম সূত্রের বাইরে থাকা বন্ধনীগুলি ফাংশনটির শেষে এবং স্বয়ংক্রিয়ভাবে সন্নিবেশ করা হয়।


এটি সমস্ত অর্থবোধ করে, যদি wকোনও ফাংশন যা কোনও যুক্তি না নেয় তবে এটি কীভাবে প্রযোজ্য U? এটা কি কিছু মত U.reverse()?
DLosc

পছন্দ করুন এটি Uএকইভাবে বিপরীত হয় U.reverse()
অলিভার

4

ব্যাশ + ইউনিক্স ইউটিলিটিস, 49 বাইট

[ "$1" = "`rev<<<$1`" ] # ] "`1$<<<ver`" = "1$" [

ইনপুটটি আর্গুমেন্ট হিসাবে পাস করা হয়।

ফলাফল কোডে আউটপুট ফেরত দেওয়া হয় - একটি প্যালিনড্রোমের জন্য 0, নন-প্যালিনড্রোমের জন্য 1।

হতে পারে কেউ আরও ভাল করতে পারে এবং কোডটিকে নিজেরাই প্যালেন্ড্রোমিক করতে কেবল কোনও মন্তব্যের উপর নির্ভর করে না।

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


[[ $1 = `rev<<<$1` ]]খাটো হয়। (বাশ [[সিনট্যাক্স, কোনও উদ্ধৃতি প্রয়োজন নেই)
আর্থার 2e5

2
@ আর্থার 2e5 আমি আপনার পরামর্শটি ব্যবহার করে দেখতে পেরেছি, তবে আমি মনে করি সমাধানে rev<<<$1এমনকি আশেপাশের উদ্ধৃতিগুলি দরকার [[...]]। এটি ইনপুট স্ট্রিং '[$]]$['(যা একটি প্যালিনড্রোম) দিয়ে পরীক্ষা করুন। এটিকে কার্যকর করার জন্য এই উক্তিগুলি যুক্ত করা হলেও, আপনার সমাধানটি আমার সমাধানের সমান দৈর্ঘ্য।
মিচেল স্পেক্টর

দুর্দান্ত ধর! আমি ভুলে গেছি যে RHS ==মধ্যে [[একটি হিসেবে ব্যাখ্যা করা হবে case-একটি প্যাটার্ন।
আর্থার 2e5

@ আর্থার 2e5 আমি এখনও মনে করি এই সংক্ষিপ্ত করার সম্ভবত কিছু চতুর উপায় আছে।
মিচেল স্পেক্টর

ইনপুটটিতে নতুন লাইন থাকলে এটি কি এখনও কাজ করবে? আমি মনে করি আপনার কেবল রেভের পরিবর্তে রেভ | ট্যাক দরকার।
বি_জোনাস

4

> <>, 11 বাইট

{=?!;
;!?={

এখানে চেষ্টা করুন!

একটি বৈধ প্যালিনড্রোমের উপর "s n কিছু গন্ধযুক্ত গন্ধযুক্ত ..." প্রদান করে, একটি অবৈধ প্যালিনড্রোমের উপর কোনও আউটপুট নেই। স্ট্যাকের উপর প্যালিনড্রোম রাখুন।


ইতিমধ্যে স্ট্যাকের মধ্যে ইনপুট থাকা প্রয়োজন এটি একটি স্নিপেট করে। এই চ্যালেঞ্জটির জন্য স্নিপেট নয়, প্রোগ্রাম বা ফাংশন প্রয়োজন।
পিপ্পারি

4

জাভা - 171 169 160 বাইট

int q(String s){return s.equals(new StringBuffer(s).reverse().toString())?1:2;}//};2:1?))(gnirtSot.)(esrever.)s(reffuBgnirtS wen(slauqe.s nruter{)s gnirtS(q tni

শেষে মন্তব্যটি এটিকে একটি প্যালিনড্রোম করা। ফেরত পাঠায় P(alindrome)যখন ইনপুট যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে এবং N(ot)যখন না।

অবরুদ্ধ সংস্করণ:

int q(String s) {
    return s.equals(new StringBuffer(s).reverse().toString()) ? 'P' : 'N';
}//};'N':'P'?))(gnirtSot.)(esrever.)s(reffuBgnirtS wen(slauqe.s nruter{)s gnirtS(q tni

2 বাইট সংরক্ষিত হয়েছে @ ডিএলসকে ধন্যবাদ

@ অলিভার গ্রাগোয়ারকে বাইটের ভুল পরিমাণ চিহ্নিত করার জন্য ধন্যবাদ! এখনই স্থির


আমি বিশ্বাস করি যে আপনি intএস এর পরিবর্তে এসগুলি ফিরিয়ে কিছু বাইট সংরক্ষণ করতে পারেন char
DLosc

আমি জানি না কীভাবে আপনার বাইট গণনা চেক করবেন তবে আপনার 1601 বাইট রয়েছে 161 নয়
অলিভিয়ার গ্রাগোয়ার

আপনি ৮০ এর জন্য 78৮ এবং more 'P'78 এর জন্য ফিরে আরও দুটি বাইট সংরক্ষণ 'N'করতে বিভিন্ন চর ব্যবহার করতে পারেন বা বাইট সংরক্ষণ করতে পারেন।
সেলিম

1
আপনি এর new StringBuffer(s).reverse()+""পরিবর্তে আরও বেশি বাইট সংরক্ষণ করতে পারেনnew StringBuffer(s).reverse().toString()
সেলিম

1
কোনও কারণে আপনি intপরিবর্তে ফিরে আসছেন bool?
কোডসইনচাউস

4

জাভা 8, 92 90 বাইট

এটি একটি মন্তব্য সংস্করণ। যদি কোনও স্ট্রিংয়ে এর বিপরীত থাকে, তবে এটি একটি প্যালিনড্রোম ( true) অন্যথায় এটি ( false) নয়।

s->s.contains(new StringBuffer(s).reverse())//))(esrever.)s(reffuBgnirtS wen(sniatnoc.s>-s

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

হালনাগাদ

  • -2 [18-04-05] এতে স্যুইচ করা হয়েছে। কেভিন ক্রুইজসেনকে ধন্যবাদ !
  • -2 [17-02-20] সরানো ;হয়েছে
  • -16 [17-02-22] স্বয়ংক্রিয় রূপান্তর

এই কোডটি ল্যাম্বডা এক্সপ্রেশন নয়।
Jakob

@ জাকব আমি ভেবেছিলাম এটি ছিল। আপনি যদি ল্যাম্বডা ব্যবহার করেন তবে আপনি সম্ভবত একটি শীর্ষস্থানীয় এবং পিছনে থাকা নতুন লাইন চাইবেন। (আমি একটি টিও লিঙ্ক যুক্ত করেছি)
ননলাইনফর্ট

হ্যাঁ, আমার অভিযোগ ছিল যে লাইন মন্তব্যটি জমা দেওয়া কেবল একটি ল্যাম্বডা এক্সপ্রেশনের চেয়ে বেশি করে তোলে এবং এটি ল্যাম্বডা সমাধান হিসাবে বৈধ নয়। আপাতত এটি সম্পর্কে চিন্তা করবেন না; আমি সম্ভবত শেষ পর্যন্ত sensক্যবদ্ধ হওয়ার জন্য একটি মেটা পোস্ট করব।
জাকব

@ জ্যাকব ল্যাম্বদা সমাধানগুলিতে মাঝে মাঝে এক্সটেনারাস কোড থাকতে পারে , এ কারণেই আমি এটি বৈধ বলে মনে করি। আপনি যদি বিক্রি না হন তবে একটি মেটা পোস্ট ক্ষতিগ্রস্থ হবে না।
ননলাইনফ্রুট

1
আমি জানি এটি কিছুক্ষণ হয়ে গেছে, তবে আপনি এটি পরিবর্তন করে 2 বাইট গল্ফ করতে পারেন s->s.contains(new StringBuffer(s).reverse())//))(esrever.)s(reffuBgnirtS wen(sniatnoc.s>-sঅনলাইনে 90 টি বাইট ব্যবহার করে দেখুন
কেভিন ক্রুইজসেন

3

আসলে , 5 বাইট

;R=R;

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

সত্যবাদী আউটপুট হয় [1]\n[1]এবং মিথ্যা আউটপুট হয় []\n[](উভয় আউটপুটে, \nএকটি আক্ষরিক নিউলাইন উপস্থাপন করে)।

ব্যাখ্যা:

;R=R;
;R=    duplicate input, reverse one copy, test equality (the main palindrome-testing part)
   R   range(1, x+1) - if palindrome, this pushes [1], else it pushes []
    ;  duplicate

কেন আপনি শুধু এই না ?
লিকি নুন

1
@ লেকিউন এটি একটি প্যালিনড্রোম হতে হবে
কেয়ারড কোইনারিংহিং

3

সি ++, 154 বাইট

int m(){std::string g,p="";g=p;std::reverse(p.begin(),p.end());return g==p;}//};p==g nruter;))(dne.p,)(nigeb.p(esrever::dts;p=g;""=p,g gnirts::dts{)(m tni

আমার বলতে হবে, বিপরীত বিবৃতি ব্যয়বহুল ছিল, তবে আমি এটি পরিবর্তন করতে আমি কী করতে পারি তা কল্পনা করতে পারি না। এইচটিডি :: প্রতীকগুলি কাটাতে সক্ষম হওয়ায় আমার প্রায় 10 টি অক্ষর বাঁচবে, তবে "নেমস্পেস স্ট্যান্ড ব্যবহার করে;" আরও বেশ কয়েক।

আমি মনে করি সি ++ প্রকৃতপক্ষে সংক্ষিপ্ততার জন্য নয়।


3

প্রোলোগ, 44 বাইট

p-->[]|[_]|[E],p,[E].%.]E[,p,]E[|]_[|][>--p

এটি নির্দিষ্ট ক্লজ ব্যাকরণ ব্যবহার করে। এটি আসলে একটি সম্পূর্ণ প্রসঙ্গ মুক্ত ব্যাকরণ:

p -->
      []            % the empty string
   |                % or
      [_]           % a one character string
   |                % or
      [E],          % one character, followed by
      p,            % a palindrome, followed by
      [E].          % that same character

ব্যবহার:

?- phrase(p,"reliefpfeiler").
true 

?- phrase(p,"re").
false.

2

সিজেম, 13 বাইট

l_W%=e#e=%W_l

ব্যাখ্যা:

l_W%=e#e=%W_l
l_            e#Read input twice
  W%          e#Reverse one input
    =         e#Test for equality
     e#e=%W_l e#Comment to be a palindrome

উদাহরণ:

> l_W%=e#e=%W_l
l_W%=e#e=%W_l
1

> l_W%=e#e=%W_l
Hi
0

> l_W%=e#e=%W_l
hh
1

এটি চেষ্টা করুন:l_W%#e#%W_l
অদিতসু

2

জে, 15 বাইট, 15 অক্ষর

-:|.NB. .BN.|:-

প্যালিনড্রোম হলে 1 প্রদান করে, যদি না হয় তবে 0 প্রদান করে।

আউটপুট:

   f '())('
1
   f 'nope'
0

ব্যাখ্যা:

-:    NB. "Match" verb, checks for equality
|.    NB. Reverses the string
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.