Папа шутит весело


49

Мы все знаем классическую шутку папы, которая выглядит примерно так:

  1. Кто-то произносит предложение, чтобы описать себя (например, I'm tiredили I'm confused).

  2. Приходит любитель папы-шутки и отвечает Hi <adjective>, I'm Dad!, потому что вступления следуют тому же формату ( I'm Peterследует тому же формату, что и I'm hungry).

Ваша работа состоит в том, чтобы взять ввод в форме самоописателя и вывести соответствующую форму «папа-шутка», но вместо слова «папа» вы будете использовать название языка программирования, который вы программируете. в.

Тестовые случаи (предположим, что они анализируются 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!

Теперь предположим, что эти тестовые случаи анализируются 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!

Точная задача:

  1. Возьмите строку в формате самоописателя ( I'm <adjective>или I'm a(n) <noun>), используя стандартный ввод или функцию.

    • Предположим, нет конечной пунктуации.

    • Предположим, слово I'mиспользуется и нет I am.

  2. Преобразуйте его в формат «папа-шутка» - посмотрите, как это выглядит, в приведенных выше примерах.

Другие вещи:


Leaderboard

Вы можете просмотреть список лидеров этого поста, развернув виджет / фрагмент ниже. Чтобы ваше сообщение было включено в рейтинг, вам нужен заголовок ( # header text) со следующей информацией:

  • Название языка (заканчивайте его запятой ,или тире -), а затем ...

  • Количество байтов, как последнее число в заголовке.

Например, JavaScript (ES6), 72 bytesдопустимо, но Fortran, 143 bytes (8-bit)недопустимо, потому что число байтов не является последним числом в заголовке (ваш ответ будет распознан как 8 байтов - не используйте это в своих интересах).

<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
Один из способов, с помощью которого я решил рассказать своей семье, чего ожидала моя жена, - рассказать как можно больше анекдотов о папе и узнать, кто из них завоевал популярность!
Джузеппе

7
Некоторые примеры выходных данных заканчиваются восклицательным знаком, а некоторые - нет. Какое значение?
рекурсивный

9
Обычная практика состоит в том, чтобы дать ему гораздо больше времени, прежде чем принимать ответ, если вы вообще это делаете: codegolf.meta.stackexchange.com/q/2035/66252
user2390246

7
И тай-брейк - это не голоса, а тот, кто первым набрал самый низкий балл.
Лохматый

4
Теперь жду следующего языка игры в гольф, название которого - пустая строка.
640KB

Ответы:


26

V , 13 байт

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

Попробуйте онлайн!

Вдохновленный ответом ТШ

Это использует тот факт, что I'mпри удалении текста с начала извлекается из начала строки и вставляется в конец, <C-r>"находясь в режиме вставки.


Я просто отредактирован , I'mчтобы <C-O>pи обратите внимание на то ваш ответ ...
TSH

2
Язык игры в гольф с использованием Vim и escapeзанимает 5 символов ???
Mowwwalker

4
@ Mowwwalker Нет. Это действительно байт 0x1B, но это проще и более очевидно, что это значит, если вы напишите это как <esc>. То же самое <C-r>, что на самом деле0x12
DJMcMayhem

@DJMcMayhem, ах, это имеет гораздо больше смысла
Mowwwalker

18

C (gcc) , 59 42 33 байта

-17 байт благодаря @Conor O'Brien, заметившему, что импорт не нужен

-9 байт благодаря @tsh, указывающему более короткий, UB способ написания функции

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

Попробуйте онлайн!

Отбирает первые 3 символа ввода (удаляет I'm) и окружает его нужным текстом.


Программа компилируется без импорта, поэтому вы можете отбросить ее на 42 байта.
Конор О'Брайен

@ ConorO'Brien хороший улов!
Нил А.

3
И int это также необязательно.
TSH

2
(?) А также char*, может быть ...; так a(x){printf("Hi%s, I'm C!",x+3);}должно работать
тш

2
@tsh: да, на практике это будет работать в большинстве 32-битных реализаций C (где an intможет содержать a char*без его усечения), несмотря на неопределенное поведение. На x86-64 gcc в Linux он всегда будет неуспешным в исполняемом файле PIE (обычно указатели не находятся в младших 32 битах виртуального адресного пространства, и gcc не будет копировать старшие 32 бита при вычислении x+3из функции arg в регистр RDI). Но в исполняемом файле, отличном от PIE, статические адреса находятся в младших 31 битах виртуального адресного пространства, поэтому, если вызывающий передал строковый литерал или статический буфер, это могло бы сработать.
Питер Кордес

16

V , 13 байт

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

Попробуйте онлайн!

Новый для V. Просто знал это около 30 минут назад. В любом случае, этот язык выбран только потому, что его имя стоит всего 1 байт. Я не уверен, как отправить <End>ключ в V. Большинство окружения vim в этом примере приняли бы <End>в качестве замены <Esc>A. Но, вы знаете, V на 2 символа короче, чем vim. :)

Благодаря @Candy Gumdrop , сохраняет 1 байт.


1
Может сохранить один байт, изменив c3lна cE.
Candy Gumdrop

@CandyGumdrop Вау, я не знал заглавных букв Eраньше.
TSH

Вы также можете сделать cW(что кажется другим, но на самом деле идентично cE) или 3s. Хорошая работа! Я как раз собирался опубликовать почти этот точный ответ, когда увидел, что уже есть ответы на 2 В, что было приятным сюрпризом. Я пробовал несколько разных подходов, но я не уверен, что удастся получить <13 байт.
DJMcMayhem

11

Stax , 13 байт

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

Запустите и отладьте его

Распакованный, размазанный и прокомментированный, это выглядит так.

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

Я переместил последний комментарий на одну строку, так как ничто не может следовать за неопределенным строковым литералом.

Запустите этот


Я собираюсь объявить вас победителем, потому что ваш пост получил больше голосов, но технически вы были связаны с другим человеком. Поздравляем!
connectyourcharger

10

бред, 164

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

Попробуйте онлайн!

"Мозговой!" с помощью этого инструмента генерируется часть струны , которую, вероятно, можно играть в гольф дальше вручную.


2
Попробуйте BF Crunch
Джо Кинг

10

Excel, 36 33 байта

-3 байта благодаря Йохану дю Туа.

Ввод идет в А1.

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

Первая попытка:

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

="Hi "&MID(B13,4,99)&", I'm Excel"34 байта
Йохан дю Туа

Спасибо @JohanduToit. A1а не B13так на самом деле 33 байта.
Верниш

8

Python 3 , 35 34 байта

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

Попробуйте онлайн!

-1 байт благодаря варианту невежества

Также 34 байта, используя более новые отформатированные строки, благодаря Габору Фекете:

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

Попробуйте онлайн!



Как насчет потери lambda s:и замены %s[3:]на %input()[3:]? (-4 байт)
Niko

@ Niko, если я понимаю, что вы говорите, это ничего не напечатает. Правила по умолчанию на этом сайте - это либо полная программа, которая печатает выходные данные, либо функция, которая возвращает выходные данные. Обычно то, что вы предлагаете, называется фрагментом, и это не будет полным решением, его нужно будет обернуть еще print()на 7 байтов, поэтому в ответах Python обычно используются лямбда-выражения.
Стивен

Но как это отличается от ваших (и на самом деле большинства) ответов здесь? Я имею в виду, что оба сами ничего не печатают, и оба возвращают один и тот же вывод, верно? (Довольно новый здесь - все еще привыкать к CG)
Нико

2
@niko Все нормально! С помощью lambda sя определил (анонимную) функцию. Если вы посмотрите на верхний и нижний колонтитулы в ссылке TIO, я назову эту функцию f, а затем вызвал ее с помощью f("I'm whatever"). Затем функция возвращает ожидаемый результат. С вашим фрагментом вы не печатаете и не возвращаете из функции - у вас просто есть немного кода, который оценивает правильный результат, но ничего с ним не делает. Вы можете запускать программы несколько раз, вы можете вызывать функции несколько раз, но фрагмент - это просто фрагмент.
Стивен

6

R 45 44 39 байт

@Giuseppe Править

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

@AaronHayman Править

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

Попробуйте онлайн!


может сохранить один байт, заменив его "(I'm )на"(.* )
Аарон Хейман

1
@AaronHayman, не работает I'm a programmer(много пробелов) из-за жадности
Науэль Фуйе

@NahuelFouilleul Правильно, я не был уверен, будет ли первым или последним пробелом.
Нико

1
Хорошо, я сохранил байт, и я думаю, что он работает правильно. Попробуйте онлайн!
Аарон Хейман

2
2 байта, изменив subto "I'm(.*)" and "Hi\\1, I'm R"и 3 байта, взяв ввод от stdin, используя scan: Попробуйте онлайн
Giuseppe


6

х86 ,37 36 байт

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

разобранное:

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

Автономная исполняемая программа DOS. Ввод из командной строки, вывод на экран.

введите описание изображения здесь

Скачайте и протестируйте DAD.COM .

* Точное название «языка» здесь немного неоднозначно, поскольку машинный код процессора на самом деле не является языком в формальном смысле. Переход от "x86" в качестве общепринятого и общепринятого названия целевой платформы.


[перемещение комментария вниз из основного потока] Я бы сказал, что «x86» - это архитектура, в то время как «MA SM» будет одним из доступных языков в этой архитектуре (обратите внимание, что в нем есть пробел).
Джонатан Аллан

5
Я думаю, что "x86", вероятно, действительно хорошо, это ведь гольф :)
Джонатан Аллан


5

Пробел , 267 байт

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

Буквы S(пробел), T(табуляция) и N(новая строка) добавляются только как подсветка.
[..._some_action]добавлено только в качестве объяснения.

Поскольку пробел вводит по одному символу за раз, ввод должен содержать завершающий символ новой строки, чтобы он знал, когда прекратить чтение символов, и ввод завершен.

Попробуйте онлайн (только с необработанными пробелами, вкладками и новыми строками).

Объяснение в псевдокоде:

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

Символы ", I'm Whitespace!"выталкиваются в обратном порядке, а затем печатаются в цикле. Все значения этих символов также уменьшены на 102, которые добавляются в цикл перед печатью для сохранения байтов. Эта константа 102 для понижения каждого символа генерируется с помощью этой Java-программы . Кроме того, вместо -70двойного нажатия значения для обоих пробелов второй пробел в "!ecapsetihW m'I ,"копируется из первого с помощью встроенной функции копирования, чтобы сохранить несколько байтов.


5

IBM / Lotus Notes Formula Language, 61 62 байта

+1, потому что я не заметил !в конце вывода.

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

Формула вычисляемого поля, которая получает данные из редактируемого поля i. Это потерпит неудачу из-за «я есть я», но так как это не имеет никакого смысла, я предполагаю, что этого не произойдет.

Жаль, что при 32 байтах название языка составляет более половины общей длины формулы!

Снимок экрана ниже показывает пример ввода и вывода:

введите описание изображения здесь


5
Похоже, ваш язык был бы хорош для работы, если бы имя не было таким длинным :)
connectyourcharger

если бы я был серьезен, я бы, наверное, просто назвал его так, Formulaкак он упоминается в сообществе разработчиков Notes / Domino :-)
ElPedro

1
@PeterCordes - возможно, но Lotus Notes / Domino также имеет LotusScript как встроенный язык, поэтому нам, вероятно, нужно быть немного более конкретным ;-)
ElPedro

1
На самом деле все могло бы быть немного лучше, так как IBM переименовала его в IBM Notes, но потом они снова переименовали в IBM Domino, так что я думаю, что если быть строго правильным, это должно быть «Привет @PeterCordes, я - формула IBM Domino» :)
ElPedro

1
@PeterCordes Требуются только основные части названия языка - я принимаю Perlв качестве замены Perl 5или Perl 5 -p.
connectyourcharger

5

sed ( -r), 31 28 25 байт

-3 байта благодаря Shaggy -3 байта, потому что -rне нужны в выводе

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

TIO



Хм ... Наш способ подсчета флагов заключался в том, чтобы объявить их разными языками, так что я думаю, что вам может понадобиться, -rно стоило бы заставить Meta взвесить его.
лохматый

я удалил из-за perl 5 ответ и комментарии
Науэль Фуий


5

Октава , 35 байт

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

Попробуйте онлайн!

@(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 байта:

Я попытался как-то извлечь «Octave», не выписывая его, так как 6 символов довольно много по сравнению с некоторыми другими названиями языков здесь. К сожалению, я мог только найти ver, который выводит структуру с разделенными запятыми полями. Занимает более 6 байтов. :(

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

Попробуйте онлайн!


5

Рубин -p , 32 27 26 байт

-5 байт, используя ответ Желе Ника Кеннеди .

-1 байт от разделения на другую точку в строке. Также понял, что мой старый bytecount был не прав.

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

объяснение

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

Попробуйте онлайн!


Здорово! Где ваш вклад?
connectyourcharger

@connectyourcharger добавил объяснение. Ввод STDIN.
Value Ink

Попался. Хороший ответ!
connectyourcharger


4

Пакетный, 22 + 3 = 25 байт

@echo Hi %*, %0 Batch!

+3 байта для именования этого файла I'm(с необходимым .batрасширением для пакетных файлов). Вызвать как I'm hungry, когда это будет эхо Hi hungry, I'm Batch!.


Программа должна получить, I'mно здесь это имя сценария, не знаю, является ли он действительным, или если это не интерпретатор со сценарием в текущем пути
Науэль Фуий

1
@NahuelFouilleul Интерпретатор CMD, так что это на самом деле сэкономит мне 2 байта?
Нейл


4

Perl 5 -p , 31 24 байта

Сокращение на основе разъяснений от ОП и предложения от @NahuelFouilleul.

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

Попробуйте онлайн!



1
также, возможно, $^X $]можно использовать специальные переменные, однако 5 короче, чем$]
Науэль Фуйе

Есть ли нужно , чтобы включать в себя 5как часть названия языка? то есть, вы могли бы утверждать, что Perl 5 «думает о себе» как «Perl»? Так было до появления Perl 6, и ответы Codegolf должны работать как минимум над одной реализацией языка, так что выберите старую?
Питер Кордес

ОП подтверждает, что этого Perlдостаточно. И что использование этой -pопции не должно рассматриваться как часть названия языка.
Питер Кордес

4

Желе ,  16  15 байт

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

Полная программа, принимающая строковый аргумент (в формате Python), который печатает результат.

Попробуйте онлайн!

Как?

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

Примечание: Ḋ⁾Hio...работает тоже.


4

Желе , 20 17 байт

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

Попробуйте онлайн!

Монадическая ссылка, принимающая входные данные в качестве аргумента и возвращающая строку Jelly.

объяснение

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

1
Подожди, у желе есть встроенный просто для слова "желе"?
connectyourcharger

3
@connectyourcharger это сжатое словарное слово
Ник Кеннеди

Ах, это имеет смысл
connectyourcharger

4

VBA (Excel), 27 28 байт

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

Ввод идет в ячейку A1 Активного листа в Excel, запускайте код в Немедленном окне

Использует тот факт, что "SomeString"SomeValueи SomeValue"SomeString"будет неявно объединяться, и что если пропустить третий аргумент из MIDфункции, будут взяты все символы с конца ввода - превращение его в функцию «сбросить начальные символы»

(-1 байт благодаря Shaggy, но +1, когда OP подтвердил, что все ответы должны заканчиваться восклицательным знаком)
(-1 байт благодаря Тейлору Скотту, напомнившему мне, что окончательная двойная кавычка была необязательной)


1
Не могли бы вы удалить пробел после Hiи заменить 5на 4?
лохматый

@ Шэгги ... Да, да, я мог.
Понятия

1
Вы можете отбросить байт, удалив самый последний "из этого решения, и, поскольку вы используете оценочную нотацию (квадратные скобки), вы должны пометить это решение как Excel VBA, так как эта нотация доступна только в Excel
Тейлор Скотт,


3

05AB1E , 23 21 байт

Сохранено 2 байта благодаря Кевину Круйссену

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

Попробуйте онлайн!

объяснение

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

21 байт . И очень жаль, что восклицательный знак есть .. Так •äƵí•hRкак на 1 байт короче, чем "05AB1E". :)
Кевин Круйссен

@KevinCruijssen: Ух ты! Я чувствую себя глупо, что я не начал с ",". Да, я тоже пытался •äƵí•hR, но, как вы говорите, это, к сожалению, здесь не спасает.
Эминья

3

QuadR , 22 байта

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

Попробуйте онлайн!

Это заменяет:

^... три начальных символа
и
$ конец строки

с участием

Hi
и
,I'm QuadR
соответственно


Таким образом, вы могли бы поменять две средние строки и сменить язык на Retina и все же набрать ответ @ KevinCruijssen?
Нейл

@ Нейл, наверное, но твои еще короче. Tbf, QuadR - это всего лишь тонкий чехол для ⎕Rоператора APL, не предназначенного для игры в гольф .
Адам

Ах, но мой ответ работает только для Retina 1, но не Retina 0.8.2.
Нейл

3

Сетчатка , 22 21 байт

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

Попробуйте онлайн! Ссылка включает в себя тестовые случаи. Не работает в Retina 0.8.2, поэтому вместо этого адаптируйте ответ @ Adám QuadR. Объяснение: Шаблон пуст, поэтому он совпадает в каждой позиции входной строки. Нам нужен только третий (или четвертый сработает) матч. Подстановка затем применяется к этому совпадению. В рамках этой замены $'относится к остальной части строки и $`относится к началу строки.


3

Сетчатка 0.8.2 , 26 25 23 байта

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

-1 байт благодаря @attinat .
-2 байта, портируя ответ @ Adám QuadR , так что убедитесь, что проголосовали за него !!

PS: @Neil опубликовал более короткий ответ Retina в новой версии , поэтому я явно изменил этот ответ на Retina 0.8.2.

Попробуйте онлайн.

Объяснение:

Замените первые три символа на «Привет»:

^...
Hi

А затем добавить завершающий "Я Retina!" (заменив конец строки):

$
, I'm Retina!

1
Не должно быть , как это вместо этого?
attinat

2
или лучше, 25 байтов
attinat

@attinat А, конечно, даже не заметил неправильный вывод ..>.> И спасибо за -1!
Кевин Круйссен

3

Баш, 24 байта

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

TIO


заменить bashна, $0чтобы сохранить пару байтов
roblogic

1
@roblogic, $0напечатал бы имя сценария или выполнялся, bash -c 'echo Hi ${@:2}, $1 $0!' bash $@но должен был бы иметь размеры
Nahuel Fouilleul
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.