Meine schnörkellose Lampe

13

Während ich mich bewegte, zerbrach ich meine Lampe. Jetzt brauche ich einen neuen. Es ist deine Aufgabe, mich zu einer Lampe zu machen! Ich bin mir nicht sicher, welche Größe ich haben möchte, obwohl ich weiß, dass ich eine schnörkellose haben möchte.

Ihr Programm / Ihre Funktion muss eine Zahleneingabe aufnehmen und eine Lampe mit so vielen Kringeln / Unebenheiten ausdrucken.

Beispiele:

Eingang:2

Ausgabe:

/ - \
 ()
 ()
/ __ \

Eingang:3

Ausgabe:

/ - \
 ()
 ()
 ()
/ __ \

Eingang:5

Ausgabe:

/ - \
 ()
 ()
 ()
 ()
 ()
/ __ \

Regeln:

  • 0 und negative Zahlen spielen keine Rolle
  • Um die Lampen (und diese Herausforderung) abwechslungsreicher zu gestalten, müssen Sie den Lampenschirm ändern.
    • Sie müssen 4 Zeichen breit und 1 Zeichen hoch sein.
    • Sie können in jeder Form vorliegen, einschließlich Formen ohne Lampenschirm.
    • Sie dürfen keine Leerzeichen enthalten.
    • Die Basis muss gleich bleiben.
  • Sie müssen ein Beispiel für die Ein- und Ausgabe mit Ihrem Lampenschirm zeigen.
  • Kürzester Code gewinnt!
Phase
quelle
Aber es kräuselt sich überhaupt nicht !. Hätte es geliebt, wenn Eingaben> 5 es kringeln ließen.
Optimierer
22
Ich habe abgestimmt. Ich halte das für eine langweilige ASCII-Kunst. Es gibt einen wiederholten Abschnitt in der Mitte und keine Überlappung zwischen den Teilen, die auch zu kurz sind, um sie zu komprimieren. Es hat nur Form ABBB..BBBC. Die Anforderung, einen Abschnitt zu ändern, bedeutet lediglich, dass Benutzer eine kurze integrierte Zeichenfolge verwenden.
21.
7
Sie können alle schon aufhören, abzustimmen! Ich denke, OP hat die Nachricht verstanden.
xnor
1
@xnor Der arme Kerl tut mir leid. Dies ist wahrscheinlich eine der am schlechtesten bewerteten Fragen aller Zeiten: / i.stack.imgur.com/T4A7X.jpg
Beta Decay
1
Ich habe nicht in irgendeiner Weise selbst abgestimmt, aber angesichts der Ähnlichkeit mit Draw a ASCII Lightning Bolt kann ich die Downvoter verstehen. Eine kleine Wendung wie ein größerer Sockel für eine höhere Lampe oder eine wiederholte Dekoration nur bei jedem n-ten Kringel würde es ein wenig anders machen.
Manatwork

Antworten:

4

Pyth - 16 Bytes

Verwendet Anführungszeichen für den Farbton, da N dafür vorinitialisiert ist.

*N4VQ+d`();"/__\

Probieren Sie es hier online aus .

* 4            String repetition 4x, implicit print
 N             Preinitialized to Quote
VQ             For N in range(Q)
 +             String concat
  d            Space
   `()         Repr of empty tuple
;              Close for loop
"/__\          Implicitly print string, implicit close quote

Probe für 5:

""""
 ()
 ()
 ()
 ()
 ()
/__\
Maltysen
quelle
7

Schneemann 0.2.0 , 42 Zeichen

)vg10sB]"[--]
"sP:" ()
"sP;bR"/__"sP92wRsP

Probelauf:

llama@llama:...Code/snowman/ppcg53483lamp$ snowman lamp.snowman
5
[--]
 ()
 ()
 ()
 ()
 ()
/__\

Daher habe ich erst gemerkt, dass ich vergessen habe, die Fähigkeit, Backslashes zu umgehen, in Strings zu implementieren, als ich diese Herausforderung gelöst habe. Das wird definitiv eine Sache in der nächsten Version sein, aber im Moment habe ich Folgendes getan, um die letzte Zeile auszudrucken:

"/__"sP92wRsP

92ist der ASCII-Code für einen Backslash, wRder in ein Array eingeschlossen wird, und ich kann ihn jetzt mit drucken, sPda "Strings" in Snowman eigentlich nur Arrays von Zahlen sind.

Türknauf
quelle
7
Möchten Sie eine Schneelampe bauen?
Alex A.
3

> <> , 43 41 38 Bytes

"\__/"aiv
"&-1v!?:<&a" ()
~"!_\
?!;o>l

Die Eingabe erfolgt über einen Codepunkt, z. B. ist die Leertaste 32. Dabei wird ein Teil des programmeigenen Codes als Lampenschirm verwendet, was zu einer Art Satellitenschüssel führt:

~\_!
 ()
 ()
 ()
 ()
 ()
/__\

(Vorschlag danke an @randomra)

Für drei weitere Bytes können wir die dritte Zeile ändern, um etwas mehr Anpassung hinzuzufügen:

"\__/"aiv
"&-1v!?:<&a" ()
__\"\~"/
?!;o>l

Dies erzeugt eine dieser Lampen, die das Licht nach oben schießen, da es nicht besser ausgedrückt werden kann:

\__/
 ()
 ()
 ()
 ()
 ()
/__\
Sp3000
quelle
3

R 54 52 46 Bytes

cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")

In dieser Version sind Eingabe und Ausgabe fast gemischt:

{in / out} PUT:

> cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")
1: 4
2: 
Read 1 item
RRRR
 ()
 ()
 ()
 ()
/__\

BEARBEITEN 1 : -2 Bytes dank @manatwork Kommentar.
EDIT 2 : -6 Bytes. Der volle Kredit geht wieder an @manatwork

Frédéric
quelle
1
Ändert nichts als das Aussehen: " /_\\"sollte sein "/__\\". BTW, ist das \rnotwendig?
Manatwork
@manatwork Es hat die Form des Lampenfußes geändert und ihn stabiler gemacht + Ihre Bemerkung über \rhat mir zwei Bytes gespart! Hätte meinen Code noch einmal lesen sollen! Vielen Dank !
Frédéric
1
Hmm ... seltsames Werkzeug. Kann es nicht schaffen, nicht interaktiv zu arbeiten. Wie auch immer, cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")scheint zu funktionieren.
Manatwork
@manatwork: na ja ... ich hätte nie gedacht, dass das funktionieren könnte! Es ist in der Tat eine schöne Lösung. R steckt voller Überraschungen!
Frédéric
Bonjour Frédéric, wenn Sie immer noch auf PPCG aktiv sind , können Sie 5 Bytes sparen
JayCe
3

Strohhalm , 26 Bytes (nicht konkurrierend)

<#~('--'
)>( ()
)-*>(/__\)>

Verwenden Sie '--'als Lampenschirm, nehmen Sie die Eingabe in unary jetzt in Dezimalzahl vor

TuxCrafting
quelle
Wie funktioniert das?
Conor O'Brien
@BetaDecay * daher nicht konkurrierend
Conor O'Brien
2

CJam, 18 Bytes

"/__\
"" ()
"ri*1$

Probelauf für Eingabe 5:

/__\
 ()
 ()
 ()
 ()
 ()
/__\

Probieren Sie es hier online aus

Optimierer
quelle
2

JavaScript ES6, 34 Byte

i=>`|==|
${` ()
`.repeat(i)}/__\\`

Die Zeilenumbrüche sind erheblich

Beispiel mit Eingabe von 5:

|==|
 ()
 ()
 ()
 ()
 ()
/__\
Downgoat
quelle
2

sed, 28 bytes

s#.# ()\n#g
s#^\|$#/__\\\n#g

Nimmt unäre Eingaben auf. Der Farbton ist die offensichtliche Auswahl (genauso wie die Basis).

Testlauf

$ echo -n 111 | sed -f lamp.sed
/__\
 ()
 ()
 ()
/__\
Dennis
quelle
1

Gema: 30 Zeichen

*=gema\n@repeat{*;\ ()\n}/__\\

Probelauf:

bash-4.3$ gema '*=gema\n@repeat{*;\ ()\n}/__\\' <<< 3
gema
 ()
 ()
 ()
/__\
Mann bei der Arbeit
quelle
1

jq: 30 Zeichen

(29 Zeichen Code + 1 Zeichen Befehlszeilenoption.)

8888,(range(.)|" ()"),"/__\\"

Probelauf:

bash-4.3$ jq -r '8888,(range(.)|" ()"),"/__\\"' <<< 3
8888
 ()
 ()
 ()
/__\

Online-Test (Das Übergeben einer -rURL wird nicht unterstützt. Prüfen Sie die Raw-Ausgabe selbst.)

Mann bei der Arbeit
quelle
1

C 54 Bytes

Rufen Sie f()mit der gewünschten Höhe der Lampe.

f(n){for(puts("||||");n--;puts(" ()"));puts("/__\\");}

Probiere es auf ideone aus.

Beispielausgabe für 5:

||||
 ()
 ()
 ()
 ()
 ()
/__\
owacoder
quelle
1

Pyke, 15 Bytes

" ()"~mQAD"/__\

Probieren Sie es hier aus!

     ~m         - 1000
" ()"           -  " ()"
       QAD      - duplicate(^) input times
          "/__\ - "/__\"

Ausgänge:

1000
 ()
 ()
/__\
Blau
quelle
1

Leerzeichen , 169 Bytes

[S S S N
_Push_0][T  N
T   T   _Read_STDIN_as_integer][S S S T S T T   T   S S N
_Push_92_\][S S S T S T T   T   T   T   N
_Push_95__][S N
S _Duplicate_95__][S S S T  S T T   T   T   N
_Push_47_/][N
S S N
_Create_Label_LOOP][S S S N
_Push_0][T  T   T   _Retrieve_at_address_0][S S S T N
_Push_1][T  S S T   _Subtract][S N
S _Duplicate][S S S N
_Push_0][S N
T   _Swap_top_two][T    T   S _Store_at_address_0][N
T   T   S N
_If_neg_Jump_to_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S T S S T   N
_Push_41_)][S S S T S T S S S N
_Push_40_(][S S S T S S S S S N
_Push_32_space][N
S N
N
_Jump_to_Label_LOOP][N
S S S N
_Create_Label_PRINT][S S S T    S T S N
_Push_10_newline][S S S T   S S S S T   N
_Push_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][S N
S _Duplicate_33_!][N
S S T   N
_Create_Label_LOOP_2][T N
S S _Print_as_character][N
S N
T   N
_Jump_to_Label_LOOP_2]

Buchstaben S(Leerzeichen), T(Tabulator) und (Zeilenvorschub) werden Nnur als Hervorhebungen hinzugefügt.
[..._some_action]nur als Erklärung hinzugefügt.

Probieren Sie es online aus (nur mit Leerzeichen, Tabulatoren und Zeilenumbrüchen).

Erklärung im Pseudocode:

Schiebt alle Zeichen in umgekehrter Reihenfolge auf den Stapel und druckt sie dann in einer Schleife.

Integer i = STDIN as input
Push "\__/" to the stack
Start LOOP:
  i = i - 1
  if(i is negative):
    Go to function PRINT
  Push "\n)( " to the stack
  Go to next iteration of LOOP

function PRINT:
  Push "\n!!!!" to the stack
  Start LOOP_2:
    Print top as character to STDOUT
    Go to next iteration of LOOP_2

HINWEIS: iDer oben genannte Pseudocode wird in jeder Iteration von wieder im Heap gespeichert LOOP, da er am Ende nicht auf dem zu druckenden Stapel belassen werden soll.

Kevin Cruijssen
quelle
1

Canvas , 8 Bytes

(×_¶/e⟳║

Probieren Sie es hier aus!

Erläuterung:

(×        repeat "(" input times
  _¶/e    encase it on both sides in "_\n/"
          the 1st line is surrounded in "_" and the second ends and starts with "/"
      ⟳   rotate the string clockwise without changing characters
       ║  palindromize horizontally with 0 overlap
dzaima
quelle
1

05AB1E , 17 15 13 11 Bytes

„ (и„/_.ø)˜∞

-2 Bytes (17 → 15) dank @EriktheOutgolfer .
-2 Byte (13 → 11), nachdem Sie von @dzaima inspiriert wurden Canvas-Antwort .

Kappe ist die gleiche wie die Basis (/__\ ).

Erläuterung:

 (            # Literal string " ("
   и           # Repeat " (" the input amount of times
               #  i.e. " (" and 3 → [' (',' (',' (']
    „/_        # Literal string "/_"
             # Surround the list of " (" with "/_" on both ends
               #  i.e. [' (',' (',' ('] → ['/_',[' (',' (',' (',' ('],'/_']
         ˜     # Flatten this list
               #  i.e. ['/_',[' (',' (',' ('],'/_'] → ['/_',' (',' (',' (','/_']
              # Mirror each item
               #  i.e. ['/_',' (',' (',' (','/_'] → ['/__\',' () ',' () ',' () ','/__\']
               # And output the list new-line delimited (implicitly due to the mirror)

Alte 13-Byte-Antwort:

„/_D (Iиs)˜∞

Probieren Sie es online aus.

Kevin Cruijssen
quelle
1

Excel, 31 Bytes

Eine anonyme Arbeitsblattfunktion, die Eingaben als Zahlenwert aus dem Bereich akzeptiert [A1] und an die aufrufende Zelle ausgibt.

Diese Lampe ist musikalisch - und wird dazu beitragen, Ihren Tag zu beleben und aufzuhellen.

="/\
"&REPT(" ()
",A1)&"/__\"

Ausgabe

Ich liebe Lampe

Taylor Scott
quelle
1

PowerShell 5.1, 28 26 Bytes

Danke Mazzy für 2 Bytes

8008;," ()"*"$args";"/__\"

Da der Schatten aus 4 beliebigen Zeichen bestehen kann, werden bei Verwendung einer Zahl zwei Anführungszeichen gespeichert. Das Schwierigste war, einen gut aussehenden Farbton zu finden.

Ausgabe:

PS C:\Users\ItsMe\Desktop> .\scratch.ps1 4
8008
 ()
 ()
 ()
 ()
/__\
Veskah
quelle
schöner Lampenschirm)
mazzy
1
Versuchen Sie dies8008;," ()"*"$args";"/__\"
mazzy
1

Python 2, 36 Bytes

print"-"*4+"\n ()"*input()+"\n/__\\"

Für Eingabe 4:

----
 ()
 ()
 ()
 ()
/__\

Beachten Sie, dass für Python jeder Lampenschirm, der Pipes verwendet, ein Byte weniger ist.

-1 Bytes dank @Alex!

Beta-Zerfall
quelle
1
Ich denke, wenn Sie den Lampenschirm in ein einzelnes Zeichen ändern und mit 4 multiplizieren, können Sie ein Byte sparen:print"-"*4+"\n ()"*input()+"\n/__\\"
Alex
1

Japt , 17 Bytes

Æ` ()`Ãi¥² p"/__\

Probieren Sie es online!

Ausgabe für 5ist:

====
 ()
 ()
 ()
 ()
 ()
/__\
Oliver
quelle
Netter Trick mit dem ¥.
Shaggy
@ Shaggy Danke! : D
Oliver
0

SWI-Prolog, 73 60 Bytes

a(X):-write(golf),writef("%r",["\n ()",X]),write("\n/__\\").

a(5). Ausgänge

golf
 ()
 ()
 ()
 ()
 ()
/__\
Tödlich
quelle
0

Julia, 36 Bytes

n->print("|~~|\n"*" ()\n"^n*"/__\\")

Dadurch wird eine unbenannte Funktion erstellt, die eine Ganzzahl als Eingabe verwendet und an stdout ausgibt.

Beispiel:

julia> f(4)
|~~|
 ()
 ()
 ()
 ()
/__\
Alex A.
quelle
0

Bash + Coreutils, 37 Bytes

yes ' ()'|sed '1i####
'$1'{a/__\\
q}'

Die Zeilenumbrüche sind notwendig und werden in der Bytesumme gezählt. GNU sed ist erforderlich.

Lauf:

./squiggly_lamp.sh 2

Ausgabe:

####
 ()
 ()
/__\
Seshoumara
quelle
0

Ruby, 42 Bytes

i=gets.to_i
puts "|--|\n#{" ()\n"*i}/__\\"
dkudriavtsev
quelle
0

Java 7 11, 84 83 37 Bytes

n->"i!!i\n"+" ()\n".repeat(n)+"/__\\"

Probieren Sie es online aus. (HINWEIS: Java 11 wird von TIO noch nicht unterstützt, wurde also String.repeat(int)mit repeat(String,int)derselben Bytezahl emuliert .)

Verwendet i!!ials Kappe. ¡!!¡sieht besser aus , ist aber zwei Bytes mehr.

Erläuterung:

n->                    // Method with integer parameter and String return-type
  "i!!i\n"             //  Return the cap + new-line
  " ()\n".repeat(n)    //   appended with " ()" and a new-line `n` amount of times
  "/__\\"              //   append with "/__\"
Kevin Cruijssen
quelle
0

Voraus 38 Bytes

I"|MM|"Wr
~W" ()"oN<s!:-1~
@W"/__\"oN<

Probieren Sie es online!

Proben

1
|MM|
 ()
/__\

2
|MM|
 ()
 ()
/__\

3
|MM|
 ()
 ()
 ()
/__\
Schnecke_
quelle
2
Könnten Sie vielleicht einen Link zu einer Online-Testumgebung bereitstellen, damit Ihre Einreichung problemlos ausgeführt werden kann?
Jonathan Frech
@ JonathanFrech TIO Link jetzt verfügbar
snail_