!Memasukkan! ! n! b! e! t! w! e! e! n!

24

Diposting dari sini .

Tantangan ini sangat "disaring" dari pertanyaan ini . Terima kasih khusus kepada @Akababa!

Dalam tugas ini, Anda harus memasukkan tanda seru di awal string dan setelah setiap karakter.

Aturan

  • Akan selalu ada input string yang tidak kosong. Input tidak akan mengandung tab juga. Anda dapat berasumsi bahwa input hanya berisi karakter dan baris baru ASCII yang tidak dapat dicetak.
  • Input tidak akan mengandung trailing baris baru selama bahasa Anda tidak dapat mendeteksi baris baru.
  • Ini adalah kontes ; jawaban terpendek harus menang.

Contohnya

  • 4 baris baru menghasilkan 5 tanda seru yang dibatasi baris baru. Sangat sulit untuk menempatkan ini sebagai teks penurunan harga, jadi ini dinyatakan sebagai gantinya.
1 2 3 4 5 6
129591 129012 129127 129582

0

Keluaran

! 1! ! 2! ! 3! ! 4! ! 5! ! 6!
! 1! 2! 9! 5! 9! 1! ! 1! 2! 9! 0! 1! 2! ! 1! 2! 9! 1! 2! 7! ! 1! 2! 9! 5! 8! 2!
!
! 0!
asd afjoK ak: e
kPrLd
    fOJOE;
    KFO
KFkepjgop sgpaoj faj

Keluaran

! a! s! d! ! a! f! j! o! K! ! a! k!:! e!
! k! P! r! L! d!
! ! ! ! ! f! O! J! O! E!;!
! ! ! ! ! K! F! O!
! K! F! K! E! P! J! G! O! P! ! s! g! p! a! o! j! ! ! ! f! a! j!

Kasing uji dasar dengan hanya satu karakter:

Sebuah

Keluaran

!Sebuah!

(Pelengkapan otomatis! Hanya bercanda, tidak ada yang seperti itu.) Berisi tanda seru:

!!
!!
!!
!!
!!

Output:

!!!!!
!!!!!
!!!!!
!!!!!
!!!!!
SEBUAH
sumber
7
Saya benar-benar tidak mengerti downvote - ini adalah tantangan yang jelas dan ditulis dengan baik. Re: menjadi duplikat - bukan (sebelumnya '!' Membuat perbedaan besar), dan saya tidak percaya ada yang menyarankan begitu (tidak ada suara dekat).
Jonathan Allan
1
jika suatu bahasa tidak dapat membedakan antara a\ndan a, dapatkah kita mengharuskan tidak ada baris baru yang tertinggal?
Giuseppe
13
Downvotes dimasukkan di antara setiap upvote, seperti yang dijelaskan oleh tantangan.
A
2
Ini sudah mati.
V. Courtois

Jawaban:

33

QuadR , 1 byte

Terima kasih kepada A__ untuk mengurangi separuh jumlah byte!

!

Cobalah online!

Ganti apa-apa dengan !

Adm
sumber
12

Python 3 , 27 byte

lambda s:f"!{'!'.join(s)}!"

Cobalah online!

Jujur, saya berharap seseorang dapat menunjukkan kepada saya cara keren untuk melakukan ini dengan jumlah byte yang lebih kecil.

Pasang kembali Monica
sumber
Ini tidak menangani case baris kosong dengan benar
flakes
@ serpih Apa maksudmu? Jika yang Anda maksud adalah string kosong: kita tidak perlu menangani string kosong (dan terlepas dari output ini !!dalam kasus itu, itulah yang masuk akal bagi saya). Jika Anda maksudkan string \n: ya, karena output yang benar adalah !\n!.
Jonathan Allan
3
@ JAD Sejauh yang saya bisa lihat, itu tidak memiliki string kosong dalam contoh. Bukan hanya itu, tetapi aturan pertama secara harfiah menyatakan "akan selalu ada input string yang tidak kosong."
Pasang kembali Monica
1
Ah saya salah. Contoh pertama memiliki baris kosong di tengah input. Tetapi jawaban ini akan menangani menempatkan tanda seru di tengah itu,!\n!\n! ,. kerja bagus.
serpih
1
codegolf.stackexchange.com/questions/190223/insert-nbetween/… seperti yang Anda katakan menunjukkan cara yang lebih pendek
U10-Forward - Reinstate Monica
10

Haskell, 18 byte

('!':).(>>=(:"!"))

-1 byte terima kasih kepada @nimi

Cobalah online!

Leo Tenenbaum
sumber
2
('!':).menghemat satu byte.
nimi
8

JavaScript (ES6), 19 byte

Mengambil input sebagai array karakter.

s=>`!${s.join`!`}!`

Cobalah online!


JavaScript (ES6),  23  20 byte

Disimpan 3 byte berkat @ShieruAsakoto

Mengambil input sebagai string.

s=>[,...s,,].join`!`

Cobalah online!


JavaScript (ES6), 22 byte

Disarankan oleh @tjjfvi

Mengambil input sebagai string.

s=>s.replace(/|/g,"!")

Cobalah online!

Arnauld
sumber
@tjjfvi Bagus sekali!
Arnauld
5
Saya punya 20 untuk 23 Anda:s=>[,...s,,].join`!`
Shieru Asakoto
7

R , 25 byte

function(x)gsub("","!",x)

Cobalah online!

Suatu fungsi yang menerima dan mengembalikan vektor karakter.

Nick Kennedy
sumber
Dapat mencukur 3 byte dengan mengalihkan bentuk fungsi ke scan(,''), seperti tio.run/##K/r/P724NElDSUlHSVFJpzg5MU9DR11dU/O/…
Sumner18
@ Sumner18 terima kasih. Saya mulai dengan itu tetapi membagi input di spasi.
Nick Kennedy
1
@ Sumner18 Tantangannya meminta untuk menangani input dengan baris baru, yang tidak dapat dilakukan dengan scan(tetapi solusi Nick mana yang menangani, setidaknya jika Anda menampilkan output dengan cat.)
Robin Ryder
7

8086 kode mesin, format .COM (MS-DOS 2+), 32 byte

(-1 tergantung pada emulator: lihat di bawah)

Untuk hasil terbaik redirect input standar dari file, karena mengetik memberikan output yang tampak aneh karena tidak ada buffering; juga, baris baru terlihat sedikit aneh karena disimpan sebagai CR LF, dan CRbagian mengacaukan output.

Program ini berperilaku baik dalam emulasi MS-DOS yang sebenarnya (misalnya PCj) tetapi DOSBox tampaknya memiliki masalah dengan Ctrl + Z EOF (lihat komentar dalam daftar perakitan), jadi JANGAN mencoba memasukkan input menggunakan konsol di DOSBox kecuali jika Anda tambahkan cek ekstra!

BB 01 00 53 59 BA 0B 01 B4 40 CD 21 4A 4B B4 3F CD 21 85 C0 74 09 B4 40 43 41 CD 21 49 EB EE C3

Beberapa bit yang menarik:

  • Saya menghemat beberapa ruang data dengan menggunakan kembali memori yang sudah dieksekusi ( 21HdalamINT 21H kebetulan !)

  • Saya hampir dapat menggunakan trik menarik yang saya temukan di halaman "The Hidden Power of BCD Instruksi" yang memungkinkan saya untuk menggunakan AAAdaripada standar TESTuntuk dibandingkan ALdengan 0, menghemat satu byte. Sayangnya, ini tidak sepenuhnya didokumentasikan sehingga saya tidak bisa mengandalkannya: misalnya, PCjs tidak menyesuaikan apa pun kecuali flag carry dan tambahan. :-(

Kode perakitan (mode ideal TASM):

IDEAL
MODEL   TINY

CODESEG
ORG 100H

;; DOSBox (tested with 0.74-2) didn't seem to handle Ctrl-Z as EOF
;; so uncomment the ";;" lines to run it there.
MAIN:
    MOV     BX,1
    PUSH    BX
    POP     CX
    MOV     DX,OFFSET MAIN_1+1  ; The 21H in INT 21H
    MOV     AH,40H
MAIN_1:
    INT     21H
    DEC     DX
    ;;PUSH  DX
    ;;POP   SI
IO_LOOP:
    DEC     BX
    MOV     AH,3FH
    INT     21H
    ;;; This should work on an non-emulated PC. 
    ;;;AAA      ; AL=0?
    TEST    AX,AX
    JZ      DONE
    ;;CMP   [BYTE PTR SI],1AH
    ;;JZ    DONE
    MOV     AH,40H
    INC     BX
    INC     CX
    INT     21H
    DEC     CX
    JMP     IO_LOOP
DONE:
    RET
ENDS
END MAIN
ErikF
sumber
7

brainfuck , 24 22 byte

-2 byte berkat JoKing.

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

Cobalah online!

Krzysztof Szewczyk
sumber
@JoKing terima kasih, saya sudah memperbarui jawaban saya.
Krzysztof Szewczyk
sial, itu badass
Cruncher
6

Pepe , 47 byte

REREEeRErEErREeeEeeeeEREEeeREEeereeREEEEeeEReee

Cobalah online!

Penjelasan:

REREEeRE # Push 0,then input (str),then 0 -> (R)
         # The zeroes are pushed to correct the inserting
rEE # Begin loop labelled 0 -> (r)
  rREeeEeeeeE # Push "!" -> (R)
              # r flag inserts it instead of pushing
  REEeeREEee # Move pointer pos 2 steps forward -> (R)
ree # Loop while (R) != 0
REEEEeeE # Remove characters of (R) that are in stack of (r)
         # Removes the 0 in (R)
Reee # Output (R)
tidak terdefinisi
sumber
Bagaimana Anda menulis kode ini? Apakah ada beberapa konverter kode yang Anda gunakan? Ini sepertinya gila untuk dicoba dan ditulis
Cruncher
1
@Cruncher 1) Saya menggunakan ini sebagai panduan saya. 2) Tidak, saya tidak menggunakan konverter kode, saya hanya menggunakan panduan untuk menulis kode.
u_ndefined
6

Labyrinth ,  19 11 10  9 bytes

33
..
",@

Cobalah online!

Bagaimana?

Kami memasuki Labyrinth di kiri atas yang berhadapan dengan tumpukan nol ...

                         I / O    stack
                                  0,0,0,...
3 - pop * 10 + 3                  3,0,0,0,...
  - 2 neighbours, forward
3 - pop * 10 + 3                  33,0,0,0,...
  - 2 neighbours, forward
. - pop & print chr          !    0,0,0,...
  - T junction from the side
  -   TOS==0, forward
, - read chr or -1       L        76,0,0,0,...   or   -1,0,0,0
  - T junction from the base
  -   if TOS > 0 right:
" -     no-op                     76,0,0,0,...
  -     2 neighbours, forward
. -     pop & print chr      L    0,0,0,...
  -     T junction from the side
  -       TOS==0, forward
3 -       ...back to the start
  -   elif TOS == -1 left:
@ -     exit                                          we're out!


  * right, but on the first occasion (from above) we hit the wall and turn
    around, so that's like a left

Untungnya kita tidak perlu menangani un-printable, jika nol-byte pertama akan membalikkan kita ,dan bermain malapetaka.

Jonathan Allan
sumber
5

sed , 12 byte

s/\b\|\B/!/g

Cobalah online!

-3 bytes terima kasih kepada Sapi Quack

Jonah
sumber
Sebenarnya kode Sed hanya 15 karakter di sana: Coba online! .
manatwork
Terima kasih banyak. Saya tidak jelas bagaimana itu bekerja ...
Jonah
1
s/\b\|\B/!/gjuga bekerja untuk 12 byte
Kritixi Lithos
@Cowsquack terima kasih. diperbarui.
Jonah
4

Zsh , 32 byte

for c ('' ${(s::)1})echo -nE $c!

Cobalah online!

(s::)terpecah menjadi karakter, ''menambahkan elemen kosong ke awal, dan kemudian echo -nE $c!menggemakan masing-masing diikuti oleh !.

Fungsi Gamma
sumber
4

Perl 5 -p0, 17 6 byte

s,,!,g

Cobalah online!

Jawaban asli saya adalah -p dan $_='!'.s,.,$&!,gr. Terima kasih kepada @Nahuel Fouilleul untuk memotong 11 byte dan @Grimy untuk -p0tipnya.

Kjetil S.
sumber
2
6 byte
Nahuel Fouilleul
1
@NahuelFouilleul -lpmemberikan output yang salah untuk \n\n\n\ncase uji (mengembalikan 4 baris yang dipisahkan !daripada 5 yang ditentukan). -p0berfungsi dengan benar.
Grimmy
4

6502, 12 byte (13 byte jika Apple II)

6502

Kode mesin mengasumsikan bahwa sepasang lokasi nol halaman terhubung ke perangkat keras input karakter ($ FE) dan output (FF). Banyak sistem berbasis 6502 memfasilitasi I / O dengan cara ini, meskipun alamat I / O biasanya tidak berada di halaman nol.

Untuk kesederhanaan, saya menggunakan Py65 , sebuah simulator sistem komputer 6502 yang ditulis dengan Python.

Berikut ini adalah dump memori dari Py65. Anda dapat memuat kode berikut di mana saja di halaman nol sehingga tidak tumpang tindih dengan $ FE dan $ FF.

       PC  AC XR YR SP NV-BDIZC
6502: 0000 00 00 00 ff 00110010
.mem 0:b
0000:  a9  21  85  ff  a5  fe  f0  fc  85  ff  d0  f4

Berjalan di jendela perintah Windows, Anda dapat menempel (Ctrl + V) teks apa pun yang Anda inginkan, atau Anda cukup mengetik. Jika mengetik, tekan Ctrl + J untuk baris baru (karakter ASCII yang sama). Tekan Ctrl + C untuk mengganggu prosesor dan kembali ke command prompt Py65.

Secara alami, kode assembly lebih mudah dibaca.

       PC  AC XR YR SP NV-BDIZC
6502: 0000 00 00 00 ff 00110010
.d 00:0b
$0000  a9 21     LDA #$21
$0002  85 ff     STA $ff
$0004  a5 fe     LDA $fe
$0006  f0 fc     BEQ $0004
$0008  85 ff     STA $ff
$000a  d0 f4     BNE $0000

Untuk kejelasan, berikut adalah kode perakitan dalam format CBA65 .

; ASSEMBLE:
; cba65 bangit
;
; LOAD/RUN
; python3 py65/monitor.py -i 00fe -o 00ff -l bangit.bin
; goto 0000

        .FILES  BIN=256

; I/O LOCATIONS
GETC    .EQU    $FE             ; (1) MOVING PY65'S GETC TO ZP SHAVES 1 BYTE
PUTC    .EQU    $FF             ; (1) MOVING PY65'S PUTC TO ZP SHAVES 2 BYTES

        .ORG    $0000

VROOM   LDA     #'!'
        STA     PUTC
VROOM2  LDA     GETC
        BEQ     VROOM2
        STA     PUTC
        BNE     VROOM

        .END

Apple II

Kode di atas mengasumsikan nol menunjukkan tidak ada input, jadi lanjutkan polling hingga nilai yang bukan nol dikembalikan.

Sebagai perbandingan, Apple I dan Apple II memberi sinyal ketersediaan karakter baru dengan menetapkan bit 7 dari alamat I / O keyboard, yang kemudian harus dihapus setelah mengambil karakter. Pada sistem tersebut, karakter I / O biasanya dilakukan dengan memanggil rutinitas monitor sistem alih-alih mengakses perangkat keras secara langsung.

Dengan memanggil RDKEY ($ FD0C) dan COUT ($ FDED), yang setara dengan Apple II di atas dapat dikodekan dalam 13 byte, dan dapat dijalankan di mana saja dalam RAM. Berikut adalah kode yang saya jalankan di Apple // e emulator, a2ix di Android 9.

Menekan Pengembalian memiliki efek yang sama dengan baris baru.

*300L

0300-   A9 A1       LDA   #$A1
0302-   20 ED FD    JSR   $FDED
0305-   20 0C FD    JSR   $FD0C
0308-   20 ED FD    JSR   $FDED
030B-   F0 F3       BEQ   $0300

Apakah Anda memperhatikan bahwa alih-alih nilai ASCII normal # $ 21 untuk titik seru, # $ A1 digunakan sebagai gantinya? Itu karena mengirim nilai ASCII standar ke COUT menyebabkannya ditampilkan dalam "mode terbalik," hitam putih. Menampilkan ASCII dalam warna putih normal pada hitam memerlukan penambahan # $ 80 pada nilai karakter di akumulator sebelum memanggil COUT. Karena RDKEY mengembalikan karakter dengan set hi-bit, program perakitan umumnya membersihkan bit karakter untuk mendapatkan nilai ASCII sebelum menggunakannya.

lee
sumber
1
Selamat datang di situs ini! :)
Rahul Bharadwaj
Terima kasih, @Rahul!
lee
4

Pesta , 36 byte

while read -n1 c;do printf \!$c;done

Cobalah online!

Ini bergantung pada baris baru yang menghentikan input untuk yang terakhir! menandai.

berdesis
sumber
Selamat datang! Harap pertimbangkan untuk menambahkan penjelasan atau tautan ke juru bahasa atau sesuatu, karena jawaban hanya kode ditandai sebagai berkualitas rendah.
mbomb007
@ mbomb007, terima kasih atas penunjuknya.
spuck
1
Sayangnya ini tidak menambahkan !di akhir input.
Kritixi Lithos
@Cowsquack: di terminal saya, baris baru yang menghentikan input mendapatkan! ditambahkan. Pada tio.run, input harus diakhiri dengan carriage return. Saya telah memperbarui tautan ke Try it Online untuk mencerminkannya.
spuck
4

MarioLANG , 95 94 90 89 69 byte

++++++
======< >)
>+++++++",+[
=======<.==<
>+++++++!(.-
========#===

Cobalah online!

Pertama kali mencoba MarioLANG, itu sangat menyenangkan!

Terima kasih kepada Jo King untuk -20 byte

Penjelasan:

Jadi, seperti namanya, MarioLANG dibuat untuk mengeksekusi seperti permainan Super Mario Bros. Ini beroperasi mirip dengan BF, dengan memori yang diatur dalam rekaman sel. Ada operator untuk menambah, mengurangi, mencetak (seperti ascii atau numerik) dan membaca ke dalam sel memori saat ini, dan operator untuk bergerak ke kiri atau ke kanan sepanjang pita.

Mario (penunjuk instruksi) selalu dimulai di sel kiri atas program, dengan arah gerakan yang diinginkannya diatur ke kanan. Jika Mario tidak memiliki objek seperti lantai di bawahnya (=, ", atau #), ia akan jatuh hingga mencapai objek seperti lantai. Jika Mario meninggalkan ruang program, program berakhir karena Game Over :(

Program khusus ini pada dasarnya dapat dibagi menjadi dua bagian: setup, dan loop.

   Setup                          Loop
-----------------------------------------------
                       |
++++++                 |          
======<                |          >)
>+++++++               |          ",+[
=======<               |          .==<
>+++++++               |          !(.-
========               |          #===

Di bagian Penyetelan, kami hanya menambah sel memori pertama hingga mencapai 33 - nilai ASCII untuk "!". Cukup mudah; jika ini bisa golf, itu murni masalah bentuk. Mario mulai dari kiri atas, mengambil 10 koin, mulai jatuh ketika mengambil tanggal 11, berganti arah, lalu mengulangi. Dia mengambil 11 koin terakhir tanpa mengubah arah; ia mengakhiri bagian pengaturan di "+" paling kanan bawah.

Di bagian loop, Mario mulai dengan mencapai lift. "!" Operator membuatnya berhenti bergerak, sehingga ia tetap di lift. Di perjalanan, itu mencetak karakter ASCII yang sesuai dengan nilai sel memori saat ini (yang ini selalu 33, "!"), Kemudian beralih ke sel berikutnya dalam memori. Mario mencapai puncak dan menetapkan arahnya ke kanan. Dia jatuh, dan membaca karakter dari input sebagai nilai ASCII-nya (atau -1 jika tidak ada karakter). Kami menambah karena satu-satunya ukuran kontrol di MarioLANG adalah untuk melewatkan instruksi jika sel memori saat ini memiliki nilai 0. Jika ya, kami melewatkan mengubah arah Mario, sehingga ia akan berjalan langsung dari lantai berikutnya ke malapetaka. Jika tidak, kami menetapkan arah ke kiri; berjalan meninggalkan lantai di bawah ini menurunkan sel saat ini kembali ke nilai sebelumnya,


Versi sebelumnya (89 byte):

+++++++++++>,
==========@"+
+++++++++++)[
@==========.==<
+++++++++++!(.-
===========#===
Pasang kembali Monica
sumber
62 byte dengan menggunakan loop perkalian bukan hanya penghitung
Jo King
Oke sekarang yang keren. Saya akan memperbarui segera setelah saya punya waktu untuk mengulang penjelasan, terima kasih banyak!
Pasang kembali Monica
1
Aha! 60 byte dengan mengalikan 5 * 6 + 3 bukannya 8 * 4 + 1
Jo King
Kawan, aku tahu itu bukan rodeo pertamamu, tapi ini sangat mengesankan. xD
Reinstate Monica
Sebenarnya, ini pertama kalinya saya bermain golf MarioLANG. Saya hanya memiliki beberapa pengalaman dengan brainfuck serta bahasa 2D lainnya
Jo King
4

Perl 6 , 16 11 byte

{S:g/<(/!/}

Cobalah online!

Mengganti semua kecocokan dengan lebar nol dengan tanda seru. Regex kosong tidak diizinkan, jadi kami menggunakan penanda tangkap untuk menangkap apa pun sebagai gantinya

Jo King
sumber
3

05AB1E , 4 byte

€'!Ć

I / O sebagai daftar karakter.

Cobalah online.

Penjelasan:

'!  '# Prepend a "!"-item before each character in the (implicit) input-list
   Ć  # Enclose (append the first character of the list at the end of it)
      # (after which the result is output implicitly)
Kevin Cruijssen
sumber
3

Segitiga , 15 13 byte

B\3;#*~.,</@<

Cobalah online!

-2 byte setelah mengingat bahwa Triangular memiliki operator penghentian bersyarat.

Saya percaya ini sesingkat yang satu ini. Segitiga tidak memiliki operator perubahan arah bersyarat, tetapi sayangnya mereka bekerja secara berbeda dari kondisional lainnya. Sementara semua yang lain memeriksa apakah ToS <= 0, kondisional yang mengubah arah memeriksa ToS! = 0. Jika ini bukan masalahnya, kita akan memiliki 10 byte dalam bentuk Bq3~#*/@<<.

Tidak Disatukan:

    B
   \ 3
  ; # *
 ~ . , <
/ @ <
----------------------------------------------------
B3*              - Push 11 and 3, then pop both and push their product.
    <,<          - Change directions 3 times (to save 2 bytes on last line)
        @/       - Print Top of Stack value as a character, do not pop
          ~;\    - Push a character from input to ToS. Halt if ToS <= 0. Change Direction.
              #  - Print ToS as a character and pop

Versi Sebelumnya (15 byte):

B.3\.*#).(/?~@<
Pasang kembali Monica
sumber
3

SimpleTemplate , 23 byte

Ini adalah bahasa yang saya tulis, dan itu seharusnya untuk template, tetapi juga.

!{@eachargv.0}{@echo_}!

Seharusnya hampir cukup jelas, setelah Anda melihat kode yang tidak dikenali:

!{@each argv.0 as char} {@echo char}!{@/}

Dan sebuah penjelasan:

  • !- Mencetak !karakter literal
  • {@each argv.0 as char}- Putaran melalui setiap karakter, dengan nilai yang ditetapkan ke variabel char( opsional , variabel default adalah _).
    argv.0adalah parameter pertama yang dilewatkan kerender() metode kompiler.
  • {@echo char}!- Output charvariabel dan !karakter literal .
    Untuk versi golf, variabel default _digunakan sebagai gantinya.
  • {@/}- menutup loop ( opsional )

Solusi Pure SimpleTemplate :

{@fn x}!{@eachargv.0}{@echo_}!{@/}{@/}

Menciptakan suatu fungsi x yang menghasilkan hasil yang sama.

Anda bisa menggunakannya seperti ini:

{@call x "this is an example"}

Anda dapat mencoba semua ini di: http://sandbox.onlinephpfunctions.com/code/f6baff8d411fc8227ece81eccf05b6e7d3586bfa

Pada baris 908, Anda dapat menggunakan variabel $golfed, $ungolfeddan $fnuntuk menguji semua versi.



Namun, jika diizinkan untuk menggunakan array karakter, kode ini disederhanakan (20 byte):

!{@echoj"!" argv.0}!

Dan ungolfed:

!{@echo separator "!" argv.0}!

Pada dasarnya, output semua item dalam array, bergabung dengan "!", dikelilingi oleh literal !.
Karena keterbatasan dalam kelas kompiler, ruang tersebut wajib (dalam versi golf).

Kode ini juga sangat sulit digunakan di SimpleTemplate murni (menggunakan fungsi sebagai contoh):

{@fn x}!{@echoj"!" argv.0}!{@/}

{@// alternative: @call str_split into a "a char array"}
{@set a "a", " ", "c", "h", "a", "r", " ", "a", "r", "r", "a", "y"}

{@call x a}

The @calldapat memanggil fungsi yang ada di PHP, yang berarti bahwa itu bukan murni SimpleTemplate solusi.

Ismael Miguel
sumber
3

Ruby , 17 16 byte

->s{s.gsub'',?!}

Cobalah online!

Terima kasih, Nilai Tinta untuk -1 byte

GB
sumber
Hapus ruang setelah gsub.
Nilai Tinta
2

Gema , 11 karakter

\A=\!
?=?\!

Sayangnya !memulai komentar di Gema, jadi harus diloloskan.

Contoh dijalankan:

bash-5.0$ echo -ne '1 2 3 4 5 6\n129591 129012 129127 129582\n\n0' | gema '\A=\!;?=?\!'
!1! !2! !3! !4! !5! !6!
!1!2!9!5!9!1! !1!2!9!0!1!2! !1!2!9!1!2!7! !1!2!9!5!8!2!
!
!0!

Cobalah online!

manatwork
sumber
2

Jelly , 5 byte

Ż”!ṁż

Program lengkap yang menerima string, yang mencetak hasilnya.

Cobalah online!

Bagaimana?

Ż”!ṁż - Main Link: list of characters, s   e.g. "abc"
 ”!   - character '!'                           '!'
   ṁ  - mould like:
Ż     -   s with a zero prepended              "!!!!"
    ż - zip together with s                    ["!a","!b","!c",'!']
      - implicit (smashing) print              !a!b!c!
Jonathan Allan
sumber
2

Japt , 4 byte

rP'!

Cobalah

r      Replace
 P     all empty strings "" with
  '!   An exclamation mark (If '!' wasn't a special character in Japt I could remove the quote)
Perwujudan Ketidaktahuan
sumber
Anda hanya dapat membuang parit 'jika penggantiannya adalah nomor.
Shaggy
2

Japt , 4 byte

rP'!

Cobalah

Japt -P , 7 byte

Sayangnya !adalah karakter pendiam, mengharuskan tanda kutip.

ï'! i'!

Cobalah

Tidak banyak yang bisa dijelaskan: ïadalah produk dan iprangko Cartesian .

Shaggy
sumber