কত জিম্মি ফিট করতে পারে?


29

ইন এই সহজ কিন্তু মজার চ্যালেঞ্জ , আপনি কিনা তা নির্ধারণ করতে জিমি তাদের প্ল্যাটফর্ম পড়া হবে বলা হয়েছিল। জিমি তিন শরীরের অংশ হয়ে গেছে /, oআর \এই রকম ব্যবস্থা

/o\

প্ল্যাটফর্মগুলি প্রতিনিধিত্ব করে -। জিমি তাদের প্ল্যাটফর্মটি বন্ধ করবে যদি তাদের দুটি বা ততোধিক দেহের অংশ থাকে যা সরাসরি প্ল্যাটফর্মের উপরে না থাকে।

কিছু উদাহরণ:

   /o\
- -------

জিমি ভারসাম্য বজায় রাখবে যেহেতু তাদের দেহের সমস্ত অঙ্গ ক এর উপরে থাকে -

   /o\
    ------   ---

জিমি ভারসাম্যহীন হবে যেহেতু শরীরের দুটি অংশ ওপরে -

 /o\
-- ----  --

জিমি দুটি প্ল্যাটফর্মের মধ্যে বিভক্ত হয়েও ভারসাম্য বজায় রাখবে

  /o\
   -

জিমি শরীরের দুটি অংশ প্ল্যাটফর্মের উপরে না হওয়ায় ভারসাম্যহীন হবে না।


আপনার কাজটি হ'ল এমন একটি প্রোগ্রাম লিখুন যা প্লাটফর্মটিকে কেবলমাত্র -s এবং s (যেমন একটি স্ট্রিং) সমেত একটি দৈর্ঘ্যের ধারক হিসাবে গ্রহণ করে এবং প্ল্যাটফর্মে রাখা যেতে পারে এমন জিম্মির সংখ্যাকে আউটপুট করে দেয় যেগুলির কোনওটি পড়ে না এবং সেগুলির মধ্যে কোনওটিই পড়বে না ওভারল্যাপ। জিমির স্ট্রিংয়ের শুরুর বাঁদিকে বা স্ট্রিংয়ের শেষের ডানদিকে তাদের শরীরের একটি অংশ থাকতে পারে।

এটি তাই উত্তরগুলি বাইটে কম বাইটের সাথে লক্ষ্য হয়।

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

ইনপুট

-  -  -

- -
--
-- --
----
- -- --
------- -

সম্মানজনক ফলাফল

0
0
1
1
2
2
2
3

উত্তর:


15

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

4 শে বাইট সংরক্ষিত হয়েছে @ শেগগিকে ধন্যবাদ

s=>(0+s+0).split(/.--|-.-|--./).length-1

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



7
@ শেগি ধন্যবাদ! আমি জানতাম সেখানে কিছু ভুল হয়েছে, তবে এর মধ্যে আমাকে আমার স্ত্রীকে সুপার মারিও গ্যালাক্সি স্তরে সাহায্য করতে হয়েছিল ... এবং এটি ছিল ভাঙা প্ল্যাটফর্মগুলির জন্যও সমস্যা । : পি
আর্নল্ড

2
---আমার সাথে ভাল বসা হয় নি পারেন না হওয়া পর্যন্ত আমি আমার পোর্টে কাজ ছিল এবং উপলব্ধি তাদের দরকার ছিল না। ভাবেন আমি এটিকে এখানে একদিন কল করব, ক্যানের একটি ব্যাগ ধরব এবং এসএমজি নিজেই ছুঁড়ে দেব - এটি কোনও যুগে খেলেনি।
ঝাঁকুনি

এবং এখন অন্যান্য সমস্ত উত্তর একই রেজেস ব্যবহার করছে।
সিউর

8

পাইথন 2 , 53 বাইট

lambda s:len(re.findall('.--|-.-|--.',`s`))
import re

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

আরনাউল্ডের রেজেক্সের উপর ভিত্তি করে । লোভজনকভাবে দুটি বা তারও বেশি সংখ্যক ওভারল্যাপিং দৈর্ঘ্য -3 সাবস্ট্রিংয়ের জন্য অনুসন্ধান করে -। একটি কৌশলটি হ'ল `s`জিম্মিসের উভয় প্রান্তে স্তব্ধ হয়ে যাওয়ার জন্য প্যাডিংয়ের জন্য প্যাডিং হিসাবে কোটগুলিতে ইনপুট স্ট্রিংটি বন্ধ করে দেওয়া to

/o\/o\
'----'

পাইথন 2 , 57 বাইট

f=lambda s:'--'in s[:3]*2and-~f(s[3:])or s>''and f(s[1:])

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

ইতিমধ্যে উদ্ধৃতিগুলিতে ইনপুটটির একটি ছদ্মবেশী I / O ফর্ম্যাট প্রয়োজন। False0 এর জন্য আউটপুট ।

একটি রিরসিভ ফাংশন যা প্রতিটি জিমিকে বামতম অবস্থানে রাখার অনুমতি দেয়, জিমিকে যদি তারা জিমিকে ধরে রাখতে পারে তবে তাকে প্রথমে তিনটি অক্ষরের উপরে রেখে, অথবা অন্যথায় প্রথম অক্ষর মুছে ফেলা হয়। একটি সুন্দর কৌশলটি হ'ল s[:3]দুটি বা আরও বেশি কিছু -করে রয়েছে কিনা তা যাচাই করা '--'in s[:3]*2, যা দুটি অনুলিপি s[:3]সংলগ্ন করে এবং দুটি সংলগ্নের জন্য চেক করে -



3

Japt , 16 বাইট

আরনাউল্ডের আসল জেএস সমাধানের ভিত্তিতে। ইনপুটটির উভয় পাশের প্রয়োজনীয় প্যাডিংয়ের জন্য আমি কয়েকটি আলাদা পদ্ধতি চেষ্টা করেছিলাম তবে সমস্ত একই দৈর্ঘ্যে এসেছিল - এখনও একটি সংক্ষিপ্ত পথ অনুসন্ধান করছি ...

ûUÊÄÄ è".--|-."ê

এটা পরীক্ষা করো

ûUÊÄÄ è".--|-."ê     :Implicit input of string U
û                    :Centre pad with spaces to length
 UÊ                  :  Length of U
   ÄÄ                :  Add 1, twice
      è              :Count the occurrences of
       ".--|-."ê     :  ".--|-." palindromised, resulting in the RegEx /.--|-.-|--./g

3

এক্সেল, 96 বাইট

A1= প্ল্যাটফর্ম। অ্যারে ফর্মুলা Ctrl+ Shift+ হিসাবে প্রবেশ করা হয়েছেEnter

=SUM(IF(LEN(TRIM(MID(IF(MOD(LEN(A1),3)=1," ","")&A1,3*ROW(INDIRECT("A1:A"&LEN(A1)))-2,3)))>1,1))

3

05 এ বি 1 ই , 16 বাইট

ðì‚ε3ôʒ'-¢2@}g}à

অবশ্যই গল্ফ করা যেতে পারে .. কখনও কখনও 05AB1E ব্যবহার করার সময় কোনও চ্যালেঞ্জের মধ্যে এই সমস্ত রেইগেক্স উত্তরগুলি দেখতে বিরক্তিকর হয়, যা কোনও প্রকারের রেজেক্সের অভাব রয়েছে। ;)

এটি অনলাইনে চেষ্টা করুন বা সমস্ত পরীক্ষার কেস যাচাই করুন

ব্যাখ্যা:

ðì            # Prepend a space before the (implicit) input
             # Pair it with the unmodified (implicit) input
   ε          # Map both to:
    3ô        #  Split them into parts of size 3
      ʒ       #  Filter these parts by:
       '-¢   '#   Where the amount of "-"
          2@  #   Is larger than or equal to 2
      }g      #  After the filter: take the length to get the amount of items left
            # After the map: get the maximum of the two
              # (which is output implicitly as result)



2

জাভা 8, 41 বাইট

s->(0+s+10).split(".--|--.|-.-").length-1

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

পোর্ট অফ @Arnauld এর জাভাস্ক্রিপ্ট উত্তর , যে ব্যতীত +0হয় +10মত ফিক্স পরীক্ষা ক্ষেত্রে ----। এটি প্রয়োজনীয় কারণ String#splitজাভাতে অন্তর্নির্মিত ডিফল্টরূপে খালি স্ট্রিংগুলি সরিয়ে ফেলবে। বিল্টিনে অতিরিক্ত পরামিতিsplit যুক্ত করে এটি পরিবর্তন করা যেতে পারে (যা 0ডিফল্টরূপেsplit একটি একক স্ট্রিং আর্গুমেন্টের সাথে -builtin)। ডক্স থেকে এই অতিরিক্ত পরামিতিটির ব্যবহার উদ্ধৃত করতে:

সীমা পরামিতি প্যাটার্নটি প্রয়োগ হওয়ার সময়টিকে নিয়ন্ত্রণ করে এবং ফলস্বরূপ অ্যারের দৈর্ঘ্যকে প্রভাবিত করে।
সীমা থাকলেএন হয় শূন্য চেয়ে বড় তারপর প্যাটার্ন সর্বাধিক প্রয়োগ করা হবেএন-1 বার, অ্যারের দৈর্ঘ্য এর চেয়ে বড় হবে না এন, এবং অ্যারের শেষ এন্ট্রিতে শেষ ম্যাচ করা ডিলিমিটারের বাইরে সমস্ত ইনপুট থাকবে।
যদিএনহয় অ ইতিবাচক তারপর প্যাটার্ন যতটা সম্ভব অনেক বার হিসাবে প্রয়োগ করা হবে এবং অ্যারে যে কোন দৈর্ঘ্যের হতে পারে।
যদিএনহয় শূন্য তারপর প্যাটার্ন যতটা সম্ভব অনেক বার হিসাবে প্রয়োগ করা হবে, এরে যে কোন দৈর্ঘ্যের থাকতে পারে, এবং পিছনের খালি স্ট্রিং পরিত্যাগ করা হবে

এর কারণে সাধারণত খালি স্ট্রিংগুলি অনুসরণ করে সমস্ত স্থায়ীভাবে .split("...",-1)ব্যবহার করা হয় এবং আমি এটি উত্তরটির জন্যও এটি ব্যবহার করতে পারতাম ( এটি অনলাইনে চেষ্টা করে দেখুন )। এই ক্ষেত্রে পরিবর্তন করতে দুই বাইট সংরক্ষণ , যদিও। :)+0+10,-1



0

কাঠকয়লা , 25 বাইট

Pθ↖Fθ¿›№KM-¹«⊞υωM³→»→⎚ILυ

এটি অনলাইন চেষ্টা করুন!লিঙ্কটি কোডটির ভার্জোজ সংস্করণ। ব্যাখ্যা:

Pθ↖

কার্সারটি না সরিয়ে প্ল্যাটফর্মটি মুদ্রণ করুন, তারপরে কার্সারটিকে উপরে এবং বামে সরান কারণ এটি প্রথম সম্ভাব্য জিমি অবস্থান।

Fθ

প্ল্যাটফর্মের অবস্থান হিসাবে যতটা জিমি সন্ধান করুন।

¿›№KM-¹

এই অবস্থানটিতে একাধিক প্ল্যাটফর্ম রয়েছে কিনা তা পরীক্ষা করে দেখুন।

«⊞υω

যদি তাই হয় তবে একটি বৈধ জিমি অবস্থান নোট করুন ...

M³→»

... এবং তিনটি অক্ষর ডানদিকে সরান যাতে জিমিগুলি ওভারল্যাপ না হয়।

অন্যথায় পরবর্তী সম্ভাব্য জিমি অবস্থানটি ডানদিকে একটি চরিত্র।

⎚ILυ

প্ল্যাটফর্ম এবং আউটপুট আবিষ্কারের পজিশনের গণনা সাফ করুন।



0

এলম 0.19, 108 বাইট

import Regex as R
f p=List.length<|R.find(Maybe.withDefault R.never<|R.fromString".--|-.-|--.")(" "++p++" ")

আরনল্ডের জাভাস্ক্রিপ্ট উত্তরের রেজেক্সের ভিত্তিতে । সমস্ত পরীক্ষার কেসগুলি এখানে যাচাই করুন

রেগেক্স ছাড়াই বিকল্প সমাধান, 171 বাইটে উল্লেখযোগ্যভাবে দীর্ঘ :

f p=(String.foldl(\z{x,y,s,c}->let(t,d)=if s<1&&List.length(List.filter((==)'-')[x,y,z])>1 then(2,c+1)else(max 0 s-1,c)in{x=y,y=z,s=t,c=d}){x=' ',y=' ',s=0,c=0}(p++" ")).c

সমস্ত পরীক্ষার কেসগুলি এখানে যাচাই করুন

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