ผมเพิ่งมีโอกาสได้ดูหนังเรื่อง TENET ของโนแลน ไปเมื่อวานนี้เอง (ใครเป็นคอหนัง Sci-Fi นี่พลาดไม่ได้เลยนะ) ซึ่งผมชอบในหลายๆ ประเด็นของเรื่องนี้มาก และแน่นอนว่าที่มันเท่ที่สุดก็คือ Concept การย้อนเวลาในเรื่องนั่นเอง
(ถ้าใครยังไม่ได้ดู และไม่อยากรู้ Concept การย้อนเวลาในเรื่องนี้ ไม่ต้องอ่านต่อนะ แต่เอาจริงมันไม่ได้สปอยเนื้อหาหรอก แค่สปอยหลักการย้อนเวลาในหนัง ซึ่งแทบไม่กระทบอะไรเลย)
.
.
.
.
.
ในเรื่องนี้การย้อนเวลาแบบไม่ได้เหมือนกับเรื่องอื่น นั่นก็คือในเรื่องนี้ใช้การย้อนเวลาด้วยการย้อนกลับของเอ็นโทรปี (Entropy) ซึ่งทำให้เกิดการย้อนเวลาแบบวิ่งสวนทางกับเหตุการณ์ปกติไปเลย
ทำให้คนที่ย้อนเวลาอยู่ เห็นภาพเหตุการณ์ตรงข้ามกันกับคนปกติอย่างสิ้นเชิง เช่น ถ้าคนปกติเอาไฟเผาจนของซักอย่างร้อนขึ้นเรื่อยๆ คนที่ย้อนเวลาก็จะเจอว่าไฟทำให้ของเย็นขึ้นเรื่อยๆ แทน หรือแม้กระทั่งการได้ยินเสียงพูดกลับหน้าหลัง เป็นต้น
ซึ่งนั่นก็คือที่มาของ Post นี้แหละ เราจะมาทำการกลับตัวอักษรหน้าหลังกันด้วย Excel ซึ่งจะทำด้วยหลากหลายวิธีครับ
สารบัญ
Version คลิปวีดีโอ
กลับด้านโดยเขียนสูตรด้วย Excel 365
เราจะเริ่มจากการใช้ MID สกัดตัวอักษรแต่ละตัวออกมาแบบ Array Formula แต่แทนที่จะสกัดจากหน้าไปหลัง เราจะสกัดจากหลังไปหน้าแทน โดยใช้ SEQUENCE มาช่วยสร้างเลขที่เริ่มจากจำนวนตัวอักษรที่มี (LEN) ย้อนกลับไปทีละ -1 เช่น
=SEQUENCE(LEN(A2),,LEN(A2),-1)
จากนั้นค่อยเอา SEQUENCE ที่ได้ไปใส่ใน Start Number ของ MID แล้วเอามาทีละ 1 ตัว
=MID(A2,SEQUENCE(LEN(A2),,LEN(A2),-1),1)
สุดท้ายค่อยประกอบร่างข้อมูลแต่ละตัวอักษรกลับเป็นคำเดียวกันด้วย TEXTJOIN โดยใช้แบบไม่มีตัวคั่น
=TEXTJOIN("",TRUE,MID(A2,SEQUENCE(LEN(A2),,LEN(A2),-1),1))
หรือจะใช้ CONCAT ก็ได้ถ้าเราจะไม่มีตัวคั่นอยู่แล้ว
=CONCAT(MID(A2,SEQUENCE(LEN(A2),,LEN(A2),-1),1))
แค่นี้ก็ได้คำตอบแล้วล่ะ!
กลับด้านโดยเขียนสูตรด้วย Google Sheets
หลักการจะคล้ายๆ ใน Excel แต่ว่าใน Google Sheets ใส่ SEQUENCE ทำให้เลขวิ่งถอยหลังไม่ได้ แต่อันนี้พลิกแพลงเล็กน้อยโดยใช้พวก SORT มาช่วยดังนี้ (สร้างเลข SEQUENCE แล้วเรียงย้อนกลับ)
=sort(SEQUENCE(LEN(A2)),1,false)
จากนั้นก็ยัดเข้าไปใน MID เหมือนเดิม แต่ใน Google Sheets ต้องใส่ ARRAYFORMULA ครอบเข้าไปถึงจะเห็นผลลัพธ์หลายตัวได้
=ARRAYFORMULA(mid(A2,sort(SEQUENCE(LEN(A2)),1,false),1))
จากนั้นก็จับรวบด้วย TEXTJOIN ซะเลย
=TEXTJOIN("",true,ARRAYFORMULA(mid(A2,sort(SEQUENCE(LEN(A2)),1,false),1)))
กลับด้านโดยใช้ Power Query
ก่อนอื่นเอาข้อมูลเข้าไปแล้ว สร้าง Custom Column เพื่อแปลง Text ให้เป็น List ดังนี้ (อ่านเพิ่มเติมได้ที่นี่)
=Text.ToList([ข้อความเดิม])
จากนั้นเราก็เรียง List ย้อนกลับด้วย Custom Column เช่นเคย
=List.Reverse([Custom])
แล้วเราค่อยจับรวมกันด้วย Text.Combine
=Text.Combine([Custom.1])
ก็จะได้ผลลัพธ์ตามต้องการครับ
ถ้าจะเขียนรวบทั้งหมดเลยใน Custom Column ช่องเดียวก็ได้เช่นกัน ซึ่งจะเขียนสั้นๆ ได้ว่า
=Text.Combine(List.Reverse(Text.ToList([ข้อความเดิม])))
แน่นอนว่าผมสามารถเอามาสร้าง Custom Function ก็ได้ เช่น
= (originalText as text) as text=>
Text.Combine(List.Reverse(Text.ToList(originalText)))
จากนั้นผมก็จะเอาฟังก์ชัน TENET ไปเรียกใช้กับข้อความอะไรก็ได้
เช่น ผมเอารายชื่อจังหวัดจากใน Wikipedia มา แล้วเรียกใช้ฟังก์ชัน TENET ที่เพิ่งสร้างขึ้นโดยการกด Invoke Custom Function
ก็จะเห็นว่าตัวอักษรเรียงย้อนกลับได้แล้ว 555
สรุป
นี่ก็เป็นตัวอย่างแนวทางของการกลับตัวอักษรให้มองย้อนแบบใน TENET ครับ เพื่อนๆ ชอบแบบไหนก็แชร์กันได้นะ
เราสามารถเอาเทคนิคนี้ไปประยุกต์ใช้ทำรหัสลับส่งให้เพื่อนเล่นๆ ได้นะ ยิ่งถ้า shift ตัวอักษรด้วยนี่ยิ่งยากเลย อิอิ
ว่าแล้วก็ขอส่งท้ายด้วยคำนี้
นา่ทกุทนา่อู้ผณุคบอข
์ลฟไ้ดไกายอา้ถ xslx.txetdrawkcab-tenet/retsam/war/daolnwod/lecxEpehT/moc.buhtig//:sptth ะน้ีนนใปไา้ขเ