언덕에 작은 상자


13

Malvina Reynolds가 작곡 한 Little Boxes 라는 풍자적 인 노래가 있는데 , 다음과 같이 가사가있는 교외 스프롤에 관한 것입니다.

언덕 위의
작은 상자들, 칙칙한 끈으로 만든
작은 상자들, 언덕 위의
작은 상자들 , 작은 상자들 모두 동일.
녹색과 분홍색이
있고, 파란색과 노란색
이 있습니다. 모두 똑딱 거리며 만들어졌고
모두 똑같아 보입니다.

n>1집의 크기를 나타내는 정수 입력 이 주어지면 다음과 같은 색상을 사용하여 네 개의 "작은 상자"를 출력합니다 (0xRRGGBB 표기법으로).

Green -- 0x00FF00
Pink --- 0xFF00FF (technically magenta)
Blue --- 0x0000FF
Yellow - 0xFFFF00

특정 콘솔에 이러한 정확한 색상이 없으면 가장 가까운 (예 : ANSI 이스케이프 코드)를 사용할 수 있습니다.

집들은 n _바닥과 지붕 을 나타내는 구조로 되어 있습니다. 벽을 나타내는 n/2(반올림) |문자 로 둘러싸여 있습니다. 지붕은 항상 2높고 /왼쪽 가장자리에 2 개 \, 오른쪽 가장자리에 2 개 n-2 -, 지붕 피크를 나타냅니다. 집이 커질수록 지붕의 크기는 작아집니다. 이것은 의도 된 것입니다.

다음은 규모가 큰 집입니다 2.

 /\
/__\
|__|

여기에 크기입니다 3:

 /-\
/___\
|   |
|___|

여기에 크기입니다 7:

 /-----\
/_______\
|       |
|       |
|       |
|_______|

따라서 입력이 주어지면 위에서 설명한 것처럼 7네 개의 크기의 집을 출력 7합니다. 첫 번째 주택은 녹색, 두 번째 주택은 분홍색 (자홍색), 세 번째 주택은 파란색, 네 번째 주택은 노란색입니다. 순서대로 색상을 출력하는 것이 중요합니다.

크기의 예시 사진 3:

여기에 이미지 설명을 입력하십시오

규칙

  • 집이 명확하게 분리되어있는 한 집은 수평 또는 수직 일 수 있습니다.
  • 주택이 적절하게 정렬되어 있다면 선행 / 후행 개행 또는 기타 공백은 선택 사항입니다.
  • 전체 프로그램 또는 기능이 허용됩니다. 함수 인 경우 출력하지 않고 출력을 반환 할 수 있습니다.
  • 이미지 등으로 저장하여 콘솔에 출력 할 수 있습니다.
  • 표준 허점 은 금지되어 있습니다.
  • 이것은 이므로 모든 일반적인 골프 규칙이 적용되며 가장 짧은 코드 (바이트)가 이깁니다.

답변:


5

자바 스크립트 (ES6) 크롬 / 파이어 폭스, 156 148 151 150 바이트

@Shaggy 덕분에 8 바이트 절약 @Neil 덕분에
1 바이트 절약

n=>['0f0','f0f','00f','ff0'].map(c=>console.log(`%c /${'-'[r='repeat'](n-2)}\\
/${s='_'[r](n)}\\
${(`|${' '[r](n)}|
`)[r](~-n/2)}|${s}|`,'color:#'+c))

데모

컬러 출력을 얻으려면 브라우저의 콘솔을 열어야합니다.


브라우저 콘솔을 열어 둔 상태에서 스 니펫으로 잘 작동합니다. 3 자리 16 진수 코드를 사용하여 8 바이트를 절약하십시오. tio.run/##NYvRCsIgGEbv9xSDFr/…
Shaggy

@Shaggy 제안에 감사드립니다!
Arnauld

선행이 0필요합니까?
Jonathan Frech

@JonathanFrech 예. 선행 0이 없으면 유효한 #RGBCSS 색상 코드 가 아닙니다 .
Arnauld

넓은 집에서는 높이가 잘못되었다고 생각합니다.
Neil

5

파이썬 (2) , 123 (121) 119 111 109 108 바이트

  • caird coinheringaahing 덕분에 2 바이트를 절약했습니다 . 실제 인쇄 할 수없는 ASCII 문자를 이스케이프 처리하는 대신 사용 ( \33)
  • input()함수를 정의하는 대신 전체 프로그램을 작성하여 바이트를 저장할 수 있습니다.
  • ElPedro 덕분에 7 바이트를 절약했습니다 . 사실 사용 str(90+n)하여이 0<=n<=9입니다"9%s"%n
  • 문자열 연결 대신 문자열 형식을 사용하여 2 바이트 3 바이트를 절약했습니다.

N=input()
for(n)in"2543":Z="_"*N;print"[9%sm /"%n+~-~-N*"-"+"\ \n/%s\\\n"%Z+~-N/2*("|%s|\n"%" "*N)+"|%s|"%Z

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

집을 채색하기 위해 ANSI 이스케이프 코드 를 사용합니다 .



1
"2543"을 반복하고 문자열 형식을 사용하여 112- 온라인 사용해보십시오!
ElPedro

2
@ElPedro 감사합니다. 그다지 발생하지 않았 902,5,4,3요약 효과적으로 연결합니다.
Jonathan Frech

3

Excel VBA, 243 바이트

A1범위 에서 입력 및 출력되는 익명 VBE 즉시 창 기능A2:A5

[C1]=vbLf:For i=1To 4:Cells(i+1,1)=[" /"&Rept("-",A1-2)&"\"&C1&"/"&Rept("_",A1)&"\"&C1&Rept("|"&Rept(" ",A1)&"|"&C1,A1/2)&"|"&Rept("_",A1)&"|"]:Cells(i+1,1).Font.Color=Array(32768,&HFF00FF,rgbBlue,65535)(i-1):Next:Cells.Font.Name="Courier New"

산출

산출


2

Japt , 79 76 74 73 72 바이트

3#²¤r1'f ò3 w £Ol"%c /{ç- ¤}\\
/{ç'_}\\
{/2-½ ç"|{ç}|
"}|{ç'_}|"Xi`¬l:#

시도해보십시오 ( "실행"을 누르기 전에 브라우저 콘솔을여십시오).

지난 밤에 휴대 전화에서 작업하는 동안 테스트를 도와 주신 ETH에게 감사드립니다.


설명

정수의 암시 적 입력 U

3#²¤r1'f ò3 w

먼저 매핑 할 3 자리 16 진수 색상 배열을 만듭니다. 의 문자 코드 ²는 178이므로 3#²3178을 제공합니다. 우리는 이것을 밑이 2 인 문자열로 변환 ¤한 다음 모든 발생을 1로 대체합니다 f. ò3문자열을 길이가 3 인 문자열 배열로 나누고 해당 배열을 w반대로합니다.
(어쨌든 그것을 줄이는 방법을 찾아야합니다.)

£Ol

우리는 사용하여 어레이를 통해지도 £와 - X와 - 현재 요소 인 Ol콘솔로 로그를. 우리는 두 개의 문자열을 전달할 것입니다. 하나는 집을 포함하고 다른 하나는 CSS를 포함합니다.

Xi`¬l:#

두 번째 문자열은 압축 문자열 i앞에 추가 X하는 데 사용 됩니다 color:#.

"%c /{ç- ¤}\\

%cCSS로 두 번째 문자열을 사용하는 콘솔을 알려줍니다. 집의 맨 위 줄은 문자 시간 을 반복 ( ç) 한 다음을 사용하여 두 번째 요소 (0- 인덱스)에서 슬라이싱하여 작성 합니다. 중괄호는 문자열 연결을위한 일종의 바로 가기 역할을합니다.-U¤

/{ç'_}\\

두 번째 줄은 비슷한 방식으로 만들어졌으며 이번에는 _문자 U시간 이 반복 됩니다.

{/2-½ çRi|²iUç 1}

집의 몸체는 먼저 |문자를 두 번 반복 ²한 다음 U색인 1에서 해당 문자열에 반복되는 공백을 삽입하여 작성됩니다. 그런 다음 결과 문자열은 개행 ( R) 앞에 추가 되고 해당 문자열은 반복 U/2-0.5시간이됩니다.

|{ç'_}|"

마지막 줄은 두 번째 줄과 같은 방식으로 만들어집니다.


1

파이썬 2 , 120 바이트

n=input()
for i in'2543':s='_'*n;print'[1;3'+i+('m /'+'-'*(n-2)+'\ \n/%s\\\n'%s+(-~n/2-1)*('|'+' '*n+'|\n')+'|%s|\n'%s)

온라인으로 사용해보십시오! (로컬 터미널에서 테스트 한 실제 색상 대신 이스케이프 문자 표시)


나는 당신의 집이 같은 입력에 비해 너무 높다고 생각합니다 n=2.
Jonathan Frech

@JonathanFrech 그래 내가 해결할거야 ... 잘못된 천장 접근 분명히 편집 : 고정
에릭 Outgolfer

질문에 말한다 use the closest available대신 밝은 색상의 정상적인 색상을 사용하는 것하지만,. 그러나 밝은 색상은 원하는 색상에 더 가깝습니다.
Jonathan Frech

@JonathanFrech Hmm, 당신도 정상적인 색상을 사용하는 것 같지만 밝은 색상은 더 가깝습니다.
Outgolfer Erik

1
@ElPedro 어쨌든 그의 것보다 내 밝혀졌다 : p
Outgolfer Erik

1

Yabasic , 220 바이트

입력을 정수로 받아서 n4 개의 컬러 홈을 터미널에 출력 하는 익명 함수입니다 .

yabsic에 전용 문자열 반복 또는 대체 기능이 없으면이 응답이 실제로 손상됩니다.

Clear Screen
Input""n
b$="__"
c$="|  "
For i=1To n-2
a$=a$+"-"
b$=b$+"_"
c$=c$+" "
Next
c$=c$+"|\n"
For i=1To n-4
d$=d$+c$
Next
For i=0To 3
?Color(Mid$("gremagbluyel",1+3*i,3))" /"+a$+"\\\n/"+b$+"\\\n"+d$+"|"+b$+"|"
Next

이 버전에는 그래픽 모드가 필요하므로 TIO에서는 작동하지 않습니다.

산출

아래의 입력 값은 n=7입니다.

산출


1

SmileBASIC, 115 바이트

INPUT N
H.H 6H 4H 2DEF H C
COLOR C+5?" /";"-"*(N-2);"\
?"/";"_"*N;"\
FOR I=3TO N?"|";" "*N;"|
NEXT?"|";"_"*N;"|
END

또 하나는 115 바이트입니다.

INPUT N
FOR J=0TO 3COLOR!!J*8-J*2+5?" /";"-"*(N-2);"\
?"/";"_"*N;"\
FOR I=3TO N?"|";" "*N;"|
NEXT?"|";"_"*N;"|
END

필요한 4 비트 RGBI의 색상 코드는 5, 11, 9, 7입니다. !!J*8-J*2+5J가 0이 아닌 경우 13-J*2(11,9,7 제공)을 사용하여 생성 되며 결과는 다음과 같습니다. 그냥 5.

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