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

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

25
ค้นหาเลขฐานสองขนาด 1 เบาบางต่อไป
จำนวนเต็มบวก N คือK -sparse หากมีอย่างน้อยK 0s ระหว่าง 1s สองใด ๆ ที่ต่อเนื่องกันในการแทนค่าฐานสอง ดังนั้นหมายเลข 1010101 นั้นคือ 1-sparse แต่ไม่ใช่ 101101 งานของคุณคือค้นหาหมายเลข 1 เบาบางถัดไปสำหรับหมายเลขอินพุตที่กำหนด ตัวอย่างเช่นถ้าอินพุทเป็น 12 ( 0b1100) เอาต์พุตควรเป็น 16 ( 0b10000) และถ้าอินพุทเป็น 18 ( 0b10010) เอาต์พุตควรเป็น 20 ( 0b10100) โปรแกรมหรือฟังก์ชันที่เล็กที่สุด (เป็นไบต์) ชนะ! ช่องโหว่มาตรฐานไม่อนุญาต

7
มั่นใจอุปมา
ไม่กี่คนที่นี่อาจเป็นผู้อ่าน XKCD ตัวยง ดังนั้นฉันคิดว่าฉันขอท้าให้พวกคุณทำในสิ่งที่เมแกนสามารถทำได้อย่างง่ายดาย: สร้างสคริปต์ที่สร้างอุปมาเรื่องความมั่นใจนับพันเกี่ยวกับสิ่งที่คอมพิวเตอร์ไม่สามารถทำได้ สคริปต์ของคุณ สามารถเขียนได้ทุกภาษา จะต้องมีรหัส - golfed จะต้องป้อนข้อมูล ( stdinหรือเทียบเท่าภาษาของคุณ) กับจำนวนของคำอุปมาที่จะคายออก (คุณสามารถถือว่าสิ่งนี้จะไม่เกินMAX_INTหรือเทียบเท่า) จะส่งออกคำอุปมาที่สร้างแบบสุ่มจำนวนหนึ่ง คำอุปมามีดังนี้ เริ่มต้นด้วย 'Computers will never ' ถัดไปซึ่งเป็นหนึ่งใน 16 คำกริยาภาษาอังกฤษที่ไม่ซ้ำกันซึ่งคุณสามารถเลือกได้อย่างอิสระเพื่อเพิ่มประสิทธิภาพของโปรแกรมของคุณ แต่ต้องรวมถึงการและcode-golfunderstand ถัดไปซึ่งเป็นหนึ่งใน 16 คำนามภาษาอังกฤษที่ไม่ซ้ำกันอีกครั้งซึ่งคุณสามารถเลือกได้อย่างอิสระเพื่อเพิ่มประสิทธิภาพของโปรแกรมของคุณ แต่ต้องรวมถึงการและa saladan octopus ถัดไปซึ่งเป็นหนึ่งใน 16 ข้อภาษาอังกฤษที่ไม่ซ้ำกันซึ่งคุณสามารถเลือกได้อย่างอิสระเพื่อเพิ่มประสิทธิภาพของโปรแกรมของคุณ แต่ต้องรวมถึงการและfor funafter lunch ลงท้ายด้วยอักขระขึ้นบรรทัดใหม่ ( \nหรือเทียบเท่า) ตัวอย่างเช่นถ้าอินพุตเป็น2เอาต์พุตที่ถูกต้องจะเป็น Computers will never code-golf a salad for lunch …

24
เรียงลำดับอย่างรวดเร็ว!
ดี ... มี 59 คำถาม (ตอนนี้ 60) ที่ติดแท็กการเรียงลำดับแต่ไม่มีคำตอบง่าย ๆ ที่จะต้องได้รับการแก้ไข สำหรับผู้ที่ไม่คุ้นเคยกับquicksortนี่คือรายละเอียดความเอื้อเฟื้อของ Wikipedia- เลือกองค์ประกอบที่เรียกว่าpivotจากอาร์เรย์ จัดลำดับอาร์เรย์ใหม่เพื่อให้องค์ประกอบทั้งหมดที่มีค่าน้อยกว่าเดือยมาก่อนหน้าเดือยในขณะที่องค์ประกอบทั้งหมดที่มีค่ามากกว่าเดือยมาหลังจากนั้น (ค่าเท่ากันสามารถไปทางใดทางหนึ่ง) หลังจากการแบ่งพาร์ติชันนี้เดือยจะอยู่ในตำแหน่งสุดท้าย สิ่งนี้เรียกว่าการดำเนินการพาร์ติชัน ใช้ขั้นตอนข้างต้นซ้ำกับองค์ประกอบย่อยที่มีค่าน้อยกว่าและแยกย่อยกับองค์ประกอบย่อยที่มีค่ามากกว่า กฎระเบียบ กฎง่าย ๆ : ใช้ quicksort เชิงตัวเลขในภาษาการเขียนโปรแกรมที่คุณเลือก เดือยควรจะเลือกโดยการสุ่มหรือกับค่ามัธยฐานของสาม (องค์ประกอบที่ 1, สุดท้ายและกลาง) โปรแกรมของคุณอาจเป็นโปรแกรมหรือฟังก์ชั่นที่สมบูรณ์ คุณสามารถรับอินพุตโดยใช้ STDIN, บรรทัดคำสั่งหรือพารามิเตอร์ฟังก์ชัน หากใช้อินพุตสตริงอินพุตจะถูกคั่นด้วยช่องว่าง อินพุตอาจมีค่าทศนิยมและค่าลบ อย่างไรก็ตามจะไม่มีการซ้ำซ้อน คุณอาจส่งออกไปยัง STDOUT หรือโดยกลับมาจากฟังก์ชั่น ไม่มีฟังก์ชั่นการเรียงลำดับ (หรือการเรียงลำดับที่เกี่ยวข้อง) ในตัวหรือช่องโหว่มาตรฐาน รายการอาจมีความยาวโดยพลการ โบนัส # 1: ในรายการหรือรายการย่อยที่มีความยาว <= 5 ให้ใช้การเรียงลำดับการแทรกเพื่อเร่งความเร็วให้เร็วขึ้น …

23
สลับตัวพิมพ์ใหญ่เป็นสองสตริง
your shift key is broken. wheNever you type two lines, the cApitaL LetteRs in them get swappeD. you must write a program to fiX THIS! ลักษณะ อินพุตเป็นสองสตริงs1และs2มีความยาวเท่ากัน แต่ละรายการจะมี ASCII ที่พิมพ์ได้เท่านั้นและมีความยาวอย่างน้อยหนึ่งตัว คุณสามารถป้อนสิ่งเหล่านี้เป็นสองสายอาร์เรย์ของสองสายหรือสายเดียวกับs1และs2คั่นด้วยแท็บหรือขึ้นบรรทัดใหม่ ผลลัพธ์มีดังต่อไปนี้: สำหรับตัวละครแต่ละตัวcในs1: หากตัวละครไม่ใช่ตัวอักษรให้เอาออกมันไม่เปลี่ยนแปลง มิฉะนั้นถ้าcเป็นจดหมาย: ค้นหาตัวละครจับคู่ (หนึ่งที่ดัชนีเดียวกัน) s2ใน ถ้าเป็นอักษรตัวcใหญ่ให้พิมพ์ผลลัพธ์เป็นตัวพิมพ์ใหญ่ หากเป็นตัวอักษรตัวเล็กให้พิมพ์เป็นตัวcพิมพ์เล็ก มิฉะนั้นเอาต์พุตจะcไม่เปลี่ยนแปลง จากนั้นทำสิ่งเดียวกันยกเว้นด้วยs1และs2สลับ เป็นหลักในทุกตัวอักษรs1ที่ตัวละครที่ตรงกันในs2เป็นเมืองหลวงควรเป็นตัวพิมพ์ใหญ่และตัวอักษรทั้งหมดในs1ด้วยตัวอักษรตัวพิมพ์เล็กที่ดัชนีเดียวกันในs2ควรจะเป็นตัวพิมพ์เล็ก (และในทางกลับกัน) กรณีทดสอบ การป้อนข้อมูล: ABCDEfghijKlMnOpqrstuvwxyz aaaaaaaaaaaaaaaa---------- เอาท์พุท: abcdefghijklmnopqrstuvwxyz …
27 code-golf  string 

6
Swipe Type Converter
การปฏิวัติต่อไปในการพิมพ์บนแล็ปท็อปได้รับการปล่อยตัวในแรกของเดือนเมษายน 2014 โดย SwiftKey อย่างไรก็ตามฉันต้องการเป็นคนแรกที่เขียน nano clone ที่เป็น swiping แต่เนื่องจากฉันไม่สามารถหา swipe-text ที่ดีในไลบรารี่ของ real-text ได้และฉันไม่สามารถรอพวกเขาได้ฉันถามที่นี่ งาน เขียนโปรแกรมที่ใช้ในการกวาดนิ้ว - ข้อความและผลลัพธ์เทียบเท่าข้อความจริง ตัวอย่าง: Input: hgrerhjklo Output: hello เมื่อผู้ใช้ทำ: ตัวอย่างอื่น ๆ : Input: wertyuioiuytrtjklkjhgfd Output: world Input: poiuytrtyuioiugrewsasdfgbhnmkijnbg Output: programming Input: poiuygfdzxcvhjklkjhgres Output: puzzles Input: cvhjioiugfde Output: code Input: ghiolkjhgf Output: golf กฎระเบียบ โปรแกรมจะใช้คำว่า swiped …

30
แปลงชื่อส่วนหัว C เป็นชื่อส่วนหัว C ++
ในไลบรารีมาตรฐาน C ชื่อส่วนหัวลงท้ายด้วย.hคำต่อท้าย: stdio.h ใน C ++ ชื่อส่วนหัวเหล่านั้นจะมีอยู่ในรูปแบบอื่นโดยมีcคำนำหน้าแทน: cstdio เขียนฟังก์ชั่นที่แปลงรูปแบบแรกเป็นรูปแบบที่สอง คุณสามารถทำการแปลงในสถานที่หรือปล่อยให้สตริงเดิมไม่เปลี่ยนแปลงและส่งคืนสตริงใหม่ ไม่ว่าคุณจะรู้สึกเป็นธรรมชาติในภาษาที่คุณเลือก รหัสจะต้องรวบรวม / ตีความโดยไม่มีข้อผิดพลาด คำเตือนคอมไพเลอร์เป็นที่ยอมรับ นี่คือโซลูชัน C พื้นฐานของคุณ มันมี70 ตัวอักษรและสร้างคำเตือนเกี่ยวกับstrlen: void f(char*h){int i=strlen(h);h[--i]=0;while(--i)h[i]=h[i-1];*h='c';} ทางออกที่สั้นที่สุด (วัดเป็นจำนวนตัวอักษร) ชนะ อัปเดต:หากภาษาที่คุณเลือกไม่รองรับฟังก์ชั่นโปรแกรมทั้งหมดก็สามารถใช้ได้เช่นกัน อัปเดต:ตามที่ FUZxxl แนะนำนี่คือรายการที่สมบูรณ์ของไฟล์ส่วนหัวในไลบรารีมาตรฐาน C: assert.h ctype.h errno.h float.h limits.h locale.h math.h setjmp.h signal.h stdarg.h stddef.h stdio.h stdlib.h string.h time.h โดยเฉพาะไม่มีชื่อส่วนหัวที่มีจุดหลายจุด

9
แปลงภาษาอังกฤษเป็นตัวเลข [ปิด]
คำอธิบายสั้น ๆ และหวานของความท้าทาย: จากความคิดของคำถามอื่น ๆ ในเว็บไซต์นี้ความท้าทายของคุณคือการเขียนโค้ดที่สร้างสรรค์ที่สุดในโปรแกรมใด ๆ ที่ใช้เป็นตัวเลขที่เขียนด้วยภาษาอังกฤษและแปลงเป็นรูปแบบจำนวนเต็ม ข้อมูลจำเพาะแห้งยาวและทั่วถึงจริงๆ: โปรแกรมของคุณจะได้รับเมื่อป้อนจำนวนเต็มเป็นตัวพิมพ์เล็กระหว่างzeroและnine hundred ninety-nine thousand nine hundred ninety-nineรวม มันจะต้องส่งออกเฉพาะรูปแบบจำนวนเต็มของตัวเลขระหว่าง0และ999999และไม่มีอะไรอื่น (ไม่มีช่องว่าง) การป้อนข้อมูลจะไม่ได้มี,หรือandเป็นในหรือone thousand, two hundredfive hundred and thirty-two เมื่อสถานที่หลายสิบแห่งมีทั้งที่ไม่ใช่ศูนย์และที่มากกว่า1นั้นจะถูกคั่นด้วยอักขระ HYPHEN-MINUS -แทนที่จะเว้นวรรค เหมือนกันสำหรับหนึ่งหมื่นแห่ง ตัวอย่างเช่นsix hundred fifty-four thousand three hundred twenty-one. โปรแกรมอาจมีพฤติกรรมที่ไม่ได้กำหนดสำหรับอินพุตอื่น ๆ ตัวอย่างของโปรแกรมที่มีความประพฤติดี: zero-> 0 fifteen-> 15 ninety-> 90 seven hundred four-> 704 sixty-nine …

18
เรียงลำดับ Hello World สั้นที่สุด
เขียนโปรแกรมที่ไม่มีการป้อนข้อมูลและพิมพ์Hello, World!ไปยัง stdout หรือภาษาอื่นที่ใกล้เคียงที่สุดของคุณ สิ่งที่จับได้คือแต่ละบรรทัดในโปรแกรมของคุณจะต้องมีอักขระ ASCII ที่พิมพ์ได้เท่านั้นและต้องเรียงตามลำดับคำโดยย่อ นี่คือทั้งหมด 95 ตัวอักษร ASCII ที่พิมพ์ได้ตามลำดับ: !"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~ ตัวอย่างเช่นบรรทัด!!A0~จะไม่ถูกต้องเพราะAและ0ไม่เรียบร้อย บรรทัด!!0A~จะถูกต้อง แต่ละบรรทัดในโปรแกรมของคุณอาจมีความยาวเท่าใดก็ได้และอาจมีจำนวนบรรทัดเท่าใดก็ได้ บรรทัดว่างถูกพิจารณาว่าเรียงลำดับแล้ว ขึ้นบรรทัดใหม่ในโปรแกรมของคุณจะต้องเหมือนกัน (ไม่มั่วสุม\nและ\r\n) ห้ามใช้แท็บและอักขระ ASCII ที่ไม่สามารถพิมพ์ได้อื่น ๆ เนื่องจากความต้องการที่นิยมสภาพชนะได้รับการเปลี่ยนรอบ: การยื่นด้วยน้อยที่สุดเส้นชัยชนะ Tiebreaker ไปที่โปรแกรมที่สั้นที่สุด (ขึ้นบรรทัดใหม่นับเป็นอักขระเดียว) เฉพาะHello, World!และขึ้นบรรทัดใหม่ต่อท้ายที่เป็นตัวเลือกเท่านั้นที่ควรเป็นเอาต์พุต โปรดทราบว่าHQ9 +hello, worldไม่ถูกต้องเพราะมันเอาท์พุท ฉันอาจห้ามภาษาที่คล้ายกับ HQ9 + ที่มีอักขระหนึ่งตัว "Hello, World!" คำสั่งเนื่องจากเรื่องไม่สำคัญของพวกเขา คำแนะนำ: นี่เป็นไปได้อย่างแน่นอนในUnaryและLenguageแม้ว่าจะไม่รัดกุมก็ตาม

8
Pi ยังคงผิดปกติ [ปิด]
พี่ผิด วิธีการทั่วไปในการคำนวณ pi คือการโยน "ปาเป้า" ลงในกล่อง 1x1 และดูว่าที่ดินใดในวงกลมหน่วยเทียบกับโยนทั้งหมด: loop x = rand() y = rand() if(sqrt(x*x + y*y) <= 1) n++ t++ pi = 4.0*(n/t) เขียนโปรแกรมที่ดูเหมือนว่าควรคำนวณ pi อย่างถูกต้อง (โดยใช้วิธีนี้หรือวิธีทั่วไปอื่น ๆ ในการคำนวณ pi) แต่คำนวณtau (tau = 2 * pi = 6.283185307179586 ... ) แทน รหัสของคุณจะต้องผลิตทศนิยมอย่างน้อย 6 ตำแหน่งแรก: 6.283185 ผู้ชนะจะครองตำแหน่งที่ 6 มิถุนายน …

11
คำนวณ n% 12
คำนวณnโมดูโล่12สำหรับจำนวนเต็ม 32 บิตที่ไม่ได้ลงนาม กฎระเบียบ: ต้องใช้งานได้nระหว่าง 0 ถึง 23 หมายเลขอื่น ๆ เป็นตัวเลือก เพียง แต่ต้องใช้ใด ๆ ของผู้ประกอบการ+-*, ~&^|หรือ<<, >>ตามที่กำหนดโดยทั่วไปบน 32 uints บิต อาจใช้จำนวน uints คงที่โดยพลการ ห้ามใช้พอยน์เตอร์รูปแบบใด ๆ รวมถึงอาร์เรย์หรือifข้อความใด ๆรวมถึงสิ่งต่าง ๆ ที่คอมไพล์หากข้อความเช่นตัวดำเนินการแบบไตรภาคหรือตัวดำเนินการ "มากกว่า" คะแนน: ผู้ประกอบการ+ -และผู้ประกอบการบิต~ & ^ | << >>(ไม่และแฮคเกอร์, OR, บิตกะ) ให้คะแนนของ1, ให้คะแนนของ*2 คะแนนรวมต่ำสุดชนะ

8
สวัสดีชาวโลก! โดยไม่มีการซ้ำซ้อน
ในภาษาการเขียนโปรแกรมใด ๆ ที่มีอยู่ก่อนที่จะถามคำถามนี้ให้เขียนโปรแกรม (ไม่ใช่ฟังก์ชั่น) ที่ให้ผลลัพธ์อักขระHello world!ตามด้วยการขึ้นบรรทัดใหม่ โปรแกรมของคุณ: ไม่ควรใช้อักขระมากกว่าหนึ่งครั้ง (รวมถึงช่องว่าง) ควรใช้อักขระ ASCII เท่านั้น ไม่ควรใช้ไลบรารีที่มีอยู่แล้ว ไม่ควรรับอินพุต (ผู้ใช้ไฟล์ชื่อไฟล์ตัวแปรระบบอินเทอร์เน็ตอะไรก็ได้) ไม่ควรส่งออกอย่างอื่น ผู้ชนะคือผู้ที่ได้คะแนนมากที่สุดหลังจาก 14 วันและปฏิบัติตามกฎทั้งหก กฎข้อที่หกคือคุณไม่สามารถใช้ H9 +, HQ9 +, HQ9 + B, HQ9 ++, HQ9 + 2D, Hello, Hello +, Hello ++, Hexish, CHIQRSX9 + หรือ Fugue นอกจากนี้คำตอบทั้งหมดที่ต้องมีการใช้งานที่ใหม่กว่าความท้าทายนี้จะต้องทำเครื่องหมายว่าไม่ใช่การแข่งขัน ข้อสงวนสิทธิ์:คำถามนี้ถูกโพสต์พร้อมด้วยข้อสันนิษฐานที่ว่าสวัสดีชาวโลก! ด้วยการทำซ้ำอย่าง จำกัดไม่ก่อให้เกิดความเสียหายต่อคอมพิวเตอร์หรือสมองของคุณในกระบวนการของการหาคำตอบ

1
ค้นหาจังหวะในไฟล์ MP3
ในความท้าทายนี้งานของคุณคือการบันทึกอย่างง่าย ๆ ในรูปแบบ mp3 และค้นหาการชดเชยเวลาของการเต้นในไฟล์ ตัวอย่างการบันทึกสองตัวอย่างอยู่ที่นี่: https://dl.dropboxusercontent.com/u/24197429/beats.mp3 https://dl.dropboxusercontent.com/u/24197429/beats2.mp3 นี่คือการบันทึกครั้งที่สามที่มีเสียงรบกวนมากกว่าสองครั้งก่อนหน้า: https://dl.dropboxusercontent.com/u/24197429/noisy-beats.mp3 ตัวอย่างเช่นการบันทึกครั้งแรกมีความยาว 65 วินาทีและมีการบันทึก (ยกเว้นว่าฉันผิด!) 76 ครั้ง งานของคุณคือการออกแบบโปรแกรมที่ใช้ไฟล์ mp3 เป็นอินพุทและเอาท์พุทตามลำดับของเวลาออฟเซ็ตในหน่วยมิลลิวินาทีของการเต้นในไฟล์ จังหวะถูกกำหนดให้เกิดขึ้นแน่นอนเมื่อมือกีต้าร์เล่น plucks หนึ่งหรือมากกว่าหนึ่งสาย โซลูชันของคุณต้อง: ทำงานกับไฟล์ mp3 ใด ๆ ที่มี "ความซับซ้อน" ที่คล้ายกัน มันสามารถล้มเหลวในการบันทึกที่มีเสียงดังหรือเล่นท่วงทำนองที่รวดเร็ว - ฉันไม่สนใจ มีความแม่นยำพอสมควร ความอดทนคือ +/- 50 ms ดังนั้นหากจังหวะการเต้นเกิดขึ้นที่ 1500 ms และวิธีการแก้ปัญหาของคุณรายงานที่ 1,400 นั่นเป็นสิ่งที่ยอมรับไม่ได้ ใช้ซอฟต์แวร์ฟรีเท่านั้น อนุญาตให้ใช้ ffmpeg ได้เช่นเดียวกับการใช้ซอฟต์แวร์ของบุคคลที่สามที่มีให้บริการฟรีสำหรับภาษาที่คุณเลือก เกณฑ์การชนะคือความสามารถในการตรวจจับการเต้นได้สำเร็จแม้จะมีเสียงดังในไฟล์ที่ให้ ในกรณีที่เสมอกันทางออกที่สั้นที่สุดจะชนะ …
27 code-golf  music 

17
จำลองกฎ 110
Rule 110 เป็นหุ่นยนต์เซลลูล่าร์ที่มีคุณสมบัติน่าสนใจ เป้าหมายของคุณคือการจำลองกฎ 110 ในตัวละครน้อยที่สุด สำหรับผู้ที่ไม่รู้กฎ 110 ถูกจำลองแบบทีละบรรทัดในกริด แต่ละตารางในบรรทัดของตารางจะมองไปที่ช่องสี่เหลี่ยมด้านบนด้านบนซ้ายและด้านบนขวาเพื่อกำหนดว่าควรจะใช้เซลล์ใด current pattern 111 110 101 100 011 010 001 000 new cell 0 1 1 0 1 1 1 0 อินพุต:ตัวเลขตั้งแต่ 0 ถึง 39 แสดงถึงแถวบนสุดของสี่เหลี่ยมจัตุรัสที่ n ในรูปแบบที่เหมาะสม (สตริงที่คั่นด้วยเครื่องหมายจุลภาค, รายการ, อาร์กิวเมนต์ของฟังก์ชัน) เพื่อรองรับภาษาที่มีการจัดทำดัชนี 1 หมายเลขอาจมีการจัดทำดัชนี 1 และช่วงจาก 1 ถึง 40 อินพุตตัวอย่าง: 38,39 …


15
จำนวนคำตอบและความคิดเห็น
เขียนซอฟต์แวร์ที่พิมพ์บน stdout จำนวนคำตอบและจำนวนความคิดเห็น (มองเห็นและยุบคำถามและคำตอบ) ของคำถาม / หน้านี้ สคริปต์ของคุณจะต้องทำงานโดยปิดหน้านี้เมื่อเริ่มต้น ผลลัพธ์ตัวอย่างที่คาดไว้: A12C40 ที่ A หมายถึงคำตอบและ C สำหรับความคิดเห็น
27 code-golf 

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