Bút Dứa Táo Pen Pen với bút, dứa và táo của riêng bạn


16

Mở đầu:

Thử thách này khác với "chương trình mèo khác".
Có hàng tấn xoắn khác nhau, tại sao tôi không thể có người của riêng mình?
Những điều độc đáo:

  • Nó không đọc đầu vào trực tiếp đến đầu ra.
  • Nó đang điều khiển chuỗi theo cách mà chắc chắn không phải là một con mèo thẳng.

Thử thách:

Cho 3 đầu vào (hoặc một đầu vào, tách riêng theo cách bạn muốn) có ba đối tượng (từ) mà chúng ta sẽ thay thế cho bút, dứa và táo trong lời bài hát và đầu ra.

Định dạng đầu ra ( theo lời bài hát được tìm thấy trên AZLyrics ):

Giả sử (thay thế các giá trị bằng dấu ngoặc bằng các giá trị này):

  • A, B, C với các từ đầu vào (ví dụ apple)
  • UA, UB, UC với các từ đầu vào có chữ cái đầu tiên viết hoa (nếu chưa viết hoa) (ví dụ Apple)
  • FUA, FUB, FUC với các chữ cái viết hoa đầu tiên tương ứng: (ví dụ A)
  • a / an với bài viết tương ứng với nguyên âm / phụ âm đầu tiên (ví dụ an)
[FUA] - [FUB] - [FUC] - [FUA]

Tôi có [a / an] [A], tôi có [a / an] [C].
Ừ! [UC] - [UA]!

Tôi có [a / an] [A], tôi có [a / an] [B].
Ừ! [UB] - [UA]!

[UC] - [UA], [UB] - [UA].
Ừ! [UA] - [UB] - [UC] - [UA].
[UA] - [UB] - [UC] - [UA]!

Trường hợp thử nghiệm:

Thử nghiệm với pen, pineappleapple:

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!

Quy tắc:

  • Nếu đầu vào không bắt đầu bằng một chữ cái, giả sử phụ âm ( a) và chữ hoa đầu tiên là ký tự đầu tiên (ví dụ 123 -> 1).
  • , số lượng nhân vật thấp nhất sẽ thắng!

1
Hãy nói rằng chúng tôi nhập bút, dứa và 1pple; chúng ta có nên giả sử phụ âm chỉ cho PPAP dòng đầu tiên HOẶC các trường hợp khác của '1pple' cũng nên được đổi thành 'apple' không?
chính thức tuyên bố

@officialaimm, sẽ chỉnh sửa, giả sử ký tự đầu tiên (trong trường hợp của bạn là 1).
n4melyh4xor

13
Tôi không nên googled này. Bây giờ, nó bị mắc kẹt trong đầu tôi -_-
Gurupad Mamadapur

1
Quy tắc a / a coi phụ âm / nguyên âm là âm thanh không phải là chữ cái. Ví dụ, bạn viết một người dùng , không phải người dùng . Điều đó sẽ khó có thể đúng, trừ khi chúng ta nên bỏ qua quy tắc "thực sự" cho thử thách này và chỉ cần nhìn vào chữ cái đầu tiên. Trong trường hợp đó, bạn nên chỉ định những chữ cái nào sẽ được coi là nguyên âm.
Dennis

@Dennis, sẽ bỏ qua ngay bây giờ.
n4melyh4xor

Câu trả lời:


10

JavaScript (ES6), 217 ... 187 183 byte

Lấy đầu vào là một mảng gồm 3 chuỗi, chẳng hạn như ['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])

Ví dụ


3
'golf', 'puzzle', 'code'IMHO
Neil


3

Mẻ, 494 490 byte

@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:- =-%

Giải thích: Các :hchương trình con xử lý dòng I have a %, I have a %.Các %s được thay thế từ các đối số dòng lệnh thích hợp, và sau đó là chuỗi a a, a e, a i, a oa ulà thay bằng tương đương với anphiên bản. Chương :utrình con xử lý các dòng khác; nó lấy các từ tham số và viết hoa tất cả các chữ cái đầu tiên. (Một không gian bổ sung được thêm tiền tố để cho phép từ đầu tiên được đặt ở trên, nhưng nó bị xóa ở đầu ra.) Để xử lý các từ sau -s, các khoảng trắng thừa được chuyển qua, nhưng chúng cũng bị xóa ở đầu ra. Chương :utrình con cũng được sử dụng cho dòng đầu tiên, mặc dù việc trích xuất tên viết tắt rất khó xử.


3

Python 3.6 - 351 287 286 byte

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}!""")

Không có gì lạ mắt ở đây ngoại trừ việc sử dụng tính năng mới của định dạng chuỗi ký tự.

Đầu vào:
s ('golf', 'câu đố', 'mã')
Đầu ra:
GPCG

Tôi có một golf, tôi có một mã.
Ừ! Mã-Golf!

Tôi có một sân gôn, tôi có một câu đố.
Ừ! Câu đố-Golf!

Code-Golf, Puzzle-Golf.
Ừ! Golf-Puzzle-Code-Golf.
Golf-Puzzle-Code-Golf!
 

Lưu ý - Phiên bản là 3.6nơi định dạng chuỗi ký tự được giới thiệu . Do đó, điều này sẽ không hoạt động trong các phiên bản trước.


Không chắc chắn, nhưng vì bạn đã thụt vào chuỗi dài của mình, tôi nghĩ rằng bạn có thể sử dụng các ký tự thực tế và có thể bỏ qua ba dấu ngoặc kép.
nedla2004

@ nedla2004 Sử dụng '\ n' sẽ thực sự dài hơn. Bỏ qua "sẽ chỉ lưu 2 byte, nhưng \nsẽ thêm 12 byte.
Gurupad Mamadapur

1

Lua, 615 607 byte

Đã lưu 8 byte nhờ [một người dùng ẩn danh]

Whew, dài một. Hãy thử nó ở đây.

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.."!")

Tôi chắc chắn 100% điều này có thể được rút ngắn. Tôi chỉ lười biếng ..

Về cơ bản sử dụng rất nhiều thao tác chuỗi. Có 3 chức năng chính và một biến:

  • d(string): trả về một chuỗi if là nguyên âm ( AEIOUaeiou), khác trả về một
  • z(string): trả về chữ cái đầu tiên viết hoa
  • z(s) .. s:sub(2): trả về toàn bộ từ, nhưng chữ hoa đầu tiên
  • f: từ kết thúc (trong một biến, để lưu một số byte). Trong trường hợp thử nghiệm của bạn, nó sẽ được Pen-Pineapple-Apple-Pen.

Input: pen, pineapple,apple

Đầu ra:

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
Cho dù người dùng anon là ai: vui lòng không chỉnh sửa mã của người chơi gôn. (chỉ trong trường hợp họ quay lại)
Rɪᴋᴇʀ

1

Python 2 , 283 byte

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

Hãy thử trực tuyến!

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.