Machen Sie Gimbap Cutter


23

Gimbap (김밥) ist koreanisches Essen, sieht ein bisschen aus wie Sushi-Rolle.

Hier ist das koreanische Emoticon, das Gimbap repräsentiert: @))))))))))

Ihre Aufgabe ist es, ASCII Gimbap Cutter zu machen.

Regel

Die Eingabe erfolgt nur mit @und ).

Die Ausgabe schneidet jeden gültigen Gimbap mit ab )und fügt ihn @dazwischen hinzu. Also zum Beispiel @))nach @) @).

Gültiges Gimbap beginnt mit @und gefolgt von einem beliebigen Betrag von ).

Wenn es keine gültige Gimbap gibt, ist die Ausgabe leer.

Ein- und Ausgabe

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

Gewinnbedingung

Das ist , also gewinnt der kürzeste Code.

aus dem Sandkasten


2
Ist die Regel gleichbedeutend mit "Eine Kopie von @) jeder )in der Eingabe @ausgeben, wobei die "@) @) "
— vorherigen nicht berücksichtigt

Es ist. Die Ausgabe kann ein Leerzeichen enthalten.
— LegenDUST

Müssen wir einen durch Leerzeichen getrennten String ausgeben oder können wir ein Array von Slices ausgeben? Sind wir auch auf diese 2 Zeichen beschränkt oder können wir 2 beliebige Zeichen verwenden?
— Shaggy

Ich habe zum ersten Mal versucht, den Titel "Gimp-Fledermaus-Krempel? Was?" Zu lesen.
— Draco18s

Antworten:




5

C (gcc) , 53 Bytes

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

Probieren Sie es online!

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







2

05AB1E , 12 Bytes

')Û'@KS'@ìðý

Probieren Sie es online!

Erläuterung

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

2

Batch, 58 Bytes

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

Übernimmt die Eingabe als Befehlszeilenparameter. Erläuterung:

@set s=%1@

Suffix @für den Fall, dass die Eingabe keine enthält.

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

Löschen Sie bis zur ersten Zeichenfolge @und ersetzen Sie sie durch ein, (um sicherzustellen, dass die Zeichenfolge nicht leer ist (da %:%dies bei leeren Zeichenfolgen nicht funktioniert). Das (macht auch die echoArbeit, wenn der Rest der Zeichenfolge leer ist.

@set s=%s:@=%

Löschen Sie alle verbleibenden @s.

@echo%s:)=@) %

Erweitern Sie alle verbleibenden )s.



2

Japt v2.0a0 -S, 15 Bytes

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

Versuch es

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

Alternative

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

Versuch es

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 Bytes

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

Probieren Sie es online!

Erläuterung

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

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

Probieren Sie es online!


Willkommen bei PPCG. Leider kann Ihr Code führende )s und multiple nicht @richtig verarbeiten. Und wie wäre es mit Try it online ?
— LegenDUST

1
Wie Sie im fünften oder letzten Beispiel sehen können, müssen führende )Zeichen ignoriert werden.
— LegenDUST

@LegenDUST, du hast recht! es war nicht so einfach. Ich denke, die Arbeitsversion ist viel hässlicher
— Vicente Bolea

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


1

Pyth , 20 Bytes

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

Probieren Sie es online! Beachten Sie, dass am Ende des Programms ein Leerzeichen steht. Diese ist (oder besser gesagt, als) eine ziemlich direkte Übersetzung der Python 2-Antwort (obwohl der lstrip-Teil überraschend schwierig war).

Erläuterung:

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

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

Probieren Sie es online!


Erläuterung

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

Probieren Sie es online!


1

PowerShell , 42 Byte

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

Probieren Sie es online!

Abgerollt:

$arrayOfCuttedGimbaps = $args|select-string '(?<=@.*)\)' -AllMatches|% Matches|%{'@)'}
''+($arrayOfCuttedGimbaps)    # toString and output
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.