คำถามติดแท็ก hashing

ความท้าทายที่เกี่ยวข้องกับการสรุปข้อมูลจำนวนมากในจำนวนเดียวที่น้อยกว่ามาก

24
ฟังก์ชันแฮชทวีตที่ท้าทาย
ในการท้าทายรหัสนี้คุณจะเขียนฟังก์ชันแฮชใน 140 ไบต์1หรือน้อยกว่าของรหัสที่มา ฟังก์ชัน hash ต้องใช้สตริง ASCII เป็นอินพุตและส่งคืนจำนวนเต็มที่ไม่ได้ลงชื่อ 24 บิต ([0, 2 24 -1]) เป็นเอาต์พุต ฟังก์ชันแฮชของคุณจะได้รับการประเมินสำหรับทุกคำพูดในเรื่องนี้ขนาดใหญ่อังกฤษพจนานุกรมภาษาอังกฤษ 2 คะแนนของคุณคือจำนวนคำที่ใช้ค่าแฮชกับคำอื่น (การชนกัน) คะแนนต่ำสุดที่ชนะการเชื่อมโยงโดยโปสเตอร์แรก กรณีทดสอบ ก่อนส่งโปรดทดสอบสคริปต์การให้คะแนนของคุณจากอินพุตต่อไปนี้: duplicate duplicate duplicate duplicate ถ้ามันให้คะแนนใด ๆ นอกเหนือจาก 4 มันเป็นรถ ชี้แจงกฎ: ฟังก์ชันแฮชของคุณจะต้องทำงานในสายเดียวไม่ใช่ทั้งอาเรย์ นอกจากนี้ฟังก์ชันแฮชของคุณอาจไม่ทำ I / O อื่นใดนอกจากสตริงอินพุตและเอาต์พุตจำนวนเต็ม ฟังก์ชั่นแฮชในตัวหรือฟังก์ชั่นที่คล้ายกัน (เช่นการเข้ารหัสไปยังไบต์ช่วงชิง) ฟังก์ชันแฮชของคุณจะต้องกำหนดไว้ล่วงหน้า ตรงกันข้ามกับการแข่งขันอื่น ๆ ส่วนใหญ่ปรับให้เหมาะสมโดยเฉพาะสำหรับการให้คะแนนที่ได้รับอนุญาต 1ฉันทราบว่า Twitter จำกัด ตัวอักขระแทนที่จะเป็นไบต์ แต่เพื่อความง่ายเราจะใช้จำนวนไบต์เป็นข้อ จำกัด …

20
การชนของแฮช:“ ไม่” หมายถึง“ ใช่”
กอล์ฟรหัสนี้ได้แรงบันดาลใจจากบทความ WTF รายวันล่าสุดที่คุณไม่สามารถจัดการได้จริง! ซึ่งมีการเปรียบเทียบสตริงที่เขียนเป็น: String yes = "YES"; if ((delay.hashCode()) == yes.hashCode()) ลองนึกภาพปัญหามันก็จะทำให้เกิดให้กับทีมของสตีฟถ้าของ Java วิธีการที่เพิ่งเกิดขึ้นจะดำเนินการในลักษณะที่ว่าString.hashCode "YES".hashCode() == "NO".hashCode()ดังนั้นความท้าทายที่ฉันเสนอที่นี่คือ: เขียนตัวอักษรไม่กี่เท่าที่เป็นไปได้, ฟังก์ชั่นแฮช (ฉันจะเรียกมันว่า h) มีพารามิเตอร์สตริงและจำนวนเต็มค่าตอบแทนดังกล่าวว่า จะมีค่าเท่ากับh("YES")h("NO") ของหลักสูตรนี้จะเป็นที่น่ารำคาญจะทำอย่างไรกับฟังก์ชั่นเช่นdef h(s): return 0ซึ่งจะทำให้การปะทะกันแฮสำหรับทุกสตริง เพื่อให้การท้าทายนี้น่าสนใจยิ่งขึ้นคุณต้องปฏิบัติตามกฎเพิ่มเติมต่อไปนี้: ในบรรดาสตริงอื่น ๆ ที่เป็นไปได้ 18 277 อันประกอบด้วยตัวอักษร ASCII ตัวพิมพ์ใหญ่สามตัวหรือน้อยกว่า^[A-Z]{0,3}$นั้นจะต้องไม่มีการชนกันของแฮช การชี้แจง (ชี้ให้เห็นโดย Heiko Oberdiek): สตริงอินพุตอาจมีอักขระอื่นที่ไม่ใช่A-Zและรหัสของคุณจะต้องสามารถแฮชสตริงโดยพลการ (อย่างไรก็ตามคุณอาจสมมติว่าอินพุตเป็นสตริงอักขระแทนที่จะเป็นตัวชี้โมฆะหรือวัตถุของชนิดข้อมูลอื่น) อย่างไรก็ตามมันไม่สำคัญว่าค่าส่งคืนจะเป็นสตริงที่ไม่ตรงกัน^[A-Z]{0,3}$ตราบใดที่ มันเป็นจำนวนเต็ม นอกจากนี้เพื่อทำให้งงงวยความตั้งใจของฟังก์ชั่นนี้: รหัสของคุณจะต้องไม่มีตัวอักษร 'Y', 'E', 'S', …

19
พายของฉันถูกแบ่งออกเป็นสองส่วนแล้ว?
เขียนโปรแกรมหรือฟังก์ชั่นที่ใช้ในรายการจำนวนเต็มบวกที่ไม่มีข้อ จำกัด คุณอาจจะถือว่าเป็นการป้อนข้อมูลในรูปแบบที่สะดวกที่เหมาะสมเช่นหรือ"1 2 3 4"[1, 2, 3, 4] ตัวเลขในรายการอินพุตแสดงถึงชิ้นส่วนของแผนภูมิวงกลมเต็มโดยที่ขนาดแต่ละส่วนเป็นสัดส่วนกับหมายเลขที่สอดคล้องกันและชิ้นส่วนทั้งหมดจะถูกจัดเรียงรอบแผนภูมิตามลำดับที่กำหนด ตัวอย่างเช่นพายสำหรับ1 2 3 4คือ: คำถามที่รหัสของคุณต้องตอบคือ: แผนภูมิวงกลมมีการแบ่งออกเป็นสองส่วนหรือไม่? นั่นคือมีเส้นตรงที่สมบูรณ์แบบจากด้านหนึ่งของวงกลมไปยังอีกด้านหนึ่งหรือไม่โดยแยกออกเป็นสองส่วนหรือไม่? คุณจำเป็นต้องส่งออกtruthyค่าถ้ามีอย่างน้อยหนึ่งเส้นแบ่งครึ่งและเอาท์พุทfalsyค่าถ้ามีผู้ใด ใน1 2 3 4ตัวอย่างมีการแบ่งระหว่าง4 1และ2 3ดังนั้นผลลัพธ์จะเป็นความจริง แต่สำหรับอินพุท1 2 3 4 5นั้นไม่มีไบเซอร์เรเตอร์ดังนั้นเอาต์พุตจะเป็นเท็จ: ตัวอย่างเพิ่มเติม การจัดเรียงตัวเลขต่างกันอาจลบเส้นแบ่งครึ่ง เช่น2 1 3 4→ falsy: หากมีเพียงหนึ่งหมายเลขเท่านั้นในรายการอินพุตวงกลมจะไม่ถูกแบ่งออก เช่น10→ falsy: อาจมีหลายเส้นแบ่งครึ่ง ตราบใดที่มีมากกว่าศูนย์ผลลัพธ์ก็จะเป็นจริง เช่น6 6 12 12 12 11 1 12→ความจริง: (มี …
43 code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

9
ช่วยฉันจำสัตว์ประหลาดของฉัน
พื้นหลัง NetHack เป็นเกมคอมพิวเตอร์ตั้งแต่ปี 1987 ก่อนที่จะมีการใช้กราฟิกในเกมคอมพิวเตอร์ มีมอนสเตอร์จำนวนมากในเกมและอาจจำเป็นต้องมีจำนวนมากบนหน้าจอในครั้งเดียวดังนั้นมอนสเตอร์จะถูกวาดในวิธีที่น้อยมาก: มอนสเตอร์จะถูกวาดเป็นอักขระ ASCII บนหน้าจอ นอกจากนี้จะมีการจำนวนมากของมอนสเตอร์ที่มีจำนวนมากของประเภทของมอนสเตอร์ มันเป็นสิ่งสำคัญที่จะรู้ว่าสิ่งที่เป็น; คุณต้องตอบโต้ต่าง ๆ เมื่อเห็นลูกแมวและเห็นมังกร ดังนั้น ASCII ส่วนใหญ่จะใช้เพื่อเป็นตัวแทนของสัตว์ประหลาด ตัวอย่างเช่นลูกแมวเป็นและมังกรสีแดงf Dนี่หมายความว่ามันจะมีประโยชน์มากถ้ารู้ว่าสัตว์ประหลาดที่ให้มามีหน้าตาเป็นอย่างไรเพราะมันจะช่วยให้คุณจดจำได้ถ้าคุณเจอมันในภายหลังในเกม (โปรดทราบว่ามีมอนสเตอร์หลายประเภทมากกว่าที่มีตัวอักษร ASCII ดังนั้นบางตัวจึงใช้ร่วมกัน; มังกรแดงและมังกรสีน้ำเงินมีทั้งคู่D) งาน โปรแกรมของคุณจะต้องใช้ชื่อของมอนสเตอร์ NetHack เป็นอินพุตและสร้างอักขระ ASCII ที่แสดงถึงมันภายในเกมเป็นเอาท์พุท โปรแกรมได้รับอนุญาตให้สมมติว่าการป้อนข้อมูลในความเป็นจริงแล้วเป็นชื่อของมอนสเตอร์ NetHack; มันอาจหากต้องการความผิดพลาดให้ผลลัพธ์ที่ไร้ความหมาย ฯลฯ หากอินพุตไม่ถูกต้อง Stack Snippet ต่อไปนี้เป็นอ็อบเจ็กต์ JSON ที่ให้การแม็พแบบเต็มของอินพุตที่เป็นไปได้กับเอาต์พุตที่สอดคล้องกัน: แสดงตัวอย่างโค้ด { "Aleax": "A", "Angel": "A", "Arch Priest": "@", "Archon": "A", …

18
26 นักร้อง 26 ตัวอักษร
ตามที่RollingStoneด้านล่างเป็นนักร้องที่ยิ่งใหญ่ที่สุดตลอดกาล 26 คน: Aretha Franklin Al Green Ray Charles Robert Plant Elvis Presley Mick Jagger Sam Cooke Tina Turner John Lennon Freddie Mercury Marvin Gaye Bob Marley Bob Dylan Smokey Robinson Otis Redding Johnny Cash Stevie Wonder Etta James James Brown David Bowie Paul McCartney Van Morrison Little Richard Michael …

23
การเข้ารหัสแฮชกอล์ฟ
การประกวดครั้งนี้จบแล้ว เนื่องจากลักษณะของความท้าทายตำรวจและโจรความท้าทายตำรวจกลายเป็นเรื่องง่ายขึ้นมากเมื่อความสนใจในความท้าทายโจรที่เกี่ยวข้องได้ลดลง ดังนั้นในขณะที่คุณยังสามารถโพสต์ฟังก์ชันแฮชคำตอบของคุณจะไม่ได้รับการยอมรับหรือเป็นส่วนหนึ่งของกระดานแต้มนำ ความท้าทายนี้คือการค้นหาการใช้งานฟังก์ชันแฮชที่สั้นที่สุดที่ทนทานต่อการชนกล่าวคือควรหาข้อความที่แตกต่างกันสองข้อความที่มีแฮชเดียวกัน ในฐานะตำรวจคุณพยายามคิดค้นและใช้ฟังก์ชันแฮชเพื่อหาการประนีประนอมที่ดีที่สุดระหว่างขนาดรหัสและการต่อต้านการชน ใช้จำนวนไบต์มากเกินไปและตำรวจอีกคนจะเร็วกว่าคุณ! ในฐานะโจรคุณพยายามสกัดกั้นความพยายามของตำรวจโดยการทำหน้าที่ของพวกเขาให้แตกเพื่อพิสูจน์ว่าพวกเขาไม่เหมาะสม สิ่งนี้จะบังคับให้พวกเขาใช้จำนวนไบต์มากขึ้นเพื่อเสริมอัลกอริทึมของพวกเขา! ตำรวจท้าทาย งาน ใช้การเข้ารหัสลับฟังก์ชันแฮชH: ฉัน -> Oที่คุณเลือกที่ฉันเป็นชุดของทั้งหมดไม่ integers เชิงลบด้านล่าง 2 2 30และOเป็นชุดของทั้งหมดไม่ integers เชิงลบด้านล่าง 2 128 คุณสามารถใช้Hเป็นฟังก์ชันจริงที่ยอมรับและส่งคืนจำนวนเต็มเดียวการแทนค่าสตริงของจำนวนเต็มหรืออาร์เรย์ของจำนวนเต็มหรือโปรแกรมเต็มรูปแบบที่อ่านจาก STDIN และพิมพ์ไปยัง STDOUT ในฐาน 10 หรือ 16 เกณฑ์การให้คะแนน Hว่ามันต้องต่อต้านความท้าทายโจรที่กำหนดไว้ด้านล่าง ถ้าโจรเอาชนะส่งของคุณใน 168 ชั่วโมงแรกหลังการโพสต์มันก็ถือว่าแตก การดำเนินการของHควรสั้นที่สุด การส่งที่ไม่ได้ติดตามที่สั้นที่สุดจะเป็นผู้ชนะของความท้าทายของตำรวจ กฎเพิ่มเติม หากคุณใช้งานHเป็นฟังก์ชั่นโปรดใส่กระดาษห่อเพื่อใช้งานฟังก์ชั่นจากภายในโปรแกรมที่ทำงานตามที่อธิบายไว้ข้างต้น โปรดระบุเวกเตอร์ทดสอบอย่างน้อยสามรายการสำหรับโปรแกรมหรือ wrapper ของคุณ (ตัวอย่างอินพุตและเอาต์พุตที่สอดคล้องกัน) Hสามารถออกแบบนวนิยายของคุณ (ที่ต้องการ) หรืออัลกอริทึมที่รู้จักกันดีตราบใดที่คุณใช้มันด้วยตัวคุณเอง ห้ามมิให้ใช้ฟังก์ชั่นแฮชในตัว, ฟังก์ชั่นการบีบอัด, ตัวเลข, …

20
ฟาโรสับเปลี่ยนอาเรย์
ฟาโรสับเปลี่ยนเป็นเทคนิคที่ใช้บ่อยโดยนักมายากลที่ "สับ" ดาดฟ้า เพื่อทำการสับไพ่แบบแฟโรคุณต้องตัดเด็คเป็น 2 ส่วนเท่ากันก่อน ตัวอย่างเช่น [1 2 3 4 5 6 7 8] แฟโรสับเป็น [1 5 2 6 3 7 4 8] สามารถทำซ้ำได้หลายครั้ง น่าสนใจพอถ้าคุณทำซ้ำครั้งนี้มากพอคุณจะกลับมาที่อาร์เรย์เดิมเสมอ ตัวอย่างเช่น: [1 2 3 4 5 6 7 8] [1 5 2 6 3 7 4 8] [1 3 5 7 2 4 6 …
31 code-golf  permutations  card-games  code-golf  graphical-output  random  code-golf  image-processing  color  code-golf  primes  code-golf  math  arithmetic  combinatorics  decision-problem  code-golf  sequence  number-theory  binary  code-golf  number-theory  set-theory  code-golf  hashing  code-golf  game  card-games  code-golf  ascii-art  code-golf  arithmetic  array-manipulation  jelly  code-golf  string  array-manipulation  code-golf  sorting  code-challenge  code-golf  number  date  binary  code-golf  arithmetic  code-golf  math  number  linear-algebra  polynomials  code-golf  ascii-art  code-golf  grid  decision-problem  code-golf  string  combinatorics  code-golf  string  kolmogorov-complexity  arithmetic  date  code-golf  number  data-structures  code-golf  ascii-art  kolmogorov-complexity  code-golf  string  ascii-art  code-golf  ascii-art  kolmogorov-complexity  code-golf  array-manipulation 

30
เอาท์พุทที่มีความยาวเท่ากันเสมอ
ด้วยความท้าทายเช่นเอาท์พุทที่มีความยาวเท่ากันกับรหัสและสร้างผลลัพธ์ที่มีความยาวเป็นสองเท่าของรหัสฉันคิดว่าเป็นเรื่องท้าทาย แต่ก็คล้ายกัน ภารกิจคือสร้างเอาต์พุต มันอาจเป็นสตริงรายการของตัวละครหรืออะไรก็ตามที่เป็นรูปแบบเอาต์พุตเริ่มต้นของโปรแกรมของคุณ อย่างไรก็ตามเอาต์พุตของคุณจะต้องมีความยาวเท่ากันเสมอไม่ว่าอินพุตจะเป็นเท่าใด และที่สำคัญกว่าการส่งออกควรจะแตกต่างกันสำหรับปัจจัยการผลิตที่แตกต่างกัน อินพุต จำนวนเต็มเดียวnnnช่วงที่พิจารณาจากการเลือกภาษา หากภาษาของคุณมีจำนวนเต็มความยาวผันแปรช่วงคือ−231≤n&lt;231−231≤n&lt;231-2^{31} \leq n < 2^{31}วันที่ 31 เอาท์พุต สตริงหรือรายการของตัวละครหรือพิมพ์ไปยัง STDOUT หรือ STDERR คุณสามารถใช้หนึ่งในวิธีการเหล่านี้เท่านั้น เอาต์พุตควรมีความยาวเท่ากันโดยไม่คำนึงถึงอินพุต แต่ก็ขึ้นอยู่กับคุณที่จะกำหนดความยาวที่เป็น การส่งออกอาจไม่ประกอบด้วยอักขระหลัก0-9-หรือเครื่องหมายลบ เอาต์พุตควรถูกกำหนดไว้ คุณควรจะสามารถพิสูจน์ได้ว่าสำหรับทุกผลลัพธ์มีเพียงหนึ่งอินพุตที่เป็นไปได้ไม่ว่าจะโดยการพิสูจน์อย่างเป็นทางการการโต้แย้งหรือการค้นหาที่โหดร้าย นี่เป็นคำถามเกี่ยวกับการเล่นกอล์ฟดังนั้นควรกำจัดไบต์ที่ไม่เกี่ยวข้องออกไป ยินดีต้อนรับทุกภาษายิ่งดียิ่งขึ้น!

15
เกมไขปริศนาครึ่งวงกลม
Palindrome เป็นคำที่ตรงกันข้ามกัน ขณะนี้มีคำบางคำที่อาจมีลักษณะเหมือน palindromes แต่ไม่ใช่ ยกตัวอย่างเช่นพิจารณาคำ sheesh, sheeshไม่ palindrome เพราะเป็นสิ่งที่ตรงกันข้ามของมันhseehsซึ่งเป็นที่แตกต่างกัน แต่ถ้าเราพิจารณาให้เป็นตัวอักษรเดียวแล้วก็กลับเป็นsh sheeshคำชนิดนี้เราจะเรียกว่าเซมิโคลอน โดยเฉพาะคำหนึ่งคำคือกึ่ง Palindrome หากเราสามารถแบ่งคำนั้นออกเป็นชิ้น ๆ จำนวนหนึ่งเช่นเมื่อคำสั่งของชิ้นนั้นกลับคำเดิมจะเกิดขึ้น (สำหรับsheeshชิ้นส่วนเหล่านั้นsh e e sh) เราจะต้องไม่มีชิ้นที่มีตัวอักษรจากครึ่งทั้งสองของคำ (มิฉะนั้นทุกคำจะเป็นกึ่ง Palindrome) ตัวอย่างเช่นrearไม่ใช่กึ่ง Palindrome เพราะr ea rมีอัน ( ea) ที่มีตัวอักษรจากทั้งสองด้านของคำเดิม เราพิจารณาอักขระกลางในคำที่มีความยาวคี่ให้อยู่ด้านใดด้านหนึ่งของคำดังนั้นสำหรับคำที่มีความยาวคี่อักขระกลางจะต้องอยู่ในกลุ่มของมันเสมอ งานของคุณจะทำรายการของจำนวนเต็มบวกและตรวจสอบว่าพวกเขาเป็นกึ่ง Palindrome รหัสของคุณควรส่งออกค่าไม่เท่ากันที่สอดคล้องกันสองค่าหนึ่งค่าหากอินพุตเป็นแบบกึ่ง Palindrome และอีกค่าหนึ่ง อย่างไรก็ตามลำดับไบต์ของรหัสของคุณจะต้องเป็นกึ่ง palindrome-ตัวเอง คำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์ที่น้อยลง การทดสอบกรณี [] -&gt; True [1] -&gt; True [2,1,2] -&gt; …

10
มดบนบันทึกธรรมชาติ
นี่เป็นความท้าทายเริ่มต้นที่ดีและเป็นนักฆ่าเวลาที่ดี ฉันเพียงแค่พูดว่า - บันทึก - ธรรมชาติเพราะชื่อสั้นเกินไปนี่ไม่มีส่วนเกี่ยวข้องกับลอการิทึม รับ 2 ตัวแปร: nจำนวนของมด wความกว้างของการเข้าสู่ระบบ การส่งออกเข้าสู่ระบบของความกว้างwกับnมด (ตัวอย่างแสดงให้เห็นw=3,n=6 ) | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ /o\ /o\ | | ^ ^ ^ | | | | \O/ \O/ \O/ | | -O- -O- -O- | | /o\ …

30
รับตัวเลขสุ่ม n ตัวเลขด้วยตัวเลขที่แตกต่างกันและไม่ใช่ 0
ฉันอ่านคำถามนี้และคิดว่ามันจะเป็นการท้าทายที่ดี งาน ให้อินพุต0&lt;n&lt;10สร้างตัวเลขสุ่มด้วย ตัวเลขที่แน่นอน ครั้งแรกไม่ได้ 0 ดังนั้น f(n)&gt;10**(n-1)-1 ตัวเลขที่แตกต่างกัน เกณฑ์การชนะ นี่คือรหัส - กอล์ฟเพื่อให้ได้รหัสที่สั้นที่สุด สุ่ม ฉันหมายถึงการกระจายแบบสุ่มอย่างสม่ำเสมอ ดังนั้นจากมุมมองของโปรแกรมแต่ละหมายเลขที่เป็นไปได้มีโอกาสเดียวกัน หากภาษาที่คุณกำลังเขียนมีตัวสร้างตัวเลขสุ่มแปลก ๆ ก็ไม่เป็นไรที่จะใช้มัน ตัวอย่าง รายการค่าที่จะเลือกแบบสุ่มสำหรับn=2คือ: [10, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 34, 35, 36, 37, 38, 39, 40, 41, …
22 code-golf  number  random  grid  game  king-of-the-hill  javascript  code-golf  arithmetic  statistics  code-golf  math  code-golf  math  code-golf  string  palindrome  code-golf  string  interactive  code-golf  quine  polyglot  code-golf  string  stack-exchange-api  code-golf  number-theory  decision-problem  code-golf  tips  code-golf  string  internet  code-golf  graphical-output  image-processing  fractal  code-golf  ascii-art  geometry  hexagonal-grid  code-golf  string  restricted-source  hello-world  code-golf  game  code-golf  cipher  code-golf  permutations  cops-and-robbers  permutations  cops-and-robbers  code-golf  internet  stack-exchange-api  code-golf  ascii-art  random  code-golf  tips  code-golf  ascii-art  code-golf  code-golf  kolmogorov-complexity  code-golf  string  unicode  code-golf  number  sequence  primes  palindrome  code-golf  game  decision-problem  code-golf  math  geometry  code-golf  graphical-output  interactive  code-golf  set-partitions  code-golf  number  arithmetic  restricted-source  code-golf  decision-problem  python  recursion  code-golf  ascii-art  code-golf  source-layout  code-golf  function  recursion  functional-programming  code-golf  game  combinatorics  permutations  code-golf  string  file-system  code-golf  string  hashing  code-golf  stack-exchange-api  code-golf  string  code-golf  math  number  arithmetic  polyglot 

3
ตัวกระจายรังสีเมตาดาต้า
พื้นหลัง ในเว็บไซต์นี้บางครั้งเรามีคำถามที่ต้องการให้โปรแกรม "แข็งรังสี" ซึ่งหมายความว่าโปรแกรมจะต้องสามารถอยู่รอดในการลบหนึ่งไบต์หรือมากกว่าไม่ว่าจะลบไบต์ใด เป็นเรื่องปกติสำหรับงานที่มีการตั้งค่าความท้าทายในการเขียนโปรแกรมเป็นเรื่องปกติที่จะต้องการสร้างภาษาที่ดีต่อความท้าทายเหล่านี้โดยเฉพาะ เนื่องจากวิธีธรรมชาติในการทำเช่นนี้คือการเพิ่มข้อมูลเมตาบางส่วนที่ทำให้สามารถย้อนกลับไปสู่การคอร์รัปชั่นได้จริง ๆ แล้วไม่ใช่ภาษาที่จำเป็นต้องมีการออกแบบ แนวคิดคือการแปลงอินพุตแต่ละตัวเป็นลำดับไบต์ในลักษณะที่แม้ว่าลำดับนั้นฉายรังสีเล็กน้อยก็เป็นไปได้ที่จะแยกอินพุตต้นฉบับ งาน เขียนสองโปรแกรมหรือฟังก์ชั่น E (ตัวเข้ารหัส) และ D (ตัวถอดรหัส) เช่นนั้น: E จะใช้เวลาสองขัดแย้งลำดับของ octets (ซึ่งเราจะเรียกว่า " การป้อนข้อมูล " ในข้อกำหนดนี้) และติดลบ " รังสี " และผลลำดับของ octets ที่ " เข้ารหัส "; D รับหนึ่งอาร์กิวเมนต์ลำดับของ octets (" encdng ") และเอาต์พุตลำดับของ octets " reconstruction "; หากคุณใช้ทั้ง E และ D …

4
ใช้ SHA-256
ให้ลำดับของไบต์ส่งออกค่าแฮช SHA-256 ของลำดับ อัลกอริทึม SHA-256 pseudocode ต่อไปนี้จะนำมาจากหน้าวิกิพีเดีย SHA-2 Note 1: All variables are 32 bit unsigned integers and addition is calculated modulo 2^32 Note 2: For each round, there is one round constant k[i] and one entry in the message schedule array w[i], 0 ≤ i ≤ 63 Note 3: …

5
ขุดในปี 2559 ใน Bitcoins! PCG.SE ปริศนาปีใหม่ 2559
ในโปรโตคอล Bitcoin 2016เป็นจำนวนที่พิเศษมาก "ความยาก" ในการค้นหาแฮชเพื่อสร้างบล็อกใหม่จะถูกปรับทุก ๆ 2,016 บล็อกเพื่อการเปลี่ยนแปลงโดยประมาณทุกๆสองสัปดาห์ หมายเลขนี้ถูกเลือกเนื่องจากความยากลำบากในการปรับตัวเองเพื่อให้ทุกบล็อกใช้เวลาประมาณ 10 นาทีและในอีกสองสัปดาห์จะมี 2 × 7 × 24 × 6 = 2,016 ระยะเวลาสิบนาที เพื่อเป็นการระลึกถึงความบังเอิญเชิงตัวเลขปัญหาปีใหม่ในปีนี้เป็นเรื่องของ Bitcoin โดยเฉพาะอัลกอริทึมคร่ำเครียดที่ใช้เพื่อลงนามบล็อค SHA-256 งานของคุณคือการสร้างโปรแกรมที่จะรับไบต์ (อย่างน้อย ASCII) และส่งออกเป็น nonce ในไบต์ (ในรูปแบบที่คุณเลือก) ที่จะผลิตกัญชา SHA-256 ที่มี2016อยู่ในการเป็นตัวแทนbase64เมื่อผนวกเข้ากับต้นฉบับ อินพุตไบต์ ต่อไปนี้เป็นตัวอย่างของโซลูชันที่ถูกต้องความสุภาพของเครื่องยนต์ที่ผู้คนสร้างไว้แล้ว &gt; foo Nonce: 196870 SHA256 hash: OCUdDDtQ42wUlKz2016x+NROo8P2lbJf8F4yCKedTLE= &gt; bar Nonce: 48230 SHA256 hash: …

14
ความยาวตามอำเภอใจโดยพลการ
พิจารณาคุณมีฟังก์ชันแฮช HH\mathcal{H}ซึ่งจะใช้เวลาสตริงที่มีความยาว2n2n2nและผลตอบแทนสตริงของความยาวnnnและมีคุณสมบัติที่ดีที่ว่ามันเป็นทนชนคือมันยากที่จะหาสองสายที่แตกต่างกันs≠s′s≠s′s \neq s'กับกัญชาเดียวกันH(s)=H(s′)H(s)=H(s′)\mathcal{H}(s) = \mathcal{H}(s') ) คุณจะตอนนี้เช่นการสร้างฟังก์ชันแฮชใหม่H′H′\mathcal{H'}ซึ่งจะมีสายยาวโดยพลการและแผนที่พวกเขาที่จะสตริงของความยาวnnnในขณะที่ยังคงความทนต่อการปะทะกัน โชคดีสำหรับคุณในปี 1979 วิธีที่รู้จักกันในชื่อMerkle – Damgårdได้รับการตีพิมพ์ซึ่งประสบความสำเร็จอย่างแน่นอน ภารกิจของความท้าทายนี้คือการใช้อัลกอริทึมนี้ดังนั้นก่อนอื่นเราจะมาดูคำอธิบายอย่างเป็นทางการของการก่อสร้าง Merkle – Damgårdก่อนที่จะผ่านตัวอย่างทีละขั้นตอนซึ่งควรแสดงว่าวิธีการนั้นง่ายกว่า มันอาจปรากฏขึ้นในตอนแรก รับจำนวนเต็มn&gt;0n&gt;0n > 0 , ฟังก์ชันแฮชHH\mathcal{H}ตามที่อธิบายไว้ข้างต้นและสตริงอินพุตsssของความยาวโดยพลการฟังก์ชันแฮชใหม่H′H′\mathcal{H'}ทำดังต่อไปนี้: ตั้งl=|s|l=|s| l = |s|ความยาวของsssและแยกsssในหน่วยความยาวnnnเติมก้อนสุดท้ายด้วยศูนย์ต่อท้ายหากจำเป็น สิ่งนี้ให้ผลm=⌈ln⌉m=⌈ln⌉m = \lceil \frac{l}{n} \rceil ชิ้นส่วนมากมายที่มีป้ายกำกับc1,c2,…,cmc1,c2,…,cmc_1, c_2, \dots, c_m เมตร เพิ่มส่วนนำและส่วนท้ายc0c0c_0และcm+1cm+1c_{m+1}โดยที่c0c0c_0คือสตริงที่ประกอบด้วยnnnศูนย์และcm+1cm+1c_{m+1}คือnnnในแบบไบนารีเพิ่มด้วยศูนย์นำไปจนถึงความยาวnnn n ตอนนี้ใช้ซ้ำHH\mathcal{H}กับก้อนปัจจุบันcicic_iผนวกเข้ากับผลลัพธ์ก่อนหน้าri−1ri−1r_{i-1} : ri=H(ri−1ci)ri=H(ri−1ci) r_i = \mathcal{H}(r_{i-1}c_i)ที่r0=c0r0=c0r_0 = c_0 0 (ขั้นตอนนี้อาจชัดเจนกว่านี้หลังจากดูตัวอย่างด้านล่าง) การส่งออกของH′H′\mathcal{H'}เป็นผลสุดท้ายrm+1rm+1r_{m+1} …

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