출처 : Wikipedia
이 문제를 해결 하려면 위 이미지 의 그림과 배경 과 유사한 두 개의 프로그램을 작성하여 하나는 인쇄 figure
하고 다른 하나는 인쇄해야 합니다 ground
. 구체적으로 :
- 입력을받지 않고 문자열을 인쇄하는 프로그램을 작성하십시오
figure
. 프로그램에서 허용되는 공백 문자 는 공백 (코드 포인트 0x20)과 줄 바꿈 (캐리지 리턴, 0x0D, 줄 바꿈, 0x0A 또는이 둘의 조합)입니다. -
줄 바꿈을 무시하고 공백 문자 (코드 포인트 0x20)와 공백이 아닌 문자의 수는 같아야합니다. 예를 들어, 이것은 유효한 프로그램입니다 (가설 적 언어로).
ab c d e f
첫 줄에는 후행 공백이 있습니다.
-
n 번째 공백 문자를 공백이 아닌 n 번째 문자로 바꾸면 프로그램이
ground
대신 인쇄되어야 합니다. 위의 예에서 프로그램은 다음과 같습니다.a b cde f
두 번째와 세 번째 줄에는 후행 공백이 있습니다.
양쪽 그림 과 접지 솔루션은 STDOUT로 인쇄 같은 언어로 전체 프로그램이어야한다. 두 경우 모두 하나의 선택적 후행 줄 바꿈을 인쇄 할 수 있습니다. STDOUT이 올바른 한 STDERR에 원하는 것을 출력 할 수 있습니다.
모든 프로그래밍 언어를 사용할 수 있지만 이러한 허점 은 기본적으로 금지되어 있습니다.
이것은 code-golf 이므로 바이트 단위로 측정 된 가장 짧은 유효한 답변이 이깁니다.
도우미 스크립트
이 CJam 스크립트 를 사용 하여 그림 과 지면 프로그램 사이를 변환 할 수 있습니다 . 둘 중 하나를 입력 필드에 붙여 넣기 만하면 프로그램이 실행됩니다. 또한 공간 수와 비 공백 수가 일치하지 않는지 알려줍니다.
리더 보드
답변
젤리 , 20 바이트
그림
“¦ĠȮ“©ụd» Ṃ
9 개의 후행 공백. 온라인으로 사용해보십시오!
바닥
“ ¦ĠȮ“©ụd»Ṃ
후행 공백이 없습니다. 온라인으로 사용해보십시오!
작동 원리
첫째, 공백은 원자가 아니므로 문자열 리터럴 외부의 공백 문자는 프로그램에 영향을 미치지 않습니다.
문자열 리터럴은 Jelly의 내장 사전 기반 문자열 압축 을 사용하여 원하는 단어를 생성합니다. 압축 된 문자열의 문자로 시작 “
하여, 단부 »
, 및 사용 “
문자열의 배열을 생성하기 위해 내부적.
에서는 도 프로그램 “¦ĠȮ“©ụd»
문자열 수득 쌍 ( “인물”, “바닥”) 및 원자 Ṃ
선택하는 사전적인 최소값, 즉, “그림” .
지상 프로그램에서는 대신 “ ¦ĠȮ“©ụd»
문자열 쌍 ( “logicallyAbacs”, “ground”)이 생성 됩니다. 사전 최소값은 이제 “ground” 이며 이는 Ṃ
엄밀히 선택됩니다.
두 경우 모두 인터프리터는 마지막 반환 값 (즉, 선택된 최소값)을 STDOUT에 자동으로 인쇄합니다.
답변
파이썬 2, 53 바이트
교체 ·
두 답변의 공간 :
····················
print'······figureground'[6:12]#
인쇄 figure
합니다.
print'figureground'[
······6:12]#····················
인쇄 ground
합니다.
답변
05AB1E , 15 14 바이트
그림
'ŠÂ,'í¶
바닥
' ŠÂ,'í¶
CP-1252 인코딩을 사용합니다 . 후행 공백에 유의하십시오. 에서 그림 프로그램이 오류없이 정상 프로그램입니다. 다음 단어를 압축 해제합니다.
'ŠÂ -> figure
'í¶ -> ground
쉼표는 팝을 인쇄하고 figure
줄 바꿈으로 단어를 인쇄합니다 . 무언가가 인쇄되었으므로 더 이상 스택 상단이 인쇄되지 않습니다.
에 접지 프로그램,이 경우에 편리합니다 몇 가지 오류가 있습니다. 다음 부분 :
'<space>
스택 맨 위에 공백 문자를 넣습니다. 는 Š
인수에 대응 갖는 스택, 회전 3 . 스택에 요소가 하나만 있고 입력이 없으므로 스택을 지우는 예외가 발생합니다. 은 Â
스택의 상단을 두 갈래 있지만, 이것은 회전 연산자와 같은 스토리를 갖는다. 따라서 기본적으로 ,
명령은 아무것도 인쇄하지 않습니다.
즉, 프로그램은 여전히 스택의 맨 위에있는을 출력합니다 'í¶
. 로 결과 ground
.
답변
망막 , 31 바이트
그림:
| 그림 | 지상
바닥:
| 그림 | 바닥
그림 과 접지 . 두 프로그램 모두 유효한 도형 또는 지상 프로그램이 되려면 STDIN을 비워 두어야합니다.
답변
Pyth, 30 바이트
그림
"figure" "ground
14 개의 후행 공백.
바닥
후행 공백이 없습니다.
" figure""ground
작동 원리
오히려 유용하게도 공백은 Pyth에서 인쇄를 억제하는 반면 문자열 리터럴은 닫히지 않습니다. "
이 은 암시 적으로 닫힙니다.
제 프로그램 따라서 두 문자열로 구성 "figure"
하고 "ground "
. 첫 번째 문자열은 암시 적으로 인쇄되고 두 번째 문자열의 인쇄는 억제 figure
되어 인쇄됩니다.
두번째 프로그램은 두 개의 문자열로 구성 " figure"
하고 "ground"
. 첫 번째의 인쇄는 억제되고 두 번째의 인쇄는 암시 적으로 인쇄됩니다. 즉, ground
인쇄 만됩니다.
답변
MATL , 37 바이트
첫 번째 프로그램
'figure'
%x'ground'
각 줄에는 9 개의 후행 공백이 있습니다.
두 번째 프로그램
'figure'%
x'ground'
여기에는 통행 공간이 없습니다.
설명
정말 멋진 것은 없습니다 …
- 문 사이의 공백과 줄 바꾸기는 MATL에 의해 무시됩니다.
%
주석 줄이며 나머지 줄은 무시합니다.x
스택의 상단을 삭제합니다.- 스택은 프로그램 끝에서 암시 적으로 인쇄됩니다.
답변
자바, 180 바이트
.
공간으로 교체하십시오 .
“그림”을 인쇄합니다.
class
A{public
static
void
main(String[]a){System.out.println(
//"ground"
//
.....
........
......
....
...................................
..
........
..........
....
"figure");}}
“접지”를 인쇄합니다.
.....
........
......
....
...................................
..........
..
class
A{public
static
void
main(String[]a){System.out.println(
//
"ground"
//"figure"
);}}
............