पेन पाइनएप्पल एप्पल पेन… अपने पेन, अनानास और सेब के साथ


16

प्रस्तावना:

यह चुनौती "एक और बिल्ली कार्यक्रम" से अलग है।
अलग-अलग ट्विस्ट के शाब्दिक टन हैं, मैं अपना, लोगों का क्यों नहीं कर सकता?
अनोखी बातें:

  • यह आउटपुट के लिए प्रत्यक्ष इनपुट नहीं पढ़ रहा है।
  • यह एक तरह से स्ट्रिंग में हेरफेर कर रहा है, यह सुनिश्चित करने के लिए कि एक सीधा-सीधा बिल्ली नहीं है।

चुनौती:

दिए गए 3 इनपुट (या एक इनपुट, हालांकि आपको पसंद है) को तीन ऑब्जेक्ट्स (शब्द) मिलते हैं जो हम गीत और आउटपुट में पेन, अनानास और सेब के विकल्प के लिए जा रहे हैं।

आउटपुट प्रारूप ( AZLICE पर पाए गए गीत के अनुसार ):

मान लें (इन के साथ कोष्ठक के साथ मान बदलें):

  • ए, बी, के साथ इनपुट शब्द सी (उदा। apple)
  • UA, UB, UC बड़े अक्षरों वाले इनपुट शब्दों के साथ (यदि पहले से ही अपरकेस नहीं हैं) (उदा। Apple) ।
  • एफयूए, एफयूबी, एफयूसी क्रमशः पहले बड़े अक्षरों के साथ: (पूर्व। A)
  • a / पहले अक्षर स्वर / व्यंजन (पूर्व an) से संबंधित लेख के साथ
[FUA] - [FUB] - [fuc] - [FUA]

मेरे पास [/ a] [A] है, मेरे पास [/ a] [C] है।
उह! [यू सी] - [यूए]!

मेरे पास [/ a] [A] है, मेरे पास [/ a] [B] है।
उह! [यूबी] - [यूए]!

[यूसी] - [यूए], [यूबी] - [यूए]।
उह! [यूए] - [यूबी] - [यू सी] - [यूए]।
[यूए] - [यूबी] - [यू सी] - [यूए]!

परीक्षण का मामला:

के साथ परीक्षण pen, pineappleऔर apple:

P-P-A-P

I have a pen, I have an apple.
Uh! Apple-Pen!

I have a pen, I have a pineapple.
Uh! Pineapple-Pen!

Apple-Pen, Pineapple-Pen.
Uh! Pen-Pineapple-Apple-Pen.
Pen-Pineapple-Apple-Pen!

नियम:

  • यदि इनपुट एक पत्र से शुरू नहीं होता है, तो व्यंजन ( a) और पहले वर्ण (पूर्व 123 -> 1) को अपरकेस मानें ।
  • , पात्रों की सबसे कम राशि जीतती है!

1
कहते हैं कि हम कलम, अनानास और 1pple इनपुट करते हैं; क्या हमें केवल पहली पंक्ति PPAP के लिए व्यंजन मान लेना चाहिए या '1pple' के दूसरे उदाहरणों को 'Apple' में बदल देना चाहिए?
आधिकारिक

@officialaimm, संपादित करेगा, पहले चरित्र को मानें (आपके मामले में 1)।
n4melyh4xor

13
मुझे इस पर ध्यान नहीं देना चाहिए था। अब, यह मेरे सिर में अटक गया है -_-
गुरुपद ममदापुर

1
एक / एक नियम व्यवहार करता व्यंजन / के रूप में स्वर ध्वनियों नहीं पत्र। उदाहरण के लिए, आप लिखते हैं एक उपयोगकर्ता , नहीं एक उपयोगकर्ता । यह सही होना मुश्किल होगा, जब तक कि हमें इस चुनौती के लिए "वास्तविक" नियम की अनदेखी नहीं करनी चाहिए और केवल पहले अक्षर को देखना चाहिए। उस स्थिति में, आपको निर्दिष्ट करना चाहिए कि कौन से अक्षरों को स्वर माना जाना चाहिए।
डेनिस

@ डेनिस, अब के लिए अनदेखा करें।
n4melyh4xor

जवाबों:


10

जावास्क्रिप्ट (ईएस 6), 217 ... 187 183 बाइट्स

3 स्ट्रिंग्स की एक सरणी के रूप में इनपुट लेता है, जैसे ['pen', 'pineapple', 'apple']

a=>`0-1-2-0

6, 895-3!

6, 794-3!

5-3, 4-393-4-5-3.
3-4-5-3!`.replace(/\d/g,n=>[u=(w=a[n%3])[0].toUpperCase(),u+w.slice(1),`I have a${~'AEIOU'.search(u)?'n':''} `+w,`.
Uh! `][n/3|0])

उदाहरण


3
'golf', 'puzzle', 'code'IMHO
नील

4

पर्ल 6 , 165 बाइट्स

{"0-3-6-0

2, 897-1!

2, 594-1!

7-1, 4-191-4-7-1.
1-4-7-1!".subst: /\d/,->$x {((.tc.comb[0],.tc,"I have a{'n' if /:i^<[aeiou]>/} $_" for $_),".
Uh! ").flat[$x]},:g}

Arnauld के JS उत्तर के समान दृष्टिकोण का उपयोग करता है ।


3

बैच, 494 490 बाइट्स

@echo off
set s=%1
set t=%2
set u=%3
call:u %s:~,1%- %t:~,1%- %u:~,1%- %s:~,1%
echo(
call:h %1 %3
call:u Uh! %3- %1!
echo(
call:h %1 %2
call:u Uh! %2- %1!
echo(
call:u %3- %1, %2- %1.
call:u Uh! %1- %2- %3- %1.
call:u %1- %2- %3- %1!
exit/b
:h
set s=I have a %1, I have a %2.
for %%v in (a e i o u)do call set s=%%s:a %%v=an %%v%%
echo %s%
exit/b
:u
set s= %*
for %%u in (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z)do call set s=%%s: %%u= %%u%%
echo%s:- =-%

स्पष्टीकरण: :hसबरूटीन लाइन संभालती रों उचित कमांड लाइन तर्क से प्रतिस्थापित कर रहे हैं, और फिर तार , , , और बराबर के साथ बदलें हैं संस्करण। सबरूटीन अन्य लाइनों संभालती है; यह पैरामीटर शब्द और ऊपरी मामलों को सभी पहले अक्षर लेता है। (पहले शब्द को ऊपरी आवरण में रखने की अनुमति देने के लिए एक अतिरिक्त स्थान उपसर्ग किया जाता है, लेकिन इसे आउटपुट पर हटा दिया जाता है।) शब्दों को संभालने के लिए , अतिरिक्त स्थान पारित किए जाते हैं, लेकिन वे आउटपुट पर भी हटा दिए जाते हैं। सबरूटीन भी, पहली पंक्ति के लिए इस्तेमाल किया, हालांकि पहले अक्षर निकालने अजीब है।I have a %, I have a %.%a aa ea ia oa uan:u-:u


3

पायथन 3.6 - 351 287 286 बाइट्स

def x(a,b,c):t=(a,b,c);p,q,r=('a'+'n'*(i[0]in'aeiouAEIOU')for i in t);A,B,C=map(str.title,t);print(f"""{A[0]}-{B[0]}-{C[0]}-{A[0]}

I have {p} {a}, I have {r} {c}.
Uh! {C}-{A}!

I have {p} {a}, I have {q} {b}.
Uh! {B}-{A}!

{C}-{A}, {B}-{A}.
Uh! {A}-{B}-{C}-{A}.
{A}-{B}-{C}-{A}!""")

स्ट्रिंग शाब्दिक स्वरूपण की नई सुविधा का उपयोग करने के अलावा यहां कुछ भी फैंसी नहीं है।

इनपुट:
s ( 'गोल्फ', 'पहेली', 'कोड')
आउटपुट:
GPCG

मेरे पास एक गोल्फ है, मेरे पास एक कोड है।
उह! कोड-गोल्फ!

मेरे पास एक गोल्फ है, मेरे पास एक पहेली है।
उह! पहेली-गोल्फ!

कोड-गोल्फ, पहेली-गोल्फ।
उह! गोल्फ-पहेली-कोड-गोल्फ।
गोल्फ-पहेली-कोड-गोल्फ!
 

नोट - वह संस्करण है 3.6जहाँ स्ट्रिंग शाब्दिक स्वरूपण पेश किया गया था । इसलिए, यह पहले के संस्करणों में काम नहीं करेगा।


यकीन नहीं है, लेकिन जब से आप पहले से ही अपने लंबे स्ट्रिंग में इंडेंट कर रहे हैं, मुझे लगता है कि आप वास्तविक वर्णों का उपयोग कर सकते हैं और ट्रिपल कोट्स को छोड़ सकते हैं।
nedla2004

@ nedla2004 '\ n' का उपयोग करना वास्तव में लंबा होगा। स्किपिंग "से केवल 2 बाइट बचेंगे, लेकिन \n12 बाइट्स जुड़ेंगे।
गुरुपाद ममदापुर

1

लुआ, 615 607 बाइट्स

सहेजे गए 8 बाइट्स [एक गुमनाम उपयोगकर्ता] के लिए धन्यवाद

मट्ठा, लंबा। इसे यहाँ आज़माएँ।

w=io.read a,b,c=w(),w(),w()function d(u)if ("aeiouAEIOU"):find(z(u))~=nil then return "an" else return "a" end end function z(y)return y:sub(1,1):upper()end f=z(c)..c:sub(2).."-"..z(a)..a:sub(2).."-"..z(b)..b:sub(2).."-"..z(a)..a:sub(2)print(z(a).."-"..z(b).."-"..z(c).."-"..z(a).."\n\nI have "..d(a).." "..a..", I have "..d(c).." "..c..".\nUh! "..z(c)..c:sub(2).."-"..z(a)..a:sub(2).."!\n\nI have "..d(a).." "..a..", I have "..d(b).." "..b..".\nUh! "..z(b)..b:sub(2).."-"..z(a)..a:sub(2).."!\n\n"..z(c)..c:sub(2).."-"..z(a)..a:sub(2)..", "..z(b)..b:sub(2).."-"..z(a)..a:sub(2)..".\nUh! "..f..".\n"..f.."!")

मैं 100% निश्चित हूं कि इसे छोटा किया जा सकता है। मैं तो आलसी हूँ ।।

मूल रूप से बहुत सारे स्ट्रिंग हेरफेर का उपयोग करता है । 3 मुख्य कार्य और एक चर हैं:

  • d(string): यदि रिटर्न स्वर है ( AEIOUaeiou), तो रिटर्न एक
  • z(string): अपरकेस में पहला अक्षर लौटाता है
  • z(s) .. s:sub(2): पूरा शब्द देता है, लेकिन पहला अक्षर अपरकेस
  • f: अंत शब्द (एक चर में, कुछ बाइट्स को बचाने के लिए)। आपके परीक्षण के मामले में, यह होगा Pen-Pineapple-Apple-Pen

इनपुट: pen, pineapple,apple

आउटपुट:

P-P-A-P

I have a pen, I have an apple.
Uh! Apple-Pen!

I have a pen, I have a pineapple.
Uh! Pineapple-Pen!

Apple-Pen, Pineapple-Pen.
Uh! Pen-Pineapple-Apple-Pen.
Pen-Pineapple-Apple-Pen!

1
जो कोई भी अननोन उपयोगकर्ता था: कृपया गोल्फ लोगों के कोड में संपादन न करें। (बस अगर वे वापस आ जाते हैं)
Rɪᴋᴇʀ

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