"অর্ধেক খালি কাঁচ" বলে কিছুই নেই


15

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

আপনার টাস্ক একটি প্রোগ্রাম যা একটি একজন হওয়া ASCII শিল্প উপস্থাপনা লাগে লিখতে হয় কুশ্রী কাচ এবং আনুসঙ্গিক একটি ASCII শিল্প আউটপুট চমৎকার কাচ । এছাড়া সিদ্ধান্ত নিতে হবে কাচ থাকে full, mostly full, mostly emptyবা empty(যে কোন 4 ধ্রুবক, স্বতন্ত্র আউটপুট মান না) এবং আউটপুট এই হিসাবে ভাল।

টি এল; ডিআর

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

কুরুচিপূর্ণ এবং দুর্দান্ত চশমা

সাধারণভাবে একটি গ্লাস হ'ল একটি ধারক যা #নীচে, দুটি পাশের দেয়াল এবং শীর্ষ নেই with

  • বৈধ চশমাগুলির মধ্যে গর্ত থাকে না। (সমস্ত #চরিত্রকে সংযুক্ত করতে হবে))
  • #ইনপুট ASCII শিল্পের প্রতিটি লাইনে কমপক্ষে দুটি অক্ষর থাকবে, না কোনও হবে। ঠিক একের সাথে কোনও লাইন থাকবে না #
  • ইনপুট ASCII আর্টের শীর্ষ লাইনটিতে সর্বদা ঠিক দুটি থাকবে #
  • বৈধ চশমার #অক্ষরগুলির সীমানা প্রাচীরের মধ্যে এক স্থানীয় নূন্যতম রয়েছে । এর অর্থ এই যে তরল কোথাও আটকা পড়তে পারে না।
  • গ্লাসের সীমানা প্রাচীরের স্থানীয় ম্যাক্সিমা থাকবে না।
  • #কাচের নীচে কোনও হবে না any
  • কাচের অভ্যন্তরটি সর্বদা সংযুক্ত স্থান হবে
  • ইনপুটটিতে শীর্ষস্থানীয় / পিছনের শ্বেত স্পেস এবং নিউলাইনগুলি থাকতে পারে।

বৈধ এবং অবৈধ চশমাগুলির উদাহরণ:

VALID (possible input to your program):

#  # 
#  # 
#### 

  #        #
   #      #
    #    #
    #    #
    #    #
     #  #
      ##

#      #
#      #
 ###   #
    #  #
    ####

#       #
 #      #
  #     #
 #      #
#       #
 ########


#   #
#   #
#   ###
#   ###
#   ###
#####


INVALID (you won't get one of those as input to your program):

#  #
   #  Has a hole.
####

#      #
   #  #  This is also considered a hole.
    ##

#   #
 # #  Less than two # on a line.
  #

## #
 # #  More than two # on the first line.
 ###

   #
 # #  Less than two # on the first line.
 ###

#               #
 #     #       #  More than one local minimum.
  #   # #     #   Liquid might get trapped.
   ###   #   #
          ###

#  #
#  #
####  Interior is not a connected space.
#  #
#  #
####

#   #
#   #######
#   ###   #
#   ##   #  Has a local maximum.
#   #   #
#      #
#     #
######

#    #
#    #
#     #
 #####
 #  #    <--- # below the bottom of the glass.

#     #
#  #  #  This is also a glass with a hole. The #'s aren't all connected.
#  #  #
#     #
#######

একটি কুরুচিপূর্ণ কাচটি এমন একটি গ্লাস যা তার অভ্যন্তরে কেবল তরল ভাসমান।

  • তরল ছোট হাতের অক্ষর দ্বারা প্রতিনিধিত্ব করা হয় a-z
  • #অক্ষরের প্রথম লাইনের উপরে কোনও তরল থাকবে না । এর অর্থ এটি গ্লাসে তরল পড়ার অনুমতি দেয় না।
  • কাচের বাইরে তরল থাকতে পারে । কুৎসিত গ্লাসটিকে একটি সুন্দর গ্লাসে রূপান্তর করার সময় এই তরলটি ফেলে দেওয়া হবে।

কুৎসিত চশমার উদাহরণ :

        # y    b #      i
   x   v#p  q   l#   l
  a     # a   zj # p   g
     g  #ppcg   c#
   u    #  r   n #   r
        ##########
Discard    Keep    Discard

                   <-- There will never be liquid above the glass
   #  tz  g#
    #y abc # d
 av z#ox s #  l
   c#y abth# b
   #vg y rm#   a
    ########
 e   a  b c  d     <-- Discard this as well (not within interior)

একটি দুর্দান্ত গ্লাস এমন এক গ্লাস যেখানে নীচে সমস্ত তরল জমা হয়েছে।

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

কুৎসিত কাচের একটি সুন্দর গ্লাসে রূপান্তর

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

গ্লাস পূর্ণতা নির্ধারণ

  • একটি কাচ হ'ল fullযদি তার পুরো অভ্যন্তরীণ স্থানটি অক্ষরে ভরা থাকে।
  • এটি mostly fullযদি হয় 50% বা তারও বেশি অভ্যন্তরের স্থান পূরণ করা হয়।
  • এটি mostly emptyযদি অভ্যন্তরীন স্থানের 50% এরও কম স্থান পূর্ণ হয়।
  • এটা emptyযদি কাচ কোন অক্ষর আছে।
  • এএসসিআইআই আর্ট গ্লাস এবং পূর্ণতা আউটপুট এর মধ্যে অতিরিক্ত নতুন লাইন এবং স্পেসগুলি থাকতে পারে।
  • গ্লাস পূর্ণতার 4 স্তরের জন্য প্রোগ্রামটি কোনও স্বতন্ত্র (তবে ধ্রুবক!) মান আউটপুট করতে পারে, এটি উপরে সঠিক স্ট্রিংগুলি মুদ্রণ করতে হবে না। কোন মানটি পূর্ণতা স্তরটি উপস্থাপন করে দয়া করে তা নির্দিষ্ট করুন।

আই / ও উদাহরণ

Example 1 input:

        # y    b #      i
   x   v#p  q   l#   l
  a     # a   zj # p   g
     g  #ppcg   c#
   u    #  r   n #   r
        ##########

Example 1 output:

        #        #       
        #        #    
        #        #      
        #ppcglqb #
        #yprazjnc#    
        ##########
mostly empty

Example 2 input:

   #  tz  g#
    #y abc # d
 av z#ox s #  l
   c#y abth# b
   #vg y rm#   a
    ########
 e   a  b c  d

Example 2 output:

   #       #
    #   bc #  
     #oxysa#   
    #ygabth#  
   #vgtyzrm#    
    ########
mostly full

Example 3 input:

#      #
#  g   # f
 ###ih #  d
a c #  # e
 b  ####

Example 3 output:

#      #
#      #  
 ###  g#   
    #hi#  
    ####
mostly empty

Example 4 input:

#ab# 
#cd# 
#### 

Example 4 output:

#cb# 
#da# 
#### 
full

Example 5 input:

  #        # h
   #      #
  a #    # g
   b#    #  f
 c  #    #  
     #  #  e
   d  ##

Example 5 output:

  #        #  
   #      #
    #    #  
    #    #   
    #    #  
     #  #   
      ##
empty

Example 6 input:

# b  az#
#y s ###
###### t
  l  u

Example 6 output:

#  z   #
#ybsa###
######  
mostly full

Example 7 input:

#   # g
# b #f
#  c###
#da ### i
#  e###
##### h

Example 7 output:

#   #
#   #
#   ###
#de ###
#abc###
#####
mostly empty

বিবিধ

  • এটি কোড গল্ফ তাই সংক্ষিপ্ত উত্তর জেতে।
  • যদি সম্ভব হয় তবে দয়া করে একটি অনলাইন দোভাষীকে একটি লিঙ্ক সরবরাহ করুন যা প্রদত্ত উদাহরণ ইনপুটগুলিতে আপনার প্রোগ্রামটি চালাতে ব্যবহৃত হতে পারে, উদাহরণস্বরূপ tio.run

1
এই বৈধ কাপ হয়? পেস্ট.বুন্টু.com
l4m2

আমি প্রস্তাব দিতে পারি: "একটি গ্লাস বেশিরভাগ পূর্ণ হয় যদি অভ্যন্তরীণ জায়গার 50% এরও বেশি স্থান পূর্ণ হয়।" - যদি আপনি ঠিক 50% অবৈধ ইনপুট হিসাবে বিবেচনা করেন (এই কেসটি হ্যান্ডেল করার সমাধানগুলির প্রয়োজন ছাড়াই) "আধা খালি গ্লাস" (বা একটি "অর্ধ পূর্ণ গ্লাস") এর মতো আর কিছুই নেই, শিরোনামটির সাথে আরও ভাল মিলছে । বাস্তবে এই কেসটি পরিচালনা করে এমন কোনও সমাধান অবৈধ না করে।
আনেদার

1
@ l4m2 চ্যালেঞ্জ আপডেট করেছে এবং আরও ইনপুট সীমাবদ্ধ করেছে। আপনার উদাহরণগুলির মধ্যে প্রথমটি অবৈধ, দ্বিতীয়টি বৈধ, তৃতীয়টি অবৈধ।
জোনাথন এস

@ আনেদার যদিও এটি চ্যালেঞ্জটিকে শিরোনামের সাথে আরও ভালভাবে মেলে, তবে এটি আমার মতে চ্যালেঞ্জ থেকে অনেক বেশি দূরে সরে যাবে এবং এরই মধ্যে ইতিমধ্যে যথেষ্ট অবৈধ ইনপুট রয়েছে। আমি সেখানে 50% কেস ছেড়ে দেব।
জোনাথন এস 0

উত্তর:


12

রেটিনা , 56 বাইট

T%` l`!`^.*?#|[^#]+$
O` |\w
*`!
 
T`#!¶
*M` \w
+` \w

 +

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

আউটপুট এনকোডিং 0\n0সম্পূর্ণরূপে, 0\n1খালি 1\n0জন্য, বেশিরভাগ পরিপূর্ণ এবং 1\n1বেশিরভাগ খালি জন্য (অন্য কথায়, প্রথম বিটটি "বেশিরভাগ" এবং দ্বিতীয় বিটটি "খালি" নির্দেশ করে)।

ব্যাখ্যা

T%` l`!`^.*?#|[^#]+$

আমরা কাঁচের বাইরে সমস্ত স্থান এবং অক্ষরগুলিকে রূপান্তর করে শুরু করি !। এটি প্রথমটি পর্যন্ত কোনও লাইন-শুরুর সাথে #মিলে বা এমন একটি লাইন-এন্ডিং মিলের মাধ্যমে সম্পন্ন করা হয় যা একটি ধারণ করে না #এবং সেই ম্যাচের সমস্ত স্পেস এবং অক্ষরকে অনূদিত করে।

O` |\w

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

*`!
 

শুকনো রান: !স্পেস দিয়ে সমস্ত প্রতিস্থাপনের ফলাফলটি মুদ্রণ করুন , তবে বাস্তবে এই স্ট্রিংটি কার্যকারী স্ট্রিংয়ে প্রয়োগ করবেন না। এটি দুর্দান্ত কাঁচটি প্রিন্ট করে।

T`#!¶

বাতিল করতে চান সব #, !এবং linefeeds, যাতে আমরা শুধুমাত্র স্পেস এবং কাচের ভিতরে অক্ষর অবশিষ্ট করছি (এখনও সাজানো)।

*M` \w

শুকনো রান: কোনও বর্ণের পরে কোনও জায়গার মিলের সংখ্যা মুদ্রণ করুন। এটি সর্বাধিক একটি মিল খুঁজে পাবে, এবং কেবলমাত্র যদি গ্লাসের ভিতরে ফাঁকা স্থান এবং অক্ষর উভয়ই থাকে, অর্থাৎ গ্লাসটি বেশিরভাগই (পূর্ণ / খালি) থাকে।

+` \w

বারবার একটি চিঠি পরে একটি স্থান অপসারণ। এটি "বাতিল করে" অক্ষর এবং স্পেসস, যাতে আমরা কেবলমাত্র সেই ধরণের চরিত্রের সাথে শেষ করি যা কাচের অভ্যন্তরে প্রায়শই দেখা যায়।

 +

এই রেজেক্সের মিলগুলির সংখ্যা গণনা করুন, যা 1যদি কোনও ফাঁকা স্থান (যেমন কাঁচটি [বেশিরভাগ] খালি ছিল) দেয় এবং 0যদি সেখানে বামে না থাকে (যেমন গ্লাসটি হ'ল 50% বা তার বেশি এবং সুতরাং [বেশিরভাগ ক্ষেত্রে পূর্ণ) )।


4

সি, 190 বাইট

17 বাইট সংরক্ষণের জন্য @ l4m2 কে ধন্যবাদ!

i,k,t,s;f(char*g){char*p=g,l[strlen(g)];for(s=t=0;*p;*p>35&&(t?l[i++]=*p:1)?*p=32:0,~*p++&t&&++s)t^=*p==35;for(k=i;i;t&*p==32?*p=l[--i]:0)t^=*--p==35;printf("%s\n%d",g,k?k-s?k*2<s?1:2:3:0);}

খালি গ্লাসের জন্য আউটপুট 0, বেশিরভাগ খালি জন্য 1, বেশিরভাগ পূর্ণরূপে 2 এবং পূর্ণের জন্য 3।

প্রথমে ইনপুট স্ট্রিংটি কাচের অভ্যন্তরের স্থান গণনা করে, কাচের অভ্যন্তরে থাকা অক্ষরগুলি চিহ্নিত করে এবং সমস্ত অক্ষরকে স্পেসে পরিবর্তিত করে ops তারপরে কাচের নীচে গ্লাসে থাকা সমস্ত অক্ষর রেখে পেছনের দিক দিয়ে লুপ করে।

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

Unrolled:

i,k,t,s;
f(char*g)
{
    char l[strlen(g)], *p=g;
    for (s=t=0; *p; *p>35&&(t?l[i++]=*p:1)?*p=32:0, ~*p++&t&&++s)
        t ^= *p==35;
    for (k=i; i; t&*p==32?*p=l[--i]:0)
        t ^= *--p==35;
    printf("%s\n%d", g, k?k-s?k*2<s?1:2:3:0);
}

গ্লোবাল ভেরিয়েবলগুলি প্রাথমিকভাবে 0 হয়, সুতরাং পুনরায় চালু করার দরকার নেই
l4m2

@ l4m2 ধন্যবাদ, তবে ফাংশনগুলি পুনরায় ব্যবহারযোগ্য হওয়া দরকার , সুতরাং ফাংশনের অভ্যন্তরে আমার ভেরিয়েবলগুলি শুরু করা দরকার। iএটি মনে হচ্ছে ব্যতীত , ফাংশনটি সর্বদা শেষে 0 তে তার মান ছেড়ে দেয়।
স্টেডিবক্স

· চর * ম্যালোক (স্ট্রেন (ছ)) char l[strlen(g)]
C

t = *p-35 ? t : !t-> t ^= *p==35t টি সর্বদা 0 বা 1
l4m2

&&(*p=32)-> ?*p=32:0 char l[strlen(g)],*p=g->char*p=g,l[strlen(g)]
l4m2


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