# My Squiggly Lamp

While moving, I broke my lamp. Now, I need a new one. It's your job to make me a lamp! I'm not sure what size I want, though I know I want a squiggly one.

Your program/function must take in a number input, and print out a lamp with that many squiggles/bumps.

Examples:

Input:2

Output:

/--\
()
()
/__\


Input:3

Output:

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


Input:5

Output:

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


Rules:

• 0 & negative numbers don't matter
• To give the lamps (an this challenge) more of a variety, you must change the lamp shade.
• They must be 4 characters wide and 1 character high.
• They can be in any shape, including non-lamp-shade shapes.
• They must not contain whitespace.
• The base must stay the same.
• You must show an example input & output with your lamp shade.
• Shortest code wins!
• But it doesn't squiggle at all!. Would have loved if inputs > 5 made it squiggle. Jul 21 '15 at 20:15
• I downvoted. I think this is a boring ASCII art. There's a repeated section in the middle and no overlap between the parts, which are also too short to compress. It just has form ABBB..BBBC. The requirement to change a section just means people will use a short built-in string.
– xnor
Jul 21 '15 at 20:27
• You can all stop downvoting already! I think OP got the message.
– xnor
Jul 21 '15 at 21:16
• @xnor I feel sorry for the poor guy. This is probably one of the most downvoted questions ever :/ i.stack.imgur.com/T4A7X.jpg Jul 22 '15 at 7:08
• Not voted in any way myself, but given the similarity with Draw an ASCII Lightning Bolt, I can understand the downvoters. Some little twist like having larger base for higher lamp, or having a repeated decoration only on each nth squiggle would made it a little bit different. Jul 22 '15 at 11:07

# Snowman 0.2.0, 42 chars

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


Sample run:

llama@llama:...Code/snowman/ppcg53483lamp$snowman lamp.snowman 5 [--] () () () () () /__\  So I only noticed that I forgot to implement the ability to escape backslashes within strings when I solved this challenge. That's definitely going to be a thing in the next version, but for now, here's what I did to print the final line: "/__"sP92wRsP  92 is the ASCII code for a backslash, wR wraps it in an array, and I can now print it with sP because "strings" in Snowman are actually just arrays of numbers. • Do you want to build a snow lamp? Jul 21 '15 at 21:52 # Pyth - 16 bytes Uses quotes for the shade since N is preinitialized to that. *N4VQ+d();"/__\  * 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  Sample for 5: """" () () () () () /__\  # ><>, 4341 38 bytes "\__/"aiv "&-1v!?:<&a" () ~"!_\ ?!;o>l  Input via a code point, e.g. space is 32. This uses part of the program's own code as the lampshade, resulting in something that looks like a satellite dish: ~\_! () () () () () /__\  (Suggestion thanks to @randomra) For three more bytes, we can change the third line to add a bit more customisation: "\__/"aiv "&-1v!?:<&a" () __\"\~"/ ?!;o>l  This produces one of those lamps which shoot light upwards, for lack of a better way of putting it: \__/ () () () () () /__\  # R, 5452 46 bytes cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")  In this version, input and output are almost mixed together : {in/out}PUT : > cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n") 1: 4 2: Read 1 item RRRR () () () () /__\  EDIT 1 : -2 bytes thanks to @manatwork comment. EDIT 2 : -6 bytes. Full credit goes to @manatwork again • Changes nothing but the look: " /_\\" should be "/__\\". BTW, is that \r necessary? Aug 2 '16 at 10:17 • @manatwork It did change the shape of the lamp's foot, making it more stable + your remark about \r saved me two bytes ! Should have re-read my code ! Thanks ! Aug 2 '16 at 10:22 • Hmm… Weird tool. Can't make it to work non-interactively. Anyway, cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n") seems to work. Aug 2 '16 at 10:37 • @manatwork : well... I've never thought that this could work ! It's indeed a nice solution. R is full of surprises ! Aug 2 '16 at 10:42 • Bonjour Frédéric, if you're still active on PPCG you can save 5 bytes Jul 31 '18 at 14:18 ## Straw, 26 bytes (non-competing) <#~('--' )>( () )-*>(/__\)>  Use '--' as lamp shade, take input in unary now in decimal • How does this work? Sep 9 '16 at 20:50 • @BetaDecay *therefore noncompeting Sep 9 '16 at 20:51 # CJam, 18 bytes "/__\ "" () "ri*1$


Sample run for input 5:

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


Try it online here

# JavaScript ES6, 34 bytes

i=>|==|
${ () .repeat(i)}/__\\  The newlines are significant Example with input of 5: |==| () () () () () /__\  # sed, 28 bytes s#.# ()\n#g s#^\|$#/__\\\n#g


Takes input in unary. The shade is the obvious selection (same as the base).

$echo -n 111 | sed -f lamp.sed /__\ () () () /__\  # 05AB1E, 171513 11 bytes „ (и„/_.ø)˜∞  -2 bytes (17 → 15) thanks to @EriktheOutgolfer. -2 byte (13 → 11) after being inspired by @dzaima's Canvas answer. Cap is the same as the base (/__\). Explanation: „ ( # 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)  Old 13 bytes answer: „/_D„ (Iиs)˜∞  Try it online. # 1+, 114 bytes 11+""*+"*";";";;1.1##(A|11+""""**+;)"""*"**;""*""*+*";1+;"\"1+/<1+#(A)11+"*(|1+"1+")1+*+;1()"*"1+*++";;1()*"1+*+;  You all! Stop complaining about the length, this is the best I could do! Go blame Parcly Taxel for designing such a bowly language! Shade is . • Throwing shade I see Aug 21 '20 at 10:44 • @Razetime What do you mean – null Aug 21 '20 at 10:46 # Gema: 30 characters *=gema\n@repeat{*;\ ()\n}/__\\  Sample run: bash-4.3$ gema '*=gema\n@repeat{*;\ ()\n}/__\\' <<< 3
gema
()
()
()
/__\


# jq: 30 characters

(29 characters code + 1 character command line option.)

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


Sample run:

bash-4.3$jq -r '8888,(range(.)|" ()"),"/__\\"' <<< 3 8888 () () () /__\  On-line test (Passing -r through URL is not supported – check Raw Output yourself.) # C, 54 bytes Call f() with the desired height of the lamp. f(n){for(puts("||||");n--;puts(" ()"));puts("/__\\");}  Try it on ideone. Example output for 5: |||| () () () () () /__\  ## Pyke, 15 bytes " ()"~mQAD"/__\  Try it here!  ~m - 1000 " ()" - " ()" QAD - duplicate(^) input times "/__\ - "/__\"  Outputs: 1000 () () /__\  # Kotlin, 36 bytes {"|MM|\n${" ()\n".repeat(it)}/__\\"}


Try it online!

# Whitespace, 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   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]


Letters S (space), T (tab), and N (new-line) added as highlighting only.
[..._some_action] added as explanation only.

Try it online (with raw spaces, tabs and new-lines only).

Explanation in pseudo-code:

Pushes all characters in reversed order to the stack, and then prints them in a loop.

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


NOTE: i in the pseudo-code above is stored back in the heap in every iteration of LOOP, because we don't want to leave it on the stack to be printed at the end.

# Canvas, 8 bytes

(×_¶/ｅ⟳║


Try it here!

Explanation:

(×        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


# Excel, 31 bytes

An anonymous worksheet function that takes input as a numeric from range [A1] and outputs to the calling cell.

This lamp is musical - and will help to liven and lighten up your day.

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


# PowerShell 5.1, 28 26 Bytes

Thanks Mazzy for 2 bytes

8008;," ()"*"$args";"/__\"  Since the shade can be any 4 characters, using a number saves a pair of quotes. The hardest part was finding a nice looking shade. Output: PS C:\Users\ItsMe\Desktop> .\scratch.ps1 4 8008 () () () () /__\  • nice lamp shade ) Aug 1 '18 at 8:50 • try this 8008;," ()"*"$args";"/__\" Aug 1 '18 at 8:56

# Python 2, 36 bytes

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


For input 4:

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


Note that for Python that any lamp shade using pipes is a byte less.

-1 bytes thanks to @Alex!

• I think if you change the lampshade to a single character and multiply it by 4 you can save one byte: print"-"*4+"\n ()"*input()+"\n/__\\"
– Alex
Aug 5 '18 at 2:33

# Japt, 17 bytes

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


Try it online!

Output for 5 is:

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

• Nice trick with the ¥. Feb 1 '19 at 0:03
• @Shaggy Thank you! :D Feb 1 '19 at 1:44

# MAWP, 65 61 bytes

@95W2M!;2A!!;;2W2M;[25W;84W;85W!;1M;1A]25W;95W2M!;2W1M!!;;3A;


I'm sure it can be golfed by a few more bytes when displaying characters.

Try it!

• Why? :( (15 chars)
– null
Aug 21 '20 at 9:58
• gimme 1+ answer Aug 21 '20 at 10:01
• Ok workin' on it
– null
Aug 21 '20 at 10:01
• ...done. Almost two times as long as your program...
– null
Aug 21 '20 at 10:39

# Vyxalj, 15 bytes

×d?(‛ ()‛/_WvøṀ


Try it Online!

Example output:

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


×d              # two asterisks
?(   )        # Input times...
‛ (         # Push the two-char  (
‛/_     # Push the two-char /_
W    # Push the entire stack
vøṀ # Ascii-art mirror each item.


# SWI-Prolog, 73 60 bytes

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


a(5). outputs

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


# Julia, 36 bytes

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


This creates an unnamed function that takes an integer as input and prints to stdout.

Example:

julia> f(4)
|~~|
()
()
()
()
/__\


## Bash + coreutils, 37 bytes

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


The newlines are necessary and counted in the bytes total. GNU sed is required.

Run:

./squiggly_lamp.sh 2


Output:

####
()
()
/__\


## Ruby, 42 bytes

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


## Neoscript, 28 bytes

{n|"[~~]
"+" ()
"*n+"/--\\"}


# PyMin, 24 bytes / 17 characters

»ƒ+ѿ+" ø\n"*¬+ɓ+ѿ


Output for 5:

Fizz
()
()
()
()
()
Buzz


Shorter version with v0.5:

### 21 bytes / 13 characters

»ƒƜ+" ø¶"¯+ɓƜ

• The base of the lamp must be /__\. Aug 7 '18 at 3:08

# Java 7 11, 8483 37 bytes

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


Try it online. (NOTE: Java 11 isn't supported on TIO yet, so String.repeat(int) has been emulated with repeat(String,int) for the same byte-count.)

Uses i!!i as cap. ¡!!¡ looks better, but is two bytes more.

Explanation:

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 "/__\"