Bố đùa là vui


49

Chúng ta đều biết trò đùa của người cha cổ điển giống như thế này:

  1. Ai đó nói một câu để mô tả bản thân của họ (ví dụ I'm tiredhoặc I'm confused).

  2. Một người say mê trò đùa cha đi cùng và trả lời Hi <adjective>, I'm Dad!, bởi vì phần giới thiệu có cùng định dạng ( I'm Petertheo cùng định dạng như I'm hungry).

Công việc của bạn là nhận một đầu vào dưới dạng tự mô tả và xuất ra hình thức trò đùa cha thích hợp, nhưng thay vì sử dụng từ "Bố", bạn sẽ sử dụng tên của ngôn ngữ lập trình bạn đang lập trình trong.

Các trường hợp thử nghiệm (giả sử rằng chúng đang được phân tích cú pháp bởi Python):

I'm amazing                  Hi amazing, I'm Python!
I'm tired                    Hi tired, I'm Python!
I'm hungry                   Hi hungry, I'm Python!
I'm fat                      Hi fat, I'm Python!

Bây giờ giả sử rằng các trường hợp thử nghiệm này đang được phân tích cú pháp bởi Golfscript:

I'm a programmer             Hi a programmer, I'm Golfscript!
I'm a question-writer        Hi a question-writer, I'm Golfscript!
I'm a Stack-Overflow-er      Hi a Stack-Overflow-er, I'm Golfscript!

Thách thức chính xác:

  1. Lấy một chuỗi ở định dạng tự mô tả ( I'm <adjective>hoặc I'm a(n) <noun>) bằng cách sử dụng đầu vào tiêu chuẩn hoặc thông qua một chức năng.

    • Giả sử không có dấu chấm câu kết thúc.

    • Giả sử từ I'mđược sử dụng và không I am.

  2. Chuyển đổi nó thành một định dạng trò đùa cha - xem các ví dụ ở trên để biết chính xác nó sẽ trông như thế nào.

Những thứ khác:

  • Đây là , vì vậy số byte ngắn nhất sẽ thắng.

  • Thực hiện theo các quy tắc kẽ hở tiêu chuẩn - không ai trong số đó, xin vui lòng.

  • Chúc vui vẻ!


Bảng xếp hạng

Bạn có thể xem bảng xếp hạng cho bài đăng này bằng cách mở rộng tiện ích / đoạn trích bên dưới. Để bài đăng của bạn được đưa vào bảng xếp hạng, bạn cần một tiêu đề ( # header text) với thông tin sau:

  • Tên của ngôn ngữ (kết thúc bằng dấu phẩy ,hoặc dấu gạch ngang -), theo sau là ...

  • Số byte, là số cuối cùng xuất hiện trong tiêu đề của bạn.

Ví dụ: JavaScript (ES6), 72 byteshợp lệ, nhưng Fortran, 143 bytes (8-bit)không hợp lệ vì số byte không phải là số cuối cùng trong tiêu đề (câu trả lời của bạn sẽ được nhận ra là 8 byte - không tận dụng điều này).

<iframe src="https://ozewski.github.io/ppcg-leaderboard/?id=185872" width="100%" height="100%" style="border: none;">Oops, your browser is too old to view this content! Please upgrade to a newer version of your browser that supports HTML5.</iframe><style>html,body{margin:0;padding:0;height:100%;overflow:hidden}</style>


39
Một trong những cách tôi cân nhắc khi nói với gia đình rằng vợ tôi đang mong đợi là bằng cách kể càng nhiều câu chuyện cười của bố càng tốt và xem ai bắt được!
Giuseppe

7
Một số ví dụ đầu ra kết thúc bằng dấu chấm than và một số thì không. Tầm quan trọng là gì?
đệ quy

9
Thực hành thông thường là cung cấp cho nó lâu hơn nhiều trước khi chấp nhận câu trả lời, nếu bạn làm như vậy: codegolf.meta.stackexchange.com/q/2035/66252
user2390246

7
Và người phá vỡ không bỏ phiếu, đó là người đạt điểm thấp nhất trước tiên.
Xù xì

4
Bây giờ chờ đợi ngôn ngữ chơi gôn tiếp theo tên đó là một chuỗi trống.
640KB

Câu trả lời:


26

V , 13 byte

cEHi<esc>A, <C-r>" V!

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

Lấy cảm hứng từ câu trả lời của tsh

Điều này lợi dụng thực tế I'mđược kéo dài từ đầu chuỗi khi xóa văn bản từ đầu và dán nó đến cuối cùng <C-r>"trong khi ở chế độ chèn.


Tôi vừa mới chỉnh sửa I'mđể <C-O>prồi nhận thấy câu trả lời của bạn ...
tsh

2
Một ngôn ngữ chơi golf sử dụng Vim và escapemất 5 ký tự ???
mowwwalker

4
@mowwwalker Không. Đó thực sự là byte 0x1B, nhưng nó dễ dàng và rõ ràng hơn nếu bạn viết nó như thế nào <esc>. Điều tương tự cũng vậy <C-r>, thực sự là0x12
DJMcMayhem

@DJMcMayhem, ah điều đó có ý nghĩa hơn nhiều
mowwwalker

18

C (gcc) , 59 42 33 byte

-17 byte nhờ @Conor O'Brien nhận thấy rằng việc nhập không cần thiết

-9 byte nhờ @tsh chỉ ra cách viết hàm UB ngắn hơn

a(x){printf("Hi%s, I'm C!",x+3);}

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

Loại bỏ 3 ký tự đầu tiên của đầu vào (loại bỏ I'm) và bao quanh nó với văn bản mong muốn.


Chương trình biên dịch mà không cần nhập, vì vậy bạn có thể thả nó trong 42 byte.
Conor O'Brien

@ ConorO'Brien bắt đẹp!
Neil A.

3
int cũng là tùy chọn.
tsh

2
(?) Và cũng char*có thể ...; vì vậy a(x){printf("Hi%s, I'm C!",x+3);}nên làm việc
tsh

2
@tsh: có, trong thực tế sẽ hoạt động trên hầu hết các triển khai C 32 bit (trong đó một intcó thể giữ char*mà không cắt bớt nó), mặc dù hành vi không xác định. Trên x86-64 gcc trên Linux, nó sẽ luôn thất bại trong một tệp thực thi PIE (thường không có con trỏ nào trong không gian địa chỉ ảo 32 bit thấp và gcc sẽ không xảy ra để sao chép 32 bit cao trong khi tính toán x+3từ hàm arg trong thanh ghi RDI). Nhưng trong một thực thi không phải PIE, các địa chỉ tĩnh nằm trong 31 bit không gian địa chỉ ảo thấp, vì vậy nếu người gọi chuyển qua một chuỗi ký tự hoặc một bộ đệm tĩnh, nó sẽ xảy ra.
Peter Cordes

16

V , 13 byte

cEHi<Esc>A, <C-O>p V!

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

Mới đến V. Chỉ cần biết nó khoảng 30 phút trước. Dù sao, ngôn ngữ này được chọn chỉ vì tên của nó chỉ tốn 1 byte. Tôi không chắc chắn cách gửi <End>khóa trong V. Hầu hết môi trường vim sẽ chấp nhận <End>thay thế <Esc>Atrong ví dụ này. Nhưng, bạn biết đấy, V ngắn hơn 2 ký tự. :)

Nhờ @Candy Gumdrop , tiết kiệm 1 byte.


1
Có thể lưu một byte bằng cách thay đổi c3lthành cE.
Kẹo Gum Gum

@CandyGumdrop Wow, tôi không biết chữ hoa Etrước.
tsh

Bạn cũng có thể làm cW(có vẻ khác nhau, nhưng thực sự giống hệt cE) hoặc 3s. Công việc tốt! Tôi vừa mới đăng gần như câu trả lời chính xác này khi tôi thấy rằng đã có 2 câu trả lời V, đó là một bất ngờ thú vị. Tôi đã thử một vài cách tiếp cận khác nhau, nhưng tôi không chắc liệu có thể nhận được <13 byte hay không.
DJMcMayhem

11

Stax , 13 byte

â∞¿φ‼0▲(─ƒSqÄ

Chạy và gỡ lỗi nó

Giải nén, không được chỉnh sửa và nhận xét, nó trông như thế này.

.Hip        print "Hi" with no newline
3tp         trim 3 characters from start of input and print with no newline
            final line is to print the unterminated compressed literal ", I'm stax!"
`dYgAwg_

Tôi đã chuyển nhận xét cuối cùng lên một dòng vì không có gì có thể theo một chuỗi ký tự bị hủy bỏ.

Chạy cái này


Tôi sẽ tuyên bố bạn là người chiến thắng vì bài đăng của bạn có nhiều phiếu bầu hơn, nhưng về mặt kỹ thuật bạn đã bị ràng buộc với một người khác. Xin chúc mừng!
Connectyourcharger

10

cân não, 164

,-.+>,>,----.++++>,.>,[.,]<<<+++++.----->>.[<]>[.>]<[->+++<]>++.[--->+<]>----.+++[->+++<]>++.++++++++.+++++.--------.-[--->+<]>--.+[->+++<]>+.++++++++.+[++>---<]>-.

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

"Brainfuck!" một phần của chuỗi được tạo bằng công cụ này , có thể được đánh gôn bằng tay.


2
Hãy thử BF Crunch
Jo King

10

Excel, 36 33 byte

-3 byte nhờ Johan du Toit.

Đầu vào đi vào A1.

="Hi "&MID(A1,4,99)&", I'm Excel"

Nỗ lực đầu tiên:

=REPLACE(A1,1,3,"Hi")&", I'm Excel!"

="Hi "&MID(B13,4,99)&", I'm Excel"34 byte
Johan du Toit

Cảm ơn bạn @JohanduToit. A1thay B13vì thực sự 33 byte.
Wernisch

8

Python 3 , 35 34 byte

lambda s:"Hi%s, I'm Python!"%s[3:]

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

-1 byte nhờ Hiện thân của sự thiếu hiểu biết

Cũng 34 byte, sử dụng các chuỗi được định dạng mới hơn, nhờ Gábor Fekete:

lambda s:f"Hi{s[3:]}, I'm Python!"

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



Còn mất lambda s:và thay thế %s[3:]bằng %input()[3:]gì? (-4 byte)
niko

@niko nếu tôi hiểu những gì bạn đang nói, điều đó sẽ không in bất cứ điều gì. Các quy tắc mặc định trên trang web này là một chương trình đầy đủ in ra đầu ra hoặc một hàm trả về đầu ra. Thông thường những gì bạn đang đề xuất được gọi là đoạn trích và sẽ không phải là một giải pháp hoàn chỉnh, nó sẽ cần được gói print()thêm 7 byte, đó là lý do tại sao các câu trả lời của Python thường sử dụng lambdas.
Stephen

Nhưng nó khác với câu trả lời (và thực tế nhất) của bạn ở đây như thế nào? Ý tôi là cả hai đều không in bất cứ thứ gì, và cả hai đều trả lại cùng một đầu ra phải không? (Khá mới ở đây - vẫn đang quen với CG)
niko

2
@niko Không sao đâu! Với lambda s, tôi đã định nghĩa một hàm (ẩn danh). Nếu bạn nhìn vào tiêu đề và chân trang trong liên kết TIO, tôi đặt tên cho hàm fđó và sau đó gọi nó bằng f("I'm whatever"). Sau đó, hàm trả về đầu ra dự kiến. Với đoạn mã của bạn, bạn không in hoặc trả về từ một hàm - bạn chỉ có một chút mã đánh giá kết quả chính xác, nhưng không làm gì với nó. Bạn có thể chạy các chương trình nhiều lần, bạn có thể gọi các chức năng nhiều lần, nhưng một đoạn mã chỉ là một đoạn.
Stephen

6

R 45 44 39 byte

@Giuseppe Chỉnh sửa

sub("I'm(.*)","Hi\\1, I'm R",scan(,""))

@AaronHayman Chỉnh sửa

function(s)sub("I'm (.*)","Hi \\1, I'm R",s)

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


có thể lưu một byte thay thế "(I'm )bằng"(.* )
Aaron Hayman

1
@AaronHayman, không hoạt động cho I'm a programmer(nhiều không gian) vì sự tham lam
Nahuel Fouilleul

@NahuelFouilleul Phải, tôi không chắc khoảng trắng đầu tiên hay cuối cùng sẽ được xem xét.
niko

1
Được rồi, tôi đã lưu một byte và tôi nghĩ rằng cái này hoạt động đúng Hãy thử trực tuyến!
Aaron Hayman

2
2 byte bằng cách thay đổi subđể "I'm(.*)" and "Hi\\1, I'm R"và 3 byte bằng cách lấy đầu vào từ stdin sử dụng scan: Hãy thử nó trực tuyến
Giuseppe

6

PHP ,34 32 byte

Hi<?=substr($argn,3)?>, I'm PHP!

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

Nhập qua STDIN, gọi với -F.

$ echo I'm a Stack-Overflow-er|php -F dad.php
Hi a Stack-Overflow-er, I'm PHP!

$ echo I'm hungry|php -F dad.php
Hi hungry, I'm PHP!

6

x86 ,37 36 byte

$ xxd DAD.COM
00000000: d1ee ac8a d8c6 0024 adc7 0448 698b d6b4  .......$...Hi...
00000010: 09cd 21ba 1901 cd21 c32c 2049 276d 2078  ..!....!., I'm x
00000020: 3836 2124                                86!$

Chưa được lắp ráp:

D1 EE       SHR  SI, 1                  ; point SI to DOS PSP (080H)
AC          LODSB                       ; load string length into AL, advance SI
8A D8       MOV  BL, AL                 ; put string length into BL
C6 40 24    MOV  BYTE PTR[BX][SI], '$'  ; add string terminator to end of string
AD          LODSW                       ; advance SI two chars
C7 04 6948  MOV  WORD PTR[SI], 'iH'     ; replace second and third char with 'Hi'
8B D6       MOV  DX, SI                 ; load string address for INT 21H string function
B4 09       MOV  AH, 9                  ; display a '$' terminated string function
CD 21       INT  21H                    ; call DOS API
BA 0119     MOV  DX, OFFSET S           ; load address for second part of string
CD 21       INT  21H                    ; call DOS API
C3          RET                         ; return to DOS
S  DB ", I'm x86!$"  

Một chương trình DOS thực thi độc lập. Nhập từ dòng lệnh, đầu ra đến màn hình.

nhập mô tả hình ảnh ở đây

Tải xuống và kiểm tra DAD.COM .

* Tên "ngôn ngữ" chính xác ở đây hơi mơ hồ vì mã máy CPU không thực sự là ngôn ngữ theo nghĩa chính thức. Đi với "x86" là tên thường được hiểu và chấp nhận cho nền tảng đích.


[di chuyển bình luận xuống từ luồng chính] Tôi muốn nói "x86" là kiến ​​trúc, trong khi "MA SM" sẽ là một trong những ngôn ngữ có sẵn trên kiến ​​trúc đó (mặc dù lưu ý rằng nó có một khoảng trắng trong đó).
Jonathan Allan

5
Tôi nghĩ rằng "x86" có lẽ thực sự tốt, đó là golf sau tất cả :)
Jonathan Allan


5

Khoảng trắng , 267 byte

[S S S T    S S T   S S S N
_Push_72_H][T   N
S S _Print_as_character][S S S T    T   S T S S T   N
_Push_105_i][T  N
S S _Print_as_character][S S S N
_Push_0][S N
S _Duplicate_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   N
T   S _Read_STDIN_as_character][T   N
T   S _Read_STDIN_as_character][N
S S N
_Create_Label_INPUT_LOOP][S S S N
_Push_0][S N
S _Duplicate_0][T   N
T   S _Read_STDIN_as_character][T   T   T   _Retrieve][S N
S _Duplicate_input][S S S T S T S N
_Push_10][T S S T   _Subtract][N
T   S S N
_If_0_Jump_to_Label_TRAILING][T N
S S _Print_as_character][N
S N
N
_Jump_to_Label_INPUT_LOOP][N
S S S N
_Create_Label_TRAILING][S N
N
_Discard_top][S S T T   S S S T S T N
_Push_-69_!][S S T  T   N
_Push_-1_e][S S T   T   T   N
_Push_-3_c][S S T   T   S T N
_Push_-5_a][S S S T S T S N
_Push_10_p][S S S T T   S T N
_Push_13_s][S S T   T   N
_Push_-1_e][S S S T T   T   S N
_Push_14_t][S S S T T   N
_Push_3_i][S S S T  S N
_Push_2_h][S S T    T   T   T   T   N
_Push_-15_W][S S T  T   S S S T T   S N
_Push_-70_space][S S S T    T   T   N
_Push_7_m][S S T    T   T   T   T   T   T   N
_Push_-63_'][S S T  T   T   T   S T N
_Push_-29_I][S T    S S T   T   N
_Copy_0-based_3rd_-70_space][S S T  T   T   T   S T S N
_Push_-58_,][N
S S T   N
_Create_Label_PRINT_TRAILING_LOOP][S S S T  T   S S T   T   S N
_Push_102][T    S S S _Add][T   N
S S _Print_as_character][N
S N
T   N
_Jump_to_Label_PRINT_TRAILING_LOOP]

Chữ cái S(dấu cách), T(tab) và N(dòng mới) được thêm vào dưới dạng chỉ tô sáng.
[..._some_action]chỉ thêm vào giải thích.

Vì Whitespace nhập một ký tự tại một thời điểm, đầu vào phải chứa một dòng mới để nó biết khi nào nên dừng đọc các ký tự và đầu vào được thực hiện.

Dùng thử trực tuyến (chỉ có khoảng trắng, tab và dòng mới).

Giải thích bằng mã giả:

Print "Hi"
Read three characters from STDIN, and do nothing with them
Start INPUT_LOOP:
  Character c = STDIN as character
  If(c == '\n'):
    Call function PRINT_TRAILING
  Print c as character
  Go to next iteration of INPUT_LOOP

function PRINT_TRAILING:
  Discard the top of the stack (the c='\n' that was still on the stack)
  Push "!ecapsetihW m'I ," one character at a time
  Start PRINT_TRAILING_LOOP:
    Print as character
    Go to next iteration of PRINT_TRAILING_LOOP

Các ký tự ", I'm Whitespace!"được đẩy theo thứ tự đảo ngược, và sau đó được in trong một vòng lặp. Tất cả các giá trị của các ký tự này cũng được hạ xuống 102, được thêm vào vòng lặp trước khi in để lưu byte. Hằng số 102 này để hạ thấp từng ký tự được tạo bằng chương trình Java này . Ngoài ra, thay vì đẩy giá trị -70cho cả hai không gian hai lần, không gian thứ hai trong "!ecapsetihW m'I ,"được sao chép từ lần đầu tiên với nội dung sao chép để lưu một vài byte.


5

Ngôn ngữ công thức ghi chú của IBM / Lotus, 61 62 byte

+1 vì tôi đã không nhận thấy !ở cuối đầu ra.

"Hi"+@Right(i;"I'm")+", I'm IBM/Lotus Notes Formula Language!"

Công thức trường được tính toán lấy đầu vào từ trường có thể chỉnh sửa i. Nó sẽ thất bại với "Tôi là tôi" nhưng vì điều đó sẽ không có ý nghĩa gì cả. Tôi cho rằng điều đó sẽ không xảy ra.

Thật xấu hổ vì ở mức 32 byte, tên của ngôn ngữ lớn hơn một nửa tổng chiều dài của công thức!

Ảnh chụp màn hình bên dưới hiển thị một ví dụ đầu vào và đầu ra:

nhập mô tả hình ảnh ở đây


5
Có vẻ như ngôn ngữ của bạn sẽ tốt cho công việc nếu tên đó không dài :)
Connectyourchargeer

nếu tôi nghiêm túc, có lẽ tôi sẽ gọi nó Formulalà cách nó được nhắc đến trong cộng đồng nhà phát triển Ghi chú / Domino :-)
ElPedro

1
@PeterCordes - Có thể nhưng Lotus Notes / Domino cũng có LotusScript là ngôn ngữ sẵn có nên chúng tôi có thể cần phải cụ thể hơn một chút ;-)
ElPedro

1
Thực tế có thể tốt hơn một chút so với khi IBM đổi thương hiệu cho IBM Notes nhưng sau đó họ lại đổi thương hiệu thành IBM Domino nên tôi đoán rằng phải chính xác thì phải là "Xin chào @PeterCordes, tôi là Công thức Domino của IBM" :)
ElPedro

1
@PeterCordes Chỉ những phần thiết yếu của tên ngôn ngữ là bắt buộc - Tôi chấp nhận Perlthay thế cho Perl 5hoặc Perl 5 -p.
Connectyourcharger

5

sed ( -r), 31 28 25 byte

-3 byte nhờ vào Shaggy -3 byte vì -rkhông cần thiết trong đầu ra

s/I'm(.*)/Hi\1, I'm sed!/

TIO



Hmm ... Cách của chúng tôi xung quanh việc đếm cờ là tuyên bố chúng là các ngôn ngữ khác nhau nên tôi nghĩ bạn có thể cần -rnhưng sẽ rất đáng để Meta cân nhắc về nó.
Xù xì

tôi đã xóa vì 5 câu trả lời và bình luận
Nahuel Fouilleul


5

Octave , 35 byte

@(s)["Hi" s(4:end) ", I'm Octave!"]

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

@(s)                                 % Anonymous function taking a string input
    [                             ]  % Concatenate everything inside the brackets
     "Hi"          ", I'm Octave!"]  % The fixed parts of the output string
          s(4:end)                   % The input, except "I'm"

                                     % Returns the concatenated string

42 byte:

Tôi đã cố gắng truy xuất "Octave" bằng cách nào đó, mà không viết ra, vì 6 ký tự là khá nhiều so với một số tên ngôn ngữ khác ở đây. Thật không may, tôi chỉ có thể tìm thấy ver, kết quả này tạo ra một cấu trúc với các trường được phân tách bằng dấu phẩy. Mất hơn 6 byte. :

@(s)["Hi" s(4:end) ", I'm " {ver.Name}{1}]

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


5

Ruby -p , 32 27 26 byte

-5 byte bằng cách tận dụng câu trả lời Jelly của Nick Kennedy .

-1 byte từ việc phân tách trên một điểm khác nhau trong chuỗi. Cũng nhận ra bytecount cũ của tôi là sai.

~/m/;$_="Hi#$', I'm Ruby!"

Giải trình

                            # -p gets line of input and saves to $_
~/m/;                       # Find first 'm' in $_ using regex
     $_="Hi#$', I'm Ruby!"  # Save modified string to $_
                            # ($' is the string AFTER the most recent regex match)
                            # -p outputs $_ to screen

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


Mát mẻ! Đầu vào của bạn ở đâu?
Connectyourcharger

@connectyourcharger thêm một lời giải thích. Đầu vào là STDIN.
Mực giá trị

Gotcha. Câu trả lời tốt!
Connectyourcharger


4

Hàng loạt, 22 + 3 = 25 byte

@echo Hi %*, %0 Batch!

+3 byte để đặt tên tệp này I'm(với .batphần mở rộng bắt buộc cho tệp Batch). Gọi như I'm hungry, khi nó sẽ vang Hi hungry, I'm Batch!.


chương trình sẽ nhận I'mnhưng đây là tên của kịch bản không biết nó có hợp lệ hay không, trừ khi đó là trình thông dịch với tập lệnh trong đường dẫn hiện tại
Nahuel Fouilleul

1
@NahuelFouilleul Trình thông dịch là CMDvậy, điều đó có thực sự giúp tôi tiết kiệm 2 byte không?
Neil


4

Perl 5 -p , 31 24 byte

Cắt giảm dựa trên sự làm rõ từ OP và một gợi ý từ @NahuelFouilleul.

/ /;$_="Hi $', $` Perl!"

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



1
cũng có thể $^X $]các biến đặc biệt có thể được sử dụng, tuy nhiên 5 biến ngắn hơn$]
Nahuel Fouilleul

Bạn có cần bao gồm 5như là một phần của tên của ngôn ngữ? tức là bạn có thể lập luận rằng Perl 5 "nghĩ về chính nó" là "Perl" không? Đó là trường hợp trước khi Perl 6 tồn tại, và câu trả lời của codegolf chỉ cần hoạt động trên ít nhất một lần thực hiện ngôn ngữ, vậy hãy chọn một câu cũ?
Peter Cordes

Xác nhân OP đó Perllà đủ. Và việc sử dụng -ptùy chọn không phải được coi là một phần của tên ngôn ngữ.
Peter Cordes

4

Thạch ,  16  15 byte

Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ»

Một chương trình đầy đủ chấp nhận đối số chuỗi (định dạng Python) sẽ in kết quả.

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

Làm sao?

Ḋa⁾Hi“'ṫṗḶ/÷!Ṗ» - Link: list of characters    e.g. "I'm a programmer"
Ḋ               - dequeue                          "'m a programmer"
  ⁾Hi           - pair of characters               "Hi"
 a              - logical AND (vectorises)         "Hi a programmer"
     “'ṫṗḶ/÷!Ṗ» - list of characters               ", I'm Jelly!"
                -  - since this is a new leading constant chain the previous result
                -    is implicitly printed (with no trailing newline)
                - program result is implicitly printed (again with no trailing newline)

Lưu ý: Ḋ⁾Hio...hoạt động quá.


4

Thạch , 20 17 byte

ṫ4;“'ṫṗḶ/÷!Ṗ»⁾Hi;

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

Một liên kết đơn âm lấy đầu vào làm đối số của nó và trả về chuỗi Jelly.

Giải trình

ṫ4                | everything from 4th character on
  ;“'ṫṗḶ/÷!Ṗ»     | concatenate ", I’m Jelly!" to the end
             ⁾Hi; | concatenate "Hi" to the beginning

1
Đợi đã, Jelly có tích hợp sẵn cho từ "Jelly" không?
Connectyourcharger

3
@connectyourcharger đó là một từ điển nén
Nick Kennedy

À, điều đó có ý nghĩa
Trình kết nối

4

VBA (Excel), 27 28 byte

?"Hi"Mid([A1],4)", I'm VBA!

Đầu vào đi vào ô A1 của Bảng hoạt động trong Excel, chạy mã trong Cửa sổ ngay lập tức

Tận dụng lợi thế của thực tế "SomeString"SomeValueSomeValue"SomeString"sẽ kết hợp ngầm, và việc bỏ qua đối số thứ ba từ MIDhàm sẽ lấy tất cả các ký tự từ cuối đầu vào - biến nó thành hàm "kết xuất ký tự ban đầu"

(-1 byte nhờ Shaggy, nhưng +1 khi OP xác nhận rằng tất cả các câu trả lời sẽ kết thúc bằng dấu chấm than)
(-1 byte nhờ Taylor Scott nhắc nhở tôi rằng trích dẫn kép cuối cùng là tùy chọn)


1
Bạn có thể loại bỏ không gian sau Hivà thay thế 5bằng 4?
Xù xì

@Shaggy ... Vâng, vâng tôi có thể. Không biết làm thế nào tôi bỏ lỡ điều đó, cảm ơn bạn
Chronocidal

1
Bạn có thể giảm một byte bằng cách xóa đoạn cuối cùng "khỏi giải pháp này và khi bạn sử dụng ký hiệu đánh giá (dấu ngoặc vuông), bạn nên đánh dấu giải pháp này là Excel VBA, vì ký hiệu đó chỉ có sẵn trong Excel
Taylor Scott


3

05AB1E , 23 21 byte

Đã lưu 2 byte nhờ Kevin Cruijssen

',«#À„Hiš"05AB1E!"ªðý

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

Giải trình

',«                    # append ","
   #                   # split on spaces
    À                  # rotate left
     „Hiš              # prepend "Hi"
         "05AB1E!"ª    # append the language name
                   ðý  # join on spaces

21 byte . Và quá tệ là dấu chấm than ở đó .. Vì •äƵí•hRnó ngắn hơn 1 byte "05AB1E". :)
Kevin Cruijssen

@KevinCruijssen: Wow! Tôi cảm thấy ngu ngốc khi tôi không bắt đầu với ",". Vâng tôi cũng đã cố gắng •äƵí•hR, nhưng như bạn nói, thật không may, nó không lưu bất kỳ thứ gì ở đây.
Emigna

3

QuadR , 22 byte

^...
$
Hi
, I'm QuadR!

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

Điều này thay thế:

^... ba ký tự ban đầu

$ cuối dòng

với

Hi

,I'm QuadR
tương ứng


Vì vậy, bạn có thể trao đổi hai dòng giữa và thay đổi ngôn ngữ thành Retina và vẫn đánh bại câu trả lời của @ KevinCruijssen?
Neil

@Neil tôi đoán vậy, nhưng của bạn vẫn còn ngắn hơn. Tbf, QuadR là một vỏ bọc mỏng cho ⎕Rnhà điều hành APL không dành cho golf .
Adám

À, nhưng câu trả lời của tôi chỉ hoạt động cho Retina 1, không phải Retina 0.8.2.
Neil

3

Võng mạc , 22 21 byte

3L$`
Hi$', $` Retina!

Hãy thử trực tuyến! Liên kết bao gồm các trường hợp thử nghiệm. Không hoạt động trong Retina 0.8.2, vì vậy hãy điều chỉnh câu trả lời QuadR của @ Adám. Giải thích: Mẫu trống, do đó, mẫu này khớp với mọi vị trí trong chuỗi đầu vào. Tuy nhiên, chúng tôi chỉ cần khớp thứ ba (hoặc thứ tư sẽ hoạt động). Sự thay thế sau đó được áp dụng cho trận đấu đó. Trong sự thay thế đó, $'đề cập đến phần còn lại của chuỗi và $`đề cập đến phần đầu của chuỗi.


3

Võng mạc 0.8.2 , 26 25 23 byte

^...
Hi
$
, I'm Retina!

-1 byte nhờ @attinat .
-2 byte bằng cách chuyển câu trả lời QuadR của @ Adám , vì vậy hãy đảm bảo nâng cấp anh ta !!

PS: @Neil đã đăng một câu trả lời Retina ngắn hơn trong phiên bản mới , vì vậy tôi đã thay đổi câu trả lời này thành Retina 0.8.2 một cách rõ ràng.

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

Giải trình:

Thay thế ba ký tự đầu tiên bằng "Hi":

^...
Hi

Và sau đó nối một dấu ", tôi là Retina!" (bằng cách thay thế phần cuối của chuỗi):

$
, I'm Retina!

1
Không nên như thế này thay vào đó?
attinat

2
hoặc tốt hơn, 25 byte
attinat

@attinat Ah, tất nhiên, thậm chí còn không nhận thấy đầu ra không chính xác ..>.> Và cảm ơn vì -1!
Kevin Cruijssen

3

bash, 24 byte

echo Hi ${@:2}, $1 bash!

TIO


thay thế bashbằng $0để tiết kiệm một vài byte
roblogic

1
@roblogic, $0sẽ in tên tập lệnh hoặc đang chạy bash -c 'echo Hi ${@:2}, $1 $0!' bash $@nhưng nên tính kích thước
Nahuel Fouilleul
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.