จากโจทย์ 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]}}อู้หู
เห็นแล้วยอมจำนน
เอ่อ ..
อธิบาย .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) >.<