แฟ็กทอรี่ในไฮกุ!


60

งาน

สร้างโปรแกรมที่คำนวณแฟคทอเรียลของตัวเลขโดยไม่ใช้ฟังก์ชันแฟกทอเรียล ง่าย? สิ่งที่จับได้คือคุณต้องเขียนโปรแกรมทั้งหมดของคุณ (รวมถึงการทดสอบ) ในรูปแบบไฮกุ

ทำงานไม่เพียงพอ
คุณสามารถใช้ไฮกุสได้มากเท่าที่คุณต้องการ แต่เมื่อออกเสียงมันจะต้องเป็นไปตามรูปแบบ 5-7-5 พยางค์

เกณฑ์การให้คะแนน

นี่คือการดังนั้นคุณต้องได้รับ upvotes มากที่สุดเพื่อชนะ โปรแกรมของคุณจะต้องประกอบด้วยไฮกุอย่างน้อยหนึ่งตัวและไฮกุทั้งหมดจะต้องเสร็จสมบูรณ์

เมื่ออ่านรหัสบรรทัดแรกของแต่ละไฮกุจะมี 5 พยางค์ที่สองจะมี 7 และที่สามจะมี 5


5
ฟังดูเหมือนเหมาะสมที่สุดสำหรับบางสิ่งที่เขียนใน Shakespeare: shakespearelang.sourceforge.net/report/shakespeare/…
เดนิสเดอเบอร์นาดี

2
ดูเหมือนว่าคำตอบส่วนใหญ่จะไม่สนใจ " รวมถึงการทดสอบ "
Anko

5
ฉันชอบวิธีที่คุณเชื่อมโยงไปยังเว็บไซต์ที่บอกว่าสิ่งที่สำคัญสำหรับไฮกุคือ (a) kiruและ (b) การอ้างอิงตามฤดูกาลจากนั้นขอเฉพาะส่วนเพิ่มเติมของการนับโมรา (หรือพยางค์ในภาษาที่ไม่เกี่ยวข้อง มันมีโมราจริงๆ😸
Christopher Creutzig

1
ฉันเห็นด้วยกับ @ChristopherCreutzig - มันน่าสนใจกว่านี้ถ้าเราต้องแน่ใจว่ามีการอ้างอิงและการตัดตามฤดูกาล น่าเศร้าที่เรามักมองข้ามปัจจัยพื้นฐานของไฮกุ ดูเหมือนว่าฉันthenหรือเครื่องหมายวรรคตอนสามารถช่วยในการตัด สำหรับkigoไม่แน่ใจ ...
Darren Stone

ฉันไม่ได้เป็นผู้เชี่ยวชาญใน Haikus แต่มีบางอย่างที่คาดหวังคุณภาพโคลงสั้น ๆ จนถึงตอนนี้ฉันเห็นคำตอบเดียวที่มี
SebastianH

คำตอบ:


54

หูฟัง

(ประเมินในเวิร์กสเปซเปิดไดอะล็อกถามหมายเลขและพิมพ์ผลลัพธ์ใน stdout):

"in" "this" 'poem,' "you" "must"
"pronounce" "characters" "like" "these:"
"return(^)," "and" "times(*);" "please".

"but" 'never' "in" "here"
"tell" "anyone" "about" "those"
"few" "parentheses".

"otherwise" "these" "words" 
"are" "stupid" "and" "this" "coded" 
"rhyme" "is" "wasted" Time.

"let" "us" "now" "begin" 
"by" "defining," "in" Object
"and" compile: "the" "rhyme:"

'fac: "with" arg"ument"
"to" "compare" arg <"against" 2 ">"
"and" ifTrue: [ ^"return"

"["1] "or" ifFalse: "then"
["return"^ arg *"times" "the" "result"
"of" ("my"self ")getting"

"the" fac:"torial"
"of" "the" "number" arg "minus"-
1 "[(yes," "its" "easy")]'.

("Let" "me" "my"self "ask"
"for" "a" "number," "to" "compute"
"the" fac:"torial"

("by" "opening" "a" 
"nice" Dialog "which" "sends" "a"
request: "asking" "for"

'the Number to use' 
"(which" "is" "(" "treated" ) asNumber)
"then" print "the" "result".

ฉันพยายามที่จะนำมาไตร่ตรอง ("ในบทกวีนี้") และ kigo เช่นกัน นอกจากนี้ยังมีองค์ประกอบสัมผัสสไตล์ตะวันตกบางรายการ (โปรด -> เหล่านี้, เวลา -> สัมผัส); อย่างไรก็ตามการที่ไม่ได้เป็นเจ้าของภาษาญี่ปุ่นหรือภาษาอังกฤษก็ไม่ยกโทษให้รายละเอียดโวหารใด ๆ ;-)


BTW: หากต้องการลองใน Squeak / Pharo ให้แทนที่ "Dialog" ด้วย "FillInTheBlankMorph" และ "print" โดย "inspect"
blabla999

40

Haskell

fact :: Int -> Int          -- fact is Int to Int
fact x = product (range x)  -- fact x is product range x
range x = [1..x]            -- range x is 1 [pause] x

เวลาการศึกษาของ Haskell:

  • range xฟังก์ชั่นสร้างรายชื่อของจำนวนเต็มจาก 1 xถึงคุณค่าของการเป็น
  • fact xฟังก์ชั่นคูณค่าทั้งหมดของรายการrange xร่วมกันในการคำนวณผล
  • บรรทัดแรกบอกว่าfactฟังก์ชั่นใช้จำนวนเต็มและส่งกลับจำนวนเต็ม

3
ขาดจุดที่ค่อนข้าง @JanDvorak?
jwg

2
รูปแบบฟังก์ชั่นมากกว่า หากนี่คือการเขียนโปรแกรมจริงฉันจะต้องรับผิดชอบกรณี
โอเวอร์โฟลว์

7
range x is 1 to xคือ 6 พยางค์แม้ว่า
David Z

9
@ David ฉันอ่านมันว่า "range x is one [ละครหยุดชั่วคราว] x"
Anko

3
ฉันขอแนะนำLearn You a Haskellหากคุณต้องการเรียนรู้ Haskell
danmcardle

40

Java - 2 ไฮกุส

protected static
        int factorial(int n) {
    if (n == 0) {
        return n + 1;
    } return factorial(n
            - 1) * n;}

แม้เมื่อคำถามไม่ใช่ฉันก็มักจะเล่นกอล์ฟเพื่อหาคำตอบ ในกรณีนี้ฉันเล่นกอล์ฟจำนวนไฮกุส

ฉันออกเสียงมัน:

การป้องกันแบบคงที่
int แฟคทอเรียล int n
ถ้า n เป็นศูนย์

ย้อนกลับ n บวกหนึ่ง
แฟกทอเรียลย้อนกลับ n
ลบหนึ่งคูณ n


โปรแกรมทดสอบ:

class Factorial {                                    // class Factorial
    public static void main(String[]                 // public static void main string
            command_line_run_args) {                 // command line run args

        int i = 0;                                   // int i is zero
        while (7 != 0)                               // while seven is not zero
            System.out.                              // System dot out dot

                    println(i + "!"                  // print line i plus not
                            + " = " + factorial(     // plus is plus factorial
                            i += 1));}               // i plus equals 1

    protected static
            int factorial(int n) {
        if (n == 0) {
            return n + 1;
        } return factorial(n
                - 1) * n;}}

โปรดทราบว่าโปรแกรมนี้เริ่มส่งออก0อย่างรวดเร็ว นั่นเป็นผลมาจากการล้น คุณสามารถจะได้รับหมายเลขที่ถูกต้องมีขนาดใหญ่โดยการเปลี่ยนแต่ละที่จะintlong

การออกเสียงมาตรฐานสำหรับSystem.out.printlnและpublic static void main(String[] args)สะท้อนให้เห็นในโปรแกรม


2
ขออภัยสำหรับการยกเลิกการโหวต; ฉันต้องการปรับปรุงโซลูชัน Haskell
John Dvorak

26

APL

factorial←{×/⍳⍵}

แฟกทอเรียลคือ
ผลผลิตของธรรมชาติ
สูงถึงโอเมก้า


1
+1 สำหรับ <- ทำงานเป็นคิเรจิไม่ว่าคุณจะรู้ว่านั่นคือสิ่งที่คุณกำลังทำอยู่หรือไม่
Jonathan Van Matre

@JanathanVanMatre LOL ไม่ได้เป็นเบาะแส! ฉันใช้พจนานุกรมเพื่อนับพยางค์แม้ว่า (ไม่ใช่เจ้าของภาษา) ฉันเพิ่มเส้นประเพื่อแสดงคิเรจิ
เบีย

2
+1 สำหรับทั้งง่ายและไพเราะในภาษาอังกฤษ
imallett

เรียบง่าย แต่สวยงาม
FUZxxl

1
บันทึกสามไบต์: factorial←×/⍳"สูงถึงอินพุต"
อดัม

17

เช็คสเปียร์

The Products of Love:
A haiku tragedy with
mathy undertones.

Romeo, a man.
Juliet, a maiden fair.
Friar John, a monk.

Act I: A Cycle.
Scene I: Pertinent Values.
[Enter Romeo]

[Enter Friar John]
Romeo: Listen to thy
heart. Thou art thyself.

Friar John: Thou art
as forthright as a songbird.
[Exit Friar John]

[Enter Juliet]
Romeo: Thou art as fair
as a violet.

Scene II: Questioning
Themselves. [Exit Juliet]
[Enter Friar John]

Friar John: Art thou
as just as the sum of me
and a nobleman?

Romeo: If so,
let us proceed to scene III.
[Exit Friar John]

[Enter Juliet]
Romeo: Thou art as good
as the product of

thyself and myself.
Juliet: Thou art as fierce
as the sum of an

eagle and thyself.
We must return to scene II.
Scene III: A Lengthy

Title for a Brief
Dénouement; Or, The Last Word.
[Exit Friar John]

[Enter Juliet]
Romeo: Open your heart.
[Exit Romeo]

กรณีทดสอบ (จินตนาการ):

แม้ว่าความยาวของมันจะเป็นเพียงโปรแกรมเดียวเท่านั้นที่ใช้เป็นจำนวนเต็มเดียวในการป้อนข้อมูล ดังนั้น:

6 ↵ 720
7 ↵ 5040
0 ↵ 1    1 ↵ 1

("หก, เจ็ดยี่สิบ. / เจ็ด, ห้าพันสี่สิบ / ศูนย์, หนึ่ง. หนึ่ง, หนึ่ง")


5
ฉันไม่แน่ใจว่าฉันรู้สึกอย่างไรกับความจริงที่ว่าฉันสามารถบอกได้ว่านี่คือรหัสที่ถูกต้อง
Randomra

12

Python 2, 4 Haikus

haifac.pyสมบูรณ์โปรแกรมหลาม 2 ทำงานเป็นpython haifac.py <n>

#run this full program
import operator as\
op; import sys#tem

#please provide an arg
n = sys.argv[1]
def haifac (n):

    if n < 1:
        return 1#to me at once
    else:#do something else

        return op.mul(
            n, haifac(n - 1))
print haifac(int(n))

ออกเสียง:

เรียกใช้
ตัวดำเนินการนำเข้าโปรแกรมเต็มรูปแบบนี้เป็น
ระบบนำเข้า op

โปรดระบุ arg
n เท่ากับ sys arg v 1
กำหนด Hai fac n

ถ้า n น้อยกว่า 1
ให้ฉัน1 กลับไป
ทำอย่างอื่นอีกครั้ง

return op dot mul
n hai fac n ลบ 1
พิมพ์ hai fac int n


1
ฉันชอบการใช้#to me at onceเพื่อทำให้มิเตอร์ทำงาน ...
Floris

2
และฉันชอบการขึ้นบรรทัดใหม่หนีในการเริ่มต้น :)
ฮันเนสเอช

2
ฉันคิดว่าการใช้ความคิดเห็นนั้นเป็นการโกง
Ypnypn

9

GolfScript, 2 ไฮคัส

),{0>},{,,*}*

อ่านเป็นไฮกุแจกแจงการกดแป้นแต่ละครั้ง:

#close parenthesis
#comma open-brace zero
#greater-than close-brace

#comma open-brace
#comma comma asterisk
#close-brace asterisk

กรณีทดสอบ (5 ไฮคัส):

[1 2 3]4+          #generate the array [1 2 3 4]
{                  #start creating block
),{0>},{,,*}*      #actual factorial code
}%                 #close block and map across array (so that we should have [1! 2! 3! 4!])
[1 2 6]2.3**12++=  #generate the array [1 2 6 24] and check for equality

อ่านเป็นไฮกุ:

#open-bracket one
#space two space three close-bracket
#four plus open-brace

#close parenthesis
#comma open-brace zero
#greater-than close-brace

#comma open-brace
#comma comma asterisk
#close-brace asterisk

#close-brace percent-sign
#open-bracket one space two
#space six close-bracket

#two period three
#asterisk asterisk one
#two plus plus equals

8

ออกมา

: fugu 1              \ colon fugu one                = 5
swap 1 + 1 ?do        \ swap one plus one question do = 7
i * loop ;            \ eye star loop semi            = 5

Fuguเป็นหน้าที่และความพยายามของฉันที่kigo : ปลาปักเป้าเป็นข้อมูลอ้างอิงในช่วงฤดูหนาว ฉันตั้งใจ?doจะเป็นคิเรจิ , จุดเปลี่ยน, ก่อนที่จะนับลูป


7

PHP, 4 ขั้นตอน

ไฮกุทั้งหมดในสัมผัส !

function haiku($can) { // function haiku can (5)
    if ($can == 1) // if can is equal to one (7)
        return ++$stun; // return increase stun (5)

    if ($can == 0) { // if can equals ou (5)
        echo "It is one, you know! "; //echo "It is one, you know! " (7)
        return 1+$blow; } //return one plus blow (5)

    if ($can > $fun) { //if can exceeds fun (5)
        return haiku($can-1) //return haiku can less one (7)
            *$can; }} //multiplied by can (5)

if (null == $knee) { // if null equals knee (5)
    $free=0+3; // free equals zero plus three (7)
    echo haiku($free); } // echo haiku free (5)

1
return plus plus stunผมอ่านสามบรรทัด
corsiKa

ฉันชอบอันนี้จริงๆ
BenjiWiebe

7

ช่องว่าง

นี้จะทำให้การใช้งานของหนึ่งในที่มีชื่อเสียงที่สุด ไฮกุ s และการจัดการที่ดีได้รับการเขียนเกี่ยวกับเรื่องนี้

ไม่รู้เลยว่าทำไมไม่มีใครทำแบบนี้มาก่อนมันไม่ต้องใช้ความพยายามเลย!

ก่อนอื่นต้องอ่านบทกวีฉันต้องการให้คุณเอนหลังผ่อนคลายและเพลิดเพลินไปกับความสงบที่เกิดจากความว่างเปล่าอันยิ่งใหญ่ที่ล้อมรอบบทกวี มันเน้นสระน้ำที่ล้อมรอบด้วยภูมิทัศน์อันกว้างใหญ่

古池や    
蛙飛びこむ               
水の音             






































































































































ซอร์สโค้ดบน filebin

ในกรณีที่คุณไม่พูดภาษาญี่ปุ่นจะมีการออกเสียงดังต่อไปนี้:

fu ru i ke ya

ka wa zu ถึง bi ko mu

mi zu no o ถึง

ตามธรรมชาติแล้วมันก็จะถูกนับโดย morae kirejiเป็นや( ยา )ที่Kigo (อ้างอิงตามฤดูกาล) เป็น蛙( kawazuกบ -> ฤดูใบไม้ผลิ)

การใช้ตัวแปล linux จากหน้าเป็นทางการคุณสามารถใช้สิ่งนี้:

$ echo 5 | ./wspace .ws


6

มาติกา

f[x_]:=     (* f of x defined *)
 x f[x-1]   (* x times f of x less 1 *)
f[1]=1      (* Mogami River *) 

คนเดินถนนอาจอ่านบรรทัดสุดท้ายว่า "f of 1 คือ 1" แต่ฉันไม่สามารถต้านทานตะโกนออกไปที่ Basho ได้

การทดสอบ:

Table[f[n],     (* Table f of n *)
 {n, 1, 10, 1}] (* n from 1 to 10 by 1 *)
ListLogPlot[%]  (* ListLogPlot output *)

ที่กลับมา:

(1, 2, 6, 24, 120, 720, 5040, 40320, 362880, 3628800)

พล็อตการบันทึกค่า

Linguistic Distinctiveness Bonus Haiku (แรงบันดาลใจจาก @cullullion)

Rewrite any term
High-level functions abound —
Mathematica

5

ชุด

@set /a t=1 &^
for /L %%a in (2, 1, %1) ^
do @set /a t*=%%a

การออกเสียง ; ละเว้นนิพจน์ทางคณิตศาสตร์รวมถึงสัญลักษณ์เหล่านี้@ / % ^ , ( ):

ตั้งค่าที่ 1 และ
สำหรับ L a ใน 2 1 1
ทำชุด ata

บันทึก; สิ่งนี้คำนวณแฟคทอเรียล, มันไม่เอาท์พุท - ตัวแปรtมีแฟคทอเรียล

ไฮกุ / รหัสต่อไปนี้สามารถผนวกเข้ากับไฟล์แบตช์เดียวกันเพื่อส่งออกแฟคทอเรียล ( |ซึ่งออกเสียงเป็นไพพ์)

@echo %t% ||^
When will you learn, unclemeat ^
Why must you use Batch?

5

Clojure

(->> *command-line-args*                ; thrush com-mand line args
  seq last read-string range (map inc)  ; seq last read string range map inc
  (reduce *) println)                   ; re-duce times print-lin

5

F #

let fact n =
    [1..n] |>
    Seq.fold (*) 1

ให้ความจริงของ n มา
จากหนึ่งถึง n, ใช้
Seq dot fold star หนึ่ง


ขโมยของฉัน ... ;)
Jwosty

5

newLISP

วงเล็บไม่เด่นชัด:

(define (fac n (so))            ; define fac n so 
(if (= n 0) 1                   ; if equals n zero 1
(* n (fac (dec n)))))           ; times n fac dec n

(for (n 0 10)                   ; for n zero ten
; let's test from zero to ten
(println (fac n thus)))         ; printline fac n thus

รหัสเสียงกระเพื่อมประกอบด้วย

วงเล็บจำนวนมาก

และฟังก์ชั่นบางอย่าง


รักความเห็นไฮกุ ใช้เป็นแรงบันดาลใจและเพิ่มคำตอบของฉัน
Jonathan Van Matre

5

Perl

$r = 1; for(1           # r gets one for one
.. pop @ARGV) { $r *=   # to pop arg v r splat gets
$_; } print $r;         # the default print r

โยนสิ่งนี้ลงในไฟล์ชื่อ f.pl

และผลลัพธ์:

$ perl f.pl 3
6 $ perl f.pl 1-1
1 $ perl f.pl 10
3628800 $ 

ซึ่งอ่านเป็น:

perl fpl สาม
perl fpl หนึ่งน้อยกว่าหนึ่ง
perl fpl สิบ

1
คุณออกเสียงการทดสอบใน 7-5-7 อย่างไร
Christopher Creutzig

@ChristopherCreutzig ฉันสามารถรับ 5 และ 6 ในนั้นมีอย่างดีสำหรับการทดสอบ ('perl fpl สาม' (5) และ 'perl fpl ze-ro' (6)) ... ฉันไม่สามารถเข้าใจถึง 7 อันที่แสดงให้เห็น การทดสอบที่จำเป็น

@ChristopherCreutzig คิดออกเคล็ดลับสำหรับมัน ขอบคุณสำหรับการเตือนฉันถึงความต้องการนั้น (แม้ว่าจะเป็นความยุติธรรม 1-1 ไม่ได้ทดสอบ '0' แต่ให้ผลเหมือนกัน - ใช้ได้กับศูนย์ด้วย)

5

LiveScript

ยุคนี้:

prelude = ^^ do                       # prelude is clone do
  require \prelude-ls                 # require prelude dash ls
{ product } = prelude                 # product is prelude

story = (ah) ->                       # story is ah such:
  ones-misery = (one) ->              # one's misery is one such
    let death = product               # let death be product

      fight = [1 to one]              # fight is one to one
      why = (one) -> death <| fight   # why is one such death take fight
  ones-misery ah                      # one's misery ah

room = console.log                    # room is console log
room <| (story 10)!                   # room take story three bang
[null of { use : this }]              # no of use is this

พิมพ์ซึ่งเป็น3628800 10!มันเป็นวงเวียนเล็ก ๆ น้อย ๆ : ฟังก์ชันstoryส่งคืนฟังก์ชันones-miseryซึ่งจะส่งคืนคำตอบเสมอ มันเป็นวิธีที่ดีกว่า

ไม่มีความเห็นของฟิลเลอร์หรือสตริงที่ไม่จำเป็น!


เรื่องราวการแก้ไขข้อบกพร่องโบนัส:

ฉันระเบิดเสียงหัวเราะ
เมื่อได้รับแจ้งว่ามีข้อผิดพลาด
" deathคือundefined"


3
ฮ่า ๆ , คุณคงไม่ได้กดจุดบกพร่องนั้นถ้าคุณมี "ความตาย =! ภูมิใจ" poetryfoundation.org/poem/173363
Jonathan Van Matre

5

Haskell

อันนี้จะเป็นบทกวีไฮกุ!

ความจริง 0 = 1 - ค่าศูนย์เป็นหนึ่ง
ความจริงตัน = ตัน * (ความจริงทำให้งัน) - ตันตันคือเวลาจริงความตัน
        โดย stun = pred ton - ที่ใด ๆ stun คือ pred ton

ใช่

หมายเหตุ: Pred หมายถึงหมายเลขก่อนหน้า นอกจากนี้ใน Haskell คุณสามารถมีหลายคำจำกัดความของฟังก์ชั่นและคนแรกที่ทำให้รู้สึกใช้


สง่างาม! (ฟิลเลอร์)
แมว

4

Ruby - หนึ่งไฮกุ

ARGV.first.to_i.
 tap do |please| puts 1.upto(
 please ).inject( :*) end

อ่าน (ไม่ใช้เครื่องหมายวรรคตอน แต่รวมถึงหนึ่งไอคอนแสดงอารมณ์) เช่นนี้:

 arg vee first to i
   tap do please puts one up to
 please inject smile end

ไม่มีเอาต์พุตสำหรับ 0!
200_success

@ 200_success: ขอบคุณ ฉันอาจต้องใช้ชีวิตกับสิ่งนั้นมันไม่ได้อยู่ในข้อกำหนดอย่างเคร่งครัดดังนั้นฉันจะมีความคิด
Neil Slater

การทดสอบนั้นมีจุดประสงค์เพื่อเป็นไฮกุ ฉันคิดถึงสิ่งนั้นเมื่ออ่านครั้งแรกของฉัน
Jonathan Van Matre

@ Jonathan Van Matre: ใช่ฉันก็พลาดเหมือนกัน ดูเหมือนว่าแม้คำตอบยอดนิยมจะไม่รบกวนกับสิ่งนี้ เนื่องจากของฉันอยู่ในบรรทัดคำสั่งจึงเป็นการยากที่จะได้รับหลายบรรทัดฉันเดาว่าฉันควรลบการทดสอบในตอนนี้เพื่อให้มันเป็นคำตอบที่ได้มาตรฐาน . .
Neil Slater


3

Perl

ฉันรู้ว่ามันผิดกฎที่จะใช้ฟังก์ชั่นสำเร็จรูป แต่นี่คือสิ่งที่ฉันได้รับ

ลองนึกภาพงานของคุณคือสั่งให้สัตว์ฟันแทะขนาดใหญ่กว่า:

use Math::BigRat; use
feature 'say'; use warnings; say
new Math::BigRat($_)->bfac

ฉันสามารถเดาได้ว่าคำสุดท้ายหมายถึงอะไรและมันออกเสียงอย่างไร แต่ฉันรับรองว่ามันเป็นหนึ่งพยางค์ เห็นได้ชัดว่าเขาไม่เข้าใจสิ่งที่คุณต้องการจากเขาดังนั้นคุณต้องทำอย่างละเอียด (ผ่อนคลายมาตรฐานคุณภาพในขณะที่คุณอดทน):

use Math::BaseConvert
':all'; no strict subs; no warnings;
reset and say fact($_)

ยังคงไม่มีประโยชน์ จากนั้นคุณต้องอธิบายเป็นภาษาอังกฤษธรรมดา:

no strict; no warnings;
use Math::Combinatorics;
say factorial($_)

เกิดอะไรขึ้นต่อไปฉันไม่รู้ แต่รหัสถูกต้อง:

perl -nE 'use Math::BigRat; use feature "say"; use warnings; say new Math::BigRat($_)->bfac'
42
1405006117752879898543142606244511569936384000000000

และ

perl -nE 'use Math::BaseConvert ":all"; no strict subs; no warnings; reset and say fact($_)'
33
8683317618811886495518194401280000000

และ

perl -nE 'no strict; no warnings; use Math::Combinatorics; say factorial($_)'
16
20922789888000

3
"ฉันรับรองว่ามันเป็นหนึ่งพยางค์" :)
cormullion

1
น่าเสียดายที่คุณไม่สามารถโยนCoy error ได้

นี่เป็นคำตอบเดียวที่มีคุณภาพเหมือนโคลงสั้น ๆ :)
SebastianH

1
@ เซบาสเตียนเอชขอบคุณ :) แม้ว่าฉันจะโกงในขณะที่คนอื่นพยายามเล่นตามกฎ
user2846289

2

หลาม

lambda n: reduce(
    lambda a, b: a * b,
    range(1, n), n)

วิธีที่ฉันอ่านมัน:

lambda n: reduce
lambda a b: a times b
range 1 to n, n

`


สร้างเอาต์พุต buggy เป็น 0!
200_success

2

C

#include <std\
io.h> 
#include \
<stdlib.h>

int main(int argc
 , char** argv)
{   // iteratively
    // compute factorial here
long int n = \
0, i \
= 0, r = \
1 /*
product starts at one*/;

if (argc 
> 1) { n = 
strtol(argv[\
1], NULL, 10)
; if (n 
< 0) {
       printf("Arg must\
       be >= 0\n");
       exit(-
    1);}
} i = 
n;
while (i) { r 
= r * i;
    i
--;
} /* print
the result*/ printf(
"%d factorial\
equals %d\
\n", n
, r);
/*done*/}

ออกเสียง:

ปอนด์รวมถึงมาตรฐาน
I / O
มาตรฐานh จุดปอนด์รวมถึงlib lib มาตรฐาน h

ค. หลัก int
เครื่องหมายจุลภาคถ่าน star star arg v
เปิดวงเล็บปีกกาข้อคิดเห็น

ซ้ำ
คำนวณปัจจัยที่นี่
int ยาวเท่ากับ n

ศูนย์จุลภาคฉัน
เท่ากับศูนย์คอมม่า r
เท่ากับหนึ่งความคิดเห็น

ผลิตภัณฑ์เริ่มต้นที่หนึ่ง
อัฒภาคหาก arg c
มากกว่าหนึ่ง

วงเล็บปีกกาเปิด n คือ
str-to-l ของ arg v sub
หนึ่งคอมม่า NULL คอมม่าสิบ

อัฒภาคถ้า
n น้อยกว่าศูนย์เริ่ม
printf arg ต้อง

จะมากกว่าหรือ
เท่ากับศูนย์เครื่องหมายแบ็กสแลช
n อัฒภาค

ออกเชิงลบ
วงเล็บปีกกาหนึ่งอัฒภาค
วงเล็บปีกกาฉันเท่ากับ

อัฒภาค
ขณะที่ฉันเปิดวงเล็บปีกกา
เท่ากับ r คูณ i

อัฒภาค
ลดเครื่องหมายอัฒภาค
ปิดวงเล็บแสดงความคิดเห็นพิมพ์

ผลการพิมพ์
ร้อยละแฟกทอเรียล
เท่ากับเปอร์เซนต์ d

ตี n จุลภาคคอม
ม่า r เซมิโคลอน
ความคิดเห็นเสร็จสิ้นวงเล็บปีกกา


โดย#ทั่วไปแล้วตัวละครนั้นจะมีความคมชัดหรือมีความคมชัดของoctothorpeในรหัส C
FUZxxl

1

C # - 3 ไฮกุส

ฉันลบ C # ปกติโดยใช้เนมสเปซและความหมายของคลาสซึ่งจะเป็นไฮกุที่ 4

public static void
Main(){int num = Convert.
ToInt32

(Console.ReadLine());
 Console.WriteLine(num ==
 0 ? 1 :

Enumerable.
Range(1, num).Aggregate
((i, j) => i * j));}

ซึ่งฉันอ่านว่า

public static void 
Main int num equals Convert
To int thirty-two

Console dot Read line
Console Write line num equals
zero? then one, else

Enumerable
Range 1 to num aggregate
i j i times j

1

Haskell

module Haiku where          -- read literally.
fac x = let in do           -- = is read as 'equals'
product [1..x]              -- product one to x

โปรดทราบว่าโมดูล .. ที่จะถูกเพิ่มโดยอัตโนมัติในรหัส Haskell ใด ๆ โดยไม่ได้มันในการรวบรวมจึงไม่ได้เขียนมันโกงจริง


จนถึงวันนี้ฉันมีความคิดคุณสามารถป้อนคำสั่งเดียวภายใต้และมันไม่จำเป็นต้องเป็นdo Monad a => a
Onyxite

1

JAVA:

ในการตอบคำถามและ Dwaiku (Double-Haiku หรืออะไรก็ตามที่คุณต้องการเรียก) โพสต์โดย Quincunx ใน Java นี่คือ Haiku ที่ถูกต้อง:

public static int factorial(int n) {
   return (n==0) ? (n+1) : (factorial(n-1) * n);
}

1

Javascript - สอง Haikus

function factor (a) {          // function factor a
  if(!a){ return 1 ||          // if not a return 1 or
    a & 17}                    // a and seventeen

  else if (a + 1){             // else if a plus one 
    return a * factor          // return a into factor
    (a + ( - 1) )  }}          // a plus minus one 

ฉันไม่ใช่เจ้าของภาษา ดังนั้นฉันจึงใช้พจนานุกรมเพื่อนับพยางค์ หวังว่ามันจะดีพอ ข้อเสนอแนะใด ๆ ยินดีต้อนรับ :)


1

Powershell, 2 Haikus

function facto ($num){    # function facto num
$i = 1; 1..$num|          # i equals one; i to num
foreach { $i =            # for each i equals

$i * $_}; write $i}       # i times this write i
$answer = facto $args[    # answer equals facto args
0]; write $answer         # zero write answer

1

เราอนุญาตให้ใช้ฟิลเลอร์หรือไม่?

Python 2 ไฮกุส:

number = num + 1
a = 13 + 4
b = 14

nuum = len([1])
for i in range(1, number):
    nuum *= i

nuum equals length one?
Pierre Arlaud

ความยาวของรายการ
Maltysen

ฉันขอให้คุณออกเสียงบรรทัดแรก num equals length of the listทำให้ 7 พยางค์แทน 5
Pierre Arlaud

1
คุณสามารถแทนที่nuumด้วยfoo(เพราะฉันกำลังอ่านว่าเป็น nu-um ซึ่งทำให้คุณเกินขีด จำกัด )
ASCIIThenANSI

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