ব্যর্থ দুর্গগুলি সনাক্ত করুন


40

মহাকর্ষের আকর্ষণীয় দিকগুলির মধ্যে একটি হ'ল, যতদূর আমি অবগত আছি, আপনি কেবল মিডয়ারে ভাসমান জিনিস রাখতে পারবেন না।

যাইহোক, এটি র‌্যান্ডম ক্যাসল বিল্ডার্স অ্যাসোসিয়েশনের প্রত্যেকেই এই সত্য সম্পর্কে অবগত নয় এবং এর মতো দুর্গগুলিতে পৌঁছেছে:

                      #
                      #
    #  #      #  #   ###
    ####      ####   # #
    #### #  # ####   ###
    ##############   ###
    ######  ######   ###
    #####    #####   ###
                     ###
``````````````````````````````

এবং এটি:

                                       # # #    # # #   
                                       ##############
                                       ###  ####  ###
    #  #      #  #      #  #      #  # ###  ####  ### #  #      #  #      #  #      #  #
    ####      ####      ####      #### ############## ####      ####      ####      ####
    #### #  # #### #  # #### #  # #### ## ######## ## #### #  # #### #  # #### #  # ####
    ####################################################################################
    ######  ########  ########  ########  ########  ########  ########  ########  ######
    ###################################    ######    ###################################
    ###################################    ######    ###################################
                                       ##
                                         ##
                                           ##
                                             ##
                                               ##
````````````````````````````````````````````````````````````````````````````````````````````

এমনকি এটি একটি:

       ##########
   ####   #      ###
#######################
            #
              #
                #
                  #
                    #  # # #
                  #   #  ###
                   #   # ###
                # # #  #  ##
                # # ##   ###
                 #  #  #####
                   #   #####
                  # #  #####
                       #####
                       ## ##
                       #####
                       #####
                       ## ##
                       ## ##
````````````````````````````````````````````

চ্যালেঞ্জ

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

বিধি

  • স্ট্রিং হিসাবে ইনপুট দেওয়া হয়।
  • সমস্ত বৈধ দুর্গ একটি পৃষ্ঠের উপর বিশ্রাম ````````,। (যদি ইনপুট স্ট্রিংটিতে কোনও পৃষ্ঠ থাকে না তবে দুর্গটি অবৈধ))
  • আপনি ধরে নিতে পারেন সমস্ত ইনপুট এই মানদণ্ডগুলি পূরণ করবে:
    • পৃষ্ঠটি সর্বদা সমতল হবে।
    • পৃষ্ঠটি সর্বদা দুর্গের মতো কমপক্ষে প্রশস্ত থাকবে, সুতরাং জমিটির বাম বা ডানদিকে কোনও ব্লক থাকবে না।
    • ইনপুটটি কখনও #পৃষ্ঠের নীচে থাকবে না ।
    • ইনপুটটিতে কেবলমাত্র এই চ্যালেঞ্জটিতে দেওয়া অক্ষর থাকবে। ( #, `স্থান বা নিউলাইন।)
    • আপনি ধরে নিতে পারেন ইনপুটটিতে সর্বদা কমপক্ষে একটি অক্ষর থাকবে।
  • ব্লকগুলি যদি অনুভূমিকভাবে বা উলম্বভাবে সংলগ্ন হয় তবে সংযুক্ত থাকে। ডায়াগোনাল গণনা হয় না!
    • সংযুক্ত:
      #	or	##
      #
    • সংযোগ বিচ্ছিন্ন:
      #      or	# #	or	 #
      #
      #
  • ক্যাসলগুলি বৈধ হওয়ার জন্য অবশ্যই বিদ্যমান থাকতে হবে। (অন্য কথায়, বিনা ইনপুটগুলিকে #একটি মিথ্যা মান দিতে হবে))
  • ইনপুটটিতে কেবলমাত্র এই চ্যালেঞ্জটিতে দেওয়া অক্ষর থাকবে। ( #, `স্থান বা নিউলাইন।)
  • আপনি ধরে নিতে পারেন ইনপুটটিতে সর্বদা কমপক্ষে একটি অক্ষর থাকবে।
  • স্ট্যান্ডার্ড আই / ও এবং লুফোলের বিধিগুলি প্রযোজ্য।

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

Falsy

  • উপরে দেওয়া সমস্ত উদাহরণ।
  • # # # # 
    #### ####
    #### # # ####
    ##############
    ###### ######
    ## ### #####
    (কোন ভিত্তি নেই।)
  • # 
    ### ####
    #### # # ####
    ##############
    ###### ######
    ##### # ####
    `` `` `` `` `` `` ``
    (শীর্ষস্থানীয় ব্লকটি অনুভূমিকভাবে বা উলম্বভাবে সংযুক্ত নয়))
  •    
    ``
    (দুর্গ নেই)


  • # # # # # #
    ##############
    ##### ## #####
    # # # # # # # # #### # # #### # # # # # # # # #
    ############################## #### #### ####
    ## ## # # #### # # # #### # # #### # # #### # # #### # # #### # # #### # # ####
    ################################################## ##################################
    ###### ######## ## ###### ################################################# ##
    ######################################################################### ############################
    ####################################################################### #############################
    `` `` `` `` `` `` `` `` `` `` `` ` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` `` `` `` `` `` `` `
    (কেন্দ্রীয় টাওয়ারটি বাকী দুর্গের সাথে সংযুক্ত নয় কারণ এটির সাথে সংযোগকারী কোনও অনুভূমিক বা উল্লম্বভাবে সংলগ্ন ব্লক নেই))
  •    
    (দুর্গ নেই)

  • (কোনও দুর্গ নেই, কেবলমাত্র একটি নতুন লাইনের চরিত্র))
  • # # 
    #
    `` `` `` `
    (ডানদিকের ব্লকটি অনুভূমিকভাবে বা উলম্বভাবে সংযুক্ত নয়))
  •    
    ``
    (দুর্গ নেই)

Truthy

  • # 
    `
  • # # # # 
    #### ####
    #### # # ####
    ##############
    ###### ######
    ## ### #####
    `` `` `` `` `` `` ``
  •                       # # 
    #
    # # # # ###
    #### #### # #
    #### # # #### ###
    ############## ###
    # ###### ### #####
    ##### ##### ###
    ##### ##### ###
    `` `` `` `` ` `` `` `` `` `` `` `` `` `` `
  •                                        # # # # # #    
    ##############
    ### #### ###
    # # # # # # # # ### #### ### # # # # # # # #
    ##################################################### ##
    #### # # #### # # #### # # ##### ######### ## #### # # ##### # # ## ## # # ####
    ########################################### ##########################################
    ###### ## ###### ################################################# ####
    ################################################### # ########################################
    ######################################################################### #############################
    `` `` `` `` `` `` `` `` `` `` `` ` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` ` `` `` `` `` `` `` `` `` `
  •                       #### ### 
    # #### ###
    # ###
    # ##
    #
    ###
    #####
    #######
    #########
    ### ## #####
    ##### #####
    ###### ######
    #################
    # ### ########## #
    #############
    #############
    #############
    ###### ######
    ###### ######
    #############
    #############
    #############
    #############
    ###### ##### #
    ###### ######
    #############
    #############
    ########### ##
    #############
    ###### ######
    ###### ######
    ########### ##
    #############
    #############
    #############
    ######### ####
    ##### #####
    ##### #####
    ##### #####
    `` `` `` `` `` `` `` ` `` ``
  •                                                 
    ####
    #####
    ######
    ####
    ####
    #####
    ########
    ##########
    #### ######
    ###########
    ############
    ##############
    ##### ## ##############
    ########### #################
    ###########################################
    ####### #################################
    ################# ####################
    ############################## ####
    ############################
    ################## #
    `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `` `

শুভকামনা!


আমরা কি ধরে নিতে পারি ইনপুটটির সমস্ত লাইন একই দৈর্ঘ্য হবে (অর্থাত্ স্পেসে ভরা)?
স্মিল

@ এসএমএলএস না, আপনি অনুমান করতে পারবেন না যে ইনপুট প্যাড হবে।
ব্যবহারকারী 2428118

1
@ এসএমএল পুনরায় # 1 এবং # 2: আমি আসলে বোঝাতে চাইছিলাম যে জমাগুলি হ্যান্ডেল করতে হবে না তবে আমি এখন দেখছি যে এটি কীভাবে লিখেছিলাম তা নয়। যেহেতু এখনও কোনও সমাধান পোস্ট করা হয়নি যা এই জিনিসগুলি পরিচালনা করে, তাই আমি প্রশ্নটি আপডেট করব যাতে এটি পরিষ্কার হয়ে যায় যে আপনার এগুলি পরিচালনা করতে হবে না। পুনরায় # 3: আমি সত্যিই এমন পরিস্থিতিটির কথা ভাবতে পারি না যেখানে কোডটি সঠিকভাবে ফালসি পরীক্ষা কেস হ্যান্ডেল করবে 2, 4 এবং 6 এবং এখনও এমন পরিস্থিতি সনাক্ত করতে ব্যর্থ হয়েছে যেখানে মাটির সাথে কোনও সংযোগ নেই। পুনরায় # 4: আপনি এর দ্বারা কী বোঝাতে চাইছেন তা আমি নিশ্চিত নই। এটি ইতিমধ্যে ট্রুথি পরীক্ষার কেস নম্বর 1 দ্বারা পরিচালিত হয় না ?
ব্যবহারকারী 2428118


2
একটি কলা দুর্গ? সেরা ক্যাসল কখনও
ম্যাথু রোহ

উত্তর:


11

শামুক , 21 18 বাইট

চ্যালেঞ্জ হিসাবে সম্পাদিত অতিরিক্ত ইনপুট সীমাবদ্ধতার কারণে -3 বাইট।

!{t=\#!(\#o`+\`}\#

দুর্ভাগ্যক্রমে সময় জটিলতা কারণগত, তাই বেশিরভাগ ইনপুট চালানো যায় না।

মিথ্যা মামলার ক্ষেত্রে আউটপুট 0 এবং সত্যবাদী মামলার সংখ্যা #

                 ,,
!{ t             ,, Assert that nowhere in the grid,
    =\#          ,, there is a '#'
    !(           ,, such that there does not exist
        (\# o)+  ,, an orthogonally connected path of '#'
        \`       ,, ending at a '`'
    )            ,,
}                ,,
\#               ,, Match '#' at starting position

এটি আপনি দুর্গ হিসাবে Zgarb এর উত্তরে পোস্ট করা উদাহরণটিকে স্বীকৃতি দেয় না। আমি বিধিগুলিতে এমন কিছু দেখতে পাচ্ছি না যা বলে যে এটি করা উচিত নয় দুর্গ হিসাবে সনাক্ত করা ? নিয়মগুলি কেবলমাত্র বলে যে এটি প্রতিটিই #মাটিতে যুক্ত থাকলে এটি একটি দুর্গ ।
মার্টিন এেন্ডার

@ জগারব না, ব্যাখ্যাটিতে একটি ত্রুটি রয়েছে - +এটি আসলে 1 বা একাধিক বার, 0 নয় it's
ফেডারাম

9

অক্টাভা, 53 51 বাইট

@(s)([~,n]=bwlabel(s>32,4))|n==1&&nnz(diff(+s)==61)

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

* যেহেতু খালি ইনপুট উত্তর যাচাইয়ের জন্য অপ্টের প্রয়োজনীয়তা আমার প্রথম সম্পাদনায় প্রত্যাবর্তিত হয়েছে।

ব্যাখ্যা:

nnz(s)                       check for empty input
([~,n]=bwlabel(s~=' ',4))    label nonempty regions and count number of labels

n==1                         check if number of labels is 1.

nnz(diff(+s)==61)            check if blocks connected to the surface

6

গ্রিম , 29 বাইট

C=\`|\#&<0C>oX
e`\#&C!v#!&\##

এটি অনলাইন চেষ্টা করুন! বেশিরভাগ পরীক্ষার কেস টিআইও-তে শেষ হয়। প্রতিস্থাপন <0C>সঙ্গে <0CoF>এটা একটু দ্রুত করতে।

ব্যাখ্যা

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

C=\`|\#&<0C>oX  First line:
C=               Define nonterminal C as
  \`             the literal `
    |            or
     \#          the literal #
       &<  >     which is contained in a larger rectangle
         0C      containing said literal adjacent to a match of C
            oX   rotated by any multiple of 90 degrees.
e`\#&C!v#!&\##  Second line:
e`               Match entire input against this pattern:
         !       does not
       v#        contain
  \#             the literal #
    &C!          which is not a match of C,
          &      and
             #   contains
           \#    the literal #.

6

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

f=(s,l=Math.max(...s.split`\n`.map(t=>t.length)),t=s.replace(/^.*/g,t=>t+' '.repeat(l-t.length)),u=t.replace(eval('/(#|`)([^]{'+l+'})?(?!\\1)[#`]/g'),'`$2`'))=>t==u?/#/.test(s)>/#/.test(t):f(s,l,u)

যেখানে \nআক্ষরিক নিউলাইন চরিত্রের প্রতিনিধিত্ব করে। #একটি সংলগ্ন একটি সন্ধান করে `এবং একে এ-তে পরিবর্তন করে একবারে সমস্তগুলি সরিয়ে দেওয়ার চেষ্টা করে `। রিটার্নস trueযদি অন্তত একজন ছিলেন #মূলত কিন্তু সব মুছে ছিল। 118 117 বাইটের জন্য প্যাডড ইনপুট প্রয়োজন এমন সংস্করণ :

f=(s,t=s,u=t.replace(eval('/(#|`)([^]{'+s.search`\n`+'})?(?!\\1)[#`]/'),'`$2`'))=>t==u?/#/.test(s)>/#/.test(t):f(s,u)

5

পার্ল 6 , 180 বাইট

{?/\#/&&?all map ->\c{my \b=[map {[$^a.comb]},.lines];sub f(\y,\x){with b[y;x] ->$_ {b[y;x]=0;/\#/??f(y+(1|-1),x)|f(y,x+(1|-1))!!/\`/??1!!|()}}(|c)},map {|($++X ^$^a.comb)},.lines}

ইনপুটটিতে কমপক্ষে একটি রয়েছে কিনা তা পরীক্ষা করে দেখায় #এবং প্রত্যেকে যদি একটিতে #একটি পথ খুঁজে পায় `

বরং অদক্ষ, কারণ পাথ ফাইন্ডিংটি পুনরাবৃত্ত ফাংশন ব্যবহার করে নিষ্ঠুর-জোর করা হয় যা সর্বদা #একই সংযুক্ত অঞ্চলের অন্যান্য সমস্ত অঞ্চলে পরিদর্শন করে (যেমন শর্ট সার্কিট নয়)।

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


5

পাইথন 3 , 214 206 বাইট

def f(s):
 C=s.split('\n');n=max(map(len,C));o=[''];C=[*''.join(t.ljust(n)for t in C+o)]
 while C>o:o=C;C=['`'if z>' 'and'`'in{C[i+y]for y in(1,-1,n,-n)}else z for i,z in enumerate(C)]
 return'#'in{*s}-{*C}

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

এখানে প্রথম লাইনটি সমস্ত লাইনকে একই দৈর্ঘ্যে প্যাডিংয়ের জন্য উত্সর্গীকৃত: আমরা স্ট্রিংটি বিভক্ত করি ( s.split('\n')এক চরের চেয়ে কম সংক্ষিপ্ত s.splitlines()) একটি লাইনের সর্বাধিক দৈর্ঘ্য সন্ধান করি এবং প্রতিটি প্যাডিংয়ের পরে সি অক্ষরে সমস্ত অক্ষরের সমতল তালিকা তৈরি করি assign লাইন। (নিউলাইনগুলি চলে গেছে।)

তারপরে আমরা একটি তালিকা তৈরি করি যেখানে কমপক্ষে একটি ব্যাকটিক সংলগ্ন প্রতিটি অ-স্পেস অক্ষর ব্যাকটিক দ্বারা প্রতিস্থাপিত হয় এবং কোনও পরিবর্তন না হওয়া পর্যন্ত চালিয়ে যায় (যখন পুরানো তালিকাটি oসমান হয় CWe আমরা C>oতার পরিবর্তে তুলনা করতে পারি )C!=o পরিবর্তে # এর # (ASCII 35) ) এর সাথে `(ASCII 96) কেবলমাত্র তালিকাটির অভিধানিক ক্রম বাড়িয়ে তুলতে পারে))

যদি কোনও # টি অবশেষ না থাকে এবং প্রাথমিকভাবে কমপক্ষে একজন উপস্থিত থাকেন তবে দুর্গটি বৈধ।

  • পরিবর্তে সেট পার্থক্যতে আটটির জন্য আটটি বাইট চেক করে সংরক্ষণ করা '#'in s and'#'not in C
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.