พอดีไปเจอโจทย์มา นับว่าง่ายมากถึงมากที่สุด แต่ก็อยากรู้ว่ามือโปรเขียนยังไง ตรงไปตรงมาครับ สูตรคูณ แถวบนสุดกับคอลัมน์ซ้ายสุดเป็นตัวตั้ง
1 2 3 4 5 6 7 8 9 10 11 12
2 4 6 8 10 12 14 16 18 20 22 24
3 6 9 12 15 18 21 24 27 30 33 36
4 8 12 16 20 24 28 32 36 40 44 48
5 10 15 20 25 30 35 40 45 50 55 60
6 12 18 24 30 36 42 48 54 60 66 72
7 14 21 28 35 42 49 56 63 70 77 84
8 16 24 32 40 48 56 64 72 80 88 96
9 18 27 36 45 54 63 72 81 90 99 108
10 20 30 40 50 60 70 80 90 100 110 120
11 22 33 44 55 66 77 88 99 110 121 132
12 24 36 48 60 72 84 96 108 120 132 144
จะพิมพ์หรือไม่พิมพ์ก็ได้
กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น
คุณสุกรีใช้คำว่ามือโปร เดี๋ยวจะไม่มีใครกล้าเข้ามาตอบนะครับ :)
ปกติผมก็ใช้ loop ธรรมดาแหล่ะครับ
แต่ลองพยายามคิดแบบอื่นๆดูบ้าง
สำหรับ ruby ก็ได้หน้าตาออกมาแบบนี้ครับ
code
เอ่อแหมอย่าเข้าใจผิดคิดว่ามือโปรเป็นเรื่องยุ่งยากปานนั้น ผมไม่ได้หวังจะเห็นของดี แค่อยากเห็นไอเดียแปลกๆ วิธีแปลกๆ ภาษาแปลกๆ เห็นแต่โค้ดตัวเองมันจะทำให้โลกแคบเอา จินตนาการหดหาย บาร์นี่สอนไว้ ต้องใช้จินตนาการ ผมก็หวังจะมาเติมจินตนาการที่หายไปตามอายุแถวนี้แหละ
อืม ruby มันเจ๋งจริงแฮะ เหมาะสำหรับการเขียนแบบนี้มากๆ python ยังยืดเยื้ออยู่มาก ทำได้แต่ก็ไม่งามเท่า
แบบลูปธรรมดาผมก็อยากเห็นนะ สไตล์การเขียนแต่ละคนไม่เหมือนกัน แค่ลูปก็ไม่เหมือนแล้ว เหมือนทอดไข่เจียว ทอดออกมาไม่เหมือนกันซักคน
บาร์นี่ นี่ต้องมีลูกก่อนนะครับ ถึงจะรู้จัก
ลูกผมชอบมากเลย
ผมร้องได้หลายเพลงนะ อย่างน้อยก็
หรือ
นั่งดูทุกตอน… ฟังเพลงนี้เหมือนยากล่อมประสาท สะกดจิตทีละหน่อย ดีกว่าเทเลทัปปี้ ดูแล้วจะหลับ
หึๆ
สำหรับคนที่ยังไม่มีลูก
ลองผลิตดูสักคนนะครับ
รับรองว่าจะต้องร้องเพลงนี้ได้ในไม่ช้า
แนวคิดเดียวกับของคุณ pphetra เป๊ะ โชคดีที่
map()รับลิสต์ได้หลายตัว เลยไม่ต้องใช้zip()แค่นี้ก็ดูไม่จืดPython
ลองเอาแนวคิดแบบ lazy evaluation บ้าง
เริ่มด้วยการ declare ตาราง แบบ infinite
ถ้าลองสั่ง
tables 2ดูจะได้ตารางประมาณนี้ออกมาแน่นอนว่ามันเป็น infinite array ทั้งด้านกว้างและด้านยาว
จากนั้นก็ define function ที่ scope เอาเฉพาะช่วงที่ต้องการ
pp xs n = map (\x -> take n x) (take n xs)ต้องการสูตร 2-12 ก็สั่ง
pp (tables 2) 11Note: take n คือการบอกว่าให้เอาเฉพาะ n ตัวแรก ออกมาจาก array
haskell อีกแบบ
let xs = range(2,12) in [[x,y,x*y] | x <- xs, y <- xs]haskell อีกแบบ
map (\(x,y) -> (x,y,x*y)) (range((2,2),(12,12)))เกือบกลายเป็นกระทู้ยุให้ทำลูกไปซะแล้วมั้ยล่ะ
โจทย์น่าสนุกจัง ผมอ่านของคนอื่นไม่ค่อยจะรู้เรื่องเลย ทำไมเขียนได้สั้นขนาดนั้น! o_O’
ผมขอใช้ Plua นะครับ (เข้าใจว่าเป็นภาษา Lua ที่พัฒนาให้เขียนบน Palm) ผมเขียนเป็นแต่แบบง่ายๆ -_-’ พอดีว่าไม่ใช่โปรแกรมเมอร์
scheme แบบถึก
(define (multab a b) (define (x-iter x y) (cond ((<= x a) (display (* x y)) (display " ") (x-iter (+ x 1) y)))) (define (y-iter y) (cond ((<= y b) (x-iter 1 y) (display "\n") (y-iter (+ y 1))))) (y-iter 1)) (multab 12 12)scheme แบบไม่อยาก pass parameter หลายตัวใน x-iter เกรงจะไม่เท่ห์
haskell อีกแบบ
[[x,y,x*y] | x <- [2..12], y <- [2..12]]เอ๊ะ มันเหมือนอันที่ post ไปแล้วนี่น่า