Pyth , 106 ไบต์
DhNR.n.e+]++.[\.sllN::.Bk\0\.\1\-\ b*]*\ +2sllNt/16lNNjmj*3\ d.t[h"ET"h"IANM"h"SURWDKGO"h"HVF L PJBXCYZQ  
ทดสอบออนไลน์!
คำอธิบาย
ในสองสามคำสิ่งที่ฉันทำที่นี่คือการสร้างคอลัมน์ตารางโดยคอลัมน์แล้วแปลงตารางก่อนที่จะพิมพ์ เราสังเกตเห็นว่าในคอลัมน์รหัสมอร์สสำหรับตัวอักษรสามารถแสดงเป็นสตริงไบนารี (แทนที่.ด้วย0และ-โดย1) เมื่อนับจากศูนย์ถึงดัชนีของตัวอักษรตัวสุดท้ายในคอลัมน์
อัลกอริทึมอาศัยฟังก์ชันที่ฉันให้ตัวอย่างทำงานด้านล่าง (สำหรับคอลัมน์ที่สอง):
1. Takes "IANM" as input
2. Generates the binary representations of zero up to len("IANM"): ["0", "1", "10", "11"]
3. Replace with dots and hyphens: [".", "-", "-.", "--"]
4. Pad with dots up to floor(log2(len("IANM"))): ["..", ".-", "-.", "--"]
5. Add the corresponding letters: [".. I", ".- A", "-. N", "-- M"]
6. After each element, insert a list of 16 / len("IANM") - 1 (= 3) strings containing only spaces of length floor(log2(len("IANM"))) + 2 (= 4):
    [".. I", ["    ", "    ", "    "], ".- A", ["    ", "    ", "    "], "-. N", ["    ", "    ", "    "], "-- M", ["    ", "    ", "    "]]
7. Flatten that list:
    [".. I", "    ", "    ", "    ", ".- A", "    ", "    ", "    ", "-. N", "    ", "    ", "    ", "-- M", "    ", "    ", "    "]
8. That's it, we have our second column!
คำอธิบายรหัส
ฉันตัดโค้ดเป็นสองส่วน ส่วนแรกคือฟังก์ชั่นที่อธิบายไว้ข้างต้นส่วนที่สองคือวิธีที่ฉันใช้ฟังก์ชั่น:
DhNR.n.e+]++.[\.sllN::.Bk\0\.\1\-\ b*]*\ +2sllNt/16lNN
DhNR                                                      # Define a function h taking N returning the rest of the code. N will be a string
      .e                                             N    # For each character b in N, let k be its index
                      .Bk                                 # Convert k to binary
                     :   \0\.                             # Replace zeros with dots (0 -> .)
                    :        \1\-                         # Replace ones with hyphens (1 -> -)
            .[\.sllN                                      # Pad to the left with dots up to floor(log2(len(N))) which is the num of bits required to represent len(N) in binary
          ++                     \ b                      # Append a space and b
         ]                                                # Make a list containing only this string. At this point we have something like [". E"] or [".. I"] or ...
        +                           *]*\ +2sllNt/16lN     # (1) Append as many strings of spaces as there are newlines separating each element vertically in the table
    .n                                                    # At this point the for each is ended. Flatten the resulting list and return it
(1) : ในตารางมอร์สในคอลัมน์แรกมีเจ็ดบรรทัดหลังจากแต่ละบรรทัดมีตัวอักษร ("E" และ "T") ในคอลัมน์ที่สองเป็นสามบรรทัด จากนั้นหนึ่ง (คอลัมน์ที่สาม) จากนั้นศูนย์ (คอลัมน์สุดท้าย) นั่นคือ16 / n - 1ที่ที่nมีจำนวนตัวอักษรในคอลัมน์ (ซึ่งอยู่Nในรหัสด้านบน) รหัสอะไรที่บรรทัด 
 (1) :
*]*\ +2sllNt/16lN
       sllN          # Computes the num of bits required to represent len(N) in binary
     +2              # To that, add two. We now have the length of a element of the current column
  *\                 # Make a string of spaces of that length (note the trailing space)
           t/16lN    # Computes 16 / len(N) - 1
*]                   # Make a list of that length with the string of spaces (something like ["    ", "    ", ...])
เอาล่ะตอนนี้เรามีฟังก์ชั่นที่มีประโยชน์ที่ดีhซึ่งสร้างคอลัมน์ของตารางตามลำดับอักขระ มาใช้กัน (สังเกตช่องว่างต่อท้ายสองช่องในรหัสด้านล่าง):
jmj*3\ d.t[h"ET"h"IANM"h"SURWDKGO"h"HVF L PJBXCYZQ  
           h"ET"                                        # Generate the first column
                h"IANM"                                 # Generate the second column
                       h"SURWDKGO"                      # Generate the third column
                                  h"HVF L PJBXCYZQ      # Generate the last column (note the two trailing spaces)
          [                                             # Make a list out of those columns
        .t                                              # Transpose, because we can print line by line, but not column by column
 mj*3\ d                                                # For each line, join the elements in that line on "   " (that is, concatenate the elements of the lines but insert "   " between each one)
j                                                       # Join all lines on newline
รหัสยังสามารถตัดให้สั้นลงได้ บางทีฉันจะกลับมาในภายหลัง