โจทย์ Multiplication Table

จากโจทย์ Multiplication Table

a = [2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12]
a.map {|x| ([x]*a.length).zip(a).map {|y| y << y[0] * y[1]} }
## =>  [[[2, 2, 4], [2, 3, 6], [2, 4, 8], ....  [12, 10, 120], [12, 11, 132], [12, 12, 144]]]

คุณสุกรีเขาเฉลยวิธีที่สั้นกว่าไว้ใน python
ของผมมั่วไปผ่านขั้น zip
a.map {|x| a.map{|y| [x,y,x * y]}}

sugree's picture

อู้หู

เห็นแล้วยอมจำนน

เอ่อ ..

อธิบาย .map ให้นิดนึงซิครับ T^T

ขอบคุณครับ

map คือ การ tranform function ที่เราต้องการเข้ากับ element ทุก element ใน list
สมมติเรามี list [a1, a2, a3, .., an]
ให้ f เป็น tranform function
map f [a1, a2, a3, ...,an]
ผลลัพท์ก็คือ [ f(a1), f(a2), f(a3), ...]

ในกรณีของ ruby
[1,2,3].map {|x| x + 1 }
ก็คือ การ apply function f(x) = x + 1 เข้ากับ element ทุกตัว
ดังนั้นผลลัทธ์ก็จะเป็น [2,3,4]

ขอบคุณครับ

Ruby on new Rails(user) >.<

ย้าย Codenone

ประกาศย้าย Codenone ไปใช้ Forum ของ Blognone แทนครับ ตามไปตั้งกระทู้ต่อได้ที่ Codenone Forum (รายละเอียดอ่านจากกระทู้ ย้าย Codenone ไปรวมกับ Blognone)

กระทู้เก่าๆ จะย้ายตามไปในภายหลัง ตอนนี้ปิดการโพสต์กระทู้ไว้ เหลือไว้เฉพาะอ้างอิงเท่านั้น