คำถามติดแท็ก functional-programming

แท็กนี้มีไว้สำหรับความท้าทายที่เกี่ยวข้องกับกระบวนทัศน์การเขียนโปรแกรมเชิงฟังก์ชัน

30
สร้าง“ H” จาก“ H” ที่เล็กลง
ท้าทาย สร้างฟังก์ชั่นหรือโปรแกรมที่เมื่อได้รับจำนวนเต็มsizeทำต่อไปนี้: ถ้าsizeเท่ากับ 1 เอาต์พุต H H HHH H H ถ้าsizeมากกว่า 1 เอาต์พุต X X XXX X X โดยที่Xเอาต์พุตของโปรแกรม / ฟังก์ชั่นสำหรับsize - 1 (หากคุณต้องการคุณอาจมีกรณีฐานสอดคล้องกับ0ตราบใดที่คุณระบุในคำตอบของคุณ) รูปแบบผลลัพธ์ใด ๆ ต่อไปนี้เป็นที่ยอมรับแล้วแต่จำนวนใดจะสะดวกกว่าสำหรับคุณ: สตริงของโครงสร้างที่ต้องการพร้อมอักขระสองตัวที่แตกต่างกันซึ่งสอดคล้องกับHและspace อาร์เรย์สองมิติพร้อมโครงสร้างที่ต้องการโดยมีค่าแตกต่างกันสองค่าที่สอดคล้องกับHและspace อาร์เรย์ / รายการสตริงที่มีหนึ่งบรรทัดของเอาต์พุตในแต่ละสตริงโดยมีค่าแตกต่างกันสองค่าที่สอดคล้องกับHและspace อนุญาตให้มีช่องว่างนำหน้าตราบใดที่มีช่องว่างนำหน้าจำนวนหนึ่งคงที่ในแต่ละบรรทัด อักขระเอาต์พุตที่แตกต่างกันสองตัวสามารถขึ้นอยู่กับสิ่งที่คุณเลือกตราบใดที่อักขระเหล่านั้นแตกต่างกัน ระบุรูปแบบผลลัพธ์ที่โค้ดของคุณส่งคืน กรณีทดสอบ 1 H H HHH H H 2 H H H H HHH HHH H …
73 code-golf  ascii-art  fractal  code-golf  code-golf  string  code-golf  string  matrix  code-golf  graph-theory  maze  binary-matrix  code-golf  kolmogorov-complexity  random  code-challenge  metagolf  test-battery  brain-flak  text-processing  code-golf  matrix  code-golf  number-theory  primes  code-golf  string  matrix  code-golf  binary  bitwise  code-golf  number  factorial  floating-point  code-golf  number  sequence  code-golf  sequence  cops-and-robbers  code-golf  sequence  cops-and-robbers  code-golf  string  code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

30
การแกงตามความยาวโดยพลการ
เขียนฟังก์ชันfที่ใช้จำนวนเต็มบวกและส่งคืนฟังก์ชัน fฟังก์ชั่นใหม่กลับควรจะเหมือนกับ อย่างไรก็ตามเมื่อ "การยกเลิกการโทร" เกิดขึ้นfควรส่งคืนผลรวมของจำนวนเต็มทั้งหมดที่ส่งผ่านแทน ตัวอย่างเช่นg=f(4)(ถ้าfเป็นฟังก์ชันแรก) ควรตั้งgเป็นฟังก์ชั่นอื่น h=g(3)จะทำเช่นเดียวกัน อย่างไรก็ตามเมื่อคุณโทรhโดยไม่มีอาร์กิวเมนต์ (ดูรายละเอียดด้านล่าง) มันควรจะส่งออก 7 เนื่องจากเป็นผลรวมของอาร์กิวเมนต์ของฟังก์ชันก่อนหน้า ใส่อีกวิธีหนึ่ง, f(3)(4)() == 7. f(3,4)()ไม่ทราบเรื่องนี้ไม่ได้เช่นเดียวกับ "การยุติการโทร" เป็นหนึ่งในตัวเลือกต่อไปนี้ (ตัวเลือกของคุณ): เรียกอาร์กิวเมนต์ w / o null เป็นอาร์กิวเมนต์ ค่าที่ไม่เป็นบวกใด ๆ จำนวนการเรียกใช้ฟังก์ชันตามอำเภอใจควรได้รับการสนับสนุนไม่มีข้อ จำกัด ที่กำหนดไว้ล่วงหน้า รับประกันได้ว่ายอดรวมจะไม่มากกว่า 1'000 เราสามารถสันนิษฐานได้ว่ามีการโทรอย่างน้อยหนึ่งครั้งก่อนที่จะ "ยกเลิกการโทร" รหัสของคุณไม่ควรใช้ตัวแปรแบบคงที่ต่อโปรแกรมดังนั้นจึงควรเป็นไปได้ที่จะเรียกใช้การทดสอบหลายครั้งในรันไทม์เดียวกันและสังเกตพฤติกรรมที่เหมือนกันทุกประการ ตัวอย่าง: f(1)() == 1 f(4)(2)(7)() == 13 f(4)(2)(7)(5)(2)() == 20

30
P Pr Pre Pref คำนำหน้าคำนำหน้าคำนำหน้าคำนำหน้า
ให้รายการ จำกัด บางรายการกลับรายการของคำนำหน้าทั้งหมดรวมถึงรายการที่ว่างในลำดับความยาวของพวกเขา (โดยทั่วไปจะใช้ฟังก์ชัน Haskell inits) รายละเอียด รายการอินพุตมีตัวเลข (หรือประเภทอื่นหากสะดวกกว่า) การส่งออกจะต้องเป็นรายชื่อของรายการ การส่งสามารถ แต่ไม่จำเป็นต้องเป็นฟังก์ชันสามารถใช้I / O เริ่มต้นใด ๆได้ มีเป็นคำตอบ CWสำหรับทุกการแก้ปัญหาจิ๊บจ๊อย ตัวอย่าง [] -> [[]] [42] -> [[],[42]] [1,2,3,4] -> [[], [1], [1,2], [1,2,3], [1,2,3,4]] [4,3,2,1] -> [[], [4], [4,3], [4,3,2], [4,3,2,1]]

19
โบสถ์ Booleans
โบสถ์บูลีน โบสถ์บูลเป็นฟังก์ชันที่ผลตอบแทนxสำหรับความจริงและyเท็จที่xเป็นอาร์กิวเมนต์แรกฟังก์ชั่นและyเป็นอาร์กิวเมนต์ที่สองให้กับฟังก์ชั่น ฟังก์ชั่นเพิ่มเติมสามารถประกอบได้จากฟังก์ชั่นเหล่านี้ซึ่งเป็นตัวแทนของการดำเนินงานand not or xorและimpliesตรรกะ ท้าทาย สร้าง booleans ริสตจักรและand not or xorและimpliesประตูโบสถ์ในภาษาที่คุณเลือก and orและxorควรใช้สองฟังก์ชั่น (แทนบูลีนของโบสถ์) และส่งคืนฟังก์ชัน (แทนบูลีนของโบสถ์อื่น) ในทำนองเดียวกันnotควรกลับฟังก์ชั่นที่ใช้และimpliesประตูควรดำเนินการบูลีนหมายถึงตรรกะที่อาร์กิวเมนต์แรกimpliesที่สอง เกณฑ์การให้คะแนน ความยาวรวมของรหัสทั้งหมดที่จำเป็นในการสร้างคริสตจักรtrueและfalseในภาษาของคุณand not or xorและimpliesประตูคริสตจักรและไม่รวมชื่อฟังก์ชั่น (ตัวอย่างเช่นfalse=lambda x,y:yใน Python จะเป็น 13 ไบต์) คุณสามารถใช้ชื่อเหล่านี้ในภายหลังในรหัสของคุณโดยนับ 1 ไบต์ไปยังผลรวมไบต์ของเกตนั้น ตัวอย่างโค้ดหลอก: ฟังก์ชั่นที่คุณสร้างควรจะสามารถเรียกได้ในภายหลังในรหัสของคุณเช่นนั้น true(x, y) -> x false(x, y) -> y and(true, true)(x, y) -> x and(true, false)(x, …

25
ค้นหาจุดคงที่
ป.ร. ให้ไว้เป็นจำนวนเต็มและบางฟังก์ชั่นกล่องดำหาจุดคงที่ในลำดับที่กำหนดโดยx1 f: ℤ → ℤfxk+1 := f(xk) รายละเอียด ค่าxมีการกล่าวถึงเป็นจุดคงที่หากfx = f(x) ตัวอย่างเช่นถ้าf(x) := round(x/pi)เรามีจุดเริ่มต้นจากนั้นเราได้รับแล้วแล้วและในที่สุดซึ่งหมายความว่าการส่งควรกลับx1 = 10x2 = f(x1) = f(10) = 3x3 = f(x2) = f(3) = 1x4 = f(x3) = f(1) = 0x5 = f(x4) = f(0) = 00 คุณสามารถสมมติว่าลำดับที่สร้างขึ้นมีจุดคงที่จริง ℤคุณสามารถใช้ชนิดพื้นเมืองสำหรับจำนวนเต็มในสถานที่ของ คุณสามารถใช้ภาษาใด ๆ ที่มีค่าเริ่มต้นสำหรับการป้อนข้อมูลฟังก์ชั่นสีดำกล่องในมาตรฐานการโพสต์เมตา IO หากไม่มีการตั้งค่าเริ่มต้นสำหรับภาษาของคุณอย่าลังเลที่จะเพิ่มเข้าไปในความหมายของฟังก์ชั่นกล่องดำและตรวจสอบให้แน่ใจว่าได้เชื่อมโยงข้อเสนอของคุณในคำนิยามนั้น อย่าลืมโหวตพวกเขาด้วย ตัวอย่าง …

27
เมทริกซ์ติดตามทั่วไป
แรงบันดาลใจ ให้ (โดยวิธีการใด ๆ ): สองอาร์กิวเมนต์ (หรืออาร์กิวเมนต์เดียวประกอบด้วยรายการสององค์ประกอบ) ฟังก์ชั่นกล่องดำ , (input และ output คือ 1, 2, 3, ... )f: ℤ+ × ℤ+ → ℤ+ เมทริกซ์จำนวนเต็มบวกอย่างเคร่งครัดโดยมีอย่างน้อยสองแถวและสองคอลัมน์ กลับเมทริกซ์ของร่องรอยฟังก์ชั่น คืออะไรร่องรอยฟังก์ชั่น ? เมทริกซ์ติดตามปกติคือผลรวมของเส้นทแยงมุมใหญ่ (บนซ้ายไปขวาล่าง) ของเมทริกซ์: [[1,2,3],[4,5,6],[7,8,9]]→การ[1,5,9]→การ1+5+9→การ15 แต่แทนที่จะรวมเราต้องการนำfไปใช้ตามแนวทแยง: [[1,2,3],[4,5,6],[7,8,9]]→การ[1,5,9]→การf(f(1,5),9)หรือf(1,f(5,9)) โปรดระบุว่าคุณใช้จากซ้ายไปขวาหรือจากขวาไปซ้าย เมทริกซ์ที่กำหนดและค่ากลางทั้งหมดจะเป็นจำนวนเต็มบวกอย่างเคร่งครัดภายในโดเมนจำนวนเต็มของภาษาของคุณ เมทริกซ์อาจไม่ใช่แบบสแควร์ ตัวอย่าง f(x,y) = xy, [[1,2,3],[4,5,6],[7,8,9]]→การ1×5×9→การ45 f(x,y) = xy, [[1,2,3],[4,5,6],[7,8,9]]→การ →การ1591 f(x,y) = x-y, [[4,5,6],[1,2,3]]→การ4-2→การ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\ …

13
ทำลายเซ็นชนิดยาว
ท้าทาย ค้นหานิพจน์ที่มีความยาวไม่เกิน 100 ไบต์ด้วยลายเซ็นชนิดที่ยาวที่สุด กฎระเบียบ อนุญาตให้ใช้ภาษาที่พิมพ์แบบสแตติกที่มีการอนุมานประเภท ประเภทต้องไม่คลุมเครือ แต่อย่างอื่นอาจรวมถึงประเภทที่ไม่มีอินสแตนซ์ที่กำหนดไว้ ตัวอย่างเช่นNum [a]และEq [a]ได้รับอนุญาตแม้ไม่มีอินสแตนซ์ที่กำหนดไว้ ไม่มีการนำเข้าอื่นนอกจากขั้นต่ำที่จำเป็นในการรวบรวมโปรแกรมด้วย STDIN / STDOUT ไม่อนุญาตประเภทอนันต์ หากคำตอบมีมากกว่าหนึ่งการแสดงออกเพียงหนึ่งอาจส่งผลให้คะแนน ตัวอย่างเช่นแม้ว่าลายเซ็นประเภทของการแต่งเพลงจะ(.) :: (b -> c) -> (a -> b) -> a -> cมีคะแนน 20 แต่คำตอบที่มี 25 สำเนา(.)\nจะมีคะแนนเท่ากับ 20 ไม่ใช่ 500 นิพจน์ต้องมีขนาดไม่เกิน 100 ไบต์ คะแนนคือจำนวนตัวอักษรในลายเซ็นประเภทไม่รวมชื่อของฟังก์ชั่นและช่องว่างใด ๆ ตัวอย่างเช่นf :: (a -> b) -> a -> …

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 

9
ใช้กระบวนทัศน์การเขียนโปรแกรมการทำงาน
บริษัท ของคุณเพิ่งเริ่มต้นโครงการและเป็นครั้งแรกที่คุณตัดสินใจที่จะใช้การเขียนโปรแกรมแบบใช้งานได้ อย่างไรก็ตามเจ้านายของคุณมีความแตกต่างและไม่ต้องการใช้ฟังก์ชันในตัวและต้องการให้คุณใช้งานฟังก์ชั่นหลัก โดยเฉพาะอย่างยิ่งที่คุณต้องเขียนฟังก์ชั่น: Map, Nest, Apply, Range, FoldและTableในภาษาที่คุณเลือก เจ้านายเป็นคนที่ยุ่งมากและเขาต้องการให้รายการสั้นที่สุดเท่าที่จะเป็นไปได้ดังนั้นเขาจึงไม่ต้องเสียเวลาอ่าน เขาไม่ต้องการให้คุณใช้ลูปดังนั้นคุณจะมีการลดลง 10% สำหรับจำนวนไบต์ที่ไม่ได้ใช้ลูป ข้อกำหนดรายละเอียดของฟังก์ชั่นอยู่ด้านล่าง: แผนที่ Mapฟังก์ชั่นใช้เวลาสองพารามิเตอร์fและlistที่fเป็นฟังก์ชั่นและlistเป็นรายการค่า มันควรกลับนำไปใช้กับองค์ประกอบของแต่ละf listดังนั้นมันจะทำงานเช่น: Map(f,{a,b,c}) ผลตอบแทน { f(a), f(b), f(c) } และ Map(f, {{a,b},{b,c}}) ผลตอบแทน { f({a,b}), f({b,c})} รัง Nestฟังก์ชั่นใช้เวลาสามพารามิเตอร์เช่นกัน: f, arg, timesที่fเป็นฟังก์ชั่นargคือการเริ่มต้นการโต้แย้งของตนและtimesเป็นวิธีการที่หลายต่อหลายครั้งฟังก์ชั่นที่มีการใช้ มันควรจะกลับแสดงออกที่มีfนำมาใช้ครั้งเพื่อtimes argดังนั้นมันจะทำงานเช่น: Nest(f, x, 3) ผลตอบแทน f(f(f(x))) และ Nest(f, {a,b}, 3) ผลตอบแทน f(f(f({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 * …

14
นี่เป็นตัวเลขสามเหลี่ยมที่ถูกตัดทอนหรือไม่?
ลำดับ OEIS ที่เกี่ยวข้อง: A008867 หมายเลขสามเหลี่ยมที่ถูกตัดทอน คุณสมบัติทั่วไปของตัวเลขสามเหลี่ยมคือพวกเขาสามารถจัดเรียงในรูปสามเหลี่ยม ตัวอย่างเช่นใช้ 21 และจัดเป็นสามเหลี่ยมของos: โอ อู OOO oooo ooooo oooooo ลองกำหนด "การตัดปลาย:" การตัดสามเหลี่ยมขนาดเดียวกันจากแต่ละมุม วิธีหนึ่งในการตัดทอน 21 มีดังนี้: . . . OOO oooo . ooo . . oo . (รูปสามเหลี่ยม.ถูกตัดจากต้นฉบับ) oเหลืออีก12 วินาทีดังนั้น 12 จึงเป็นเลขสามเหลี่ยมที่ถูกตัดทอน งาน งานของคุณคือการเขียนโปรแกรมหรือฟังก์ชั่น (หรือเทียบเท่า) ที่ใช้จำนวนเต็มและส่งกลับ (หรือใช้วิธีการส่งออกมาตรฐานใด ๆ ) ไม่ว่าจะเป็นตัวเลขเป็นจำนวนสามเหลี่ยมตัดทอน กฎระเบียบ ไม่มีช่องโหว่มาตรฐาน อินพุตเป็นจำนวนเต็มที่ไม่เป็นลบ การตัดไม่สามารถมีความยาวด้านเกินกว่าครึ่งหนึ่งของสามเหลี่ยมเดิม (เช่นการตัดไม่สามารถซ้อนทับกันได้) …
20 code-golf  math  decision-problem  number-theory  integer  code-golf  number  decision-problem  functional-programming  code-golf  array-manipulation  matrix  code-golf  string  classification  string  code-challenge  binary  compression  decode  code-golf  string  string  code-challenge  balanced-string  encode  code-golf  number-theory  integer  base-conversion  code-golf  math  number-theory  geometry  abstract-algebra  code-golf  array-manipulation  sorting  optimization  code-golf  math  geometry  image-processing  generation  code-golf  string  cops-and-robbers  repeated-transformation  grammars  cops-and-robbers  repeated-transformation  grammars  code-challenge  restricted-source  tips  source-layout  javascript  code-challenge  kolmogorov-complexity  restricted-source  code-golf  combinatorics  counting  math  fastest-code  linear-algebra  code-golf  math  permutations  matrix  linear-algebra  code-golf  string  decision-problem  restricted-source  code-golf  number  array-manipulation  subsequence  code-golf  number  array-manipulation  matrix  code-golf  brainfuck  code-golf  color  code-golf  quine  source-layout  code-golf  subsequence  code-golf  string  ascii-art  code-golf  string  ascii-art  alphabet  code-golf  decision-problem  interpreter  hexagonal-grid  halting-problem  code-golf  string  polynomials  calculus  code-golf  math  decision-problem  matrix  complex-numbers  code-golf  random  code-golf  number  arithmetic 

1
แปลงλ-expressions เป็น SK-expressions
λแคลคูลัสหรือแลมบ์ดาแคลคูลัสเป็นระบบตรรกะขึ้นอยู่กับฟังก์ชั่นที่ไม่ระบุชื่อ ตัวอย่างเช่นนี่เป็นนิพจน์:: λf.(λx.xx)(λx.f(xx)) อย่างไรก็ตามสำหรับจุดประสงค์ของการท้าทายนี้เราจะทำให้สัญลักษณ์ง่ายขึ้น: เปลี่ยนλเป็น\(เพื่อให้พิมพ์ง่ายขึ้น):\f.(\x.xx)(\x.f(xx)) .ในส่วนหัวของแลมบ์ดาไม่จำเป็นเพื่อให้เราสามารถวาง:\f(\xxx)(\xf(xx)) ใช้Unlambdaสไตล์คำนำหน้าโน้ตด้วย`สำหรับการประยุกต์ใช้มากกว่าการเขียนทั้งสองฟังก์ชั่นด้วยกัน (สำหรับคำอธิบายเต็มรูปแบบของวิธีการทำเช่นนี้ดูแปลงระหว่างแลมบ์ดาแคลคูลัสสัญลักษณ์ ):\f`\x`xx\x`f`xx นี่เป็นการทดแทนที่ซับซ้อนที่สุด แทนที่ตัวแปรแต่ละตัวด้วยตัวเลขในวงเล็บตามความลึกของตัวแปรที่สัมพันธ์กับส่วนหัวแลมบ์ดาที่เป็นของมัน (เช่นใช้การทำดัชนี De Bruijn ที่ใช้ 0 ) ตัวอย่างเช่นใน\xx(ฟังก์ชั่นเอกลักษณ์), xในร่างกายจะถูกแทนที่ด้วย[0]เพราะมันเป็นของส่วนหัว (ตามพื้นฐาน 0) พบเมื่อสำรวจภายในการแสดงออกจากตัวแปรไปยังจุดสิ้นสุด; จะถูกแปลงเป็น\x\y``\x`xxxy ตอนนี้เราสามารถวางตัวแปรในส่วนหัวออก\x\y``\x`[0][0][1][0]\\``\`[0][0][1][0] ตรรกะเชิงผสมนั้นเป็นทัวริงทาร์พิทที่ทำจากcalcul-แคลคูลัส (จริง ๆ แล้วมันมาก่อน แต่มันไม่เกี่ยวข้องเลย) "Combinatory ตรรกศาสตร์สามารถถูกมองว่าเป็นตัวแปรของแลมบ์ดาแคลคูลัสซึ่งแลมบ์ดานิพจน์ (แทนการทำหน้าที่เป็นนามธรรม) จะถูกแทนที่ด้วยชุด จำกัด combinators ฟังก์ชั่นดั้งเดิมที่ไม่มีขอบเขต จำกัด ตัวแปร" 1 ตรรกะที่พบได้บ่อยที่สุดคือแคลคูลัสของSK combinatorซึ่งใช้หลักการพื้นฐานต่อไปนี้: K = λx.λy.x S = λx.λy.λz.xz(yz) บางครั้ง Combinator I …

13
Dirichlet Convolution
Dirichlet บิดเป็นชนิดพิเศษของบิดที่ปรากฏเป็นเครื่องมือที่มีประโยชน์มากในทฤษฎีจำนวน จะดำเนินการในชุดของฟังก์ชั่นทางคณิตศาสตร์ ท้าทาย รับฟังก์ชั่นเลขคณิตสองฟังก์ชัน (เช่นฟังก์ชัน ) คำนวณDirichlet convolutionตามที่กำหนดไว้ด้านล่างฉ, gf,gf,gฉ, g: N → Rf,g:N→Rf,g: \mathbb N \to \mathbb R ( ฉ∗ กรัม) : N → R(f∗g):N→R(f * g): \mathbb N \to \mathbb R รายละเอียด เราใช้การประชุม\}0 ∉ N = { 1 , 2 , 3 , … }0∉N={1,2,3,…} 0 \notin \mathbb …

3
สั้นที่สุด a -> b -> ฟังก์ชัน (a -> b) ใน Haskell
ฉันได้รับคำถามต่อไปนี้จากการทดสอบ: เขียนฟังก์ชั่นที่มีประเภทดังต่อไปนี้f และไม่ควรผูกมัดในความหมายใด ๆ ยิ่งรหัสสั้นยิ่งดีa -> b -> (a -> b)ab f a b = \x -> snd ([a,x],b)ฉันมาด้วย คุณสามารถหาบางอย่างที่สวยกว่า? ปัจจุบันผู้ชนะคือ: f _=(.f).const

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