ASCII มีภาษาใดบ้างที่ดีเป็นพิเศษหรือไม่?


20

ฉันสงสัยว่ามีภาษาลึกลับหรือการเล่นกอล์ฟที่มีเป้าหมายข้อความเอาต์พุตและ ASCII เป็นพิเศษหรือไม่?

ตัวอย่างเช่น 05AB1E เริ่มต้นอย่างน้อยโดยกำหนดเป้าหมายการแปลงพื้นฐาน มีภาษากอล์ฟใด ๆ ที่กำหนดเป้าหมายเป็นข้อความและศิลปะการแสดงผลข้อความหรือไม่?

ถ้าเป็นเช่นนั้นพวกเขามีหน้าคำแนะนำที่นี่และพวกเขาใช้งานทั่วไป?

หมายเหตุ: ฉันไม่ได้กำลังมองหาภาษาที่สามารถแสดงผลงานศิลปะ ASCII ได้ แต่เป็นภาษาที่ออกแบบมาโดยเจตนาเพื่อให้สามารถดำเนินท้าทายอย่างรวดเร็วและกระชับ


1
เมื่อคุณพูดถึงมันในประสบการณ์ของฉัน 05AB1E นั้นดีมากในการท้าทายงานศิลปะ ASCII
DJMcMayhem

1
ฉันต้องการเห็นภาษาศิลปะ ASCII ชื่อ "ASC และ II จะได้รับ" (แม้ว่าอย่างจริงจังถ้าไม่มีใครออกไปแล้วก็มีศักยภาพอยู่ที่นั่นนิดหน่อย)
Hactar

ฉันได้ออกแบบภาษาที่เรียกว่าเครยอนซึ่งทำขึ้นเป็นพิเศษสำหรับการสร้างงานศิลปะ ASCII แต่น่าเสียดายที่ฉันยังไม่มีเวลานำไปใช้
ETHproductions

@ ASCII เท่านั้นและฉันทำงานกับภาษา ASCII-art มันยังอยู่ในขั้นตอนการออกแบบ แต่เราจะชอบอินพุทของคุณ (หรือใครก็ได้) เข้าร่วมแชทกับเราหากคุณสนใจ
DLosc

ที่นี่ฉันคิดว่าความคิดของฉันไม่เหมือนใคร ... ฉันถามคำถามนี้เพราะฉันต้องการเขียนภาษา CharMatrix ไม่มีใครพูดถึงคุณสมบัติที่ฉันต้องการ แต่อย่างใดดังนั้นฉันอาจไปข้างหน้าและทำมันต่อไป คำตอบและความคิดเห็นทั้งหมดเป็นวิธีที่ยอดเยี่ยมขอบคุณทุกคน
Socratic Phoenix

คำตอบ:


15

แท้จริงแล้วมี! ภาษาหนึ่งดังกล่าวเป็นหนึ่งที่ผมได้ทำงานในขณะที่เรียกว่าV

ภายใต้ประทุน V เป็นเพียงกลุ่มแต่การกดแป้นทั้งหมดจะทำงานโดยอัตโนมัติและเนื้อหาของบัฟเฟอร์กลุ่มจะถูกพิมพ์ไปยัง STDOUT เมื่อโปรแกรมจบ สิ่งนี้ทำให้การเรียกใช้สะดวกยิ่งขึ้น

ประวัติบางอย่างเกี่ยวกับภาษา เมื่อฉันเริ่มใช้โปรแกรมแก้ไขข้อความ vim สำหรับ code-golf ฉันค้นพบว่าจริง ๆ แล้วค่อนข้างดี แต่มีคุณลักษณะที่น่ารำคาญบางอย่างที่ทำให้การแข่งขันทำได้ยากขึ้น ตัวอย่างเช่นคุณสามารถตั้งค่า "while loop" เรียงลำดับโดยทำ

qq<foobar>@qq@q

ซึ่งจะทำซ้ำ<foobar>จนกว่าจะเกิดข้อผิดพลาด มีรหัสสำเร็จรูป 7 ไบต์ ò<foobar>òในวีนี้จะลงไป

บางสิ่งที่ทำให้ V ยอดเยี่ยมสำหรับ ASCII-art:

  • เป็น 2d โดยธรรมชาติ คุณลักษณะหนึ่งคือมีตำแหน่ง "เคอร์เซอร์" ซึ่งคำสั่งส่วนใหญ่ทำอะไรบางอย่างตามที่เคอร์เซอร์อยู่ในข้อความ คำสั่งอื่นย้ายตำแหน่งของเคอร์เซอร์ ตัวอย่างเช่นxลบอักขระเดี่ยว แต่Wxเลื่อนไปข้างหน้าคำแล้วจึงลบอักขระ เนื่องจากภาษาอื่น ๆ ส่วนใหญ่ไม่ได้มีเจตนาเป็นสองมิติจึงเป็นข้อได้เปรียบที่ดีเมื่อมีความท้าทายเกิดขึ้นวางตำแหน่งข้อความในพื้นที่ 2D

  • มันเป็นสตริงทั้งหมด คุณสามารถใช้การดำเนินการทางคณิตศาสตร์บางอย่างได้

  • มันใช้การบีบอัด regexเพื่อเปลี่ยนข้อความอย่างรวดเร็ว

  • หน่วยความจำภายในทั้งหมดซึ่งเป็นเพียงอาร์เรย์ 2d ของอักขระจะถูกพิมพ์โดยปริยายเมื่อโปรแกรมสิ้นสุด นอกจากนี้อินพุตทั้งหมดจะถูกเพิ่มเข้าไปในหน่วยความจำภายในโดยนัยซึ่งถือว่าดีเมื่อความท้าทายส่วนใหญ่เกี่ยวข้องกับการเปลี่ยนอินพุตในบางวิธี

ดังนั้นฉันสนุกกับการใช้ภาษานี้จริง ๆ และถ้าคุณกำลังมองหาภาษาโดยเฉพาะฉันขอแนะนำ อย่างไรก็ตามฉันจะให้ข้อจำกัดความรับผิดชอบบางประการ

  • มันสับสนมากในการเรียนรู้ นอกจากนี้ยังมีประสิทธิภาพมาก แต่เนื่องจากเป็นโปรแกรมแก้ไขข้อความยอดนิยมที่มีอายุ 30 ปีจึงมีคุณสมบัติที่ไม่ชัดเจนมากมายที่สร้างความสับสนให้ผู้ใช้ใหม่ได้ง่าย

  • แม้ว่ามันจะดีกว่าในการจัดการตัวเลขมากกว่าเสียงเรียกเข้า แต่การรองรับตัวเลขก็ยังไม่ดีนัก โดยส่วนตัวแล้วฉันคิดว่าสิ่งนี้ทำให้การทำงานสนุกขึ้น (เช่นการใช้เรติน่าสำหรับงาน regex ที่ไม่เคยมีมาก่อน) : D

  • มันยังคงเป็น WIP มีข้อบกพร่องบางอย่างและบางสิ่งที่ฉันยังไม่ได้เพิ่มเข้าไป

  • มีผู้ใช้ไม่มาก (จำนวนผู้ใช้ปัจจุบัน: 1)

หากคุณสนใจที่จะเรียนรู้เพิ่มเติมนี่คือแหล่งข้อมูลที่ดี:

  • ห้องสนทนาที่ฉันจะมีความสุขที่จะตอบคำถามใด ๆ ที่คุณมีและช่วยอธิบายวิธีการทำงานให้กับคุณ

  • ด้ายเคล็ดลับสำหรับการเล่นกอล์ฟในกลุ่ม แต่ส่วนใหญ่ของเคล็ดลับดำเนินการมากกว่า

  • โพสต์เมตาอธิบาย V ในรายละเอียดมากขึ้น


8

ฉันเพิ่งสร้างภาษาการเขียนโปรแกรมใหม่ที่เรียกว่าTurtlèdซึ่งทำงานในตารางของตัวละครที่มีเต่าซึ่งเคลื่อนที่ไปรอบ ๆ ตารางเขียนไปยังตารางและมีการควบคุมการไหลกับตาราง กริดจะถูกพิมพ์โดยปริยายในตอนท้าย จากความจริงที่ว่ามันไม่จำเป็นต้องเขียนช่องว่างและมันสามารถเขียนข้อความเชิงพื้นที่มากกว่าจากซ้ายไปขวาขึ้นลงมันอาจทำให้มันเป็นไปตามคำนิยามที่กำหนดให้เป็นศิลปะ ASCII ที่ดี

ขณะนี้ไม่มีเอกสารใด ๆ ดังนั้นคุณอาจไม่สามารถใช้งานได้เว้นแต่คุณต้องการอ่านล่ามของฉันซึ่งอาจไม่ใช่สิ่งที่คุณต้องการทำ ฉันคิดว่าอาจมีข้อบกพร่องในล่ามด้วย แต่สเป็คไม่ได้พัฒนาเพียงพอที่จะบอกว่ามันเป็นข้อผิดพลาด Turtlèdอาจจะเสร็จเร็ว ๆ นี้โดยมีเอกสารและทั้งหมด


3

คำแนะนำเกี่ยวกับการเล่นกอล์ฟแบบ ASCII สำหรับ 05AB1E (การแปลงพื้นฐาน [ง่าย])

แม้ว่า 05AB1E ไม่ได้มีไว้สำหรับ ASCII-Art โดยตรง แต่ฉันได้รับรางวัลถึง 2 ความท้าทาย สิ่งที่ดีที่สุดเกี่ยวกับ 05AB1E คือแม้ว่าการแปลงฐานอย่างง่ายมักมีลูกเล่นที่คุณสามารถใช้ในการขยายและลดจำนวนไบต์ลงได้ครึ่งหนึ่ง บ่อยครั้งที่ความท้าทายของ ASCII มีเทคนิคการทำซ้ำที่คุณสามารถใช้เพื่อวาดรูปแบบเพียงครึ่งเดียวจากนั้นพลิกและต่อกัน หากเป็นรูปแบบสี่วิธีคุณสามารถทำสิ่งต่าง ๆ เช่น zip และ bifurcate เพื่อวาดมุมของลวดลายเท่านั้น มีเทคนิคการจัดการโครงสร้างข้อมูลมากมายที่จะใช้ร่วมกับแนวคิดการบีบอัดฐานอย่างง่ายนี้


นี่คือหลักสูตรที่ผิดพลาดอย่างรวดเร็วในชั้นเชิงการแปลงฐาน:

ใน 05AB1E ฉันระบุอักขระทั้งหมดที่ใช้ใน ASCII-art เช่น:

--===___===--

จะส่งผลให้:

-
=
_

ฉันกำหนดหมายเลขให้พวกเขาเริ่มต้นด้วย 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.

ตอนนี้ด้วยความท้าทายที่เฉพาะเจาะจงนี้สตริงสั้นมากมันไม่สมเหตุสมผลที่จะทำ ฉันอาจจะเพียงแค่ผลักดันครึ่งสตริงและ Palindromize 10 ไบต์"--===__"ûหรือกอล์ฟมันเหมือน Adnan •Jh]•3B5!…-=_‡ทำในการแสดงความคิดเห็นโดยใช้ปัจจัยมนุษย์สมาร์ท เขายัง(หนึ่ง?)ผู้สร้าง(s?)ของ 05AB1E


ตัวอย่างที่ซับซ้อนมากขึ้น:

/codegolf//a/106621/59376


นอกจากนี้อาจลองภาษาที่ซับซ้อนของ Dennis 'kolmogorov: Bubblegum ; ไม่รู้จะใช้ยังไง


2
Bubblegum ไม่ใช่ภาษาที่ดีเยี่ยมสำหรับ ASCII-art เนื่องจากมันไม่สามารถรับอินพุตได้ (ยกเว้นตัวอย่างสองตัวอย่าง ) ซึ่งจำเป็นสำหรับความท้าทายของ ASCII-art ส่วนใหญ่ Cinnamon Gumอาจเป็นตัวเลือกที่ดีกว่า แต่ฉันไม่รู้มากเกี่ยวกับเรื่องนี้และความรู้ของฉันไม่มีเอกสาร
ETHproductions

1
ไม่สำคัญจริงๆ แต่คุณสามารถตีกอล์ฟนี้ได้ที่:•Jh]•3B5!…-=_‡
Adnan

1
@Adnan "--===__"ûสำหรับ 10;)
Magic Octopus Urn

2

พู่กัน

Paintbrush เป็นภาษาการเขียนโปรแกรมเพื่อสันทนาการที่สร้างขึ้นด้วยตัวเอง Hyper Neutrino เพื่อจุดประสงค์ในการเป็น ASCII-Art มันไม่สามารถแข่งขันกับ Charcoal ได้ดีในหลาย ๆ กรณี แต่สามารถรับข้อมูลและทำสิ่งอื่นได้หลากหลาย มันทำงานบนตารางของตัวละคร 2D และสามารถจัดการกับตัวละครพื้นหลังจัดการสิ่งที่ถือว่าเป็นตัวละครพื้นหลังในเวลานั้นเลื่อนแถวและคอลัมน์ย้ายแถวและคอลัมน์คัดลอกแถวคอลัมน์หรือทั้งตาราง ฯลฯ

ตัวอย่างบางส่วนอาจพบได้ในที่เก็บ GitHub

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.