Żarty taty są fajne

49

Wszyscy znamy klasyczny żart taty, który brzmi mniej więcej tak:

  1. Ktoś mówi zdanie, aby opisać siebie (np. I'm tiredLub I'm confused).

  2. Pojawia się entuzjasta tatusia i odpowiada Hi <adjective>, I'm Dad!, ponieważ prezentacje mają ten sam format ( I'm Peterten sam format co I'm hungry).

Twoim zadaniem jest wprowadzenie danych wejściowych w postaci samo deskryptora i wypisanie odpowiedniego formularza tata-żart, ale zamiast słowa „tata” użyjesz nazwy języka programowania, który programujesz w.

Przypadki testowe (załóżmy, że są one analizowane przez 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!

Załóżmy teraz, że te przypadki testowe są analizowane przez 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!

Dokładne wyzwanie:

  1. Weź ciąg znaków w formacie samo deskryptora ( I'm <adjective>lub I'm a(n) <noun>) przy użyciu standardowego wejścia lub funkcji.

    • Załóżmy, że nie ma końca interpunkcji.

    • Załóżmy, że słowo I'mjest używane, a nie I am.

  2. Przekształć go w format tata-żart - zobacz powyższe przykłady, aby dokładnie zobaczyć, jak to powinno wyglądać.

Inne rzeczy:


Tabela liderów

Możesz wyświetlić tabelę wyników dla tego postu, rozwijając widżet / fragment kodu poniżej. Aby Twój post znalazł się w rankingu, potrzebujesz nagłówka ( # header text) z następującymi informacjami:

  • Nazwa języka (zakończ go przecinkiem ,lub myślnikiem -), a następnie ...

  • Liczba bajtów, jako ostatnia liczba wyświetlana w nagłówku.

Na przykład JavaScript (ES6), 72 bytesjest poprawny, ale Fortran, 143 bytes (8-bit)jest nieprawidłowy, ponieważ liczba bajtów nie jest ostatnią liczbą w nagłówku (twoja odpowiedź zostanie rozpoznana jako 8 bajtów - nie wykorzystuj tego).

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

podłącz ładowarkę
źródło
39
Jednym ze sposobów, w jaki rozważałem powiedzenie mojej rodzinie, czego oczekiwała moja żona, było opowiedzenie jak największej liczby żartów taty i sprawdzenie, kto przyłapał!
Giuseppe
7
Niektóre przykładowe wyniki kończą się wykrzyknikiem, a niektóre nie. Jakie jest znaczenie?
rekurencyjny
9
Zwykle praktyką jest dawanie jej znacznie dłużej, zanim zaakceptujesz odpowiedź, jeśli w ogóle to zrobisz
user2390246
7
A rozstrzygającym nie są głosy, to ten, który jako pierwszy osiągnął najniższy wynik.
Kudłaty
4
Teraz czeka na następny język golfa, którego nazwa to pusty ciąg.
640 KB

Odpowiedzi:

26

V , 13 bajtów

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

Wypróbuj online!

Zainspirowany odpowiedzią tsh

Wykorzystuje to fakt, że I'mpodczas usuwania tekstu od początku szarpany jest od początku i wkleja go do końca za pomocą <C-r>"trybu wstawiania.

Candy Gumdrop
źródło
Właśnie edytowany I'msię <C-O>pi następnie zauważyć odpowiedź ...
TSH
2
Język gry w golfa przy użyciu Vima i escapezajmuje 5 znaków?
mowwwalker
4
@mowwwalker Nope. To naprawdę bajt 0x1B, ale łatwiej i bardziej oczywiste, co to znaczy, jeśli napiszesz go jako <esc>. To samo dotyczy <C-r>, co jest naprawdę0x12
DJMcMayhem
@DJMcMayhem, ah, to ma o wiele więcej sensu
mowwwalker
18

C (gcc) , 59 42 33 bajtów

-17 bajtów dzięki @Conor O'Brien zauważając, że import nie był konieczny

-9 bajtów dzięki @tsh wskazując krótszy, UB sposób pisania funkcji

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

Wypróbuj online!

Odcina pierwsze 3 znaki wejścia (usuwa I'm) i otacza je pożądanym tekstem.

Neil A.
źródło
Program kompiluje się bez importu, więc możesz upuścić go na 42 bajty.
Conor O'Brien
@ ConorO'Brien nice catch!
Neil A.
3
I int jest również opcjonalne.
tsh
2
(?) A także char*, może ...; tak a(x){printf("Hi%s, I'm C!",x+3);}powinno działać
tsh
2
@tsh: tak, w praktyce będzie działał na większości 32-bitowych implementacji C (gdzie an intmoże pomieścić char*bez obcinania go), pomimo niezdefiniowanego zachowania. Na x86-64 gcc w systemie Linux zawsze zawiedzie w pliku wykonywalnym PIE (zwykle nie ma wskaźników w 32 bitach wirtualnej przestrzeni adresowej, a gcc nie skopiuje wysokich 32 bitów podczas obliczania x+3z funkcji arg w rejestr RDI). Ale w pliku wykonywalnym innym niż PIE, adresy statyczne znajdują się w 31 bitach wirtualnej przestrzeni adresowej, więc jeśli dzwoniący przejdzie literał ciągu lub bufor statyczny, to zadziała.
Peter Cordes
16

V , 13 bajtów

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

Wypróbuj online!

Nowy na V. Znałem to około 30 minut temu. W każdym razie ten język jest wybrany tylko dlatego, że jego nazwa kosztuje tylko 1 bajt. Nie jestem pewien, jak wysłać <End>klucz w V. Większość środowisk vima zaakceptowałoby <End>zastąpienie <Esc>Aw tym przykładzie. Ale wiesz, V jest o 2 znaki krótsze niż vim. :)

Dzięki @Candy Gumdrop oszczędza 1 bajt.

tsh
źródło
1
Można zapisać jeden bajt, zmieniając c3lna cE.
Candy Gumdrop
@CandyGumdrop Wow, wcześniej nie znałem dużej litery E.
tsh
Możesz także zrobić cW(co wydaje się inne, ale w rzeczywistości jest identyczne cE) lub 3s. Dobra robota! Właśnie miałem opublikować prawie taką dokładną odpowiedź, kiedy zobaczyłem, że były już odpowiedzi 2 V, co było miłą niespodzianką. Wypróbowałem kilka różnych podejść, ale nie jestem pewien, czy będzie możliwe uzyskanie <13 bajtów.
DJMcMayhem
11

Stax , 13 bajtów

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

Uruchom i debuguj

Rozpakowane, niepolowane i skomentowane, wygląda to tak.

.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_

Przesunąłem ostatni komentarz w górę o jedną linię, ponieważ nic nie może następować po nieokreślonym dosłownym łańcuchu znaków.

Uruchom ten

rekurencyjny
źródło
Ogłaszam cię zwycięzcą, ponieważ twój post miał więcej głosów, ale technicznie byłeś związany z jedną inną osobą. Gratulacje!
connectyourcharger
10

pieprzenie mózgu, 164

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

Wypróbuj online!

„Kurwa mózgu!” część struny jest generowana za pomocą tego narzędzia, prawdopodobnie można ją dalej zagrać w golfa ręcznie.

pudełko kartonowe
źródło
2
Wypróbuj BF Crunch
Jo King
10

Excel, 36 33 bajtów

-3 bajty dzięki Johan du Toit.

Dane wejściowe trafiają do A1.

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

Pierwsze podejscie:

=REPLACE(A1,1,3,"Hi")&", I'm Excel!"
Wernisch
źródło
="Hi "&MID(B13,4,99)&", I'm Excel"34 bajty
Johan du Toit
Dziękuję @JohanduToit. A1zamiast B13tak naprawdę 33 bajty.
Wernisch
8

Python 3 , 35 34 bajtów

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

Wypróbuj online!

-1 bajt dzięki Embodiment of Ignorance

Również 34 bajty, przy użyciu nowszych sformatowanych ciągów, dzięki Gáborowi Fekete:

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

Wypróbuj online!

Stephen
źródło
3
34 bajty
Embodiment of Ignorance
Co o utracie lambda s:i zastępowanie %s[3:]z %input()[3:]? (-4 bajty)
Niko
@niko, jeśli rozumiem, co mówisz, to nic nie wydrukuje. Domyślne reguły na tej stronie to albo pełny program, który drukuje dane wyjściowe, albo funkcja, która zwraca dane wyjściowe. Zwykle to, co sugerujesz, nazywa się urywkiem i nie byłoby kompletnym rozwiązaniem, musiałoby zostać owinięte o print()kolejne 7 bajtów, dlatego odpowiedzi Python zwykle używają lambdas.
Stephen
Ale czym to się różni od twojej (i właściwie większości) odpowiedzi tutaj? Mam na myśli, że oba same nie drukują niczego i oba zwracają to samo wyjście, prawda? (Dość nowy tutaj - wciąż przyzwyczajam się do CG)
niko
2
@niko W porządku! Za pomocą lambda szdefiniowałem funkcję (anonimową). Jeśli spojrzysz na nagłówek i stopkę w łączu TIO, fnazywam tę funkcję , a następnie wywołuję ją f("I'm whatever"). Następnie funkcja zwraca oczekiwane wyjście. Za pomocą fragmentu kodu nie drukujesz ani nie wracasz z funkcji - masz tylko trochę kodu, który ocenia poprawny wynik, ale nic z tym nie robi. Możesz uruchamiać programy wiele razy, możesz wywoływać funkcje wiele razy, ale urywek jest tylko urywkiem.
Stephen
6

R 45 44 39 bajtów

@Giuseppe Edit

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

@AaronHayman Edit

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

Wypróbuj online!

niko
źródło
Można zapisać jeden bajt wymianie "(I'm )z"(.* )
Aaron Hayman
1
@AaronHayman, nie działa na I'm a programmer(wiele przestrzeni) z powodu chciwości
Nahuel Fouilleul
@NahuelFouilleul Racja, nie byłam pewna, czy pierwsza czy ostatnia biała spacja będzie brana pod uwagę.
niko
1
Okej, zapisałem bajt i myślę, że ten działa poprawnie Wypróbuj online!
Aaron Hayman
2
2 bajty, zmieniając subsię "I'm(.*)" and "Hi\\1, I'm R"i 3 bajty według biorąc wejściowe ze standardowego wejścia używając scan: Spróbuj go w Internecie
Giuseppe
6

PHP ,34 32 bajty

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

Wypróbuj online!

Wprowadź przez STDIN, zadzwoń z -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!
640 KB
źródło
6

x86 ,37 36 bajtów

$ 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!$

Niezmontowane:

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!$"  

Samodzielny wykonywalny program DOS. Wejście z wiersza poleceń, wyjście na ekran.

wprowadź opis zdjęcia tutaj

Pobierz i przetestuj DAD.COM .

* Dokładna nazwa „języka” tutaj jest trochę dwuznaczna, ponieważ kod maszynowy procesora tak naprawdę nie jest językiem w sensie formalnym. Używanie „x86” jako ogólnie rozumianej i akceptowanej nazwy platformy docelowej.

640 KB
źródło
[przenosi komentarz w dół od głównego wątku] Powiedziałbym, że „x86” jest architekturą, podczas gdy „MA SM” byłby jednym z dostępnych języków w tej architekturze (pamiętaj, że ma w niej miejsce).
Jonathan Allan
5
Myślę, że „x86” jest naprawdę w porządku, w końcu to golf :)
Jonathan Allan
5

Biała spacja , 267 bajtów

[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]

Litery S(spacja), T(tab) i N(nowa linia) dodane tylko jako wyróżnienia.
[..._some_action]dodano tylko jako wyjaśnienie.

Ponieważ białe znaki wprowadzają po jednym znaku na raz, dane wejściowe powinny zawierać końcowy znak nowej linii, aby wiedział, kiedy przestać czytać znaki i wprowadzanie zostało zakończone.

Wypróbuj online (tylko z surowymi spacjami, tabulatorami i nowymi wierszami).

Objaśnienie w pseudo-kodzie:

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

Znaki ", I'm Whitespace!"są wypychane w odwrotnej kolejności, a następnie drukowane w pętli. Wszystkie wartości tych znaków są również zmniejszane o 102, które są dodawane w pętli przed drukowaniem w celu zaoszczędzenia bajtów. Ta stała 102 służąca do obniżania każdego znaku jest generowana w tym programie Java . Ponadto zamiast -70dwukrotnego wypychania wartości dla obu spacji, druga spacja "!ecapsetihW m'I ,"jest kopiowana z pierwszej z wbudowanym Copy, aby zaoszczędzić kilka bajtów.

Kevin Cruijssen
źródło
5

IBM / Lotus Notes Formula Language, 61 62 bajtów

+1, ponieważ nie zauważyłem !na końcu wyniku.

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

Obliczona formuła pola, która pobiera dane wejściowe z pola edytowalnego i. Nie udałoby się to w przypadku „I'm am I'm”, ale ponieważ nie miałoby to żadnego sensu, zakładam, że tak się nie stanie.

Szkoda, że ​​przy 32 bajtach nazwa języka stanowi ponad połowę całkowitej długości formuły!

Zrzut ekranu poniżej pokazujący przykładowe dane wejściowe i wyjściowe:

wprowadź opis zdjęcia tutaj

ElPedro
źródło
5
Wygląda na to, że Twój język byłby dobry do pracy, gdyby nazwa nie była tak długa :)
connectyourcharger
gdybym Formulamówił poważnie, prawdopodobnie po prostu nazwałbym to tak jest nazywane w społeczności programistów Notes / Domino :-)
ElPedro
1
@PeterCordes - Możliwe, ale Lotus Notes / Domino ma również wbudowany język LotusScript, więc prawdopodobnie musimy być bardziej szczegółowi ;-)
ElPedro
1
Może faktycznie pójść trochę lepiej, odkąd IBM zmienił markę na IBM Notes, ale potem ponownie zmienił markę na IBM Domino, więc sądzę, że aby być ściśle poprawnym, powinien to być „Cześć @PeterCordes, jestem IBM Domino Formula” :)
ElPedro
1
@PeterCordes Wymagane są tylko niezbędne części nazwy języka - akceptuję Perljako zamiennik dla Perl 5lub Perl 5 -p.
connectyourcharger
5

sed ( -r), 31 28 25 bajtów

-3 bajty dzięki Shaggy -3 bajtów, ponieważ -rnie są potrzebne w danych wyjściowych

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

TIO

Nahuel Fouilleul
źródło
28 bajtów ?
Kudłaty
Hmm ... Nasza droga wokół flagi liczenia było zadeklarować je jako różnych językach, więc myślę, że może potrzebne -r, ale warto byłoby uzyskanie Meta zważyć na to.
Kudłaty
usunąłem z powodu Perl 5 odpowiedzi i komentarzy
Nahuel Fouilleul
5

Japt , 18 bajtów

`Hi{s3}, I'm Japt!

Gdy biblioteka kompresji ciągów Japt osiąga współczynnik kompresji 0% ...

Spróbuj

Kolejna 18-bajtowa alternatywa:

`Hi{Ť}, {¯4}Japt!
Wcielenie ignorancji
źródło
1
... ale wciąż bije Jelly i 05AB1E :)
Kudłaty
5

Oktawa , 35 bajtów

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

Wypróbuj online!

@(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 bajty:

Próbowałem w jakiś sposób odzyskać „Octave”, nie wypisując go, ponieważ 6 znaków to całkiem sporo w porównaniu z niektórymi innymi nazwami języków tutaj. Niestety, mogłem tylko znaleźć ver, która wyświetla strukturę z polami oddzielonymi przecinkami. Zajmuje znacznie więcej niż 6 bajtów. :(

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

Wypróbuj online!

Stewie Griffin
źródło
5

Rubin -p , 32 27 26 bajtów

-5 bajtów, wykorzystując odpowiedź galaretki Nicka Kennedy'ego .

-1 bajt od podziału na inny punkt ciągu. Uświadomiłem sobie również, że mój stary bytecount był nieprawidłowy.

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

Wyjaśnienie

                            # -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

Wypróbuj online!

Wartość tuszu
źródło
Chłodny! Gdzie jest twój wkład?
connectyourcharger
@connectyourcharger dodał wyjaśnienie. Dane wejściowe to STDIN.
Wartość tuszu
Gotcha Dobra odpowiedź!
connectyourcharger
4

Rdza , 41 bajtów

|x:&str|print!("Hi{}, I'm Rust!",&x[3..])

Wypróbuj online!

darrylyeo
źródło
4

Partia, 22 + 3 = 25 bajtów

@echo Hi %*, %0 Batch!

+3 bajty do nazwania tego pliku I'm(z wymaganym .batrozszerzeniem dla plików wsadowych). Wywołaj jako I'm hungry, kiedy będzie echo Hi hungry, I'm Batch!.

Neil
źródło
program powinien odbierać, I'male tutaj jest nazwa skryptu, nie wiem, czy jest poprawny, lub chyba, że ​​jest to interpreter ze skryptem w bieżącej ścieżce
Nahuel Fouilleul
1
@NahuelFouilleul Tłumacz jest CMD, więc czy rzeczywiście zaoszczędzi mi to 2 bajty?
Neil
4

Perl 5 -p , 31 24 bajtów

Ogranicz w oparciu o wyjaśnienia z OP i sugestię @NahuelFouilleul.

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

Wypróbuj online!

Xcali
źródło
1
29 bajtów
Nahuel Fouilleul
1
być może $^X $]można również zastosować specjalne zmienne, jednak 5 jest krótsze niż$]
Nahuel Fouilleul
Czy musisz podać 5jako część nazwy języka? tzn. czy możesz argumentować, że Perl 5 „myśli o sobie” jako „Perl”? Tak było przed istnieniem Perla 6, a odpowiedzi codegolfa muszą działać tylko na co najmniej jednej implementacji języka, więc wybierz starą?
Peter Cordes
OP potwierdza, że Perlto wystarczy. I że użycie tej -popcji nie musi być uważane za część nazwy języka.
Peter Cordes
4

Galaretka ,  16  15 bajtów

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

Pełny program akceptujący argument (sformatowany w języku Python), który wypisuje wynik.

Wypróbuj online!

W jaki sposób?

Ḋ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)

Uwaga: Ḋ⁾Hio...też działa.

Jonathan Allan
źródło
4

Galaretka , 20 17 bajtów

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

Wypróbuj online!

Monadyczny link przyjmujący dane wejściowe jako argument i zwracający ciąg galaretki.

Wyjaśnienie

ṫ4                | everything from 4th character on
  ;“'ṫṗḶ/÷!Ṗ»     | concatenate ", I’m Jelly!" to the end
             ⁾Hi; | concatenate "Hi" to the beginning
Nick Kennedy
źródło
1
Chwila, Jelly ma wbudowane tylko słowo „Jelly”?
connectyourcharger
3
@connectyourcharger to skompresowane słowo słownikowe
Nick Kennedy
Ach, to ma sens
podłącz ładowarkę
4

VBA (Excel), 27 28 bajtów

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

Dane wejściowe trafiają do komórki A1 aktywnego arkusza w programie Excel, uruchom kod w oknie natychmiastowym

Wykorzystuje fakt, że "SomeString"SomeValueiSomeValue"SomeString" niejawnie konkatenuje oraz że pominięcie trzeciego argumentu MIDfunkcji spowoduje pobranie wszystkich znaków z końca danych wejściowych - zamieniając je w funkcję „zrzutu początkowych znaków”

(-1 bajt dzięki Shaggy, ale +1, gdy OP potwierdził, że wszystkie odpowiedzi powinny kończyć się wykrzyknikiem)
(-1 bajt dzięki Taylor Scott przypominając mi, że końcowe podwójne cytowanie było opcjonalne)

Chronocidal
źródło
1
Czy możesz usunąć miejsce po Hii zastąpić 5je 4?
Kudłaty
@ Shaggy ... Tak, tak, mógłbym. Nie mam pojęcia, jak mi tego brakowało, dziękuję
Chronocidal
1
Możesz usunąć bajt, usuwając ostatnią "z tego rozwiązania, a gdy używasz notacji oceniającej (nawiasy kwadratowe), powinieneś oznaczyć to rozwiązanie jako Excel VBA, ponieważ notacja ta jest dostępna tylko w Excelu
Taylor Scott
3

05AB1E , 23 21 bajtów

Zaoszczędzono 2 bajty dzięki Kevinowi Cruijssenowi

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

Wypróbuj online!

Wyjaśnienie

',«                    # append ","
   #                   # split on spaces
    À                  # rotate left
     „Hiš              # prepend "Hi"
         "05AB1E!"ª    # append the language name
                   ðý  # join on spaces
Emigna
źródło
21 bajtów . I szkoda, że ​​wykrzyknik tam jest. Ponieważ •äƵí•hRjest o 1 bajt krótszy niż "05AB1E". :)
Kevin Cruijssen
@KevinCruijssen: Wow! Czuję się głupio, że nie zacząłem od „,”. Tak, też próbowałem •äƵí•hR, ale jak mówisz, niestety nie oszczędza to tutaj.
Emigna
3

QuadR , 22 bajty

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

Wypróbuj online!

Zastępuje to:

^... trzy początkowe znaki
i
$ koniec linii

z

Hi
i
,I'm QuadR
odpowiednio

Adám
źródło
Więc możesz wymienić dwie środkowe linie i zmienić język na Retina i nadal pobić odpowiedź @ KevinCruijssen?
Neil
@Neil Chyba tak, ale twój jest jeszcze krótszy. Tbf, QuadR to tylko cienka osłona dla ⎕Roperatora APL nieprzeznaczonego do gry w golfa .
Adám
Ach, ale moja odpowiedź działa tylko dla Retina 1, a nie Retina 0.8.2.
Neil
3

Siatkówka , 22 21 bajtów

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

Wypróbuj online! Link zawiera przypadki testowe. Nie działa w Retina 0.8.2, więc zamiast tego dostosuj odpowiedź QuadR @ Adám. Objaśnienie: Wzór jest pusty, więc pasuje do każdej pozycji ciągu wejściowego. Potrzebujemy jednak tylko trzeciego (lub czwartego by działało) dopasowania. Podstawienie jest następnie stosowane do tego dopasowania. W ramach tego podstawienia $'odnosi się do reszty łańcucha i $`odnosi się do początku łańcucha.

Neil
źródło
3

Retina 0.8.2 , 26 25 23 bajtów

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

-1 bajt dzięki @attinat .
-2 bajty przez przeniesienie odpowiedzi QuadR @ Adáma , więc pamiętajcie o tym!

PS: @Neil opublikował krótszą odpowiedź Retina w nowej wersji , więc wyraźnie zmieniłem tę odpowiedź na Retina 0.8.2.

Wypróbuj online.

Wyjaśnienie:

Zamień pierwsze trzy znaki na „Cześć”:

^...
Hi

A potem dołącz końcowe „Jestem Retina!” (zastępując koniec łańcucha):

$
, I'm Retina!
Kevin Cruijssen
źródło
1
Czy zamiast tego nie powinno tak być ?
attinat
2
lub lepiej, 25 bajtów
attinat
@attinat Ah, oczywiście, nawet nie zauważył niepoprawnego wyjścia ..>.> I dziękuję za -1!
Kevin Cruijssen
3

bash, 24 bajty

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

TIO

Nahuel Fouilleul
źródło
wymienić bashz $0zaoszczędzić kilka bajtów
roblogic
1
@roblogic, $0wypisze nazwę skryptu lub uruchomi, bash -c 'echo Hi ${@:2}, $1 $0!' bash $@ale powinien liczyć się z rozmiarem
Nahuel Fouilleul