笔菠萝苹果笔…用自己的笔,菠萝和苹果


16

序幕:

这个挑战与“另一个猫计划”不同。
字面上有很多不同的曲折,为什么我不能拥有自己的人呢?
独特之处:

  • 它不是将直接输入读取为输出。
  • 它以肯定不是一只直猫的方式来操纵弦。

挑战:

给定3个输入(或一个输入,可按需分隔),将得到3个对象(单词),我们将在歌词和输出中代替笔,菠萝和苹果。

输出格式(根据AZLyrics上的歌词):

假设(用以下括号替换值):

  • 带输入词的A,B,C(例如apple
  • UA,UB,UC,输入单词带有首字母大写(如果还没有大写)(例如Apple
  • FUA,FUB,FUC分别具有第一个大写字母:(例如A
  • 附有与首字母元音/辅音有关的文章(例如an
[FUA]-[FUB]-[FUC]-[FUA]

我有[a / an] [A],我有[a / an] [C]。
h![UC]-[UA]!

我有[a / an] [A],我有[a / an] [B]。
h![UB]-[UA]!

[UC]-[UA],[UB]-[UA]。
h![UA]-[UB]-[UC]-[UA]。
[UA]-[UB]-[UC]-[UA]!

测试用例:

与测试penpineapple以及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的辅音为a还是其他“ 1pple”实例也应更改为“ apple”?
Officialaimm

@officialaimm将进行编辑,并采用第一个字符(在您的情况下为1)。
n4melyh4xor或2016年

13
我不应该用谷歌搜索这个。现在,它卡在了我的头上-_-
Gurupad Mamadapur

1
a / an规则将辅音/元音视为声音而不是字母。例如,您编写一个用户,而不是一个user。除非我们不应该为此挑战忽略“真实”规则,而只是看第一个字母,否则很难做到这一点。在这种情况下,应指定应将哪些字母视为元音。
丹尼斯

@丹尼斯,现在暂时忽略。
n4melyh4xor或16/12/17

Answers:


10

JavaScript(ES6),217 ... 187183字节

将输入作为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'恕我直言
Neil

4

Perl 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 answer相同的方法。


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 %.%s的从相应的命令行参数取代,然后将字符串a aa ea ia oa u是与等效替换an版本。的:u子程序处理的其他行; 它使用参数单词,并且所有首字母大写。(为使第一个单词成为大写字母,会在前面加上一个多余的空格,但会在输出时将其删除。)要处理-s 之后的单词,会传递多余的空格,但也会在输出时将其删除。该:u子例程也用于第一行,尽管提取首字母很麻烦。


3

Python的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('golf','puzzle','code')
输出:
GPCG

我有高尔夫球,我有密码。
h!高尔夫!

我有高尔夫球,我有一个难题。
h!拼图高尔夫球!

代码高尔夫球,拼图高尔夫球。
h!高尔夫球拼图代码高尔夫球。
高尔夫球拼图密码高尔夫球!
 

–版本是引入3.6字符串文字格式的地方。因此,这在早期版本中将不起作用。


不确定,但是由于您已经在长字符串中缩进了,所以我认为您可以使用实际的字符\ n并可以跳过三引号。
nedla2004'2013/

@ nedla2004使用'\ n'实际上会更长。跳过"只会节省2个字节,但\n会增加12个字节。
Gurupad Mamadapur

1

Lua,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

输入:penpineappleapple

输出:

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ɪᴋᴇʀ

1

Python 2,283字节

a=input()
r='0-1-2-0\n\n9 3, 9 5.\nUh! 8-6!\n\n9 3, 9 4.\nUh! 7-6!\n\n8-6, 7-6.\nUh! 6-7-8-6.\n6-7-8-6!'
for j in range(10):r=r.replace(str(j),([i[:1].upper()for i in a]+[['a ','an '][1+'aeiouAEIOU'.find(i[:1])/9]+i for i in a]+[i[:1].upper()+i[1:]for i in a]+['I have'])[j])
print r

在线尝试!

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.