পিগ সিরিজের ব্যাখ্যা দিন


13

একটি পিগ , সিকপিগ , ডেডপিগ , কুইনপিগ , বা ডিফপিগ প্রোগ্রামের একটি ইনপুট দেওয়া , যেকোন "ভাষা" র্যান্ডমভাবে বেছে নিন এবং ইনপুটটিকে "ভাষা" হিসাবে ব্যাখ্যা করুন।

প্রথমে, "পিগ সিরিজ" এর পাঁচ সদস্যের মধ্যে যেকোন একটিতে এলোমেলোভাবে চয়ন করুন:

  • শূকর

    পছন্দটি যদি পিগ হয় তবে নিম্নলিখিতটি করে রেফারেন্স ইন্টারপ্রেটারকে নকল করুন :

    • ইনপুটটিতে শব্দের প্রথম উপস্থিতিটি সন্ধান PIGকরুন (কেস-সংবেদনশীল)।

    • শব্দটি যদি PIGইনপুটটিতে না উপস্থিত হয় তবে বার্তাটি আউটপুট করুন File must contain the string 'PIG'.এবং প্রস্থান করুন।

    • অন্যথায়, ইনপুট স্ট্রিংটির প্রথম উপস্থিতিতে ভাগ করুন PIG। পাঠ্যটির PIGআগে কোনও ফাইলের নামের সাথে কোনও ফাইলের প্রথম উপস্থিতির পরে পাঠ্যটিকে আউটপুট দিন PIG

      PIGআউটপুট হতে পাঠ্যে অন্তর্ভুক্ত থাকতে পারে (সুতরাং, একটি ফাইলের কাছে fooPIGbarPIGbazআউটপুট হওয়া উচিত )।barPIGbazfoo

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

  • SickPig

    পছন্দটি সিকপিগ থাকলে পিগের মতো একই নির্দেশাবলী অনুসরণ করুন। তবে PIGফাইলটি লেখার পরে লেখার পরিবর্তে নিম্নলিখিত তালিকা থেকে এলোমেলোভাবে বেছে নিন

    GRUNT
    MOAN
    OINK
    BURP
    GROAN
    WHINE
    

    এবং পরিবর্তে যে ফাইল থেকে আউটপুট। এই এলোমেলো পছন্দটি অবশ্যই পূর্ববর্তী পছন্দ থেকে স্বতন্ত্র হতে হবে (সুতরাং, একটি আউটপুটটির GRUNTসামগ্রিকভাবে 1/5 * 1/6 = 1/30 সুযোগ থাকা উচিত)।

  • DeadPig

    ডেডপিগটি সিকপিগের মতো, তবে এটি এলোমেলোভাবে স্ট্রিংটি বেছে নেওয়ার পরিবর্তে সর্বদা নিম্নলিখিত স্ট্রিংটিকে আউটপুট দেয়:

    Your pig has unfortunately died. Please try again.
    
  • QuinePig

    কুইনপিগটি পিগের মতো, তবে PIGফাইলটির পরে পাঠ্য লেখার পরিবর্তে এটি পুরো ইনপুটটি ফাইলে লিখে দেয় (সুতরাং, একটি ইনপুট হওয়া fooPIGbarPIGbazউচিত fooPIGbarPIGbazএকটি ফাইলের আউটপুট হওয়া উচিত foo)।

  • DeafPig

    পছন্দটি যদি ডেফপিগ থাকে তবে কিছুই করবেন না। (শূকরটি বধির ... আপনি কী আশা করবেন?)

বিবিধ বিধি:

  • "এলোমেলো" অর্থ প্রতিটি পছন্দ মোটামুটি সমান সম্ভাবনা হওয়া উচিত (সুতরাং, পিগ নির্বাচন 90% সময় এবং অন্যান্য রূপগুলি কেবলমাত্র 2.5% সময় অবৈধ)।

  • আপনি ধরে নিতে পারেন যে অনুরোধ করা ফাইলের নামগুলি সর্বদা আপনার ফাইল সিস্টেমের জন্য বৈধ থাকবে (তবে সেগুলিতে স্পেস ইত্যাদি থাকতে পারে)।

  • পিগের সমস্ত ভেরিয়েন্টের জন্য, আপনার কোড optionচ্ছিকভাবে ফাইলটিতে একটি একক ট্রেইলিং নিউলাইনও আউটপুট দিতে পারে।

  • যেহেতু এটি , তাই বাইটের মধ্যে সংক্ষিপ্ততম কোডটি জিতবে।


2
+1 আপনি কী আশা করেন?
ডেনিস

এলোমেলো পছন্দটি কি পুরোপুরি অভিন্ন হতে হবে বা 32768 মোডিং গ্রহণযোগ্য?
ডেনিস

@ ডেনিস পারফেক্ট অভিন্নতা প্রয়োজনীয় নয়, তবে প্রতিটি পছন্দের প্রায় সমান সম্ভাবনা থাকতে হবে (সুতরাং মোড একটি বড় সংখ্যা ঠিক আছে)।
ডুরকনব

ওহো ... আমি লিখেছেন পিগ ব্যাখ্যাকারী ...
LegionMammal978

উত্তর:


1

পাইথ - 157 বাইট

স্ট্রিং সংক্ষেপণ করা হবে।

?}J"PIG"z?=GO[jJtKczJOc"GRUNT MOAN OINK BURP GROAN WHINE"d"Your pig has unfortunately died. Please try again."z0).wGhK.q"File must contain the string 'PIG'."

আই / ও ফাইল অনলাইন কিউজে কাজ করে না, তবে এটি এখানে[content, filename] স্টডিওতে আউটপুট দেওয়ার চেষ্টা করুন


6

বাশ, 251 246 বাইট

r=$RANDOM
((r%5<4))||exit
[[ $1 =~ PIG ]]||(echo "File must contain the string 'PIG'.";exit)
s=(GRUNT MOAN OINK BURP GROAN WHINE)
m=("${1#*PIG}" ${s[r%6]}
"Your pig has unfortunately died. Please try again." "$1")
echo -n "${m[r%5]}">"${1%%PIG*}"

বধির শূকররা যদি কমপক্ষে পড়তে পারে তবে এটি অনেক ছোট হবে ...


4

পাইথন 2, 296 286 278 বাইট

ডিফ জি (পি):
 আমদানি র‌্যান্ডম; এফ = এলোমেলো.আরিন্দিন্ট; আর = ফ (0,4); আই = পি.ফাইন্ড ("পিআইজি")
 যদি আর:
    যদি আমি + 1: খুলি (পি [: i], "ডাব্লু")। লিখুন ([0, পি [i + 3:], ["গ্রান্ট", "মোয়ান", "ওঙ্ক", "বারপ", "গ্রাউন "," WHINE "] [চ (0,5)]," আপনার শূকর দুর্ভাগ্যক্রমে মারা গেছে Please দয়া করে আবার চেষ্টা করুন "", p] [r])
    অন্য: মুদ্রণ করুন "ফাইলটিতে অবশ্যই 'পিআইজি' স্ট্রিং থাকতে হবে" "

শেষ দুটি রেখাটি 4 টি স্থান ফাঁকে ফাঁকে পরিবর্তে একটি ট্যাব দিয়ে শুরু হয়।

ইনপুট প্রোগ্রামটিকে ফাংশন আর্গুমেন্ট হিসাবে গ্রহণ করে।


হ্যালো, আমি যখন আপনার জমা দেওয়ার বাইটগুলি গণনা করি তখন আমি 317 পাই you আপনি কীভাবে বাইটগুলি গণনা করছেন?
ওগাদে

1
@ ওগাদে শেষ দুটি লাইনের আগের চারটি স্থান আসলে ট্যাব অক্ষর। (স্ট্যাক এক্সচেঞ্জ যদিও কোড ব্লকের মধ্যে ফাঁকা জায়গাগুলির সাথে ট্যাবগুলিকে প্রতিস্থাপন করে))
ডুরকনব

@ ডুরকনব আহ, ঠিক আছে! এটা হবে। আমি অবাক হয়েছি কেন স্পেসগুলি গল্ফ করা হয়নি।
ওগাদে

এর পরে একটি পিরিয়ড হওয়া উচিত 'PIG'
LegionMammal978

@ LegionMammal978 ইঙ্গিতটির জন্য ধন্যবাদ, সম্পূর্ণতা এটি মিস করেছে।
ডেনকার

2

ব্যাচ, 409 406 405 বাইট

@echo off
set/ar=%random%%%5
if 0==%r% exit/b
set p=x%1
set q=%p:*PIG=%
if %q%==%p% echo File must contain the string 'PIG'.&exit/b
set p=%1
call set p=%%p:PIG%q%=%%
goto %r%
:1
echo %q%>%p%
exit/b
:2
for %%a in (GRUNT.0 MOAN.1 OINK.2 BURP.3 GROAN.4 WHINE.5)do if %%~xa==.%time:~6,1% echo %%~na
exit/b
:3
echo Your pig has unfortunately died. Please try again.>%p%
exit/b
:4
echo %1>%p%

দুঃখজনকভাবে %p:*PIG=%ব্যর্থ হয় যদি পি ফাঁকা হয়, এইভাবে x%1হ্যাক। call setসক্ষমের ডিলেডিপেক্সেশন এড়ানোর একটি দুর্দান্ত উপায় যা আমি স্ট্যাক ওভারফ্লোতে পেয়েছি; যখন %%~xa==.আমার পক্ষ থেকে অনুপ্রেরণার ঝলক ছিল।

সম্পাদনা করুন: @ কোওবি'র জন্য 3 বাইট সংরক্ষিত @ EʀɪᴋᴛʜᴇGᴏʟғᴇʀ এর জন্য 1 বাইট সংরক্ষণ করা হয়েছে ᴏʟғᴇʀ


কেন @echo on? তা কি সুস্পষ্টভাবে করা হয় না? সম্ভবত আপনি বোঝানো হয়েছে @echo off?
কনর ও'ব্রায়েন

এছাড়াও, একটি এলোমেলো সংখ্যা তৈরির SET/A r=%RANDOM%%%5জন্য সংক্ষিপ্ত।
কনর ও'ব্রায়েন

@ কো'বাউ উগ, আমি বলতে চাইছিলাম @echo offকিন্তু আমি ডিবাগ করছিলাম ... এছাড়াও% র‌্যান্ডোম% টিপের জন্য ধন্যবাদ , আমি এটির কথা শুনিনি।
নিল

@ কেওবিʀɪᴇɴ দুঃখজনকভাবে %RANDOM%সংস্করণটির জন্য আমার একটি অতিরিক্ত ব্যবহার করতে set /aহবে যা 10 বাইট বেশি দীর্ঘ হয়।
নিল

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