คำถามติดแท็ก interpreter

งานที่เกี่ยวข้องกับการเขียนล่ามภาษาต่าง ๆ หรือพิธีการ

28
ทำให้โพสต์ในอนาคตสามารถเรียกใช้แบบออนไลน์ได้กับกองย่อย
Stack Snippets เพิ่งถูกเพิ่มไปยังPPCG ! เตือนความทรงจำของJSFiddle , Stack Snippets อนุญาตให้ใช้ HTML, CSS และ JavaScript โดยตรงในโพสต์ ! นี่เป็นตัวอย่างสแต็กที่ง่ายมาก: alert('This is JavaScript') h3 { color: red } /* This is CSS */ <h3>This is HTML</h3> เรียกใช้ข้อมูลโค้ดซ่อนผลลัพธ์ขยายตัวอย่างข้อมูล คุณสมบัติของ Stack Exchange จะมีประโยชน์มากสำหรับเราหากรองรับภาษานอกเหนือจาก JavaScript (คำตอบของความท้าทายสามารถทดสอบได้ในจุดที่สามารถสร้างตัวอย่างอินพุทแบบไดนามิก ฯลฯ ) นี่คือที่ที่คุณเข้ามา ท้าทาย เป้าหมายของความท้าทายนี้คือการเขียนล่ามสำหรับภาษาการเขียนโปรแกรมบางอย่างโดยใช้ Stack Snippets และ JavaScript ประเด็นก็คือการทำสิ่งที่สามารถคัดลอกและนำไปใช้ในคำถามและคำตอบ PPCG …

30
ตีความสมอง ***
เขียนโปรแกรมที่สั้นที่สุดในภาษาที่คุณชื่นชอบเพื่อตีความโปรแกรมbrainfuck โปรแกรมอ่านจากไฟล์ อินพุตและเอาต์พุตเป็นอินพุตมาตรฐานและเอาต์พุตมาตรฐาน ขนาดของเซลล์: 8 บิตที่ไม่ได้ลงชื่อ โอเวอร์โฟลว์ไม่ได้กำหนด ขนาดอาร์เรย์: 30000 ไบต์ (ไม่วน) คำสั่งที่ไม่ถูกต้องไม่ได้เป็นส่วนหนึ่งของอินพุต ความคิดเห็นเริ่มต้นด้วย # และขยายไปถึงจุดสิ้นสุดความคิดเห็นคือทุกอย่างที่ไม่ได้อยู่ใน+-.,[]<> ไม่มีสัญลักษณ์ EOF การทดสอบที่ดีมากสามารถพบได้ที่นี่ มันอ่านตัวเลขแล้วพิมพ์จำนวนเฉพาะถึงจำนวนนั้น เพื่อป้องกันไม่ให้ลิงค์เน่านี่คือสำเนาของรหัส: compute prime numbers to use type the max number then push Alt 1 0 =================================================================== ======================== OUTPUT STRING ============================ =================================================================== >++++++++[<++++++++>-]<++++++++++++++++.[-] >++++++++++[<++++++++++>-]<++++++++++++++.[-] >++++++++++[<++++++++++>-]<+++++.[-] >++++++++++[<++++++++++>-]<+++++++++.[-] >++++++++++[<++++++++++>-]<+.[-] >++++++++++[<++++++++++>-]<+++++++++++++++.[-] >+++++[<+++++>-]<+++++++.[-] >++++++++++[<++++++++++>-]<+++++++++++++++++.[-] >++++++++++[<++++++++++>-]<++++++++++++.[-] >+++++[<+++++>-]<+++++++.[-] …

9
เขียนล่ามราคา 99
99 (เด่นชัด "เก้าสิบเก้า") เป็นภาษาการเขียนโปรแกรมลึกลับใหม่ล่าสุด(เพื่อไม่ให้สับสนกับ99โน้ตตัวเอียง) งานของคุณในการท้าทายนี้คือการเขียนล่ามให้กับ99ที่สั้นที่สุด การส่งที่มีจำนวนไบต์น้อยที่สุดจะเป็นผู้ชนะ Tiebreaker จะไปยังการส่งที่โพสต์ก่อน เนื่องจากคำถามนี้มีความลึกมากกว่าปกติเล็กน้อยและฉันอยากเห็นคำตอบที่ดีฉันจะมอบรางวัล 250 ตัวแทนให้กับคำตอบที่ฉันโปรดปราน (ไม่จำเป็นต้องเป็นผู้ชนะ) 99 Spec 99เป็นภาษาที่จำเป็น แต่ละบรรทัดในโปรแกรม99 คำสั่งเดียวและในระหว่างการดำเนินการตัวชี้คำสั่งเริ่มต้นที่บรรทัดบนสุดและจะผ่านแต่ละบรรทัดถัดไปตามลำดับดำเนินการพวกเขาไปพร้อมกัน โปรแกรมจะสิ้นสุดลงเมื่อบรรทัดสุดท้ายถูกดำเนินการ คำสั่งไปที่อาจเปลี่ยนเส้นทางของตัวชี้คำสั่ง ขึ้นบรรทัดใหม่พื้นที่และ 9เป็นอักขระสามตัวเท่านั้นที่มีความสำคัญในโปรแกรม99 อักขระอื่น ๆ ทั้งหมดจะถูกละเว้นอย่างสมบูรณ์ นอกจากนี้ช่องว่างต่อท้ายในแต่ละบรรทัดจะถูกละเว้นและช่องว่างหลายช่องในแถวจะถูกอ่านเป็นหนึ่งช่องว่าง ("Newline" หมายถึงการเข้ารหัสตัวแบ่งบรรทัดทั่วไปไม่สำคัญว่าล่ามของคุณใช้ภาษาใด) ดังนั้นโปรแกรมนี้: 9 BLAH 99 9a9bb9c9 9 this line and the next have 6 trailing spaces 9 เหมือนกับโปรแกรมนี้: 9 99 9999 9 9 ตัวแปร …

30
สร้าง“ H” จาก“ H” ที่เล็กลง
ท้าทาย สร้างฟังก์ชั่นหรือโปรแกรมที่เมื่อได้รับจำนวนเต็มsizeทำต่อไปนี้: ถ้าsizeเท่ากับ 1 เอาต์พุต H H HHH H H ถ้าsizeมากกว่า 1 เอาต์พุต X X XXX X X โดยที่Xเอาต์พุตของโปรแกรม / ฟังก์ชั่นสำหรับsize - 1 (หากคุณต้องการคุณอาจมีกรณีฐานสอดคล้องกับ0ตราบใดที่คุณระบุในคำตอบของคุณ) รูปแบบผลลัพธ์ใด ๆ ต่อไปนี้เป็นที่ยอมรับแล้วแต่จำนวนใดจะสะดวกกว่าสำหรับคุณ: สตริงของโครงสร้างที่ต้องการพร้อมอักขระสองตัวที่แตกต่างกันซึ่งสอดคล้องกับHและspace อาร์เรย์สองมิติพร้อมโครงสร้างที่ต้องการโดยมีค่าแตกต่างกันสองค่าที่สอดคล้องกับHและspace อาร์เรย์ / รายการสตริงที่มีหนึ่งบรรทัดของเอาต์พุตในแต่ละสตริงโดยมีค่าแตกต่างกันสองค่าที่สอดคล้องกับHและspace อนุญาตให้มีช่องว่างนำหน้าตราบใดที่มีช่องว่างนำหน้าจำนวนหนึ่งคงที่ในแต่ละบรรทัด อักขระเอาต์พุตที่แตกต่างกันสองตัวสามารถขึ้นอยู่กับสิ่งที่คุณเลือกตราบใดที่อักขระเหล่านั้นแตกต่างกัน ระบุรูปแบบผลลัพธ์ที่โค้ดของคุณส่งคืน กรณีทดสอบ 1 H H HHH H H 2 H H H H HHH HHH H …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

30
สร้างล่าม #;
ฉันเพิ่งสร้างภาษาใหม่ที่เรียกว่า;#(ออกเสียง "Semicolon Hash") ซึ่งมีเพียงสองคำสั่ง: ; เพิ่มหนึ่งในการสะสม #modulo ตัวสะสมโดย 127 แปลงเป็นอักขระ ASCII และเอาท์พุทโดยไม่ต้องขึ้นบรรทัดใหม่ หลังจากนี้ให้รีเซ็ตตัวสะสมเป็น 0 ใช่แล้ว 127 ถูกต้อง อักขระอื่น ๆ จะถูกละเว้น มันไม่มีผลกับตัวสะสมและไม่ควรทำอะไรเลย งานของคุณคือสร้างล่ามสำหรับภาษาที่ทรงพลังนี้! ควรเป็นโปรแกรมเต็มรูปแบบหรือฟังก์ชั่นที่จะใช้;#โปรแกรมเป็นอินพุตและสร้างเอาต์พุตที่ถูกต้อง ตัวอย่าง Output: Hello, World! Program: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# Output: ;# Program: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;#;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;# Output: 2d{ (unprintable characters here; should have 4 `\000` bytes between the `d` and the `{` and …

30
การต่อท้ายความยาวสตริง
ท้าทาย: กำหนดสตริงsตัวอักษรa- z, A- Z, 0- 9ผนวกความยาวของsตัวเองนับตัวอักษรเพิ่มเติม (s) sมีความยาวเป็นส่วนหนึ่งของความยาวทั้งหมดของ การป้อนข้อมูล: เพียงสตริงที่มีความยาวโดยพลการ (ว่างเปล่า) เอาท์พุท: สตริงเดียวกัน แต่มีความยาวต่อท้าย ควรนับอักขระที่แสดงความยาวเป็นส่วนหนึ่งของความยาว ในกรณีที่มีความยาวที่ถูกต้องจำนวนมากเพื่อต่อท้ายเลือกขนาดที่เล็กที่สุดที่เป็นไปได้ (ดูตัวอย่างกรณีทดสอบ) กรณีทดสอบ: INPUT -> OUTPUT // Comment aaa -> aaa4 -> 1 // Empty string aaaaaaaa -> aaaaaaaa9 // aaaaaaaa10 would also normally be valid, but violates using the smallest number rule mentioned …
51 code-golf  string  code-golf  string  random  code-golf  array-manipulation  code-golf  ascii-art  kolmogorov-complexity  random  code-golf  array-manipulation  code-golf  stateful  code-golf  hello-world  code-golf  string  code-golf  interpreter  lisp  code-golf  restricted-source  quine  palindrome  code-golf  ascii-art  random  generation  challenge-writing  ascii-art  random  polyglot  maze  answer-chaining  string  cops-and-robbers  whitespace  code-golf  string  cops-and-robbers  whitespace  code-golf  number  sequence  code-golf  date  code-golf  ascii-art  decision-problem  code-golf  combinatorics  chemistry  code-golf  kolmogorov-complexity  source-layout  radiation-hardening  code-golf  ascii-art  path-finding  maze  code-golf  string  ascii-art  game  animation  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  restricted-source  new-years 

26
แปลรหัส oOo
รับอินพุตของโปรแกรมที่เขียนในoOo CODEให้เอาท์พุทรหัส BF ที่มันแทน นี่เป็นคำอธิบายสั้น ๆ ว่า oOo CODE ทำงานอย่างไร: ครั้งแรกตัวละครที่ไม่ใช่ตัวอักษรทั้งหมดจะถูกลบออก (ทุกอย่างไม่อยู่ในช่วง A-Za-z) ตัวอย่างเช่นใช้โปรแกรมPROgRam reVERsES giVeN iNPut sEqUENcE(ตัวอย่างที่ให้ไว้ในหน้า esolangs wiki ที่ทำสิ่งที่คุณต้องการ) PROgRamreVERsESgiVeNiNPutsEqUENcEหลังจากขั้นตอนแรกนี้ตอนนี้เรามี ถัดไปแบ่งตัวอักษรที่เหลือทั้งหมดลงในกลุ่มของ 3 PRO,gRa,mre,VER,sES,giV,eNi,NPu,tsE,qUE,NcEตอนนี้เรามี หากมีกลุ่มต่อท้ายที่มี 1 หรือ 2 ตัวอักษรให้ทิ้งมัน แปลงแต่ละกลุ่มของ 3 ตัวอักษรเป็นคำสั่ง BF ตามตารางต่อไปนี้: ooo > ooO < oOo [ oOO ] Ooo - OoO + OOo . OOO …

11
เรียกใช้ Stackylogic
Stackylogic เป็นภาษาการเขียนโปรแกรมแบบลอจิกที่ฉันสร้างขึ้นซึ่งใช้เวลาในการ0's และ1' s สำหรับการป้อนข้อมูลและการส่งออกเดียว0หรือ1เมื่อเสร็จสิ้น โปรแกรม Stackylogic ประกอบด้วยเส้นที่สามารถมีตัวละครทั้งสาม01?เช่นเดียวกับว่าหนึ่ง<ในตอนท้ายของหนึ่งของเส้น สายอาจจะไม่ว่างเปล่าและบรรทัดที่มี<จะต้องมีอย่างน้อยหนึ่ง0, 1หรือ?ก่อนที่มันจะ นี่คือโปรแกรมตัวอย่างที่ (ตามที่ฉันจะอธิบาย) คำนวณNANDของสองบิต: 1 ?< 11 ? 0 ทุกบรรทัดในโปรแกรม Stackylogic ถือเป็นสแต็กโดยมีด้านล่างทางด้านซ้ายและด้านบนทางด้านขวา โดยนัยมีสแต็กเปล่า (บรรทัดว่าง) อยู่ก่อนบรรทัดแรกในโปรแกรมและหลังบรรทัดสุดท้าย <ซึ่งเราจะเรียกเคอร์เซอร์เครื่องหมายสแต็คที่จะเริ่มต้นเมื่อโปรแกรม Stackylogic มีการเรียกใช้ การดำเนินการของโปรแกรม Stackylogic ดำเนินการดังนี้: วางอักขระบนสุดออกจากสแต็กที่เคอร์เซอร์กำลังชี้ไป หากตัวละครนั้น?ให้แจ้งผู้ใช้สำหรับ0หรือหรือ1และทำราวกับว่าเป็นตัวละคร หากอักขระอยู่0ให้เลื่อนเคอร์เซอร์ขึ้นหนึ่งกอง (ไปยังบรรทัดที่อยู่เหนือบรรทัดปัจจุบัน) หากอักขระอยู่1ให้เลื่อนเคอร์เซอร์หนึ่งสแต็กลง (ไปยังบรรทัดด้านล่างบรรทัดปัจจุบัน) หากกองเคอร์เซอร์เลื่อนไปที่ว่างเปล่าเอาท์พุทค่าสุดท้ายที่โผล่ออกมาจากกอง (เสมอ0หรือหรือ1) และจบโปรแกรม มิฉะนั้นหากเคอร์เซอร์เลื่อนไปที่ไม่ว่างเปล่าให้กลับไปที่ขั้นตอนที่ 1 และทำซ้ำกระบวนการ โปรดสังเกตว่าโปรแกรม Stackylogic มักจะจบลงเพราะพวกเขาจะต้องทำให้หมดสแต็กในที่สุด ตัวอย่าง NAND ในโปรแกรม NAND เคอร์เซอร์เริ่มต้นที่?: …

13
เขียนล่ามสำหรับแคลคูลัสแลมบ์ดาที่ยังไม่พิมพ์
ความท้าทายคือการเขียนล่ามสำหรับแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์ไว้ในตัวละครให้น้อยที่สุด เรากำหนดแคลคูลัสแลมบ์ดาที่ไม่ได้พิมพ์ดังนี้: วากยสัมพันธ์ นิพจน์มีสามประเภทดังต่อไปนี้: การแสดงออกแลมบ์ดามีรูปแบบ(λ x. e)ที่xอาจเป็นชื่อตัวแปรทางกฎหมายและeการแสดงออกทางกฎหมายใด ๆ นี่xเรียกว่าพารามิเตอร์และeเรียกว่าร่างกายของฟังก์ชั่น เพื่อความง่ายเราได้เพิ่มข้อ จำกัด เพิ่มเติมว่าจะต้องไม่มีตัวแปรที่มีชื่อเดียวกันกับxขอบเขตในปัจจุบัน ตัวแปรเริ่มต้นที่จะอยู่ในขอบเขตเมื่อชื่อของมันปรากฏขึ้นระหว่าง(λและและหยุดที่จะอยู่ในขอบเขตที่สอดคล้องกัน.) แอปพลิเคชั่นมีรูปแบบ(f a)ที่ไหนfและaเป็นนิพจน์ทางกฎหมาย ที่นี่fเรียกว่าฟังก์ชั่นและaเรียกว่าอาร์กิวเมนต์ ตัวแปรมีรูปแบบxที่xเป็นชื่อตัวแปรทางกฎหมาย อรรถศาสตร์ ฟังก์ชั่นถูกนำไปใช้โดยการแทนที่แต่ละพารามิเตอร์ที่เกิดขึ้นในร่างกายฟังก์ชั่นด้วยการโต้แย้ง อีกอย่างเป็นทางการการแสดงออกในรูปแบบ((λ x. e) a)ที่xเป็นชื่อตัวแปรและeและaมีการแสดงออกประเมิน (หรือลด) เพื่อการแสดงออกe'ที่e'เป็นผลมาจากการเปลี่ยนที่เกิดขึ้นแต่ละแห่งxในด้วยea รูปแบบปกติคือการแสดงออกซึ่งไม่สามารถประเมินเพิ่มเติม ความท้าทาย ภารกิจของคุณหากคุณเลือกที่จะยอมรับมันคือการเขียนล่ามซึ่งใช้เป็นนิพจน์ของแคลคูลัสแลมบ์ดาที่ไม่มีการพิมพ์ที่ไม่มีตัวแปรอิสระและสร้างผลลัพธ์ตามรูปแบบปกติของนิพจน์ . หากการแสดงออกไม่มีรูปแบบปกติหรือไม่ใช่การแสดงออกที่ถูกต้องพฤติกรรมที่ไม่ได้กำหนด โซลูชันที่มีจำนวนอักขระน้อยที่สุดชนะ หมายเหตุสองประการ: อินพุตอาจถูกอ่านจาก stdin หรือจากชื่อไฟล์ที่กำหนดเป็นอาร์กิวเมนต์บรรทัดคำสั่ง (คุณจะต้องใช้อย่างใดอย่างหนึ่งหรืออื่น ๆ - ไม่ใช่ทั้งสองอย่าง) เอาต์พุตไปที่ stdout อีกทางหนึ่งคุณอาจกำหนดฟังก์ชั่นที่รับอินพุตเป็นสตริงและส่งคืนเอาต์พุตเป็นสตริง หากอักขระที่ไม่ใช่ ASCII เป็นปัญหาสำหรับคุณคุณสามารถใช้เครื่องหมายแบ็กสแลช ( \) แทนλ เรานับจำนวนอักขระไม่ใช่ไบต์ดังนั้นแม้ว่าไฟล์ต้นฉบับของคุณจะถูกเข้ารหัสเป็น Unicode …

27
ทัวริงล่ามภาษาที่สมบูรณ์
ความท้าทายที่ฉันคิดว่าจะเจ๋งมากคือการทำล่ามสำหรับภาษาทัวริงที่คุณเลือก กฎง่าย ๆ : คุณสามารถใช้ภาษาใดก็ได้ในการสร้างล่ามนี้แม้ว่ามันจะใหม่กว่าความท้าทายนี้ก็ตาม คุณสามารถใช้ภาษาทัวริงที่สมบูรณ์ได้ตราบใดที่มันไม่เหมือนกับภาษาที่คุณเขียนด้วย คุณอาจไม่เพียงแค่ประเมินโค้ดตัวอย่างเช่นใช้ฟังก์ชัน eval คำอธิบายของวิธีการที่คุณเข้าหานี้จะดี แต่ไม่จำเป็น นี้จะได้คะแนนเป็นไบต์ การส่งแต่ละครั้งจะต้องทำงานอย่างเต็มที่ซึ่งหมายความว่าทุกคุณสมบัติที่คุณเลือกภาษาจะต้องมีอยู่ ที่จะใส่เพียงแค่: งานของคุณคือการสร้างล่ามที่ใช้งานได้สำหรับภาษาทัวริงที่สมบูรณ์ด้วยภาษาที่คุณเลือก โชคดี!

30
การเขียนโปรแกรมด้วย Bits และ Bytes
ในการท้าทายนี้คุณจะต้องเขียนล่ามเป็นภาษาง่ายๆที่ฉันได้ทำขึ้น ภาษานี้ใช้ตัวสะสม A ตัวเดียวซึ่งมีความยาวหนึ่งไบต์ ที่จุดเริ่มต้นของโปรแกรม A = 0 นี่คือคำแนะนำภาษา: !: ผกผัน คำสั่งนี้จะแปลงค่าตัวสะสมเล็กน้อย ทุกศูนย์กลายเป็นหนึ่งและทุก ๆ กลายเป็นศูนย์ ! ง่าย >: เลื่อนไปทางขวา คำสั่งนี้เลื่อนทุกบิตในที่เดียวไปทางขวา บิตซ้ายสุดจะกลายเป็นศูนย์และบิตขวาสุดจะถูกทิ้ง <: เลื่อนไปทางซ้าย คำสั่งนี้เลื่อนทุกบิตในที่เดียวทางซ้าย บิตขวาสุดจะกลายเป็นศูนย์และบิตซ้ายสุดจะถูกทิ้ง @: สลับ Nybbles คำสั่งนี้ทำการแลกเปลี่ยนสี่บิตบนสุดของ A ด้วยสี่บิตด้านล่าง ตัวอย่างเช่นถ้า A 01101010และคุณดำเนินการ@A จะเป็น10100110: ____________________ | | 0110 1010 1010 0110 |_______| นั่นคือคำแนะนำทั้งหมด! ง่ายใช่มั้ย กฎระเบียบ โปรแกรมของคุณต้องยอมรับอินพุตหนึ่งครั้งในตอนเริ่มต้น นี่จะเป็นบรรทัดของรหัส นี่ไม่ใช่ล่ามแบบโต้ตอบ! คุณสามารถยอมรับอินพุตได้เพียงครั้งเดียวและไม่ต้องวนกลับไปที่จุดเริ่มต้นอีกครั้งเมื่อบรรทัดนั้นถูกดำเนินการ …

1
LISP ของ McCarthy
McCarthy's LISP 2502 ในต้นปี พ.ศ. 2502 จอห์นแม็คคาร์ธีได้เขียนบทความที่แปลกใหม่ซึ่งกำหนดฟังก์ชั่นดั้งเดิมเพียงเก้าอย่างที่เมื่อรวมเข้าด้วยกันยังคงเป็นพื้นฐานสำหรับภาษา LISP ที่เหมือนกันทุกวันนี้ กระดาษมีดิจิทัลที่นี่: http://www-formal.stanford.edu/jmc/recursive.pdf งานของคุณคือการรองรับการใช้ตัวแยกวิเคราะห์และล่าม LISP แมคคาร์ของตรงตามที่อธิบายไว้ในกระดาษ 1960: นั่นคือฟังก์ชั่นQUOTE, ATOM, EQ, CAR, CDR, CONS, COND, LAMBDAและLABELทั้งหมดควรจะทำงาน กระดาษจะมีความสำคัญเหนือข้อความท้าทายนี้เมื่อพิจารณาความถูกต้องของคำตอบ แต่ฉันได้พยายามสรุปฟังก์ชั่นทั้งเก้าด้านล่าง โปรดทราบว่าภาษาจะอยู่ใน CAPS ทั้งหมดและไม่จำเป็นต้องตรวจสอบข้อผิดพลาดอินพุตทั้งหมดควรถูกสันนิษฐานว่าใช้งานได้ ประเภท มีอยู่สองประเภทใน LISP ของ McCarthy: อะตอมและลิสต์ที่เชื่อมโยงซึ่งนิยามไว้แบบวนซ้ำซึ่งอาจเป็นลิสต์หรืออะตอมและลิสต์ที่แนบกับหัว (หาง) NILมีคุณสมบัติพิเศษของการเป็นทั้งอะตอมและรายการ ตามชื่อกระดาษชื่ออะตอมจะประกอบด้วยตัวอักษรพิมพ์ใหญ่ตัวเลขและอักขระเว้นวรรคเท่านั้นแม้ว่าสตริงของช่องว่างที่ต่อเนื่องกันควรได้รับการพิจารณาว่าเป็นเพียงหนึ่งช่องว่างและควรลบอักขระช่องว่างด้านหน้าและด้านหลังทั้งหมด ตัวอย่างชื่อเทียบเท่าอะตอม ___ATOM__1__ = ATOM_1(แทนที่ขีดด้วยอักขระช่องว่าง): ตัวอย่างชื่ออะตอมที่ไม่เทียบเท่า:A_TOM_1 != ATOM_1 รายการถูกแสดงด้วยวงเล็บและโดยนัยNILอยู่ที่ท้ายรายการทุกรายการ องค์ประกอบในรายการคั่นด้วยเครื่องหมายจุลภาคและไม่ใช่ช่องว่างเหมือนกับใน Lisps ที่ทันสมัยที่สุด ดังนั้นรายการจะเป็น(ATOM 1, …

9
ทำให้เป็นสตริง
สตริง snakified มีลักษณะเช่นนี้: T AnE eOf ifi ing h s x l A k e r isI amp Sna dSt งานของคุณ รับสตริงsและขนาดnจากนั้นเอาต์พุตสตริงที่อ่านค่าได้ ปัจจัยการผลิตThisIsAnExampleOfaSnakifiedStringและ3จะผลิตตัวอย่างข้างต้น ข้อมูลจำเพาะ s จะมีอักขระ ASCII ระหว่างรหัสจุด 33 ถึง 126 เท่านั้น (ไม่มีการเว้นวรรคหรือบรรทัดใหม่) s จะมีความยาวระหว่าง 1 ถึง 100 อักขระ nเป็นจำนวนเต็มแทนขนาดของเซ็กเมนต์สตริงเอาต์พุตแต่ละตัว อักขระแต่ละบรรทัด (ขึ้น / ลงหรือซ้าย / ขวา) ที่ประกอบขึ้นเป็นเส้นโค้งใน "งู" มีความnยาวอักขระ ดูกรณีทดสอบสำหรับตัวอย่าง …
35 code-golf  string  ascii-art  code-golf  code-golf  string  balanced-string  decision-problem  code-golf  string  geometry  grid  code-golf  tips  lisp  code-golf  quine  tips  king-of-the-hill  code-challenge  math  code-golf  string  palindrome  math  fastest-code  code-golf  string  counting  code-golf  code-golf  internet  code-golf  quine  source-layout  hello-world  code-golf  math  number  sequence  arithmetic  code-golf  ascii-art  grid  code-golf  number  grid  code-golf  string  crossword  code-golf  code-golf  ascii-art  grid  counting  code-golf  code-golf  math  sequence  arithmetic  number-theory  code-golf  code-golf  graphical-output  geometry  random  code-golf  ascii-art  grid  counting  code-golf  string  ascii-art  code-challenge  test-battery  code-golf  string  code-golf  ascii-art  kolmogorov-complexity  code-golf  interpreter  code-golf  math  sequence  code-golf  math  primes  set-partitions  code-golf 

3
Tiny Lisp ล่ามจิ๋ว
เสียงกระเพื่อมโปรแกรมเมอร์โม้ว่าเสียงกระเพื่อมเป็นภาษาที่มีประสิทธิภาพซึ่งสามารถสร้างขึ้นจากชุดขนาดเล็กมากของการดำเนินงานดั้งเดิม tinylispขอนำความคิดที่ว่าในการปฏิบัติโดยการเล่นกอล์ฟล่ามภาษาที่เรียกว่า ข้อกำหนดภาษา ในสเปคนี้เงื่อนไขใด ๆ ที่ผลลัพธ์ถูกอธิบายว่า "ไม่ได้กำหนด" อาจทำอะไรก็ได้ในล่ามของคุณ: ล้มเหลวล้มเหลวอย่างเงียบ ๆ สร้าง gobbldegook แบบสุ่มหรือทำงานตามที่คาดไว้ การดำเนินการอ้างอิงในหลาม 3 สามารถใช้ได้ที่นี่ วากยสัมพันธ์ ราชสกุลใน tinylisp มี(, )หรือสตริงใด ๆ ของหนึ่งหรือพิมพ์ตัวอักษร ASCII ยกเว้นวงเล็บหรือพื้นที่ (เช่น regex ต่อไปนี้: [()]|[^() ]+.) โทเค็นใด ๆ ที่ประกอบด้วยตัวเลขทั้งหมดเป็นตัวอักษรจำนวนเต็ม (ศูนย์ชั้นนำจะถูก.) โทเค็นใด ๆ ที่มีตัวเลขที่ไม่ใช่เป็นสัญลักษณ์แม้ตัวอย่างตัวเลขที่ดูชอบ123abc, และ3.14 -10ช่องว่างทั้งหมด (รวมถึงอย่างน้อยที่สุดตัวอักษร ASCII 32 และ 10) จะถูกละเว้นยกเว้นตราบเท่าที่มันแยกโทเค็น โปรแกรม tinylisp ประกอบด้วยชุดของการแสดงออก แต่ละนิพจน์เป็นจำนวนเต็มสัญลักษณ์หรือเอส - …

5
เครื่องเสมือน 8 บิต
พื้นหลัง ฉันชอบชิป 8 บิต 6502 แบบเก่าของฉัน มันสนุกมากที่จะไขความท้าทายบางอย่างที่นี่บน PPCG ในรหัสเครื่อง 6502 แต่บางสิ่งที่ควรจะง่าย (เช่นอ่านข้อมูลหรือส่งออกไปยัง stdout) นั้นยุ่งยากโดยไม่จำเป็นในรหัสเครื่อง ดังนั้นจึงมีความคิดคร่าวๆในใจของฉัน: คิดค้นเครื่องเสมือน 8 บิตของตัวเองที่ได้รับแรงบันดาลใจจาก 6502 แต่ด้วยการออกแบบที่ปรับเปลี่ยนให้ใช้งานได้มากกว่าสำหรับความท้าทาย เริ่มใช้บางสิ่งฉันรู้ว่านี่อาจเป็นความท้าทายที่ดีถ้าการออกแบบ VM ลดลงจนเหลือน้อยที่สุด :) งาน ใช้เครื่องเสมือน 8 บิตที่สอดคล้องกับข้อกำหนดต่อไปนี้ นี่คือโค้ดกอล์ฟดังนั้นการติดตั้งที่มีไบต์น้อยที่สุดจะชนะ อินพุต การใช้งานของคุณควรใช้อินพุตต่อไปนี้: ไบต์ที่ไม่ได้ลงนามเดียวpcนี่คือตัวนับโปรแกรมเริ่มต้น (ที่อยู่ในหน่วยความจำที่ VM เริ่มดำเนินการ0- ตาม) รายการไบต์ที่มีความยาวสูงสุดของ256รายการนี่คือ RAM สำหรับเครื่องเสมือน (ที่มีเนื้อหาเริ่มต้น) คุณสามารถรับอินพุตนี้ในรูปแบบที่สมเหตุสมผล เอาท์พุต รายการไบต์ซึ่งเป็นเนื้อหาสุดท้ายของ RAM หลังจาก VM ยกเลิก (ดูด้านล่าง) คุณสามารถสมมติว่าคุณได้รับการป้อนข้อมูลที่นำไปสู่การยกเลิกในที่สุด อนุญาตรูปแบบที่เหมาะสม …

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