কোন ভূত অনুপস্থিত?


25

এই চ্যালেঞ্জে, প্যাক ম্যান থেকে ভূতের একটি তালিকা দেওয়া হলে আপনাকে অবশ্যই আউটপুট দিতে হবে যা কোন ভূত অনুপস্থিত। আপনার এটি যতটা সম্ভব বাইটে করা উচিত

ইনপুট

ইনপুটটিতে একটি স্ট্রিং বা তালিকা থাকবে, যার মধ্যে একটি সংখ্যা ভূত থাকবে, যা অন্তর্ভুক্ত থাকতে পারে;

  • ব্লিঙ্কি
  • মিস
  • পিংকি
  • ক্লাইড

তবে ইনপুটটিতে প্যাক-ম্যান (সেই বিরামচিহ্ন সহ) অন্তর্ভুক্ত থাকতে পারে। সুতরাং, কোনও তালিকার আইটেমের সর্বাধিক পরিমাণ পাঁচটি হবে, যে কোনও ক্রমে। ধারণা করা যেতে পারে যে কোনও অবৈধ আইটেম তালিকায় থাকবে না

আউটপুট

আউটপুটটিতে একটি স্ট্রিং বা তালিকা থাকবে। এটি কোনও ক্রমে ইনপুটটিতে নেই এমন সমস্ত ভূতকে অন্তর্ভুক্ত করবে। তবে, প্যাক-ম্যান যদি ইনপুটটিতে থাকে তবে সমস্ত ভূত নিখোঁজ হিসাবে বিবেচিত হবে (কারণ সে সেগুলি খায়)।

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

input: Clyde
output: Blinky, Inky, Pinky
alternate output: Inky, Pinky, Blinky
or one of the other 4 permutations

input: Clyde, Blinky # or however you delimit it
output: Inky, Pinky
alt: Pinky, Inky

input: Pac-Man, Clyde
Output: Blinky, Inky, Pinky, Clyde
or you could output one of the other 23 permutations

input:[null]
Output: Blinky, Inky, Pinky, Clyde
or you could output one of the other 23 permutations

এটি কোডগল্ফ, সুতরাং বাইকাউন্টটি যত কম হবে তত ভাল।


যদি কোনও ভূত না থাকে তবে ইনপুটটি কি খালি স্ট্রিং, বা [null]?
Zizouz212

1
এটি একটি খালি স্ট্রিং।
ধ্বংসাত্মক লেবু

5
ইনপুট এবং আউটপুট ফর্ম্যাটগুলি কঠোরভাবে স্ট্রিংয়ের ধরণ রয়েছে, বা আমরা একটি তালিকা ব্যবহার করতে পারি? চশমাগুলি বলে যে তারা স্ট্রিং করছে তবে তারপরে সেগুলিকে তালিকা হিসাবে উল্লেখ করা হয়।
অ্যাটলোলজিস্ট

6
সাধারণ sensকমত্য হল যে জটিল / কঠোর ইনপুট এবং আউটপুট ফর্ম্যাটগুলি এড়ানো উচিত । শব্দ বিভক্ত করা এবং যোগদান করা কেবল কোডকে আরও দীর্ঘায়িত করে এবং এটি সত্যিকারের মূল চ্যালেঞ্জের সাথে কিছু যোগ করে না।
ডেনিস

1
প্যাক-ম্যান দিয়ে আউটপুট ভুল হয় না? আপনি কি স্পষ্ট করতে পারেন? ধন্যবাদ
হাস্তুর

উত্তর:


3

জেলি , 25 22 বাইট

Ff”-ȯ⁸“JLKqḤṢ&F⁻ı»ṣ⁶¤ḟ

এটি একটি monadic ফাংশন। I / O তালিকা আকারে রয়েছে। এটি অনলাইন চেষ্টা করুন!

কিভাবে এটা কাজ করে

Ff”-ȯ⁸“JLKqḤṢ&F⁻ı»ṣ⁶¤ḟ  Monadic link. Argument: A (list of strings)

F                       Flatten A.
 f”-                    Filter it with the string "-" to detect "Pac-Man".
    ȯ⁸                  Flat logical OR with A. This yields A if there is no '-'
                        in the input, the string "-" otherwise.
                    ¤   Combine the three links to the left into a niladic chain.
      “JLKqḤṢ&F⁻ı»        Yield "Blinky Inky Pinky Clyde", using Jelly's built-in
                          English dictionary.
                  ṣ⁶      Split at spaces to yield
                          ["Blinky", "Inky", "Pinky", "Clyde"].
                     ḟ  Filter-false; removing all elements from that list that
                        appear in A or "-". This is a noop if A contains "Pac-Man".

আপনি কোন অভিধানটি ব্যবহার করেছেন যা এতে "পিঙ্কি" ইত্যাদি রয়েছে? এক্সডি
কনর ও'ব্রায়েন

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

15

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

A`-
$
,;BliNClyde,INPiN
N
nky,
D`\w+,
.*;|,$

পেছনের লাইনফিডটি তাৎপর্যপূর্ণ। ইনপুট এবং আউটপুট কমা দ্বারা পৃথক করা হয়।

এটি অনলাইন চেষ্টা করুন! (প্রথম লাইন একটি লাইনফিড-বিচ্ছিন্ন পরীক্ষা স্যুট সক্ষম করে))

ব্যাখ্যা

আমি এত তাড়াতাড়ি রেটিনার সর্বশেষ সংযোজন (প্রতিলিপি পর্যায়ে) প্রদর্শন করতে সক্ষম হবে বলে আশা করি না তবে এটি এই চ্যালেঞ্জের জন্য সত্যই সহায়ক। :)

প্রথম পর্যায়: অ্যান্টি-গ্রেপ

A`-

অ্যান্টি-গ্রেপ পর্যায়গুলি প্রদত্ত রেজেক্সের সাথে মেলে এমন সমস্ত লাইন ফেলে দেয়। রেজেক্সটি ন্যায়সঙ্গত -এবং ইনপুটটি সর্বদা একক লাইন থাকে, সুতরাং ইনপুটটিতে যদি এটি থাকে তবে সমস্ত ভূতকে তাড়িয়ে দেয় Pac-Man

দ্বিতীয় পর্যায়: প্রতিস্থাপন

$
,;BliNClyde,INPiN

এটি কেবল স্থির স্ট্রিং যুক্ত করে ,;BliNClyde,INPiN। এটি কিছু পরিষ্কার-পরিচ্ছন্নতার পরে আউটপুটে ভূতের তালিকা হবে।

পর্যায় 3: প্রতিস্থাপন

N
nky,

নোট করুন যে আমরা তিনটি *nkyপ্রেতকে Nপূর্বের পর্যায়ে লিখেছি (এবং তাদের পরে কমা বাদ দিয়েছি) এবং এখন আমরা এই শর্টহ্যান্ডকে প্রসারিত করব যা কয়েকটা বাইট সংরক্ষণ করে। প্রতি একক ভূতের পরে এখন একটি কমা রয়েছে এবং সেমিকোলন দ্বারা পৃথক সমস্ত ভূতের তালিকা আমরা পেয়েছি।

মঞ্চ 3: নকল

D`\w+,

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

মঞ্চ 5: প্রতিস্থাপন

.*;|,$

আমরা স্ট্রিংয়ের শেষে সেমিকোলনের পাশাপাশি কমা হিসাবে সমস্ত কিছু মেলে এবং সেগুলি সরিয়ে ফেলি।


প্যাক ম্যান মামলার কী হবে?
মান কালি

2
@ কেভিনলউ-নোট কেনি প্রথম পর্বের ব্যাখ্যা দেখুন।
মার্টিন ইন্ডার

7

পাইথন 3, 75 বাইট

lambda s:[x for x in['Blinky','Inky','Pinky','Clyde']if(x in s)<1or'-'in s]

ইনপুট একটি কমা-বিভাজিত স্ট্রিং, এবং আউটপুট একটি তালিকা হবে।


4
if(x in s)<1অংশ চালাক না! +1
ড্যানিয়েল

6

জাভাস্ক্রিপ্ট ES6, 85 78 বাইট

বেনামে ফাংশন হিসাবে

a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)|a.some(v=>v[6]))

আজ আমি এই filterফাংশন সম্পর্কে জানতে পারি । মজা!

15 বাইট সংরক্ষিত নীলকে ধন্যবাদ

ব্যবহার:

(a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)||a.includes("Pac-Man")))(["Pac-Man"])
> ["Blinky","Inky","Pinky","Clyde"]
(a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)||a.includes("Pac-Man")))(["Pinky"])
> ["Blinky","Inky","Clyde"]
(a=>["Blinky","Inky","Pinky","Clyde"].filter(c=>!a.includes(c)||a.includes("Pac-Man")))([])
> ["Blinky","Inky","Pinky","Clyde"]

1
Pac-Manফিল্টারটির বাইরে বিশেষ কেসিংয়ের পরিবর্তে , আমি মনে করি আপনি a.includes("Pac-Main")||!a.includes(c)এটি ফিল্টার হিসাবে যুক্ত করতে পারেন , সেই সময়ে আপনার কেবলমাত্র একটি ব্যবহার রয়েছে gএবং তাই এটি ইনলাইন করে আপনার ব্লককে অভিব্যক্তিতে পরিণত করতে পারে যাতে returnবিবৃতি এড়ানো যায় না ।
নীল

নিল গ্রেট আইডিয়া আমি কেটে সক্ষম ছিল returnএবং {}এবং বাইট একটি টন সংরক্ষিত, ধন্যবাদ!
Charredgrass

আপনি নিজের কলগুলি (প্রথম) এবং (দ্বিতীয়) এর a.includesসাথে প্রতিস্থাপন করেও একটি বাইট সংরক্ষণ করতে পারেন । এছাড়াও, আমি মনে করি আপনি আপনার বুলিয়ান ফলাফলগুলিতে লজিকাল ওআর ( ) এর পরিবর্তে বিটওয়াইস ওআর ( ) ব্যবহার করে অন্য একটি বাইট সংরক্ষণ করতে পারেন । a[z="includes"]a[z]|||
এপসিলাররা

2
আসলে, যেহেতু Pac-Manদীর্ঘতম সম্ভব ইনপুট আছে (এবং অবৈধ ইনপুট অসম্ভব), আমরা জন্য পরীক্ষার করার জন্য একটি সপ্তম চরিত্রের অস্তিত্বের পরীক্ষা করতে পারেন Pac-Man: c=>!a.includes(c)||a.some(v=>v[6])। , Bitwise সঙ্গে 78. নিচে যে ব্যবহার বা এনেছে স্কোর
apsillers

@ অ্যাপসিলার ওহ, এটি দুর্দান্ত, কখনও দৈর্ঘ্য যাচাই করার কথা ভাবেননি। আমি বিটওয়াসে পরিবর্তিত হয়েছি বা এটিকে যুক্ত করেছি, ধন্যবাদ!
চারেডগ্রাস

3

রুবি, 55 49 বাইট

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

@ মার্টিনএেন্ডার থেকে -6 বাইট

->a{%w"Blinky Inky Pinky Clyde"-(a*''=~/-/?[]:a)}

রুবি অ্যারেগুলি বিয়োগ বিয়োগ করতে পারে, উপযুক্ত ভূতগুলি মুছে ফেলা খুব সহজ করে তোলে।


প্যাক-ম্যানের সাথে এই চুক্তি কীভাবে হয়?
নীল

@ নীল এটি ব্যবহার করে অ্যারের সাথে মিলিত হয় a*''এবং রেজেক্স- -নামের সাথে এটি বর্তমানের সাথে তুলনা করে Pac-Man। যদি এটি উপস্থিত থাকে তবে এটি ভূতের তালিকা থেকে কিছুই বিয়োগ করে না এবং যদি তা না হয় তবে এটি ইনপুট তালিকাটি বিয়োগ করে (সুতরাং ইনপুট তালিকার প্রতিটি উপাদান ভূতের তালিকা থেকে সরানো হয়)
মান কালি

3

পার্ল, 51 বাইট

50 বাইট কোড +1 এর জন্য -n

for$@(Blinky,Inky,Pinky,Clyde){print$@if/-/|!/$@/}g}

ব্যবহার

perl -ne 'for$@(Blinky,Inky,Pinky,Clyde){print$@if/-/|!/$@/}' <<< 'Pac-Man, Clyde'
BlinkyInkyPinkyClyde

আমি প্রয়োজনে আউটপুট সংশোধন করতে পারি, প্রতিটি ভূতের পরে একটি স্থান যোগ করে + 3 বাইট প্রতিস্থাপন print$@করতে পারি print"$@ "

-মোটিনইেন্ডারে ধন্যবাদ -6 বাইটস !


পার্ল, 53 বাইট

51 বাইট কোড + 2 এর জন্য -na

একটি বিকল্প সমাধান, স্মার্টমেচ অপারেটর ব্যবহার করে:

print grep/-/~~@F|!($_~~@F),Blinky,Inky,Pinky,Clyde

ব্যবহার

ইনপুটটির জন্য একটি স্থান পৃথকীকরণের তালিকা প্রয়োজন:

perl -nae 'print grep/-/~~@F|!($_~~@F),Blinky,Inky,Pinky,Clyde' <<< 'Clyde Pinky Inky'
Blinky
perl -nae 'print grep/-/~~@F|!($_~~@F),Blinky,Inky,Pinky,Clyde' <<< 'Clyde Pinky Inky Pac-Man'
BlinkyInkyPinkyClyde'

3

পাইথ - 45 38 35 বাইট

=GwI!:G"a")j-["inky""pinky""blinky""clyde")cG

I!:=Gw"a")j-c:" p bl clyde"d"inky "dcG

j-c:" p bl clyde"d"inky "d?:z\aZYcz

-1 আরও বাইট ধন্যবাদ লিকি নুনকে!

ইনপুট অবশ্যই স্থান সীমিত করা উচিত, সমস্ত ছোট হাত; প্যাক-ম্যান ইনপুটটিতে না থাকলে পৃথক লাইনে অনুপস্থিত ভূতগুলিকে আউটপুট দেয়।


আপনি "প্যাক-ম্যান" ভুলে গেছেন
জ্যাক মারাইস

পছন্দ করুন ইনপুটটিতে "a" আছে কিনা তা জেড \ একটি সনাক্ত করে এবং যদি
ইনপুটটিতে

আমি পাইথ লিঙ্কটি ক্লিক করেছি এবং আমি "প্যাক-ম্যান" এ প্রবেশ করার পরে এটি কার্যকর হয়নি। যখন "প্যাক-ম্যান" প্রবেশ করা হয়, তখন এটি সমস্ত নাম প্রদর্শন করা উচিত, তাদের কোনওটিই নয়।
জ্যাক মারাইস

পছন্দ করুন সংশোধন করা হয়েছে।
কোরিয়ানওয়ালা চশমা

}\azzচিঠি রয়েছে কিনা পরীক্ষা করে a। 1 বাইট সংক্ষিপ্ত।
জাকুবে

3

সি, 171 বাইট

এতে নুল-টার্মিনেটেড অ্যারেটি পাস করুন f()এবং এটি অনুপস্থিত নামগুলি মুদ্রণ করবে।

*a[]={"Blinky","Inky","Pinky","Clyde",0},**s,**r,n;f(int**p){for(r=p;*p;)r=strcmp(*p++,"Pac-Man")?r:a+4;for(s=a;*s;++s){for(p=r,n=1;n&&*p;)n=strcmp(*s,*p++);n&&puts(*s);}}

আদর্শে এটি চেষ্টা করুন।


2

পাওয়ারশেল ভি 4 +, 107 বাইট

param($n)((($n+($x='Pinky','Inky','Blinky','Clyde')|group|?{$_.count-eq1}).Name),$x)['-'-in[char[]]-join$n]

অন্যের তুলনায় কিছুটা ক্লানকি যেমন পাওয়ারশেলের কাছে টেরিনারি অপারেটর বা কোনও ধরণের mapস্টাইল অপারেটরের অভাব রয়েছে । ফলস্বরূপ, আমরা আমাদের নিজস্ব তৈরি।

$nস্ট্রিংগুলির সুস্পষ্ট অ্যারে হিসাবে ইনপুট নেয় (উদাহরণস্বরূপ, .\which-ghosts-are-missing.ps1 @('Clyde','Blinky')প্রোগ্রামের বাকি অংশটি একটি সিউডো-টের্নারি যা এমন একটি অ্যারে সমন্বিত থাকে যা আমরা কিছু যুক্তির মাধ্যমে সূচক করি [...]। যুক্তিটি হ'ল -অক্ষরটি ইনপুট অ্যারে -joinএডিটিতে একসাথে একসাথে রয়েছে কিনা তা যুক্তিযুক্ত কিনা log অপারেটরটি charব্যবহার করার জন্য একটি একক স্ট্রিং এবং তারপরে অ্যারে হিসাবে পুনরায় কাস্ট করুন , -inসুতরাং, যদি Pac-Manইনপুট অ্যারে থাকে তবে এটি হবে $TRUEএবং সিউডো-টের্নারি অ্যারের দ্বিতীয় উপাদানটি বেছে নেওয়া হবে, অন্যথায় প্রথমটি হবে বেছে নেওয়া।

যদি এটি Pac-Manঅ্যারেতে না হয় তবে সিউডো-টের্নারি অ্যারের প্রথম অংশটি আউটপুট। এটি $nসমস্ত ভূতের একটি অ্যারে (এতে সংরক্ষণ করা $x) দিয়ে একচেটিয়াভাবে ইনপুট অ্যারের সংমিশ্রণ । আমরা পাইপ যে নতুন অ্যারের মধ্যে Group-Objectযা আইটেম ভালো লাগবে গ্রুপ একসঙ্গে, তারপর ব্যবহার নির্বাচন Where-Object(মাধ্যমে ওরফে |?{...}শুধুমাত্র আইটেম যেখানে তাদের .countহয় -eqকরতে ual 1। যে সমস্ত একটি বাম বন্ধনী মধ্যে encapsulated, এবং আমরা নির্বাচন .Nameসম্পত্তি। এই যেখানে V4 প্রয়োজন আসে, ভি 4 এর অধীনে আপনি এর মতো কোনও হ্যাশটেবল লেবেল উল্লেখ করতে পারেন |Select Nameযা কিছু বাইট সংরক্ষণ করে।

অন্যথায়, যেহেতু Pac-Manইনপুট অ্যারেতে রয়েছে তাই আমাদের সমস্ত ভূতকে আউটপুট করতে হবে। ধন্যবাদ আমরা ইতিমধ্যে সেগুলিতে সংরক্ষণ করেছি $x, তাই এই ক্ষেত্রে এটি পছন্দ। যেভাবেই হোক, পাইপলাইনে এখন ভুতের একটি স্ট্রিং অ্যারে রয়েছে এবং আউটপুট অন্তর্ভুক্ত।

উদাহরণ

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @('Clyde')
Pinky
Inky
Blinky

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @('Pac-Man','Clyde')
Pinky
Inky
Blinky
Clyde

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @()
Pinky
Inky
Blinky
Clyde

PS C:\Tools\Scripts\golfing> .\which-ghosts-are-missing.ps1 @('Clyde','Blinky')
Pinky
Inky

2

পাইথন 2, 66 61 96 বাইট

g={"Blinky","Inky","Pinky","Clyde"};i=set(input());print",".join(g-i if not"Pac-Man"in i else g)

ইনপুট অবশ্যই একটি তালিকা হতে হবে, আউটপুট হবে নামের দ্বারা পৃথক করা একটি স্ট্রিং ,

61 বাইট সংস্করণ যা প্যাক ম্যান হ্যান্ডেল করে না:

print",".join({"Blinky","Inky","Pinky","Clyde"}-set(input()))

8
এই এন্ট্রিটিতে প্যাক ম্যান পরিচালনা করা হয় না।
ধ্বংসাত্মক লেবু

আপনি প্রয়োজন হবে না set[...]। শুধু একটি {...}সেট আক্ষরিক ব্যবহার করুন ।
ডেনিস

3 বার চ্যালেঞ্জ পড়ার পরেও আমি প্যাক-ম্যান জিনিসটি সত্যিই লক্ষ্য করিনি ... আমি আমার কোডটি ঠিক করব।
অ্যাক্রোলিথ

2

হাস্কেল, 91 বাইট

import Data.List
p l=(if elem"Pac-Man"l then id else(\\l))["Blinky","Inky","Pinky","Clyde"]

ইনপুট স্ট্রিংগুলির একটি তালিকা। "প্যাক-ম্যান" উপস্থিতির উপর ভিত্তি করে তালিকাটি যেমন রয়েছে তেমন ব্যবহার করতে হবে বা তালিকা-পার্থক্য করা হবে তা সিদ্ধান্ত নেয়।

অতিরিক্ত মজাদার জন্য, এখানে কোনও প্যাক ম্যান নেই:

import Data.List
(["Blinky","Inky","Pinky","Clyde"]\\)

এই উত্তরটি শীঘ্রই উন্নত করা হবে, গভীর রাতে কি এটি করেছে।


2

পাইথন 3, 77 বাইট

lambda i:[g for g in"Blinky Inky Pinky Clyde".split()if g not in i or"-"in i]

এখানে 89 টি বাইটের সাথে আরেকটি উত্তর দেওয়া হয়েছে যা আমি খেলছিলাম তবে কার্যকর হয়নি :(

lambda i:[g for g in[s+"nky"for s in"Bli I Pi".split()]+["Clyde"]if g not in i or"-"in i]

এবং এখানে 85 বাইটে আসলটি রয়েছে:

lambda i,n="Blinky Inky Pinky Clyde":([g for g in n.split()if g not in i],n)["-"in i]

এগুলি সমস্ত জায়গাগুলি / কমা দ্বারা পৃথক করা নামের একটি স্ট্রিং নেয়।



2

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

ইতিমধ্যে সেট এবং স্ট্রিং ব্যবহার করে পাইথনের উত্তর রয়েছে বলে আমি নিজেকে তালিকা সহ কাজ করতে সীমাবদ্ধ রাখার সিদ্ধান্ত নিয়েছি, যা পরিণত হয়েছে বেশ দীর্ঘ এবং আপত্তিহীন। তবে গৃহীত পদ্ধতির ব্যবহার যেমন সাধারণ হিসাবে ব্যবহৃত হয় তেমনি এটি ভিন্ন here

o=['Blinky','Clyde','Inky','Pinky']
p=lambda x:[l for l in reduce(lambda z,x:z+[y+[x]for y in z],o,[[]])if sorted(l+x)==o][0]if'Pac-Man'not in x else o

যেখানে প্রত্যাশিত ইনপুটটি স্ট্রিংগুলির একটি তালিকা।

0,1,2,3 এবং 4 টি উপাদানের সম্ভাব্য সমস্ত সংমিশ্রণগুলি (বিবেচনায় না নেওয়ার ক্ষেত্রে) হ'ল পদ্ধতিটি হ'ল। এটি দ্বারা করা হয়

reduce(lambda z,x:z+[y+[x]for y in z],o,[[]])

যা ফিরে আসে

[[], ['Clyde'], ['Pinky'], ['Clyde', 'Pinky'], ['Inky'], ['Clyde', 'Inky'],
['Pinky', 'Inky'], ['Clyde', 'Pinky', 'Inky'], ['Blinky'], ['Clyde', 'Blinky'],
['Pinky', 'Blinky'], ['Clyde', 'Pinky', 'Blinky'], ['Inky', 'Blinky'],
['Clyde', 'Inky', 'Blinky'], ['Pinky', 'Inky', 'Blinky'], 
['Clyde', 'Pinky', 'Inky', 'Blinky']]

এবং ইনপুট তালিকাগুলি ছাড়াও ভূতগুলির সম্পূর্ণ তালিকায় ফলাফল খুঁজে পান।

তারপরে স্ট্রিংটি ইনপুটটির 'Pac-Man'অংশ কিনা তা পরীক্ষা করা হয় এবং যদি এটি হয় তবে ভূতের পুরো তালিকাটি ফিরে আসে। যদি তা না হয় তবে কেবলমাত্র ইনপুট অংশ নয় এমনগুলি ফিরে আসে।

লক্ষ্য করুন যে সমস্ত ভুতের নাম ( o) রয়েছে সে তালিকাটি বর্ণানুক্রমিকভাবে বাছাই করা হয়েছে এবং ( sorted(l+x)) হিসাবে নির্মিত তালিকার জন্য একই রয়েছে । বাস্তবে দেখা যায় যে পাইথন এ, কারণে ['a','b']==['b','a']যেমন মূল্যায়ন করা হয় Falseযেহেতু ['a','b']==['a','b']হিসাবে মূল্যায়ন করা হয় True

তালিকাগুলির তালিকা হিসাবে উত্তরটি ফেরত দেওয়ার অনুমতি পেলে ( [0]প্রথম তালিকার বোঝার শেষে অপসারণ করে ) 3 বাইট সংরক্ষণ করা যায় । তবে আমি নিশ্চিত না যে এটি একটি বৈধ আউটপুট আমি তাদের গণনা করছি।


2

অবজেক্ট প্যাসকাল, 204 200 বাইট

দুটি ভূত, বাইনারি ব্যবহার করে কোন ভূত + প্যাসম্যান উপস্থিত রয়েছে তা সন্ধান করতে। কমান্ডলাইন থেকে আর্গুমেন্ট নেয়। আরও কিছু বাইট সংরক্ষণের জন্য @ মান্যাটওয়ার্ককে ধন্যবাদ!

var a:array[1..4]of string=('Blinky','Inky','Pinky','Clyde');i,s:Byte;begin for i:=1to ParamCount do s:=1<<Pos(ParamStr(i)[4],'nykd-')or s;for i:=1to 4do if(1<<i and s=0)or(s>31)then WriteLn(a[i])end.

Ungolfed:

var
  a: array[1..4] of string = ('Blinky', 'Inky', 'Pinky', 'Clyde');
  i, s: byte;
begin
  for i:=1 to ParamCount do
    s := 1 << pos(ParamStr(i)[4], 'nykd-') or s; // fill bits by shifting, check for unique 4th char of names, '-' in 'pac-man', could also use the 3rd char
  for i:=1 to 4 do
    if (1 << i and s=0) or (s>31) then    // check if bits are on
      writeln(a[i]);
end.

একটি সেট 222 209 বাইট ব্যবহার করে পুরানো সংস্করণ

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

var a:array[1..4]of string=('Blinky','Inky','Pinky','Clyde');i:byte;s:set of 1..5;begin for i:=1to ParamCount do s:=s+[pos(ParamStr(i)[4],'nykd-')];for i:=1to 4do if not(i in s)or(5in s)then writeln(a[i]);end.

Ungolfed:

var
  a: array[1..4] of string = ('Blinky', 'Inky', 'Pinky', 'Clyde');
  i: byte;
  s: set of 1..5;
begin
  for i:=1 to ParamCount do
    s := s + [pos(ParamStr(i)[4], 'nykd-')]; // fill set with indxs
  for i:=1 to 4 do
    if not(i in s) or (5 in s) then    // check indx not in set or pac-man is
      writeln(a[i]);
end.

খুশী হলাম। এটি সংক্ষিপ্ত করার কয়েকটি উপায়: integerbyte; এর ঘোষণাটি সরিয়ে ফেলুন gএবং এর মানটি সরাসরি ব্যবহার করুন, ParamCount5(আমি টাস্কটি বুঝতে পেরেছি, তবে কোনও নকল বা অবৈধ ইনপুট আইটেম থাকবে না)। FreePascal সাংখ্যিক লিটারেল মধ্যে অন্তত, কীওয়ার্ড স্পর্শ করতে পারে মত i:=1to 5doবা 5in s। আপনার এটিও সমর্থন করে কিনা তা দেখুন।
manatwork

আমি মনে করি পরিবর্তে বিট ব্যবহার setকরা উপকারী হবে: পেস্টবিন.
com

@ মান্যাটওয়ার্ক বাহ, প্রতিটি সময় আমি নতুন কিছু শিখি .. আমি আপনার পরামর্শগুলি ব্যতীত ব্যবহার করছি ParamCount, কারণ আচরণটি বৃহত সংখ্যক প্রকৃত ইনপুট প্যারামগুলির জন্য অন্তর্ধারিত (কমপক্ষে ডক্সে এটি সম্পর্কে কিছুই নেই), যদিও এটি কাজ করে।
hdrz

1

পিএইচপি প্রোগ্রাম, 84 বাইট

<?print_r(array_diff([Blinky,Inky,Pinky,Clyde],in_array('Pac-Man',$argv)?[]:$argv));
  • কমান্ড লাইন থেকে আর্গুমেন্ট নেয়, অ্যারের হিসাবে ফলাফল মুদ্রণ করে।
  • ফাইলের নাম অবশ্যই কোনও ভূত বা 'প্যাক-ম্যান' নয়!
  • সংক্ষিপ্ত ভাঙ্গন: সমস্ত ভূত থেকে সরান (যদি 'প্যাক ম্যান' আর্গুমেন্টে থাকে: কিছুই না, সমস্ত আর্গুমেন্ট); পুনরাবৃত্তি মুদ্রণ ফলাফল

উদাহরণ:

>php -d error_reporting=0 ghosts.php Clyde
Array
(
    [0] => Blinky
    [1] => Inky
    [2] => Pinky
)
>php -d error_reporting=0 ghosts.php Clyde Blinky
Array
(
    [0] => Inky
    [1] => Pinky
)
>php -d error_reporting=0 ghosts.php Pac-Man Clyde
Array
(
    [0] => Blinky
    [1] => Inky
    [2] => Pinky
    [3] => Clyde
)

পিএইচপি ফাংশন, 90 বাইট

function p($a){return array_diff([Blinky,Inky,Pinky,Clyde],in_array('Pac-Man',$a)?[]:$a);}

অ্যারে নেয় এবং ফেরত দেয়, খালি ইনপুটটির জন্য খালি অ্যারে ব্যবহার করুন, অন্য কোনও মিথ্যা মান নেই!

আরও চিন্তা

  • in_array(...)সঙ্গে প্রতিস্থাপনstrstr(join($argv),'-')(-2) এর -পরিবর্তে সনাক্তকরণেরPac-Man
  • ereg('-',join($argv))পরিবর্তে ব্যবহার করুন (অন্য -2)
  • প্রোগ্রামটি পিএইচপি <5.4 এর সাথে আরও 6 বাইট হারাতে পারে register_globals উপর
  • প্রোগ্রামটি কমা-বিচ্ছিন্ন তালিকা মুদ্রণ করতে: (+2) এর <?print_r(সাথে প্রতিস্থাপন করুন <?=join(',',;echo""লাইন বিরতির জন্য আপনি কলটিতে যোগ করতে চাইতে পারেন

1

jq, 69 টি অক্ষর

("Blinky Inky Pinky Clyde"/" ")as $a|if inside($a)then$a-. else$a end

ইনপুটটি জেএসএন, আউটপুট জেএসএন, শর্তসাপেক্ষ সিনট্যাক্স ব্যথা।

নমুনা রান:

bash-4.3$ jq '("Blinky Inky Pinky Clyde"/" ")as $a|if inside($a)then$a-. else$a end' <<< '["Clyde"]'
[
  "Blinky",
  "Inky",
  "Pinky"
]

bash-4.3$ jq '("Blinky Inky Pinky Clyde"/" ")as $a|if inside($a)then$a-. else$a end' <<< '["Pac-Man","Clyde"]'
[
  "Blinky",
  "Inky",
  "Pinky",
  "Clyde"
]

অন-লাইন পরীক্ষা:


1

টিএসকিউএল (স্ক্লোসারভার 2016), 114 বাইট

Golfed:

DECLARE @ VARCHAR(99) = 'Blinky,Inky,Pinky,Clyde'

SELECT*FROM STRING_SPLIT('Blinky,Inky,Pinky,Clyde',',')EXCEPT SELECT*FROM STRING_SPLIT(@,','WHERE @ NOT LIKE'%-%'

Ungolfed:

DECLARE @ VARCHAR(99) = 'Blinky,Inky,Pinky,Clyde'

SELECT * FROM STRING_SPLIT('Blinky,Inky,Pinky,Clyde',',')
EXCEPT
SELECT * FROM STRING_SPLIT(@,',')
WHERE @ NOT LIKE'%-%'

বেহালা


1

কমল নোটস @ ফর্মুলা ভাষা, 85 84 75 74 টি অক্ষর

@IF অ্যাসাইনমেন্টটি উল্টিয়ে -1 অক্ষর

-9 @ কনটেইনস (i; "-") কে @ লাইক (i; "% -%") এ পরিবর্তন করা হয়েছে এবং @ ট্রিম সরানো হয়েছে (বিভাজন হিসাবে স্থান ব্যবহার করে যদি প্রয়োজন হয় না)

-1 নিউলাইনটি সরিয়ে দিয়ে

দুটি ক্ষেত্র সহ একটি ফর্ম তৈরি করুন: i (পাঠ্য, সম্পাদনাযোগ্য, বহু-মান) এবং ও (পাঠ্য, গণনা করা, বহুগুণ)। নিম্নলিখিত সূত্রটি ওয়ে লিখুন:

l:="Inky":"Pinky":"Blinky":"Clyde";@If(@Like(i;"%-%");l;@Replace(l;i;""))

নোট ক্লায়েন্ট থেকে, ফর্মটি ব্যবহার করে একটি নতুন ডকুমেন্ট তৈরি করুন, i ক্ষেত্রের মধ্যে নাম (গুলি) লিখুন এবং নথিটি রিফ্রেশ করতে F9 চাপুন। উত্তর ক্ষেত্রের মধ্যে প্রদর্শিত হয়।

এটি এই সত্যটির সুবিধা গ্রহণ করে যে @ লাইক এবং @ রিপ্লেস উভয়ই স্ট্রিং বা স্ট্রিংয়ের তালিকায় ব্যবহার করা যেতে পারে।


1

সি # 135 বাইট 126 বাইট

string[] g{"Blinky","Inky","Pinky","Clyde"};Console.WriteLine(String.Join(",",i.Contains("Pac-Man")?g:g.Except(i).ToArray()));

(যেখানে আমি ইনপুট যুক্ত স্ট্রিং অ্যারে)

অন্যান্য উদাহরণগুলি দেখার পরে, আমি দেখতে পাচ্ছি যে সি # বরং একটি ভার্ভোজ ভাষা :)


1
স্পেস এবং নিউলাইনটি সরিয়ে আপনি 126 বাইট পেতে পারেন।
এক্রোলিথ


1

ব্যাচ, 141 বাইট

@set g= Blinky Inky Pinky Clyde
@for %%a in (%*)do @if %%a==Pac-Man goto l
@for %%a in (%*)do call set g=%%g: %%a=%%
@l
@echo(%g:~1,-1%

( :~1,-1শীর্ষস্থানীয় এবং অনুসরণযোগ্য শ্বেতক্ষেত্র গ্রহণযোগ্য হলে এর জন্য 6 বাইট বিয়োগ করুন title) শিরোনাম ক্ষেত্রে প্যাক ম্যান প্রয়োজন তবে ভূতগুলি ক্ষেত্রে সংবেদনশীল।


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