คำถามติดแท็ก code-golf

Code-golf เป็นการแข่งขันเพื่อแก้ไขปัญหาเฉพาะในส่วนที่น้อยที่สุดของซอร์สโค้ด

4
ตัวเลขไม่บริสุทธิ์
นี้ท้าทายเป็นแรงบันดาลใจอย่างมากจากสิ่งที่สร้างขึ้นด้วย @Mego ของเขาบริสุทธิ์และHolierตัวเลขจำนวนมากต้องขอบคุณเขาและเล่นของเขา ตัวเลขศักดิ์สิทธิ์เป็นตัวเลขที่ประกอบด้วยตัวเลขที่มีรูเท่านั้นซึ่งประกอบด้วย: 04689 ตัวเลขที่มีตัวเลขไม่บริสุทธิ์อย่างน้อยหนึ่งหลักถือว่าไม่บริสุทธิ์ ตัวเลขที่ไม่บริสุทธิ์เป็นความชั่วร้ายตามคำจำกัดความ แต่การที่อยู่ใกล้กับตัวเลขศักดิ์สิทธิ์ช่วยให้พวกเขากลายเป็นคนเป็นกลาง ดังนั้นยิ่งพวกมันอยู่ใกล้มากเท่าไหร่ก็จะยิ่งไม่บริสุทธิ์ (1 เมื่อติดกัน) ความไม่บริสุทธิ์ของตัวเลขคือผลรวมของความไม่บริสุทธิ์ของตัวเลขจำนวนที่ประกอบด้วยตัวเลขไม่บริสุทธิ์เท่านั้นมีความไม่อนันต์ Number :8 5 5 8 7 Digital Unholiness:0+1+1+0+1 Total Unholiness :3 Number :0 1 7 5 5 2 8 5 7 Digital Unholiness:0+1+2+3+2+1+0+1+2 Total Unholiness :12 Number :1 5 7 3 2 1 Digital Unholiness:∞+∞+∞+∞+∞+∞ Total Unholiness :∞ …

1
ช่วย Jason จัดรูปแบบ JSON ของเขา
เจสันมี JSON ตัวใหญ่ แต่ไม่สามารถอ่านได้ดังนั้นเขาจึงต้อง prettify การจัดรูปแบบข้อมูลจำเพาะ JSON มี 4 ประเภท: เบอร์; แค่0-9 Strings; "สตริงที่ยกมาสองครั้งหนีออกมาด้วย\ อาร์เรย์; คั่นด้วยโดย[]รายการที่คั่นด้วย,รายการสามารถเป็นประเภทใดก็ได้ วัตถุ; การจัด{}รูปแบบคั่นด้วยรูปแบบคือkey: valueคีย์เป็นสตริงและค่าเป็นประเภทใด ๆ เหล่านี้ ระยะห่าง อาร์เรย์ควรมีหนึ่งช่องว่างหลังเครื่องหมายจุลภาคระหว่างรายการ วัตถุควรมีช่องว่างเดียวระหว่างคีย์และค่าหลังจาก : รอยหยัก แต่ละระดับการซ้อนจะถูกเยื้อง 2 มากกว่าก่อนหน้า คู่ของคีย์ / ค่าของแต่ละคู่จะอยู่ในบรรทัดของตัวเองเสมอ วัตถุถูกเยื้อง อาร์เรย์จะถูกเยื้องในหลายบรรทัดถ้ามันมีอาร์เรย์หรือวัตถุอื่น มิฉะนั้นอาร์เรย์จะยังคงอยู่ในหนึ่งบรรทัด กฎระเบียบ บิวด์อินที่ไม่อนุญาตให้ทำภารกิจนี้เล็กน้อย เช่นเดียวกับช่องโหว่มาตรฐานจะไม่ได้รับอนุญาต ตัวอย่าง [1,2,3] [1, 2, 3] {"a":1,"b":4} { "a": 1, "b": 4 } …
11 code-golf  string  json  code-golf  number  code-golf  image-processing  code-golf  string  code-golf  number  sequence  arithmetic  number-theory  code-golf  string  code-golf  string  counting  code-golf  ascii-art  code-golf  math  code-golf  tips  code-golf  string  code-golf  grid  graph-theory  code-golf  parsing  interpreter  brainfuck  code-golf  math  arithmetic  number-theory  programming-puzzle  c#  code-golf  dominoes  code-golf  tips  code-golf  string  grid  crossword  code-golf  string  code-golf  kolmogorov-complexity  code-golf  number  sequence  code-golf  string  math  number  number-theory  primes  fastest-code  code-golf  number  code-golf  string  code-golf  ascii-art  number  kolmogorov-complexity  code-golf  string  grid 

9
คำถามการเรียงลำดับคลาสสิกคำถามกอล์ฟ
นี่คือคำถามที่รหัสกอล์ฟ อินพุต รายการจำนวนเต็มที่ไม่เป็นลบในรูปแบบใดจะสะดวกที่สุด เอาท์พุต รายการเดียวกันเรียงตามลำดับในรูปแบบที่สะดวกที่สุด การ จำกัด รหัสของคุณจะต้องทำงานในเวลา O (n log n) ในกรณีที่เลวร้ายที่สุดซึ่งnเป็นจำนวนเต็มในอินพุต ซึ่งหมายความว่า quicksort แบบสุ่มหมดตัวอย่างเช่น อย่างไรก็ตามมีตัวเลือกอื่น ๆ ให้เลือกมากมาย อย่าใช้ไลบรารี / ฟังก์ชั่น / การเรียงลำดับที่คล้ายกัน อย่าใช้อะไรที่ทำให้การเรียงลำดับส่วนใหญ่เหมาะกับคุณเช่นห้องสมุดกอง โดยพื้นฐานไม่ว่าคุณจะใช้อะไรก็ตามจงนำไปใช้ตั้งแต่เริ่มต้น คุณสามารถกำหนดฟังก์ชั่นหากคุณต้องการ แต่โปรดแสดงตัวอย่างของมันในโปรแกรมเต็มรูปแบบที่ใช้งานได้จริง มันควรจะทำงานได้สำเร็จและรวดเร็วในทุกกรณีทดสอบด้านล่าง กรณีทดสอบ In: [9, 8, 3, 2, 4, 6, 5, 1, 7, 0] Out:[0, 1, 2, 3, 4, 5, 6, 7, 8, …

9
สามเหลี่ยมปาสคาลเป็นรายการสองมิติ
สร้างสามเหลี่ยมของ Pascal ที่เป็นรายการซ้อนกันและมีค่าศูนย์ในจุดที่ไม่ได้ใช้ ในอาร์เรย์ผลลัพธ์ตัวเลขของสามเหลี่ยมของ Pascal จะถูกคั่นด้วยศูนย์และเติมด้วยศูนย์ในแต่ละด้านเพื่อให้อยู่กึ่งกลาง ตัวอย่างเช่นแถวด้านล่าง (อาร์เรย์ย่อยสุดท้าย) ต้องไม่มีเลขศูนย์ทางซ้ายและขวา อาร์เรย์ย่อยที่สองมีการเว้นศูนย์หนึ่งครั้งในแต่ละด้านและอื่น ๆ นี่คือเอาต์พุตสำหรับอินพุต5: [[0,0,0,0,1,0,0,0,0], [0,0,0,1,0,1,0,0,0], [0,0,1,0,2,0,1,0,0], [0,1,0,3,0,3,0,1,0], [1,0,4,0,6,0,4,0,1]] ตามปกติการแก้ปัญหาด้วยไบต์ที่น้อยที่สุดชนะ
11 code-golf  math 

3
เมืองหลวงเลื่อน
พื้นหลัง ลองนึกภาพตัวอักษรภาษาอังกฤษเขียนออกมาในแถวตัวอักษร ABCDEFGHIJKLMNOPQRSTUVWXYZ- สมมติว่าเรามีเลนส์แบบปรับความกว้างพิเศษซึ่งเมื่อวางอยู่เหนือแถวมันจะแสดง "หน้าต่าง" ของตัวอักษรบางตัวพร้อมตัวอักษรที่อยู่ด้านนอกของเลนส์ที่ซ่อนอยู่จากมุมมอง นอกจากนี้เลนส์นี้ยังมีลักษณะการแปรปรวนดังนั้นตัวอักษรตัวแรกในเลนส์และตัวอักษรที่สองทุกครั้งหลังจากนั้นจะถูกลดขนาดลง แต่ตัวอักษรที่เหลือยังคงแสดงเป็นตัวพิมพ์ใหญ่ ตัวอย่างเช่นเราอาจจะมีเลนส์ที่มีความยาว 5 วางไว้ที่ไหนสักแห่งในช่วงกลางของตัวอักษรและเราเท่านั้นที่จะเห็น. jKlMn(ระยะเวลาการชั้นนำที่นี่เพื่อให้แน่ใจว่าช่องว่างการแสดง) - โน้ตKและMเป็นตัวพิมพ์ใหญ่ยังคงขณะที่j, lและnทุกคนที่ต่ำกว่า -cased เมื่อเราเลื่อนเลนส์นี้จากซ้ายไปขวาตามตัวอักษรตัวอักษรที่แตกต่างกันจะปรากฏขึ้นและตัวอักษรที่แตกต่างกันจะเป็นตัวพิมพ์ใหญ่ งานที่นี่คือการส่งออกตัวอักษรผลลัพธ์เป็นเลนส์เลื่อนตามตัวอักษร ความท้าทาย เขียนโปรแกรมหรือฟังก์ชั่นที่รับค่าอินพุทจำนวนเต็ม0 < n < 27และเอาท์พุทหรือคืนค่าสตริงที่มองเห็นได้เป็นเลนส์ที่อธิบายไว้ด้านบนสไลด์ทั่วตัวอักษร สำหรับค่าที่nมากกว่า1เลนส์จะเริ่มจาก "ห้อย" ออกทางด้านซ้ายของตัวอักษรดังนั้นAจะแสดงเฉพาะในช่องขวาสุดของเลนส์ บรรทัดแรกของเอาต์พุตใด ๆ จะเป็นเส้นเดียวAไม่ว่าจะเป็นตัวพิมพ์ใหญ่หรือตัวพิมพ์เล็กขึ้นอยู่กับความยาวของเลนส์ ในทำนองเดียวกันเลนส์เลื่อนเสร็จเมื่อZอยู่ในช่องด้านซ้ายสุดของเลนส์ (หมายความว่าบรรทัดสุดท้ายในเอาต์พุตใด ๆ จะเป็น 25 ช่องว่างตามด้วยตัวพิมพ์เล็กz) ตัวอย่าง การป้อนข้อมูล: 1 เอาท์พุท: a b c d e f g h i j …

4
รหัสผ่านแบบสุ่มกับรหัสผ่านทั่วไป
ใน Github มีรายการของรหัสผ่านที่พบบ่อยที่สุด 10,000 รายการ ฉันได้สร้างรายการรหัสผ่านแบบสุ่มของตัวเองแล้ว งานของคุณคือการระบุความแตกต่างระหว่างสองรายการ (ด้วยความแม่นยำ 100%) ดังนั้นโปรแกรมของคุณต้องยอมรับสตริงและส่งคืน: ค่าความจริงหากรหัสผ่านอยู่ในรายการรหัสผ่านทั่วไป ค่าเท็จหากรหัสผ่านอยู่ในรายการรหัสผ่านแบบสุ่ม ทุกสิ่งที่คุณต้องการหากรหัสผ่านไม่ได้อยู่ในทั้งสอง สำหรับผู้ที่มีความสนใจโปรแกรมของฉันจะสร้างรหัสผ่านที่มีความยาวระหว่าง 5-10 ตัวอักษรและอักขระแต่ละตัวเป็นตัวอักษรตัวพิมพ์เล็กหรือตัวเลข หมายเหตุ: คุณไม่ควรใช้รหัสผ่านเหล่านี้ในสิ่งที่ปลอดภัย อัลกอริทึมการสร้างของฉันไม่ปลอดภัยเลยและผลลัพธ์จะถูกโพสต์ออนไลน์เพื่อให้ทุกคนเห็น
11 code-golf 

4
สิ่งที่เป็นตัวละคร HTML นั้น?
เป้าหมายง่ายมาก การรับสตริงเป็นอินพุตให้วิเคราะห์เอนทิตี HTML ทั้งหมดที่ตรงกับอักขระต่อไปนี้ (รวมถึงตัวแปรตัวพิมพ์ใหญ่): áàãâäéèêëíìîïóòõôöúùûüýÿ การแยกกฎ: แต่ละเอนทิตีเริ่มต้นด้วย&และลงท้ายด้วย; ตัวอักษรตัวแรกหลังจากที่&จะเป็นตัวละครที่ปรับเปลี่ยน (กรณีตัวอักษรเป็นสิ่งสำคัญ!) ตัวอักษรที่เหลืออ้างถึงชื่อของสำเนียงที่จะใช้ ( acute, grave, circ, tildeและuml) ชื่อที่เน้นจะต้องเป็นตัวพิมพ์เล็ก! * * * * นิติบุคคล HTML ใด ๆ ที่ก่อให้ตัวละครที่ไม่อยู่ในรายการนั้น ๆ หรือว่าไม่ถูกต้องควรจะเหลือไม่มีใครแตะต้อง (เช่น: &, &etilde;, &a;) ควรละเว้นเอนทิตีที่เป็นตัวเลขเนื่องจากไม่สอดคล้องกับกฎข้างต้น การเปลี่ยนแปลงนี้เริ่มใช้ตั้งแต่วันที่ 18-02-2559 คำตอบที่มีอยู่ทั้งหมดที่ยอมรับเอนทิตี HTML ที่มีชื่อสำเนียงตัวพิมพ์ใหญ่นั้นถูกต้อง คำตอบใด ๆ ในอนาคตจะต้องเป็นไปตามกฎนี้ ตัวอย่าง: á //á Téhèh //Téhèh an & //an & …

6
ตัวอย่าง Autocorrelation ฟรี
พิจารณาเวกเตอร์x 1 มิติมูลค่าจริงที่แสดงถึงการสังเกตของกระบวนการบางอย่างที่วัดที่ระยะห่างเท่า ๆ กันเมื่อเวลาผ่านไป เราเรียกxอนุกรมเวลา ให้nหมายถึงความยาวของxและxแสดงว่าค่าเฉลี่ยเลขคณิตของx ฟังก์ชันกำหนดค่าตัวอย่างอัตโนมัติถูกกำหนดให้เป็น สำหรับทุก - n < ชั่วโมง < n วิธีนี้เป็นการวัดการพึ่งพาเชิงเส้นตรงระหว่างสองจุดในชุดเดียวกันที่สังเกตในเวลาที่ต่างกัน ตัวอย่างอัตฟังก์ชั่นหรือ ACF ถูกกำหนดให้เป็น สิ่งนี้วัดความสามารถในการทำนายเชิงเส้นของอนุกรมxณ เวลาtซึ่งเราแสดงว่าx tโดยใช้ค่าx t + hเท่านั้น โปรดทราบว่าการประมาณการตัวอย่างเหล่านี้ไม่ตรงกับการคำนวณแบบไร้เดียงสาตามคุณสมบัติทางทฤษฎี นั่นคือฟังก์ชั่นอัตตัวอย่างไม่เท่ากับค่าสัมประสิทธิ์สหสัมพันธ์เพียร์สันของxกับเอช -step ล่าช้าของx งาน รับอาร์เรย์xและจำนวนเต็ม nonnegative hพิมพ์หรือส่งกลับค่าความสัมพันธ์อัตโนมัติh +1 lagแรกของxเริ่มต้นด้วย lag 0 ความสัมพันธ์แบบอัตโนมัติ lag เป็นค่าที่สอดคล้องกับอินพุตเชิงลบในสูตรด้านบน คุณสามารถสันนิษฐานได้ว่า 0 < h < nโดยที่nคือความยาวของxและ 2 < n <256 …

9
อ่านไทม์ไลน์
แรงบันดาลใจจากการวาดเส้น กำหนดไทม์ไลน์ของเหตุการณ์เอาท์พุทวันที่สำหรับแต่ละเหตุการณ์ เส้นเวลาจะได้รับในแบบฟอร์ม 2000 --AF-C-------E--D---B-- โดยที่บรรทัดแรกแสดงจุดที่ทราบในเวลา ปีที่รู้จักมักเป็นอักขระที่ต่ำกว่าตัวเลขแรกของปีที่รู้จัก คุณอาจจะ: ในเส้นเวลานั้นตัวละครแต่ละตัวแสดงถึงหนึ่งปี จะมีเหตุการณ์อย่างน้อยหนึ่งเหตุการณ์เสมอ กิจกรรมไม่จำเป็นต้องเป็นระเบียบ คุณอาจสมมติว่าตัวละครทุกตัวในช่วงระหว่างAและตัวละครที่ไกลที่สุดที่มีอยู่ จะมีไม่เกิน 26 กิจกรรม จุดที่รู้จักจะไม่มีช่องว่างภายในไปทางขวา อาจมีตัวเลขติดลบทั้งในจุดที่รู้จักและเอาท์พุท คุณจะไม่ต้องจัดการกับตัวเลขที่มากกว่า 2 ^ 32 คุณจะไม่ต้องจัดการกับช่วงที่ใหญ่กว่า 2 ^ 8 คุณสามารถป้อนข้อมูลเป็นตัวอักษรตัวพิมพ์เล็กแทนตัวพิมพ์ใหญ่ คุณควรเขียนโปรแกรมที่ใช้เส้นเวลาในแบบฟอร์มนี้และส่งออกวันที่หลักตามลำดับ (A, B, C, D ... ) คุณสามารถส่งออกในรูปแบบที่สะดวก แต่คุณต้องป้อนข้อมูลในรูปแบบที่กำหนด กรณีทดสอบ: 2000 --AF-C-------E--D---B-- [1998, 2016, 2001, 2012, 2009, 1999] 10 --C-AB--D [9, 10, 7, 13] …


8
การแมป Bijective จากจำนวนเต็มถึงจำนวนตัวแปรของบิต
จำนวนตัวแปรบิตคืออาร์เรย์ 0 หรือมากกว่าบิต ดังนั้น[0, 1]เป็นจำนวนตัวแปรของบิต []แต่เพื่อให้เป็น เขียนฟังก์ชั่นหรือโปรแกรมที่ได้รับจำนวนเต็ม nonnegative ส่งกลับจำนวนตัวแปรของบิตเช่นว่าทุกจำนวนเต็มมีการทำแผนที่แบบหนึ่งต่อหนึ่ง (bijective) กับอาร์เรย์ มีการแมปดังกล่าวไม่ จำกัด จำนวนคุณมีอิสระที่จะสร้างได้ตามที่คุณต้องการ แต่ต้องเป็นแบบหนึ่งต่อหนึ่ง การทำแผนที่ของคุณต้องเป็นแนวคิดแบบหนึ่งต่อหนึ่งสำหรับจำนวนเต็มที่มีขนาดโดยพลการ แต่การดำเนินการของคุณจะล้มเหลวสำหรับจำนวนเต็มขนาดใหญ่เนื่องจากข้อ จำกัด ของประเภทตัวเลขในภาษาที่คุณต้องการ (เช่นของ C int) ตัวอย่างของสิ่งที่ไม่ใช่การแม็พแบบหนึ่งต่อหนึ่งคือการแสดงรายการเลขฐานสองของจำนวนเต็ม ในระบบ 5 ดังกล่าวจะกลายเป็น[1, 0, 1](หรือ0b101) แต่ไม่ใช่แบบหนึ่งต่อหนึ่งเพราะ0b0101หรือ[0, 1, 0, 1]ยังหมายถึง 5 ควรชัดเจนว่าการแมปไม่ใช่แบบหนึ่งต่อหนึ่งหากข้ามจำนวนเต็ม (เช่นไม่ทำงาน 5) แต่ฉันต้องการทำให้ชัดเจนว่าการข้ามอาเรย์บิตตัวแปรไม่ใช่หนึ่งเดียว -to- หนึ่ง []คุณต้องแผนที่ไปยังอาร์เรย์ตัวแปรทุกบิตเป็นไปได้รวมถึง รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ

11
ฐานแปดฐานสิบหรือเลขฐานสิบหก?
รับสตริงอินพุตที่มีเฉพาะตัวอักษรและตัวเลขเท่านั้นเขียนโปรแกรมหรือฟังก์ชันที่พิมพ์อักขระ ASCII ที่เป็นไปได้ที่พิมพ์ได้ (Hex 20-7E) ที่สอดคล้องกับค่าสตริงในฐาน 8, 10 และ 16 (เท่าที่เป็นไปได้) ตัวละครจะต้องถูกเขียนในลำดับที่เพิ่มขึ้นในแง่ของฐานที่พวกเขาสอดคล้อง (ฐาน 8 ก่อน ฯลฯ ) เอาต์พุตสามารถอยู่ในรูปแบบอาร์เรย์ (เช่น[& . F]) หรือคั่นด้วยช่องว่างหรือบรรทัดใหม่ (ขึ้นบรรทัดใหม่เป็นตัวเลือก) เช่นตัวอย่าง หากไม่มีตัวอักษร ASCII ที่พิมพ์ได้ที่สามารถเกิดขึ้นได้โปรแกรมจะต้องไม่มีเอาต์พุตใด ๆ ตัวอย่าง 31 ==> 1 47 ==> ' / G 69 ==> E i 7A ==> z 100 ==> @ d 156 ==> …

8
กินช็อกโกแลตบาร์
ฉันมีช็อคโกแลตบาร์และฉันต้องการความช่วยเหลือในการกินดังนั้นคุณจะสามารถเขียนโปรแกรมเพื่อทำสิ่งนั้นได้ คำอธิบาย บรรทัดแรกคืออินพุต ตัวอย่างถูกคั่นด้วยบรรทัดว่าง 7 ____ __|__| |__|__| |__|__| |__|__| 6 _______ |__|__| |__|__| |__|__| 5 ____ __|__| |__|__| |__|__| 0 1 ____ |__| สเป็ค หวังว่าตัวอย่างจะระบุความท้าทายนี้อย่างชัดเจน แต่เพื่อหลีกเลี่ยงความสับสนที่อาจเกิดขึ้นต่อไปนี้เป็นข้อมูลจำเพาะ: คุณสามารถมีช่องว่างต่อท้าย / นำหน้าตัวเลือกเดียว อินพุตของ0เป็นเอาต์พุตว่าง หากอินพุตเป็นเลขคู่แถวบนสุดจะมีลักษณะดังนี้: _______ |__|__| ถ้ามันแปลกแถวบนสุดคือ: ____ |__| ถ้ามันแปลกและมากกว่า 1 แถวบนสุดคือ: ____ __|__| แถวต่อไปนี้คือ: |__|__| จนกว่าจำนวนอินสแตนซ์ของ|__|จะเหมือนกันกับอินพุต

15
ความสัมพันธ์ที่สอดคล้องกัน
รับ 3 จำนวนเต็มบวกa, bและn(ที่มีค่าสูงสุดเป็นค่าจำนวนเต็มสูงสุดซึ่งแสดงในภาษาของคุณ) การส่งออกมีมูลค่า truthy ถ้าa ≡ b (mod n)และ falsey มิฉะนั้น สำหรับผู้ที่ไม่คุ้นเคยกับความสัมพันธ์ที่สอดคล้องกันนั้นa ≡ b (mod n)เป็นเรื่องจริง iff a mod n = b mod n(หรือเท่ากัน(a - b) mod n = 0) ข้อ จำกัด ไม่อนุญาตให้ใช้วิธีการทดสอบความสอดคล้องในตัว การดำเนินการแบบโมดูโลในตัวเป็นสิ่งต้องห้าม (รวมถึงการดำเนินงานเช่นdivmodฟังก์ชั่นของ Python ซึ่งส่งกลับทั้งความฉลาดทางและส่วนที่เหลือรวมถึงฟังก์ชั่นการหารฟังก์ชันการทำงานของระบบตกค้างและสิ่งอื่น ๆ ) กรณีทดสอบ (1, 2, 3) -> False (2, 4, 2) …

2
มาเล่นเกมกระดานกัน!
บทนำ Boardgames เป็นการเล่นแบบคลาสสิคระหว่างเด็ก ๆ แต่มีเด็กบางคนที่รู้สึกเบื่อการเล่นเกมกระดานเป็นขั้นเป็นตอน ตอนนี้พวกเขาต้องการให้แสดงผลลัพธ์ก่อนที่พวกเขาจะวางมือบนกระดาน ท้าทาย สมมติบอร์ดนี้เป็นเกม: >---#<---X---<X<--#-$ > means the start of the game - means a position without danger < means the player should return one step back X means the player won't move next round # means a portal where the player returns to the start …

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