ASCII art에 특히 유용한 언어가 있습니까? 출력 및 텍스트 출력 아트를

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

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

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

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



답변

사실, 사실은 있습니다! 그러한 언어 중 하나는 내가 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를 좀 더 자세히 설명 하는 메타 포스트 .


답변

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

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


답변

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 ; 이것을 사용하는 방법을 모른다.


답변

화필

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

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


답변