Les blagues de papa sont amusantes

49

Nous connaissons tous la blague classique du père qui ressemble à ceci:

  1. Quelqu'un dit une phrase pour décrire son moi (par exemple I'm tiredou I'm confused).

  2. Un enthousiaste papa-blague arrive et répond Hi <adjective>, I'm Dad!, car les introductions suivent le même format ( I'm Petersuit le même format I'm hungry).

Votre travail consiste à saisir une entrée sous la forme d'auto-descripteur et à générer le formulaire papa-blague approprié, mais au lieu d'utiliser le mot "papa", vous utiliserez le nom du langage de programmation que vous programmez. dans.

Cas de test (supposons qu'ils soient analysés par 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!

Supposons maintenant que ces tests sont analysés par 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!

Le défi exact:

  1. Prenez une chaîne au format auto-descripteur ( I'm <adjective>ou I'm a(n) <noun>) en utilisant l’entrée standard ou par le biais d’une fonction.

    • Supposons qu'il n'y ait pas de ponctuation finale.

    • Supposons que le mot I'mest utilisé et non I am.

  2. Convertissez-le au format papa-blague - voir les exemples ci-dessus pour voir exactement à quoi cela devrait ressembler.

D'autres choses:

  • C'est le , donc le plus petit nombre d'octets gagne.

  • Suivez les règles standard relatives aux échappatoires - aucune d’elles, s'il vous plaît.

  • S'amuser!


Classement

Vous pouvez afficher le classement pour ce message en développant le widget / extrait ci-dessous. Pour que votre message soit inclus dans le classement, vous avez besoin d'un header ( # header text) avec les informations suivantes:

  • Le nom de la langue (le terminer par une virgule ,ou un tiret -), suivi de ...

  • Le nombre d'octets, en tant que dernier numéro à apparaître dans votre en-tête.

Par exemple, JavaScript (ES6), 72 bytesest valide, mais Fortran, 143 bytes (8-bit)invalide car le nombre d'octets n'est pas le dernier chiffre de l'en-tête (votre réponse sera reconnue comme 8 octets - n'en profitez pas).

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

Branchez votre chargeur
la source
39
Une des façons que j'ai envisagée de dire à ma famille à laquelle s'attendait ma femme était de raconter le plus de blagues possible pour les papas et de voir qui a bien compris!
Giuseppe
7
Certains exemples de sorties se terminent par une exclamation et d'autres pas. Quelle est la signification?
récursive
9
La pratique habituelle est de donner beaucoup plus de temps avant d'accepter une réponse, le cas échéant
user2390246
7
Et le point décisif n’est pas le vote, c’est celui qui a atteint le plus bas score en premier.
Shaggy
4
Maintenant, j'attends la prochaine langue de golf dont le nom est une chaîne vide.
640 Ko

Réponses:

26

V , 13 octets

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

Essayez-le en ligne!

Inspiré par la réponse de tsh

Ceci tire parti du fait que le I'mtexte est retiré du début de la chaîne lors de la suppression du texte et qu'il est collé à la fin avec <C-r>"en mode insertion.

Candy Gumdrop
la source
Je vient de modifier I'mà <C-O>ppuis notez votre réponse ...
tsh
2
Une langue de golf utilisant Vim et escapeprend 5 caractères ???
Mowwwalker
4
@mowwwalker Nope. C'est vraiment l'octet 0x1B, mais il est plus facile et plus évident de savoir ce que cela signifie si vous l'écrivez comme <esc>. La même chose pour <C-r>ce qui est vraiment0x12
DJMcMayhem
@DJMcMayhem, ah c'est beaucoup plus logique
mowwwalker
18

C (gcc) , 59 42 33 octets

-17 octets grâce à @Conor O'Brien remarquant que l'importation n'était pas nécessaire

-9 octets grâce à @tsh indiquant un mode d'écriture plus court et UB de la fonction

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

Essayez-le en ligne!

Découpe les 3 premiers caractères de l'entrée (supprime I'm) et l'entoure du texte souhaité.

Neil A.
la source
Le programme se compile sans l'importation, vous pouvez donc le déposer pendant 42 octets.
Conor O'Brien
@ Belle prise de ConorO'Brien!
Neil A.
3
Et le int est aussi facultatif.
tsh
2
(?) Et aussi char*, peut-être ...; alors a(x){printf("Hi%s, I'm C!",x+3);}devrait fonctionner
tsh
2
@tsh: oui, en pratique, cela fonctionnera avec la plupart des implémentations C 32 bits (où un intpeut tenir un char*sans le tronquer), malgré le comportement indéfini. Sous x86-64 gcc sous Linux, il échouera toujours dans un exécutable PIE (généralement, aucun pointeur ne se trouve dans les 32 bits d'espace d'adressage virtuel), et gcc ne copiera pas les 32 bits les plus élevés lors du calcul à x+3partir de le registre RDI). Mais dans un exécutable non-PIE, les adresses statiques se trouvent dans les 31 bits de l'espace d'adressage virtuel le plus bas possible. Par conséquent, si l'appelant transmettait un littéral de chaîne ou un tampon statique, cela fonctionnerait.
Peter Cordes
16

V , 13 octets

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

Essayez-le en ligne!

Nouveau sur V. Je le savais il y a environ 30 minutes. Quoi qu'il en soit, cette langue est choisie simplement parce que son nom ne coûte qu'un octet. Je ne sais pas comment envoyer la <End>clé en V. La plupart des environnements vim accepteraient <End>de remplacer <Esc>Acet exemple. Mais, vous savez, V est 2 caractères plus court que vim. :)

Grâce à @Candy Gumdrop , enregistre 1 octet.

tsh
la source
1
Pourrait sauver un octet en changeant c3là cE.
Candy Gumdrop
@CandyGumdrop Wow, je ne connaissais pas les majuscules Eavant.
tsh
Vous pouvez également faire cW(ce qui semble différent, mais est en fait identique à cE) ou 3s. Bon travail! J'étais sur le point de poster presque cette réponse quand j'ai vu qu'il y avait déjà 2 réponses en V, ce qui était une bonne surprise. J'ai essayé plusieurs approches différentes, mais je ne suis pas sûr qu'il soit possible d'obtenir <13 octets.
DJMcMayhem
11

Stax , 13 octets

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

Exécuter et déboguer

Déballé, non golfé et commenté, cela ressemble à ceci.

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

J'ai déplacé le dernier commentaire d'une ligne, car rien ne peut suivre un littéral de chaîne non terminé.

Exécuter celui-ci

récursif
la source
Je vais vous déclarer gagnant car votre message a obtenu plus de voix, mais techniquement, vous étiez à égalité avec une autre personne. Toutes nos félicitations!
connectyourcharger
10

brainfuck, 164

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

Essayez-le en ligne!

Le "brainfuck!" une partie de la chaîne est générée avec cet outil, vous pouvez probablement jouer au golf plus loin à la main.

boîte en carton
la source
2
Essayez BF Crunch
Jo King
10

Excel, 36 33 octets

-3 octets grâce à Johan du Toit.

L'entrée va dans A1.

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

Premier essai:

=REPLACE(A1,1,3,"Hi")&", I'm Excel!"
Wernisch
la source
="Hi "&MID(B13,4,99)&", I'm Excel"34 octets
Johan du Toit
Merci @JohanduToit. A1au lieu de B1333 octets.
Wernisch
8

Python 3 , 35 34 octets

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

Essayez-le en ligne!

-1 octet grâce à l'incarnation de l'ignorance

Également 34 octets, en utilisant les nouvelles chaînes formatées, grâce à Gábor Fekete:

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

Essayez-le en ligne!

Stephen
la source
3
34 octets
Incarnation de l’ignorance
Qu'en est-il de perdre lambda s:et de remplacer %s[3:]par %input()[3:]? (-4 bytes)
niko
@ nniko si je comprends ce que vous dites, cela n'imprimera rien. Les règles par défaut sur ce site sont soit un programme complet qui imprime une sortie, soit une fonction qui renvoie une sortie. Habituellement, ce que vous suggérez est appelé un extrait de code et ne constitue pas une solution complète. Il doit être encapsulé print()pendant 7 octets supplémentaires. C'est pourquoi les réponses Python utilisent généralement lambdas.
Stephen
Mais en quoi cela diffère-t-il de votre (et même de la plupart) de vos réponses ici? Je veux dire que les deux seuls n'impriment rien et que les deux renvoient le même résultat, non? (Assez nouveau ici - toujours se habituer à CG)
niko
2
@niko C'est bon! Avec lambda s, j'ai défini une fonction (anonyme). Si vous regardez l'en-tête et le pied de page du lien TIO, je nomme cette fonction f, puis je l'appelle avec f("I'm whatever"). Ensuite, la fonction renvoie la sortie attendue. Avec votre extrait de code, vous n'imprimez ni ne retournez aucune fonction. Vous disposez simplement d'un peu de code qui donne le résultat correct, mais ne fait rien avec. Vous pouvez exécuter des programmes plusieurs fois, vous pouvez appeler des fonctions plusieurs fois, mais un extrait de code n'est qu'un extrait de code.
Stephen
6

R 45 44 39 octets

@ Giuseppe Edit

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

@AaronHayman Modifier

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

Essayez-le en ligne!

niko
la source
peut économiser un octet en le remplaçant "(I'm )par"(.* )
Aaron Hayman
1
@AaronHayman, ne travaille pas pour I'm a programmer(beaucoup d'espaces) à cause de la gourmandise
Nahuel Fouilleul
@NahuelFouilleul D'accord, je n'étais pas sûr si le premier ou le dernier espace blanc serait pris en compte.
Niko
1
D'accord, j'ai sauvegardé un octet et je pense que celui-ci fonctionne correctement Essayez-le en ligne!
Aaron Hayman
2
2 octets en modifiant subto "I'm(.*)" and "Hi\\1, I'm R"et 3 octets en prenant l'entrée de stdin à l'aide de scan: Essayez-le en ligne
Giuseppe
6

PHP ,34 32 octets

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

Essayez-le en ligne!

Entrée via STDIN, appel avec -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 Ko
la source
6

x86 ,37 36 octets

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

Non assemblé:

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

Un programme DOS exécutable autonome. Entrée à partir de la ligne de commande, sortie à l'écran.

entrez la description de l'image ici

Téléchargez et testez DAD.COM .

* Le nom exact de "langue" est un peu ambigu, car le code machine de la CPU n'est pas vraiment une langue au sens formel. Utilisation de "x86" en tant que nom généralement compris et accepté pour la plate-forme cible.

640 Ko
la source
[commentaire descendant du fil principal] Je dirais que l'architecture "x86", tandis que "MA SM" serait l'un des langages disponibles sur cette architecture (notez qu'il y a un espace dedans).
Jonathan Allan
5
Je pense que "x86" est probablement très bien, c'est du golf après tout :)
Jonathan Allan
5

Espace blanc , 267 octets

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

Lettres S(espace), T(tabulation) et N(nouvelle ligne) ajoutées uniquement en surbrillance.
[..._some_action]ajouté comme explication seulement.

Etant donné que les espaces ne saisissent qu’un caractère à la fois, l’entrée doit contenir un retour à la ligne de fin afin qu’il sache à quel moment arrêter de lire les caractères et que l’entrée est effectuée.

Essayez-le en ligne (avec des espaces bruts, des onglets et des nouvelles lignes uniquement).

Explication en pseudo-code:

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

Les caractères de ", I'm Whitespace!"sont poussés dans l'ordre inverse, puis imprimés en boucle. Toutes les valeurs de ces caractères sont également réduites de 102, qui sont ajoutées à la boucle avant impression pour économiser les octets. Cette constante 102 pour abaisser chaque caractère avec est générée avec ce programme Java . De plus, au lieu d’appuyer -70deux fois sur la valeur des deux espaces, le deuxième espace "!ecapsetihW m'I ,"est copié à partir du premier avec l’option Copier intégrée pour économiser quelques octets.

Kevin Cruijssen
la source
5

Formule IBM / Lotus Notes, 61 à 62 octets

+1 parce que je n'avais pas remarqué le !à la fin de la sortie.

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

Formule de champ calculé qui prend son entrée d'un champ modifiable i. Cela échouerait pour "je suis un je suis" mais comme cela n'aurait aucun sens, je suppose que cela n'arrivera pas.

Dommage qu’à 32 octets, le nom de la langue représente plus de la moitié de la longueur totale de la formule!

Capture d'écran ci-dessous montrant un exemple d'entrée et de sortie:

entrez la description de l'image ici

ElPedro
la source
5
Il semble que votre langue serait bonne si le nom n’est pas si long :)
connectyourcharger
si j’étais sérieux, j’appellerais probablement juste comme c’est Formulacomment il est fait référence dans la communauté des développeurs Notes / Domino :-)
ElPedro
1
@PeterCordes - Possible mais Lotus Notes / Domino a également LotusScript comme langage intégré, nous devons donc être un peu plus spécifiques ;-)
ElPedro
1
Pourrait aller un peu mieux que ça depuis qu'IBM a changé de nom pour IBM Notes mais ensuite, ils ont encore changé d'IBM Domino, donc je suppose que pour être tout à fait correct, ça devrait être "Salut @PeterCordes, je suis IBM Domino Formula" :)
ElPedro
1
@PeterCordes Seules les parties essentielles du nom de la langue sont obligatoires - j'accepte en Perlsubstitution de Perl 5ou Perl 5 -p.
connectyourcharger
5

sed ( -r), 31 28 25 octets

-3 octets grâce à Shaggy -3 octets car -rinutile dans la sortie

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

TIO

Nahuel Fouilleul
la source
28 octets ?
Shaggy
Hmm ... Pour compter les drapeaux, il fallait les déclarer comme différentes langues. Je pense que vous en aurez peut-être besoin, -rmais il serait utile que Meta intervienne.
Shaggy
j'ai enlevé à cause de perl 5 réponse et commentaires
Nahuel Fouilleul
5

Japt , 18 octets

`Hi{s3}, I'm Japt!

Lorsque la bibliothèque de compression de chaînes de Japt atteint un taux de compression de 0% ...

L'essayer

Une autre alternative à 18 octets:

`Hi{Ť}, {¯4}Japt!
Incarnation de l'ignorance
la source
1
... mais bat encore Jelly et 05AB1E :)
Shaggy
5

Octave , 35 octets

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

Essayez-le en ligne!

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

J'ai essayé de récupérer "Octave" d'une manière ou d'une autre, sans l'écrire, car 6 caractères sont assez comparés à certains des noms de langues utilisés ici. Malheureusement, je n'ai pu trouver que verce qui génère une structure avec des champs séparés par des virgules. Prend plus de 6 octets. :(

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

Essayez-le en ligne!

Stewie Griffin
la source
5

Ruby -p , 32 27 26 octets

-5 octets en exploitant la réponse de Nick Kennedy sur Jelly .

-1 octet de fractionnement sur un point différent de la chaîne. Également réalisé que mon ancien compte a été faux.

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

Explication

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

Essayez-le en ligne!

Valeur d'encre
la source
Cool! Où est votre contribution?
connectyourcharger
@connectyourcharger a ajouté une explication. L'entrée est STDIN.
Value Ink
Je t'ai eu. Bonne réponse!
connectyourcharger
4

Lot, 22 + 3 = 25 octets

@echo Hi %*, %0 Batch!

+3 octets pour nommer ce fichier I'm(avec l' .batextension requise pour les fichiers batch). Invoquer comme I'm hungry, quand il va faire écho Hi hungry, I'm Batch!.

Neil
la source
programme devrait recevoir I'mmais ici le nom du script ne sait pas s'il est valide, ou à moins que ce soit l'interprète dont le script est dans le chemin actuel
Nahuel Fouilleul
1
@NahuelFouilleul L'interprète est CMD, alors est -ce que cela me sauverait 2 octets?
Neil
4

Perl 5 -p , 31 24 octets

Réduit sur la base des éclaircissements fournis par OP et d’une suggestion de @NahuelFouilleul.

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

Essayez-le en ligne!

Xcali
la source
1
29 octets
Nahuel Fouilleul
1
peut-être aussi que $^X $]des variables spéciales pourraient être utilisées, cependant 5 est plus court que$]
Nahuel Fouilleul
Avez-vous besoin d'inclure le 5dans le nom de la langue? En d'autres termes, pouvez-vous affirmer que Perl 5 "se considère lui-même" comme "Perl"? C'était le cas avant Perl 6, et les réponses à codegolf doivent seulement travailler sur au moins une implémentation de la langue, alors choisissez-en une ancienne?
Peter Cordes
OP confirme que cela Perlsuffit. Et que l'utilisation de l' -poption ne doit pas nécessairement être considérée comme faisant partie du nom de la langue.
Peter Cordes
4

Gelée ,  16 à  15 octets

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

Un programme complet acceptant un argument de chaîne (formaté en Python) qui affiche le résultat.

Essayez-le en ligne!

Comment?

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

Note: Ḋ⁾Hio...fonctionne aussi.

Jonathan Allan
la source
4

Gelée , 20 17 octets

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

Essayez-le en ligne!

Un lien monadique prenant l'entrée comme argument et renvoyant une chaîne Jelly.

Explication

ṫ4                | everything from 4th character on
  ;“'ṫṗḶ/÷!Ṗ»     | concatenate ", I’m Jelly!" to the end
             ⁾Hi; | concatenate "Hi" to the beginning
Nick Kennedy
la source
1
Accrochez-vous, Jelly a une fonction intégrée juste pour le mot "Jelly"?
connectyourcharger
3
@connectyourcharger c'est un mot de dictionnaire compressé
Nick Kennedy
Ah, ça a du sens
connectez
4

VBA (Excel), 27 28 octets

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

L'entrée va dans la cellule A1 de la feuille active dans Excel, exécutez le code dans la fenêtre Immédiat

Profite du fait que "SomeString"SomeValueet SomeValue"SomeString"sera implicitement concatenate, et que l' omission du troisième argument de la MIDfonction prendra tous les caractères de la fin de l'entrée - le transformant en une fonction « dump caractères initiaux »

(-1 octet grâce à Shaggy, mais +1 lorsque OP confirme que toutes les réponses doivent se terminer par un point d'exclamation)
(-1 octet grâce à Taylor Scott me rappelant que la double citation finale était facultative)

Chronocide
la source
1
Pourriez-vous supprimer l'espace après Hiet remplacer 5par 4?
Shaggy
@Shaggy ... Oui, oui je pourrais. Je ne sais pas comment j'ai raté ça, merci
Chronocide
1
Vous pouvez supprimer un octet en supprimant le dernier élément "de cette solution. Lorsque vous utilisez la notation d'évaluation (les crochets), vous devez marquer cette solution comme étant Excel VBA, cette notation n'étant disponible que dans Excel.
Taylor Scott
3

05AB1E , 23 21 octets

2 octets sauvés grâce à Kevin Cruijssen

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

Essayez-le en ligne!

Explication

',«                    # append ","
   #                   # split on spaces
    À                  # rotate left
     „Hiš              # prepend "Hi"
         "05AB1E!"ª    # append the language name
                   ðý  # join on spaces
Emigna
la source
21 octets . Et dommage que le point d'exclamation soit là-bas. Depuis, •äƵí•hR1 octet de moins que "05AB1E". :)
Kevin Cruijssen
@KevinCruijssen: Wow! Je me sens stupide de ne pas avoir commencé par le ",". Oui, j'ai essayé •äƵí•hRaussi, mais comme vous l'avez dit, cela n'enregistre malheureusement aucun.
Emigna
3

QuadR , 22 octets

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

Essayez-le en ligne!

Cela remplace:

^... trois caractères initiaux
et
$ la fin de ligne

avec

Hi
et
,I'm QuadR
respectivement

Adam
la source
Donc, vous pouvez échanger les deux lignes du milieu et changer la langue en Retina tout en battant la réponse de @ KevinCruijssen?
Neil
@ Neil, je suppose que oui, mais le tien est toujours plus court. Tbf, QuadR n’est qu’une mince couche pour l’ ⎕Ropérateur APL non destiné au golf .
Adám
Ah, mais ma réponse ne fonctionne que pour Retina 1, pas pour Retina 0.8.2.
Neil
3

Retina , 22 21 octets

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

Essayez-le en ligne! Le lien inclut des cas de test. Ne fonctionne pas dans Retina 0.8.2, adaptez donc la réponse QuadR de @ Adám à la place. Explication: Le modèle est vide. Il correspond donc à chaque position de la chaîne d'entrée. Cependant, nous n'avons besoin que du troisième (ou du quatrième qui fonctionnerait). La substitution est ensuite appliquée à ce match. Dans cette substitution, $'fait référence au reste de la chaîne et $`fait référence au début de la chaîne.

Neil
la source
3

Retina 0.8.2 , 26 25 23 octets

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

-1 octet grâce à @attinat .
-2 octets en portant la réponse de @ Adám QuadR , alors assurez-vous de lui donner son vote !!

PS: @Neil a posté une réponse plus courte sur Retina dans la nouvelle version . J'ai donc explicitement changé cette réponse en Retina 0.8.2.

Essayez-le en ligne.

Explication:

Remplacez les trois premiers caractères par "Hi":

^...
Hi

Et puis ajoutez un ", je suis la rétine!" (en remplaçant la fin de la chaîne):

$
, I'm Retina!
Kevin Cruijssen
la source
1
Ça ne devrait pas être comme ça à la place?
mardi
2
ou mieux, 25 octets
attinat
@attinat Ah, bien sûr, je n'avais même pas remarqué le résultat incorrect.>.> Et merci pour le -1!
Kevin Cruijssen
3

bash, 24 octets

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

TIO

Nahuel Fouilleul
la source
remplacer bashpar $0pour sauvegarder quelques octets
roblogic
1
@roblogic, $0serait le nom du script en cours d' exécution ou imprimer bash -c 'echo Hi ${@:2}, $1 $0!' bash $@mais devrait compter en taille
Nahuel Fouilleul