আমার লাসাগন যাচাই করুন


15

দৃশ্যপট

আমি প্রায়শই লাসাগন রান্না করি তবে আমারও কিছু ভুল রয়েছে। যেহেতু আমি এই ত্রুটিগুলি প্রায়শই পুনরাবৃত্তি করি, তাই আমি ভেবেছিলাম যে আমি সম্ভবত এমন কোনও প্রোগ্রাম করতে পারি যা আমি সবকিছু ঠিকঠাক করেছিলাম কিনা তা যাচাই করে।

বৈধ লাসাগনে

একটি বৈধ লাসাগন হয়

  • কমপক্ষে ৫ টি কলাম প্রশস্ত
  • কমপক্ষে 4 স্তর উচ্চ
    • অতিরিক্ত পনির বাদে
  • উপরের স্তরটি পনির (প্রতিনিধিত্ব করে ,)
  • দ্বিতীয় স্তর সস (দ্বারা পারেন প্রতিনিধিত্ব হয় @বা #)
  • তারপরে স্তরগুলি বিকল্পভাবে (1 স্তর সস, 1 স্তর নুডলস (উভয় দ্বারা উপস্থাপিত ~বা -))
  • প্রতিটি কলামে পনির এক বা দুটি স্তর থাকতে পারে

কার্যক্রম

উচিত

  • ইনপুট হিসাবে একটি lasagne স্ট্রিং নিন
    • মাল্টলাইন স্ট্রিং
    • স্ট্রিং অ্যারে
    • স্ট্রিংটিতে কেবল অক্ষর থাকে ,@#~-
    • আয়তক্ষেত্রাকার
    • প্রয়োজনে স্পেস দিয়ে প্যাড করা
  • এটি বৈধ লাসাগন কিনা আউটপুট
    • আপনার ভাষায় গৌরবযুক্ত যে কোনও জিনিস বৈধ হলে
    • আপনার ভাষায় মিথ্যা কিছু বা এমন কিছু নেই
  • হয় হয়
    • একটি সম্পূর্ণ প্রোগ্রাম
    • একটি অনুষ্ঠান
    • এটি কেবলমাত্র কার্যকারিতা ব্যবহার করে যা 14.12.2016 এর আগে কার্যকর হয়েছিল

পরীক্ষার মামলা

,, ,
,,,,,,
@@@###
~~~~~-
@##@@#

--> truthy


@@@#
----
@@##
----
@###

--> falsy (cause of cheese and width (You don't have to print the stuff in the brackets))


,,,,,
-----
@####
-----
@@@@@

--> falsy (have the sauce as last layer)

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

দ্য

  • সবচেয়ে কম
  • ক্রিয়ামূলক

জমা জিত


13
দয়া করে বন্ধনী বন্ধ করুন
কোয়ান্টিন

প্রশ্ন: এটি কি অনুভূমিকভাবে আয়তক্ষেত্রাকার হওয়া দরকার? অর্থাৎ যদি এটি 10 ​​সারি উঁচু এবং 9 কলাম প্রশস্ত হয়?
রুসলান

অনুমানটি বলছে এটি কেবল ,@#~-প্যাডিং হিসাবে ফাঁকা জায়গা বাদে পারে তবে প্রথম পরীক্ষার ক্ষেত্রে একটি লাইনের মাঝখানে ফাঁকা স্থান থাকে।
ফেয়ারসাম

@ ফেয়ারসাম "প্রয়োজনে স্পেস দিয়ে প্যাড করুন"
ইউ কে মনকি

উত্তর:


11

রেটিনা , 38 34 বাইট

4 বাইট সংরক্ষণের জন্য গ্রিমিকে ধন্যবাদ।

আপনার লাসাগন দিয়ে একটি রেইজেক্স করুন।

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

^([, ]+¶)?,{5,}(¶[@#]+¶[-~]*){2,}$

ধরে নিই যে ইনপুটটি একটি ট্রেইলিং লাইনফিডের সাথে শেষ হয়। 1বৈধ লাসাগনেসের জন্য মুদ্রণ (ম্যাচ) এবং অবৈধগুলির জন্য 0(কোনও মিল নেই)।

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

ব্যাখ্যা

এটি কেবলমাত্র একটি স্ট্যান্ডার্ড .NET রেজেক্স ইনপুটটির সাথে মিলেছে, ব্যতীত রেটিনা লাইনফিড বা অন্যটির জন্য এলিফ সরবরাহ করে \n

যেহেতু ইনপুটটি আয়তক্ষেত্রাকার হিসাবে গ্যারান্টিযুক্ত তাই আমাদের কেবল সারিগুলির একটিতে লাসাগেনের প্রস্থ পরীক্ষা করতে হবে।

^           # Anchor the regex to the beginning of the input.
([, ]+¶)?   # Match an optional first line of only commas an spaces.
,{5,}       # Match at least 5 commas.
(           # Match this at least twice to ensure at least two layers of sauce.
  ¶[@#]+    #   Match a line of sauce.
  ¶[-~]*    #   Match a line of pasta. This line may be empty (which would
            #   indicate the end of the input.
){2,}
$           # Make sure we've indeed reached the end. Note that `$` can
            # match either at the very end of the input, or in front of
            # the trailing linefeed.

যদি আমাদের ধরে নিতে দেওয়া হয় যে শেষ লাইনের পরে একটি চূড়ান্ত লাইনফিড আছে (যা যুক্তিযুক্ত মনে হয়), আপনি 4 বাইট সংরক্ষণের ¶[-~]*পরিবর্তে ব্যবহার করতে পারেন (¶[-~]+|$)
গ্রিমি

@ গ্রিমি আহ ভাল ধরা, ধন্যবাদ!
মার্টিন ইন্ডার

5

গ্রিম , 43 বাইট

e`[ \,]+/?/(\,/[#@]^/[\-~]/+/[#@]/?)+{5-,4-

এটি অনলাইন চেষ্টা করুন! ছাপে 1ম্যাচের জন্য এবং 0কোনো মিল জন্য।

ব্যাখ্যা

গ্রিম দ্বি-মাত্রিক নিদর্শনগুলির সাথে মেলে যা ডিজাইনের জন্য ডিজাইন করা হয়েছে, যা ছোট ছোট নিদর্শনগুলি থেকে টুকরো টুকরো করে নির্মিত হয়। আমি প্রথমে alচ্ছিক শীর্ষ স্তরটি সংজ্ঞায়িত করি, তারপরে উল্লম্ব স্ট্রাইপটি পুনরাবৃত্তি করে অন্য স্তরগুলি।

e`                                           Match entire input against pattern:
        /?                                   Optionally
  [ \,]+                                     a row of spaces and commas,
          /                                  below that
           (                       )         this pattern
                                    +        repeated horizontally
                                     {5-,4-  having size at least 5x4. 
                                             The brace is closed implicitly.
                                             "This pattern" is a vertical stripe containing
            \,                               a comma,
              /                              below that
               [#@]^/[\-~]                   a sauce character on top of a noodle character
                                             (the ^/ is like / but with higher precedence)
                          /+                 repeated vertically,
                            /                below that
                                 /?          optionally
                             [#@]            a sauce character.
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.