태그 보관물: whitespace

whitespace

그림과 접지 바꿈, 0x0A 또는이 둘의 조합)입니다. 줄 바꿈을 무시하고

그림과 땅
출처 : Wikipedia

이 문제를 해결 하려면 위 이미지 의 그림과 배경 과 유사한 두 개의 프로그램을 작성하여 하나는 인쇄 figure하고 다른 하나는 인쇄해야 합니다 ground. 구체적으로 :

  1. 입력을받지 않고 문자열을 인쇄하는 프로그램을 작성하십시오 figure. 프로그램에서 허용되는 공백 문자 는 공백 (코드 포인트 0x20)과 줄 바꿈 (캐리지 리턴, 0x0D, 줄 바꿈, 0x0A 또는이 둘의 조합)입니다.
  2. 줄 바꿈을 무시하고 공백 문자 (코드 포인트 0x20)와 공백이 아닌 문자의 수는 같아야합니다. 예를 들어, 이것은 유효한 프로그램입니다 (가설 ​​적 언어로).

    ab c
       d
    e f
    

    첫 줄에는 후행 공백이 있습니다.

  3. n 번째 공백 문자를 공백이 아닌 n 번째 문자로 바꾸면 프로그램이 ground대신 인쇄되어야 합니다. 위의 예에서 프로그램은 다음과 같습니다.

      a b
    cde
     f
    

    두 번째와 세 번째 줄에는 후행 공백이 있습니다.

양쪽 그림접지 솔루션은 STDOUT로 인쇄 같은 언어로 전체 프로그램이어야한다. 두 경우 모두 하나의 선택적 후행 줄 바꿈을 인쇄 할 수 있습니다. STDOUT이 올바른 한 STDERR에 원하는 것을 출력 할 수 있습니다.

모든 프로그래밍 언어를 사용할 수 있지만 이러한 허점 은 기본적으로 금지되어 있습니다.

이것은 이므로 바이트 단위로 측정 된 가장 짧은 유효한 답변이 이깁니다.

도우미 스크립트

이 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"
);}}
............