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

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

3
เชื่อมต่อ 4: ค้นหาของปลอม!
ธนาคารถูกบุกรุกและบรรดานักเลงมาเฟียในท้องถิ่นมีข้อแก้ตัวที่ผิดปกติ: พวกเขาเล่นที่บ้าน Connect 4! เพื่อช่วยในการสืบสวนคุณจะถูกขอให้เขียนโปรแกรมเพื่อตรวจสอบบอร์ด Connect 4 ทั้งหมดที่ถูกยึดเพื่อตรวจสอบว่าตำแหน่งนั้นอยู่ในตำแหน่งที่แน่นอนจากเกม Connect 4 ที่ถูกต้องและยังไม่ได้รวมเข้าด้วยกัน ทันทีที่ตำรวจเคาะประตู กฎสำหรับการเชื่อมต่อ 4: ผู้เล่นRและYหันมาวางไพ่ที่มีสีลงในคอลัมน์ของตารางขนาด 7x6 เมื่อผู้เล่นวางไทล์ลงในคอลัมน์มันจะหล่นลงมาเพื่อครองตำแหน่งที่ไม่สำเร็จที่ต่ำที่สุดในคอลัมน์นั้น หากผู้เล่นจัดการเพื่อให้ได้สีในแนวนอนแนวตั้งหรือแนวทแยงของไพ่สี่สีบนกระดานจากนั้นพวกเขาชนะและเกมจะจบลงทันที ตัวอย่างเช่น (เมื่อRเริ่มต้น) ต่อไปนี้เป็นตำแหน่งเชื่อมต่อ 4 ที่เป็นไปไม่ได้ | | | | | | | | | | | | | | | | | | | | | | | | | | |R| …

20
รายการ * ทั้งหมด * สิ่งอันดับ!
เขียนโปรแกรมรับอินพุตnจะสร้าง n-tuples ที่เป็นไปได้ทั้งหมดโดยใช้ตัวเลขธรรมชาติ n=1 (1),(2),(3),(4),(5),(6)... n=2 (1,1),(1,2),(2,1),(2,2),(1,3),(3,1),(2,3),(3,2),(3,3)... n=6 (1,1,1,1,1,1) (1,1,1,1,2,1) (1,1,1,2,1,1)... ผลลัพธ์อาจอยู่ในลำดับใด ๆ ที่ไม่ทำลายกฎอื่น ๆ โปรแกรมจะต้องเขียนให้ทำงานตลอดไปและทำรายการสิ่งอันดับที่ใช้ได้ทั้งหมดในทางทฤษฎี ในความเป็นจริงโปรแกรมของคุณจะถึงขีด จำกัด และประเภทของจำนวนเต็ม นี่เป็นที่ยอมรับได้ตราบใดที่โปรแกรมจะรันนานอย่างไม่ จำกัด หากมีเพียงจำนวนเต็มชนิดไม่ จำกัด tuple ที่ถูกต้องแต่ละรายการจะต้องแสดงรายการภายในระยะเวลาที่ จำกัด หากมีเพียงโปรแกรมที่ได้รับอนุญาตให้รันในระยะเวลานั้น เอาท์พุทอาจรวมถึงศูนย์นอกเหนือจากจำนวนธรรมชาติ คุณสามารถเลือกรูปแบบการแสดงผลของโปรแกรมเพื่อความสะดวกของคุณตราบใดที่การแยกระหว่างทูเปิลและตัวเลขภายในแต่ละทูเปิลนั้นชัดเจนและสอดคล้องกัน (ตัวอย่างเช่นหนึ่ง tuple ต่อบรรทัด) อินพุต (n) เป็นจำนวนเต็มตั้งแต่หนึ่งถึงหก พฤติกรรมที่ต้องการไม่ได้กำหนดไว้สำหรับอินพุตภายนอกช่วงนี้ บังคับใช้กฎของรหัสกอล์ฟโปรแกรมที่สั้นที่สุดชนะ ขอบคุณ "Artemis Fowl" สำหรับคำติชมในช่วงระยะเวลา Sandbox

21
ปริมาณการเรียงสับเปลี่ยนบนคิวบ์ NxNxN Rubik
บทนำ: ลูกบาศก์รูบิค 3x3x3 มีพีชคณิตเป็นไปได้ซึ่งมีประมาณ 43 Quintillion คุณอาจเคยได้ยินเกี่ยวกับหมายเลขนี้มาก่อน แต่มันคำนวณได้อย่างไรจริง ๆ43 , 252 , 003 , 274 , 489 , 856 , 00043,252,003,274,489,856,00043,252,003,274,489,856,000 ลูกบาศก์รูบิค 3x3x3 มีหกด้านแต่ละด้านมีเก้าสติกเกอร์ ดูที่ชิ้นส่วนภายนอกแทนที่จะเป็นสติกเกอร์เรามีชิ้นกลางหกชิ้น แปดมุมชิ้น; และขอบชิ้นสิบสองชิ้น เนื่องจากศูนย์ไม่สามารถเคลื่อนย้ายได้เราจึงสามารถข้ามศูนย์เหล่านั้นในการคำนวณได้ สำหรับมุมและขอบ: มี( ) วิธีในการจัดเรียงมุมทั้งแปด แต่ละมุมมีทิศทางที่เป็นไปได้สามแบบแม้ว่าจะมีเพียงแค่เจ็ด (จากแปด) เท่านั้น การวางแนวของมุมที่แปด / สุดท้ายขึ้นอยู่กับเจ็ดก่อนหน้านี้ให้ความเป็นไปได้ ( )8 !8!8!40 , 32040,32040,32037373^72 , 1872,1872,187 มี ( ) วิธีในการจัดเรียงขอบทั้งสิบสอง ลดลงครึ่งหนึ่งจากเป็นเพราะขอบจะต้องอยู่ในการเปลี่ยนแปลงแม้แต่เมื่อมุมอยู่เสมอ …

9
เรียงตามการเยื้อง
กำหนดรายการที่เรียงลำดับของสตริงตัวอักษรตัวพิมพ์เล็ก (az XOR AZ) โดยที่แต่ละสตริงนำหน้าด้วยอักขระ 0 ตัวขึ้นไป () เว้นวรรคส่งออกรายการเดียวกัน ความลึกของการเยื้องภายใต้ผู้ปกครองที่แตกต่างกันนับเป็นรายการที่แตกต่างกันสำหรับวัตถุประสงค์การเรียง ตัวอย่าง หากอินพุตของคุณคือ: bdellium fox hound alien aisle wasabi elf alien horseradish xeno irk wren tsunami djinn zebra ผลลัพธ์ของคุณควรเป็น aisle horseradish xeno wasabi alien elf bdellium alien fox hound djinn zebra irk tsunami wren ถ้าคุณชอบลองคิดว่ามันเป็นเหมือนรายชื่อไดเรกทอรีและคุณต้องเรียงลำดับชื่อในแต่ละไดเรกทอรี ข้อปลีกย่อย รายการอาจเยื้องโดยจำนวนช่องว่างใด ๆ หากมีการย่อหน้าด้วยจำนวนช่องว่างเท่ากับรายการก่อนหน้ารายการนั้นจะอยู่ในลำดับชั้นการเรียงลำดับเดียวกับรายการก่อนหน้า ถ้ามันถูกเยื้องโดยช่องว่างมากขึ้นมันเป็นจุดเริ่มต้นของลำดับชั้นย่อยใหม่ หากบรรทัดถูกเยื้องโดยช่องว่างน้อยกว่าบรรทัดด้านบนมันจะเชื่อมโยงไปยังกลุ่มย่อยที่อยู่ใกล้ที่สุดด้านบนด้วยช่องว่าง …

14
Scrabble ที่สวมด้วยกระเบื้อง
ปัญหา คุณกำลังติดอยู่ในห้องโดยสารที่อยู่กลางป่าโดยมีเพียงตัวหวัดตัวเก่าเท่านั้นที่สร้างความบันเทิงให้ตัวคุณเอง เมื่อตรวจสอบแล้วคุณจะเห็นว่าตัวอักษรหวัดดีสวมใส่เฉพาะจุดของตัวอักษรแต่ละตัวเท่านั้น อย่างไรก็ตามคุณตัดสินใจที่จะเล่นเกม คุณดึงตัวอักษรเจ็ดตัวออกจากถุงแล้ววางลงบนถาดความท้าทายของคุณคือการกำหนดว่าตัวอักษรเหล่านั้นควรเป็นอะไร ดังนั้นโดยทั่วไปให้รายการของคะแนนแปลงเป็นสตริงหรือรายการตัวอักษรใด ๆ กระเบื้องข่วนและกระจาย 2 แผ่นเปล่า (คะแนน 0 คะแนน) 1 คะแนน: E × 12, A × 9, I × 9, O × 8, N × 6, R × 6, T × 6, L × 4, S × 4, U × 4 2 คะแนน: D × 4, …

2
สถานการณ์ที่ยากลำบาก
ให้สัญลักษณ์ของ Dowker เกี่ยวกับปมและเครื่องหมายกากบาทให้คำนวณพหุนามวงเล็บของมัน แม้ว่าจะมีคำจำกัดความทางเทคนิคมากขึ้น แต่สำหรับความท้าทายนี้ก็เพียงพอที่จะคิดว่าปมเป็นสิ่งที่สร้างขึ้นทางร่างกายโดยการแนบปลายทั้งสองของสายเข้าด้วยกัน เนื่องจากมีปมอยู่ในสามมิติเมื่อเราวาดลงบนกระดาษเราใช้แผนภาพโบว์ - ประมาณการสองมิติซึ่งการข้ามนั้นมีสองบรรทัดอย่างใดอย่างหนึ่งและหนึ่งภายใต้ ที่นี่ (b) และ (c) เป็นไดอะแกรมต่าง ๆ ของปมเดียวกัน เราจะแสดงแผนภาพปมบนกระดาษได้อย่างไร พวกเราส่วนใหญ่ไม่ใช่แรมแบรนดท์ดังนั้นเราจึงต้องพึ่งพาสัญลักษณ์ของ Dowkerซึ่งทำงานดังนี้: เลือกจุดเริ่มต้นโดยพลการบนปม ย้ายไปในทิศทางที่พลพร้อมโบว์และหมายเลขข้ามไปที่คุณพบเริ่มต้นจาก 1 กับการปรับเปลี่ยนต่อไปนี้: ถ้ามันเป็นเลขคู่และคุณกำลังจะมากกว่าข้ามปฏิเสธว่าเลขคู่ สุดท้ายเลือกตัวเลขคู่ที่สอดคล้องกับ 1, 3, 5, ฯลฯ ลองตัวอย่าง: บนปมนี้เราเลือก "1" เป็นจุดเริ่มต้นของเราแล้วเลื่อนขึ้นไปทางขวา ทุกครั้งที่เราไปมากกว่าหรือภายใต้ชิ้นส่วนของเชือกอื่นเรากำหนดจุดข้ามจำนวนธรรมชาติต่อไป เราลบล้างเลขคู่ที่สอดคล้องกับเส้นที่ผ่านการข้ามเช่น[3,-12]ในแผนภาพ [[1,6],[2,5],[3,-12],[-4,9],[7,8],[-10,11]]ดังนั้นแผนภาพนี้จะได้รับการแสดงโดย รายชื่อเพื่อนของ 1, 3, 5, 7, ฯลฯ [6,-12,2,8,-4,-10]จะช่วยให้เรา มีบางสิ่งที่ควรทราบที่นี่ อันดับแรกสัญกรณ์ Dowker นั้นไม่ซ้ำกันสำหรับปมที่กำหนดเนื่องจากเราสามารถเลือกจุดเริ่มต้นและทิศทางโดยพลการ แต่ด้วยสัญกรณ์หนึ่งสามารถกำหนดโครงสร้างของปมได้อย่างเต็มที่ (ในทางเทคนิคขึ้นอยู่กับการสะท้อนขององค์ประกอบปมที่สำคัญของมัน) ในขณะที่เครื่องหมายของ Dowker …

6
งูนั่นกำลังจะไปไหน
เขียนฟังก์ชั่น (ใช้น้อยที่สุดเท่าที่เป็นไปได้ไบต์) ที่ใช้อาร์เรย์สองมิติของจำนวนคอลัมน์และแถวใด ๆ ที่: 0 แสดงถึงบล็อกว่างเปล่า 1 แสดงถึงบล็อกงู ฟังก์ชั่นจะต้องคืนค่าจำนวนเส้นทางที่เป็นไปได้ที่งูเดินทางไป ตัวอย่างที่ 1: การป้อนข้อมูล: [ [1,1,1,1,1], [0,0,0,0,1], [0,0,0,0,1], ] เอาท์พุท: 2 ในตัวอย่างด้านบนฟังก์ชันจะส่งคืน2เนื่องจากคำตอบเป็นอย่างใดอย่างหนึ่ง: ตัวอย่างที่ 2: การป้อนข้อมูล: [ [1,1,1,1], [0,0,1,1], [0,0,1,1], ] เอาท์พุท: 6 ในตัวอย่างนี้ฟังก์ชั่นจะกลับมา6เพราะคำตอบเป็นหนึ่งใน: บันทึก: เมื่อประเมินอินพุตคุณสามารถสมมติได้ว่า: อาร์เรย์ที่แสดงคอลัมน์จะมีขนาดเท่ากันเสมอ (ดังนั้นอาร์เรย์จึงเป็นรูปสี่เหลี่ยม) มีเส้นทางที่ถูกต้องอย่างน้อย 1 เส้นทาง; งูไม่สามารถเดินผ่านขอบ (เช่นอาจเกิดขึ้นในบางรุ่นของงู); งูจะมีอย่างน้อย 2 ช่วงตึกเสมอ งูไม่สามารถเคลื่อนที่ได้ในแนวทแยงมุม เส้นทางถูกนำไป (ดังนั้นทั้งสองเส้นทางที่ลงท้ายด้วยตำแหน่งที่แตกต่างกัน แต่ไม่เช่นนั้นการค้นหาที่เหมือนกันไม่ใช่เส้นทางเดียวกันมันจะรวมกันทั้งหมด)

22
จำนวนแคช FIFO ที่หายไป
ความท้าทายนี้ง่ายมาก (และเป็นปูชนียบุคคลที่ยากขึ้น!) รับอาร์เรย์ของการเข้าถึงทรัพยากร (แสดงโดยเพียงแค่จำนวนเต็มไม่เป็นลบ) และพารามิเตอร์nกลับจำนวนคิดถึงแคชมันจะมีสมมติแคชของเรามีความสามารถnและใช้ (FIFO) โครงการออกมาครั้งแรกในครั้งแรกที่ออกมาเมื่อมันเต็ม . ตัวอย่าง: 4, [0, 1, 2, 3, 0, 1, 2, 3, 4, 0, 0, 1, 2, 3] 0 = not in cache (miss), insert, cache is now [0] 1 = not in cache (miss), insert, cache is now [0, 1] 2 = not …

26
การแลกเปลี่ยนเป็นทุน
ให้ตัวอักษรสองสายโอนรูปแบบการใช้อักษรตัวพิมพ์ใหญ่ของแต่ละสายไปยังอีกสายหนึ่ง ไบต์ที่น้อยที่สุดจะเป็นผู้ชนะ Input: CodeGolf xxPPCGxx Output: coDEGOlf XxppCgxx สตริงทั้งสองจะมีความยาวเท่ากันและไม่ว่างเปล่ามีเพียงตัวอักษรa..zและA..Z คุณสามารถส่งออกทั้งสองสตริงที่เกิดขึ้นในลำดับใด ๆ ที่เกี่ยวข้องกับการป้อนข้อมูล คุณอาจแสดงคู่ของสตริงเป็นหนึ่งสตริงที่มีตัวคั่นอักขระเดี่ยวที่ไม่ใช่ตัวอักษรสำหรับอินพุตและ / หรือเอาท์พุท คุณอาจแสดงสตริงเป็นรายการของอักขระหรือสตริงอักขระหนึ่งตัว แต่ไม่สามารถใช้เป็นลำดับของค่าจุดโค้ดยกเว้นว่าเป็นสตริงในภาษาของคุณ อินพุตและเอาต์พุตของคุณอาจแทนสตริงที่แตกต่างกัน กรณีทดสอบ: CodeGolf xxPPCGxx -> coDEGOlf XxppCgxx lower UPPER -> LOWER upper MiXeD lower -> mixed LoWeR A A -> A A ABcd EfGh -> AbCd EFgh
35 code-golf  string 

23
ภาวะที่กลืนไม่เข้าคายไม่ออกที่มีเสียงดังของนักโทษ
ในการท้าทายนี้คุณจะเล่นสถานการณ์ที่ไม่แน่นอนของนักโทษที่มีเสียงดัง ขึ้นเขียงนักโทษเป็นสถานการณ์ในทฤษฎีเกมที่มีผู้เล่นสองคนแต่ละคนมีสองตัวเลือก: ความร่วมมือหรือมีความบกพร่อง ผู้เล่นแต่ละคนทำได้ดีกว่าสำหรับตัวเองหากพวกเขาบกพร่องกว่าถ้าพวกเขาร่วมมือกัน แต่ผู้เล่นทั้งสองต้องการผลลัพธ์ที่ผู้เล่นทั้งสองร่วมมือกันกับผู้เล่นที่ทั้งคู่เสีย ภาวะที่กลืนไม่เข้าคายไม่ออกของนักโทษที่ซ้ำแล้วซ้ำกันเป็นเกมเดียวกันยกเว้นคุณเล่นกับคู่ต่อสู้คนเดิมซ้ำแล้วซ้ำเล่าและคุณรู้ว่าคู่ต่อสู้ของคุณเคยเล่นในอดีต เป้าหมายของคุณคือการสะสมคะแนนสูงสุดให้ตัวเองเสมอไม่ว่าฝ่ายตรงข้ามจะทำเช่นไร ภาวะที่กลืนไม่เข้าคายไม่ออกซ้ำแล้วซ้ำอีกของเสียงดังขึ้นส่งเสียงดังในการสื่อสาร ความรู้ของคุณเกี่ยวกับสิ่งที่คู่ต่อสู้ของคุณได้เล่นในอดีตจะมีเสียงรบกวนบ้าง คุณจะรู้ว่าสิ่งที่คุณทำเคลื่อนไหวในอดีต อัตราเสียงนั้นคงที่ตลอดหนึ่งรอบกับคู่ต่อสู้เดียวกัน แต่ต่างกันระหว่างรอบที่แตกต่างกัน ท้าทาย ในการท้าทายนี้คุณจะเขียนโปรแกรม Python 3 เพื่อเล่นวิกฤติของนักโทษที่มีเสียงดัง โปรแกรมของคุณจะได้รับสามอินพุต: การเคลื่อนไหวของคุณเองโดยไม่ต้องใช้การพลิกแบบสุ่ม การเคลื่อนไหวของฝ่ายตรงข้ามโดยใช้การโยนแบบสุ่ม ตัวแปรสถานะซึ่งเริ่มต้นเป็นรายการว่างในแต่ละรอบและคุณสามารถแก้ไขได้หากคุณต้องการ คุณสามารถละเว้นสิ่งนี้หากคุณไม่ต้องการใช้ โปรแกรมของคุณควรส่งออก'c'ไปให้ความร่วมมือหรือมี'd'ข้อบกพร่อง ตัวอย่างเช่นต่อไปนี้เป็นโปรแกรมที่ให้ความร่วมมือหากฝ่ายตรงข้ามได้ให้ความร่วมมืออย่างน้อย 60% ของเวลาในอดีตหลังจากการใช้การสุ่มแบบสุ่มและ 10 ครั้งแรก: def threshold(my_plays, their_flipped_plays, state): if len(their_flipped_plays) < 10: return 'c' opp_c_freq = their_flipped_plays.count('c')/len(their_flipped_plays) if opp_c_freq > 0.6: return 'c' else: return 'd' …

27
ตัวสร้างรหัสพร้อมอักขระที่ไม่ซ้ำกัน
ท้าทาย งานของคุณคือการเขียนชิ้นส่วนของรหัสที่ส่งออกชิ้นส่วนของรหัสอื่น ที่ต้องรหัสในการส่งออกเปิดเลยรหัสอื่นจนกว่ารหัสสุดท้าย outputs จำนวนเต็ม1 โซ่สิ้นสุดในครั้งแรกที่1ถูกแสดงผล ไม่มีโปรแกรมใดของคุณที่สามารถใช้อักขระร่วมกันได้ (มีข้อยกเว้นหนึ่งข้อในหัวข้อกฎ) ผลงานที่ชนะจะเป็นผลงานที่ต่อเนื่องยาวนานที่สุด tie-breaker จะมีความยาวรวมของรหัสสั้นที่สุด กฎ: คุณสามารถใช้ทั้งฟังก์ชั่นโปรแกรมและตัวอย่าง คุณอาจถือว่าสภาพแวดล้อม REPL ฟังก์ชั่นทั้งหมดจะต้องเขียนในภาษาเดียวกัน สัญลักษณ์ไม่อนุญาตให้ใช้ภาษาอิสระ ซึ่งรวมถึงภาษาอิสระสัญลักษณ์บางส่วนเช่น Headsecks การจัดรูปแบบเอาท์พุทเริ่มต้นอาจเลือกที่จะไม่สนใจในเอาต์พุตของฟังก์ชัน ซึ่งรวมถึงการขึ้นบรรทัดใหม่ans =เป็นต้น คุณอาจใช้อักขระช่องว่าง (รหัส ASCII จุด 32) แต่ให้สังเกตสิ่งต่อไปนี้: คุณสามารถใช้อักขระช่องว่างได้มากเท่าที่คุณต้องการในหนึ่งในฟังก์ชั่น แต่ จำกัด ไว้ที่ 5 สูงสุดในฟังก์ชั่นอื่น ๆ ทั้งหมด คุณไม่สามารถใช้อักขระซ้ำได้หากรหัสจุด 32 ไม่ใช่ที่ว่างในภาษาของคุณ ไม่มีโปรแกรมใดที่สามารถรับอินพุตได้ ห่วงโซ่จะต้องมีอย่างน้อยสองโปรแกรม ตัวอย่าง: abc+cab+bacรหัสเริ่มต้นของคุณคือ ผลนี้: foofoo*123ซึ่งในทางกลับกันผลที่เอาท์พุทdisp(~0) 1นี่คือเชนของ 3 โปรแกรมที่มีความยาวรวมกัน 29 ตัว …

21
ไม้ยืนต้นคำไม่แข็งแรง
หมายเหตุ:มีคำหยาบในคำถามนี้ มีปริศนาที่ซ่อนอยู่ในร่าง Monty Python แบบคลาสสิกนี้(คุณสามารถเตรียมสคริปต์ออนไลน์ได้) วลีต่าง ๆ ถูกอธิบายว่าเป็น 'woody' หรือ 'tinny' และหนึ่งถูกอธิบายว่าเป็น 'PVC' ได้รับวลีตอบสนองกับประเภทของมันตามรายการต่อไปนี้: woody: gone sausage seemly prodding vacuum bound vole caribou intercourse pert thighs botty erogenous zone ocelot wasp yowling tinny: litter bin newspaper antelope recidivist tit simpkins PVC: leap กฎระเบียบ ถ้าใส่เป็นหนึ่งในรายการดังกล่าวข้างต้นส่งออกควรจะwoody, tinnyหรือPVCตาม อินพุตทั้งหมดเป็นตัวพิมพ์เล็ก พฤติกรรมใด ๆ ที่ยอมรับได้สำหรับวลีที่ไม่ได้ระบุไว้ข้างต้น ไบต์ที่น้อยที่สุดในคำตอบชนะ

30
Boustrophedonise
ที่เกี่ยวข้อง แต่แตกต่างกันมาก boustrophedonคือข้อความที่ทุกสายอื่น ๆ ของการเขียนจะพลิกหรือกลับด้วยตัวอักษรกลับรายการ ในความท้าทายนี้เราจะย้อนกลับบรรทัดอื่นทุกบรรทัด แต่ปล่อยให้ตัวละครที่แท้จริงใช้เหมือนเดิม คุณอาจเลือกบรรทัดที่จะย้อนกลับตราบใดที่มันเป็นเส้นอื่น คุณสามารถนำข้อความในรูปแบบที่เหมาะสมตราบใดที่คุณสนับสนุนศูนย์ ASCII ที่พิมพ์ได้หรือมากกว่าบรรทัดแต่ละบรรทัดมีอักขระศูนย์หรือมากกว่า ตัวอย่าง: ["Here are some lines","of text for you","to make a","boustrophedon"]: ["Here are some lines","uoy rof txet fo","to make a","nodehportsuob"] or ["senil emos era ereH","of text for you","a ekam ot","boustrophedon"] ["My boustrophedon"]: ["My boustrophedon"] or ["nodehportsuob yM"] []: [] ["Some …

24
วาดโดมิโนให้ฉัน
ท้าทาย ให้ตัวเลขสองหลักเป็นอินพุต 0-9 ให้ส่งออกโดมิโน (จากชุดโดมิโนสองครั้งที่เก้า ) ด้วยจำนวนจุด (จุด) เหล่านี้บนใบหน้าทั้งสอง ใบหน้าทั้งสิบที่เป็นไปได้มีลักษณะดังนี้ (คั่นด้วยท่อ): | | o| o|o o|o o|o o o|o o o|o o o|o o o | o | | o | | o | | o |o o|o o o | |o |o |o o|o o|o o o|o o o|o …

2
ฉันจะขอเงินจากธนาคารได้อย่างไร
ฉันต้องไปที่ธนาคารและถอนเงิน ฉันต้องถอนเงิน $ 30, $ 22 เพื่อจ่ายค่าเพื่อนร่วมห้องสำหรับอินเทอร์เน็ตและ $ 8 สำหรับค่าซักรีด เนื่องจากสิ่งเหล่านี้ไม่สามารถเปลี่ยนแปลงได้ฉันจึงต้อง $ 30 ของฉันแบ่งออกเป็นสองพาร์ติชันของสองขนาด นั่นหมายความว่าเมื่อผู้เบิกจ่ายถามฉันว่าฉันต้องการเงิน 30 เหรียญฉันจะต้องทำคำขอ ฉันสามารถบอกพวกเขาว่าฉันต้องการมันในยี่สิบ, fiver และห้าคน แต่ฉันต้องการที่จะทำให้คำขอของฉันง่ายที่สุดเท่าที่จะทำได้เพื่อหลีกเลี่ยงการทำซ้ำตัวเอง เพื่อให้การร้องขอของฉันง่ายขึ้นฉันสามารถขอให้เงินสดของฉันมียี่สิบคนและอย่างน้อย 2 คนเพราะ 8 มีนัยโดยนัย แต่ก็ดีกว่า แต่ฉันก็สามารถขอให้หนึ่งในตั๋วเงินที่ฉันได้รับเป็นเงินดอลลาร์หนึ่งใบ (ถ้าคุณ ไม่เชื่อเรื่องนี้แค่ลองทำเงิน 29 ดอลลาร์โดยไม่ทำ 8) นั่นคือทั้งหมดที่ดีและสวยงาม แต่ฉันต้องทำการคำนวณนี้ทุกครั้งที่ฉันไปที่ธนาคารดังนั้นฉันคิดว่าฉันจะเขียนโปรแกรมเพื่อทำสิ่งนี้ (ให้คุณเขียนโปรแกรมเพื่อทำสิ่งนี้ให้ฉัน) โปรแกรมหรือฟังก์ชั่นของคุณควรบันทึกรายการจำนวนเต็มซึ่งเป็นตัวแทนของการชำระเงินทั้งหมดที่ฉันต้องทำและชุดจำนวนเต็มที่แสดงถึงการเรียกเก็บเงินที่มีอยู่ในธนาคารและคุณจะต้องส่งออกรายการที่เล็กที่สุด ที่มีรายการของสกุลเงินที่สามารถแบ่งออกเป็นรายการชำระเงินได้อย่างหมดจด กฎพิเศษ คุณอาจสันนิษฐานว่ารายการค่าเงินจะมี1หรือคุณอาจเพิ่มเข้าไปในแต่ละรายการด้วยตนเอง อินพุตบางตัวจะมีวิธีแก้ปัญหาขั้นต่ำหลายอย่าง ในกรณีเหล่านี้คุณสามารถส่งออกอย่างใดอย่างหนึ่ง นี่คือcode-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์โดยไบต์น้อยจะดีขึ้น กรณีทดสอบ Payments, denominations -> requests {22,8} {1,2,5,10,20,50} …
35 code-golf  math 

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