การเขียนโปรแกรมปริศนา & รหัสกอล์ฟ

คำถาม & คำตอบสำหรับผู้ชื่นชอบการเขียนโปรแกรมปริศนา

2
A Peak Experience: เยี่ยมชมยอดเขาทั้งหมดได้อย่างรวดเร็ว
ฉันกำลังยืนอยู่ที่จุด(0,0)ในแผนที่Hx Wซึ่งมีระดับความสูงเป็นตัวเลขเช่น: 1132 2221 1230 # H = 3, W = 4 3ฉันต้องการที่จะได้สัมผัสกับมุมมองจากทุกยอดซึ่งในกรณีนี้เป็นพื้นที่ที่มีระดับความสูง อย่างไรก็ตามการปีนขึ้นเขาไม่ใช่เรื่องง่ายและฉันก็หมดเวลาด้วย ท้าทาย ความท้าทายคือการหาเส้นทางที่เร็วที่สุดในการเยี่ยมชมยอดเขาทั้งหมดและกลับมา โปรแกรมที่สั้นที่สุดชนะ อินพุต H, W - ความสูงและความกว้างของแผนที่ (จำนวนเต็ม) (เป็นทางเลือกอาจเป็นรายการ / ทูเปิลหรืออินพุตจำนวนเต็มแยกสองรายการ) แผนที่ที่กำหนดเป็นHชุดWตัวเลข ( 0- 9) ในรูปแบบที่สะดวก (รายการ 2D สตริงคั่นด้วยการขึ้นบรรทัดใหม่ ฯลฯ ) เอาท์พุต ใช้เวลาสั้นที่สุดในการเยี่ยมชมทุกจุดสูงสุดและกลับมาที่จุดเริ่มต้นของคุณ (จำนวนเต็ม) เงื่อนไข ระดับความสูงของพื้นที่ที่กำหนดจะถูกแสดงโดยหลักมาจากการ09 "จุดสูงสุด" ถูกกำหนดโดยพื้นที่ที่มีระดับความสูงสูงสุด เส้นทางทั้งสองจะต้องเริ่มต้นและสิ้นสุดที่(0,0) ด้านซ้ายบนพื้นที่ คุณสามารถย้ายไปยังพื้นที่ที่อยู่ติดกับพื้นที่ปัจจุบันของคุณเท่านั้นและคุณไม่สามารถเคลื่อนที่ในแนวทแยงมุมได้ ใช้เวลา3 นาทีในการย้ายจากพื้นที่หนึ่งไปยังอีกพื้นที่หนึ่งหากไม่มีการเปลี่ยนแปลงระดับความสูง ใช้เวลา11 นาทีในการปีนขึ้นไป; …

21
ปฐมนิเทศมุมฉาก
ภารกิจ:กำหนดอินพุตที่ประกอบด้วยหนึ่งในอักขระอย่าง<>^vแน่นอนเอาต์พุตอินพุตที่สองประกอบด้วยอักขระ ASCII ที่พิมพ์ได้ (จาก space ไปจนถึง tilde) โดยวางลูกศร ABCสมมติว่าการป้อนข้อมูลที่สองในการเขียนโปรแกรมเป็น นี่คือสิ่งที่ควรทำ: การป้อนข้อมูล>: ABCการพิมพ์ การป้อนข้อมูล<: CBAการพิมพ์ อินพุต^: พิมพ์C\nB\nAหรืออินพุตหมุน -90 ° อินพุตv: พิมพ์A\nB\nCหรืออินพุตหมุน 90 ° กรณีทดสอบ input => \n output --- ">", "thanks!" => thanks! --- "<", "Hello, World!" => !dlroW ,olleH --- "^", "This is text." => . t x e t …
22 code-golf  string 

13
ประเด็นคืออะไร?
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในจำนวนเต็มสองจำนวนที่เป็นตัวแทนของ X และ Y พิกัดของจุดบนเครื่องบินคาร์ทีเซียน การป้อนข้อมูลที่อาจจะมาในรูปแบบที่เหมาะสมใด ๆ ตราบใดที่ค่า X มาก่อนวายตัวอย่างเช่น1 -2, (1,-2), [1, -2]หรือ1\n-2ทั้งหมดจะดีสำหรับ X = 1, y = -2 พิมพ์หรือส่งคืนสตริงอักขระเดี่ยว (ตามด้วยบรรทัดใหม่ที่เป็นทางเลือก) ที่อธิบายตำแหน่งของจุดในระนาบ: 1ถ้าประเด็นอยู่ในจตุภาค I 2 ถ้าประเด็นอยู่ในจตุภาคที่สอง 3 ถ้าประเด็นอยู่ในเสี้ยวของ III 4 ถ้าประเด็นอยู่ใน Quadrant IV Xถ้าจุดอยู่บนแกน x ( xไม่อนุญาตให้ใช้ตัวพิมพ์เล็ก) Yถ้าจุดอยู่บนแกน y ( yไม่อนุญาตให้ใช้ตัวพิมพ์เล็ก) O ถ้าจุดอยู่บนจุดเริ่มต้น (นั่นคือตัวพิมพ์ใหญ่ "โอ้" ไม่ใช่ศูนย์) รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ Tiebreaker ไปที่คำตอบที่ได้รับการโหวตสูงกว่า …

15
รหัสคะแนนกอล์ฟกอล์ฟ
มันคือวันศุกร์ ... งั้นไปเล่นกอล์ฟกันเถอะ! เขียนรหัสที่กำหนดคะแนนของผู้เล่นในหลุมในเกมกอล์ฟ รหัสสามารถเป็นได้ทั้งฟังก์ชั่นหรือโปรแกรมทั้งหมด ตามประเภทที่แนะนำรหัสที่สั้นที่สุดชนะ อินพุต (พารามิเตอร์หรือ stdin, ตัวเลือกของคุณ): จำนวนเต็มแทนค่ารูของหลุมรับประกันว่าจะอยู่ระหว่าง 3 ถึง 6 จำนวนเต็มแทนคะแนนของนักกอล์ฟรับประกันได้ระหว่าง 1 ถึง 64 เอาท์พุท (พิมพ์ไปที่ stdout หรือย้อนกลับลากขึ้นบรรทัดใหม่ที่ได้รับอนุญาต แต่ไม่จำเป็นต้องเลือกของคุณ): ถ้าคะแนนเท่ากับ 1 ให้เอาท์พุท "Hole in one" ถ้า score == par - 4 และ par> 5, output "Condor" ถ้า score == par - 3 และ par> 4, เอาต์พุต …

13
ลบตัวเลขโดยรักษาจำนวนที่มากกว่า
บทนำ ความท้าทายนี้ประกอบด้วยในการหาจำนวนมากที่สุดเอาYตัวเลขจากจำนวนเดิมnซึ่งมีxตัวเลข สมมติว่าy=2 n=5263 x=4ตัวเลขที่เป็นไปได้ที่จะลบy = 2หลักคือ: [52, 56, 53, 26, 23, 63] ดังนั้นจำนวนมากที่สุดคือ63ซึ่งจะต้องเป็นผลลัพธ์สำหรับตัวอย่างนี้ ตรรกะอีกจะเป็น: สำหรับแต่ละปีค้นหาจากซ้ายไปขวาบาทซึ่งที่ถูกต้องต่อไปคือหลักมากขึ้นแล้วเอามันอย่างอื่นเมื่อไม่มีการแข่งขันเอา Y ใช้y=3 n=76751432 x=8เพื่ออธิบาย: y=3 76751432 -^------ remove 6 because right next 7 is greater y=2 7751432 ---^--- remove 1 because right next 4 is greater y=1 775432 -----^ the search failed, then remove …

9
ยกเลิกการเข้ารหัสรหัสพาร์สัน
บทนำ รหัสพาร์สันส์เป็นเพียงวิธีง่ายๆในการอธิบายการเปลี่ยนแปลงสนามในชิ้นส่วนของเพลงไม่ว่าจะเป็นบันทึกที่สูงกว่าหรือต่ำกว่าก่อนหน้านี้หนึ่ง แม้ว่าคุณจะจำเพลงที่ไพเราะ แต่คุณก็ยังสามารถจำได้ว่าโน้ตขึ้นหรือลงดังนั้นรหัส Parsonsสามารถช่วยคุณระบุเพลงที่ใช้เครื่องมือค้นหา ลักษณะ แต่ละรูปแบบจะถูกแทนด้วยอักขระเดียวซึ่งเป็นหนึ่งในสิ่งต่อไปนี้: Rถ้าโน้ตเหมือนกันกับโน้ตก่อนหน้า (หมายถึง" R epeat" ) Uถ้าบันทึกสูงกว่าโน้ตก่อนหน้า (หมายถึง" U p" ) Dถ้าโน้ตต่ำกว่าโน้ตก่อนหน้า (หมายถึง" D own" ) *หมายเหตุเริ่มต้นเขียนเป็น ตัวอย่าง นี่คือตัวอย่างของรหัส Parsons (จุดเริ่มต้นของ"Ode to Joy" ): *RUURDDDDRUURDR คุณสามารถเห็นภาพได้จริงเช่นนี้: *-* / \ * * / \ *-* * *-* \ / \ * * *-* \ / …

30
เรียงลำดับรายการเลขจำนวนเต็ม
ความท้าทาย มันค่อนข้างง่ายจริงๆเรียงลำดับรายการหมายเลข รายละเอียด คุณต้องเรียงลำดับรายการตัวเลขตามลำดับจากน้อยไปมากโดยไม่ต้องใช้ฟังก์ชั่นการเรียงลำดับ / ไลบรารี / ฯลฯ ในตัว (เช่นlist.sort()ใน Python) อินพุต / เอาท์พุตสามารถทำได้ทุกวิธีที่คุณเลือกตราบใดที่มนุษย์สามารถอ่านได้ ช่องโหว่มาตรฐานไม่อนุญาตเช่นเคย รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ คุณต้องอธิบาย / แสดงรายการวิธีการเรียงลำดับที่คุณใช้ (ฟองการแทรกการเลือก ฯลฯ ) ข้อมูลที่ป้อนจะไม่มีข้อมูลซ้ำซ้อน ตัวอย่างอินพุต / เอาต์พุต การป้อนข้อมูล: 99,-2,53,4,67,55,23,43,88,-22,36,45 เอาท์พุท: -22,-2,4,23,36,43,45,53,55,67,88,99 หมายเหตุ: ใกล้ตรงข้ามกับเรียงลำดับรายการของตัวเลข

10
Quat ควิน + แคท
Quat เป็นการผสมผสานระหว่างควินและโปรแกรมแมว esolang ยอดนิยม ท้าทาย ความท้าทายคือการเขียนโปรแกรม cat มาตรฐาน สิ่งที่ผู้ใช้ป้อนโปรแกรมจะสะท้อนอินพุตเป็น stdout อย่างไรก็ตามเมื่อความยาวของอินพุตมากกว่า 0 และทวีคูณของ 4 โปรแกรมควรส่งออกซอร์สโค้ดของตัวเอง Quatมาจากโปรตุเกสquatroซึ่งแปลเป็น 'สี่' กฎระเบียบ ช่องโหว่มาตรฐานใช้ คุณไม่สามารถอ่านซอร์สโค้ดจากไฟล์ได้ อินพุตว่างควรสร้างเอาต์พุตว่าง โบนัส หากความยาวอินพุตของคุณเป็นทวีคูณของ 4 คุณจะได้รับโบนัส 25% โดยการพิมพ์length/4เวลาควิน โบนัสอีก 5% ถ้าคุณแยกเอาท์พุทโดยช่องว่าง (ไม่อนุญาตพื้นที่ต่อท้าย) กรณีทดสอบ กรณีทดสอบต่อไปนี้ใช้กับโปรแกรมin%4=0?cat:self(ไม่ใช่ภาษาจริง) <empty input> -> <empty output> input -> input 1234 -> in%4=0?cat:self 12345678 -> in%4=0?cat:self 0%โบนัส 12345678 -> …
22 code-golf  quine 

15
Caesar เลื่อนลอย
การเปลี่ยนซีซาร์อาจเป็นสิ่งที่เราทุกคนคุ้นเคย (คุณอาจกำลังทำมันเป็นงานบ้านถ้าเป็นเช่นนั้นโปรดอย่าคัดลอกคำตอบเหล่านี้อาจารย์ของคุณแทบไม่ต้องการคำตอบที่นี่เลย) ในกรณีที่คุณไม่อยู่การเปลี่ยนซีซาร์เป็นรูปแบบที่ง่ายมาก มันต้องใช้สตริงที่จะถูกเข้ารหัสและจำนวนเต็ม จากนั้นสำหรับอักขระตัวอักษรทุกตัวในสตริงดำเนินการแปลงต่อไปนี้: กำหนดตำแหน่งของตัวละครในตัวอักษร (ตาม 0) เพิ่มไปยังหมายเลขนั้นจำนวนเต็มที่ได้รับเมื่อเริ่มต้น ในขณะที่จำนวนมากกว่า 25 ให้ลบ 26 ออก หาตำแหน่งของตัวอักษรที่มันมีอยู่ ปล่อยให้ส่วนที่เหลือของตัวละคร unshifted ต้องเคารพตัวอักษรพิมพ์ใหญ่เพราะภาษาอังกฤษที่ไม่มีตัวอักษรพิมพ์ใหญ่คืออะไร ตัวอย่าง: abcdefghijklmnopqrstuvwxyz 1 -> bcdefghijklmnopqrstuvwxyza Spam spam spam sausage and spam! 13 -> Fcnz fcnz fcnz fnhfntr naq fcnz! abcdefghijklmnopqrstuvwxyz 52 -> abcdefghijklmnopqrstuvwxyz abcdefghijklmnopqrstuvwxyz -1 -> zabcdefghijklmnopqrstuvwxy ABCxyz 3 -> DEFabc สมมติฐาน …

30
ระยะห่างระหว่างจุดสองจุดในปริภูมิมิติ
นี่คืออีกวิธีง่าย ๆ : ความท้าทาย เมื่อกำหนดสองจุดในพื้นที่ n- มิติให้ส่งออกระยะห่างระหว่างพวกเขาหรือที่เรียกว่าระยะทางแบบยุคลิด พิกัดจะเป็นจำนวนตรรกยะ ข้อ จำกัด เพียงข้อ จำกัด ของภาษาของคุณ ขนาดต่ำสุดคือ 1 สูงสุดเป็นสิ่งที่ภาษาของคุณสามารถจัดการได้ คุณอาจสมมติว่าจุดสองจุดนั้นมีขนาดเท่ากันและจะไม่มีอินพุตว่าง ระยะทางจะต้องถูกต้องไปยังตำแหน่งทศนิยมอย่างน้อย 3 ตำแหน่ง หากภาษาของคุณไม่รองรับหมายเลขทศนิยมให้เอาท์พุททั้งจำนวนที่ใกล้ที่สุด กฎระเบียบ อนุญาตให้ใช้ฟังก์ชันหรือโปรแกรมเต็มรูปแบบตามปกติ อินพุตอาจถูกนำมาจาก STDIN, บรรทัดคำสั่งหรือฟังก์ชันอาร์กิวเมนต์ รูปแบบการป้อนข้อมูลขึ้นอยู่กับคุณระบุว่าคุณใช้รูปแบบใดในคำตอบ เอาต์พุตอาจถูกจัดเตรียมโดยการพิมพ์ไปยัง stdout หรือค่าส่งคืน นี่คือโค้ดกอล์ฟที่ชนะการนับไบต์ต่ำที่สุด! ในกรณีที่เสมอกันคำตอบก่อนหน้านี้ชนะ กรณีทดสอบ แต่ละจุดถูกแสดงด้วยรายการความยาว n [1], [3] -> 2 [1,1], [1,1] -> 0 [1,2], [3,4] -> 2.82842712475 [1,2,3,4], [5,6,7,8] -> …

13
ตัวอักษรระหว่างตัวอักษรสองตัว
เขียนโปรแกรมที่ยอมรับคำตัวพิมพ์เล็กคำเดียวเป็นอินพุตและเอาต์พุตจำนวนตัวอักษรคู่ที่มีจำนวนตัวอักษรเดียวกันระหว่างคำนั้น ๆ ในคำเดียวกับตัวอักษร ตัวอย่างเช่นในคำว่า 'ธรรมชาติ' เรามี 4 คู่: nr: เนื่องจากมีสามตัวอักษรระหว่างพวกเขาภายในคำ (a, t, u) และตัวอักษรสามตัวระหว่างพวกเขาในตัวอักษร (o, p, q) ae: เนื่องจากมีสามตัวอักษรระหว่างพวกเขาภายในคำ (t, u, r) และสามตัวอักษรระหว่างพวกเขาในตัวอักษร (b, c, d) tu: เนื่องจากไม่มีตัวอักษรระหว่างพวกเขาภายในคำและไม่มีตัวอักษรระหว่างพวกเขาในตัวอักษร tr: เนื่องจากมีจดหมายหนึ่งฉบับอยู่ระหว่างพวกเขาภายในคำ (u) และจดหมายหนึ่งฉบับระหว่างพวกเขาในตัวอักษร (s) เนื่องจากมีสี่คู่เอาต์พุตในกรณีนี้ควรเป็น 4
22 code-golf 

16
พิมพ์ 1 ถึง 15 โดยใช้เครื่องพิมพ์อื่น
การสร้างเครื่องพิมพ์จำนวนเต็มอเนกประสงค์นั้นดีและทั้งหมด แต่การเขียนรหัสเดียวที่พิมพ์ตัวเลขที่แตกต่างกันจำนวนมากนั้นยุ่งยาก มันจะไม่ง่ายกว่าหรือถ้าจะสร้างสคริปต์ที่ให้ผลตัวเลข แต่ให้สคริปต์ใหม่เพื่อให้ได้ตัวเลขถัดไป ท้าทาย: เขียนรหัสที่ส่งออกจำนวนเต็มเดียวNและรหัสที่ปฏิบัติการได้ รหัสต่อไปควรเอาท์พุทและรหัสที่สามารถเอาท์พุทN+1 ดำเนินการต่อเส้นทางนี้จนกว่าจะถึงN+2 N = 15(หมายเลขที่พิมพ์ล่าสุดควรเป็น 15) กฎ: ไม่มีอินพุต (ถือว่าอินพุตว่างเปล่า) อนุญาตให้ใช้โปรแกรมหรือฟังก์ชั่นเต็มรูปแบบหรือรูปแบบอื่นที่สะดวกสบาย 1รหัสแรกควรเอาท์พุท คุณไม่สามารถส่งออกศูนย์นำหน้า คือคุณไม่สามารถพิมพ์สำหรับ011 N, Code_for_N+1การส่งออกจะต้องอยู่ในรูปแบบ โปรดทราบว่าการส่งออกจะถูกคั่นด้วยเครื่องหมายจุลภาคและช่องว่างเดียว รหัสสำหรับN+1ไม่มีเครื่องหมายคำพูดล้อมรอบ N , Code_for_N+1ไม่ได้รับการยอมรับ (ช่องว่างด้านหน้าของเครื่องหมายจุลภาค) การขึ้นบรรทัดใหม่จะตกลง อักขระตัวแรกของเอาต์พุตต้องเป็นตัวเลข (ไม่มีช่องว่างนำหน้าหรือans = N) หมายเลขที่พิมพ์ไม่ควรเป็นส่วนหนึ่งของรหัสถัดไป (รหัสสามารถมีหมายเลขนี้ได้ แต่คุณไม่สามารถใช้หมายเลขเอาท์พุทเป็นส่วนหนึ่งของรหัสได้) ตัวอย่าง: การส่งออกสำหรับสามารถ:N=2 2, printer 2ในกรณีนี้เป็นรหัสสำหรับprinter 2 N=3คุณไม่สามารถใช้การส่งออกทั้งหมด: รหัสสำหรับ 2, printer 2N=3 สคริปต์อาจเป็นภาษาต่าง ๆ ประเภทข้อมูลนั้นไม่เกี่ยวข้อง (จำนวนสามารถเป็นสตริง) …
22 code-golf  string 

13
ปัญหาของ Josephus กับสามอินพุต
มีคำถามในไซต์นี้ที่คล้ายกับคำถามนี้ แต่ฉันได้เพิ่มการบิด คุณมีสามอินพุตจำนวนคนในแวดวงnคนk -th นับในแต่ละขั้นตอนและบุคคลq -th ที่รอดชีวิต คนที่อยู่ในวงกลมที่มีเลข 1 ถึงn ตัวอย่างเช่นในแวดวงที่มี 20 คนบุคคลที่ 20 เพื่อความอยู่รอดเป็นบุคคลแรกที่ถูกนำออกผู้รอดชีวิตที่ 19 คือคนที่สองที่ถูกนำออกและอื่น ๆ โดยปกติแล้วปัญหาของ Josephus คือการกำหนดคนสุดท้ายที่ถูกนำออกซึ่งเรียกว่าผู้รอดชีวิตคนแรก เขียนโปรแกรมหรือฟังก์ชั่นที่สั้นที่สุดซึ่งอินพุตทั้งสามนั้นคืนค่าจำนวนบุคคลq -th เพื่อเอาชีวิตรอด หากมีปัญหาใด ๆ ที่มีความชัดเจนโปรดแจ้งให้เราทราบ ตัวอย่างบางส่วน: >>> josephus(20, 3, 9) 4 >>> josephus(4, 3, 1) 1 >>> josephus(100, 9, 12) 46 แก้ไข:สมมติว่าอินพุตทั้งหมดถูกต้อง นั่นคือไม่มีใครจะถาม 0 หรือตัวเลขลบใด ๆ และไม่มีใครจะขอผู้รอดชีวิตคนที่ 20 …
22 code-golf 

4
หลายโปรแกรม Quinecatenate!
งานของคุณคือการให้สามภาษาที่แตกต่างกัน A, B, C และเขียนสองโปรแกรมที่แตกต่างกัน P และ Q เช่นนั้น: P เป็นควินในภาษา A แต่ไม่ใช่ควินินใน B หรือ C; Q เป็นควินในภาษา B แต่ไม่ใช่ควินินใน A หรือ C; และ Q เรียงต่อกันหลังจาก P (ไม่มีตัวละครใหม่เพิ่มในระหว่าง) เป็น quine ในภาษา C แต่ไม่ใน B หรือ A นี่คือ codegolf ซึ่งคะแนนของคุณคือความยาวของควินินสุดท้ายที่ต่อกัน อีกครั้งปฏิบัติตามกฎของquines ที่เหมาะสม - ไม่อ่านซอร์สโค้ดของคุณไม่มีโปรแกรมที่ว่างเปล่า ฯลฯ

22
qa กำลังสองตกค้างของ n หรือไม่
ได้รับสองปัจจัยการผลิตq nการตรวจสอบว่าเป็นสารตกค้างกำลังสองของqn นั่นคือจะมีxที่ไหนx**2 == q (mod n)หรือเป็นqตัวดัดแปลงสแควร์n? อินพุต สองจำนวนเต็มqและnที่qและเป็นจำนวนเต็มใดn ๆ0 <= q < n เอาท์พุต ความจริงหรือเท็จ เลือกพิมพ์ใด ๆ (หรือทั้งหมด) xนั่นคือx**2 == q (mod n) ตัวอย่าง >>> quadratic_residue(1, 5) True >>> quadratic_residue(3, 8) False >>> quadratic_residue(15, 22) True กฎระเบียบ รหัสของคุณจะต้องเป็นโปรแกรมหรือฟังก์ชั่น อินพุตสามารถอยู่ในลำดับใดก็ได้ นี่คือรหัสกอล์ฟดังนั้นรหัสที่สั้นที่สุดในหน่วยไบต์ชนะ หากมีสิ่งใดไม่ชัดเจนหรือต้องการแก้ไขโปรดแจ้งให้เราทราบ โบนัส โบนัส 2 ไบต์หากฟังก์ชันของคุณยอมรับqว่าเป็นจำนวนเต็มใดก็ได้ แค็ตตาล็อก var QUESTION_ID=65329;var ANSWER_FILTER="!t)IWYnsLAZle2tQ3KqrVveCRJfxcRLe";var …

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