내 구불 구불 한 램프


13

움직이면서 램프가 부러졌습니다. 이제 새로운 것이 필요합니다. 나를 램프로 만드는 것이 당신의 일입니다! 구불 구불 한 크기를 원하지만 알고 싶은 크기는 확실하지 않습니다.

프로그램 / 기능은 숫자를 입력하고 많은 스퀴지 / 범프와 함께 램프를 인쇄해야합니다.

예 :

입력:2

산출:

/-\
 ()
 ()
/ __ \

입력:3

산출:

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

입력:5

산출:

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

규칙 :

  • 0과 음수는 중요하지 않습니다
  • 램프 (이 도전 과제)를 더 다양하게 하려면 램프 음영을 변경 해야합니다 .
    • 너비 는 4 자, 높이는 1 자 여야합니다 .
    • 비 램프 쉐이드 모양을 포함하여 모든 모양이 될 수 있습니다.
    • 공백을 포함해서는 안됩니다.
    • 베이스는 동일하게 유지되어야합니다.
  • 램프 쉐이드와 함께 입력 및 출력의 예를 보여 주어야합니다.
  • 최단 코드 승리!

그러나 전혀 흔들리지 않습니다!. 입력이 5보다 크면 사랑을 받았을 것입니다.
Optimizer

22
나는 공감했다. 나는 이것이 지루한 ASCII 예술이라고 생각합니다. 중간에 반복되는 섹션이 있으며 부품간에 겹치지 않으며 압축하기에는 너무 짧습니다. 단지 형태가 ABBB..BBBC있습니다. 섹션을 변경해야한다는 것은 사람들이 짧은 내장 문자열을 사용한다는 것을 의미합니다.
xnor

7
당신은 이미 downvoting을 중지 할 수 있습니다! OP가 메시지를 받았다고 생각합니다.
xnor

1
@xnor 나는 가난한 사람에 대해 유감스럽게 생각합니다. 이것은 아마도 가장 많이 다운 된 질문 중 하나 일 것입니다 : / i.stack.imgur.com/T4A7X.jpg
Beta Decay

1
어떤 식 으로든 투표하지 않았지만 Draw a ASCII Lightning Bolt 와의 유사성을 감안할 때 downvoter를 이해할 수 있습니다. 더 높은 램프를 위해 더 큰 받침대를 갖거나 각 n 번째 구불 구불 한 부분에만 반복적으로 장식하는 것과 같은 약간의 꼬임은 약간 다르게 만들었습니다.
manatwork

답변:


4

Pyth-16 바이트

N이 사전 초기화되었으므로 음영에 따옴표를 사용합니다.

*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

5에 대한 샘플 :

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

7

눈사람 0.2.0 , 42 자

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

샘플 실행 :

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

따라서이 과제를 해결할 때 문자열 내에서 백 슬래시를 이스케이프 처리하는 기능을 구현하는 것을 잊어 버렸습니다. 확실히 다음 버전에서는 문제가 될 것이지만 지금은 마지막 줄을 인쇄하기 위해 수행 한 작업이 있습니다.

"/__"sP92wRsP

92백 슬래시의 ASCII 코드 wR는 배열로 래핑하고 sPSnowman의 "문자열"은 실제로는 숫자의 배열이기 때문에 인쇄 할 수 있습니다.


7
스노우 램프를 만들고 싶습니까?
Alex A.

3

> <> , 43 41 38 바이트

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

공간이 32 인 코드 포인트를 통한 입력. 이것은 프로그램 자체 코드의 일부를 갓으로 사용하여 위성 접시처럼 보이는 것을 만듭니다

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

(@randomra 덕분에 제안)

3 바이트를 더 늘리려면 세 번째 줄을 변경하여 조금 더 사용자 정의를 추가 할 수 있습니다.

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

이것은 더 나은 조명 방법이 없기 때문에 위쪽으로 빛을 비추는 램프 중 하나를 생성합니다.

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

3

R, 54 52 46 바이트

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

이 버전에서는 입력출력 이 거의 혼합되어 있습니다.

{in / out} PUT :

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

편집 1 : @manatwork 주석 덕분에 -2 바이트.
편집 2 : -6 바이트. 전체 크레딧은 다시 @manatwork로갑니다.


1
외형 만 변경합니다 : " /_\\"should "/__\\". BTW, 그게 \r필요한가요?
manatwork

@manatwork 램프의 발 모양이 바뀌어 더 안정적이었고 + \r2 바이트를 절약했습니다. 내 코드를 다시 읽어야합니다! 감사 !
Frédéric

1
흠… 이상한 도구. 비 대화식으로 작동하도록 할 수 없습니다. 어쨌든 cat("RRRR",rep(" ()",scan()),"/__\\",sep="\n")작동하는 것 같습니다.
manatwork

@ manatwork : 글쎄 ... 나는 이것이 작동 할 수 있다고 생각한 적이 없다! 실제로 좋은 해결책입니다. R은 놀라움으로 가득합니다!
Frédéric

당신이 PPCG에 활성 상태 인 경우 봉쥬르 프레데릭는, 당신은 5 바이트 저장할 수 있습니다
JayCe



2

자바 스크립트 ES6, 34 바이트

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

개행은 중요하다

5를 입력 한 예 :

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

2

sed, 28 바이트

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

단항으로 입력합니다. 그늘은 명백한 선택입니다 (베이스와 동일).

시운전

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

1

관장 : 30 자

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

샘플 실행 :

bash-4.3$ gema '*=gema\n@repeat{*;\ ()\n}/__\\' <<< 3
gema
 ()
 ()
 ()
/__\

1

jq : 30 자

(29 자 코드 + 1 자 명령 행 옵션)

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

샘플 실행 :

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

온라인 테스트 (전달 -rURL을 통해 지원되지 않습니다 - 자신을 원시 출력을 확인합니다.)





1

공백 , 169 바이트

[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]

문자 S(공백), T(탭) 및 N(줄 바꾸기)가 강조 표시로만 추가되었습니다.
[..._some_action]설명으로 만 추가되었습니다.

온라인으로 시도하십시오 (원시 공백, 탭 및 줄 바꾸기 만).

의사 코드의 설명 :

모든 문자를 역순으로 스택으로 푸시 한 다음 루프로 인쇄합니다.

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

참고 : i위의 의사 코드에서는 반복 될 때마다 힙에 다시 저장됩니다 LOOP. 마지막에 인쇄 할 스택에 남겨 두지 않기 때문입니다.


1

캔버스 , 8 바이트

(×_¶/e⟳║

여기 사용해보십시오!

설명:

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

1

05AB1E , 17 15 13 11 바이트

„ (и„/_.ø)˜∞

@EriktheOutgolfer 덕분에 -2 바이트 (17 → 15) . @dzaima 의 Canvas 응답
에서 영감을 얻은 후 -2 바이트 (13 → 11) .

캡은 밑면 ( /__\) 과 동일합니다 .

설명:

 (            # 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)

이전 13 바이트 답변 :

„/_D (Iиs)˜∞

온라인으로 사용해보십시오.


1

엑셀, 31 바이트

범위에서 숫자로 입력 [A1]하고 호출 셀에 출력 하는 익명의 워크 시트 함수입니다 .

이 램프는 음악적이며 하루를 활기차고 밝게하는 데 도움이됩니다.

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

산출

나는 램프를 사랑


1

PowerShell 5.1, 28 26 바이트

2 바이트 감사 Mazzy

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

음영은 4 자까지 가능하므로 숫자를 사용하면 따옴표 쌍이 저장됩니다. 가장 어려운 부분은 멋진 그늘을 찾는 것이 었습니다.

산출:

PS C:\Users\ItsMe\Desktop> .\scratch.ps1 4
8008
 ()
 ()
 ()
 ()
/__\

nice lamp shade)
mazzy

1
이것을 시도8008;," ()"*"$args";"/__\"
초 mazzy

1

파이썬 2, 36 바이트

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

입력 4의 경우 :

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

파이썬의 경우 파이프를 사용하는 램프 쉐이드는 바이트가 적습니다.

@Alex 덕분에 -1 바이트!


1
전등갓을 단일 문자로 바꾸고 4를 곱하면 1 바이트를 절약 할 수 있습니다.print"-"*4+"\n ()"*input()+"\n/__\\"
Alex


0

SWI- 프롤로그, 73 60 바이트

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

a(5). 출력

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

0

줄리아, 36 바이트

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

이것은 정수를 입력으로 받아 stdout에 인쇄하는 이름없는 함수를 만듭니다.

예:

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

0

Bash + coreutils, 37 바이트

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

줄 바꿈이 필요하며 총 바이트 수로 계산됩니다. GNU sed가 필요합니다.

운영:

./squiggly_lamp.sh 2

산출:

####
 ()
 ()
/__\



0

자바 7 11, 84 83 37 바이트

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

온라인으로 사용해보십시오. (참고 : Java 11은 아직 TIO에서 지원되지 않으므로 동일한 바이트 수로 String.repeat(int)에뮬레이션되었습니다 repeat(String,int).)

i!!i캡으로 사용합니다 . ¡!!¡더 좋아 보이지만 2 바이트 더 있습니다.

설명:

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




당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.