আসুন হ্যালোইনের জন্য প্রস্তুত থাকি


15

আমি আপনার সব সম্পর্কে জানি না তবে আমি হ্যালোইনের জন্য প্রস্তুত হচ্ছি না - কখনই হবে না - তবে আমার প্রতিবেশী তাই আমরা তাকে সাহায্য করব।

তার কাছে কোন ব্র্যান্ডের ক্যান্ডি রয়েছে তা জানার জন্য তার সহায়তা দরকার তবে হ্যালোইনের আগে তার এত ক্যান্ডি শেষ করতে পারবেন না।

তার আছে:

  • Snickers
  • কিট ক্যাট
  • স্টারবার্স্ট
  • আঠাযুক্ত বহন
  • Twix

ইনপুট

একটি অক্ষরেখা (বা অন্য কোনও যুক্তিসঙ্গত ফর্ম) যা কেবলমাত্র অক্ষর এবং স্পেসগুলিতে থাকে।

আউটপুট

একটি মিথ্যা মান এটি বৈধ ক্যান্ডি না হলে বা এটি একটি মিছরি হলে এটি কোন মিছরি।

কোন মিছরি তা কীভাবে সিদ্ধান্ত নেবেন

এটির উপরের ব্র্যান্ডগুলির মধ্যে একটিতে যদি বলা হয় একটি ক্যান্ডি বৈধ। তবে এটি এত সহজ নয়, কারণ এটি একটি বৈধ মিছরি:

K i t
       K a
           t

একটি বৈধ মিছরি একটি যেখানে:

  • বর্ণগুলি বাম থেকে ডানে ক্রমযুক্ত
  • বর্ণগুলি সঠিকভাবে মূলধন করা হয়
  • বাম থেকে ডানে যেতে অক্ষরগুলি, আরোহণ এবং নামা উভয়ই নয়
  • হোয়াইটস্পেস মুছে ফেলা অক্ষরগুলি উপরের ব্র্যান্ডগুলির একটি তৈরি করে

এটি , তাই বাইট জিতে সংক্ষিপ্ততম কোড!

উদাহরণ

Truthys:

1.
              kers
           c
        i
       n
    S    

2.
  Kit K a t

3. 
St a
    r b u
         r st 

4.
         Bear s
G ummy

5.
T w i
                          x

Falsys:

1.
SNICKERS

2.
 C   n

   a   d y

3. 
xiwT

4.
S C I
       ss o
              r       s

5.
Kit
Kat

ইনপুটটি ফাঁকা জায়গায় প্যাড করা যেতে পারে?
লুভজো

এছাড়াও, একটি ত্রুটি গণনা একটি মিথ্যা মান ফেরত হিসাবে গণনা?
লুভজো

@ লভজো, হ্যাঁ এবং হ্যাঁ
ড্যানিয়েল

আমরা কোন ফাঁকা লাইন ধরে নিতে পারি?
বেনামে 2

@ বেনামে 2, ইনপুটটি খালি হবে না
ড্যানিয়েল

উত্তর:


0

পাইথ - 72 বাইট

আমি আশা করি আমি সমস্ত প্রান্তের কেসটি ধরলাম। বেস ক্যান্ডি তালিকা সঙ্কুচিত হবে।

&sSIM_Bmxdh-d;fnd{TK.tQd}-sKdc"Snickers KitKat Starburst GummyBears Twix

টেস্ট স্যুট


1

জাভাস্ক্রিপ্ট (ES6), 221 218 216 212 208 205 201 বাইট

f=a=>(c=d=L=0,e=1,s=[],[...a].map(a=>a=='\n'?c=L=0:c++-(a!=' '&&(s[c]?e=0:(!L&&(d?d-1?e&=c>Q>d-3:d=c>Q>2:d=1),L=s[Q=c]=a)))),e&&'Snickers0KitKat0Starburst0GummyBears0Twix'.split(0).indexOf(s.join``)+1)

এখানে চেষ্টা করুন।


পিপিসিজিতে আপনাকে স্বাগতম, এবং দুর্দান্ত প্রথম উত্তর! দুর্ভাগ্যক্রমে, আমি বিশ্বাস করি না এটি বৈধ; এটির জন্য একটি truthy মান Snick, ears|Tইত্যাদি আমি মনে করি আপনি যোগ করে এই ঠিক করতে পারবো .split('|')সামনে .indexOf
ETH প্রোডাকশনগুলি

এটি এখন বৈধ।
অলিভার নি

@ETHproductions। ears|Tসমস্যা কারণ কেবল অক্ষর পরীক্ষার বিষয় অনুমতি দেওয়া হয় না। তবে, আপনি ঠিক বলেছেন Snick
29 এ এসবিসিট করুন


বেশ কয়েকটি বাইট সংরক্ষণ করতে আপনি এই কৌশলটিও ব্যবহার করতে পারেন ।
ETH প্রোডাকশনগুলি

1

রেকেট 446 বাইট

(let((lr list-ref)(ls list-set)(sl string-length)(ss substring)(l(string-split s "\n")))(let loop((changed #f))(for((i(sub1(length l))))
(let*((s(lr l i))(r(lr l(add1 i)))(n(sl s))(m(sl r)))(when(> n m)(set! l(ls l i(ss s 0 m)))(set! l(ls l(add1 i)
(string-append r(ss s m n))))(set! changed #t))))(if changed(loop #f)(begin(let*((l(for/list((i l))(string-trim i)))(l(string-join l))
(l(string-replace l " " "")))(ormap(λ(x)(equal? x l))cl))))))

Ungolfed:

(define (f s cl)
  (let ((lr list-ref)
        (ls list-set)
        (sl string-length)
        (ss substring)
        (l (string-split s "\n")))
    (let loop ((changed #f))
      (for ((i (sub1 (length l))))
        (let* ((s (lr l i))
               (r (lr l (add1 i)))
               (n (sl s))
               (m (sl r)))
               (when (> n m)
                 (set! l (ls l i (ss s 0 m)))
                 (set! l (ls l (add1 i)(string-append r (ss s m n))))
                 (set! changed #t))))
        (if changed (loop #f)
            (begin
              (let* ((l (for/list ((i l))
                          (string-trim i)))
                     (l (string-join l))
                     (l (string-replace l " " "")))
                (ormap (λ(x) (equal? x l)) cl)))
            ))))

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

(f "
              kers
           c
        i
       n
    S"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))


(f "  Kit K a t"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

(f "St a
    r b u
         r st "
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

(f "         Bear s
G ummy"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

(f "T w i
                          x"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

(f "SNICKERS"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))
(f " C   n
          y
   a   d"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

(f "xiwT"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

(f "S C I
       ss o
              r       s"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

(f "Kit
Kat"
   (list "Snickers""KitKat""Starburst""GummyBears""Twix"))

আউটপুট:

#t
#t
#t
#t
#t
#f
#f
#f
#f
#t

আমি মনে করি আপনি নিজের আউটপুটটির নাম দিয়েছেন "উজ্জীবিত"
রোমান গ্রাফ

হ্যাঁ. আমি ভুল সংশোধন করেছি। ধন্যবাদ।
rnso

1

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

a=>/^(Snickers|KitKat|Starburst|GummyBears|Twix)$/.test(a.reduce((s,t)=>s.replace(/./g,(c,i)=>c<'!'?t[i]:t[i]<'!'?c:'!')).replace(/ /g,''))

স্থান-প্যাডযুক্ত স্ট্রিংগুলির একটি অ্যারে হিসাবে ইনপুট গ্রহণ করে।


0

আর, 199 অক্ষর

function(M){if(any(outer(z<-diff(apply(M,1,function(r)which.min(r==" ")))),z<0))return(F);C=c("Twix","KitKat","Starburst","Snickers","GummyBears");C[match(paste0(gsub(" ","",c(t(M))),collapse=""),C)}

ইনপুট একটি অক্ষর ম্যাট্রিক্স আকারে।

matchযা যত্ন নেয়এটি ক্যান্ডি তা (এটিও মূলধন পরীক্ষা করে)।

অক্ষরগুলি একটি "আরোহী" বা "অবতরণ" ক্রম কিনা তা পরীক্ষা করার জন্য, আমাদের কেবল এটি পরীক্ষা করে দেখতে হবে যে প্রতিটি সারিতে প্রথম অ-স্থানের অক্ষরের অবস্থান (যদি সেখানে থাকে) বাড়ছে বা হ্রাস পাচ্ছে। করতে, এই আমরা

  • ব্যবহার করে প্রতিটি সারিতে একটি ননস্পেস অক্ষরের প্রথম অবস্থান নিন apply
  • নিতে diff । এটিতে কিছুটা শূন্য থাকতে পারে, অন্যথায় সমস্ত ধনাত্মক বা সমস্ত নেতিবাচক হওয়া উচিত
  • নাম দিন diff zএবং নিজের সাথে বাইরের পণ্যটি নিন। যদি ডিফের ইতিবাচক এবং নেতিবাচক এন্ট্রিগুলি মিশ্রিত হয় তবে এর বাইরের পণ্যটিতে কোথাও নেতিবাচক প্রবেশ হবে entry যদি তা হয় তবে মিথ্যা ফিরুন।

লক্ষ করুন যে ক্ষেত্রেগুলি

"    i "
"   w x"
"  T   "

একটি খালি চরিত্রের ভেক্টরকে ফিরিয়ে দেবে (বিশেষত "টোমিক্স" নয়), যেহেতু match"টুইক্সি" মিলানোর চেষ্টা করা হবে।


0

পাইথন 2.7, 254 বাইট

আমি নিশ্চিত এটি আরও গল্ফ করা যেতে পারে। ইনপুট লাইনগুলির একটি অ্যারে s

x=len
p=lambda a:x(a)-x(a.lstrip())
g=sorted
a=map(p,l)
j=''.join
z=[i.replace(' ','')for i in l]
if g(a)==a:q=j(z)
elif g(a)==a[::-1]:q=j(z[::-1])
else:q=''
if x(set(a))<x(a):q=''
print 1if q in('Snickers','KitKat','Starburst','GummyBears','Twix')else 0

এখানে চেষ্টা করুন!


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