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

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

26
พลังในตัวเอง
กำหนดจำนวนเต็มnส่งออกเลขชี้กำลังขนาดเล็กที่สุดที่eมากกว่า 1 ซึ่งn^eประกอบด้วยnsubstring ตัวอย่างเช่นสำหรับ25, คำตอบควร2เป็น25 ^ 2 = 625, ซึ่งมี25เป็นสตริงย่อย แต่คำตอบสำหรับ13ควรเป็น10, เช่น13 ^ 10 = 137858491849นั้น10เป็นเลขชี้กำลังต่ำสุดที่ผลลัพธ์มีอยู่13เป็นสตริงย่อย กฎระเบียบ กฎ I / O มาตรฐาน ช่องโหว่มาตรฐานใช้ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ n จะเป็นจำนวนเต็มมากกว่าเสมอ 0 กรณีทดสอบ 1 => 2 (1 ^ 2 = 1) 2 => 5 (2 ^ 5 = 32) 3 => 5 (3 ^ 5 …
13 code-golf  number 

3
ไม่รู้จักสตริง Pythlike
Pyth เป็นภาษาการเล่นกอล์ฟทั่วไปที่ประสบความสำเร็จมากที่สุด แม้ว่าจะค่อนข้างลดลงเนื่องจากภาษาใหม่กว่าจากปี 2014 ถึง 2016 ไวยากรณ์ที่รัดกุมของ Pyth, การอัปเดตอย่างต่อเนื่อง, การบรรทุกเกินพิกัดและ (สำหรับยุคของมัน) ตัวสร้างจำนวนมากทำให้เป็นที่ชื่นชอบสำหรับคำถามส่วนใหญ่ รหัส Pyth มักจะอ่านยาก แม้เอาต์พุตของโหมดดีบัก (transpiled Python) มักจะประกอบด้วยบรรทัดยาวบางครั้งมีวงเล็บซ้อนกันสิบลึก อย่างไรก็ตามการจัดรูปแบบ Pyth ในรูปแบบที่ถูกต้องสามารถอ่านได้มาก นี่เป็นชิ้นส่วนของรหัส Pyth เขียนโดย @isaacg ในการเล่นห่วงโซ่ของ Word .MlZfqhMtTeMPT+Lzs.pMyQ มันอ่านง่ายกว่านี้มาก .M Filter by gives-maximal-value of l Z lambda Z:length(Z) over f filter by (lambda T: q equal hM t T …

20
Number ใน Number-squared
พิจารณาลำดับของจำนวนธรรมชาติที่ N ปรากฏเป็นสตริงย่อยใน N ^ 2 A018834 เอาท์พุทnองค์ประกอบ th ของลำดับนี้ กฎระเบียบ โปรแกรมใช้เวลาเพียงnเป็น input และผลเพียงจำนวนหนึ่ง N- ลำดับสามารถเป็นดัชนี 0 หรือดัชนี 1 Sequence: 1 5 6 10 25 50 60 76 100 250 376 500 600 625 760 ... Squares: 1 25 36 100 625 2500 3600 5776 10000 62500 141376 250000 360000 …

11
ข้อกำหนดของลำดับ EKG
บทนำ ลำดับ EKG เริ่มต้นด้วย 1 และ 2 จากนั้นกฎคือเทอมถัดไปคือเลขจำนวนเต็มบวกที่เล็กที่สุดที่ไม่ได้อยู่ในลำดับและมีปัจจัยร่วมกับคำสุดท้ายมากกว่า 1 (ไม่ใช่โคพริม์ม) เงื่อนไขแรกคือ: 1, 2, 4, 6, 3, 9, 12, 8, 10, 5, 15, ... มันเรียกว่า EKG เพราะกราฟของคำศัพท์ค่อนข้างคล้ายกับ EKG มันเป็นลำดับ A064413 ใน OEIS ท้าทาย คุณต้องเขียนฟังก์ชั่นซึ่งจะนำจำนวนเต็มnเป็นอินพุตและเอาต์พุตหลายวิธีของnแรกแง่ของลำดับมากกว่าn เมื่อกฎของลำดับเริ่มต้นด้วยคำที่สามจำนวนเต็มอินพุทจะต้องมากกว่าหรือเท่ากับ 3 ตัวอย่างเช่นการป้อนข้อมูลที่กำหนด10เอาท์พุทเป็น1เพราะเทอมที่ 7 คือ12และไม่มีเทอมแรกที่เกิน 10 อีก กรณีทดสอบ 3 -> 1 10 -> 1 100 -> 9 …

4
แปลง ASCII art table เป็น UTF-8
เมื่อฉันเขียนเอกสารความคิดเห็น ฯลฯ ฉันชอบทำตาราง ASCII พวกเขามักจะจบลงดูสวยดี แต่ฉันมักจะรู้สึกว่าพวกเขาจะดูดียิ่งขึ้น - โดยเฉพาะอย่างยิ่งตั้งแต่ UTF-8 / Unicode รวมถึงตัวละครกล่องวาดภาพ อย่างไรก็ตามตัวละครเหล่านี้มีภาระที่ต้องใช้งานเป็นอย่างมากทำให้ต้องใช้การกดปุ่มหลายครั้งในการแทรก งานของคุณ? เขียนโปรแกรมหรือฟังก์ชั่นที่สามารถแปลงตาราง ASCII โดยอัตโนมัติให้เทียบเท่ากับ UTF-8 / Unicode ความท้าทายนี้ได้รับการทดลองใช้ผลิตภัณฑ์ ท้าทาย เขียนโปรแกรมที่ให้ตาราง ASCII เป็นสตริงอินพุตเอาต์พุตตารางที่วาดใหม่ด้วยอักขระการวาดกล่อง Unicode / UTF-8 โดยเฉพาะอย่างยิ่งอักขระที่เป็นส่วนหนึ่งของตารางควรแปลดังนี้: (Unicode, 3 bytes each in UTF-8) - to ─ (\u2500) | to │ (\u2502) = to ═ (\u2550) and + to …

16
ตัดแต่งพื้นหลังที่เบี่ยงเบนความสนใจออก!
มันไม่น่ารำคาญเมื่อคุณกำลังถ่ายภาพ แต่พื้นหลังเบี่ยงเบนไปจากเนื้อหาจริงของภาพ? ฉันจะบอกว่ามันเป็น ฉันจำเป็นต้องรู้ว่าฉันควรครอบตัดเท่าใดเพื่อที่จะกำจัดปัญหานี้! แต่ - ตามปกติ - ฉันค่อนข้างขี้เกียจดังนั้นฉันต้องการคนที่จะทำสิ่งนี้ให้ฉัน ... งาน & กฎ เมื่อพิจารณาจากเมทริกซ์ไบนารีที่แทนภาพให้ส่งออกขนาด (ความกว้างและความสูง) ของเมทริกซ์ย่อยที่เล็กที่สุดที่มี s ทั้งหมดในเมทริกซ์ดั้งเดิม ย่อยเมทริกซ์คือบล็อกของรายการที่อยู่ติดกันจากเมทริกซ์เดิม มันเป็นเมทริกซ์ใหม่ที่เกิดขึ้นจากการซ้อนทับเซตย่อยของแถวที่อยู่ติดกันและเซตย่อยของคอลัมน์ที่อยู่ติดกันของต้นฉบับ111 อนุญาตให้ใช้ความกว้างและความสูงของเมทริกซ์เป็นอินพุตเช่นกัน การป้อนข้อมูลที่มีการประกันเพื่อมีอย่างน้อยหนึ่ง1111 คุณสามารถรับอินพุตและให้เอาต์พุตผ่านวิธีการมาตรฐานใด ๆในขณะที่รับทราบว่าช่องโหว่เหล่านี้ถูกห้ามโดยค่าเริ่มต้น นี่คือโค้ดกอล์ฟดังนั้นพยายามทำงานให้เสร็จอย่างน้อยไบต์ที่คุณสามารถจัดการได้ในภาษาที่คุณเลือก ตัวอย่าง ⎡⎣⎢⎢⎢⎢⎢⎢000000110000110010000011000100⎤⎦⎥⎥⎥⎥⎥⎥⟶ ⎡⎣⎢110011100011010⎤⎦⎥⟶ ( 5 , 3 )[000000010100011011001010000000]⟶[101001101101010]⟶(5,3)\left[\begin{matrix} \color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0\\ \color{red}0&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}0&\color{blue}0\\ \color{red}0&\color{blue}1&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}1\\ \color{red}0&\color{blue}0&\color{blue}1&\color{blue}0&\color{blue}1&\color{blue}0\\ \color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0&\color{red}0\end{matrix}\right] \longrightarrow \left[\begin{matrix}1&0&1&0&0\\1&1&0&1&1\\0&1&0&1&0\end{matrix}\right]\longrightarrow(5,3) กรณีทดสอบ อินพุต | เอาท์พุต [[0,1,0,0,0,1,0]] -> (5,1) หรือ (1,5) [[0,0,0,0,0], …

27
การคาดคะเนของ Collatz
ฉันคิดว่า Collatz Conjecture เป็นที่รู้จักกันดีอยู่แล้ว แต่ถ้าเรากลับกฎ เริ่มต้นด้วยจำนวนเต็ม n> = 1 ทำซ้ำขั้นตอนต่อไปนี้: ถ้า n เป็นเลขคู่ให้คูณด้วย 3 แล้วบวก 1 ถ้า n เป็นเลขคี่ให้ลบ 1 แล้วหารด้วย 2 หยุดเมื่อถึง 0 พิมพ์ตัวเลขซ้ำ กรณีทดสอบ: 1 => 1, 0 2 => 2, 7, 3, 1, 0 3 => 3, 1, 0 10 => 10, 31, 15, 7, 3... 14 …

15
Logic Gates ด้วยตนเอง
สร้างโปรแกรมที่จำลองประตูตรรกะพื้นฐาน การป้อนข้อมูล:ทุกคำหมวกตามด้วยเลขฐานสอง 2 1 OR 1 0บาทคั่นด้วยช่องว่างเช่น ประตูOR, AND, NOR, NAND, XORและXNORมีความจำเป็น เอาท์พุท:สิ่งที่เอาท์พุทของประตูตรรกะที่ป้อนจะได้รับตัวเลขสอง: 1 หรือ 0 ตัวอย่าง: AND 1 0กลาย0 XOR 0 1เป็น1 OR 1 1กลาย1 NAND 1 1เป็นกลายเป็น0 นี่คือ codegolf ดังนั้นรหัสที่สั้นที่สุดชนะ
13 code-golf  logic-gates  hashing  code-golf  code-golf  number  array-manipulation  integer  code-golf  string  unicode  text-processing  cops-and-robbers  boggle  cops-and-robbers  boggle  code-golf  ascii-art  code-golf  word-puzzle  king-of-the-hill  python  code-golf  sequence  kolmogorov-complexity  code-golf  source-layout  code-golf  string  kolmogorov-complexity  math  number  code-golf  date  code-golf  combinatorics  recursion  game  king-of-the-hill  javascript  code-golf  array-manipulation  code-golf  radiation-hardening  self-referential  code-golf  integer  code-golf  number  code-golf  set-theory  code-golf  sequence  code-golf  string  sorting  natural-language  code-golf  decision-problem  number-theory  primes  code-golf  code-golf  ascii-art  code-challenge  array-manipulation  sorting  rubiks-cube  regular-expression  code-golf  counting  file-system  recursion  code-golf  string  kolmogorov-complexity  color  code-golf  game  code-challenge  permutations  encode  restricted-time  decode  code-golf  math  decision-problem  matrix  integer  palindrome  code-golf  matrix  statistics  king-of-the-hill  king-of-the-hill  python  card-games  code-golf  string  natural-language  code-golf  sequence  number-theory 

10
สารตกค้างกำลังสองนั้นสนุกมาก!
คำนิยาม ตกค้างกำลังสอง จำนวนเต็มเรียกว่าquadratic residue moduloหากมีจำนวนเต็มเช่นนั้น:rRrn xnnnxxx x2≡r(modn)x2≡r(modn)x^2\equiv r \pmod n ชุดของตกค้างแบบโมดูโลสามารถคำนวณได้โดยเพียงแค่มองไปที่ผลของการx ^ 2 \ n BMODสำหรับ0 \ le x \ le \ lfloor nnnnx2modnx2modnx^2 \bmod n0≤x≤⌊n/2⌋0≤x≤⌊n/2⌋0 \le x \le \lfloor n/2\rfloor ลำดับความท้าทาย เรากำหนดanana_nเป็นจำนวนขั้นต่ำของการเกิดขึ้นของค่าเดียวกัน(r0−r1+n)modn(r0−r1+n)modn(r_0-r_1+n) \bmod nสำหรับทุกคู่(r0,r1)(r0,r1)(r_0,r_1)ของสารตกค้างกำลังสอง modulo nnnn 30 คำแรกคือ: 1,2,1,1,1,2,2,1,1,2,3,1,3,4,1,1,4,2,5,1,2,6,6,1,2,6,2,2,7,21,2,1,1,1,2,2,1,1,2,3,1,3,4,1,1,4,2,5,1,2,6,6,1,2,6,2,2,7,21, 2, 1, 1, 1, 2, 2, 1, 1, 2, 3, …

8
ชมเชยแบ็คแฮนด์
ความท้าทายนี้สร้างขึ้นเพื่อเฉลิมฉลองภาษาลับแรกของฉันแบ็คแฮนด์ ! แบ็คแฮนด์เป็นภาษาหนึ่งมิติที่มีโฟลว์ตัวชี้ที่ไม่ใช่เชิงเส้น ตัวชี้ย้ายทีละสามขั้นตอนดำเนินการตามคำสั่งที่สามทุกครั้งเท่านั้น โปรแกรม1..1..+..O..@จะเพิ่ม 1 + 1 และเอาท์พุท 2 ก่อนที่จะยุติ คำแนะนำระดับกลางถูกข้ามไปดังนั้น1<>1()+{}O[]@เป็นโปรแกรมเดียวกันทั้งหมด เมื่อตัวชี้กำลังจะก้าวออกจากจุดสิ้นสุดของเทปมันจะกลับทิศทางและทำตามขั้นตอนในลักษณะอื่นดังนั้นจึง1.@1.O+.เป็นโปรแกรมเดียวกัน โปรดทราบว่ามันจะนับคำสั่งสิ้นสุดเพียงครั้งเดียวเท่านั้น สิ่งนี้ทำให้เราสามารถบีบอัดโปรแกรมเชิงเส้นส่วนใหญ่ได้เช่น1O+1@ ความท้าทายของคุณที่นี่คือการเขียนโปรแกรมหรือฟังก์ชั่นที่รับสายและส่งคำสั่งที่จะถูกดำเนินการหากโปรแกรมตีความเช่น Backhand (คุณไม่จำเป็นต้องจัดการกับคำแนะนำ Backhand จริง ๆ ) คุณจะต้องส่งออกเท่านั้นจนกว่าตัวชี้จะตกลงบนอักขระตัวสุดท้ายของสตริง (ซึ่งการดำเนินการตามปกติจะย้อนกลับ) แต่รอนั่นไม่ใช่ทั้งหมด! เมื่อโปรแกรมของคุณถูกตีความในลักษณะนี้โค้ดผลลัพธ์ควรออกด้านล่างอย่างใดอย่างหนึ่ง: (Mostly) works Turing complete 'Recreational' (คำพูดที่สามารถเป็นได้ทั้ง'หรือ"แต่ไม่ใช่ทั้งสอง) Perfectly okay Only a few bugs ตัวอย่างเช่นหากซอร์สโค้ดของคุณคือcode 2 backhandโปรแกรมce cankb od2ahdควรส่งออกหนึ่งในวลีเหล่านี้ กรณีทดสอบ: "1 1 + O @" -> …

11
ครอบตัด ASCII Art Challenge
ศิลปะ ASCII เป็นเรื่องสนุก เครื่องมือแก้ไขข้อความที่ทันสมัยใช้งานข้อความได้ดีมาก ภาษาการเขียนโปรแกรมที่ทันสมัยขึ้นอยู่กับภารกิจหรือไม่? งานทั่วไปหนึ่งในการจัดการศิลปะ ASCII คือการครอบตัดข้อความเป็นสี่เหลี่ยมระหว่างอักขระสองตัว นี่คือภารกิจที่คุณต้องนำไปใช้ในการท้าทายนี้ รายละเอียด โปรแกรมของคุณจะมี 3 อินพุต: ตัวแรกคือตัวอักษร 'เริ่มต้น' ของบล็อก - ทำเครื่องหมายที่มุมบนซ้าย ที่สองคือตัวละคร 'สิ้นสุด' ของบล็อก - ทำเครื่องหมายที่มุมล่างขวา ที่สามคือรูปแบบของข้อความหลายบรรทัดไม่ว่าจะเป็นสตริงหรือรายการสตริงหรือชื่อไฟล์หรืออะไรก็ตาม ผลลัพธ์จะเป็นข้อความหลายบรรทัด (อีกครั้งในรูปแบบใด ๆ ข้างต้น) ที่ถูกครอบตัดไปที่สี่เหลี่ยมผืนผ้าระหว่างอินพุตที่กำหนด โปรดทราบว่าสองอินพุตแรกอาจไม่ซ้ำกัน กรณีขอบ กล่องต้องมีปริมาณอย่างน้อย 2 เสมอดังนั้นสิ่งเหล่านี้: () ( ) เป็นกล่อง แต่สิ่งเหล่านี้: )( ) ( ( ) ไม่ใช่ (ด้วย start = (and end …

7
สร้างตัวเลขที่ใหญ่ที่สุดและเล็กที่สุด
แรงบันดาลใจจากโพสต์นี้ใน Puzzling สปอยเลอร์สำหรับจิ๊กซอว์นั้นอยู่ด้านล่าง กำหนดจำนวนเต็มบวกสามค่าเป็นอินพุต(x, y, z)สร้างช่วงที่รวม[x, y]กันเชื่อมช่วงนั้นเข้าด้วยกันจากนั้นลบzตัวเลขที่ไม่จำเป็นต่อเนื่องเพื่อสร้างจำนวนเต็มบวกที่ใหญ่ที่สุดและเล็กที่สุดเท่าที่จะเป็นไปได้ ไม่อนุญาตเลขนำหน้า (เช่นตัวเลขต้องขึ้นต้นด้วย[1-9]) เอาท์พุทตัวเลขทั้งสองในลำดับใด ยกตัวอย่างเช่นจากการโพสต์น่าสงสัยสำหรับการป้อนข้อมูล(1, 100, 100)จำนวนที่ใหญ่ที่สุดที่เป็นไปได้99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100, และจำนวนที่น้อยที่สุดคือ10000012340616263646566676869707172737475767778798081828384858687888990919293949596979899100, ต่อไปด้านล่างตรรกะจากjafe ของคำตอบโพสต์ที่นั่น เราไม่สามารถมีอิทธิพลต่อความยาวของตัวเลข (มีจำนวนหลักคงที่) ดังนั้นเพื่อเพิ่มค่าสูงสุดที่เราใช้กับตัวเลขสูงสุดแรกจากนั้นก็เป็นตัวเลขหลักที่สองเป็นต้น ลบ 84 ไม่ใช่ nonines แรก (เหลือ 16 หลักเพื่อลบ): 999995051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 ตัวเลขที่ใหญ่ที่สุดใน 17 หลักถัดไปคือ 7 ดังนั้นจากที่นี่ตัวเลขถัดไปในคำตอบสามารถมีได้สูงสุด 7 (เราไม่สามารถลบมากกว่า 16 หลัก) ดังนั้นลบ 15 non-7's ... (เหลือ 1 หลักเพื่อลบ):999997585960616263646566676869707172737475767778798081828384858687888990919293949596979899100 จากที่นี่ตัวเลขถัดไปสามารถมีได้สูงสุด 8 หลักดังนั้นลบหนึ่ง non-8 ออกจากตรงกลาง 99999785960616263646566676869707172737475767778798081828384858687888990919293949596979899100 …

10
ลองฝึกกฎการให้คะแนน 421 กันเถอะ!
421เป็นเกมลูกเต๋าที่ได้รับความนิยมในประเทศฝรั่งเศสและประเทศอื่น ๆ ในยุโรป ส่วนใหญ่เล่นในบาร์และผับเพื่อตัดสินว่าใครกำลังจะซื้อเครื่องดื่มรอบต่อไป เกมเต็มรูปแบบมักจะเล่นเป็นสองรอบด้วยโทเค็นที่ผู้เล่นแต่ละคนพยายามที่จะกำจัด แต่นี่ไม่เกี่ยวข้องเลย ( หน้า Wikipediaในภาษาฝรั่งเศส) เกมนี้เล่นโดยใช้ลูกเต๋ามาตรฐาน 3 ลูก งาน งานของคุณคือจัดเรียงรายการที่ไม่ว่างเปล่าของลูกเต๋า 3 ลูกที่แตกต่างกัน[X, Y, Z]จากสูงไปหาต่ำสุดโดยใช้กฎการให้คะแนนของเกมนี้ เกณฑ์การให้คะแนนขั้นพื้นฐาน 4,2,1เป็นชุดค่าผสมที่เป็นไปได้สูงสุด ขึ้นอยู่กับกฎนั้นอาจมีคะแนน 8, 10 หรือ 11 คะแนน เนื่องจากเราเรียงลำดับม้วนแทนที่จะนับคะแนนค่าที่แน่นอนจึงไม่สำคัญ Three Aces: 1,1,1เป็นชุดค่าผสมที่สูงที่สุดอันดับสองและได้คะแนน7คะแนน Two-Aces: X, 1,1 (โดยXคือ 2 ถึง 6) คะแนนXคะแนน Three-of-a-Kind: X, X, X (โดยXคือ 2 ถึง 6) คะแนนXคะแนน Straights: X, X …

1
ความผิดปกติของแคช FIFO
นี่เป็นความท้าทายในการติดตามผลจากเกมนี้หากคุณสับสนโปรดตรวจสอบสิ่งนั้นก่อน ก่อนขอเป็นหมายเลขของแคชคิดถึงลำดับsการเข้าถึงทรัพยากรที่จะต้องสมมติแคชของเรามีความจุkและใช้ (FIFO) โครงการออกมาครั้งแรกในครั้งแรกที่ออกมาเมื่อมันเต็มm(s,k)m(s,k)m(s, k)ssskkk จากนั้นกำหนดอัตราส่วนกลับลำดับไม่ว่างเปล่าของทรัพยากรการเข้าถึงsเช่นว่ามีอยู่k > JกับM ( s , k ) ≥ R ⋅ เมตร( s , J )r>1r>1r > 1sssk>jk>jk > jm(s,k)≥r⋅m(s,j)m(s,k)≥r⋅m(s,j)m(s, k) \geq r \cdot m(s, j) ในภาษาอังกฤษธรรมดาสร้างลำดับทรัพยากรเข้าถึงเพื่อให้มีสองขนาดแคชที่มีขนาดใหญ่มีแคช (อย่างน้อย) Rครั้งมากขึ้นแคชเมื่อนำมาใช้ในการแก้ไขssssrrrsss ตัวอย่างสำหรับเอาต์พุตที่ถูกต้องคือลำดับ( 3 , 2 , 1 , 0 , 3 , 2 , 4 , 3 …

5
เกลียว ASCII ที่เว้นระยะอย่างมาก
พิจารณาเกลียวนี้ ########### # # ####### # # # # # ### # # # # # # # # # # # # # # # # ##### # # # ######### เริ่มต้นในศูนย์: บรรทัดแรก (ขึ้นไป) มี 3 ตัวอักษร บรรทัดที่สองมีจำนวนอักขระเท่ากัน (3) ต่อไปเราจะเพิ่มสองตัวอักษร (5) สำหรับสองด้านถัดไป รูปแบบนี้ดำเนินต่อไปทั้งสองด้านมีความยาวเท่ากันจากนั้นเพิ่มความยาวเป็น 2 ฉันต้องการสร้างเกลียวนี้สำหรับบรรทัด N เขียนในภาษาใดก็ได้ อินพุต / …

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