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

สำหรับความท้าทายที่ขอฟังก์ชั่นหรือเกี่ยวข้องกับฟังก์ชั่นในบางวิธี (เรียกอีกอย่างว่าวิธีการหรือรูทีนย่อย)

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-ตัวเอง คำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์ที่น้อยลง การทดสอบกรณี [] -> True [1] -> True [2,1,2] -> …

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<n<10สร้างตัวเลขสุ่มด้วย ตัวเลขที่แน่นอน ครั้งแรกไม่ได้ 0 ดังนั้น f(n)>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 

7
ฟังก์ชันเลขชี้กำลังครึ่งตัว
ฟังก์ชั่นครึ่งชี้แจงเป็นหนึ่งซึ่งเมื่อประกอบกับตัวเองให้ฟังก์ชั่นการชี้แจง ตัวอย่างเช่นถ้าf(f(x)) = 2^xไปแล้วfจะเป็นฟังก์ชั่นครึ่งชี้แจง ในความท้าทายนี้คุณจะคำนวณฟังก์ชันเลขชี้กำลังแบบครึ่งหนึ่ง โดยเฉพาะคุณจะคำนวณฟังก์ชันจากจำนวนเต็มไม่เป็นลบถึงจำนวนเต็มที่ไม่ใช่ลบด้วยคุณสมบัติต่อไปนี้: เพิ่มขึ้นอย่างน่าเบื่อ: ถ้าx < yเช่นนั้นf(x) < f(y) อย่างน้อยครึ่งชี้แจง: สำหรับทุกคนx,f(f(x)) >= 2^x เล็กที่สุดในพจนานุกรม: ในบรรดาฟังก์ชั่นทั้งหมดที่มีคุณสมบัติด้านบนให้ส่งเอาท์พุตที่ย่อเล็กสุดf(0)ซึ่งให้ตัวเลือกนั้นย่อเล็กสุดf(1)จากนั้นf(2)จึงเป็นต้น ค่าเริ่มต้นของฟังก์ชันนี้สำหรับอินพุต0, 1, 2, ...คือ: [1, 2, 3, 4, 8, 9, 10, 11, 16, 32, 64, 128, 129, 130, 131, 132, 256, 257, ...] คุณสามารถส่งออกฟังก์ชั่นนี้ผ่านวิธีการใด ๆ ต่อไปนี้ไม่ว่าจะเป็นฟังก์ชั่นหรือเป็นโปรแกรมเต็มรูปแบบ: ใช้เป็นอินพุทเอาท์พุทxf(x) ใช้xเป็นอินพุทเอาท์พุทแรกค่าxf fการส่งออกทั้งหมดของอนันต์ หากคุณต้องการที่จะใช้xและเอาท์พุทf(x), xต้องเป็นศูนย์การจัดทำดัชนี การดำเนินการอ้างอิง …

18
ค้นหาตัวเลขที่ใกล้ที่สุดในอาร์เรย์ที่กำหนด
นี่คือแรงบันดาลใจจากปัญหาโลกแห่งความจริงที่ฉันมี ฉันอยากรู้ว่ามีวิธีที่ฉลาดที่จะไปเกี่ยวกับเรื่องนี้ คุณจะได้รับอาร์เรย์สองอันที่ไม่เรียงลำดับคือ A และ B แต่ละอันมีจำนวนลอยโดยพลการ A และ B ไม่จำเป็นต้องมีความยาวเท่ากัน เขียนฟังก์ชันที่ใช้องค์ประกอบของ A ตามลำดับและค้นหาค่าที่ใกล้ที่สุดในอาร์เรย์ B ผลลัพธ์จะต้องมีอยู่ในอาร์เรย์ใหม่ เงื่อนไขการชนะ รหัสที่สั้นที่สุดชนะ (ตามปกติ)

13
ทำให้ฉันแกง
มีฟังก์ชั่นfที่รับอาร์กิวเมนต์x 1 , x 2 , …, x n - เช่น f: X 1 × X 2 ×…× X n → Y - ความดีความชอบนิยามใหม่ของFเป็นฟังก์ชั่นการใช้อาร์กิวเมนต์เดียว1ซึ่งแมปไปยังฟังก์ชั่นอื่น เทคนิคนี้มีประโยชน์สำหรับการใช้งานบางส่วนเช่นฟังก์ชั่นcurried ที่เราสามารถเขียนได้powexp = pow(e) ตัวอย่าง สมมติว่าเรามีฟังก์ชั่นfต่อไปนี้รับสามอาร์กิวเมนต์ ( f: X 1 × X 2 × X 3 → Y ): def f(a,b,c): return a + b * …

9
อินทิกรัล จำกัด แน่นอนโดยใช้ผลบวกของ Riemann
ซ้ายและขวาเงินก้อน Riemannมีความใกล้เคียงเพื่อintegrals ชัดเจน แน่นอนว่าในวิชาคณิตศาสตร์เราต้องมีความแม่นยำมากดังนั้นเราจึงตั้งเป้าที่จะคำนวณพวกมันด้วยเขตการปกครองจำนวนมากที่เข้าใกล้อนันต์ แต่นั่นไม่จำเป็นสำหรับจุดประสงค์ของการท้าทายนี้ คุณควรลองเขียนโปรแกรมที่สั้นที่สุดแทนการป้อนข้อมูลและให้ผลลัพธ์ผ่านวิธีการเริ่มต้นใดๆ ในภาษาการเขียนโปรแกรมใด ๆซึ่งทำสิ่งต่อไปนี้: งาน รับจำนวนตรรกยะaaaและbbb (ข้อ จำกัด ของอินทิกรัล จำกัด ), จำนวนเต็มบวกnnn , boolean kkkแทนซ้าย / ขวาและฟังก์ชันกล่องดำ fff , คำนวณผลรวม Riemann ทางซ้ายหรือขวา (ขึ้นอยู่กับkkk ) ของ∫baf(x)dx∫abf(x)dx\int_a^b f(x)\mathrm{d}xใช้nnn เท่ากับเขตการปกครอง I / O Specs aaaและbbbสามารถเป็นจำนวนตรรกยะ / จำนวนทศนิยมหรือเศษส่วน kkkสามารถแสดงค่าที่แตกต่างและสอดคล้องกันได้สองค่า แต่โปรดจำไว้ว่าคุณไม่ได้รับอนุญาตให้ใช้ฟังก์ชั่นสมบูรณ์หรือบางส่วนเป็นอินพุต fffเป็นฟังก์ชั่นกล่องดำ อ้างถึงคำตอบที่เมตาเชื่อมโยงข้างต้นเนื้อหา (เช่นรหัส) ของกล่องดำฟังก์ชั่นอาจไม่สามารถเข้าถึงคุณสามารถเรียกพวกเขา (ข้อโต้แย้งผ่านถ้ามี) และสังเกตผลผลิตของพวกเขา หากจำเป็นโปรดระบุข้อมูลที่จำเป็นเกี่ยวกับไวยากรณ์ที่ภาษาของคุณใช้เช่นที่เราสามารถทดสอบการส่งของคุณ ในฐานะที่เป็นเอาท์พุทคุณจะต้องให้เหตุผล / จุดลอยตัว …

25
การเดิมพันที่เพิ่มขึ้น
หลายเดือนที่ผ่านมาฉันมีคำถามนี้เป็นปริศนาการคัดกรองเบื้องต้นสำหรับการสัมภาษณ์ เมื่อเร็ว ๆ นี้เมื่อคิดเกี่ยวกับเนื้อหาบล็อกมันโผล่ในหัวของฉันเป็นตัวอย่างที่ดีที่จะใช้สำหรับการแก้ปัญหาการทำงาน ฉันจะโพสต์วิธีแก้ไขปัญหานี้ทันทีที่ฉันเขียนบทความในบล็อกเสร็จ หมายเหตุ: คำถามนี้ถูกถามใน StackOverflow หนึ่งปีที่ผ่านมาและถูกลดระดับลงหลังจากคำตอบ (ไม่ถูกต้อง) สองสามข้อ ฉันคิดว่ามันถูกลดระดับลงเนื่องจากการสัมภาษณ์ที่ชัดเจนหรือคำถามการบ้าน คำตอบของเราที่นี่ควรเป็นรหัสกอล์ฟลึกพอสำหรับคนที่ไม่ต้องคิดใช้! ในการแข่งขันคุณเดิมพันโดยใช้กลยุทธ์ต่อไปนี้ เมื่อใดก็ตามที่คุณแพ้การเดิมพันคุณจะเพิ่มมูลค่าของการเดิมพันในรอบถัดไป เมื่อใดก็ตามที่คุณชนะการเดิมพันรอบต่อไปจะเป็นหนึ่งดอลลาร์ คุณเริ่มรอบโดยการเดิมพันหนึ่งดอลลาร์ ตัวอย่างเช่นหากคุณเริ่มต้นด้วย 20 ดอลลาร์และคุณชนะการเดิมพันในรอบแรกแพ้การเดิมพันในสองรอบถัดไปจากนั้นชนะการเดิมพันในรอบที่สี่คุณจะจบด้วย 20 + 1-1-2 +4 = 22 ดอลลาร์ คุณคาดว่าจะทำให้ฟังก์ชันเสร็จสมบูรณ์gซึ่งใช้เวลาสองข้อโต้แย้ง: อาร์กิวเมนต์แรกคือเลขจำนวนเต็มaซึ่งเป็นเงินเริ่มต้นที่เรามีเมื่อเราเริ่มเดิมพัน rอาร์กิวเมนต์ที่สองเป็นสตริง ตัวละครของผลลัพธ์ที่ได้จะเป็น 'W' (ชนะ) หรือ 'L' (แพ้) แสดงถึงผลลัพธ์ของรอบที่ ith ฟังก์ชั่นของคุณควรคืนจำนวนเงินที่คุณจะได้รับหลังจากเล่นรอบทั้งหมด หาก ณ จุดหนึ่งคุณไม่มีเงินเพียงพอในบัญชีของคุณเพื่อครอบคลุมมูลค่าของการเดิมพันคุณต้องหยุดและคืนเงินที่คุณมี ณ จุดนั้น วิ่งตัวอย่าง 1st round - Loss: 15-1 …

12
แต่งเติมในช่องว่าง
ให้เราบอกว่าเรามีชุดของฟังก์ชั่นเฉพาะเกี่ยวกับสตริง ฟังก์ชั่นเหล่านี้มีลักษณะเหมือนเติมในช่องว่างหรือ madlib ยกเว้นว่าพวกเขาจะใช้เพียงหนึ่งอินพุตและใช้เพื่อเติมลงในช่องว่างทั้งหมดของพวกเขา ตัวอย่างเช่นเราอาจมีฟังก์ชั่นที่ดูเหมือน I went to the ____ store and bought ____ today. หากเราใช้ฟังก์ชันนี้กับสตริงcheeseผลลัพธ์จะเป็น: I went to the cheese store and bought cheese today. เราสามารถแสดงฟังก์ชันเหล่านี้เป็นรายการสตริงที่ไม่ว่างโดยที่ช่องว่างเป็นเพียงช่องว่างระหว่างสตริง ตัวอย่างฟังก์ชั่นของเราด้านบนจะเป็น: ["I went to the ", " store and bought ", " today."] ด้วยการแทนค่านี้มีเพียงหนึ่งการแทนสำหรับทุก ๆ ฟังก์ชันของการเรียงลำดับนี้และเพียงหนึ่งฟังก์ชันสำหรับแต่ละการแทนเท่านั้น สิ่งที่เรียบร้อยจริงๆคือชุดของฟังก์ชั่นดังกล่าวปิดภายใต้องค์ประกอบ กล่าวคือการจัดองค์ประกอบของฟังก์ชั่นสองอย่างของเราเป็นหน้าที่หนึ่งของฟังก์ชันเหล่านี้เสมอ เช่นถ้าฉันเขียนฟังก์ชันของเราด้านบนด้วย ["blue ", ""] (ฟังก์ชั่นที่blueเพิ่มเข้าสู่อินพุต) …

7
โรงแรมไบนารีของ Hilbert
ในการท้าทายนี้คุณจะถูกขอให้ใช้งานฟังก์ชั่นใด ๆ (หรือโปรแกรมเต็มรูปแบบ) ที่ตอบสนองสองคุณสมบัติ คุณสมบัติเหล่านั้นคือ: ฟังก์ชั่นของคุณจะต้องเป็นฟังก์ชั่นการฉีด (ย้อนกลับ) จากชื่อพหุนามที่มีค่าสัมประสิทธิ์จำนวนเต็มไม่เป็นลบถึงจำนวนเต็มไม่เป็นลบ ซึ่งหมายความว่าไม่มีอินพุตที่ไม่เท่ากันสองตัวที่สามารถแมปกับเอาต์พุตที่เท่ากัน ฟังก์ชั่นของคุณจะต้องรักษาจำนวน "บนบิต" ทั้งหมดจากอินพุตไปยังเอาต์พุต นี่หมายความว่าถ้าคุณนับ 1 บิตของสัมประสิทธิ์ของพหุนามแต่ละผลรวมของพวกเขาควรจะเท่ากับจำนวน 1 บิตในการแทนเลขฐานสองของเอาต์พุต ตัวอย่างเช่น9อยู่1001ในไบนารีดังนั้นจึงมี 2 1บิต IO พหุนามจำนวนเต็มที่ไม่เป็นลบจะเหมือนกับรายการอนันต์ของจำนวนเต็มที่ไม่เป็นลบเช่นนั้นหลังจากจุดใดจุดหนึ่งจำนวนเต็มทั้งหมดจะเป็นศูนย์ ดังนั้นชื่อพหุนามอาจถูกแทนด้วยรายการอนันต์ (แม้ว่าอาจไม่เป็นที่พึงปรารถนา) หรือโดยรายการ จำกัด ด้วยค่าศูนย์โดยนัยหลังจากสิ้นสุดรายการ ความแตกต่างที่สำคัญระหว่างชื่อพหุนามกับรายการ จำกัด คือการเพิ่มศูนย์ไปยังจุดสิ้นสุดของรายการจะเปลี่ยนรายการ: ในขณะที่การเพิ่มศูนย์ถึงจุดสิ้นสุดของพหุนามจะไม่เปลี่ยนค่าของมัน: ดังนั้นหากฟังก์ชั่นของคุณรับรายการ จำกัด ซึ่งแทนพหุนามเป็นอินพุตการเพิ่มศูนย์จะต้องไม่เปลี่ยนผลลัพธ์ เมื่อแสดงชื่อพหุนามเป็นรายการคุณอาจเป็นตัวแทนพวกนั้นด้วยรายการแรกหรือรายการสุดท้ายที่แทนคำคงที่ ตัวอย่างเช่นคุณอาจมีความเป็นไปได้อย่างใดอย่างหนึ่งต่อไปนี้: ในกรณีแรกการเพิ่มค่าศูนย์ที่ส่วนท้ายของรายการไม่ควรเปลี่ยนผลลัพธ์ ในกรณีที่สองให้เพิ่มศูนย์ลงในด้านหน้าของรายการไม่ควรเปลี่ยนผลลัพธ์ แน่นอนว่าถ้าภาษาของคุณรองรับพหุนามคุณอาจใช้เป็นอินพุต เอาต์พุตควรเป็นเอาต์พุตจำนวนเต็มที่ไม่เป็นลบผ่านวิธีมาตรฐานใด ๆ นี่คือcode-golfดังนั้นคำตอบจะได้คะแนนเป็นไบต์ด้วยจำนวนไบต์น้อยกว่าจะดีกว่า

4
คำนวณตัวเลขจริง
คำนิยาม เป็นจำนวนเต็มบวกnเป็นจำนวนปฏิบัติ (OEIS ลำดับA005153 ) IFF nทุกจำนวนเต็มบวกที่มีขนาดเล็กสามารถแสดงเป็นผลรวมของตัวหารที่แตกต่างของ ตัวอย่างเช่น18เป็นจำนวนจริง: ตัวหารคือ 1, 2, 3, 6, 9, และ 18 และจำนวนเต็มบวกอื่น ๆ ที่น้อยกว่า 18 สามารถเกิดขึ้นได้ดังนี้: 4 = 1 + 3 5 = 2 + 3 7 = 1 + 6 8 = 2 + 6 10 = 1 + 9 11 = 2 + …
18 code-golf  sequence  number-theory  code-golf  code-challenge  sorting  c  code-golf  restricted-source  code-golf  natural-language  code-golf  tree-traversal  file-system  popularity-contest  pi  polyglot  code-golf  game  sliding-puzzle  code-golf  game  minesweeper  code-challenge  ascii-art  code-challenge  popularity-contest  graphical-output  code-challenge  popularity-contest  hello-world  underhanded  obfuscation  code-golf  code-golf  function  code-golf  code-golf  code-golf  popularity-contest  rosetta-stone  code-golf  primes  code-golf  restricted-source  popularity-contest  number  sequence  code-golf  restricted-source  popularity-contest  graphical-output  code-golf  popularity-contest  code-golf  primes  code-golf  game  code-golf  math  popularity-contest  popularity-contest  code-generation  popularity-contest  code-bowling  code-golf  popularity-contest  underhanded  code-golf  metagolf 

15
การออกแบบฟังก์ชั่นการฉีดสลับระหว่างชุดที่ไม่มีที่สิ้นสุด (จำกัด ) และคู่ไม่มีการเรียงลำดับดังกล่าว
ที่เกี่ยวข้อง แต่ต้องใช้จำนวนเต็มบวกเท่านั้นและไม่จำเป็นต้องสลับกัน ฟังก์ชั่นการจับคู่ต้นเสียงอธิบายไว้ในบทความวิกิพีเดียนี้ โดยพื้นฐานแล้วมันคือการดำเนินการเช่นนั้นเมื่อนำไปใช้กับค่าสองค่า X และ Y ค่าหนึ่งสามารถรับค่าดั้งเดิม X และ Y ที่ให้ผลลัพธ์ งานของคุณคือการออกแบบฟังก์ชั่นที่สอง: หนึ่งที่มีประสิทธิภาพและมีประสิทธิภาพอื่นX, Y -> Z ๆ Z -> X, Yนี่คือการจับ: X, Y -> Zจะต้องสลับกัน ซึ่งหมายความว่าZ -> X, Yจะไม่สามารถที่จะตรวจสอบถ้าใส่เป็นหรือX, YY, X คำจำกัดความที่เป็นทางการของความท้าทายนี้คือ: เลือกชุดตัวเลข S ที่ไม่มีที่สิ้นสุดนับได้ ออกแบบสองฟังก์ชั่นที่ทำงานต่อไปนี้: รับค่าคู่ที่ไม่เรียงลำดับใน S ส่งคืนค่าใน S รับค่าส่งคืนจากฟังก์ชันเริ่มต้นคืนค่าคู่ที่ไม่เรียงลำดับซึ่งประเมินค่าเป็นจำนวนเต็มอินพุตเมื่อส่งผ่านฟังก์ชันแรก ฉันไม่สนใจเกี่ยวกับพฤติกรรมของฟังก์ชันผกผันนี้ถ้าอินพุตไม่ใช่ค่าส่งคืนจากฟังก์ชันแรก ความต้องการ ผลลัพธ์ควรเหมือนกันระหว่างการวิ่ง {a, a} เป็นคู่ที่ไม่มีลำดับ หมายเหตุ: คำตอบของคุณมีแนวโน้มที่จะได้รับ …

30
องค์ประกอบที่หายไป
กำหนดสตริงSและรายชื่อของดัชนีXปรับเปลี่ยนSโดยการเอาองค์ประกอบที่ดัชนีของแต่ละขณะที่ใช้ผลที่เป็นค่าใหม่SS ตัวอย่างเช่นกำหนดS = 'codegolf'และX = [1, 4, 4, 0, 2], 0 1 2 3 4 5 6 7 | c o d e g o l f | Remove 1 c d e g o l f | Remove 4 c d e g l f | Remove 4 c …
17 code-golf  string  array-manipulation  code-golf  string  ascii-art  code-golf  number  sequence  pi  code-golf  number  array-manipulation  code-golf  string  ascii-art  code-golf  math  number  game  code-golf  math  sequence  polynomials  recursion  code-golf  math  number  sequence  number-theory  code-golf  permutations  balanced-string  code-golf  string  ascii-art  integer  code-golf  decision-problem  hexagonal-grid  code-golf  ascii-art  kolmogorov-complexity  code-golf  number  code-golf  matrix  binary-matrix  code-golf  math  statistics  code-golf  string  polyglot  code-golf  random  lost  code-golf  date  path-finding  code-golf  string  code-golf  math  number  arithmetic  number-theory  code-golf  tetris  binary-matrix  code-golf  array-manipulation  sorting  code-golf  number  code-golf  array-manipulation  rubiks-cube  cubically  code-golf  grid  optimization  code-golf  math  function  code-golf  string  quine  code-golf  ascii-art  grid  code-golf  decision-problem  grid  simulation  code-golf  math  sequence  code-golf  path-finding  code-golf  ascii-art  grid  simulation  code-golf  number  whitespace  code-golf  sequence  code-golf  sequence  code-golf  sequence  integer  code-golf  math  game  code-golf  internet  stack-exchange-api  code-golf  sequence  code-golf  internet  stack-exchange-api  code-golf  math  factoring  code-challenge  sequence  polyglot  rosetta-stone  code-golf  string  browser  code-golf  date  code-golf  base-conversion  code-challenge  cops-and-robbers  hello-world  code-golf  cops-and-robbers  hello-world 

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>0n>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} …

4
Tuple เพิ่มเติมใน pointfree
เป็นวิธีที่สั้นที่สุดที่เราสามารถแสดงฟังก์ชั่นอะไร f(a,b)(c,d)=(a+c,b+d) ในสัญกรณ์ฟรี pointfree.ioให้เรา uncurry (flip flip snd . (ap .) . flip flip fst . ((.) .) . (. (+)) . flip . (((.) . (,)) .) . (+)) ซึ่งสามารถทำงานให้สั้นลงได้ uncurry$(`flip`snd).((<*>).).(`flip`fst).((.).).(.(+)).flip.(((.).(,)).).(+) สำหรับ 76 ไบต์ แต่ตอนนี้ยังดูเหมือนว่ามันยาวและซับซ้อนสำหรับการดังกล่าวเป็นงานที่ง่าย มีวิธีใดบ้างที่เราสามารถแสดงการเพิ่มขึ้นของจำนวนคู่ในฐานะฟังก์ชั่นไร้จุดที่สั้นกว่าได้หรือไม่? เพื่อให้ชัดเจนโดยสิ่งที่ฉันหมายถึงโดยไม่มีจุดการประกาศจุดของฟังก์ชั่นที่เกี่ยวข้องกับการมีฟังก์ชั่นที่มีอยู่และผู้ประกอบการและใช้พวกเขากับแต่ละอื่น ๆ ในลักษณะที่ฟังก์ชั่นที่ต้องการจะถูกสร้างขึ้น backticks วงเล็บและคุณค่าที่แท้จริง ( [], 0, [1..3]ฯลฯ ) จะได้รับอนุญาต แต่คำหลักเช่นwhereและletจะไม่ หมายความว่า: …

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