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.