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

ความท้าทายนี้เกี่ยวข้องกับภาษาฮัสเคล โปรดทราบว่าความท้าทายที่ต้องการให้คำตอบเป็นภาษาใดภาษาหนึ่งมักไม่สนับสนุน

30
เคล็ดลับสำหรับการเล่นกอล์ฟใน Haskell
คุณมีเคล็ดลับอะไรสำหรับการเล่นกอล์ฟใน Haskell ฉันกำลังมองหาความคิดที่สามารถนำไปใช้กับปัญหารหัสกอล์ฟโดยทั่วไปซึ่งอย่างน้อยค่อนข้างเฉพาะกับ Haskell กรุณาโพสต์เพียงหนึ่งเคล็ดลับต่อคำตอบ ถ้าคุณยังใหม่กับการเล่นกอล์ฟใน Haskell, โปรดดูได้ที่เป็นคู่มือกฎกอล์ฟใน Haskell นอกจากนี้ยังมีเฉพาะ Haskell ห้องแชท: ของ Monads และผู้ชาย

30
ไวยากรณ์ปราศจากน้ำตาล
ใน Haskell สัญลักษณ์รายการ: [a,b,c] เป็นเพียงน้ำตาลประโยคสำหรับ: a:b:c:[] และสัญกรณ์สตริง: "abc" เป็นเพียงน้ำตาลประโยคสำหรับ: ['a','b','c'] ซึ่งหมายความว่าสตริง: "abc" เหมือนกับ: 'a':'b':'c':[] งาน รับสายคุณควรส่งออกสิ่งที่รุ่น de- ไวยากรณ์จะมีลักษณะเช่นใน Haskell กฎระเบียบ คุณจะได้รับสตริงโดยวิธีการป้อนข้อมูลที่ถูกต้องคุณควรเอาท์พุทสตริงลงท้ายด้วย:[]ด้วยตัวอักษรจากการป้อนข้อมูลที่ล้อมรอบไปด้วยทุกและแยกจากกันโดย' สตริงที่ว่างเปล่าควรเอาท์พุท:[] คุณสามารถสันนิษฐานได้ว่าคุณจะไม่ได้รับอักขระใด ๆ ที่ต้องมีการหลบหนี (เช่นการ'ขึ้นบรรทัดใหม่แท็บ ... ) และข้อมูลนั้นจะอยู่ในช่วง ascii ที่พิมพ์ได้ นี่คือโค้ดกอล์ฟที่คุณควรตั้งเป้าเพื่อลดจำนวนไบต์ของคำตอบของคุณ กรณีทดสอบ "" -> [] "a" -> 'a':[] "Hello, World" -> 'H':'e':'l':'l':'o':',':' ':'W':'o':'r':'l':'d':[]

30
เดี๋ยวก่อนนี่คือภาษาอะไร
เมื่อเร็ว ๆ นี้ฉันมีความสุขในการเขียนโปรแกรม Haskell ที่สามารถตรวจจับได้ว่าNegativeLiteralsส่วนขยายนั้นทำงานหรือไม่ ฉันมากับสิ่งต่อไปนี้: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$1==u(-1) ลองออนไลน์! สิ่งนี้จะพิมพ์TrueตามปกติและFalseอย่างอื่น ตอนนี้ฉันสนุกมากที่ได้ทำสิ่งนี้ฉันกำลังขยายความท้าทายให้กับทุกคน ส่วนขยายภาษา Haskell อื่น ๆ ที่คุณสามารถถอดรหัสได้ กฎระเบียบ จะแตกเป็นส่วนขยายของภาษาโดยเฉพาะอย่างยิ่งคุณต้องเขียนโปรแกรม Haskell ที่รวบรวมทั้งที่มีและไม่มีนามสกุลภาษา (คำเตือนจะมีการปรับ) และผลแตกต่างกันสองไม่ใช่ข้อผิดพลาดค่าทำงานเมื่อมีนามสกุลภาษาและมันปิด (โดยการเพิ่มNoคำนำหน้า ส่วนขยายภาษา) ด้วยวิธีนี้รหัสข้างต้นอาจย่อให้เหลือเพียง: data B=B{u::Integer} instance Num B where{fromInteger=B;negate _=B 1} main=print$u(-1) ซึ่งพิมพ์1และ-1. วิธีใดก็ตามที่คุณใช้ในการถอดรหัสส่วนขยายจะต้องเฉพาะกับส่วนขยายนั้น อาจมีวิธีที่จะตรวจจับการตั้งค่าสถานะของคอมไพเลอร์หรือ LanguageExtensions ที่เปิดใช้งานโดยพลการหากวิธีการดังกล่าวไม่ได้รับอนุญาต คุณสามารถเปิดใช้งานส่วนขยายภาษาเพิ่มเติมหรือเปลี่ยนการเพิ่มประสิทธิภาพของคอมไพเลอร์โดย-Oไม่ต้องเสียค่าใช้จ่ายนับไบต์ ส่วนขยายภาษา คุณไม่สามารถแตกนามสกุลภาษาใด ๆ …

12
มาสร้าง Diet Haskell กันเถอะ
Haskell มีสิ่งอันดับที่สามารถเขียนได้เช่น (a,b,c) อย่างไรก็ตามนี่เป็นเพียงน้ำตาล syntactic สำหรับ (,,)a b c โดยทั่วไปn tuple สามารถเกิดขึ้นได้ด้วยn-1 , s ระหว่าง(... )ตามด้วยองค์ประกอบที่คั่นด้วยช่องว่าง ตัวอย่างเช่น 7-tuple (1,2,3,4,5,6,7)สามารถสร้างขึ้นโดย (,,,,,,)1 2 3 4 5 6 7 เนื่องจาก Haskell ไม่มี 1-tuples จึงไม่สามารถสร้างได้ คุณจะไม่รับผิดชอบต่อสิ่งอันดับที่ว่างเปล่า tuples ที่ซ้อนกันสามารถเกิดขึ้นได้โดยใช้ parens เพื่อแทนที่ลำดับของการดำเนินการ ((1,2),3) == (,)((,)1 2)3 ในฐานะที่เป็นส่วนหนึ่งของการติดตามของเราที่จะลบน้ำตาล syntactic ทั้งหมดออกจาก Haskell ฉันจะขอให้คุณเขียนโปรแกรมที่ลบน้ำตาล syntactic จาก Tuples ของ Haskell …

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

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จะไม่ หมายความว่า: …

30
กู้กำลังสำคัญจากพลังพิเศษ
คำจำกัดความ : พลังพิเศษเป็นจำนวนธรรมชาติที่สามารถแสดงในรูปแบบ p nโดยที่ p คือจำนวนเฉพาะและ n เป็นจำนวนธรรมชาติ ภารกิจ : เมื่อได้รับพลังพิเศษ p n > 1 ให้คืนค่านายกรัฐมนตรี ทดสอบ : input output 9 3 16 2 343 7 2687 2687 59049 3 เกณฑ์การให้คะแนน : นี่คือรหัสกอล์ฟ คำตอบที่สั้นที่สุดในการชนะไบต์
13 code-golf  arithmetic  primes  king-of-the-hill  python  board-game  code-golf  number  subsequence  code-golf  ascii-art  code-golf  array-manipulation  decision-problem  grid  fastest-algorithm  logic-gates  logic  code-golf  cards  code-golf  rational-numbers  code-golf  math  number  sequence  code-golf  array-manipulation  integer  code-golf  number  array-manipulation  code-golf  number  sequence  decision-problem  code-golf  ascii-art  number  code-challenge  sequence  arithmetic  sorting  code-golf  date  fastest-algorithm  code-golf  string  number  random  combinatorics  code-golf  combinatorics  code-golf  ascii-art  base-conversion  code-golf  array-manipulation  code-golf  string  code-golf  string  number  arithmetic  code-golf  kolmogorov-complexity  code-golf  string  array-manipulation  json  code-golf  puzzle-solver  code-golf  binary  graph-theory  code-golf  arithmetic  haskell  code-golf  string  cipher  code-golf  code-golf  string  parsing  alphabet  code-golf  string  code-golf  ascii-art  code-golf  string  number  code-golf  string  balanced-string 

2
เป็นวิธีที่ดีในการจัดการกับงานที่ต้องใช้อาร์เรย์โดยใช้ Haskell อะไร
บ่อยครั้งที่งานต้องใช้อาร์เรย์จริง รับอินสแตนซ์งานเพื่อใช้ Befunge หรือ> <> ฉันพยายามใช้Arrayโมดูลสำหรับสิ่งนี้ แต่มันยุ่งยากจริงๆเพราะมันรู้สึกว่าฉันเขียนโค้ดมากเกินไป ใครสามารถช่วยฉันได้บ้างในการแก้ปัญหาโค้ดกอล์ฟดังกล่าวให้น้อยลงและทำงานได้มากขึ้น?

7
Code-Golf: ลำดับ Farey (I)
ท้าทาย ในภารกิจนี้คุณจะได้รับจำนวนเต็ม N (น้อยกว่า 10 ^ 5) ออกลำดับ Fareyของคำสั่ง N อินพุต N ถูกกำหนดในบรรทัดเดียวอินพุตถูกยกเลิกโดย EOF อินพุต 4 3 1 2 เอาท์พุต F4 = {0/1, 1/4, 1/3, 1/2, 2/3, 3/4, 1/1} F3 = {0/1, 1/3, 1/2, 2/3, 1/1} F1 = {0/1, 1/1} F2 = {0/1, 1/2, 1/1} ข้อ จำกัด จำนวนอินพุตไม่เกิน 10 ^ …
10 code-golf  math  code-golf  math  code-golf  number  number-theory  code-golf  math  arithmetic  repeated-transformation  code-golf  geometry  popularity-contest  code-golf  code-golf  tips  haskell  math  fastest-algorithm  code-golf  combinatorics  code-golf  math  polynomials  rational-numbers  code-golf  code-golf  popularity-contest  javascript  code-golf  kolmogorov-complexity  code-golf  code-golf  math  combinatorics  permutations  code-challenge  restricted-source  random  array-manipulation  code-challenge  generation  code-golf  code-golf  ascii-art  arithmetic  division  code-challenge  number  code-golf  math  number  binary  code-golf  ascii-art  code-golf  interpreter  stack  code-golf  internet  networking  code-golf  math  code-golf  ascii-art  code-golf  math  sequence  code-golf  hello-world  restricted-source  code-golf  ascii-art  code-golf  geometry  code-golf  kolmogorov-complexity  pi  code-golf  math  combinatorics  permutations  code-golf  math  code-challenge  ascii-art  code-golf  string  code-golf  quine  code-golf  math  floating-point  golfscript  code-golf  string  code-golf  sliding-puzzle  code-challenge  arithmetic  code-golf  math  code-golf  geometry  optimized-output 

3
เลขคณิตตีความ
ข้อเท็จจริงที่รู้จักกันเล็กน้อยคือถ้าคุณเปิดส่วนขยายภาษามากพอ (ghc) Haskell จะกลายเป็นภาษาที่แปลแบบไดนามิก! ตัวอย่างเช่นโปรแกรมต่อไปนี้ใช้การเพิ่ม {-# Language MultiParamTypeClasses, FunctionalDependencies, FlexibleInstances, UndecidableInstances #-} data Zero data Succ a class Add a b c | a b -> c instance Add Zero a a instance (Add a b c) => Add (Succ a) b (Succ c) มันไม่ได้ดูเหมือน Haskell อีกต่อไป สำหรับหนึ่งแทนที่จะใช้งานมากกว่าวัตถุเราดำเนินงานมากกว่าประเภท แต่ละหมายเลขเป็นประเภทของตัวเอง แทนที่จะเป็นฟังก์ชั่นเรามีคลาสประเภท …
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.