ASCII art에 특히 유용한 언어가 있습니까?


20

특히 텍스트 출력과 ASCII 아트를 대상으로하는 난해한 언어 나 골프 언어가 있는지 궁금합니다.

예를 들어 05AB1E는 기본 전환을 타겟팅하여 시작했습니다. 텍스트 출력 및 텍스트 출력 아트를 대상으로하는 골프 언어가 있습니까?

그렇다면 여기에 팁 페이지가 있으며 일반적으로 사용됩니까?

참고 : ASCII 아트를 출력 할 수있는 언어가 아니라 비교적 짧고 간결한 방식으로 과제 를 완료 할 수 있도록 의도적으로 설계된 언어를 찾고 있습니다 .


1
당신이 그것을 언급 한 이래, 내 경험 05AB1E는 아스키 아트 도전에 매우 능숙합니다.
DJMcMayhem

1
"ASC와 II가받을 것"이라는 ASCII 예술 언어를보고 싶습니다. (아직도 빠져 나오지 않으면 상당히 가능성이 있습니다.)
Hactar

ASCII 아트를 만들기 위해 특별히 만들어진 Crayon 이라는 언어를 설계 했지만 불행히도 아직 구현할 시간이 없었습니다.
ETHproductions

@ASCII 전용이며 ASCII 아트 언어로 작업하고 있습니다. 그것은 여전히 ​​디자인 단계에 있지만, 우리는 당신의 (또는 다른 사람의) 입력을 좋아합니다. 관심이 있으시면 채팅에 참여하십시오 .
DLosc

글쎄, 나는 내 생각이 독창적이라고 생각했다 ... 나는 CharMatrix 기반 언어를 쓰고 싶기 때문에이 질문을했다. 그래도 원하는 기능 중 하나를 언급하지 않았으므로 어쨌든 할 수 있습니다. 모든 답변과 의견은 정말 훌륭했습니다. 모두 감사합니다
Socratic Phoenix

답변:


15

사실, 사실은 있습니다! 그러한 언어 중 하나는 내가 V 라고하는 동안 노력해온 언어입니다 .

후드 아래에서 V는 vim 이지만 모든 키 입력은 자동으로 실행되며 프로그램이 끝나면 vim 버퍼의 내용이 STDOUT에 인쇄됩니다. 이를 통해 더 편리하게 실행할 수 있습니다.

언어에 관한 역사. code-golf에 vim 텍스트 편집기를 사용하기 시작했을 때 실제로 잘 작동하지만 경쟁하기가 더 성가신 기능이 있음을 발견했습니다. 예를 들어, 다음을 수행하여 "while loop"종류를 설정할 수 있습니다

qq<foobar>@qq@q

<foobar>오류가 발생할 때까지 반복됩니다 . 여기에는 7 바이트의 상용구 코드가 있습니다. V에서는이 값이로 줄어 듭니다 ò<foobar>ò.

V를 ASCII 아트에 적합하게 만드는 몇 가지 사항 :

  • 그것은 본질적으로 2d입니다. 한 가지 기능은 "커서"위치를 가지며, 대부분의 명령은 커서가 텍스트의 위치에 따라 무언가를 수행합니다. 다른 명령은 커서의 위치를 ​​옮깁니다. 예를 들어, x 는 단일 문자를 삭제하지만 Wx 는 단어를 앞으로 이동 한 다음 문자 삭제합니다. 대부분의 다른 언어는 의도적으로 2 차원이 아니기 때문에 2D 공간에 텍스트를 배치 하는 것이 어려운 경우에 유리 합니다.

  • 그것은되는 전체 문자열을 기반으로. 당신은 수있는 몇 가지 mathy 작업을 사용하지만, 이들은 일반적으로 일을 달성하기 위해 긴 방법입니다.

  • 정규식 압축 을 사용 하여 텍스트를 빠르게 변경합니다.

  • 프로그램이 종료되면 2 차원 문자 배열 인 내부 메모리가 모두 암시 적으로 인쇄됩니다. 또한 모든 입력은 암시 적으로 내부 메모리에 추가 되므로 대부분의 문제는 입력을 특정 방식으로 변경하는 것이 좋습니다.

그래서 저는이 언어를 정말 좋아하며, 특히 아 언어를 찾고 있다면 강력히 추천합니다. 그러나 나는 또한 몇 가지 면책 조항을 제공합니다.

  • 배우는 것은 매우 혼란 스럽다. 또한 매우 강력하지만 30 세의 인기있는 텍스트 편집기를 기반으로하기 때문에 새로운 사용자를 쉽게 혼동 할 수있는 모호한 기능이 많이 있습니다.

  • vim보다 숫자를 처리하는 것이 더 좋지만 숫자 지원은 여전히 ​​좋지 않습니다. 개인적으로, 이것은 일하기가 더 재미 있다고 생각합니다 (정규식이 의도하지 않은 작업에 망막을 사용하는 것과 같은 종류). :디

  • 여전히 WIP입니다. 몇 가지 버그가 있으며 아직 추가하지 않은 것들이 있습니다.

  • 사용자가 많지 않습니다. (현재 사용자 수 : 1).

자세한 내용을 알아 보려면 다음과 같은 유용한 자료를 참조하십시오.

  • 귀하의 질문에 기꺼이 답변하고 귀하에게 어떻게 작용하는지 설명 할 수 있는 대화방 입니다.

  • 팁 스레드 정력에 골프를 들어,하지만 대부분의 팁은 이월.

  • V를 좀 더 자세히 설명 하는 메타 포스트 .


8

나는 최근 Turtlèd 라는 새로운 프로그래밍 언어를 만들었습니다. Turtlèd 는 거북이로 문자 그리드에서 작동하며 그리드 주위를 이동하고 그리드에 쓰고 그리드와 제어 흐름을 갖습니다. 격자는 끝 부분에 암시 적으로 인쇄됩니다. 공간을 쓸 필요가없고, 텍스트를 왼쪽에서 오른쪽으로, 위에서 아래로가 아니라 공간적으로 쓸 수 있다는 사실에 의해, 그것은 아스키 아트에 능숙한 주어진 정의를 충족시킬 것입니다.

현재 문서가 없으므로 내 통역사를 읽고 싶지 않으면 사용할 수 없습니다. 아마도 원하는 작업이 아닙니다. 인터프리터에 버그가있을 수도 있다고 생각하지만 사양이 버그인지 여부는 충분하지 않습니다. Turtlèd는 아마도 문서와 함께 곧 완료 될 것입니다.


3

05AB1E 용 ASCII- 골프 소개 (기본 변환 [단순])

05AB1E는 ASCII-Art를 위해 직접 제작 된 것이 아니지만 2 가지 문제를 겪었습니다. 05AB1E의 가장 좋은 점은 간단한 기본 변환을 사용하더라도 바이트 수를 확장하고 절반으로 줄이는 데 사용할 수있는 트릭이 있다는 것입니다. ASCII 과제에서 종종 패턴의 절반 만 그린 다음 뒤집고 연결하는 데 사용할 수있는 회귀 트릭이 있습니다. 4 방향 패턴 인 경우 zip 및 bifurcate와 같은 작업을 수행하여 패턴의 모서리 만 그릴 수 있습니다. 이 간단한 기본 압축 아이디어와 함께 사용할 수있는 많은 데이터 구조 조작 기술이 있습니다.


기본 전환 전술에 대한 빠른 충돌 과정은 다음과 같습니다.

05AB1E에서 ASCII 아트에 사용 된 모든 문자를 열거합니다. 예를 들면 다음과 같습니다.

--===___===--

결과는 다음과 같습니다.

-
=
_

그런 다음 1부터 0, 2로 시작하는 숫자를 할당합니다.

- is 1.
= is 0.
_ is 2.

원래 문자열의 문자를 숫자로 바꿉니다.

1122200022211

가능한 가장 낮은 밑 (3)을 사용하여 십진수로 변환합니다.

879412

( 05AB1E를 사용하여이 작업을 수행하는 방법 )

그런 다음 기본 214로 변환합니다.

Jh]

( 05AB1E를 사용하여이 작업을 수행하는 방법 )

그런 다음 다음 코드로 래핑합니다.

05AB1E , 16 바이트

•Jh]•3B…102…-_=‡

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

또는 중간 단계가 표시된 상태에서 시도하십시오.

최종 설명 :

•Jh]•            # Push the compressed ASCII integer.
     3B          # Convert it to base 3.
       …102      # Push the keys to the conversion.
           …-_=  # Push the values to the conversion.
               ‡ # Transliterate, replace 0, 1 and 2 with the symbols.

이제이 특정 도전으로 문자열이 너무 짧아 이해가되지 않습니다. 나는 아마 문자열의 절반을 밀고 10 바이트 동안 Palindromize "--===__"û또는 Adnan이 factorial, smart man을 사용하여 주석에서했던 것처럼 골프를 칠 것입니다 •Jh]•3B5!…-=_‡. 그는 또한 05AB1E 의 제작자 (들 ) 중 하나입니다 .


더 복잡한 예 :

/codegolf//a/106621/59376


또한 Dennis 'kolmogorov-complexity language : Bubblegum ; 이것을 사용하는 방법을 모른다.


2
Bubblegum은 ASCII 아트에 실제로는 좋은 언어가 아닙니다 . 대부분의 ASCII 아트 과제에 필요한 입력을받을 수 없기 때문입니다 (두 예제 제외 ). Cinnamon Gum 이 더 나은 옵션 일지 모르지만 그것에 대해 많이 알지 못하고 내 지식에는 문서가 없습니다
ETHproductions

1
실제로 중요하지는 않지만 다음과 같이 골프를 •Jh]•3B5!…-=_‡
Adnan

1
@Adnan "--===__"ûfor 10;).
Magic Octopus Urn

2

화필

Paintbrush는 ASCII-Art를 능숙하게 사용하기 위해 Hyper Neutrino가 만든 레크리에이션 프로그래밍 언어입니다. 그것은 많은 경우에 숯과 경쟁이 좋지 않지만, 입력을 받고 다양한 다른 일을 할 수 있습니다. 2D 문자 그리드에서 작동하며 배경 문자 조작, 당시 배경 문자로 간주되는 항목 조작, 행과 열 이동, 행과 열 이동, 행, 열 복사 또는 전체 그리드 등을 수행 할 수 있습니다.

일부 예제는 GitHub 리포지토리에서 찾을 수 있습니다.

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