একটি স্ট্রিং প্যালিনড্রোম কিনা তা নির্ধারণ করার জন্য সংক্ষিপ্ততম কোড


42

একটি প্যালিনড্রোম এমন একটি স্ট্রিং যা পিছনে এবং সামনে উভয়ই একইভাবে বানানযুক্ত is উদাহরণস্বরূপ, 'ইভা, আমি কি গুহায় ব্যাট করতে পারি?' একটি প্যালিনড্রোম (EVACANISTAB | BATSINACAVE)

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

এজ কেস:

  • যতিচিহ্নটি অবাস্তবতার দিকে গণনা করা হয় না।
  • নিয়ন্ত্রণের অক্ষরগুলি উদাসীনতার দিকে গণনা করা হয় না।
  • হোয়াইটস্পেস প্যালিনড্রোমনেসের দিকে গণনা করা হয় না।
  • সংখ্যাগুলি উদাসীনতার দিকে গণনা করা হয়।
  • এই চ্যালেঞ্জের কেস প্যালিনড্রোমনেসের দিকে গণনা করা হয় না।
  • আপনার পছন্দের ভাষা দ্বারা চাপিয়ে দেওয়া ব্যতীত মূল্যায়ন করার জন্য স্ট্রিংয়ের দৈর্ঘ্যের কোনও সীমা নেই।
  • এই চ্যালেঞ্জের জন্য, নিজেকে ASCII অক্ষর সেটটিতে সীমাবদ্ধ করুন।

প্রযুক্তিগত প্রয়োজনীয়তা:

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

বিজয় শর্ত:

  • অক্ষরের মধ্যে সংক্ষিপ্ততম কোডটি জয়ী।

বর্তমান নেতা: টিমার্টিন (কে, 25 টি অক্ষর)

... আপনার উত্তর দিয়ে যাদু সবুজ চেক চিহ্ন চান ? এই লোকটির উত্তরটি মারধর করুন!


1
আমি / হে চ্যালেঞ্জের একটি অংশ, বা কোনও ফাংশন বডি কাজ করবে?
জন ডিভোরাক

1
কাজটি কীভাবে পরিমার্জনযোগ্য তা দেখানোর জন্য "ব্রেডক্র্যাম্বস" পুনর্বিবেচনার ইতিহাসের মাধ্যমে সমস্ত উত্তরে সাইট-ওয়াইড উপলব্ধ। উত্তরের বর্তমান সংস্করণে পুরো ইতিহাস দৃশ্যমান হওয়ার দরকার নেই।
পিটার টেলর

1
@ ওয়ার্ননারসিডি আমি নিশ্চিত যে নতুন প্রতিক্রিয়া যাচাই করতে ফিরে এসে কে সবুজ টিক পেয়েছে ওপিতে পরিবর্তন হবে।
গ্যারেথ

2
কোনও ভাষা নির্দিষ্ট না করা আমার পক্ষে এই চ্যালেঞ্জকে তুচ্ছ করে। নীচে যেমন দেখানো হয়েছে, উচ্চ ক্রমের পাঠ্য ম্যানিপুলেশন ফাংশনগুলিতে ফোকাস সহ ব্যাখ্যা করা ভাষাগুলি সর্বদা সংক্ষিপ্ত ফলাফল প্রাপ্ত করে। একক ফাংশন, আইপি () এর সাথে আমার নিজের দোভাষীকে একসাথে ছুঁড়ে ফেলতে কী হয়। আমার প্রতিযোগিতার অ্যালগরিদম এখন 'আইপি: আই'। 4 টি অক্ষর। সম্পন্ন.
গুডডোর

3
@ গুডোর জে এবং গল্ফস্ক্রিপ্ট দেখুন এই সাইটের মেটা সম্পর্কিত কোড গল্ফ এবং ভাষা প্রতিবন্ধকতা এবং সম্পর্কিত প্রশ্নগুলির বাইরে সমস্ত উপভোগ চুষে দেখুন ।
আকাশম

উত্তর:


29

কে, 25

{x~|x:_x@&x in,/.Q`a`A`n}

k){x~|x:_x@&x in,/.Q`a`A`n}"Eva, can I stab bats in a cave?"
1b

Q এবং k এর মিশ্রণের মতো দেখাচ্ছে: পি
স্কিভি

ঠিক আছে, আমি ঠিক কল করব না। কিউ ইত্যাদি Q। তারা কেবল স্ট্রিং র‌্যাপারস, তাদের নীচে কোনও আসল কে কোড নেই। এখন, আমি .q.inter বললে আমি সমস্যায় পড়ি।
tmartin

আমি অনুমান করি এটি শব্দার্থবিজ্ঞানের তুলনায়
কেঁদে

শুধু 31 এর জন্য কিউ বলতে পারি:{x~(|)x:(_)x inter(,/).Q`a`A`n}
tmartin

আমি জানি এটি খুব পুরানো তবে ... আপনি এটির মাধ্যমে 1 বাইট সংরক্ষণ করতে পারবেন {#|:\_x@&x in,/.Q`a`A`n}, যেখানে 1 টি সত্য এবং 2 টি মিথ্যা
স্ক্রল

24

পার্ল, 26 চর

s/_|\W//g;uc eq reverse uc

যখন $_প্যালিনড্রোম হয় তখন 1 এর মূল্যায়ন হয় ""(পার্ল এর মিথ্যা মানগুলির মধ্যে একটি) যখন তা না থাকে।

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

sub palin {
    s/_|\W//g;uc eq reverse uc
}
while (<DATA>) {
    chomp;
    print "$_ => ",palin()?"yes":"no","\n";
}
__DATA__
Eva, can I stab bats in a cave?
A man, a plan, a canal. Panama!
Madam, I'm Adam Corolla.
757
Boeing 757
A man, a plan, a big shovel, a canal. Panama!
A man, a plan, a canoe, pasta, heros, rajahs, a coloratura, maps, snipe, percale, macaroni, a gag, a banana bag, a tan, a tag, a banana bag again (or a camel), a crepe, pins, Spam, a rut, a Rolo, cash, a jar, sore hats, a peon, a canal >> __Panama__

আউটপুট:

Eva, can I stab bats in a cave? => yes
A man, a plan, a canal. Panama! => yes
Madam, I'm Adam Corolla. => no
757 => yes
Boeing 757 => no
A man, a plan, a big shovel, a canal. Panama! => no
A man, a plan, a canoe, pasta, heros, rajahs, a coloratura, maps, snipe, percale, macaroni, a gag, a banana bag, a tan, a tag, a banana bag again (or a camel), a crepe, pins, Spam, a rut, a Rolo, cash, a jar, sore hats, a peon, a canal >> __Panama__ => yes

অভিশাপ, আপনি আমাকে এটি মারধর। যদিও এটি সঠিকভাবে কাজ করবে না যদি _স্ট্রিংটিতে এটি থাকে? এবং এটি কোনও ইনপুট নেয় না তাই আপনার -pবিকল্পটি ব্যবহার করার দরকার নেই ?
গ্যারেথ

\Wরেজিজেসগুলিতে আন্ডারস্কোর বাদ দেয়। আমার ভয় হচ্ছে [^a-z\d]আপনার রেজেেক্সে আপনার দরকার হবে । আমি ভয় করি যেভাবেই হোক আমাকে মারধর করা হচ্ছে।
জন ডিভোরাক

3
_|\Wপরিবর্তে একটি সঙ্গে সংরক্ষণ করুন [_\W]
হাওয়ার্ড

1
আপনি এখানে সংক্ষিপ্ত _|\Wকরতে পারেন \Pl: আদর্শ one.com/0ufdaQ । শুধু ইউনিকোড অক্ষর হওয়া উচিত।
কোবি

আসলে, আবার চিন্তা করা - \Plসংখ্যার সাথে মেলে না, তাই আমার ধারণা _|\Wআপনি করতে পারেন সেরা।
কোবি

18

সি # 82 কেবল :)

var x=s.ToLower().Where(char.IsLetterOrDigit);return x.SequenceEqual(x.Reverse());

আমার প্রিয় ভাষায় বয়লারপ্লেট মুক্ত প্রোগ্রাম লেখার প্রলোভনকে প্রতিহত করতে পারেনি।

একটি পরীক্ষা এখানে পাওয়া যায়: http://ideone.com/8bwz7z


সরল ... তবে মার্জিত!
অ্যান্ড্রু গ্রে

@ অ্যান্ড্রু গ্রে মন্তব্য এবং অনুমতিপ্রাপ্ত প্রযুক্তিগত প্রয়োজনীয়তার জন্য আপনাকে ধন্যবাদ। সি # বয়লারপ্লেট চর গণনাতে মারাত্মকভাবে যুক্ত করে, অন্যথায় এটি গল্ফের জন্য অকার্যকর করে তোলে।
ক্রিশ্চিয়ান লুপাস্কু

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

13

GolfScript, 36 34 31 30 টি অক্ষর

{0"0:A[a{"@{>^}+/},{32|}%.-1%=

আমার পূর্ববর্তী (জাভাস্ক্রিপ্ট) সমাধানের সাথে একই রকম অ্যালগরিদম ।

0"0:A[a{"@{>^}+/- পিটার টেলর এবং হাওয়ার্ড অনুকূলিত। আমার সংস্করণ ছিল "/9@Z"{1$<},,2%\;। হাওয়ার্ড ফাংশন কনটেনটেশন দান করেছিলেন এবং পিটার টেলর এক্সওআরটিকে মডুলো -২ এর জন্য দান করেছিলেন। এটি মূলত তুলনা করার একটি জেনেরিক পদ্ধতি যদি মানটি রেঞ্জের ক্রম হয়।

{.96>32*-}%(১১ টি অক্ষর) জাভাস্ক্রিপ্টের .toUpperCase()(১৪ টি চরিত্রের) তুলনায় আসলে কোনও উন্নতি নয় , বিশেষত যেহেতু এটি কিছু অদ্ভুত বিরামচিহ্নকে যা zএএসসিআইআই টেবিলের পরে অনুসরণ করে (যা এখানে গুরুত্বপূর্ণ নয়) les

পিটার টেলরের পরামর্শ অনুসারে, তবে আমরা প্রথমে বর্ণানুক্রমিকগুলি ফিল্টার করলে আমরা প্রতিটি অক্ষরটিতে একটি বিট সেট করে ছোট এবং অঙ্কগুলিতে রূপান্তর করতে পারি: {32|}

.-1%=সমস্ত palindromic ভারী উত্তোলন না। একটি অংশ যা আমি সত্যিই পছন্দ করি না তা হ'ল অ্যারেটিকে কীভাবে বিপরীত করতে হয় তা জানতে আমাকে কত সময় লেগেছে। আমার ডক্সগুলি পড়া উচিত ছিল। অন্য দুটি চরিত্র স্ট্যাক পরিচালনা এবং তুলনা সম্পাদন করে।

পরীক্ষা: http://golfscript.apphb.com/?c=IkV2YSwgY2FuIEkgc3RhYiBiYXRzIGluIGEgY2F2ZT8iCgp7IjA6QVtheyJcez59KywsMiV9LHszMnx9JS4tMSU9


আরও, যদি আমি ধরে নিতে পারি যে নিম্নলিখিত কন্ট্রোল অক্ষরের কোনওটি উপস্থিত নেই: (ডেটা লিংক এ্যাস্কেপ, ডিভাইস নিয়ন্ত্রণ 1-4, নেতিবাচক স্বীকৃতি, সিঙ্ক্রোনাস অলস, সংক্রমণ ব্লকের সমাপ্তি, বাতিল, মাঝারিটির শেষ) (আমরা সকলেই এগুলি সম্মত সমস্ত অস্পষ্ট) বা আমি যদি তাদের 0-9 অঙ্কের বড় হাতের সংস্করণ হিসাবে বিবেচনা করতে পারি তবে আমরা আরও দুটি অক্ষর সংরক্ষণ করতে পারি:

গল্ফস্ক্রিপ্ট, ২৮ টি অক্ষর

{32|}%{0"0:a{"@{>^}+/},.-1%=

পরীক্ষা: http://golfscript.apphb.com/?c=IkV2YSwgY2FuIEkgc3RhYiBiYXRzIGluIGEgY2F2ZT8iCgp7MzJ8fSV7MCIwOmF7IkB7Pl59Ky99LC4tMSU9


2
আপনি পরিষ্কার থেকে মুক্তি পেতে পারেন এবং দুটি চরিত্র সংরক্ষণ করতে পারেন:{"0:A["\{>}+,,2%},
হাওয়ার্ড

টুইটার আমি মনে করি আমি +ব্লকগুলিতে ভুল বুঝেছি । এটি একটি দুর্দান্ত কৌশল।
জন ডিভোরাক

1
আপনি ফিল্টার এবং কেস স্ট্যান্ডার্ডাইজেশন বিপরীত করে তিনটি অক্ষর সংরক্ষণ করতে পারেন। a{লোয়ার-কেস অক্ষরগুলি অন্তর্ভুক্ত করতে আপনাকে ফিল্টারের অক্ষরের তালিকায় যুক্ত করতে হবে, তবে আপনি কেবলমাত্র উচ্চ-কেস করতে পারেন {32|}%। শেষ ফলাফলটি হল{"0:A[a{"\{>}+,,2%},{32|}%.-1%=
পিটার টেলর

ফিল্টারটিতে আরও একটি সঞ্চয় করা হবে। মডুলো 2 গণনা করা জোর, তাই কাজটিও 0"0:A[a{"@{>^}+/করে।
পিটার টেলর

@ পিটারটেলর যদি আমি খুব শীঘ্রই অন্য একটি অপ্টিমাইজেশান নিয়ে না উপস্থিত হই তবে আমার সম্ভবত সম্প্রদায় উইকিতে রূপান্তর করা উচিত। আবার ধন্যবাদ :-)
জন ডিভোরাক

8

জাভাস্ক্রিপ্ট, 53 টি অক্ষর:

(x=x.toLowerCase().match(/[a-z\d]/g))+""==x.reverse()

একটি জাভাস্ক্রিপ্ট এক্সপ্রেশন যা xএকটি প্যালিনড্রোম হলে সত্যকে মূল্যায়ন করে যদি তা না হয় তবে এটি মিথ্যা। এটি ধরে xনেওয়া একটি স্ট্রিং। যদি এটির গ্যারান্টি না থাকে তবে প্রিপেন্ড করুনx+="",

এখানে একটি ব্রেডক্রাম্ব রয়েছে: কীভাবে reverse()কাজ করে তার কারণে ,

(x=x.toLowerCase().match(/[a-z\d]/g))==""+x.reverse()

ব্যর্থ। যাহোক,

""+(x=x.toLowerCase().match(/[a-z\d]/g))==x.reverse()

পুরোপুরি ঠিক আছে।


একটি নাল স্ট্রিং জড়িত উপর দুর্দান্ত tidbit! ভাল ইনফোজের জন্য পয়েন্ট!
অ্যান্ড্রু গ্রে

3
সংকেতগুলি: +""একটি স্ট্রিং কাস্ট, +একটি সংখ্যা, এর কাস্ট |0এবং ~~একটি পূর্ণসংখ্যা কাস্ট করুন, !!একটি বুলিয়ান করতে কাস্ট।
জন ডিভোরাক


7

আর: 66

w=grep("[a-z0-9]",strsplit(tolower(s),"")[[1]],v=T);all(w==rev(w))

ব্যবহার:

f=function(s){w=grep("[a-z0-9]",strsplit(tolower(s),"")[[1]],v=T);all(w==rev(w))}

f("Eva, can I stab bats in a cave?")
[1] TRUE

7

বাশ: 52 48 46 টি অক্ষর

s=${1,,};s=${s//[^a-z0-9]};[ $s = `rev<<<$s` ]

এটি প্রথম প্যারামিটার হিসাবে পরীক্ষা করতে স্টিং লাগে এবং প্যালিনড্রোমের জন্য প্রস্থান কোডটি 0 এবং না হিসাবে 1 এ সেট করে।

নমুনা রান:

bash-4.2$ p() { s=${1,,};s=${s//[^a-z0-9]};[ $s = `rev<<<$s` ]; }

bash-4.2$ p 'Eva, can I stab bats in a cave?'; echo $?
0

bash-4.2$ p 'A man, a plan, a canal. Panama!'; echo $?
0

bash-4.2$ p "Madam, I'm Adam Corolla."; echo $?
1

bash-4.2$ p '757'; echo $?
0

bash-4.2$ p 'Boeing 757'; echo $?
1

bash-4.2$ p 'A man, a plan, a shovel, a canal. Panama!'; echo $?
1

bash-4.2$ p 'A_man,_a_plan, a_caremer, a canal:_Panama!'; echo $?
0

7

পাইথন 2: 49 (পদ্ধতিটির স্বাক্ষর গণনা ছাড়াই)

def f(s):
 s=filter(str.isalnum,s.upper())
 return s==s[::-1]

ইনপুট এবং আউটপুট সহ একটি সম্পূর্ণ প্রোগ্রাম 74 টি অক্ষরে লিখিত হতে পারে ।

import sys
s=filter(str.isalnum,sys.stdin.read().upper())
print s==s[::-1]

ব্যবহারের উদাহরণ:

$echo 'Eva,can I stab bats in a cave?' | python palindrome.py
True 
$ cat huge_palindrome.txt | python palindrome.py
True
$echo 'Able was I ere i SaW elBa' | python palindrome.py                                                                   
True                                         

( huge_palindrome.txtধারণ করে এই 17.826 শব্দ যে শব্দ কবিতা প্রভৃতি উলটা করিয়া পড়িলেও একই থাকে )

এই দ্রবণটি অজগর 3 এর সাথে কিছু চরিত্র যুক্ত করে মানিয়ে নেওয়া যায়:

পাইথন 3: 55

def f(s):
 s=list(filter(str.isalnum,s.upper()))
 return s==s[::-1]

sys.stdin.readমূলত একইরকমraw_input
ক্যালকুলেটরফ্লাইন

পাইথন ৩.৮ এ আপনি এটিকে 58 বাইটে
মিল্কিওয়ে 90

এছাড়াও, আপনার পাইথন 2 এবং 3 দ্রবণটি যথাক্রমে 61 বাইট এবং 67 বাইট।
মিল্কিওয়ে 90

@ মিল্কিওয়ে 90 আপনি সম্ভবত পদ্ধতিটির স্বাক্ষর না গণনা ছাড়াই মিস করেছেন । 2013 এ এটি অন্তর্ভুক্ত না করার রীতি ছিল। অন্যান্য ভাষায় এই প্রশ্নের অন্যান্য সমাধানে তারা কেবল এটিকে বাদ দিয়েছে এবং ধরে নিয়েছে যে কোনও sভেরিয়েবলের ইনপুট আপনার রয়েছে । আমি সম্পূর্ণ সংজ্ঞা দেওয়ার সিদ্ধান্ত নিয়েছি তবে, প্রথাগত হিসাবে 2013 সালে, পদ্ধতিটির স্বাক্ষরটি দৈর্ঘ্যে অন্তর্ভুক্ত করবেন না
বাকুরিউ

@ বাকুরিউ আহ, দেখছি। আমি এখানে কয়েকমাস এসেছি, তাই আমি 2013 থেকে শুল্ক জানি না
মিল্কিওয়ে 90

7

জাভা (বা এখন পর্যন্ত সবচেয়ে ভার্ভোজ ভাষা), 102 96 95 চর

s=s.replaceAll("\\W|_","");return s.equalsIgnoreCase(new StringBuffer(s).reverse().toString());

ব্যবহার (অবিকৃত কোড সহ):

static boolean q(String s) {
    s=s.replaceAll("\\W|_","");
    return s.equalsIgnoreCase(new StringBuffer(s).reverse().toString());
}

public static void main(String[] args) {
    System.out.println(q("'A man, a plan, a canal - Panama!'"));
}

নীচে মন্তব্যকারীদের সাহায্যে সংক্ষিপ্ত


1
যদিও আমি জাভা জানি না (আমি সি # লোক, যথেষ্ট মজার), আপনি কি তবে কোঁকড়া ধনুর্বন্ধনী বের করে 1 অক্ষর বাঁচাতে পারবেন না? উদাহরণ: if(s==null) return 1==0;? অথবা জাভা ifবিবৃতিগুলিতে মুকুল প্রয়োগ করে ?
অ্যান্ড্রু গ্রে

3
আপনি একেবারে ঠিক বলেছেন, আমি আপনাকে ধন্যবাদ জানালাম !! ... আমি সেখানে খেয়াল করি না, আমি অনুমান করি যে আমি জাভা বিকাশকারী যা সি # নয়?
জেসেডানো

4
1) প্যারামিটারটি nullএকটি ভাল অভ্যাস কিনা তা যাচাই করা , তবে কোডগল্ফে অনুশীলন করা হয়নি। যেমনটি আমি বলতে পারি, এই প্রশ্নটিতে অন্য কেউ তা করেনি। বাদ দাও. 2) তর্কগুলির মধ্যে স্থানটি পাঠযোগ্যতার জন্য সহায়তা করে তবে গল্ফ করে না। এটা মুছুন; 3 স্পষ্টভাবে পরিবর্তে) toLowerCase()স্ট্রিং ব্যবহার equalsIgnoreCase()পরে পরিবর্তে equals()। এইভাবে আপনাকে নিয়মিত অভিব্যক্তিটি সামঞ্জস্য করতে হবে তবে তবুও 1 টি অক্ষর খাটো। পেস্টবিন.
com

1
replaceAll("[^A-Za-z0-9]","")=>replaceAll("\\W","")
অসিলিয়াস

প্রকৃতপক্ষে: খুব => 95 টি অক্ষর replaceAll("\\W|_","");মুছে ফেলতে_
assylias

7

গণিত 54 53

ক্যাটস আরফ্লফিকে ধন্যবাদ একটি বাইট সংরক্ষণ করেছে:

PalindromeQ@StringCases[ToUpperCase@#,WordCharacter]&

10.2 বা তার আগের সংস্করণ যাদের জন্য:

#==Reverse@#&@StringCases[ToUpperCase@#,WordCharacter]&

উদাহরণ

PalindromeQ@StringCases[ToUpperCase@#, WordCharacter]&["Eva,can I stab bats in a cave?"]

সত্য


PalindromeQএর চেয়ে 1 বাইট কম#==Reverse@#&
ক্যালকুলেটরফলাইন

আমি ভাবলাম কেন আমি কখনই এটি দেখিনি। সংস্করণ 10.3!
ডেভিডসি


হ্যাঁ, আমি এটি ব্যবহার করে ভি। 10.4 ডাউনলোড করেছি।
ডেভিডসি

ওটা বেরোবে? ওএনওও
ক্যালকুলেটরফলাইন

6

জে, 30 টি অক্ষর

*/(=|.)tolower(#~'[^_\W]'rxE])

ব্যবহার:

   */(=|.)tolower(#~'[^_\W]'rxE])'A man, a plan, a canal - Panama!'
1
   */(=|.)tolower(#~'[^_\W]'rxE])'Doc, note: I dissent. A fast never prevents a fatness. I diet on cod'
1

6

কে ( 50 48 45 38 টি)

0b(ভুল) এর ডিফল্ট ফিরিয়ে দেওয়া, সমস্ত ত্রুটিগুলি দমন করে ।

{X~|X@:&(X:_:x)in 10h$(48+!10),97+!26}

উদাহরণ:

k){X~|X@:&(X:_:x)in 10h$(48+!10),97+!26} "Eva, can I stab bats in a cave?"
1b

সম্পাদনা: মধ্যবর্তী ভেরিয়েবল এড়িয়ে আরও তিনটি অক্ষর শেভ করে। এইচ / টি, সিএস -7: ত্রুটি দমন করার দরকার নেই।


1
আকর্ষণীয় যে আরও মাত্র 3 টি অক্ষরে, আমার কোডটি আরও বেশি পঠনযোগ্য :-)
জন ডিভোরাক

একটি অতিরিক্ত চর পিছল, আমি এটি সরিয়েছি।
স্কিভে

5

রুবি: 43 38 টি অক্ষর

s=s.upcase.tr'^A-Z0-9','';s==s.reverse

নমুনা রান:

irb(main):001:0> p=->s{s=s.upcase.tr'^A-Z0-9','';s==s.reverse}
=> #<Proc:0x854592c@(irb):1 (lambda)>

irb(main):002:0> p['Eva, can I stab bats in a cave?']
=> true

irb(main):003:0> p['A man, a plan, a canal. Panama!']
=> true

irb(main):004:0> p["Madam, I'm Adam Corolla."]
=> false

irb(main):005:0> p['757']
=> true

irb(main):006:0> p['Boeing 757']
=> false

irb(main):007:0> p['A man, a plan, a shovel, a canal. Panama!']
=> false

irb(main):009:0> p['A_man,_a_plan, a_caremer, a canal:_Panama!']
=> true

1
এমনকি আপনি s.tr!('^A-Za-z0-9','').upcase!.reverse==s
হাওয়ার্ড

ম্যান, আমি কতক্ষণ একত্রিত হয়ে !পদ্ধতিগুলি ব্যবহার ! আপনি আমাকে আপনার কৌশলগুলি দ্বারা আশ্চর্যজনক রাখছেন।
manatwork

যদিও @ ছোট্ট সমস্যা। trএবং অনুলিখনের tr!কিছুই নেই বলে তাদের কাছে আলাদা আচরণ বলে মনে হচ্ছে: পেস্টবিন.p['757'] com/4YThW2qN যা "NoMethodError: অপরিবর্তিত পদ্ধতি` উপধারা! 'দিয়ে ক্র্যাশ করে তোলে makes শূন্যতার জন্য: নীলক্লাস "ত্রুটি।
manatwork

ওহো দুঃখিত. সে মামলা নিয়ে ভাবেননি।
হাওয়ার্ড

1
আরও সংক্ষিপ্ত করা যেতে পারে:s=s.upcase.tr('^A-Z0-9','');s==s.reverse
ক্রিশ্চিয়ান লুপাস্কু

5

সি ++, 107 (Miscounted), 100 (ভুল হিসাববিহীন), 81

string s;for(int c:t)if(isalnum(c))s+=c|32;return s==string(s.rbegin(),s.rend());
  • ASCII বিট নিদর্শনগুলি প্রদর্শন করে।
  • একটি মন্দ উপর নির্ভর করে using namespace std;
  • লজিকাল অপারেটরগুলির পরিবর্তে বিটওয়াইড এবং ওআর ব্যবহার করে।
  • intএটি কম charবা এর চেয়ে কম কারণ ব্যবহার করে auto

    #include <string>
    using namespace std;
    
    bool IsPalindrome(const string & t) {
    string s;for(int c:t)if(isalnum(c))s+=c|32;return s==string(s.rbegin(),s.rend());
    }
    
    #include <cassert>
    
    int main() {
        assert(!IsPalindrome("gorilla"));  // simple failure
        assert( IsPalindrome("racecar"));  // simple success
        assert( IsPalindrome("Hannah"));   // case blind
        assert(!IsPalindrome("1999"));     // digit failure
        assert( IsPalindrome("2002"));     // digit success
        // Ignore spacing, punctuation, and case:
        assert( IsPalindrome(" \t09AZ/:@[`{za90"));  // boundaries
        assert( IsPalindrome("A man, a plan, a canal: Panama."));
        assert( IsPalindrome("Eva, can I stab bats in a cave?"));
        assert( IsPalindrome(""));  // empty string
        return 0;
    }
    

4

লুয়া, 56

a=io.read"*l":lower():gsub("%W","")print(a:reverse()==a)

যদি রেজেক্সের %Wমতো কিছু থাকে তবে \Wএটি আন্ডারস্কোরের মতো অক্ষরও বাদ দেয়। এটি অযাচিত।
জন ডিভোরাক

আমি পরীক্ষা %wকরে _%W
দেখেছি

1
শুধুমাত্র ফাংশন বডি প্রয়োজন। s=s:lower():gsub('%W','')return s:reverse()==s 46 টি চর
Egor Skriptunoff

তবে কি হবেfunction(s)
এমনিপ


4

হাস্কেল, 43

মান লাইব্রেরি ব্যবহার Control.Monad, Control.Monad.Instancesএবং Data.Char:

ap(==)reverse.map toLower.filter isAlphaNum

আমি এটিকে GCI তে কাজ করতে পারি না। import Data.Char import Control.Monad ap(==)reverse.map toLower.filter isAlphaNumস্পেস বা
এগুলি যুক্ত করেও

1
@SlimJim: ওহো, আপনি প্রয়োজন Control.Monad.Instancesহিসাবে ভাল। (আমি এর সাথে রিডার মোনাড উদাহরণটি ব্যবহার করছি ap, তবে সেই উদাহরণটি রফতানি করা হয়নি Control.Monad))
জন পূর্দি

4

পিএইচপি 60 টি অক্ষর।

প্রথমে কোডগল্ফে চেষ্টা করুন।

//thank you manatwork
echo($x=preg_replace('/\W/','',strtolower($c)))==strrev($x); 

উদাহরণ:

$c='Eva, can I stab bats in a cave?';
echo($x=preg_replace('/\W/','',strtolower($c)))==strrev($x);
//prints 1

টেরিনারি অপারেটরের প্রথম অপারেন্ডের চারপাশের প্রথম বন্ধনীগুলির প্রয়োজন নেই। আসলে তৃতীয় অপারেটরের কোনওটিরই প্রয়োজন নেই - আপনার ভাষার উপস্থাপনায় কেবল সত্য বা মিথ্যা আউটপুট। এবং $ x এর 1 এর আরও বেশি অক্ষরে অ্যাসাইনমেন্টের জন্য পৃথক বিবৃতি এড়িয়ে সংক্ষিপ্ত করা যেতে পারে: echo($x=preg_replace('/\W/','',strtolower($c)))==strrev($x);
manatwork

3

পাইথন 2 64 পাঠক:

i =''.join(re.findall('[a-z0-9]+',i.lower()))
return i==i[::-1]

@ মান্যাটওয়ার্ক আপনি যদি একটি পরিচয় অক্ষরের সাথে সমস্ত শনাক্তকারীকে প্রতিস্থাপন করেন তবে আপনি একটি 77অক্ষর সংস্করণ পাবেন। অভিরাম কেন উলোভিত সংস্করণ পোস্ট করেছেন তা ধারণা নেই।
বাকুরিউ

@ বাকুরিউ, কিছু মনে করবেন না, আমি এই প্রশ্নের একটি বক্তব্য মিস করেছি: "কেবল পদ্ধতিগুলির দেহের প্রয়োজন"। যদিও লাইন 2 এবং 3 আমাকে কেবল 73 টি অক্ষর দেয়। আরও দৈর্ঘ্য হ্রাস সম্পর্কে, কাঁচা স্ট্রিং এবং ক্যাপচার গ্রুপের প্রয়োজন নেই, re.findall('[a-z0-9]+',input.lower())অংশটি 3 টি অক্ষরকে ছোট করে তুলবে।
manatwork

@ মান্যাটওয়ার্ক, আমি পোস্টটি সম্পাদনা করেছি এবং ভেরিয়েবলগুলি কিছুটা পরিবর্তন করেছি। এটি এটিকে 66 66 এ নামিয়ে আনে Yes হ্যাঁ, কাঁচা স্ট্রিং বৈশিষ্ট্যটি এখানে কোনও কাজের নয়।
অভিরাম

ঠিক আছে, তবে আপনি কেন নিয়মিত অভিব্যক্তিতে ক্যাপচারিং গ্রুপকে জোর দিচ্ছেন? সঠিকভাবে ছাড়াই কাজ করে: পেস্টবিন.জেজেপিএনআরআরজেডু
মানটওয়ার্ক

আমার মনে হয় এটি আমার সাম্প্রতিক অজগর প্রকল্পটির সাথে জড়িত থাকার পরে আমার সাথে ধরা পড়ে :) এটি দেখানোর জন্য ধন্যবাদ।
অভিরাম

3

হাস্কেল 48

(\x->x==reverse x).map toLower.filter isAlphaNum

এই মত ব্যবহৃত:

(\x->x==reverse x).map toLower.filter isAlphaNum$"Eva, can I stab bats in a cave?"

3

স্মলটালক , স্কোয়াক / ফারোর স্বাদ
116 টি ট্যাব সহ প্রথাগত বিন্যাস ব্যবহার করে

আপনি স্ট্রিংয়ে দুটি পদ্ধতি যুক্ত করুন:

selffles
    ^self = self reverse
isPalindrome
    ^(self asUppercase asDecomposedUnicode select: #isAlphaNumeric) selffles

আমরা অবশ্যই কিছু স্পেস মুছে ফেলতে পারি, বা আরও ছোট পদ্ধতির নাম ব্যবহার করতে পারি, তবে আসুন স্মার্টটাকের আত্মার সাথে বিশ্বাসঘাতকতা না করি।

আরও বেশি, এটি ফ্রেঞ্চ প্যালিনড্রোমগুলি হ্যান্ডেল করবে, যেমন http://fr.wikedia.org/wiki/Liste_de_palindromes_fran%C3%A7ais , এই পৃষ্ঠায় খুব বেশি উত্তর দেওয়া যায় না।

['Léon a trop par rapport à Noël' isPalindrome] assert.

চতুর এবং দরকারী উত্তর!
অ্যান্ড্রু গ্রে

3

পাইথন 3 (51 চর)

এবং পাইথন 2 হতে পারে

অভিরাম সমাধানের উপর ভিত্তি করে (আরও আগ্রাসী গল্ফ সহ)

from re import findall

def palindrome(i):
 i=findall('[a-z\d]',i.lower())
 return i==i[::-1]

print(palindrome(input('Phrase: ')))

আর '\ ডাব্লু' ব্যবহার করে 46 টি অক্ষরে সংক্ষিপ্ত হতে পারে

এবং অত্যন্ত সংক্ষিপ্ত ফাংশন বডি (27 অক্ষর) সহ বৈকল্পিক

import re
l=str.lower
f=re.compile('[a-z\d]').findall

def palindrome(i):i=f(l(i));return i==i[::-1]

print(palindrome(input('Phrase: ')))

2

উইন্ডোজ পাওয়ারশেল, 56 47 45 অক্ষর

আপডেট হয়েছে (মন্তব্য দেখুন), এবং রেজেক্সের চারপাশে বন্ধনীগুলি সরাতে পারে:

($s=$s-replace'\W')-eq(-join$s[$s.length..0])

আসল (56)

$s=$s-replace'[^\w]','';$s-eq($s[-1..-$s.length]-join'')

আসল আন-গল্ফড:

$s = "Eva, can I stab bats in a cave?"
$s = $s -replace '[^\w]', ''
$rev = $s[-1..-$s.length] -join ''
$s -eq $rev

আপনি এটিকে 47 টি চরকে এভাবে গল্ফ করতে পারেন:($s=$s-replace'[\W]')-eq(-join$s[$s.length..0])
বানান

@ সপেলিংডি: দুর্দান্ত! আমি কোড গল্ফিংয়ে নতুন, উন্নতির জন্য ধন্যবাদ
গোরিক

আপনার কাছে ডান বন্ধনী অপসারণ করতে পারেন: ($s=$s-replace'\W')-eq-join$s[$s.length..0]
mazzy

2

সি ++, 74 বাইট

এই কোডটি আসলেই মার্জিত এবং বুঝতে সহজ (যখন সঠিকভাবে ফর্ম্যাট করা হয়)। আমি বিশ্বাস করি না যে সি ++ তে কোনও সংক্ষিপ্ততর পাওয়া সম্ভব এবং এটি কোনও মানক গ্রন্থাগার ফাংশন ব্যবহার করে না।

p(auto c){auto e=c;while(*e)++e;--e;while(*e==*c&e>c)--e,++c;return e<=c;}

ব্যবহারের উদাহরণ:

p("Hello"); //Outputs 0
p(""); //Outputs 1
p("a"); //Outputs 1
p("HellolleH"); //Outputs 1

সুন্দরভাবে ফর্ম্যাট করা সংস্করণ:

p(auto c)
{
    auto e=c;
    while(*e) ++e;
    --e;
    while(*e==*c & e>c)--e,++c;
    return e<=c;
}

1
error: ISO C++ forbids declaration of ‘p’ with no typeআপনার ফাংশন একটি রিটার্ন টাইপ করা উচিত।
কার্ল ন্যাপফ

আমি বাজি ধরছি এটি কেস, সাদা স্থান এবং নিয়ন্ত্রণের অক্ষরগুলিকে উপেক্ষা করে না।
তিতাস

while(*++e);পরিবর্তে আপনি একটি অক্ষর সংরক্ষণ করতে পারেন while(*e)++e;। তবে তিতাস যেমন উল্লেখ করেছেন এই উত্তরটি অবৈধ।
নিক মাত্তিও

2

পিএইচপি, 26 84 80 78 62 63 বাইট

<?=strrev($s=strtolower(preg_replace("#\W#","",$argv[1])))==$s;

প্রথম কমান্ড লাইন আর্গুমেন্ট থেকে ইনপুট নেয়; কপি করে প্রিন্ট 1truthy জন্য, falsy জন্য খালি স্ট্রিং।


আই 18 এন হ'ল একটি প্রশস্ত বিস্তৃতি, কারণ এর জন্য মাল্টিবাইট বিকল্প নেই strrev(১১০ বাইট; চালানো -r):

preg_match_all("#.#us",$s=strtolower(preg_replace("#\W#u","",$argv[1])),$m);echo$s==join(array_reverse($m[0]);

utf8_strrev পিএইচপি ম্যানুয়াল থেকে নির্মমভাবে চুরি । আপনি এই ব্লগ পোস্টটি একবার দেখতে চাইবেন ।


তিতাস আসুন ... এই ধারণা ব্যর্থ।
ক্রিস্টোফ

1
@ ক্রিসটফ হ্যাঁ আমার মাঝে মাঝে এটি পুরোপুরি পড়া উচিত। সংশোধন করা হয়েছে।
তিতাস

এইচএম -Rপরীক্ষার জন্য স্ট্রিংয়ের লাইনের বিরতিতে সমস্যা সৃষ্টি করবে না? স্পেস থেকে "-আর <কোড> প্রতিটি ইনপুট লাইনের জন্য পিএইচপি <কেড> চালান"। আরও <?=strrev($s=strtolower(preg_replace("#\W#","",$argn)))==$s;সংক্ষিপ্ত হবে।
ক্রিস্টোফ

1
@ ক্রিসটফ চমৎকার ধারণা, কিন্তু $argnছাড়া নেই -R
তিতাস

$argv[1]="O Genie, der Herr ehre dein Ego!"; # :D
তিতাস

1

রুবি, 48

p((g=gets.upcase.gsub /[^A-Z\d]/,'')==g.reverse)

বেশ সহজ, এবং খুব তাড়াতাড়ি তৈরি এত বেশি গল্ফ না। আমি আরও পরে এটি গল্ফ করব।


1

পাইলংলফ 2 , 24 বাইট

c╨2"[^a-zA-Z]"-_╨1=~

c╨2নিম্নতর ক্ষেত্রে রূপান্তর করতে ইনপুট নেয় ।
তারপরে আমি স্ট্যাকের উপর একটি রেজেক্স চাপলাম এবং ইনপুটটিতে -সমস্ত অ বর্ণানুক্রমিক অক্ষর মুছে ফেলার জন্য ব্যবহার করি ।
_ইনপুট সদৃশ।
╨1এটিকে বিপরীত করে এবং =তারপরে তাদের তুলনা করে।
~শেষে স্ট্যাক প্রিন্ট করে যা প্রিন্ট করে trueঅথবা হয় false


এটি কি বিরামচিহ্ন, সাদা স্থান এবং নিয়ন্ত্রণের অক্ষরগুলিকে উপেক্ষা করে?
মিকিটি

আমার খারাপ, এই সংস্করণটি না। আমি এটা ঠিক করব.

সমস্যা স্থির।

1

পাওয়ারশেল, 194 190 বাইট

একটি নামহীন পাওয়ারশেল স্ক্রিপ্টব্লক কীভাবে নিজেকে কল করতে পারে তা দেখানোর জন্য একটি পুনরাবৃত্তিমূলক বাস্তবায়ন।

$P={param([string]$s)$s=($s-replace'[^a-z]').tolower();if(!$s){return $true};if($s.length-lt4){return $s[0]-eq$s[-1]};$s[0]-eq$s[-1]-and(&$MyInvocation.MyCommand.ScriptBlock $s.trim($s[0]))}

ungolfed:

$P={
param([string]$s)
$s=($s-replace'[^a-z]').tolower();
if(!$s){return $true};
if($s.length-lt4){return $s[0]-eq$s[-1]};
$s[0]-eq$s[-1]-and(&$MyInvocation.MyCommand.ScriptBlock $s.trim($s[0]))
}

পরীক্ষা:

&$P "Eva, can I stab bats in a cave?"
&$P "Eva, can I stab cats in a cave?"
&$P "A man, a plan, a canal. Panama!"
&$P "A man, a plan, a big shovel, a canal. Panama!"
&$P "Madam, I'm Adam."
&$P "Madam, I'm Adam Corolla."
&$P "757"
&$P "Boeing 757"

তা করা উচিত নয় [^a-z0-9]?
তিতাস

1

05 এ বি 1 ই , 4 বাইট (প্রতিযোগী নয়)

অ-প্রতিদ্বন্দ্বী , যেহেতু ভাষা চ্যালেঞ্জ পোস্ট করে। কোড:

álÂQ

ব্যাখ্যা:

á     # Only keep the alphabetic characters.
 l    # Lowercase the characters.
  Â   # Bifurcate, which duplicates the letters and reverses the duplicate.
   Q  # Check if they are equal.

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


এটি আপনার লিঙ্কের মাধ্যমে চালানোর চেষ্টা করেছে। প্রোগ্রাম আউটপুট "1"
ক্রিস্টোফার পেরি

1

জেলি, 10 টি অক্ষর (প্রতিযোগী নয়)

fØBŒl
UÇ⁼Ç

সত্য হলে 1 প্রদান করে, 0 টি মিথ্যা হলে Return

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


এটি কেস, সাদা স্থান এবং নিয়ন্ত্রণের অক্ষরগুলিকে উপেক্ষা করে? একটি ব্রেকডাউন সুন্দর হবে।
তিতাস

জেলির বর্তমান অবস্থা এটি 7 বাইটে সমাধান করার অনুমতি দেয় fØBŒlŒḂ: সেটটিকে [a-zA-Z0-9] সেট fরাখতে ØBএবং Œlছোট হাতের মধ্যে রূপান্তর করতে ফিল্টার , তারপরে ŒḂপ্যালিনড্রোম কিনা পরীক্ষা করুন।
স্টেইনবার্গ
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.