Buat pemotong Gimbap

23

Gimbap (김밥) adalah makanan Korea, agak mirip sushi roll.

Berikut ini adalah emoticon Korea yang mewakili Gimbap: @))))))))))

Pencarian Anda adalah membuat pemotong ASCII Gimbap.

Aturan

Input adalah string yang dibuat hanya dengan @dan ).

Output memotong setiap Gimbap yang valid dengan ), dan kemudian menambahkan di @antara mereka. Jadi misalnya @))untuk @) @).

Valid Gimbap dimulai dengan @dan diikuti oleh jumlah berapapun ).

Jika tidak ada Gimbap yang valid, output kosong.

Masukan dan keluaran

Input | Output
@))))) | @) @) @) @) @)
@))))))) | @) @) @) @) @) @) @)
@))@))) | @) @) @) @) @)
@) | @)
)) | 
@ | 
@@)@@@))) | @) @) @) @)
@)@)@)) | @) @) @) @)
@@@)) | @) @)
))@) | @)

Kondisi menang

Ini , jadi kode terpendek menang.

dari kotak pasir

LegenDUST
sumber
2
Apakah aturannya setara dengan "menghasilkan satu salinan @) untuk setiap )input yang tidak termasuk sebelumnya @? Semoga output kami menyertakan spasi tambahan, misalnya "@) @) "?
xnor
Ini. Dan output dapat mencakup ruang tambahan.
LegenDUST
Apakah kita harus menampilkan string yang dibatasi ruang atau dapatkah kita menampilkan array irisan? Juga, apakah kita terbatas pada 2 karakter itu atau dapatkah kita menggunakan 2 karakter yang kita pilih?
Shaggy
Pertama kali saya mencoba membaca judul, "Gimp-bat kekacauan? Apa?"
Draco18s

Jawaban:

7

JavaScript, 42 41 byte

s=>s.split(/(?<=@.*)\)/).fill``.join`@) `

Cobalah secara Online!

Shaggy
sumber
5

C (gcc) , 53 byte

i;f(char*_){for(i=1;*_;!i&*_++&&printf("@) "))i&=*_;}

Cobalah online!

i;f(char*_){for(    *_;                      )      }   //loop over the string:
                i=1;   !i&                    i&=*_;    //skip leading `)`s
                       !i&*_++&&printf("@) ")           //and print "@) "for each `)` thereafter
attinat
sumber
4

Retina 0.8.2 , 14 byte

^\)+|@

\)
@) 

Cobalah online! Tautan termasuk kasus uji. Penjelasan:

^\)+|@

Hapus )s dan semua @s.

\)
@) 

Ganti semua )dengan @)s. (Catatan: ruang tambahan.)

Neil
sumber
2

05AB1E , 12 byte

')Û'@KS'@ìðý

Cobalah online!

Penjelasan

')Û            # trim leading ")"
   '@K         # remove all "@"
      S        # split to list of characters
       '@ì     # prepend "@" to each
          ðý   # join on spaces
Emigna
sumber
2

Batch, 58 byte

@set s=%1@
@set s=%s:*@=(%
@set s=%s:@=%
@echo%s:)=@) %

Mengambil input sebagai parameter baris perintah. Penjelasan:

@set s=%1@

Sufiks dan @seandainya input tidak mengandung.

@set s=%s:*@=(%

Hapus hingga yang pertama @, ganti dengan a (untuk memastikan bahwa string tidak kosong (karena %:%tidak berfungsi pada string kosong). Ini (juga membuat echopekerjaan jika sisa string kosong.

@set s=%s:@=%

Hapus yang tersisa @.

@echo%s:)=@) %

Luaskan sisa )s.

Neil
sumber
2

05AB1E (warisan) , 10 byte

Z¡¦JS'@ìðý

Cobalah online!

Bug ini memaksa saya untuk menggunakan versi lawas. Ini adalah kode untuk versi 05AB1E saat ini (11 byte):

'@¡¦JS'@ìðý

Cobalah online!

Port jawaban Jelly-ku.

Erik the Outgolfer
sumber
2

Japt v2.0a0 -S, 15 byte

r/^\)+|@/ ¬mi'@

Cobalah

r/^\)+|@/ ¬mi'@     :Implicit input of string
r                   :Remove
 /^\)+|@/           :  "@"s and leading ")"s
          ¬         :Split
           m        :Map
            i'@     :  Prepend "@"
                    :Implicit output, joined with spaces

Alternatif

e/^\)/ è\) Æ"@)

Cobalah

e/^\)/ è\) Æ"@)     :Implicit input of string
e                   :Recursively remove
 /^\)/              :  Leading ")"
       è\)          :Count remaining ")"s
           Æ        :Map the range [0,Count)
            "@)     :  Literal string
                    :Implicit output, joined with spaces
Shaggy
sumber
2

brainfuck , 49 byte

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

Cobalah online!

Nitrodon
sumber
1

Japt v2.0a0 -P, 15 byte

f/@\)+/ ËÅç"@) 

Disimpan 2 byte berkat @Shaggy.

Cobalah

Perwujudan Ketidaktahuan
sumber
15 byte
Shaggy
@Shaggy Terima kasih, saya belum bermain golf di Japt baru
Perwujudan Ketidaktahuan
1

Jelly , 12 byte

œl”)ḟ”@⁾@ jⱮ

Cobalah online!

Nick Kennedy
sumber
1

Ruby -p , 28 byte

$_= ~/@/&&'@) '*$'.count(?))

Cobalah online!

Penjelasan

                                # -p gets a line of STDIN
$_=                             # Set output to
    ~/@/                        # Find first '@' in input
                                # nil (falsey) if not found
        &&                      # If found, set output to
          '@) '                 # Sliced gimbap
               *                # Repeat
                $'              # In the string after the first '@',
                  .count(?))    # ... count the number of ')'
                                # -p outputs the contents of $_
                                # nil outputs as a blank string
Nilai Tinta
sumber
1

Java 10, 49 byte

s->s.replaceAll("^\\)+|@+","").replace(")","@) ")

Cobalah online.

Kevin Cruijssen
sumber
1

sed , 30 byte

s/)\?@\()\?\)/\1/g; s/)/@) /gp

Cobalah online!

Vicente Bolea
sumber
Selamat datang di PPCG. Sayangnya, kode Anda tidak dapat menangani )s dan multipel @dengan benar. Dan, bagaimana dengan menggunakan Coba online ?
LegenDUST
1
Seperti yang Anda lihat pada contoh ke-5 atau terakhir, pemimpin )harus diabaikan.
LegenDUST
@LegenDUST, Anda benar! itu tidak mudah. Saya kira versi kerjanya jauh lebih buruk
Vicente Bolea
28 chars: s / ^) * //; s / [^)] // g; s /./@) / gp
jnfnt
1

Pyth , 20 byte

*?}\@z/>zxz\@\)0"@) 

Cobalah online!Perhatikan bahwa ada spasi tambahan di akhir program. Yang ini (atau lebih tepatnya, dimulai sebagai) terjemahan yang agak langsung dari jawaban Python 2 (meskipun bagian lstrip ternyata sangat sulit).

Penjelasan:

*            # repeat string
  ?          # repeat count: ternary
    }\@z     # condition: check whether input contains @
    /        # if condition is true: count occurrences of one string in another
      >      # array slice: all elements of array (or string) from a specific index and upwards
        z    # the thing to slice (input)
        xz\@ # the index first occurrence of \@ in z
      \)     # string to count occurrences of (\x is shorthand for "x")
    0        # value when ternary condition is false
  "@) "      # the string to be repeated (automatically terminated by end-of-line)
randomdude999
sumber
1

krrp , 63 byte

^":\L,^*':?#?E'E!-@1#!r'?=#!f'$64.-?*L$64.L$41.L$32.-@0#!r'.0".

Cobalah online!


Penjelasan

^":                   ~ take the string as a parameter named `"`
 \L                   ~ import the list module
 ,^*':                ~ apply a binary function
  ?#?E'               ~  if the string is empty,
   E                  ~   return the empty string; else
   !-@1#!r'           ~   define `-` as the cut Gimbap
   ?=#!f'$64.         ~    if an at sign is seen,
    -                 ~    return the cut Gimbap; else
    ?*                ~    if an at sign has been seen,
     L$64.L$41.L$32.- ~     return a Gimbap piece together
                      ~     with freshly cut Gimbap; else
     @0#!r'           ~     proceed to cut
 .0".                 ~ to zero and the above taken string

Cobalah online!

Jonathan Frech
sumber
1

PowerShell , 42 byte

''+($args|sls '(?<=@.*)\)'-a|% m*|%{'@)'})

Cobalah online!

Belum dibuka:

$arrayOfCuttedGimbaps = $args|select-string '(?<=@.*)\)' -AllMatches|% Matches|%{'@)'}
''+($arrayOfCuttedGimbaps)    # toString and output
mazzy
sumber