Có ngôn ngữ nào đặc biệt tốt về nghệ thuật ASCII không?


20

Tôi đã tự hỏi nếu có bất kỳ ngôn ngữ bí truyền hoặc golf mà nhắm mục tiêu cụ thể đầu ra văn bản và nghệ thuật ASCII?

Ví dụ: ít nhất 05AB1E bắt đầu bằng cách nhắm mục tiêu chuyển đổi cơ sở. Có bất kỳ ngôn ngữ chơi golf nhắm mục tiêu đầu ra văn bản và nghệ thuật đầu ra văn bản?

Nếu vậy, họ có trang tip ở đây không, và chúng có được sử dụng chung không?

Lưu ý: Tôi không tìm kiếm các ngôn ngữ có thể tạo ra nghệ thuật ASCII, mà là các ngôn ngữ được thiết kế có chủ ý để có thể hoàn thành thách thức theo cách tương đối ngắn gọn và súc tích.


1
Vì bạn đã đề cập đến nó, theo kinh nghiệm của tôi, 05AB1E rất giỏi trong các thử thách nghệ thuật ascii.
DJMcMayhem

1
Tôi muốn thấy một ngôn ngữ nghệ thuật ASCII gọi là "ASC và II sẽ nhận được." (Nghiêm túc mà nói, nếu một người chưa thoát ra, có khá nhiều tiềm năng ở đó.)
Hactar

Tôi đã thiết kế một ngôn ngữ có tên là Crayon , được tạo ra để tạo ra nghệ thuật ASCII, nhưng tiếc là tôi chưa có thời gian để thực hiện nó.
Sản phẩm ETH

Chỉ có ASCII và tôi đã làm việc với ngôn ngữ nghệ thuật ASCII. Nó vẫn đang trong giai đoạn thiết kế, nhưng chúng tôi thích đầu vào của bạn (hoặc của bất kỳ ai). Tham gia với chúng tôi trong trò chuyện nếu bạn quan tâm.
DLosc

Ở đây tôi đã nghĩ rằng ý tưởng của tôi là độc nhất ... Tôi đã hỏi câu hỏi này vì tôi muốn viết một ngôn ngữ dựa trên CharMatrix. Không ai đề cập đến một trong những tính năng tôi muốn, vì vậy tôi có thể tiếp tục và làm điều đó bằng mọi cách. Nhân tiện, tất cả các câu trả lời và nhận xét đều rất tuyệt, cảm ơn mọi người
Socratic Phoenix

Câu trả lời:


15

Vâng, như một vấn đề của thực tế, có! Một ngôn ngữ như là một trong Tôi đã được làm việc trên một thời gian gọi là V .

Dưới mui xe, V chỉ là vim , nhưng tất cả các tổ hợp phím được chạy tự động và nội dung của bộ đệm vim được in thành STDOUT khi chương trình kết thúc. Điều này chỉ làm cho việc chạy nó thuận tiện hơn.

Một số lịch sử về ngôn ngữ. Khi tôi bắt đầu sử dụng trình soạn thảo văn bản vim cho code-golf, tôi phát hiện ra rằng nó thực sự khá tốt về nó, nhưng có một số tính năng gây khó chịu khiến việc cạnh tranh nó trở nên khó khăn hơn. Ví dụ: bạn có thể thiết lập "vòng lặp while" bằng cách thực hiện

qq<foobar>@qq@q

sẽ lặp lại <foobar>cho đến khi xảy ra lỗi. Điều này có 7 byte mã soạn sẵn. Trong V, điều này được rút ngắn thành ò<foobar>ò.

Một số điều làm cho V trở nên tuyệt vời cho ASCII-art:

  • Đó là 2d về bản chất. Một tính năng là có vị trí "con trỏ", trong đó hầu hết các lệnh làm một cái gì đó dựa trên vị trí của con trỏ trong văn bản. Các lệnh khác di chuyển vị trí của con trỏ. Ví dụ: x xóa một ký tự đơn, nhưng Wx di chuyển về phía trước một từ và sau đó xóa một ký tự. Vì hầu hết các ngôn ngữ khác không cố ý 2 chiều, điều này mang lại lợi thế tốt khi thử thách là định vị văn bản trong không gian 2D

  • hoàn toàn dựa trên chuỗi. Bạn có thể sử dụng một số phép toán, nhưng đây thường là cách dài hơn để đạt được mọi thứ.

  • Nó sử dụng nén regex để nhanh chóng thay đổi văn bản.

  • Tất cả bộ nhớ trong của nó, chỉ là một mảng 2 ký tự, được in ngầm khi chương trình kết thúc. Ngoài ra, tất cả các đầu vào được thêm vào bộ nhớ trong của nó , điều này thật tuyệt khi hầu hết các thách thức là về việc thay đổi đầu vào theo một cách nhất định.

Vì vậy, tôi thực sự thích sử dụng ngôn ngữ này, và nếu bạn đang tìm kiếm một ngôn ngữ đặc biệt , tôi khuyên bạn nên sử dụng ngôn ngữ này . Tuy nhiên , tôi cũng sẽ đưa ra một vài lời từ chối.

  • Nó rất khó hiểu để tìm hiểu. Nó cũng rất mạnh, nhưng vì nó dựa trên trình soạn thảo văn bản rất phổ biến đã 30 tuổi, có rất nhiều tính năng khó hiểu có thể rất dễ gây nhầm lẫn cho người dùng mới.

  • Mặc dù xử lý số tốt hơn vim, nhưng hỗ trợ số vẫn không tốt. Cá nhân, tôi nghĩ rằng điều này làm cho nó thú vị hơn khi làm việc (giống như sử dụng võng mạc cho các nhiệm vụ mà regex không bao giờ có ý định). : D

  • Nó vẫn là một WIP. Có một số lỗi và một số điều tôi chưa biết thêm.

  • Nó không có nhiều người dùng. (Số người dùng hiện tại: 1).

Nếu bạn quan tâm đến việc tìm hiểu thêm, đây là một số tài nguyên tốt:

  • Một phòng trò chuyện nơi tôi sẽ vui lòng trả lời bất kỳ câu hỏi nào của bạn và giúp giải thích cách thức hoạt động với bạn.

  • Một chủ đề mẹo để chơi golf trong vim, nhưng hầu hết các mẹo mang qua.

  • Một bài đăng meta mô tả V chi tiết hơn.


8

Gần đây tôi đã tạo ra một ngôn ngữ lập trình mới, được gọi là Turtlèd , hoạt động trên một lưới các ký tự với một con rùa, di chuyển xung quanh lưới, ghi vào lưới và có dòng điều khiển với lưới. Lưới được in ngầm ở cuối. Bởi thực tế này, nó không phải viết khoảng trắng, và nó có thể viết văn bản theo không gian, thay vì từ trái sang phải, lên xuống, nó có thể làm cho nó đáp ứng định nghĩa được đưa ra, giỏi nghệ thuật ascii.

Hiện tại, không có bất kỳ tài liệu nào, vì vậy bạn có thể sẽ không thể sử dụng nó, trừ khi bạn muốn đọc thông dịch viên của tôi, đây có lẽ không phải là điều bạn muốn làm. Tôi nghĩ cũng có thể có lỗi trong trình thông dịch, nhưng thông số kỹ thuật không được phát triển đủ để nói nếu đó là lỗi. Turtlèd có thể sẽ được hoàn thành sớm, với các tài liệu và tất cả, mặc dù


3

Giới thiệu về ASCII-Golfing cho 05AB1E (Chuyển đổi cơ sở [Đơn giản])

Mặc dù 05AB1E không dành cho ASCII-Art trực tiếp, tôi đã chiến thắng 2 thử thách với nó. Điều tốt nhất về 05AB1E là, ngay cả với chuyển đổi cơ sở đơn giản, vẫn thường có các thủ thuật bạn có thể sử dụng để mở rộng và thậm chí giảm một nửa số byte của mình. Thông thường trong các thử thách ASCII, có các thủ thuật lặp lại mà bạn có thể sử dụng để chỉ vẽ một nửa mô hình sau đó lật và nối. Nếu đó là mô hình bốn chiều, bạn có thể thực hiện những việc như zip và chia đôi để chỉ vẽ một góc của mẫu. Có rất nhiều kỹ thuật thao tác cấu trúc dữ liệu để sử dụng cùng với ý tưởng nén cơ sở đơn giản này.


Đây là một khóa học nhanh chóng về chiến thuật chuyển đổi cơ sở:

Trong 05AB1E, tôi liệt kê tất cả các ký tự được sử dụng trong nghệ thuật ASCII, ví dụ:

--===___===--

Sẽ dẫn đến:

-
=
_

Sau đó tôi gán cho chúng các số bắt đầu bằng 1 rồi 0 rồi 2:

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

Tôi thay thế các ký tự trong chuỗi gốc bằng các số:

1122200022211

Tôi chuyển đổi sang số thập phân bằng cách sử dụng cơ sở thấp nhất có thể (3):

879412

( Cách thực hiện việc này bằng 05AB1E )

Sau đó tôi chuyển đổi nó thành cơ sở 214:

Jh]

( Cách thực hiện việc này bằng 05AB1E )

Sau đó tôi bọc nó trong đoạn mã sau:

05AB1E , 16 byte

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

Hãy thử trực tuyến!

Hoặc thử nó với các bước trung gian được hiển thị.

Giải thích cuối cùng:

•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.

Bây giờ, với thử thách cụ thể này, chuỗi quá ngắn nên không có ý nghĩa gì. Có lẽ tôi chỉ cần đẩy một nửa chuỗi và Palindromize trong 10 byte "--===__"ûhoặc chơi golf giống như Adnan đã làm trong các nhận xét bằng cách sử dụng yếu tố thông minh, thông minh •Jh]•3B5!…-=_‡. Anh ấy cũng (một trong?) Người tạo (s?) Của 05AB1E.


Ví dụ phức tạp hơn:

/codegolf//a/106621/59376


Ngoài ra, có thể thử ngôn ngữ phức tạp của Dennis 'kolmogorov: Bubblegum ; không biết làm thế nào để sử dụng này.


2
Bubblegum không thực sự là một ngôn ngữ tốt cho nghệ thuật ASCII, vì nó không thể lấy đầu vào (ngoại trừ hai ví dụ ), điều cần thiết cho hầu hết các thách thức nghệ thuật ASCII. Cinnamon Gum có thể là một lựa chọn tốt hơn, mặc dù tôi không biết nhiều về nó và theo hiểu biết của tôi thì không có tài liệu
ETHproductions 10/2/2017

1
Không thực sự quan trọng, nhưng bạn có thể chơi golf này xuống:•Jh]•3B5!…-=_‡
Adnan

1
@Adnan "--===__"û10;).
Bạch tuộc ma thuật Urn

2

Cọ sơn

Paint Brush là một ngôn ngữ lập trình giải trí được tạo ra bởi chính tôi, Hyper Neutrino, với mục đích giỏi ASCII-Art. Nó không cạnh tranh tốt với Char than trong nhiều trường hợp, nhưng nó có thể lấy đầu vào và làm nhiều thứ khác. Nó hoạt động trên một lưới các ký tự 2D và có thể điều khiển ký tự nền, thao tác các ký tự nền được coi là tại thời điểm đó, thay đổi các hàng và cột, di chuyển các hàng và cột, sao chép các hàng, cột hoặc toàn bộ lưới, v.v.

Một số ví dụ có thể được tìm thấy trong kho GitHub.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.