सुअर श्रृंखला की व्याख्या


13

एक पिग , सिकपिग , डेडपिग , क्विनेपिग या डेफपिग कार्यक्रम के इनपुट को देखते हुए , उन "भाषाओं" में से एक को यादृच्छिक रूप से चुनें और इनपुट को "भाषा" के रूप में व्याख्या करें।

पहले, बेतरतीब ढंग से "सुअर श्रृंखला" के पांच सदस्यों में से एक के बीच चयन करें:

  • सूअर

    यदि चुनाव सुअर का था, तो निम्नलिखित को करते हुए संदर्भ दुभाषिया की नकल करें :

    • PIGइनपुट (केस-संवेदी) में शब्द की पहली घटना का पता लगाएं ।

    • यदि शब्द PIGइनपुट में प्रकट नहीं होता है, तो संदेश File must contain the string 'PIG'.और बाहर निकलें आउटपुट ।

    • अन्यथा, इनपुट स्ट्रिंग को पहली घटना पर विभाजित करें PIG। पहले PIGफ़ाइल के फ़ाइल नाम के साथ फ़ाइल की पहली घटना के बाद पाठ को आउटपुट करें PIG

      PIGआउटपुट में पाठ में समाहित किया जा सकता है (इसलिए, इनपुट का एक fooPIGbarPIGbazआउटपुट barPIGbazजिसे फ़ाइल कहा जाता है foo)।

    ध्यान दें कि संदर्भ दुभाषिया कमांड लाइन तर्क के माध्यम से इनपुट लेता है जो फ़ाइल नाम से पढ़ने के लिए निर्दिष्ट करता है। हालाँकि, आपका सबमिशन PPCG पर स्वीकृत किसी भी मानक विधि में इनपुट ले सकता है।

  • SickPig

    यदि पसंद SickPig था, तो Pig के समान निर्देशों का पालन करें। हालाँकि, PIGफ़ाइल के बाद पाठ लिखने के बजाय , निम्न सूची से यादृच्छिक रूप से चुनें

    GRUNT
    MOAN
    OINK
    BURP
    GROAN
    WHINE
    

    और आउटपुट फ़ाइल के बजाय। यह यादृच्छिक विकल्प पिछली पसंद से स्वतंत्र होना चाहिए (इसलिए, एक आउटपुट में GRUNT1/5 * 1/6 = 1/30 मौका होना चाहिए)।

  • DeadPig

    डेडपाइप सिकिपग की तरह है, लेकिन यह हमेशा बेतरतीब ढंग से एक स्ट्रिंग चुनने के बजाय निम्नलिखित स्ट्रिंग को आउटपुट करता है:

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

    QuinePig पिग की तरह है, लेकिन PIGफाइल के बाद टेक्स्ट लिखने के बजाय, यह फाइल को पूरा इनपुट लिखता है (इसलिए, इनपुट का फाइल में fooPIGbarPIGbazआउटपुट होना चाहिए )।fooPIGbarPIGbazfoo

  • DeafPig

    यदि पसंद DeafPig था, तो कुछ भी न करें। (सुअर बहरा है ... आप क्या उम्मीद करते हैं?)

विविध नियम:

  • "रैंडम" का अर्थ है कि प्रत्येक पसंद लगभग समान रूप से होने की संभावना है (इसलिए, सुअर का 90% समय चुनना और अन्य वेरिएंट केवल 2.5% समय अमान्य है)।

  • आप मान सकते हैं कि अनुरोधित फ़ाइल नाम हमेशा आपकी फ़ाइल प्रणाली के लिए मान्य होंगे (लेकिन उनमें स्थान हो सकते हैं, आदि)।

  • सुअर के सभी वेरिएंट के लिए, आपका कोड वैकल्पिक रूप से एकल अनुगामी न्यूलाइन को फ़ाइल में भी आउटपुट कर सकता है।

  • चूंकि यह , बाइट्स में सबसे छोटा कोड जीत जाएगा।


2
+1 क्या उम्मीद करते हैं?
डेनिस

क्या यादृच्छिक विकल्प पूरी तरह से समान होना चाहिए या 32768 स्वीकार्य है?
डेनिस

@ डेनिस परफेक्ट एकरूपता आवश्यक नहीं है, लेकिन प्रत्येक पसंद के पास लगभग समान संभावना होनी चाहिए (इसलिए एक बड़ी संख्या ठीक है)।
दरवाज़े

जवाबों:


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'."

फ़ाइल I / O का ऑनलाइन cuz काम नहीं करता है, लेकिन इसे यहां[content, filename] stdio के लिए आउटपुट करने का प्रयास करें


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 बाइट्स

डीईएफ जी (पी):
 आयात यादृच्छिक; f = random.randint; r = f (0,4); i = p.find ("पीआईजी")
 यदि आर:
    अगर i + 1: खुला (p [: i], "w")। ([0, p [i + 3:], ["GRUNT", "MOAN", "OINK", "BURP", "GROAN" लिखें) "," WHINE "] [f (0,5)]," आपका सुअर दुर्भाग्य से मर गया है। कृपया पुनः प्रयास करें। ", p] [r])
    और: प्रिंट "फ़ाइल में स्ट्रिंग 'PIG' होना चाहिए।"

अंतिम दो पंक्तियां एक टैब के साथ शुरू होती हैं, इसके बजाय प्रदान किए गए 4 स्थान।

फ़ंक्शन तर्क के रूप में इनपुट प्रोग्राम लेता है।


नमस्कार, जब मैं आपके प्रस्तुत करने के लिए बाइट्स गिनता हूं, तो मुझे 317 मिलते हैं। आप बाइट्स कैसे गिन रहे हैं?
ओगडे

1
@ ओगडे अंतिम दो पंक्तियों से पहले के चार स्थान वास्तव में टैब वर्ण हैं। (स्टैक एक्सचेंज, कोड ब्लॉक के भीतर रिक्त स्थान के साथ टैब की जगह हालांकि।)
दरवाज़े

@Doorknob आह, ठीक है! वह यही होगा। मुझे आश्चर्य है कि क्यों रिक्त स्थान बाहर नहीं थे।
ओगडे

के बाद की अवधि होनी चाहिए 'PIG'
लीजियनममाल 978

@ 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==.मेरी ओर से प्रेरणा की एक झलक थी।

संपादित करें: @ C SavO'Bʀɪᴇɴ के लिए 3 बाइट्स सहेजे गए। @ EʀɪᴋᴛʜᴇG 1 के लिए 1 बाइट का धन्यवाद सहेजा गया।


क्यों @echo on? क्या ऐसा नहीं किया गया है? शायद तुम्हारा मतलब @echo off?
कॉनर ओ'ब्रायन

इसके अलावा, एक यादृच्छिक संख्या उत्पन्न करने के लिए, SET/A r=%RANDOM%%%5कम है।
कॉनर ओ'ब्रायन

@ C @O'Bʀɪᴇɴ Ugh, मेरा मतलब था @echo offलेकिन मैं डीबग कर रहा था ...% RANDOM% टिप के लिए भी धन्यवाद, मैंने उस एक के बारे में नहीं सुना था।
नील

@ C @O'Bʀɪᴇɴ दुख की बात यह है कि %RANDOM%संस्करण को मुझे एक अतिरिक्त का उपयोग करने की आवश्यकता है, set /aजो 10 बाइट्स लंबे समय तक समाप्त होता है।
नील

लेकिन आप पहले से ही उपयोग कर रहे हैं set/a...?
Conor O'Brien
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.