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

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

15
วางอักขระที่ไม่ซ้ำกันลง
ง่ายมากโปรแกรมหรือฟังก์ชันของคุณควรสร้างข้อความต่อไปนี้: Elizabeth obnoxiously quoted (just too rowdy for my peace): "THE QUICK BROWN FOX JUMPS OVER THE LAZY DOG," giving me a look. พิมพ์ดี คุณอาจเขียนโปรแกรมหรือฟังก์ชั่นซึ่งส่งกลับผลลัพธ์เป็นสตริงหรือพิมพ์ไปยัง STDOUT (หรือทางเลือกที่ใกล้เคียงที่สุด) คุณสามารถเลือกที่จะรวมบรรทัดใหม่ต่อท้ายหนึ่งบรรทัดในเอาต์พุตได้ เกณฑ์การให้คะแนน จำนวนไบต์ในรหัสของคุณคูณด้วยจำนวนไบต์ที่ไม่ซ้ำกันในรหัสของคุณ คะแนนต่ำสุดชนะ ตัวอย่างเช่น brainfuck หรือคำตอบของช่องว่างจะมีประโยชน์มากที่นี่เนื่องจากตัวคูณจะต่ำมาก (8 และ 3 ตามลำดับ) อย่างไรก็ตามโดยทั่วไปแล้วการเขียนโปรแกรมในภาษาเหล่านั้นจะสร้างรหัสที่ยาวกว่าซึ่งอาจส่งผลเสียต่อข้อได้เปรียบนั้น ช่องโหว่มาตรฐานซึ่งจะไม่ตลกจะห้าม


21
วิธีที่แตกต่างไปข้างหน้า
รับรายการของจำนวนเต็มผลิตความแตกต่างไปข้างหน้าตามคำสั่ง / ความลึกที่ระบุ สำหรับรายการจำนวนเต็ม: (10, 18, -12, 4, 8, -3, -5, 67, 9, 14) ความแตกต่างไปข้างหน้าตามคำสั่ง / ความลึกต่างๆ ได้แก่ : 0 10, 18, -12, 4, 8, -3, -5, 67, 9, 14 1 8, -30, 16, 4, -11, -2, 72, -58, 5 2 -38, 46, -12, -15, 9, 74, -130, 63 3 …

3
การวาดในทับ
เขียนโปรแกรมที่ใช้ในบล็อกสี่เหลี่ยมของข้อความที่ประกอบด้วยX's และ.' s เช่นคร่าวๆนี้A: ...... ..XX.. .X..X. .XXXX. .X..X. .X..X. เอาท์พุทการเป็นตัวแทนของกริดนี้หมุน 45 องศาทวนเข็มนาฬิกาโดยวาดเครื่องหมายสแลช - ไปข้างหน้าหรือข้างหลังขึ้นอยู่กับบริบท - ทุก ๆXเส้นขอบ a .หรือด้านข้างของกริด (มีช่องว่างเติมในส่วนที่เหลือ) /\/\ / /\ \ \/ / \ /\/ /\ \ \ / \/ \ \ \ \ \/ จำนวนช่องว่างต่อท้ายและนำหน้า (และขึ้นบรรทัดใหม่) ไม่สำคัญตราบใดที่รูปร่างของXอินพุตในนั้นถูกดูแลโดยเครื่องหมายทับ มันตกลงเพื่อตัดแถวพิเศษหรือคอลัมน์ของ.'s สำหรับ I / O คุณสามารถใช้การรวมกันของพารามิเตอร์บรรทัดคำสั่ง stdin / …

24
ตัวละครใน String Go Round และ Round
(ได้รับแรงบันดาลใจจากร่างแรกของการท้าทายเศษส่วนของ PhiNotPi ) คุณได้รับความกว้างความW > 1สูงH > 1และสตริงที่ประกอบด้วย2(W+H-2)อักขระ ASCII ที่พิมพ์ได้ งานคือการพิมพ์สตริงนี้ล้อมรอบสี่เหลี่ยมของความกว้างและความสูงที่กำหนดเริ่มต้นที่มุมซ้ายบนในความรู้สึกตามเข็มนาฬิกา ด้านในของสี่เหลี่ยมผืนผ้าเต็มไปด้วยช่องว่าง กรณีทดสอบหวังว่าจะทำให้เรื่องนี้ชัดเจนมาก คุณสามารถเขียนโปรแกรมหรือฟังก์ชันรับอินพุตผ่าน STDIN (หรือทางเลือกที่ใกล้เคียงที่สุด) อาร์กิวเมนต์บรรทัดคำสั่งหรืออาร์กิวเมนต์ฟังก์ชันและพิมพ์ผลลัพธ์ไปที่ STDOUT (หรือทางเลือกใกล้เคียงที่สุด) หรือส่งคืนเป็นสตริง ต้องไม่มีช่องว่างนำหน้าหรือต่อท้าย (นอกเหนือจากที่อาจอยู่ในสตริงอินพุต) คุณสามารถเลือกที่จะออกบรรทัดใหม่ต่อท้ายบรรทัดเดียว นี่คือรหัสกอล์ฟดังนั้นการส่งที่สั้นที่สุด (เป็นไบต์) ชนะ กรณีทดสอบ แต่ละกรณีทดสอบจะ"String" W Hตามด้วยผลลัพธ์ที่คาดหวัง "Hello, World! " 5 4 Hello , ! dlroW "+--+|||+--+|||" 4 5 +--+ | | | | | | +--+ …

7
ฉันจะสร้างชื่อสมาชิกใน Python ได้อย่างไร?
ใน Python หนึ่งสามารถบันทึกไบต์โดย aliasing ฟังก์ชันที่ใช้ซ้ำ ๆ ตัวอย่างเช่น: r=range a=r(100) b=r(200) c=r(300) อย่างไรก็ตามเมื่อฟังก์ชั่นเป็นฟังก์ชั่นสมาชิกด้วยกันฉันไม่รู้ว่าจะใช้นามแฝงในวิธีที่อนุญาตให้ผูกมัดได้อย่างไร ตัวอย่างเช่น: s='Hello' // Plain code s=s.replace('H','J').replace('e','i').replace('l','m').replace('o','y') // What I am trying to do q=replace s=s.q('H','J').q('e','i').q('l','m').q('o','y') เห็นได้ชัดว่าสิ่งที่ฉันพยายามทำไม่ถูกต้อง และนี่ไม่ใช่: q=s.replace s=q('H','J') // Replaces the 'H' in 'Hello' s=q('e','i') // Replaces the 'e' in 'Hello'... and the J is gone. s=q('l','m') …
23 code-golf  tips  python 

5
วาดเงาของอาคาร
การป้อนข้อมูล: 1 X X X X XX XXXXXX X X X X XX XXXXXX X X X XXX X XX XXXXXX X X X XXX X XX XXXXXX X X X เอาท์พุท: X. X.. X... X.... XX. XXXXXX. X.X.X. X..... XX.. XXXXXX.. X.X.X.. XXX. X......XX... XXXXXX... X.X.X... XXX.. X......XX....XXXXXX.... X.X.X.... …

8
สะกดตัวเลขในภาษาฝรั่งเศส
มีความท้าทายในการแปลงตัวเลขเป็นตัวเลขในภาษาอังกฤษแต่นั่นก็ตรงไปตรงมาเกินไป รับตัวเลข 0-100 งานของคุณคือส่งออกตัวเลขที่เกี่ยวข้องในภาษาฝรั่งเศส ระบบตัวเลขของฝรั่งเศสมีตรรกะที่ซับซ้อนกว่าเมื่อเทียบกับภาษาอังกฤษ: ตัวเลขจำนวน --------------- 0 zéro (สังเกตสำเนียง) 1 อัน 2 deux 3 ทรอยส์ 4 ห้อง 5 cinq 6 หก 7 กันยายน 8 ชั่วโมง 9 neuf 10 dix 11 ครั้ง 12 douze 13 Treize 14 quatorze 15 quinze 16 ยึด 17 dix-sept (ตัวอักษรสิบเจ็ด) 18 dix-huit 19 dix-neuf 20 …

4
ติดตั้ง ROT-47 …ใน ROT-47
ถาม: ใช้ROT-47ในโค้ดที่ใช้งานได้ทั้งตัวมันเองและตัว ROT-47 เกณฑ์การให้คะแนน: คะแนนของคุณจะคำนวณเป็นเปอร์เซ็นต์ของใช้ ROT-47 ไบต์ที่มีสิทธิ์ในการรวมของทั้งสองรุ่นของโปรแกรมโดยแบ่งไบต์รวม (ตัวละครทั้งหมด) ของทั้งสองรุ่น ใช้ ROT-47 ไบต์มีสิทธิ์เป็นตัวละครใด ๆ ที่จะได้รับการแปลงโดยเน่า-47 ตัวเลขที่ไม่ได้เป็นส่วนหนึ่งของการแสดงความคิดเห็นหรือละเว้นโดยคอมไพเลอร์ / ล่าม ตัวอย่างเช่นอักขระใด ๆ ในโปรแกรม brainfuck ที่+-<>[],.ไม่ถือเป็นไบต์ที่ใช้แล้วและอักขระใด ๆ ในโปรแกรม C รวมถึงและหลังจาก//หรือภายใน/* */จะไม่ถือว่าเป็นไบต์ที่ใช้ สัญลักษณ์พิเศษทั้งหมดใน APL ไม่ได้รับการพิจารณาว่าใช้เช่นเดียวกับตัวละครทั้งหมดในโปรแกรม Whitespace (ขออภัย) ความสัมพันธ์จะถูกทำลายโดยโปรแกรมที่มี upvotes มากที่สุด หากยังมีการเสมอกันโปรแกรมที่สั้นที่สุดจะชนะ ตัวอย่างการให้คะแนน: C: 62/64 = 96.875% แจ้งให้ทราบว่ามีช่องว่างในโปรแกรมนี้ เห็นได้ชัดว่าโปรแกรมนี้ไม่ได้เป็นรายการที่ถูกต้องเพราะมันไม่ได้รวบรวม แต่ฉันต้องการที่จะแสดงวิธีการให้คะแนนทำงาน main(){printf("Hello World!");}

5
แปลเป็นภาษาอังกฤษ
ความท้าทายของคุณคือการเขียนโปรแกรมเพื่อแปล (ภาษาอังกฤษ) leetspeak / lolspeak / txtspk เป็นภาษาอังกฤษทั่วไป โปรแกรมของคุณควรอ่านจากอินพุตมาตรฐานและเอาต์พุตไปยังเอาต์พุตมาตรฐานยกเว้นว่าภาษาของคุณไม่รองรับสิ่งเหล่านี้ คุณสามารถใช้ไฟล์ที่มีรายการคำในภาษาอังกฤษโดยคั่นด้วยบรรทัดใหม่ มันควรจะถูกเรียกWและจะอยู่ในไดเรกทอรีเดียวกับโปรแกรมของคุณ (บนระบบ GNU / Linux และอื่น ๆ คุณสามารถสร้างWลิงก์ได้/usr/share/dict/words) รายการไม่จำเป็นต้องเป็นตัวพิมพ์เล็กทั้งหมดคุณสามารถใช้มันเพื่อกำหนดว่าคำควรมีตัวพิมพ์ใหญ่หรือไม่ นี้จะขึ้นอยู่กับคำถามที่ตอนนี้ถูกลบโพสต์โดย Nikos เมตรซึ่งสามารถพบได้ที่นี่ สิ่งนี้ไม่ซ้ำกันเนื่องจากคำถามเดิมนี้ถูกปิดและไม่ได้รับคำตอบใด ๆ เนื่องจากไม่มีเกณฑ์การชนะและผู้ใช้ไม่ต้องการใส่ เกณฑ์การให้คะแนน การให้คะแนนค่อนข้างซับซ้อน! คะแนนของคุณคือ (leet items + bonuses) * 10 / (code length) คะแนนสูงสุดชนะ โปรแกรมของคุณไม่จำเป็นต้องสมบูรณ์แบบและอาจจะไม่สมบูรณ์แบบ แต่ยิ่งแม่นยำก็ยิ่งได้รับโบนัสมากเท่านั้น! เนื่องจาก$สามารถหมายถึงทั้งสองsและSคุณจะได้รับโบนัส 5 คะแนนต่อรายการ leet สำหรับการตัดสินใจว่าควรมีตัวพิมพ์ใหญ่หรือไม่ (เช่นอักษรตัวใหญ่ตอนเริ่มประโยค) คุณจะได้รับโบนัสเพิ่มอีก 5 คะแนนต่อรายการ leet …

6
พนักงานขายมันฝรั่งร้อน
รับรายการคะแนนค้นหาเส้นทางที่สั้นที่สุดที่เข้าชมทุกจุดและกลับไปที่จุดเริ่มต้น เดินทางพนักงานขายปัญหาเป็นที่รู้จักกันในสาขาวิทยาศาสตร์คอมพิวเตอร์ในขณะที่มีหลายวิธีที่จะคำนวณ / ใกล้เคียงกับมัน มันได้รับการแก้ไขสำหรับกลุ่มคะแนนที่มีขนาดใหญ่มาก แต่ที่ใหญ่ที่สุดบางแห่งใช้เวลา CPU นานหลายปีจึงจะเสร็จ อย่าถูกไฟไหม้โดยมันฝรั่ง Hot Potatoเป็นเกมที่ผู้เล่น 2+ คนผ่าน "มันฝรั่ง" เป็นวงกลมขณะที่เล่นดนตรี เป้าหมายคือการส่งต่อไปยังผู้เล่นถัดไปอย่างรวดเร็ว หากคุณกำลังถือมันฝรั่งเมื่อเพลงหยุดลงแสดงว่าคุณไม่อยู่ เป้าหมายของพนักงานขายมันฝรั่งร้อนคือ: ได้รับชุดของ100 จุดที่ไม่ซ้ำกันกลับจุดเหล่านั้นอยู่ในลำดับที่ดีกว่า ( รวมระยะทางสั้นลงตามที่กำหนดไว้ต่อไป ) นี่จะเป็นการ "ผ่าน" ปัญหาไปยังผู้เล่นคนถัดไป พวกเขาต้องปรับปรุงมันและส่งต่อไปยังหน้าถัดไปเป็นต้นหากผู้เล่นไม่สามารถปรับปรุงได้พวกเขาจะออกและเล่นต่อไปจนกว่าผู้เล่นคนหนึ่งจะออกไป เพื่อป้องกันไม่ให้สิ่งนี้เป็นการแข่งขันที่ "กำลังดุร้ายกับฉัน - เส้นทาง" มีข้อกำหนดเหล่านี้: คุณไม่สามารถใช้เวลามากกว่าหนึ่งนาทีในการส่งมันฝรั่ง หากคุณยังไม่พบและผ่านวิธีแก้ปัญหาที่สั้นกว่าภายในหนึ่งนาที คุณไม่สามารถเปลี่ยนตำแหน่งได้มากกว่า25คะแนน เพื่อให้เป็นจริง>= 75คะแนนจะต้องอยู่ในตำแหน่งเดียวกับที่คุณได้รับ มันไม่สำคัญซึ่งคนที่คุณตัดสินใจที่จะเปลี่ยนแปลงเพียงจำนวนเงินที่คุณเปลี่ยนแปลง เมื่อเหลือผู้เล่นเพียงคนเดียวเขาเป็นผู้ชนะของเกมนั้นและได้รับหนึ่งแต้ม Tourney ประกอบด้วย5*nเกมที่nมีจำนวนผู้เล่น แต่ละเกมที่ผู้เล่นเริ่มต้นจะได้รับการหมุนและการสั่งการของผู้เล่นที่เหลือจะถูกสับ ผู้เล่นที่มีคะแนนมากที่สุดในตอนท้ายคือผู้ชนะของทัวร์นาเมนต์ หากทัวร์นาเมนต์จบลงด้วยการเสมอกันอันดับแรกทัวร์นาเมนต์ใหม่จะเล่นกับผู้แข่งขันเท่านั้น สิ่งนี้จะดำเนินต่อไปจนกว่าจะไม่มีการผูก ผู้เล่นเริ่มต้นของแต่ละเกมจะได้รับคะแนนสุ่มหลอกในลำดับที่ไม่เจาะจง คะแนนถูกกำหนดให้เป็นx,yพิกัดจำนวนเต็มคู่หนึ่งบนตารางคาร์ทีเซียน ระยะทางวัดโดยใช้ระยะทางแมนฮัตตัน , |x1-x2| …

11
หยุดพักเพื่อสร้างงู!
งูคลาสสิกของเราได้มีการพัฒนา inbalance ของฮอร์โมนการเจริญเติบโต เพื่อทำให้เรื่องแย่ลงหางของเขาก็ถูกแช่แข็ง! รับอินพุตทิศทางตามที่ระบุในFigure 1เขียนโปรแกรมเพื่อตรวจสอบที่เขาจะเติบโต รูปที่ 1.อินพุตทิศทาง ข้อกำหนดของโปรแกรม อ่านการป้อนSTDINตัวอักษรโดยตัวอักษรบน หลังจากที่ได้อ่านตัวอักษร, การส่งออกSTDOUTงูไป โปรดใส่บรรทัดว่างระหว่างแต่ละครั้งที่คุณพิมพ์งู งูประกอบด้วย<>v^และหัว หัวของงูอาจจะเป็นตัวละครรอบใด ๆ ที่คุณเลือกเช่นo, 0, หรือO☺ การรวมกันของใด ๆ ที่wasdถูกต้องสำหรับการป้อนข้อมูล โปรแกรมของคุณไม่ควรถือว่าอินพุตอยู่ในระยะเวลาที่แน่นอน <>v^งูสามารถกองอยู่ด้านบนของตัวเองเขียนทับ ดูตัวอย่างสำหรับกลไกการเลี้ยงงู ช่องว่างต่อท้ายไม่เป็นไร แต่งูของคุณจะต้องดูถูกต้อง เกณฑ์การให้คะแนน นี่คือรหัสกอล์ฟ คะแนนของคุณคือจำนวนตัวอักษรในโปรแกรมของคุณ คะแนนต่ำสุดชนะ! ตัวอย่างงู: การป้อนข้อมูล: ddddssaassdddddww เอาท์พุท: >>>>v v v<< ☺ v ^ >>>>>^ การป้อนข้อมูล: dddsssaaawww เอาท์พุท: ☺>>v ^ v ^ v …
23 code-golf 

27
พรม Sierpinski
ใครไม่รักเศษส่วนที่ดี Sierpinski พรมเป็นตัวอย่างคลาสสิกของเศษส่วน ในการทำภารกิจนี้ให้เสร็จคุณจะต้องสร้างพรมชนิดและพิมพ์รูปภาพผลลัพธ์ไปที่stdout(ดูตัวอย่างด้านล่างสำหรับการจัดรูปแบบ) ซึ่งแสดงถึงระดับพรม ขั้นตอนสามารถพบได้ในบทความWikipediaนี้ ค่านี้จะถูกนำมาจากstdinหรือเทียบเท่า ตัวอย่างเช่นอินพุต 4 จะสร้างพรมระดับที่ 4: ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ ■ …

5
Regex Golf: ภูมิภาคของอิตาลีเทียบกับสหรัฐอเมริกา
เราพบปัญหาเกี่ยวกับmeta-regex-golfซึ่งได้รับแรงบันดาลใจจากการ์ตูน xkcd แต่สนามกอล์ฟ Regex นี้ก็ดูสนุกเช่นกัน! ฉันต้องการแยกความแตกต่างระหว่างรัฐของสหรัฐอเมริกาและภูมิภาคของอิตาลี ทำไม? ฉันเป็นพลเมืองของทั้งสองประเทศและฉันมักจะมีปัญหากับเรื่องนี้* ภูมิภาคของประเทศอิตาลีนั้น Abruzzo, Valle d'Aosta, Puglia, Basilicata, Calabria, Campania, Emilia-Romagna, Friuli-Venezia Giulia, Lazio, Liguria, Lombardia, Marche, Molise, Piemonte, Sardegna, Sicilia, Trentino-Alto Adige/Südtirol, Toscana, Umbria, Veneto และสหรัฐอเมริกาเป็น Alabama, Alaska, Arizona, Arkansas, California, Colorado, Connecticut, Delaware, Florida, Georgia, Hawaii, Idaho, Illinois, Indiana, Iowa, Kansas, Kentucky, …

6
วงกลมแบ่งระนาบ
งาน คุณจะได้รับชุดของวงการในระนาบกับศูนย์ของพวกเขาในสายการ y = 0 รับประกันว่าจะไม่มีวงกลมคู่ใดมีจุดร่วมมากกว่าหนึ่งจุด งานของคุณคือกำหนดจำนวนภูมิภาคที่วงกลมแบ่งเครื่องบิน ภูมิภาคคือชุดของจุดที่ต่อเนื่องกันที่รวมเข้าด้วยกันอย่างสูงสุดซึ่งไม่ได้ตัดกันวงกลมใด ๆ คุณควรเขียนโปรแกรมที่คำนวณคำตอบนี้เมื่อได้รับคำอธิบายของแวดวง นี่คือตัวอย่าง: ทางด้านซ้ายคุณจะเห็นวงกลมที่วาดในระนาบ อย่างไรก็ตามในครึ่งด้านขวาของภาพภูมิภาคที่ผลิตโดยวงกลมจะมีสีชัดเจน (หนึ่งสีต่อภูมิภาค) ในตัวอย่างนี้มีหกภูมิภาค อินพุต บรรทัดแรกของอินพุตมีจำนวน, Nจำนวนของคำอธิบายวงกลมที่ต้องติดตาม บรรทัดนี้เป็นทางเลือกถ้าโซลูชันของคุณใช้งานไม่ได้ก็ไม่เป็นไร ต่อไปนี้Nแต่ละบรรทัดมีสองจำนวนเต็มx ฉันและr ฉัน > 0คิดเป็นวงกลมที่มีศูนย์(x ฉัน , 0)และรัศมีRฉัน รับประกันว่าจะไม่มีวงกลมคู่ใดมีจุดร่วมมากกว่าหนึ่งจุด มีการรับประกันเพิ่มเติมว่าx iและr iไม่เกิน10^9ค่าสัมบูรณ์ (ดังนั้นพวกเขาจึงพอดีกับจำนวนเต็ม 32 บิต) อินพุตอาจเป็น: อ่านจาก STDIN อ่านจากไฟล์ชื่อIในไดเรกทอรีปัจจุบัน อีกทางหนึ่งอินพุตอาจเป็น: เป็นสตริง (รวมถึงการขึ้นบรรทัดใหม่) ในตัวแปรทั่วโลก บนสแต็ก เอาท์พุต นี่ควรเป็นเลขจำนวนเต็มเดียวคือตัวเลขตามภูมิภาคที่ผลิต สิ่งนี้ควรถูกเขียนไปยัง STDOUT หรือไฟล์ที่มีชื่อOในไดเรกทอรีปัจจุบัน กฎระเบียบ รหัสที่สั้นที่สุดในหน่วยไบต์ชนะ …

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