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

สำหรับความท้าทายที่เกี่ยวข้องกับโครงสร้างข้อมูลแบบกองซ้อน (ดูวิกิแท็กสำหรับรายละเอียด) รวมถึงล่ามภาษาการเขียนโปรแกรมแบบกองซ้อนและความท้าทายเฉพาะเกี่ยวกับสแต็คการโทร

1
แปลโหมโรงเป็น Befunge
นี่คือการท้าทายประจำสัปดาห์ # 2 ธีม: การแปล เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในรหัสที่มาสำหรับโปรแกรมในโหมโรงและผลสำหรับโปรแกรมเทียบเท่าในBefunge-93 สำหรับโปรแกรมที่จะเทียบเท่ามันควรสำหรับการป้อนข้อมูลที่กำหนดใด ๆ ผลิตผลลัพธ์เดียวกันกับโปรแกรมโหมโรงและหยุดถ้าหากโปรแกรมโหมโรงหยุด ภาษาที่ป้อน: โหมโรง Python interpreter: แสดงตัวอย่างโค้ด #!/usr/bin/python import sys NUMERIC_OUTPUT = True NUMERIC_INPUT = True try: filename = sys.argv[1] except: print "Usage:", sys.argv[0], "<filename>" raise SystemExit try: inFile = file(filename) except: print "Error when opening", filename raise SystemExit # code is kept …

8
เขียนล่ามคลาสสิคสุดมันส์!
Brain-Flak (ข้ามระหว่าง Brainf ** k และ Flak-Overstow) เป็นภาษาลึกลับแบบกองซ้อน เนื่องจากความท้าทายนี้ถูกโพสต์ภาษาได้พัฒนาและปรับปรุง แต่การแก้ไขครั้งแรกของภาษานี้เป็นที่รู้จักกันในชื่อ "brain-flak classic" คุณต้องเขียนโปรแกรมหรือฟังก์ชั่นที่ใช้สตริงของรหัสคลาสสิกของ Brain-Flak และประเมินผล นอกจากนี้ยังจะใช้รายการจำนวนเต็ม (เป็นไปได้ที่ว่างเปล่า) มีอินพุตสำหรับโปรแกรม Brain-Flak classic ภาษา Brain-Flak มีสองกองเรียกว่า 'left' และ 'right' สแต็คที่ใช้งานเริ่มต้นที่ด้านซ้าย หากสแต็กที่ว่างเปล่าถูกตอกหรือแอบดูมันจะส่งคืน 0 ไม่มีตัวแปร เมื่อโปรแกรมเริ่มขึ้นแต่ละอินพุตจะถูกพุชไปยังสแต็กที่แอ็คทีฟตามลำดับ (เพื่อให้อินพุตล่าสุดอยู่ด้านบนของสแต็ก) อักขระที่ใช้ได้ในโปรแกรม Brain-Flak ()[]{}<>เท่านั้นและต้องมีความสมดุลเสมอ หากมีอักขระที่ไม่ถูกต้องหรือวงเล็บไม่ตรงกันคุณจะได้รับพฤติกรรมที่ไม่ได้กำหนด ทุกอย่างถูกต้อง : มีสองประเภทของฟังก์ชั่นNiladsและMonads niladเป็นฟังก์ชั่นที่ใช้เวลา 0 ขัดแย้ง นี่คือทั้งหมดของ nilads: () +1 [] -1 {} ป็อปสแต็คที่ใช้งานอยู่ …

10
นี่คือวิธีที่เรากลิ้ง
Piet เป็นภาษาการเขียนโปรแกรมที่น่าสนใจด้วยเหตุผลหลายประการ วันนี้เราจะเน้นไปที่เหตุผลหนึ่งข้อ: คำสั่งการหมุน คำสั่ง roll นั้นมาจาก PostScript และเป็นวิธีที่มีประสิทธิภาพในการจัดการกับ stack คำสั่ง roll จะแสดงองค์ประกอบสองอันดับแรกของสแต็กและใช้เป็นพารามิเตอร์ เราจะเรียกค่าแรกโผล่และครั้งที่สองturns depthการหมุนไปยังความลึก n จะใช้องค์ประกอบสูงสุดของสแต็กทำให้เป็นองค์ประกอบที่ n ในสแต็กและย้ายองค์ประกอบแต่ละรายการที่อยู่ด้านบนขึ้นมา หากturns เป็นลบจะกระทำในทิศทางตรงกันข้าม นั่นคือองค์ประกอบที่ n จะถูกย้ายไปด้านบนและองค์ประกอบอื่น ๆ จะถูกย้ายลง นี่เป็นabs(turns)ครั้งซ้ำแล้วซ้ำอีก ท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในสแต็กและส่งคืนสแต็กนั้นหลังจากดำเนินการม้วน กฎระเบียบ อินพุตและเอาต์พุตอาจอยู่ในรายการอาร์เรย์สตริงที่มีตัวคั่นผ่านในองค์ประกอบหนึ่งครั้งหรือรูปแบบอื่นที่สมเหตุสมผล เอาต์พุตจะต้องอยู่ในรูปแบบเดียวกับอินพุต depth จะไม่เป็นลบและจะไม่มากกว่าความยาวของสแต็ก สแต็คอินพุตจะมีองค์ประกอบอย่างน้อยสององค์ประกอบเสมอ นี่คือcode-golfดังนั้นคำตอบที่สั้นที่สุดในแต่ละภาษาจะชนะ ดังนั้นฉันจะไม่รับคำตอบ ช่องโหว่มาตรฐานเป็นสิ่งต้องห้าม กรณีทดสอบ in: out: 2 4 1 3 2 4 3 1 4 …
18 code-golf  stack 

17
สร้างล่ามสำหรับภาษาที่ไม่มีอยู่จริง
สร้างล่ามสำหรับภาษาปลอมที่อิงกับสแต็กที่รับอินพุตแปลและแปลผลลัพธ์เป็นอาร์เรย์ของตัวเลข ควรวนซ้ำแต่ละไบต์และทำหน้าที่แตกต่างกันตามตารางนี้: 0000 (0): เชื่อมต่อ (รวมสองตัวเลขบนสุดในสแต็กราวกับว่าเป็นสตริงตัวอย่างเช่น 12,5 -> 125) 0001 (1): เพิ่ม (เพิ่ม 1 ไปยังหมายเลขที่ด้านบนของสแต็ก) 0010 (2): ลดลง (ลบหนึ่งจากจำนวนที่ด้านบนของสแต็ค) 0011 (3): คูณ (คูณสองตัวเลขบนสุดในสแต็ค) 0100 (4): หาร (หารจำนวนที่ 2 ถึงด้านบนด้วย หมายเลขด้านบนของสแต็ก) 0101 (5): เพิ่ม (เพิ่มหมายเลขสองอันดับแรกบนสแต็ก) 0110 (6): ลบ (ลบหมายเลขด้านบนของสแต็กจากด้านล่าง) 0111 (7): เลขชี้กำลัง ( คำนวณตัวเลขที่สองขึ้นไปสู่กำลังของจำนวนสูงสุด) 1,000 (8): โมดูลัส: (ค้นหาโมดูลัสที่สองไปด้านบนสุด) 1001 (9): หมุนไปทางขวา …

15
ช่วยลูกชายของฉันค้นหาจดหมายของเขา
พื้นหลัง ขึ้นอยู่กับเกมสี่ปีของฉันได้รับจากอาจารย์ของเขา ว่า "เป้าหมาย" คือการ "ค้นหา" aecdbตัวอักษรในการสั่งซื้อที่ได้รับเช่น dacebคุณจะได้รับบัตรสแต็คของตัวอักษรเช่น คุณสามารถค้นหาได้จากสแต็กตามลำดับที่กำหนดแม้ว่าจะเป็นแบบวนรอบเท่านั้น เมื่อคุณพบจดหมายที่คุณต้องการคุณจะนำมันออกมาจากกอง วัตถุประสงค์ เมื่อได้รับคำสั่งและสแต็ค (การเรียงสับเปลี่ยนที่ไม่ซ้ำกัน) ให้ค้นหาลำดับของตัวอักษรบนสุด (เป็น ASCII ที่พิมพ์ได้ทั้งหมด) ที่คุณเห็นขณะเล่นเกม ตัวอย่างทีละขั้นตอน เราจำเป็นต้องค้นหาคำสั่งที่aecdbได้รับกองdaceb: ด้านบนของสแต็คd: ไม่ได้สิ่งที่เรากำลังมองหา ( a) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebd ด้านบนของสแต็คa: ใช่! เพื่อให้เราเพิ่มเข้าไปในลำดับ: และนำออกจากสแต็ค:dacebd ด้านบนของสแต็คc: ไม่ได้สิ่งที่เรากำลังมองหา ( e) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebdc ด้านบนของสแต็คe: ใช่! เพื่อให้เราเพิ่มเข้าไปในลำดับ: และนำออกจากสแต็ค:dacebdc ด้านบนของสแต็คb: ไม่ได้สิ่งที่เรากำลังมองหา ( c) เพื่อให้เราเพิ่มเข้าไปในลำดับ: และหมุนที่จะได้รับสแต็ค:dacebdcb ด้านบนของสแต็คd: ไม่ได้สิ่งที่เรากำลังมองหา ( c) …

4
จำนวนเต็ม Metagolf จริง ๆ
พื้นหลัง ที่จริงแล้ว (ตัวตายตัวแทนอย่างจริงจัง ) เป็นภาษากอล์ฟบังคับตามสแต็คที่ฉันสร้างขึ้นในเดือนพฤศจิกายนปี 2015 เช่นเดียวกับภาษากอล์ฟอื่น ๆ อีกมากมายมันมีคำสั่งขนาดหนึ่งไบต์ที่ทำหน้าที่แตกต่างกันตามเนื้อหาของสแต็ค หนึ่งในความเชี่ยวชาญของมันคือวิชาคณิตศาสตร์ - มันมีคำสั่งพื้นฐานทางคณิตศาสตร์ที่หลากหลาย อย่างไรก็ตามในการดำเนินการทางคณิตศาสตร์คุณต้องใส่หมายเลข (หนึ่งหรือมากกว่า) ลงบนสแต็ก การกดค่าเฉพาะในจำนวนน้อยที่สุดเท่าที่จะทำได้เป็นเรื่องยุ่งยากเพราะมีตัวเลือกต่าง ๆ มากมาย ในการท้าทายนี้คุณจะทำสิ่งนั้นอย่างแน่นอน: แสดงตัวเลข (โดยเฉพาะจำนวนเต็ม) ในความเป็นจริงในจำนวนไบต์น้อยที่สุด ความท้าทาย กำหนดจำนวนเต็มNเป็นอินพุตเอาต์พุตโค้ดที่ถูกต้องจริงซึ่งส่งผลNให้ถูกส่งไปยังสแต็ก อินพุตจะอยู่ในช่วงของจำนวนเต็มเสริมของ 32 บิตที่เซ็นชื่อสองบิต (เช่นจำนวนเต็มในช่วงรวม[-2147483648, 2147483647]) ผลลัพธ์ต้องเป็นจำนวนเต็ม (ไม่ใช่แบบลอยสตริงรายการหรือฟังก์ชัน) และต้องอยู่ด้านบนสุดของสแต็ก คุณไม่สามารถทำการสันนิษฐานเกี่ยวกับเนื้อหาของสแต็ค (เช่นว่าว่างเปล่าหรือไม่) ค่าที่มีอยู่ใด ๆ บนสแต็กต้องไม่ถูกแก้ไขหรือจัดเรียงใหม่ ความมุ่งมั่นล่าสุดของจริงในขณะที่ฉันกำลังเขียนความท้าทายนี้จะถูกนำมาใช้ ถ้าฉันแก้ไขข้อบกพร่องหรือปรับปรุงประสิทธิภาพ (หรือการเปลี่ยนแปลงเล็กน้อยอื่น ๆ ที่ไม่ได้ลบหรือเปลี่ยนการทำงานของคำสั่งที่อนุญาต) ฉันจะอัปเดตเวอร์ชันนี้ โซลูชันของคุณจะต้องทำอย่างน้อยที่สุดเช่นเดียวกับวิธีแก้ปัญหาเล็กน้อย (ผนวก:กับอินพุตเพื่อสร้างตัวอักษรตัวเลข) คะแนนของคุณจะเป็นผลรวมของความยาวของโซลูชันเล็ก ๆ น้อย ๆ ลบด้วยผลรวมของความยาวของผลลัพธ์สำหรับการเลือกจำนวนเต็ม …

3
ค้นหารูปแบบในเงื่อนไข
ในความท้าทายนี้งานของคุณคือการหาวัสดุพิมพ์ที่มีโครงสร้างที่กำหนด อินพุต ข้อมูลของคุณจะเป็นสองสายที่เป็นตัวเลขไม่ว่างเปล่าเป็นรูปแบบ pและข้อความ tแนวคิดก็คืออักขระแต่ละตัวจะpแทนซับสตริงที่ไม่ว่างเปล่าที่ต่อเนื่องกันtซึ่งเกิดขึ้นถัดจากกันและกันและpแสดงถึงการต่อกันของมัน อักขระที่เหมือนกันสอดคล้องกับสตริงย่อยที่เหมือนกัน ตัวอย่างเช่นรูปแบบaaหมายถึงสแควร์ที่ไม่ว่างเปล่า (สตริงที่ได้จากการต่อสตริงที่สั้นกว่าเข้ากับตัวเอง) ดังนั้นรูปแบบaaสามารถจับคู่สตริงย่อยbyebyeได้ด้วยการaจับคู่แต่ละbyeครั้ง เอาท์พุต หากข้อความที่tมีสตริงย่อยที่pการแข่งขันแล้วส่งออกของคุณจะเป็นสตริงย่อยที่มีทวิภาคแทรกระหว่างสตริงที่ตรงกับตัวละคร: pตัวอย่างเช่นถ้าเรามีt = byebyenowและp = aaก็bye:byeเป็นผลลัพธ์ที่ยอมรับได้ อาจมีหลายตัวเลือกสำหรับสตริงย่อยที่ตรงกัน แต่คุณจะส่งออกหนึ่งในพวกเขาเท่านั้น ถ้าtไม่ได้มี substring :(จับคู่ของคุณออกจะเป็นหน้าเศร้า กฎและคำชี้แจง ตัวละครที่แตกต่างกันpสามารถสอดคล้องกับสตริงเหมือนกันเพื่อให้สามารถจับคู่สตริงp = aba AAAโปรดทราบว่าตัวละครจะต้องสอดคล้องกับสตริงที่ไม่ว่างเปล่า; โดยเฉพาะอย่างยิ่งถ้าpมีความยาวมากกว่าการส่งออกจะต้องมีt:( คุณสามารถเขียนโปรแกรมหรือฟังก์ชั่นเต็มรูปแบบและคุณยังสามารถเปลี่ยนลำดับของอินพุตทั้งสองได้ จำนวนไบต์ต่ำสุดที่ชนะและไม่อนุญาตช่องโหว่มาตรฐาน กรณีทดสอบ pattern text -> outputได้รับในรูปแบบ โปรดทราบว่าอาจมีเอาต์พุตอื่นที่ยอมรับได้ a Not -> N aa Not -> :( abcd Not -> :( aaa rerere -> …
17 code-golf  string  code-golf  ascii-art  geometry  code-golf  ascii-art  code-golf  sequence  stack  code-challenge  number  sequence  answer-chaining  code-golf  code-challenge  math  combinatorics  binary-matrix  code-golf  number  code-golf  cryptography  bitwise  code-golf  sudoku  code-golf  brainfuck  metagolf  code-golf  probability-theory  number-theory  primes  fewest-operations  factoring  golf-cpu  code-golf  restricted-source  code-golf  graphical-output  sequence  binary  code-golf  tips  c#  code-golf  geometry  code-golf  graphical-output  fractal  code-golf  number  sequence  code-golf  number  array-manipulation  popularity-contest  game  board-game  code-golf  puzzle-solver  grid  code-golf  ascii-art  geometry  grid  tiling  code-golf  ascii-art  whitespace  balanced-string  code-golf  card-games  king-of-the-hill  javascript  code-golf  whitespace  balanced-string  code-golf  code-golf  math  abstract-algebra  code-golf  java  code-golf  interpreter  stack  code-golf  base-conversion  code-golf  tips  code-golf  ascii-art  geometry  brainfuck  metagolf  code-challenge  math  quine  code-generation  code-golf  number  kolmogorov-complexity  arithmetic  expression-building  code-golf  string  code-golf  quine  popularity-contest  code-golf  base-conversion  code-challenge  image-processing  code-golf  conversion  coding-theory 

6
Bytecode ล่ามขนาดเล็กที่สุด / VM
กระดานผู้นำ - รวบรวม JIT (ด้านล่างดีกว่า) es1024 - 81.2 คะแนน (รวมถึงคอมไพเลอร์ที่ใช้งานได้!) Kieth Randall - 116 คะแนน Ell - 121 คะแนน กระดานผู้นำ - ตีความ (ด้านล่างดีกว่า) Martin Büttner - 706654 คะแนน (ประมาณ 2 ชั่วโมง) criptych - 30379 คะแนน (97 วินาที) ภารกิจของคุณคุณควรเลือกที่จะยอมรับมันคือการเขียน bytecode interpreter / VM ที่เล็กที่สุดที่เป็นไปได้ VM / interpreter ใช้สถาปัตยกรรม CISC ขนาดเล็ก (การดำเนินการอาจแตกต่างกันในขนาด) …

2
กระชับโปรแกรม Befunge
Befungeเป็นภาษาโปรแกรมลับสองมิติ แนวคิดพื้นฐานคือคำสั่ง (อักขระหนึ่งตัว) ถูกวางไว้บนกริด 2 มิติ โฟลว์ควบคุมเดินข้ามตารางดำเนินการคำสั่งที่ส่งผ่านและเปลี่ยนทิศทางเมื่อกระทบกับลูกศร ( >^<v) คำสั่งเป็นแบบสแต็ก ดูรายการนี้ ดูเพิ่มเติมhttp://esolangs.org/wiki/Befunge ข้อมูลจำเพาะสำหรับ Befunge-98มีให้บริการ ปัญหา เขียนโปรแกรมที่แปลงโปรแกรม Befunge เป็นรูปแบบที่กะทัดรัดยิ่งขึ้น ตัวอย่างเช่นโปรแกรมต่อไปนี้จะพิมพ์0: > 0 v > @ . ^ < ในกรณีนี้มันสามารถบีบอัดได้โดยไม่ต้องเปลี่ยนพฤติกรรมของโปรแกรมโดยการลบแถวของช่องว่างเพื่อให้ >0v >@. ^ < การแปลงซับซ้อนมากขึ้นสามารถหมุนหรือเรียงลำดับคำสั่งของมิเรอร์และกำจัดคำสั่งควบคุมโฟลว์ที่ไม่จำเป็นเพื่อให้โปรแกรมมีขนาดกะทัดรัด ตัวอย่างเช่นด้วยโปรแกรมนี้: >12345v 6 v....7< . . . @ คุณอาจปิดท้ายโปรแกรมเข้าไปในรู: >12345v >...@ 6 ^....7< สำหรับตัวอย่างแรกโปรแกรมขนาดกะทัดรัดที่สุดที่เป็นไปได้คือ >0.@ คุณสามารถใช้การแปลงใด ๆ …

5
ภาษาคำอธิบายการวาดภาพ Mondrian
ความท้าทายนี้ประกอบด้วยการเข้ารหัสล่ามสำหรับภาษาคำอธิบายภาพวาดมอนเดรียน (MPDL) นิยามภาษา ภาษาดำเนินการกับกองสี่เหลี่ยม สี่เหลี่ยมถูกกำหนดโดยพิกัดด้านซ้ายบนและพิกัดล่างขวา พิกัดจะต้องเป็นจำนวนเต็ม สแต็กเริ่มต้นด้วยสี่เหลี่ยมเดียวที่มีคุณลักษณะ(1,1,254,254) แต่ละคำสั่งมีรูปแบบต่อไปนี้: <character><integer> มีสามคำสั่ง: v<integer>: ดำเนินการแบ่งตามแนวตั้งบนสี่เหลี่ยมผืนผ้าล่าสุดในสแต็ก ณ ตำแหน่งที่ระบุโดยพารามิเตอร์ (เป็นเปอร์เซ็นต์) สี่เหลี่ยมต้นฉบับจะถูกลบออกจากสแต็กและแทนที่ด้วยสี่เหลี่ยมใหม่สองอันที่เป็นผลมาจากการแยก สี่เหลี่ยมด้านซ้ายถูกผลักลงบนสแต็กจากนั้นสี่เหลี่ยมด้านขวา เนื่องจากพิกัดสี่เหลี่ยมผืนผ้าเป็นจำนวนเต็มเศษส่วนควรถูกปัดเป็นจำนวนเต็มเล็กที่สุด h<integer>: แยกแนวนอน สี่เหลี่ยมผืนผ้าด้านบนถูกผลักลงบนสแต็กจากนั้นสี่เหลี่ยมผืนผ้าด้านล่าง c<integer>: ลบสี่เหลี่ยมล่าสุดออกจากสแต็กและวาดเป็นสีที่กำหนดเป็นพารามิเตอร์ 1 = ขาว, 2 = แดง, 3 = น้ำเงิน, 4 = เหลือง ท้าทาย เขียนโปรแกรมที่รับพารามิเตอร์เป็นคำอธิบายการทาสีและสร้างการแทนค่าบิตแมป 256x256 ของสี่เหลี่ยมที่ทาสี รูปสี่เหลี่ยมจะต้องคั่นด้วยเส้นสีดำ 3 พิกเซล สี่เหลี่ยมหนึ่งหรือสองพิกเซลควรมีพิกเซลที่ไม่ใช่สีดำซ่อนอยู่โดยพิกเซลสีดำเส้นขอบ อินพุตสามารถอ่านเป็นพารามิเตอร์หรือเป็นไฟล์ขึ้นอยู่กับคุณ คำสั่งควรคั่นด้วยช่องว่าง คุณสามารถสันนิษฐานได้ว่าไฟล์อินพุตมีไวยากรณ์ที่ถูกต้องและไม่มีการเว้นวรรคหรือนำหน้าแท็บ ฯลฯ เอาต์พุตสามารถแสดงผลได้โดยตรงบนหน้าจอหรือบันทึกลงในไฟล์ตามที่คุณต้องการ รหัสที่สั้นที่สุดชนะ ทดสอบ …

4
เห็นภาพการหารยาวด้วยศิลปะ ASCII
เขียนโปรแกรมที่แสดงภาพส่วนที่ยาวด้วย ASCII art อินพุตประกอบด้วยจำนวนเต็มสองจำนวนตัวเศษและส่วนโดยใช้รูปแบบอินพุตที่คุณเลือก ตัวอย่าง: 1234 ÷ 56: 22 ---- 56|1234 112 --- 114 112 --- 2 1002012 ÷ 12: 83501 ------- 12|1002012 96 --- 42 36 -- 60 60 -- 12 12 -- 0 ÷ 35 0 - 35|0 กฎ: การใช้งานของผู้ประกอบการส่วนการเขียนโปรแกรมภาษาที่จะได้รับอนุญาต อนุญาตให้ใช้จำนวนเต็มขนาดใหญ่ได้ เพื่อความมั่นคง: หากความฉลาดเป็นศูนย์ให้พิมพ์ศูนย์เดียวที่ท้ายกระดานดำน้ำ หากส่วนที่เหลือเป็นศูนย์อย่าพิมพ์ อย่าพิมพ์เลขศูนย์นำหน้าบนตัวเลขใด ๆ ขึ้นบรรทัดใหม่มากเกินไปที่ส่วนท้ายและช่องว่างต่อท้ายไปทางขวาจะได้รับอนุญาต การแก้ปัญหาด้วยตัวละครน้อยที่สุดชนะ …

2
แก้ปัญหาแผนภาพสถานะกองซ้อน
ไดอะแกรมสถานะสแต็กแสดงวิธีที่ค่าบนหนึ่งสแต็กถูกเปลี่ยนเป็นอื่น ตัวอย่างเช่นนี่คือแผนภาพสถานะสแต็ก: 3 0 2 1 0 ซึ่งหมายความว่ามีสแต็กเริ่มแรกประกอบด้วย 3 ค่า ( 3ส่วน) ค่าเหล่านี้ถูกจัดทำดัชนีจาก 0 ถึง 2 โดยมี 0 ที่ด้านบน:2 1 0ที่ด้านบน: ส่วนถัดไป0 2 1 0อธิบายถึงสถานะสุดท้ายของสแต็ก: ค่าที่อยู่ด้านบนสุดของสแต็กถูกคัดลอกไปที่ด้านหลังเช่นกัน การแปลงเหล่านี้เกิดขึ้นบนสแต็กที่สนับสนุนหลายชนิดข้อมูล: ชนิด "value" ซึ่งเป็นค่าเริ่มต้นของสแต็ก นี่อาจเป็นสตริงจำนวนเต็ม ฯลฯ แต่ไม่จำเป็นต้องทราบค่าของมัน ชนิด "รายการ" ซึ่งเป็นรายการที่มีค่าของชนิดข้อมูลใด ๆ เพื่อจำลองการเปลี่ยนแปลงนี้อนุญาตการดำเนินการต่อไปนี้: S: สลับค่าสองค่าที่ด้านบนสุดของสแต็ก: 2 1 0→2 0 1 D: ทำซ้ำค่าที่ด้านบนของสแต็ก: 1 0→1 0 …

4
ตีความ StackyMath!
ถึงเวลาที่คุณจะใช้ภาษาสแต็กใหม่ของฉัน! มันเรียกว่า StackyMath นี่จะเป็นภาษาแบบสแต็กที่มีการดำเนินการ 8 รายการบนสแต็กและวิธีเพิ่มหมายเลขในสแต็ก รายการของการดำเนินงาน: /: แผนก. ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก *: การคูณ ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก -: การลบ ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก +: ส่วนที่เพิ่มเข้าไป. ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก ^: การยกกำลัง ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก %: Modulo ดำเนินการกับตัวเลข 2 อันดับแรกของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก !: แฟคทอเรียล ดำเนินการกับหมายเลขบนสุดของสแต็ก ผลักผลลัพธ์กลับคืนบนสแต็ก D: ทำซ้ำหมายเลขบนสุดของสแต็ก การดำเนินการที่กำหนดไว้ในรหัสหลอก: …

12
และทุกคนพูดว่า ...
วัตถุประสงค์รับอินพุตของข้อความที่ไม่มีอักขระ[หรือ]ดำเนินการต่อไปนี้: สำหรับทุกอินสแตนซ์ที่Amenมีอักษรตัวใหญ่อย่างน้อยหนึ่งตัว (ดังนั้นอินสแตนซ์ทั้งหมดของการAmenยกเว้นamen) ให้แสดงผลลัพธ์ที่เหมือนกันAmen(รักษาการใช้อักษรตัวพิมพ์ใหญ่) สำหรับทุก ๆ อินสแตนซ์ของ/all the people said[?: ]/i(นั่นคือนิพจน์ปกติ) ก็เอาท์พุทAmen(กรณีใด ๆ ก็ได้) หลังจากเอาต์พุตทุกตัวคุณสามารถเลือกตัวคั่นค่าคงที่เช่นบรรทัดใหม่เว้นวรรคหรืออะไรก็ได้ นี่คือรหัสกอล์ฟดังนั้นโปรแกรมที่สั้นที่สุดในหน่วยไบต์ชนะ ตัวอย่าง IOs Input: I said AMEN! AMEN, PEOPLE! Output: AMENAMEN ; any separator is fine, I choose none. Input: amen amen amen amen Output: ; nothing Input: ; empty Output: ; nothing Input: *blah …

6
สร้างสี่เหลี่ยมผืนผ้าจากสเปค
บทนำ ความท้าทายนี้ได้รับแรงบันดาลใจจากGrimeซึ่งเป็นภาษาจับคู่รูปแบบ 2D ของฉัน โดยทั่วไปคุณจะได้รับ "ไวยากรณ์" ที่อธิบายกริดสองมิติของตัวอักษรและงานของคุณคือการสร้างกริดตามไวยากรณ์ นอกจากนี้ตารางควรมีขนาดเล็กที่สุดเท่าที่จะเป็นไปได้ในแง่อ่อน อินพุต ข้อมูลของคุณเป็นสตริงที่มีอักขระตัวพิมพ์เล็ก ASCII และสัญลักษณ์และ| -เพื่อความเรียบง่ายอินพุตไม่มีอักขระตัวพิมพ์เล็กซ้ำ ๆ สตริงเป็นข้อมูลจำเพาะสำหรับคลาสของกริดสี่เหลี่ยมของอักขระและแยกวิเคราะห์จากซ้ายไปขวาโดยใช้สแต็กดังนี้ กำหนดอักขระตัวพิมพ์เล็กcกดไปที่สแต็กm×nกริดของอักขระcสำหรับใด ๆm, n ≥ 1สำหรับการใด ๆ ได้รับท่อ|, pop สองกริดAและBจากสแต็ค ( Bอยู่ชั้นบนสุด) และผลักดันตารางABได้โดยการเชื่อมโยงไปทางขวาของB Aสิ่งนี้ต้องการAและBมีความสูงเท่ากัน ได้รับยัติภังค์-, pop สองกริดAและBจากสแต็ค ( Bอยู่ชั้นบนสุด) และผลักดันตารางA/Bได้โดยการเชื่อมโยงที่ด้านล่างของB Aสิ่งนี้ต้องการAและBมีความกว้างเท่ากัน รับประกันได้ว่าสำหรับตัวเลือกบางอย่างmและnทำในระหว่างกระบวนการแยกวิเคราะห์ (ซึ่งอาจแตกต่างกันสำหรับตัวอักษรแต่ละตัว), ข้อกำหนดการป้อนข้อมูลอย่างถูกต้องอธิบายสี่เหลี่ยมผืนผ้าบางอย่างซึ่งถูกทิ้งไว้บนกองในตอนท้าย เอาท์พุต เอาต์พุตของคุณเป็นตารางสี่เหลี่ยมของอักขระที่ระบุโดยอินพุต กริดต้องมีขนาดเล็กที่สุดในแง่ที่ว่าการลบแถวหรือคอลัมน์ใด ๆ จะทำให้มันไม่ถูกต้อง คุณสามารถส่งคืนสตริงที่คั่นด้วยการขึ้นบรรทัดใหม่ (โดยมีหรือไม่มีการขึ้นบรรทัดใหม่), อาร์เรย์ของอักขระ 2 มิติหรืออาร์เรย์ของสตริงแล้วแต่จำนวนใดจะเป็นรูปแบบที่สะดวกที่สุด โปรดทราบว่าคุณไม่จำเป็นต้องดำเนินการอินพุตตามที่อธิบายไว้ข้างต้น สิ่งสำคัญเพียงอย่างเดียวคือผลลัพธ์ของคุณถูกต้อง …

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