이 문제는에서 영감 이 물어보기 우분투 스택 거래소 대답.
소개
파이프가 있는 Windows ME 화면 보호기를 기억 하십니까? 향수를 되 찾을 시간입니다!
도전
화면 보호기의 ASCII 표현을 출력하는 프로그램이나 함수를 작성해야합니다. 스크린 세이버에는 반 무작위 방향으로 자라는 단일 파이프가 있어야합니다.
파이프의 시작은 화면의 테두리에 무작위로 배치되며 파이프 조각은 테두리와 수직이어야합니다 (첫 번째 파이프는 수평 또는 수직 일 수 있음). 각 진드기가 파이프가 80%
우연히 마주 보는 방향 (수평 / 수직)으로 자라 거나 우연히 코너를 20%
돌 것입니다.
파이프 표현
파이프를 만들려면 6 개의 유니 코드 문자가 사용됩니다.
─ \u2500 horizontal pipe
│ \u2502 vertical pipe
┌ \u250C upper left corner pipe
┐ \u2510 upper right corner pipe
└ \u2514 lower left corner pipe
┘ \u2518 lower right corner pipe
입력
프로그램 / 기능은 3 개의 입력 값을 가지는데, 이는 기능 매개 변수를 통해 수집되거나 사용자에게 프롬프트 될 수 있습니다.
- 진드기의 양
- 화면 너비
- 화면 높이
진드기의 양
모든 진드기마다 파이프 조각이 화면에 추가됩니다. 파이프는 같은 위치에 생성되면 오래된 파이프 조각을 덮어 씁니다.
예를 들어 3x3 크기의 화면을
ticks == 3
─┐
┘
ticks == 4
─┐
└┘
ticks == 5
│┐
└┘
마지막 예에서와 같이 파이프가 화면을 종료 할 때마다 임의의 경계에 새 파이프가 생성됩니다. 예를 들면 다음과 같습니다.
ticks == 6
│┐
└┘
─
새 파이프는 50 %의 수평 또는 수직 확률을 가져야합니다.
화면 너비 / 높이
원하는 언어로 화면 너비와 높이를 단일 값으로 결합 할 수 있습니다. 화면 너비와 높이는 항상 최소값 1과 최대 값 255입니다. 선택한 언어가 255x255 문자 격자보다 작은 콘솔 또는 출력 화면을 지원하는 경우 너비와 높이가 콘솔의 경계를 넘지 마십시오. (예 : Windows 80x25 cmd 창)
산출
프로그램 / 기능의 출력은 화면에 인쇄되거나 기능에서 반환되어야합니다. 프로그램을 실행할 때마다 다른 파이프 세트가 생성되어야합니다.
테스트 사례
다음 테스트 사례는 모두 유효한 출력의 임의의 예입니다.
f(4, 3, 3)
│
─┘
│
f(5, 3, 3)
│
─┘┌
│
f(6, 3, 3)
─│
─┘┌
│
f(7, 3, 3)
──
─┘┌
│
분명히, 진드기가 많을수록 프로그램의 유효성을 증명하기가 더 어려워집니다. 따라서, 실행중인 출력의 gif를 게시하는 것이 좋습니다. 이것이 가능하지 않은 경우, 출력 인쇄가 포함 된 코드 버전을 게시하십시오. 분명히 이것은 점수에 포함되지 않습니다.
규칙
- 이것은 가장 짧은 바이트 수의 code-golf입니다 .
- 표준 허점 적용
- 소스 코드에서 유니 코드 파이프 문자를 사용하는 경우 단일 바이트로 계산할 수 있습니다
이것은 많은 창조적 인 방법으로 해결 될 수있는 매우 어려운 도전입니다. 이미 짧은 esolang으로 답변이 있더라도 더 자세한 언어로 답변을 작성하는 것이 좋습니다. 언어별로 가장 짧은 답변의 카탈로그가 만들어집니다. 화려한 컬러 GIF에 대한 보너스 공감;)
행복한 골프!
면책 조항 : 유니 코드 문자는 ASCII가 아니지만 더 나은 이름이 없으면 ASCII 아트라고 부릅니다. 제안은 환영합니다 :)