এটা কি পাহাড়ী?


29

চ্যালেঞ্জ

এই চ্যালেঞ্জের জন্য, একটি পর্বতমালার স্ট্রিং এমনটি যা ব্যাকরণ নিয়মের সাথে সঙ্গতিপূর্ণ M: x(Mx)*যেখানে প্রতিটি উত্পাদনে, সমস্ত এক্স এর একই চরিত্র। অভিযুক্ত হলে, একটি পর্বতমালার স্ট্রিং এর মতো দেখতে লাগবে:

A
 B
  C
   D
  C
   E
    F
   E
  C
 B
A

আপনি দেখতে পাচ্ছেন, এটিকে পাশ থেকে কিছুটা পাহাড়ের মতো দেখাচ্ছে।

আনুষ্ঠানিক সংজ্ঞা

  • যে কোনও একক চরিত্র aপর্বতমালা।
  • যদি Sএকটি পর্বতমালার স্ট্রিং হয় এবং aএকটি চরিত্র হয় তবে aSaপাহাড়ী হয়, যেখানে সংক্ষিপ্তসার স্ট্রিং সংমিশ্রণকে উপস্থাপন করে।
  • যদি aSaএবং aTaপর্বতমালার স্ট্রিং হয়, তবে aSaTaএটি একটি পর্বতযুক্ত স্ট্রিং। নোট করুন যে এই নিয়মটি বোঝায় যে এই প্যাটার্নটি কোনও সংখ্যক পুনরাবৃত্তির জন্য ধারণ করে। (অর্থাত aSaTaUa, aSaTaUaVa, aSaTaUaVaWa... সমস্ত পাহাড়ী আছে।)

উদাহরণ

সমস্ত বিজোড় দৈর্ঘ্যের প্যালিনড্রোমগুলি পর্বতমালা, উদাহরণস্বরূপ:

t
 a
  c
   o
  c
 a
t

qwertytrasdfdgdsarewqjklkjq একটি কম তুচ্ছ উদাহরণ:

q
 w
  e
   r
    t
     y
    t
   r
    a
     s
      d
       f
      d
       g
      d
     s
    a
   r
  e
 w
q
 j
  k
   l
  k
 j
q

উদাহরণ আউটপুট

a                           ==> true
aaa                         ==> true
mom                         ==> true
tacocat                     ==> true
qwertytrasdfdgdsarewqjklkjq ==> true
wasitacaroraratisaw         ==> true
abcbcbcbcba                 ==> true
aaaaabcbbba                 ==> true

<empty string>              ==> false
aa                          ==> false
pie                         ==> false
toohottohoot                ==> false
asdfdghgfdsa                ==> false
myhovercraftisfullofeels    ==> false

বিধি

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

4
এর মতো একটি পরীক্ষার কেস aaaভাল হবে, যেখানে একই অক্ষরটি একাধিক স্তরে ব্যবহার করা দরকার।
মার্টিন এন্ডার

আপনি কি সম্পর্কে নিশ্চিত wasitacaroraratisaw? এটি আমার কাছে চূড়ান্ত বলে মনে হচ্ছে
টন হসপেল

wasitacaroraratisawপ্রকৃতপক্ষে পাহাড়ী AFAICT
ETHproductions

সুতরাং এটাই. আমি অনুমান করি যে আমি কেবল একটি 'প্রায় প্যালিনড্রোম' সন্ধান করার চেষ্টা করছিলাম তবে আমি দুর্ঘটনাক্রমে একটি পর্বতমালা পেয়েছি।
বিফস্টার

2
আমি ভেবেছিলাম এটির প্রথম চরিত্রের স্ট্রিংটি বিভক্ত করার মাধ্যমে সমাধান করা সহজ হবে তবে কেসগুলি aaaএটি কার্যকর হয় না।
xnor

উত্তর:




6

পার্ল, 22 বাইট

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

perl -pe '$_=/^((.)((?1)\2)*)$/' <<< abcbcbcbcba

প্রিন্ট 1 সত্য হিসাবে, মিথ্যা জন্য কিছুই


5

ব্রেন-ফ্লাক , 78 বাইট

({()<<>(([{}]({}))([{}]({}))<>[({}<>)])>{[()()]((<()>))}<{}{}{}<>>}(())){{}}{}

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

প্রিন্ট 1 সত্য হিসাবে, মিথ্যা জন্য কিছুই।

পাহাড়ী শব্দটি যাচাই করার জন্য, শব্দটি যখনই সম্ভব পর্বতমালাকে "নীচে" যায় তবে ধরে নেওয়া যথেষ্ট।



3

প্রোলোগ (এসডাব্লুআই) , 29 বাইট

a-->[X],+X.
+X-->[];a,[X],+X.

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

এই প্রোগ্রামটি এমন একটি ডিসিজি নিয়ম সংজ্ঞায়িত a//0করে যা কোনও পর্বত স্ট্রিংয়ের সাথে যে কোনও স্ট্রিং (অক্ষরের তালিকার সাথে) মেলে।

ব্যাখ্যা

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

সমতা প্রমাণ

এটি স্পষ্ট যে চ্যালেঞ্জের 1 এবং 2 নিয়মগুলি আমার নিয়মের সমান যেখানে Mcযথাক্রমে শূন্য এবং এক বার ঘটে।

ক্ষেত্রে যখন পর্বতমালার স্ট্রিংগুলি Mcঘটেছিল তখন nযেখানে n > 1স্ট্রিংটি আবার লেখা যেতে পারে cMcScযেখানে Sশেষের n - 1সময়গুলি Mcবাদ পড়ে যেখানে শেষ সময়গুলি হয় c(দ্রষ্টব্য যে Mকোনও পর্বতমালার স্ট্রিং এবং অন্যটির মতো অগত্যা একই নয় M)। যেহেতু Mনিয়ম 2 অনুসারে cMcএকটি পর্বতমালার স্ট্রিংটি অবশ্যই একটি পর্বতমালার স্ট্রিং হওয়া উচিত। হয় Sএকটি পর্বতমালার স্ট্রিং যেখানে কেসটি cScপর্বতমালার স্ট্রিং বা শেষটি বাদে পরবর্তী সময়গুলি কোথায় ঘটে Sতা আবার লিখে দেওয়া যেতে পারে । স্ট্রিং পর্বতমালার গ্যারান্টিযুক্ত না হওয়া পর্যন্ত এই যুক্তিটির যুক্তি প্রয়োগ করা যেতে পারেcMcTcTn - 2MccMcএকবার এর অর্থ হ'ল এটি পর্বতমালাও হতে হবে। সুতরাং যেহেতু cMcপাহাড়ী এবং যদি হয় cMcএবং cM'cপাহাড়ী তারপর হয় cMcM'cহতে হবে পাহাড়ী পুরো স্ট্রিং পাহাড়ী হতে হবে।

কথোপকথনের জন্য, cScTcযেখানে একটি স্ট্রিং যেখানে cScএবং cTcপর্বতমালা হয় তা হয় cScনিয়ম 2 বা বিধি দ্বারা 3 দ্বারা পর্বতযুক্ত স্ট্রিং যদি এটি 2 বিধি দ্বারা একটি পর্বত স্ট্রিং হয় তবে Sঅবশ্যই একটি পর্বতমালা হতে হবে। যদি এটি নিয়ম 3 অনুসারে একটি পর্বতমালার স্ট্রিং হয় তবে cScঅবশ্যই সেই রুপটি হওয়া উচিত cUcVcযেখানে cUcএবং cVcপর্বতমালার স্ট্রিংগুলি। যেহেতু দীর্ঘতর cUcএবং cVcতবুও কমপক্ষে দুটি অক্ষর কম হওয়া আবশ্যক cScএবং নিয়ম 3 এর জন্য কমপক্ষে 5 টি চরিত্র প্রয়োগ করা আবশ্যক তারপর নিয়ম 3 এর সীমাবদ্ধ সংখ্যার পরে নিয়মের 3 cএর প্রয়োগ দ্বারা নির্বাচিত প্রতিটি স্ট্রিং অবশ্যই একটি পর্বতমালা হতে হবে স্ট্রিং। একই লাইন যুক্তি প্রয়োগ করা যেতে পারেcTc এইভাবে আমার সংজ্ঞা দ্বারা স্ট্রিং পর্বতমালা।

যেহেতু আমার সংজ্ঞাটির সাথে মেলে এমন কোনও স্ট্রিং পর্বতমালার এবং আমার সংজ্ঞাটি সমস্ত পর্বতমালার স্ট্রিংগুলির সাথে মিলে যায় তাই এটি প্রশ্নের উত্তর দেওয়া সমতুল্য।

কোডের ব্যাখ্যা

সামগ্রিকভাবে a//0ডিসিজি বিধি, প্রথম লাইনে সংজ্ঞায়িত, যে কোনও পর্বতমালার সাথে মেলে। +//1DCG শাসন (predicates মতো DCG নিয়ম অপারেটর নাম প্রদান করা যেতে পারে ), লাইন দুটি সংজ্ঞাসমূহ, কোনো স্ট্রিং, যাতে অক্ষর হিসেবে তার আর্গুমেন্ট পাস শূন্য বা তার বেশি পাহাড়ী স্ট্রিং একটি ক্রম গঠিত মিলে যায় Xতাদের প্রান্ত সম্মুখের tacked । অথবা Regex মত স্বরলিপি আমি উপরের ব্যবহৃত, ধার a//0ম্যাচ c(Mc)*কিন্তু আসলে মিলে কাজ ফিডে (Mc)*করতে +//1যা লাগে cতার আর্গুমেন্ট হিসাবে X

কোডগুলি লাইন দিয়ে রেখায় কোডগুলি নিম্নরূপ আচরণ করে:

a-->[X],+X.

এই লাইনটি ডিসিজি বিধিটিকে সংজ্ঞায়িত করে a[X]রাজ্যের প্রথম অক্ষর বর্তমানে undefined পরিবর্তনশীল সমান হতে হবে X। এর ফলে Xপ্রথম চরিত্রের সমান সেট হয়ে যায়। +Xতারপর বলে যে, স্ট্রিং বাকি DCG নিয়ম মেলানো +//1চরিত্র যে সঙ্গে Xতার আর্গুমেন্ট হিসাবে সেট করা হয়।

+X-->[];a,[X],+X.

এই লাইনটি +//1ডিসিজি বিধিটিকে সংজ্ঞায়িত করে । ;একটি অথবা প্রতিনিধিত্ব করে Prolog মধ্যে যার মানে স্ট্রিং মেলাতে পারে পারেন []বা a,[X],+X[]প্রতিনিধিত্ব করে খালি স্ট্রিং তাই +//1সবসময় খালি স্ট্রিং মিলে করতে সক্ষম। যদি স্ট্রিংটি খালি না থাকে তবে এর শুরু অবশ্যই মেলে a//0এবং তাই অবশ্যই একটি পর্বতমালার স্ট্রিং হওয়া উচিত। এটি অবশ্যই অনুসরণ করতে হবে যা চরিত্র Xসেট করা হয়। অবশেষে বাকী স্ট্রিংটি অবশ্যই মিলবে +X


2

হুশ , 15 বাইট

εωφΓ§?t·:⁰`(=←t

এটি অনলাইন চেষ্টা করুন! প্রকারের অনুমানটি প্রায় 40 সেকেন্ড সময় নেয়, তাই ধৈর্য ধরুন।

ব্যাখ্যা

εωφΓ§?t·:⁰`(=←t  Implicit input, say s = "abacdca"
 ω               Apply until fixed point is reached
  φ              this self-referential anonymous function (accessed with ⁰):
                  Argument is a string x.
   Γ              Deconstruct x into head h and tail t.
    §?t·:⁰`(=←t   Call this function on h and t. It is interpreted as §(?t)(·:⁰)(`(=←t)).
                  § feeds h to (·:⁰) and (`(=←t)), and calls (?t) on the results.
                  The semantics of ? cause t to be fed to all three functions.
          `(=←t   First, check whether h equals the first element (←) of the tail of t.
     ?t           If it does (e.g. if h='a' and t="bacdca"), return tail of t ("acdca").
                  Otherwise (e.g. if h='b' and t="acdca"),
       · ⁰        call the anonymous function recursively on t: "aca"
        :         and prepend h to the result: "baca".
                 Final result is "a".
ε                Is it a 1-element string? Implicitly print 0 or 1.

ধারণাটি বার বার ফর্মের একটি স্ট্রিংগুলিকে প্রতিস্থাপন abaকরা হবে aযতক্ষণ না এটি আর সম্ভব হয় না। ইনপুটটি পার্বত্য হয় যদি এবং কেবলমাত্র যদি এর ফলাফলটি একটি একক-অক্ষরযুক্ত স্ট্রিং হয় (যা এটি εপরীক্ষা করে)। একমাত্র বিপজ্জনক পরিস্থিতি যখন আমাদের মতো স্ট্রিং abaথাকে , যেখানে শীর্ষটি বলে মনে হয় না:

a
 b
  a
   c
  a
   d
  a
 b
a

ভাগ্যক্রমে, আমরা সর্বদা এটির মধ্যে রূপান্তর করতে পারি:

a
 b
a
 c
a
 d
a
 b
a

আমি বিশ্বাস করি যে কেসগুলির জন্য একটি একক চরিত্র ফিরিয়ে দেওয়া trueঅন্যথায় "ধারাবাহিক" হবে না।
জনাথন অ্যালান

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

@ জোনাথন অ্যালান একক অক্ষর বনাম অন্যান্য স্ট্রিংও আমার কাছে কিছুটা অস্পষ্ট বলে মনে হচ্ছে, বিশেষত যেহেতু সত্যতার সাথে এর খুব কম সম্পর্ক রয়েছে (কেবল খালি স্ট্রিং হুস্কে মিথ্যা)।
Zgarb

হ্যাঁ, "কোনও উপস্থাপনা" স্পষ্টতই উদার - আমি ওপি :) প্রকাশের মন্তব্য করেছি
জোনাথন অ্যালান

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


1

জাভাস্ক্রিপ্ট (নোড.জেএস) , 53 বাইট

আমি মনে করি এটি প্রায় সবচেয়ে সহজ পদ্ধতি এটি করার জন্য?

f=s=>(w=s.replace(/(.).\1/,"$1"))==s?w.length==1:f(w)

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

জাভাস্ক্রিপ্ট (নোড.জেএস) , 72 বাইট

কম তুচ্ছ, তবে অনেক বেশি।

s=>[...s].reduce((a,x)=>(a[a.length-2]==x?a.pop():a.push(x),a),[])==s[0]

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

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