김밥 커터 만들기


23

김밥 은 한국 음식으로, 스시 롤처럼 보입니다.

한국어 이모티콘은 김밥을 나타냅니다. @))))))))))

당신의 임무는 ASCII 김밥 커터를 만드는 것입니다.

규칙

입력 단지로 만든 문자열 @).

출력 모든 유효한 김밥을 잘라) 내고 그 @사이에 추가 합니다. 예 @))를 들어 @) @).

유효한 김밥@모든 양으로 시작 )합니다.

유효한 김밥이 없으면 출력이 비어 있습니다.

입력과 출력

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

승리 조건

이것은 이므로 가장 짧은 코드가 승리합니다.

에서 샌드 박스


2
규칙은 " 이전의 입력을 세지 않고 입력의 @) 모든 사본 마다 한 부씩 출력하는 것과 동일 합니까?")@"@) @) "
xnor

그것은. 그리고 출력은 후행 공백을 포함 할 수 있습니다.
LegenDUST

공백으로 구분 된 문자열을 출력해야합니까, 아니면 슬라이스 배열을 출력 할 수 있습니까? 또한, 우리는 그 두 글자로 제한됩니까 아니면 우리가 선택한 두 글자를 사용할 수 있습니까?
쉐기

제목을 읽으려고 처음으로 "Gim-bat clutter? 무엇?"
Draco18s

답변:












2

배치, 58 바이트

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

명령 행 매개 변수로 입력을받습니다. 설명:

@set s=%1@

@입력에 아무것도 포함되지 않은 경우 접미사 .

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

처음까지 삭제 @로 대체, ((때문에 문자열이 비어 있지 않은지 확인하기 위해 %:%빈 문자열에없는 일을한다). 는 (또한 만드는 echo문자열의 나머지가 비어있는 경우 작업을.

@set s=%s:@=%

남은을 모두 삭제하십시오 @.

@echo%s:)=@) %

나머지을 확장하십시오 ).



2

Japt v2.0a0 -S, 15 바이트

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

시도 해봐

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

대안

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

시도 해봐

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

루비 -p , 28 바이트

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

온라인으로 사용해보십시오!

설명

                                # -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 바이트

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

온라인으로 사용해보십시오!


PPCG에 오신 것을 환영합니다. 불행히도 귀하의 코드는 선행 )및 다중을 @올바르게 처리 할 수 ​​없습니다 . 그리고 온라인으로 사용해보십시오 ?
LegenDUST

1
5 번째 또는 마지막 예에서 볼 수 있듯이 선행 )을 무시해야합니다.
LegenDUST

@LegenDUST, 당신 말이 맞아요! 그렇게 쉽지 않았습니다. 나는 작업 버전이 훨씬 더 추악한 것 같다
비센테 Bolea

28 자 : s / ^) * //; s / [^)] // g; s /./@) / gp
jnfnt


1

Pyth , 20 바이트

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

온라인으로 사용해보십시오! 프로그램의 끝에는 후행 공백이 있습니다. 이것은 파이썬 2 답변을 다소 직접적으로 번역 한 것입니다 (그러나 lstrip 부분은 놀랍게도 어렵습니다).

설명:

*            # 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 바이트

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

온라인으로 사용해보십시오!


설명

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

온라인으로 사용해보십시오!


당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.