Babam şakalar eğlencelidir


49

Hepimiz böyle bir şeye giden klasik baba şakasını biliyoruz:

  1. Birileri kendi kendini tanımlamak için bir cümle söylüyor (örneğin I'm tiredveya I'm confused).

  2. Bir baba şakası meraklısı gelir ve cevap verir Hi <adjective>, I'm Dad!, çünkü tanıtımlarda aynı format I'm Peterizlenir (aynı format izlenir I'm hungry).

İşiniz, kendi kendini tanımlayan bir formda bir girdi almak ve uygun bir baba şakası formu çıkarmak, ancak "Baba" kelimesini kullanmak yerine, programladığınız programlama dilinin adını kullanacaksınız. içinde.

Test durumları (Python tarafından ayrıştırıldığını varsayalım):

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!

Şimdi bu test durumlarının Golfscript tarafından ayrıştırıldığını varsayalım:

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!

Kesin zorluk:

  1. Standart girişi kullanarak veya bir fonksiyon aracılığıyla kendini tanımlayıcı formatta ( I'm <adjective>veya I'm a(n) <noun>) bir dizeye alın .

    • Bir noktalama işaretinin olmadığını varsayalım.

    • Kelimenin I'mkullanıldığını ve kullanılmadığını varsayalım I am.

  2. Bunu bir baba şakası biçimine dönüştürün - tam olarak nasıl görünmesi gerektiğine ilişkin yukarıdaki örnekleri inceleyin.

Diğer şey:

  • Bu , yani en kısa bayt sayısı kazanıyor.

  • Takip standart mazgal kurallarını - Bunlardan hiçbiri, lütfen.

  • İyi eğlenceler!


Liderler Sıralaması

Aşağıdaki widget'ı / snippet'ini genişleterek bu yayının lider tablosunu görüntüleyebilirsiniz. Gönderinizin sıralamada yer alması için # header text, aşağıdaki bilgileri içeren bir başlığa ( ) ihtiyacınız vardır :

  • Dilin adını (virgül ,veya kısa çizgi ile bitirin -), ardından ...

  • Başlığınızda görünecek son sayı olan bayt sayısı.

Örneğin JavaScript (ES6), 72 bytes, geçerli ancak Fortran, 143 bytes (8-bit)bayt sayısı başlığındaki son sayı olmadığı için geçersiz (cevabınız 8 bayt olarak kabul edilecek - bundan faydalanmayın).

<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
Aileme karımın beklediğini söylememin yollarından biri, mümkün olduğu kadar çok baba şakası yapmak ve kimin yakalandığını görmek oldu!
Giuseppe

7
Bazı örnek çıktılar ünlemle bitiyor, bazıları çıkmıyor. Önemi nedir
özyinelemeli

9
Alışılmış uygulama bir cevabı kabul etmeden önce çok daha uzun süre vermektir, eğer hiç yapmazsanız: codegolf.meta.stackexchange.com/q/2035/66252
user2390246

7
Ve kravat kıran oy değil, ilk önce en düşük puana ulaşan oydu.
Shaggy

4
Şimdi bir sonraki golf dili için bekleyen bu isim boş bir dizedir.
640KB,

Yanıtlar:


26

V , 13 bayt

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

Çevrimiçi deneyin!

Tsh'nin cevabından ilham alındı

Bu I'm, metni başlangıçtan silerken dizenin başından itibaren yanmış ve <C-r>"ekleme modundayken sonuna yapıştırdığı gerçeğinden yararlanır .


Sadece düzenlenebilir I'miçin <C-O>p... sonra cevabınızı fark
tsh

2
Vim ve escape5 karakter kullanan bir golf dili ???
mowwwalker

4
@mowwwalker Nope. Gerçekten bayt 0x1B, ancak yazarken ne anlama geldiği daha kolay ve daha açık <esc>. Aynı için <C-r>gerçekten,0x12
DJMcMayhem

@DJMcMayhem, ah çok daha mantıklı
mowwwalker

18

C (gcc) , 59 42 33 bayt

@Conor O'Brien, içe aktarma işleminin gerekli olmadığına dikkat çeken -17 bayt sayesinde

@Tsh sayesinde -9 bayt, fonksiyon yazmanın daha kısa, UB yolunu gösterir

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

Çevrimiçi deneyin!

Girişin ilk 3 karakterini keser (kaldırır I'm) ve onu istenen metin ile çevreler.


Program içe aktarma olmadan derlenir, böylece onu 42 bayta bırakabilirsiniz.
Conor O'Brien,

@ ConorO'Brien güzel yakalamak!
Neil A.

3
Ve int ayrıca isteğe bağlıdır.
tsh

2
(?) Ve ayrıca char*, belki ...; bu yüzden a(x){printf("Hi%s, I'm C!",x+3);}çalışmalı
tsh

2
@tsh: evet, tanımlanmamış davranışa rağmen, 32-bitlik C uygulamalarının çoğunda çalışacak ( kısaltmadan intbir tutabilir char*). Linux'ta x86-64 gcc'de, her zaman bir PIE çalıştırılabilir dosyasında başarısız olur (genellikle hiçbir sanal işaretçi 32 bit sanal adres alanında işaretçiler yoktur ve gcc x+3, işlev bağımsız değişkeninden hesaplanırken yüksek 32 bitleri kopyalamaz . RDI kaydı). Ancak, PIE olmayan bir yürütülebilir dosyada, statik adresler sanal bit sanal adres boşluğunun 31 bitinde bulunur; bu nedenle, arayan bir dize değişmez veya statik bir arabellek geçirirse işe yarar.
Peter Cordes

16

V , 13 bayt

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

Çevrimiçi deneyin!

Yeni V. Sadece 30 dakika önce biliyordum. Neyse, bu dil seçildi, çünkü adı yalnızca 1 bayta mal oldu. <End>V’de anahtarın nasıl gönderileceğinden emin değilim . Çoğu vim ortamı bu örnekte yer <End>değiştirmiş sayılır <Esc>A. Ancak, biliyorsunuz, V, vim'den 2 karakter daha kısa. :)

@Candy Gumdrop sayesinde 1 bayt kazandırır.


1
Değiştirerek bir bayt kurtarabilecek c3liçin cE.
Candy Gumdrop

@CandyGumdrop Vay, daha Eönce büyük davayı bilmiyordum .
tsh

Ayrıca cW(farklı görünüyor, ama aslında aynı cE) yapabilir 3s. İyi iş! Hemen hemen tam bir cevap göndermek üzereydim, zaten 2 V cevap olduğunu gördüm, ki bu güzel bir sürprizdi. Birkaç farklı yaklaşım denedim, ancak <13 bayt almanın mümkün olup olmadığından emin değilim.
DJMcMayhem

11

Stax , 13 bayt

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

Koş ve hata ayıkla

Ambalajsız, ağzı açılmış ve yorumlanmış gibi görünüyor.

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

Son yorumu bir satır yukarı taşmıştım, çünkü hiçbir şey sonlandırılmamış bir dize değişmezini takip edemez.

Bunu çalıştır


Kazananınızı ilan edeceğim, çünkü gönderiniz daha fazla oy aldı, ama teknik olarak bir başkasıyla bağlandınız. Tebrikler!
seninle iletişime geç

10

beyin fırtınası, 164

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

Çevrimiçi deneyin!

"Brainfuck!" dizenin bir kısmı bu araçla üretilmiştir , muhtemelen elle daha fazla golf oynayabilir.



10

Excel, 36 33 bayt

Johan du Toit sayesinde -3 bayt.

Giriş A1'e giriyor.

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

İlk girişim:

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

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

@JohanduToit teşekkür ederiz. A1bunun yerine B13aslında 33 bayt.
Wernisch

8

Python 3 , 35 34 bayt

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

Çevrimiçi deneyin!

Cehalet Uygulaması sayesinde -1 bayt

Ayrıca Gábor Fekete sayesinde yeni biçimlendirilmiş dizeleri kullanan 34 bayt:

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

Çevrimiçi deneyin!



Ya kaybetmek lambda s:ve %s[3:]onunla değiştirmek %input()[3:]? (-4 bayt)
niko

@ niko ne söylediğini anlarsam, bu hiçbir şeyi basmaz. Bu sitedeki varsayılan kurallar çıktıyı basan tam bir program veya çıktıyı döndüren bir işlevdir. Genellikle önerdiğiniz şeyin bir parçacığı olarak adlandırılır ve tam bir çözüm olmazdı print(), 7 bayt daha sarılması gerekiyordu , bu yüzden Python cevapları genellikle lambda kullanıyor.
Stephen

Fakat buradaki (ve aslında çoğu) cevaplarınızdan ne kadar farklı? Demek istediğim, her ikisi de kendi başlarına hiçbir şey yazdırmıyor ve her ikisi de aynı çıktıyı döndürüyor? (Burada oldukça yeni - hala
CG'ye

2
@ niko Tamam! İle lambda sbir (anonim) işlev tanımladım. TIO bağlantısındaki üstbilgiye ve altbilgiye bakarsanız, bu işlevi fadlandırır ve sonra onu çağırırım f("I'm whatever"). Ardından işlev beklenen çıktıyı döndürür. Snippet'inizle, ne yazdırmazsınız, ne de bir işlevden döndürmezsiniz - yalnızca doğru sonucu değerlendiren bir kod kodunuz vardır, ancak bununla hiçbir şey yapmazsınız. Programları birden çok kez çalıştırabilir, işlevleri birden çok kez çağırabilirsiniz, ancak snippet yalnızca bir snippet'tir.
Stephen

6

R 45 44 39 bayt

@Giuseppe Düzenle

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

@AaronHayman Düzenle

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

Çevrimiçi deneyin!


"(I'm )ile değiştirerek bir bayt kurtarabilir"(.* )
Aaron Hayman

1
@AaronHayman, I'm a programmeraçgözlülük nedeniyle (birçok alanda) işe yaramıyor
Nahuel Fouilleul

@NahuelFouilleul Doğru, ilk boşlukta mı yoksa son boşlukta mı karar vereceğinden emin değildim.
niko,

1
Tamam, bir bayt kurtardım ve sanırım bu düzgün çalışıyor . Çevrimiçi deneyin!
Aaron Hayman

2
Değiştirerek 2 bayt subiçin "I'm(.*)" and "Hi\\1, I'm R"ve kullanma girdiyi standart girdiden alarak 3 bayt scan: Online Deneyin
Giuseppe

6

PHP ,34 32 bayt

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

Çevrimiçi deneyin!

İle giriş yap STDIN, -F ile ara.

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

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

unassembled:

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

Bağımsız bir çalıştırılabilir DOS programı. Komut satırından giriş, ekrana çıkış.

görüntü tanımını buraya girin

DAD.COM’u indirin ve test edin .

* Buradaki tam "dil" adı, CPU makine kodu biçimsel anlamda gerçekten bir dil olmadığı için biraz belirsizdir. Hedef platform için genel olarak anlaşılan ve kabul edilen bir ad olarak "x86" ile devam etmek.


[yorumu ana başlıktan aşağıya çeker] "x86" mimarisi derken, "MA SM" bu mimaride mevcut dillerden biri olurdu (bunun içinde bir boşluk olduğunu unutmayın).
Jonathan Allan

5
Bence "x86" muhtemelen gerçekten iyi, sonuçta golf :)
Jonathan Allan


5

Boşluk , 267 bayt

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

Harfler S(boşluk), T(sekme) ve N(yeni satır) yalnızca vurgulama olarak eklenmiştir.
[..._some_action]sadece açıklama olarak eklendi.

Whitespace bir kerede bir karakter girdiğinden, girişin sonunda yeni bir satır içermesi gerekir; böylece karakterleri okumayı ne zaman durduracağını bilir ve giriş yapılır.

Çevrimiçi deneyin (yalnızca ham alanlar, sekmeler ve yeni satırlarla).

Sahte kodda açıklama:

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

Karakterleri ", I'm Whitespace!"ters sırada itilir ve ardından bir döngü halinde yazdırılır. Bu karakterlerin tüm değerleri, baytları kaydetmek için yazdırmadan önce ilmeğe eklenen 102 ile düşürülür. Her karakterin düşürülmesi için bu sabit 102 bu Java programı ile üretilmiştir . Ayrıca, -70her iki boşluk için değeri iki kez itmek yerine , ikinci boşluk "!ecapsetihW m'I ,"ilk kopyalanacak şekilde kopya yerleşik olarak birkaç bayttan tasarruf edilir.


5

IBM / Lotus Notes Formül Dili, 61 62 bayt

+1 çünkü !çıktının sonunda fark etmedim .

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

Düzenlenebilir bir alandan girişini alan hesaplanmış alan formülü i. "Ben bir benim" için başarısız olur, ancak bu hiçbir zaman bir anlam ifade etmeyeceğinden, bunun olmayacağını varsayıyorum.

Utanç olsun, 32 byte, dilin adı formülün toplam uzunluğunun yarısından fazla!

Aşağıda örnek girdi ve çıktı gösteren ekran görüntüsü:

görüntü tanımını buraya girin



eğer ciddi olsaydım, muhtemelen sadece FormulaNotes / Domino geliştirici topluluğunda nasıl bahsedildiğini
söyleyeceğim

1
@PeterCordes - Mümkün ama Lotus Notes / Domino da yerleşik bir dil olarak LotusScript'e sahiptir, bu yüzden muhtemelen biraz daha spesifik olmamız gerekiyor ;-)
ElPedro

1
IBM, IBM Notes’a yeniden markalaştığından bu yana gerçekten biraz daha iyiye gidebilirdi, ancak daha sonra tekrar IBM Domino’ya yeniden markalandı, bu yüzden kesinlikle doğru olduğunu düşünüyorum "Merhaba @PeterCordes, ben IBM Domino Formula"
olmalı

1
@PeterCordes Dil isminin sadece temel kısımlarına ihtiyaç vardır - ya da Perlyerine geçmesini kabul ediyorum . Perl 5Perl 5 -p
seninle iletişime geç

5

sed ( -r), 31 28 25 bayt

Shaggy sayesinde -3 bayt -3 bayt çünkü -rçıktıda gerekli değil

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

TIO



Hmm ... Bayrakları sayma yolumuz, onları farklı diller olarak ilan etmekti, bu yüzden ihtiyacın olabileceğini düşünüyorum , -rama Meta'nın üzerinde durmaya değer.
Shaggy

perl 5 cevap ve yorumlar nedeniyle kaldırıldı
Nahuel Fouilleul

5

Japt , 18 bayt

`Hi{s3}, I'm Japt!

Japt'in string sıkıştırma kütüphanesi% 0 sıkıştırma oranına ulaştığında ...

Dene

18 baytlık bir alternatif daha:

`Hi{Ť}, {¯4}Japt!

1
... ama yine de Jelly ve 05AB1E yener :)
Shaggy,

5

Oktav , 35 bayt

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

Çevrimiçi deneyin!

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

Bir şekilde "Octave" yazmayı denemedim, çünkü yazmadan, 6 karakter buradaki diğer dil isimlerinden bazılarına göre oldukça fazla. Ne yazık ki, yalnızca vervirgülle ayrılmış alanları olan bir yapı çıktısı bulabildim . 6 bayttan fazla sürüyor. :(

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

Çevrimiçi deneyin!


5

Ruby -p , 32 27 26 bayt

-5 bayt Nick Kennedy'nin Jelly cevabını kullanarak .

Dizede farklı bir noktadan bölmeden -1 bayt. Ayrıca eski bayt sayımın yanlış olduğunu da farkettim.

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

açıklama

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

Çevrimiçi deneyin!


Güzel! Girişin nerede?
seninle şarj

@connectyourcharger, bir açıklama ekledi. Giriş STDIN'dir.
Value Ink

Anladım. İyi cevap!
seninle şarj


4

Toplu, 22 + 3 = 25 bayt

@echo Hi %*, %0 Batch!

Bu dosyayı adlandırmak için +3 bayt I'm( .batToplu iş dosyaları için gerekli uzantıyla). Olarak çağırır I'm hungry, o yankı zaman Hi hungry, I'm Batch!.


program almalı I'mancak burada betiğin adı geçerli mi, yoksa betiğin şu anki yoldaki yorumlayıcısı olmadığı sürece
Nahuel Fouilleul

1
@NahuelFouilleul Tercüman CMD, bu yüzden gerçekten 2 bayt kurtarır mıydı?
Neil


4

Perl 5 -p , 31 24 bayt

OP’deki açıklamalara ve @NahuelFouilleul’in önerisine göre azaltın.

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

Çevrimiçi deneyin!



1
ayrıca belki de $^X $]özel değişkenler kullanılabilir, ancak 5'ten daha kısadır$]
Nahuel Fouilleul

Dil adının bir parçası olarak eklemeniz mi gerekiyor5 ? yani Perl 5'in “kendini” düşündüğünü ve “Perl” olduğunu iddia edebilir misiniz? Perl 6'nın varlığından önceki durum buydu ve codegolf cevapları dilin yalnızca en az bir uygulaması üzerinde çalışmalıydı, öyleyse eski olanı seçelim mi?
Peter Cordes

OP bunun Perlyeterli olduğunu onaylar . Ve bu -pseçeneğin kullanılması , dil adının bir parçası olarak düşünülmek zorunda değildir.
Peter Cordes

4

Jöle ,  16  15 bayt

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

Sonucu basan (Python formatlı) bir string argümanını kabul eden tam bir program.

Çevrimiçi deneyin!

Nasıl?

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

Not: Ḋ⁾Hio...Çok çalışır.


4

Jöle , 20 17 bayt

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

Çevrimiçi deneyin!

Girdiyi argüman olarak alan ve bir Jelly string döndüren monadik bir link.

açıklama

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

1
Bekle, Jelly sadece "Jelly" kelimesi için bir yerleşik mi?
seninle şarj

3
@connectyourcharger bu sıkıştırılmış bir sözlük kelimesidir
Nick Kennedy

Ah, bu mantıklı
connectyourcharger

4

VBA (Excel), 27 28 bayt

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

Giriş, Excel'deki Aktif Sayfa'nın A1 hücresine gider, Komut Penceresinde kodu çalıştır

Gerçeği yararlanır "SomeString"SomeValueve SomeValue"SomeString"örtük concatenate ve üçüncü argüman ihmal olduğunu edecektir MIDfonksiyonun girdi sonundan itibaren tüm karakterleri alacak - dönüştürerek bir "başlangıç karakterleri dökümü" fonksiyonu

(Shaggy sayesinde -1 bayt, ancak OP tüm cevapların ünlem işareti ile bitmesi gerektiğini doğruladığında +1)
(-1 çift bayt, son teklifin isteğe bağlı olduğunu hatırlattığını hatırlattı)


1
Eğer sonra boşluk kaldırmak Could Hive değiştirme 5ile 4?
Shaggy

@Shaggy ... Evet, yapabilirim. Nasıl özlediğimden hiçbir fikrim yok, teşekkürler
Chronocidal

1
"Bu çözümden sonuncuyu kaldırarak bir bayt bırakabilirsiniz ve değerlendirme göstergesini (köşeli ayraçlar) kullandığınızda, bu çözümü Excel VBA olarak işaretlemelisiniz, çünkü bu gösterim yalnızca Excel'de kullanılabilir
Taylor Scott


3

05AB1E , 23 21 bayt

Kevin Cruijssen sayesinde 2 bayt kaydedildi

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

Çevrimiçi deneyin!

açıklama

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

21 bayt . Ve ünlem işareti çok kötü orada var .. •äƵí•hR1 bayt daha kısa olduğundan "05AB1E". :)
Kevin Cruijssen

@KevinCruijssen: Vay canına! "," İle başlamadığım için kendimi aptal hissediyorum. Evet, ben de denedim •äƵí•hR, ama dediğin gibi, maalesef burada hiçbir şey kurtarmıyor.
Emigna

3

QuadR , 22 bayt

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

Çevrimiçi deneyin!

Bu değiştirir:

^... üç ilk karakter
ve
$ satır sonu

ile

Hi
ve
,I'm QuadR
sırasıyla


Yani ortadaki iki çizgiyi değiştirip dili Retina olarak değiştirebilir ve hala KevinCruijssen'in cevabını yenebilirsin?
Neil

@ Neil sanırım öyle, ama seninki hala daha kısa. Tbf, QuadR, golf sahası olmayan ⎕RAPL operatörü için ince bir örtüdür .
22’de

Ah, ama cevabım sadece Retina 1 için çalışıyor, ancak Retina 0.8.2 değil.
Neil

3

Retina , 22 21 bayt

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

Çevrimiçi deneyin! Link, test durumlarını içerir. Retina 0.8.2'de çalışmadığından, bunun yerine @ Adám'ın QuadR yanıtını uyarlayın. Açıklama: Desen boştur, bu nedenle giriş dizesindeki her konumda eşleşir. Ancak üçüncü (veya dördüncü çalışmanın) maçına ihtiyacımız var. İkame daha sonra o maça uygulanır. Bu ikame $'içinde, dizenin geri kalanını ve dizenin $`başlangıcını ifade eder.


3

Retina 0.8.2 , 26 25 23 bayt

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

@ Attinat sayesinde -1 bayt . @ Adám'ın QuadR cevabını taşıyarak
-2 bayt , bu yüzden onu yenmeyi unutma!

PS: @Neil , yeni sürümde daha kısa bir Retina cevabı gönderdi , bu yüzden bu cevabı açıkça Retina 0.8.2 olarak değiştirdim.

Çevrimiçi deneyin.

Açıklama:

İlk üç karakteri "Hi" ile değiştirin:

^...
Hi

Ve sonra bir son ekleyin ", Ben Retina!" (dizenin sonunu değiştirerek):

$
, I'm Retina!

1
O böyle olmamalı bu yerine?
attinat

2
ya da daha iyisi, 25 bayt
attinat

@ attinat Ah, elbette, yanlış çıktısını bile fark etmemişti ..>.> Ve -1 için teşekkürler!
Kevin Cruijssen

3

bash, 24 bayt

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

TIO


Birkaç byte tasarruf etmek için bashile değiştirin$0
roblogic

1
@roblogic, $0senaryo adını yazdırabilir veya çalıştırabilir bash -c 'echo Hi ${@:2}, $1 $0!' bash $@ancak boyut olarak
sayılmalıdır
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.