Pozdrawiam użytkownika

16

Utwórz program, który po uruchomieniu wyświetla poniższy tekst:

)-*-*-*^_^*-*-*-(
| Welcome User! |
)-*-*-*^_^*-*-*-(

Użyj dowolnej funkcji lub języka, aby na nie odpowiedzieć, baw się dobrze. Najkrótszy kod wygrywa

Amurt4l
źródło
3
Czy możemy zwrócić to z funkcji, jak zwykle?
Stephen
6
Czy dozwolone są wiodące / końcowe znaki nowej linii?
Gryphon,

Odpowiedzi:

6

Japt , 41 39 bajtów

Zaoszczędź 2 bajty dzięki @Shaggy

[U="){"-*-*-*^_"ê}("`| WelÖ  U r! |`U]·

Wyjaśnienie:

[U="){"-*-*-*^_"ê}("`| WelÖ  U r! |`U]·
[                                    ]    // Create a new array
 U=                                       // Variable U =
   ")                                     //   ")
     {            }                       //   Evaluate everything in curley-brackets as code
      "-*-*-*^_"ê                         //   "-*-*-*^_" mirrored -> -*-*-*^_^*-*-*-
                  ("                      //   ("
                                          * Now we have [U=")-*-*-*^_^*-*-*-("]
                    `| WelÖ  U r! |`      // "| Welcome User! |" decompressed by `...`
                                     U    // ")-*-*-*^_^*-*-*-("
                                          * Now we have [")-*-*-*^_^*-*-*-(","| Welcome User! |",")-*-*-*^_^*-*-*-("]
                                      ·   // Split with new-lines

Wypróbuj online!

Oliver
źródło
1
39 bajtów
Shaggy
32

Python 2 , 54 bajty

print(")-*-*-*^_^*-*-*-(\n| Welcome User! |\n"*2)[:53]

Wypróbuj online!

xnor
źródło
7
WOW, wytatuuję to podejście na mojej korze mózgowej !!
Mauro Baraldi
Imponujące, pokonaj mnie 1 bajtem! Weź +1
Gryphon
12

T-SQL, 60 bajtów

PRINT')-*-*-*^_^*-*-*-(
| Welcome User! |
)-*-*-*^_^*-*-*-('

SQL pozwala na dzielenie literałów łańcuchowych na linie, więc te zwroty są liczone.

Pracuję nad rozwiązaniem proceduralnym, ale wątpię, czy znajdę jedno poniżej 60.

Nowa edycja : Znaleziono prosty, REPLACEktóry łączy trywialne rozwiązanie:

PRINT REPLACE('1
| Welcome User! |
1',1,')-*-*-*^_^*-*-*-(')

Okazuje się, że REPLACEdokona niejawnej konwersji liczb na ciąg, więc pozwala mi to zapisać 2 znaki, eliminując cudzysłowy wokół mojego zamiennego znaku.

Próba umieszczenia go w zmiennej jest zbyt długa ze względu na obciążenie DECLARE(69 bajtów):

DECLARE @ CHAR(17)=')-*-*-*^_^*-*-*-('PRINT @+'
| Welcome User! |
'+@
BradC
źródło
8
Ta odpowiedź jest całkowicie w porządku @juniorRubyist
Mr. Xcoder,
Dobrze. Usunąłem tę opinię.
juniorRubyist
Dzięki. Myślałem, że pierwotnie miałeś na myśli sztywne kodowanie ograniczenia wyjściowego , ale jest to dozwolone ze względu na złożoność kolmogorowa. Po prostu niezbyt wydajny.
BradC
9

Python 2.7, 55 bajtów

a="\n)-*-*-*^_^*-*-*-(\n"
print a+'| Welcome User! |'+a

Dość proste. Obejmuje wiodące i końcowe znaki nowej linii.

Gryf
źródło
13
To nie musi być funkcja.
całkowicie ludzki,
8

C (gcc) , 78 75 bajtów

main(i){for(;printf(")-*-*-*^_^*-*-*-(")&i--;puts("\n| Welcome User! |"));}

Wypróbuj online!

cleblanc
źródło
Niezła próba, również dość mała ilość bajtów!
Amurt4l
Najniższa, jaką dotychczas mam, to 66 bajtów
Amurt4l,
71 bajtów z końcowym znakiem nowej linii (75 bez):#define P puts(")-*-*-*^_^*-*-*-(") f(){P;puts("| Welcome User! |");P;}
Steadybox
2
@ Amurt4l, jeśli chcesz, ponieważ uzyskałeś sporo odpowiedzi, możesz również opublikować własną odpowiedź :)
Stephen
6

Bubblegum , 43 bajty

00000000: d3d4 d502 c1b8 f838 30ad abc1 55a3 109e  .......80...U...
00000010: 9a93 9c9f 9baa 105a 9c5a a4a8 50c3 a589  .......Z.Z..P...
00000020: ae06 00bd 4d85 9835 0000 00              ....M..5...

Wypróbuj online!

DJMcMayhem
źródło
3
Ten język <s> jest </s> wydaje się takim nadużyciem „zasad”, dlatego myślę, że powinniśmy je zmienić, aby @Dennis musiał nieco zmienić język
Stephen
@StephenS TBH, zgadzam się. Jednak na szczęście języki zoptymalizowane pod kątem złożoności kolmogorowa (Jelly, 05AB1E, V, SOGL, niektóre inne) wciąż mogą go pokonać, nie czując się tak tanio.
DJMcMayhem
11
@StephenS Jeśli wyzwanie najlepiej rozwiązać przy pomocy Bubblegum, jest to wina wyzwania, a nie języka. Zamiast przepisów prawnych, pisz bardziej interesujące wyzwania.
Anders Kaseorg,
6

05AB1E , 31 29 26 bajtów

-3 Bajty dzięki Emignie

")-*-*-*^_".∞D”|‡Ý‚Ý! |”s»

Wypróbuj online!

Wyjaśnienie

")-*-*-*^_".∞D”|‡Ý‚Ý! |”s»
")-*-*-*^_"                # Push )-*-*-*^_
           .∞              # Intersected mirror (results in )-*-*-*^_^*-*-*-( )
             D             # Duplicate top of stack
              ”|‡Ý‚Ý! |”   # Pushes | Welcome User! |
                        s  # Swap top items on stack
                         » # Join on newlines
Datboi
źródło
1
Możesz zrobić .∞zamiastû¨'(«
Emigna
Wiedziałem, że to jakoś musi istnieć! Dzięki stary
Datboi
Nieważne, to, co opublikowałem, to ekwiwalent lol.
Magic Octopus Urn
Wiem, że to było trochę czasu, ale można zapisać bajt zmieniając ")-*-*-*^_"się ')„-*Є^_J. :)
Kevin Cruijssen
5

Python 3, 62 bajty

print(")-*-*-*^_^*-*-*-(\n| Welcome User! |\n)-*-*-*^_^*-*-*-(")
Mauro Baraldi
źródło
Musi być funkcją.
juniorRubyist
3
Ale to nie jest urywek. To pełny program.
całkowicie ludzki,
2
Nie, nie musi to być funciton. Przeczytaj ponownie: użyj dowolnej funkcji lub języka, aby odpowiedzieć na to pytanie.
Mauro Baraldi,
2
@juniorRubyist Pierwsza linia pytania mówiCreate a program
dzaima
5

JavaScript, 56 bajtów

alert(`${s=")-*-*-*^_^*-*-*-("}
| Welcome User! |
${s}`)

JavaScript (ES6), 50 48 bajtów (funkcja)

_=>(s=")-*-*-*^_^*-*-*-(")+`
| Welcome User! |
`+s

-2 bajty dzięki Rickowi Hitckcockowi

Stephen
źródło
Dlaczego alert? Zapisz kilka bajtów za pomocą funkcji.
Kudłaty
@Shaggy Wiem, że właśnie go edytowałem, ale obecnie OP mówi display i nie odpowiedział jeszcze na mój komentarz
Stephen
4
@juniorRubyist zwykle zezwalamy na pełny program lub funkcję. OP nie określił, że funkcje, które zwracają wartość zamiast jej wyświetlania, są dozwolone, więc moje drugie dwa wpisy mogą być niedozwolone. Jednak kompletne programy są (prawie) zawsze dozwolone, a JavaScript nie potrzebuje podstaw. Skopiuj mój alertdo .jspliku i uruchom go w przeglądarce, uruchomi się.
Stephen
Zaoszczędź 2 bajty za pomocą _=>(s=")-*-*-*^_^*-*-*-(")+\ n | Witaj użytkowniku! | \ n+s
Rick Hitchcock,
4

C, 75 bajtów

main(){char*S=")-*-*-*^_^*-*-*-(";printf("%s\n| Welcome User! |\n%s",S,S);}
Govind Parmar
źródło
70 bajtów takich; m=")-*-*-*^_^*-*-*-(";main(){printf("%s\n| Welcome User! |\n%s",m,m);}
cleblanc
4

Sed, 51

Dwa w cenie jednego:

s/^/)-*-*-*^_^*-*-*-(/p
x
s/^/| Welcome User! |/p
x

Wypróbuj online .

s/^/)-*-*-*^_^*-*-*-(\n| Welcome User! |/p
s/\n.*//

Wypróbuj online .

Cyfrowa trauma
źródło
4

MATLAB / oktawa, 53 bajty

a=')-*-*-*^_^*-*-*-(';disp([a;'| Welcome User! |';a])
rayryeng - Przywróć Monikę
źródło
Dlaczego MATLAB / Python? To zdecydowanie nie jest poprawny python.
DJMcMayhem
@DJMcMayhem Przepraszam, miałem na myśli Octave. Dzięki za zauważenie literówki. Odpowiadałem na pytania Pythona przez cały dzień, więc mózg miał małą usterkę :)
rayryeng - Przywróć Monikę
Jeśli nie, dispMatlab pokaże prowadzenie ans = \n.
Crowley,
@Crowley Właśnie dlatego potrzebujesz disptam, ponieważ nie będzie on zgodny z dokładną mocą wyjściową.
rayryeng - Przywróć Monikę
Jeśli ans = nie zostanie niedozwolone, możesz zapisać 6 bajtów.
Crowley,
4

Perl 5 , 49 bajtów

print$\=")-*-*-*^_^*-*-*-(","
| Welcome User! |
"

Wypróbuj online!

Wykorzystuje fakt, że $\jest drukowany domyślnie po każdym print.

Dada
źródło
Co say?
simbabque
1
@simbabque Staram się przestrzegać tego konsensusu . Ponadto, zastępując wszystko printze saynie jest tak naprawdę w której punkt golfa leży w mojej opinii. Ale nie jestem na żadnej krucjacie, żeby przestać jej używać say; Pozwalam wszystkim robić, co im się podoba, i wszyscy są szczęśliwi :)
Dada
4

Węgiel drzewny , 32 30 bajtów

_^×*-³(⸿emocleW |‖B¬J¹¦¹ User!

Wypróbuj online! Link jest do pełnej wersji kodu. Wyjaśnienie:

_^              Print("_^");
×*-³            Print(Times("*-", 3));
(⸿emocleW |     Print("(\remocleW |");

Drukuje odbicie lustrzane lewej górnej części wydruku.

‖B¬             ReflectButterfly(:¬);

Odbija się w dół i w lewo, aby utworzyć górną i dolną linię oraz lewą stronę środkowej linii.

J¹¦¹            JumpTo(1, 1);
 User!          Print(" User!");

Naprawia środkową linię.

Neil
źródło
(Dlaczego głosowanie?)
Neil
2
Najwyraźniej ktoś przegłosował wiele odpowiedzi w tym wyzwaniu, moje zgłoszenie jest również jednym z tych, których dotyczy problem.
Kritixi Lithos
3

Mathematica, 52 bajty

Column@{t=")-*-*-*^_^*-*-*-(","| Welcome User! |",t}
J42161217
źródło
3

Golang, 82 bajty

func main(){var a string=")-*-*-*^_^*-*-*-(\n";Printf(a+"| Welcome User! |\n"+a)}

Wypróbuj online!

ionk
źródło
Witaj i witaj w PPCG! Przesłanie może być funkcją, która zwraca tekst jako wynik, zgodnie z meta konsensusem, co może sprawić, że będzie krótszy i lepszy dla tej witryny.
Towarzysz SparklePony,
Ach, okej, dziękuję za heads-upy. Dokonam edycji.
ionk
fmtPrzepraszamy, musisz dołączyć import.
całkowicieludzki
@ totalniehuman czekaj, ale to nie jest część funkcji.
ionk
3

Rubinowy , 49 bajtów

$><<[")-*-*-*^_^*-*-*-("]*2*"
| Welcome User! |
"

Wypróbuj online!

Wartość tuszu
źródło
3

Funkcje Minecraft , 77 bajtów

tellraw @a {"text":")-*-*-*^_^*-*-*-(\n| Welcome User! |\n)-*-*-*^_^*-*-*-("}
LyricLy
źródło
To nawet nie próbuje kompresować łańcucha ...
Okx
2
@Okx Spróbuj to zrobić, gdy jedynymi nietrwałymi rzeczami, które możesz wydrukować, są liczby i nazwy bloków / pozycji: p
dzaima
3

Braingolf , 55 bajtów

22#)[#-#*]"^_^"[#*#-]#(V"
| Welcome User! |
"R!&@v&@R&@

Wypróbuj online!

Jest o 2 bajty krótszy niż kodowanie wyjściowe na stałe.

Wyjaśnienie

22                         Push 2 2s to the stack
                             These are used for loop counting
  #)                       Push )
    [#-#*]                 Push -* 3 times, using one of the 2s
          "^_^"            Push ^_^
               [#*#-]      Push *- 3 times, using the remaining 2
                     #(    Push (
                       V   Create a new stack
                        "
| Welcome User! |
"                          Push \n| Welcome User! |\n to the new stack
 R!&@                      Return to main stack, print entire stack without popping
     v&@                   Switch to 2nd stack, pop and print stack
        R                  Return to main stack, pop and print stack
Skidsdev
źródło
3

PHP , 50 bajtów

<?=$a=")-*-*-*^_^*-*-*-(","
| Welcome User! |
$a";

Wypróbuj online!

Jörg Hülsermann
źródło
1
<?=$a=")-*-*-*^_^*-*-*-(","\n| Welcome User! |\n$a";
Christoph
3

Partia, 70 bajtów

@SET b=@ECHO )-*-*-*^^^^_^^^^*-*-*-(
%b%
@ECHO ^| Welcome User! ^|
%b%

Najbardziej podoba mi się ten, ponieważ wszystkie znaki ucieczki sprawiają, że emotikon ^_^wygląda jak urocza obrzydliwość Lovecrafta^^^^_^^^^

Inżynier Toast
źródło
3

> <> , 56 54 bajtów

/a"| !resU emocleW |>"01pa
 l?!;o
/"(-*-*-*^_^*-*-*-)"

Wypróbuj online!

2 bajty zapisane przez AGourd

Pelikan turkusowy
źródło
W pierwszym wierszu możesz zmienić | "a"> "01p na |>" 01pa, aby zapisać kilka znaków
AGourd
@AGourd; Och, musiałem to przeoczyć, wydaje się proste, kiedy to zauważysz :) - Niedługo to wyedytuję, dzięki.
Teal pelikan
2

V , 35 bajtów

é)8a-*r(ãhR^_^Äo| Welcome User! |

Wypróbuj online!

Hexdump:

00000000: e929 3861 2d2a 1b72 28e3 6852 5e5f 5e1b  .)8a-*.r(.hR^_^.
00000010: c46f 7c20 5765 6c63 6f6d 6520 5573 6572  .o| Welcome User
00000020: 2120 7c                                  ! |

Wyjaśnienie:

é)                          " Insert a '('
  8a                        " Append 8 copies of the following: 
    -*<esc>                 "   '-*'
           r(               " Replace the last character on this line with '('
             ãh             " Move to the middle of this line
               R            " And write the following text over the existing text:
                ^_^<esc>    "   '^_^'
                        Ä   " Duplicate this line
o                           " On a new line:
 | Welcome User! |          "   Write the whole middle line
DJMcMayhem
źródło
2

Pyth, 41 bajtów

To nudne, ale nie mogę znaleźć sposobu na stworzenie )-*-*-*^_^*-*-*-(lub | Welcome User! |w mniejszej liczbie bajtów niż tylko kopiowanie ciągów.

J")-*-*-*^_^*-*-*-("J"| Welcome User! |"J

Explanation:
J")-*-*-*^_^*-*-*-("                      # J = ")-*-*-*^_^*-*-*-("
                    J                     # Print J with new line
                     "| Welcome User! |"  # Print "| Welcome User! |" with new line
                                        J # Print J with new line

spróbuj online

jacoblaw
źródło
Why the down vote?
jacoblaw
2

///, 42 bytes

/#/)-*-*-*^_^*-*-*-(
/#| Welcome User! |
#

Try it online!

Shorter than the Bubblegum solution!

Comrade SparklePony
źródło
Why the downvote?
Comrade SparklePony
2

Carrot, 51 bytes

)-*-*-*\^_\^*-*-*-(
^*1//.+/gS"
| Welcome User! |
"

Try it online!

Explanation

)-*-*-*\^_\^*-*-*-(
^                            Give the stack-string this value ")-*-*-*^_^*-*-*-(\n"
 *1                          Append 1 duplicate of the stack-string to itself
                             stack-string: ")-*-*-*^_^*-*-*-(\n)-*-*-*^_^*-*-*-("
//.+/g                       Get matches of /.+/g and set the stack-array to this result
                             stack-array: [")-*-*-*^_^*-*-*-(",")-*-*-*^_^*-*-*-("]
S"
| Welcome User! |
"                            Join the stack-array on "\n| Welcome User! |\n" and
                             set the stack-string to this result
Kritixi Lithos
źródło
Why the downvote?
Kritixi Lithos
2

bash, 52 bytes

f=")-*-*-*^_^*-*-*-("
echo "$f
| Welcome User! |
$f"
joeytwiddle
źródło
2

Vim, 38 Bytes

i)^[8a-*^[r(9hR^_^^[Yo| Welcome User! |^[p

Shoutout to the homies in the comments

Original:

i)-\*^[vhyl2pa^_^\*-^[vhyl2pa(^[Vyo| Welcome User! |^[p

Where ^[ is the ESC key

bioweasel
źródło
1
i)-*-*-*^_^*-*-*-(^] is much shorter for constructing the top line. Also, Y is equivalent to Vy
DJMcMayhem
Actually if you more or less borrow DJ's V answer top line construction you can save 2 bytes on the hardcode input i)^]8a-*^[r(9hR^_^^[
nmjcman101
Thanks y'all. I've been using Vim for like a month and I was just trying to see if I could do it. Obviously I have a lot of optimization to go on my workflow
bioweasel
One last tip: If duplicate the line before opening a newline for "Welcome User!", you won't need to hit ^[ at the end. YPo| Welcome User! |
DJMcMayhem
See? didn't even know that P was a thing. That's awesome though. Thanks!
bioweasel
2

Java 8, 62 bytes

x->"".format("%s| Welcome User! |\n%<s",")-*-*-*^_^*-*-*-(\n")

Try it here.

Or as full program (110 bytes):

interface A{static void main(String[]a){System.out.printf("%s| Welcome User! |\n%<s",")-*-*-*^_^*-*-*-(\n");}}

Try it here.

Surprised there wasn't a Java answer yet.

Kevin Cruijssen
źródło