Làm máy cắt Gimbap


23

Gimbap (김밥) là món ăn Hàn Quốc, hơi giống món sushi cuộn.

Đây là biểu tượng cảm xúc của Hàn Quốc đại diện cho Gimbap: @))))))))))

Nhiệm vụ của bạn là tạo ra máy cắt Gimbap ASCII.

Qui định

Đầu vào là chuỗi được thực hiện chỉ @).

Đầu ra cắt mọi Gimbap hợp lệ với ), sau đó thêm @vào giữa chúng. Vì vậy, ví dụ @))để@) @) .

Gimbap hợp lệ bắt đầu bằng @và theo sau bởi bất kỳ số tiền nào ).

Nếu không có Gimbap hợp lệ, đầu ra trống.

Đầu vào và đầu ra

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

Điều kiện chiến thắng

Đây là , vì vậy mã ngắn nhất sẽ thắng.

từ hộp cát


2
Là quy tắc tương đương với "đầu ra một bản sao @) cho mỗi )đầu vào không tính những cái trước bất kỳ @? Có thể đầu ra của chúng tôi bao gồm một không gian kéo dài, như "@) @) "?
xnor

Nó là. Và đầu ra có thể bao gồm một không gian dấu.
LegenDUST

Chúng ta có phải xuất ra một chuỗi giới hạn không gian hay chúng ta có thể xuất ra một mảng các lát không? Ngoài ra, chúng tôi có giới hạn trong 2 ký tự đó hay chúng tôi có thể sử dụng bất kỳ 2 ký tự nào chúng tôi chọn không?
Xù xì

Lần đầu tiên tôi cố đọc tiêu đề, "Gimp-bat lộn xộn? Cái gì?"
Draco18

Câu trả lời:




5

C (gcc) , 53 byte

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

Hãy thử trực tuyến!

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








2

Mẻ, 58 byte

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

Lấy đầu vào là một tham số dòng lệnh. Giải trình:

@set s=%1@

Hậu tố @trong trường hợp đầu vào không chứa bất kỳ.

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

Xóa đến đầu tiên @, thay thế nó bằng một (để đảm bảo rằng chuỗi không trống (vì %:%không hoạt động trên các chuỗi trống). Các (cũng làm cho echocông việc nếu phần còn lại của chuỗi rỗng.

@set s=%s:@=%

Xóa mọi @s còn lại .

@echo%s:)=@) %

Mở rộng bất kỳ )s còn lại .



2

Japt v2.0a0 -S, 15 byte

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

Thử nó

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

Thay thế

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

Thử nó

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





1

Ruby -p , 28 byte

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

Hãy thử trực tuyến!

Giải trình

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


1

sed , 30 byte

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

Hãy thử trực tuyến!


Chào mừng đến với PPCG. Thật không may, mã của bạn không thể xử lý hàng đầu )và nhiều @chính xác. Và, làm thế nào về việc sử dụng Dùng thử trực tuyến ?
LegenDUST

1
Như bạn có thể thấy trong ví dụ thứ 5 hoặc cuối cùng, )các s hàng đầu phải được bỏ qua.
LegenDUST

@LegenDUST, bạn nói đúng! nó không phải là dễ dàng Tôi đoán phiên bản làm việc xấu hơn nhiều
Vicente Bolea

28 ký tự: s / ^) * //; s / [^)] // g; s /./@) / gp
jnfnt


1

Bình thường , 20 byte

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

Hãy thử trực tuyến!Lưu ý rằng có một khoảng trống ở cuối chương trình. Đây là (hay đúng hơn, bắt đầu như là) một bản dịch khá trực tiếp của câu trả lời Python 2 (mặc dù phần lstrip rất khó khăn).

Giải trình:

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

1

krrp , 63 byte

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

Hãy thử trực tuyến!


Giải trình

^":                   ~ 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

Hãy thử trực tuyến!


1

PowerShell , 42 byte

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

Hãy thử trực tuyến!

Chưa được kiểm soát:

$arrayOfCuttedGimbaps = $args|select-string '(?<=@.*)\)' -AllMatches|% Matches|%{'@)'}
''+($arrayOfCuttedGimbaps)    # toString and output
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.