"সুবিধাজনক প্যালিনড্রোম" পরীক্ষক


39

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

একটি স্ট্রিং সুবিধামতভাবে প্যালিনড্রোমিক হয় যদি তার বিপরীতে এর সমস্ত বন্ধনী ( ()), বন্ধনী ( []) এবং ব্রেসগুলি ( {}) উল্টানো থাকে তখন উত্পন্ন স্ট্রিংয়ের সমান হয় । অন্য কোনও অক্ষর বিশেষ নয় এবং তাদের উল্টানো দরকার। ( <>কখনও কখনও জোড় তৈরি হয় তবে প্রায়শই তাই না হয় এগুলি বাদ পড়ে))

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

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

racecar
(a)(bb)(a)
void main(int argc, *char[] argv) {} (vgra []rahc* ,cgra tni)niam diov

এবং নিম্নলিখিতটি নয়:

non-palindrome
A nut for a jar of tuna?
(old [style] parens) )snerap ]elyts[ dlo(
ingirumimusnocte)etconsumimurigni

আপনি দোভাষী / সংকলক পতাকাগুলি বাদ দিয়ে কোনও বাহ্যিক অবস্থানে (নির্দিষ্ট ফাইলের নাম, ডিরেক্টরি কাঠামো, অন্যান্য ব্যবহারকারীর ইনপুট, ওয়েব অ্যাক্সেস ইত্যাদি) উপর নির্ভর করতে পারবেন না।

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

{some code} // {edoc emos}
{some code} NB.BN {edoc emos}
"n\" ;{edoc emos} ;"; {some code}; "\n"

স্পষ্টতই এটি প্রতিটি ক্ষেত্রে আবশ্যক না, তবে এখানে চ্যালেঞ্জের মনোভাবটি সংশোধন প্যারেনস এবং বন্ধনী ব্যবহারের পরিবর্তে মন্তব্যগুলি এবং অপসারিত ** কোড ব্যবহার না করা উচিত instead আমি আপনার দিকে তাকাচ্ছি, এলআইএসপি, ব্রেনফাক।

এটি একটি , তাই সংক্ষিপ্ততম কোডটি জয়ী হয় তবে সমস্ত দৈর্ঘ্যের কোডটি স্বাগত।

* ধারাবাহিক সত্য এবং মিথ্যা মূল্যবোধের দ্বারা, আমি বলতে চাইছি যে আপনি এই মানগুলি একে অপরের থেকে পৃথক হওয়া পর্যন্ত 1সত্য এবং 0মিথ্যা, বা Falseসত্য এবং মিথ্যা হিসাবে একটি মানকে জোড়া "no"দিতে পারেন not আপনার প্রোগ্রামের রান থেকে রান থেকে পরিবর্তন করুন। আপনার অক্ষর সংরক্ষণ করে যা কিছু ব্যবহার করুন।

** দ্ব্যর্থহীনতার সাথে বিভ্রান্ত হওয়ার দরকার নেই : কোডটি যা বৈধ এবং অদ্ভুত কাজ করতে পারে তবে কখনই ডাকা হয় না।


মত if(false){some code}বা অব্যবহৃত ভেরিয়েবল সম্পর্কে কী ? তাদের কি অনুমতি দেওয়া হচ্ছে?
#HongKongInd dependence

@ace যদি আপনার ভাষা কোনওভাবে টাইপ চুক্তি বা সিনট্যাকটিক বৈধতার জন্য অমীমাংসিত কোডটি বিশ্লেষণ করে বা পরীক্ষা করে থাকে তবে তা ঠিক। যদি এটি কোনও মন্তব্যের সমতুল্য হয় কারণ আপনার ভাষা block ব্লকের অভ্যন্তরীণটি পরীক্ষা করে না, যখন এটি একটি সিনট্যাক্স ত্রুটি করে ফেলবে, যদি তা ঠিক হয় না। আমি মনে করি আপনি যদি এর জন্য একটি বৈধ ব্যবহার পেতে পারেন তবে আপনি ব্যবহার (eslaf)fiকরতে পারেন if(false)
অ্যালগরিদমশর্ক

58
()()প্যালিনড্রোম কেন নয় তা নির্ধারণ করতে আমার অনেক দীর্ঘ সময় লেগেছে
মনিকা পুনরায়

কোডটি কি মাল্টি-লাইন ইনপুট দিয়ে কাজ করতে পারে?
ভেন্টোরো

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

উত্তর:


13

জে (60)

(|.-:'())([]][{}}{'&charsub) :: (busrahc&'}{{}][[])(()':-.|)

এটি একটি ফাংশন যা একটি আর্গুমেন্ট গ্রহণ করে:

   (|.-:'())([]][{}}{'&charsub) :: (busrahc&'}{{}][[])(()':-.|) 'ingirumimusnocte)etconsumimurigni'
0
   (|.-:'())([]][{}}{'&charsub) :: (busrahc&'}{{}][[])(()':-.|) '(a)(bb)(a)'
1

ব্যাখ্যা:

  • f :: gইনপুটটির মাধ্যমে ফাংশনটি চালায় fএবং ফলাফলটি যদি ত্রুটি ছাড়াই ফিরে আসে তবে ফিরে আসে। যদি fব্যর্থ হয় তবে এটি gপরিবর্তে চলে।

  • fএখানে (|.-:'())([]][{}}{'&charsub)যা প্রকৃত কাজ করে:

    • |.: বিপরীত
    • -:: সমান
    • '())([]][{}}{'&charsub: প্রতিটি বন্ধনীকে তার বিরোধী বন্ধনী দ্বারা প্রতিস্থাপন করা
  • gফাংশন (busrahc&'}{{}][[])(()':-.|), যা আজেবাজে কথা কিন্তু চিহ্নগুলি সিন্টেক্সের বৈধ। busrahcসংজ্ঞায়িত করা হয় না, তবে এটি কোনও বিষয় নয় কারণ এটি কেবল চালানো হলেই সমাধান করা হয় (এবং এটি চলবে না)।

তুমি তোমার চালু করার মাধ্যমে একটি অক্ষর সংরক্ষণ করতে পারবেন f :: gমধ্যে g@-@fgহুক সমতূল্য (-.|)কারণ :তাই আউটপুট হয়ে -1 এবং সুবিধামত palindromic এবং যথাক্রমে জন্য খালি তালিকা।
অ্যালগরিদমশর্ক

34

গল্ফস্ক্রিপ্ট, 107 91

.4:ab-1:ba=;1
%ba%{...fi@@=
c43.=;)('"([{
}])"'~?~'"([{
}])"')(;=.34c
=@@if...}%ab%
1;=ab:1-ba:4.

নিউলাইনগুলি শৈল্পিক। fi, c43এবং cnoops হয়, তবে পুরো কোডটি কার্যকর করা হয়।

অন্যথায় -3-1-1সুবিধাজনক প্যালিনড্রোমগুলির জন্য মুদ্রণ -4-1-1এটি অনলাইন চেষ্টা করুন!

বিকল্প সংস্করণ, 155 বাইট

By৪ বাইট ব্যয়ে, এটি উন্নতি করা যেতে পারে:

0!*1{!}\;:);0:f;0:i;-1:ab;9:ba;
...=;1%ab%{....i@f@@fi@@=@.=@\)
+""'"([{}])"'~+?+~'"([{}])"'""+
(\@=.@=@@if@@f@i....}%ba%1;=...
;ab:9;ba:1-;i:0;f:0;(:;\{!}1*!0

আগের মত, পুরো কোডটি কার্যকর করা হয় এবং প্রতিটি একক বাইট আউটপুটকে প্রভাবিত করে।

অন্যথায় 010সুবিধাজনক প্যালিনড্রোমগুলির জন্য মুদ্রণ -100এটি অনলাইন চেষ্টা করুন!

পরীক্ষা এবং উদাহরণ

$ base64 > palindrome.gs -d <<< LjQ6YWItMTpiYT07MSViYSV7Li4uZmlAQD1jNDMuPTspKCciKFt7fV0pIid+P34nIihbe31dKSInKSg7PS4zNGM9QEBpZi4uLn0lYWIlMTs9YWI6MS1iYTo0Lg==
$ wc -c palindrome.gs
91 palindrome.gs
$ rev palindrome.gs | tr '([{}])' ')]}{[(' | diff - palindrome.gs
$ echo -n 'r(a[c{"e"}c]a)r' | golfscript palindrome.gs
-3-1-1
$ echo -n 'totallynotapalindrome' | golfscript palindrome.gs
-4-1-1
$
$ base64 > pal.gs -d <<< MCEqMXshfVw7Oik7MDpmOzA6aTstMTphYjs5OmJhOy4uLj07MSVhYiV7Li4uLmlAZkBAZmlAQD1ALj1AXCkrIiInIihbe31dKSInfis/K34nIihbe31dKSInIiIrKFxAPS5APUBAaWZAQGZAaS4uLi59JWJhJTE7PS4uLjthYjo5O2JhOjEtO2k6MDtmOjA7KDo7XHshfTEqITA=
$ wc -c pal.gs
155 pal.gs
$ rev pal.gs | tr '([{}])' ')]}{[(' | diff - pal.gs
$ echo -n 'r(a[c{"e"}c]a)r' | golfscript pal.gs
010
$ echo -n 'totallynotapalindrome' | golfscript pal.gs
-100
$ for i in {1..154}; do head -c $i pal.gs > tmp.gs; tail -c +$[i+2] pal.gs >> tmp.gs
> [ "$(echo -n 'r(a[c{"e"}c]a)r' | golfscript tmp.gs 2> /dev/null)" = "010" ] && echo $i
> done; rm tmp.gs
1
for i in {1..154}; do head -c $i pal.gs > tmp.gs; tail -c +$[i+2] pal.gs >> tmp.gs
>  [ "$(echo -n '42' | golfscript tmp.gs 2> /dev/null)" = "-100" ] && echo $i
> done | grep '^1$'; rm tmp.gs

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

.             # Duplicate the input string.
4:ab-1:ba     # Save 4 in “ab” and -1 in “ba”.
=;            # Compare 4 to -1 and discard the result.
1%            # Save every element from the input string in a new string.
ab%           # Reverse the input string.
{             # For each character in the input string:
  ...         # Duplicate the character thrice.
  fi          # Variable “fi” is undefined; this does nothing.
  @@=         # Verify that the character is equal to itself; push 1.
  c43         # Variable “c43” is undefined; this does nothing.
  .=;         # Verify that 1 is equal to itself and discard the result.
  )(          # Increment and decrement the character.
  '"([{}])"'~ # Push that string and evaluate it. Result: '([{}])'
  ?           # Retrieve the character's position in '([{}])'. -1 means not found.
  ~           # Negate the position.. Examples: -1 -> 0    0 -> -1    2 -> -3
  '"([{}])"') # Push that string and pop its last element. Result: '"([{}])' 34
  (;          # Decrement 34 (the ASCII code of a double quote) and discard.
  =           # Retrieve the corresponding character.
  .34         # Duplicate the character and push 34.
  c           # Variable “c” is undefined; this does nothing.
  =           # If the character is a double quote, the index was -1.
  @@if        # In that case, replace the double quote with the original character.
  ...         # Duplicate the new character thrice.
}%            #
ab%           # Save every fourth element in a new string to discard dummy values.
1;            # Push 1 and discard.
=             # Push 1 if the modified string matches the original, 0 otherwise.
ab:1-         # Save 4 in “1” and subtract.
ba:4.         # Save -1 in “4” and duplicate.

0!*           # Pop and push the input string.
1{!}\;:);     # Make “)” an alias for “!”.
0:f;0:i;      # Variables.
-1:ab;9:ba;   # Moar variables.
...=;         # Duplicate the input string.
1%ab%         # Reverse the copy.
{             # For each character in the input string:
  ....        # Duplicate the character four times.
  i@          # Push 0 and rotate a string copy on top of it.
  f@@fi@@     # Push 0 and rotate 0 on top of it.
  =@          # Push 1 and rotate a string copy on top of it.
  .=@         # Push 1 and rotate 1 on top of it.
  \)+         # Negate a 1 and add. Result: 1
  ""          # Push that string.
  '"([{}])"'  # Push that string.
   ~+         # Evaluate the second string and concatenate. Result: '([{}])'
   ?          # Retrieve the characters position in '([{}])'. -1 means not found.
   +~         # Add 1 to the position and negate. Ex.: -1 -> -1 | 0 -> -2 | 1 -> -3
  '"([{}])"'  # Push that string.
  ""          # Push that string.
  +           # Concatenate. Result: '"([{}])"' 
  (\          # Pop the first double quote and swap it with the rest of the string.
  @=.         # Retrieve the corresponding character and duplicate it.
  @=          # If the character is a double quote, the index was -1.
  @@if        # In that case, replace the double quote with the original character.
  @@          # Rotate the modified character to the bottom.
  f@i....     # Push dummy values.
  }%          #
  ba%         # Save every ninth element in a new string to discard dummy values.
  1;          # Push 1 and discard.
  =           # Push 1 if the modified string matches the original, 0 otherwise.
  ...;        # Duplicate thrice and discard the last copy.
  ab:9;ba:1-; # Variables.
  i:0;f:0;    # Moar variables.
  (:;\        # Negate, override “;” and swap.
  {!}1*!0     # Negate twice and push 0.

13

রুবি, 110

(z=gets;r=z.tr *["([{}])",")]}{[("];p *z==r.reverse;1)||(1;esrever.r==z* p;[")]}{[(","([{}])"]* rt.z=r;steg=z)

trueযদি ইনপুটটি সুবিধাজনক প্যালিনড্রোম হয় এবং falseযদি তা না থাকে তবে মুদ্রণ করে । নোট করুন যে এই সমাধানটি ধরেছে যে ইনপুটটি কোনও নতুন লাইনের মাধ্যমে শেষ করা হয়নি, তাই এটি দিয়ে পরীক্ষা করুন echo -n:

echo -n '(a)(bb)(a)' | ruby convpal.rb
true

echo -n '(a)(bb()a(' | ruby convpal.rb
false

# note that for this to work, the file must not contain a newline
# to remove a trailing newline, pipe it through tr -d $'\n'
cat convpal.rb | ruby convpal.rb
true

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

এটিকে অভিযোজিত করার ক্ষেত্রে কেবলমাত্র অসুবিধা ছিল কীভাবে কলটি যুক্ত করা z.trযায় যাতে এটির "সুবিধাজনক বিপরীত "টিও সিন্টেক্সিকভাবে বৈধ হতে পারে - তবে আমি কেবল একই কৌশলটি ব্যবহার করতে পারি *যা আমি ইতিমধ্যে ব্যবহার করেছি: যা প্রথমার্ধে পার্স করা হয়েছে স্প্ল্যাট অপারেটর (ফাংশন প্যারামিটার হিসাবে অ্যারের সামগ্রীগুলি ব্যবহার করুন) এবং দ্বিতীয়ার্ধে অ্যারের গুণ (বা repitition) অপারেটর হিসাবে।

রুবি, 157 297সমস্ত কোড কার্যকর করা হয়েছে

w=tsoh=gets p
o=rt=esrever=Gem
q=tsoh.tr *["([{}])",")]}{[("]
q==esrever.host=w=tsoh.reverse==q
[")]}{[(","([{}])"]* rt.host=q
meG=reverse=tr=o
p steg=host=w

এই (সামান্য দীর্ঘ) সংস্করণটি সমস্ত কোড কার্যকর করে এবং দুটি লাইন বাদে সমস্ত লাইন আউটপুটকে প্রভাবিত করে, যা শেষ লাইনে মুদ্রিত হয় - তবে সমস্ত লাইন পার্স করা হয় এবং কোনও ত্রুটি ছাড়াই কার্যকর করা হয়। এই সংস্করণটি ইনপুটটির অংশ হিসাবে কোনও ট্রেলিং নিউলাইনকে ব্যাখ্যা করে, সুতরাং echo -nএটি পরীক্ষা করার জন্য ব্যবহার করুন বা একটি নতুন লাইন দিয়ে আপনার ইনপুটটিকে প্রিপেন্ড করুন। এটি প্রিন্ট করে trueযদি ইনপুটটি কোনও সুবিধাজনক প্যালিনড্রোম হয় এবং falseঅন্যথায়।

ব্যাখ্যা

# Read the input by calling gets(nil), which is achieved by passing the return
# value of a call to Kernel#p (which returns nil if no argument is supplied) to
# gets.
w=tsoh=gets p
# Assign the global Gem module to three variables.
# The variable names are the reversed names of methods we have to call later.
# This doesn't necessarily have to be the Gem module, any global module/variable
# (or class that allows object creation through a call to the module itself,
# e.g. Hash or GC) with a writable property would do, but Gem#host was
# the shortest one I could find. This is necessary because Ruby doesn't
# allow setting previously undefined properties through the dot syntax.
o=rt=esrever=Gem
# Replace the parentheses with the corresponding flipped one.
# sserts is the reverse of the property name we're going to use later.
q=tsoh.tr *["([{}])",")]}{[("]
# Do the convinient palindrome check and assign its result to a few variables
# and Gem's host property.
q==esrever.host=w=tsoh.reverse==q
# Here, the * is parsed as array join operator.
[")]}{[(","([{}])"]* rt.host=q
# Nothing special here.
meG=reverse=tr=o
# Print the result of the palindrome check, which was stored in w.
p steg=host=w

9

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

ঠিক আছে, এখানে গল্ফস্ক্রিপ্টের একটি বেসলাইন সমাধান রয়েছে। আমি নিশ্চিত এটি আরও উন্নত হতে পারে:

{.-1%{"([{}])".2$?~@[.]@+=}%=}~{=%{=+@[.]@~?$2."([{}])"}%1-.}

গল্ফস্ক্রিপ্টের জন্য যথারীতি, এই প্রোগ্রামটি স্টিডিন থেকে এর ইনপুটটি পড়ে। এটি ফলাফল:

1{=%{=+@[.]@~?$2."([{}])"}%1-.}

উপরের চ্যালেঞ্জ অনুসারে যদি ইনপুটটি সুবিধাজনক প্যালিনড্রোম হয় এবং:

0{=%{=+@[.]@~?$2."([{}])"}%1-.}

যদি তা না হয়.

ব্যাখ্যা: এই প্রোগ্রামটি এই সিদ্ধান্তের উপর নির্ভর করে যে অমীমাংসিত কোডটি ঠিক আছে, যতক্ষণ তা পার্স হয় ততক্ষণ। এটি দুটি কোড ব্লক সমন্বিত, কোঁকড়া ধনুর্বন্ধনী দ্বারা আবদ্ধ ( { }), যা একে অপরের মিরর চিত্র।

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

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

গীত। প্রকৃত সম্পাদিত কোডটির দিকে তাকালে এটিতে কয়েকটি সুবিধাজনকভাবে প্যালিনড্রমিক উপাদান যেমন @[.]@স্ট্রিং আক্ষরিক "([{}])"এবং লুপ থাকে %{ ... }%। এটি প্রত্যাশিত পরামর্শ দেয় যে একটি "অন্তর্নিহিত প্যালিনড্রমিক" গল্ফস্ক্রিপ্ট সমাধান, যেখানে সম্পূর্ণ প্যালিনড্রমিক প্রোগ্রামটি কার্যকর ও কার্যকরী হবে, সম্ভবত এটি সম্ভব ছিল। যেহেতু আমি এখনও নিজেকে তৈরি করতে সক্ষম হইনি, ততক্ষণে আমি প্রথম ব্যক্তি যিনি এটির সাথে যোগাযোগের ব্যবস্থা করেন তাকে +100 রিপ্রেস অনুদানের অফার দিই !


3
অপেক্ষা করুন, আপনার কোডটি নিজেই একটি প্যালিনড্রোম? : ও
ফ্যাব্রিকিও

আমি এই সমাধানটি আরও "n\";X;";X;"\n"মন্তব্য করার মত করে বিবেচনা করতে আগ্রহী , তবে আমি আপনাকে সন্দেহের সুবিধা দেব। আমি সত্যিই এই জাতীয় "অভ্যন্তরীণ প্যালিনড্রমিক" সমাধানগুলি সন্ধান করতে চাইছিলাম, তবে, বা কমপক্ষে যেখানে ব্লকগুলির অ-কার্যকরকরণটি কিছুটা হস্তক্ষেপ করা হয়নি।
অ্যালগরিদমশর্ক

আমার উত্তরে একটি নূপুর (অপরিবর্তিত ভেরিয়েবল) এবং কয়েকটি অংশ রয়েছে যা কিছুই অর্জন করে না (যেমন, 1;)। এটি এখনও পুরোপুরি কার্যকর হিসাবে গণনা করা হয়?
ডেনিস

@ ডেনিস: হ্যাঁ, আমি মনে করি এটি হয়। অভিনন্দন, এটি অবশ্যই যথেষ্ট চিত্তাকর্ষক। প্রশ্নটি যথেষ্ট নতুন বলে মনে হচ্ছে যে আমি এটিতে অনুগ্রহটি পোস্ট করতে পারি না, তবে আপনি এটি কয়েক দিনের মধ্যে পেয়ে যাবেন।
ইলমারি করোনেন

1
আউটপুট ফর্ম্যাট অবলম্বন :-)
জন ডিভোরাক

4

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

আমি একটি জেএস উত্তর চেয়েছিলাম যা ব্রাউজারে চালানো যেতে পারে, তাই এটি এখানে।

eurt=>eurt==(("",eurt))["split"||"nioj"]("")["map"||"esrever"](x=>({'{':'}','}':'{','[':']',']':'[','(':')',')':'('})[x]||x||[x]({')':'(','(':')',']':'[','[':']','}':'{','{':'}'})>=x)["reverse"||"pam"]("")["join"||"tilps"]((true,""))==true>=true

আসলেই চালিত হয় না এমন সমস্ত কোড সরিয়ে ফেলা, আমরা এটি পেয়েছি:

eurt=>eurt==(("",eurt))["split"||"nioj"]("")["map"||"esrever"](x=>({'{':'}','}':'{','[':']',']':'[','(':')',')':'('})[x]||x||[x]({')':'(','(':')',']':'[','[':']','}':'{','{':'}'})>=x)["reverse"||"pam"]("")["join"||"tilps"]((true,""))==true>=true
eurt=>eurt==(("",eurt))["split"        ]("")["map"           ](x=>({'{':'}','}':'{','[':']',']':'[','(':')',')':'('})[x]||x                                                           )["reverse"       ]("")["join"         ]((true,""))==true>=true

যা এটিকে সরল করা যায়:

eurt=>eurt==eurt.split("").map(x=>({'{':'}','}':'{','[':']',']':'[','(':')',')':'('})[x]||x).reverse("").join("")

আপনি সত্য / ইয়ার্টের পরিবর্তে এন 1 / 1n ব্যবহারের পরিবর্তে কিছু জায়গায় কমার পরিবর্তে কিছু কিছু 60 বাইট সংরক্ষণ করতে পারেন, এবং বন্ধনী স্যুইচারের সাথে ফিডিং: n1=>n1==(('',n1))['nioj','split']``['esrever','map'](c=>`()[]{}`[`()[]{}`['indexOf'](c)^1]||c||[1^(c)['fOxedni']`{}[]()`]`{}[]()`>=c)['pam','reverse']``['tilps','join']((1n,''))==1n>=1n(185 বাইট)
ইয়ায়ার র্যান্ড

3

জাভাস্ক্রিপ্ট (ES6) 288

রান Spidermonkey কমান্ড লাইন শেল । STDIN এবং আউটপুটগুলি থেকে একক লাইন পড়ে trueবা falseইনপুটটি কোনও সুবিধাজনক প্যালিনড্রোম হয় তার উপর নির্ভর করে।

((print)((eval)('r=readline()')==([0]['map']['call'](r,x=>({'{':'}','}':'{','[':']',']':'[','(':')',')':'('})[x]||x)['reverse']()['join']('')))&&((('')['nioj']()['esrever'](x||[x]({')':'(','(':')',']':'[','[':']','}':'{','{':'}'})>=x,r)['llac']['pam'][0])==('()enildaer=r')(lave))(tnirp))

এই কোডটি সিন্টেক্সিকভাবে বৈধ, তবে ফাংশনটি একটি মিথ্যা মান দেয় বলে সমস্ত কিছু পরে &&কার্যকর করা হয় না print

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

readline = function(){ 
    return "void main(int argc, *char[] argv) {} (vgra []rahc* ,cgra tni)niam diov"; 
}, print = console.log.bind(console);

এবং আউটপুট এর দ্রুত উদাহরণ এখানে:

কমান্ড লাইন উদাহরণ


এর সদ্ব্যবহার &&করা সত্যিই চতুর ছিল, আমি আপনাকে প্রশংসা করছি (তবে এটি কিছুটা ধোঁকাবাজি বলে মনে হচ্ছে)
মেয়রমন্টি

2

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

"{[()]}"DRr‡`rJ¹Q,Q¹Jr`‡rRD"{[()]}"

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

ব্যাখ্যা:

                     # Implicit input
 "{[()]}"            # Push "{[()]}" onto the stack
         DR          # Pushes a reversed copy onto the stack
           r         # Reverse the order of the stack
            ‡        # Transliterate
             `       # Flatten array on stack
              r      # Reverse order of stack
               J     # Join stack
                ¹Q   # Check equality with first input
                  ,  # Print
                     # Everything after is still syntactically correct, but just does not print anything.

উত্তরটি অবৈধ হওয়ার কারণে এটি আপনাকে সাহায্য করবে বলে আমি মনে করি না তবে পরিবর্তে "()[]{}"আপনি এটি করতে পারেনžu„<>-
অ্যাক্রোলিথ

@ দ্য হাগলেনি এখন এটি বৈধ
অলিভার নি

প্রোগ্রামটির বাকী অংশটি কি qসিন্ট্যাকটিক বৈধতার জন্য কমপক্ষে পার্স করার পরে ? যদি তা না হয়, আমি কোডের দ্বিতীয়ার্ধে মন্তব্য করার মতো এই বিবেচনা করব।
অ্যালগরিদমশর্ক

@algorithmshark স্থির হয়েছে।
অলিভার নি

1

সিজেম, 38 বাইট

Q~"=re%W_@%W_q"`{[()]}`"q_W%@_W%er="~Q

"=re%W_@%W_q"1যদি ইনপুটটি সুবিধাজনকভাবে প্যালিনড্রমিক এবং "=re%W_@%W_q"0অন্যথায় থাকে তবে মুদ্রণ করে ।

সিজেএম ইন্টারপ্রেটারে এটি অনলাইনে চেষ্টা করুন ।

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

Q~                                     e# Evaluate an empty string.
  "=re%W_@%W_q"                        e# Push that string.
               `                       e# Inspect. Pushes "\"=re%W_@%W_q\"".
                {[()]}                 e# Push that block.
                      `                e# Inspect. Pushes "{[()]}".
                       "           "~  e# Push and evaluate.
                        q              e# Read from STDIN.
                         _W%           e# Push a reversed copy.
                            @          e# Rotate "{[()]}" on top of the stack.
                             _W%       e# Push a reversed copy.
                                er     e# Perform transliteration.
                                  =    e# Compare to the input string.
                                     Q e# Push an empty string.

প্রোগ্রামটি সম্পাদন করার পরে, সিজেএম স্বয়ংক্রিয়ভাবে স্ট্যাকের সমস্ত তিনটি আইটেম ছাপায়: পরিদর্শন করা স্ট্রিং, স্ট্রিং তুলনা থেকে বুলিয়ান এবং খালি স্ট্রিং।


0

পার্ল, 83 + 2 = 85 বাইট

সাথে চালাও -nl

say$_~~reverse y-"({[]})"-")}][{("-r;exit;tixe;r-")}][{("-"({[]})"-y esrever~~_$yas

কোডটি ইনপুটটির সত্যতা মুদ্রণের পরে প্রস্থান করে। সেমিকোলনের পরে সমস্ত কিছুর ব্যাখ্যা করা হয় (এবং স্ক্রিপ্টটি যখন exitএটির মুখোমুখি না হয় তবে এটি ক্র্যাশ হবে) তবে কার্যকর করা হয়নি। যদি আমি exit;tixe;কোডটি ছেড়ে চলে যাই তবে ফলাফলটি ক্রাশ হওয়ার আগে এটি সঠিকভাবে মুদ্রণ করবে।

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