Skip to content
Tayakorn

ทำไมตาถึงอ่านกราฟนี้ได้เร็วกว่า

LEVEL 4 · ระดับเทพ

รื้อสไลด์จริงมาประกอบใหม่

สิบสามบทที่ผ่านมายื่นกลไกมาให้ทีละชิ้น บทนี้เอาทุกชิ้นมาประกอบพร้อมกันบนสไลด์แผ่นเดียว

กติกาของบทนี้มีข้อเดียวและมันเข้มงวดมาก — ทุกการตัดสินใจต้องชี้กลับไปได้ว่ามาจากบทไหน และต้องมีตัวเลขที่ขยับ ห้ามมีข้อไหนตอบว่า "เพราะมันดูดีกว่า"

ถ้าเล่มนี้ทำงานของมันสำเร็จ พออ่านจบบทนี้คุณจะรื้อสไลด์ของตัวเองด้วยวิธีเดียวกันได้ โดยไม่ต้องเปิดกลับมาดู

14.1 สไลด์ตั้งต้น

สไลด์ตั้งต้นสัดส่วนการใช้จ่ายรายหน่วยงานหน่วย หน่วย หน่วย หน่วย หน่วย หน่วย: สัดส่วนต่อ 100 · ชุดข้อมูลสมมติของคู่มือเล่มนี้18 ชิ้นบนหน้า · 5 ชิ้นแบกข้อมูล · 11 ชิ้นไม่ตอบคำถามอะไรเลยและคนอ่านต้องไล่สายตาทีละชิ้นอีก 14 ครั้งกว่าจะอ่านมันจบ
FIG 14.1 สไลด์ตั้งต้นของบทนี้ ไม่มีตัวเลขไหนผิดสักตัว · แต่บัญชีหมึกนับได้ 18 ชิ้น โดยมีเพียง 5 ชิ้นที่แบกข้อมูล และ 11 ชิ้นไม่ตอบคำถามอะไรเลย · คำอธิบายสัญลักษณ์กับการไม่เรียงลำดับ รวมกันเป็นงานไล่สายตาทีละชิ้น 14 ครั้ง ที่ถูกโยนไปให้คนอ่านทำแทน

สไลด์นี้ไม่ได้ผิดสักตัวเลข ทุกชิ้นวงกลมมีมุมถูกต้องตามสัดส่วน ถ้าเอาไปให้ตรวจ มันผ่าน

และมันคือหน้าตาของสไลด์ที่พบได้จริงในห้องประชุมทุกที่ — ไม่ใช่เพราะใครขี้เกียจ แต่เพราะทุกชิ้นในนั้นคือค่าเริ่มต้นของเครื่องมือ หรือเป็นสิ่งที่ "เขาทำกันมาแบบนี้"

อาการที่มองเห็นด้วยตาเปล่ามีหกอย่าง และตอนนี้คุณเรียกชื่อมันได้ทุกอย่างแล้ว

อาการบทที่อธิบาย
หัวข้อบอกแค่ชื่อเรื่อง คนอ่านต้องหาข้อสรุปเอง12 · 13
ใช้มุมแบกค่าที่ต้องเทียบกัน4 · 5
เรียงตามลำดับในตารางต้นทาง ไม่ได้เรียงตามค่า2 · 11
คำอธิบายสัญลักษณ์วางแยกจากชิ้นที่มันอธิบาย2 · 11
สีห้าสีทำหน้าที่ของป้ายชื่อ8
เงา กรอบ และเส้นคั่นที่ไม่ตอบคำถามอะไรเลย7

⚠️ สังเกตว่าไม่มีข้อไหนในตารางนี้ที่พูดถึงความสวย และไม่มีข้อไหนที่แก้ได้ด้วยการเปลี่ยนชุดสีหรือเปลี่ยนฟอนต์ ทั้งหกข้อเกิดที่ขั้นเข้ารหัส ในสายพานของบทที่ 3 ทั้งหมด

14.2 วัดของเดิมก่อน แล้วค่อยแตะ

นิสัยที่ควรติดตัวจากบทนี้คือ วัดก่อนแก้ เพราะไม่งั้นตอนแก้เสร็จคุณจะไม่มีทางรู้ว่าดีขึ้นจริงหรือแค่รู้สึกว่าดีขึ้น

สคริปต์ข้างล่าง (rebuild.py) คือเครื่องวัดของบทนี้ เกือบทุกสูตรในนั้นยกมาจากบทก่อนหน้าตรง ๆ แค่เอามารวมไว้ที่เดียวแล้วชี้ไปที่สไลด์สองใบ · มีอย่างเดียวที่ต่อยอด คือบัญชีหมึกที่แยกเป็นสามช่อง แทนสองช่องของบทที่ 7 ซึ่งเป็นการลงมือทำตามเส้นแบ่งที่หัวข้อ 7.3 ขีดไว้แต่ยังไม่ได้ใช้

💡 กติกาการนับ ที่บทที่ 7 ใช้อยู่แล้วแต่ไม่เคยเขียนออกมา — คำอธิบายสัญลักษณ์นับแถวละหนึ่งชิ้น ทั้งที่วาดจริงเป็นสองรูป (สี่เหลี่ยมสีกับชื่อ) เพราะตาต้องอ่านมันคู่กันเสมอ แยกจากกันแล้วไม่มีความหมาย · ส่วนตัวเลขบนแท่งกับป้ายใต้แท่งนับแยกกัน เพราะเป็นข้อมูลคนละอย่าง อ่านทีละอันได้ · ถ้านับรูปที่วาดจริงแทน ใบตั้งต้นจะได้ 23 ไม่ใช่ 18 — ตัวเลขในบัญชีนี้จึงนับ "หน่วยที่สายตาต้องประมวลผล" ไม่ใช่ "จำนวนรูปทรงในไฟล์"

"""รื้อสไลด์แล้วประกอบใหม่ — ตัวเลขทุกตัวของบทนี้มาจากสคริปต์เดียวนี้"""
import math

DATA = [("", 22), ("", 18), ("", 25), ("", 16), ("", 19)]
K = 0.05
vals = [v for _, v in DATA]
hi, total = max(vals), sum(vals)
rank = sorted(DATA, key=lambda kv: -kv[1])

# --- 1. บัญชีหมึกสามช่อง — ต่อยอดจาก dataink.py ในบทที่ 7 ที่มีแค่สองช่อง ---
#     บริบท = หน่วย ที่มา เส้นอ้างอิง ซึ่งบทที่ 7.3 ห้ามลบ · เปล่า = ไม่ตอบคำถามไหนเลย
BEFORE_INK = [
    ("ชิ้นวงกลม 5 ชิ้น", 5, "ข้อมูล"),
    ("คำอธิบายสัญลักษณ์ 5 บรรทัด", 5, "เปล่า"),
    ("วงแหวนเงาใต้วงกลม", 1, "เปล่า"),
    ("กรอบรอบภาพ 4 ด้าน", 4, "เปล่า"),
    ("เส้นคั่นใต้หัวข้อ", 1, "เปล่า"),
    ("หัวข้อที่บอกแค่ชื่อเรื่อง", 1, "บริบท"),
    ("บรรทัดหน่วยและที่มา", 1, "บริบท"),
]
AFTER_INK = [
    ("แท่ง 5 อัน", 5, "ข้อมูล"),
    ("ตัวเลขบนแท่ง", 5, "ข้อมูล"),
    ("ป้ายชื่อใต้แท่ง", 5, "ข้อมูล"),
    ("หัวข้อที่บอกข้อสรุป", 1, "ข้อมูล"),
    ("เส้นฐานเส้นเดียว", 1, "บริบท"),
    ("บรรทัดหน่วยและที่มา", 1, "บริบท"),
]


def ink(name, items):
    kinds = {"ข้อมูล": 0, "บริบท": 0, "เปล่า": 0}
    for _, n, kind in items:
        kinds[kind] += n
    t = sum(kinds.values())
    print(f"=== บัญชีหมึกของ{name} ===")
    for label, n, kind in items:
        print(f"  [{kind}] {label} = {n}")
    print(f"  รวม {t} ชิ้น · ข้อมูล {kinds['ข้อมูล']} · บริบท {kinds['บริบท']} "
          f"· เปล่า {kinds['เปล่า']} · หมึกที่เป็นข้อมูล {kinds['ข้อมูล'] / t * 100:.1f}%\n")
    return kinds, t


b_kind, b_total = ink("สไลด์ตั้งต้น", BEFORE_INK)
a_kind, a_total = ink("สไลด์ที่ประกอบใหม่", AFTER_INK)
print(f"จำนวนชิ้นรวม {b_total} -> {a_total} · หมึกเปล่า {b_kind['เปล่า']} -> {a_kind['เปล่า']}"
      f" · หมึกที่เป็นข้อมูล {b_kind['ข้อมูล']} -> {a_kind['ข้อมูล']}")
print("ที่ว่างที่ได้จากการลบ ไม่ได้กลายเป็นที่ว่าง มันถูกเอาไปใส่ข้อมูลจนเต็ม\n")


# --- 2. งานโหมดไล่ทีละชิ้นที่สไลด์โยนไปให้คนอ่าน (บทที่ 2) ---
def serial_jobs(n, legend, sorted_by_value, values_printed):
    jobs = []
    if legend:
        jobs.append(("จับคู่ชิ้นกับคำอธิบายสัญลักษณ์", n))
    if not sorted_by_value:
        jobs.append(("ไล่เทียบเองเพื่อหาอันดับ", n - 1))
    if not values_printed:
        jobs.append(("กะค่าจากภาพทีละชิ้น", n))
    return jobs


print("=== งานโหมดไล่ทีละชิ้นที่คนอ่านต้องทำ ===")
for name, kw in (("สไลด์ตั้งต้น", dict(legend=True, sorted_by_value=False, values_printed=False)),
                 ("สไลด์ที่ประกอบใหม่", dict(legend=False, sorted_by_value=True, values_printed=True))):
    jobs = serial_jobs(len(DATA), **kw)
    print(f"  {name}: {sum(c for _, c in jobs)} ครั้ง")
    for label, c in jobs:
        print(f"    {label} {c} ครั้ง")
    if not jobs:
        print("    ไม่มีเลย ทุกอย่างอ่านได้ในโหมดขนาน")
print()

# --- 2ก. สีทำหน้าที่อะไร และคนอ่านต้องจำอะไรบ้าง (บทที่ 2, 8) ---
print("=== หน้าที่ของสี ===")
for name, hues, job, must_remember in (
        ("สไลด์ตั้งต้น", 5, "แยกตัวตนของกลุ่ม", 5),
        ("สไลด์ที่ประกอบใหม่", 1, "เน้นข้อสรุปหนึ่งจุด", 0)):
    print(f"  {name}: ใช้ {hues} สี · สีทำหน้าที่{job} "
          f"· คนอ่านต้องจำคู่สี-ชื่อ {must_remember} คู่")
print("  ทั้งสองใบไม่ได้เอาสีไปแบกปริมาณ ข้อผิดพลาดของบทที่ 8 จึงไม่ได้อยู่ที่สไลด์นี้")
print("  สิ่งที่สีทำผิดในใบตั้งต้นคือทำหน้าที่ของป้าย ทั้งที่ป้ายวางติดชิ้นได้เลย\n")


# --- 3. ช่องทางไหนแบกช่องว่างไหนไหว (สูตรจาก channels.py บทที่ 5) ---
def share_of_range(gap, channel):
    return gap / hi if channel == "ความยาว" else gap / total


steps = [(rank[i], rank[i + 1]) for i in range(len(rank) - 1)]
tight = min(steps, key=lambda p: p[0][1] - p[1][1])
FACTS = [(f"อันดับ {i + 1} กับ {i + 2}", a, b) for i, (a, b) in enumerate(steps)]
FACTS.append(("หัวตารางกับท้ายตาราง", rank[0], rank[-1]))

print("=== ย้ายช่องทางจากมุมไปความยาว แล้วช่องว่างได้ส่วนแบ่งเท่าไหร่ ===")
homeless = {"มุม": [], "ความยาว": []}
for label, a, b in FACTS:
    gap = a[1] - b[1]
    cells = []
    for ch in ("มุม", "ความยาว"):
        s = share_of_range(gap, ch)
        if s < K:
            homeless[ch].append((a[0], b[0], gap))
        cells.append(f"{ch} {s * 100:5.2f}% {'ผ่าน' if s >= K else 'ไม่ผ่าน'}")
    print(f"  {label} ({gap} จุด): " + " | ".join(cells))
print(f"  ข้อที่ภาพแบกไม่ไหว: วงกลม {len(homeless['มุม'])} ข้อ · แท่ง {len(homeless['ความยาว'])} ข้อ\n")


# --- 4. ถ้าตัดฐานแกนของแท่ง จะเกิดอะไร (สูตรจาก liefactor.py บทที่ 9) ---
def lie_factor(a, b, floor):
    real = abs(a - b) / min(a, b)
    ha, hb = a - floor, b - floor
    shown = abs(ha - hb) / min(ha, hb)
    return real, shown, shown / real


A, B = tight[0][1], tight[1][1]
print(f"=== คู่ที่สูสีที่สุด ({A} กับ {B}) ถ้าตัดฐานแกนออก ===")
for floor in (0, 10, 15, 17):
    real, shown, lf = lie_factor(A, B, floor)
    print(f"  ฐานแกน {floor:>3} -> ผลจริง {real * 100:6.2f}% "
          f"-> ภาพแสดง {shown * 100:6.2f}% -> ตัวคูณคำโกหก {lf:.2f}")
print("  ศูนย์คือฐานเดียวที่ตัวคูณเท่ากับ 1 และแท่งอ่านค่าจากความยาว จึงไม่มีทางเลือกอื่น\n")


# --- 5. หัวข้อที่ประกอบจากข้อเท็จจริงที่แท่งแบกไม่ไหว (วิธีจาก headline.py บทที่ 13) ---
HEADLINE = " · ".join(
    [f"หน่วย {rank[0][0]} ใช้มากที่สุด {rank[0][1]} จาก {total}"]
    + [f"{a} กับ {b} ต่างกัน {gap} จุด" for a, b, gap in homeless["ความยาว"]]
)
print("=== หัวข้อของสไลด์ที่ประกอบใหม่ ===")
print(f"  {HEADLINE}")
print(f"  แบกข้อเท็จจริง {1 + len(homeless['ความยาว'])} ข้อ · ยาว {len(HEADLINE)} ตัวอักษร\n")


# --- 6. เรขาคณิตของภาพทั้งสามในบทนี้ ---
print("=== เรขาคณิตของ FIG 14.1 (วงกลม รัศมี 72 เรียงตามลำดับในตาราง) ===")
start, R = -90.0, 72.0
for k, v in DATA:
    sweep = v / total * 360.0
    end = start + sweep
    x1, y1 = R * math.cos(math.radians(start)), R * math.sin(math.radians(start))
    x2, y2 = R * math.cos(math.radians(end)), R * math.sin(math.radians(end))
    print(f"  {k}: {v:>3} -> {sweep:6.2f} องศา | "
          f"M 0 0 L {x1:7.2f} {y1:7.2f} A {R} {R} 0 0 1 {x2:7.2f} {y2:7.2f} Z")
    start = end

print("\n=== เรขาคณิตของ FIG 14.2 (แท่งเรียงจากมาก ฐานที่ศูนย์ สูงสุด 110 px) ===")
BAR_MAX = 110.0
for k, v in rank:
    print(f"  {k}: {v:>3} -> สูง {v / hi * BAR_MAX:6.2f} px")

print("\n=== เรขาคณิตของ FIG 14.3 (จุดบนแกนร่วม ซูมช่วง 16-25 กว้าง 480 px) ===")
lo_v, hi_v, AXIS = min(vals), hi, 480.0
for k, v in rank:
    print(f"  {k}: {v:>3} -> x {(v - lo_v) / (hi_v - lo_v) * AXIS:6.2f} px")
gap_tight = A - B
print(f"  ช่องว่าง {gap_tight} จุด บนแกนที่ซูมแล้ว = "
      f"{gap_tight / (hi_v - lo_v) * 100:.2f}% ของช่วงที่วาด "
      f"(บนแท่งฐานศูนย์ได้ {share_of_range(gap_tight, 'ความยาว') * 100:.2f}%)")

ผลรันจริง

=== บัญชีหมึกของสไลด์ตั้งต้น ===
  [ข้อมูล] ชิ้นวงกลม 5 ชิ้น = 5
  [เปล่า] คำอธิบายสัญลักษณ์ 5 บรรทัด = 5
  [เปล่า] วงแหวนเงาใต้วงกลม = 1
  [เปล่า] กรอบรอบภาพ 4 ด้าน = 4
  [เปล่า] เส้นคั่นใต้หัวข้อ = 1
  [บริบท] หัวข้อที่บอกแค่ชื่อเรื่อง = 1
  [บริบท] บรรทัดหน่วยและที่มา = 1
  รวม 18 ชิ้น · ข้อมูล 5 · บริบท 2 · เปล่า 11 · หมึกที่เป็นข้อมูล 27.8%

=== บัญชีหมึกของสไลด์ที่ประกอบใหม่ ===
  [ข้อมูล] แท่ง 5 อัน = 5
  [ข้อมูล] ตัวเลขบนแท่ง = 5
  [ข้อมูล] ป้ายชื่อใต้แท่ง = 5
  [ข้อมูล] หัวข้อที่บอกข้อสรุป = 1
  [บริบท] เส้นฐานเส้นเดียว = 1
  [บริบท] บรรทัดหน่วยและที่มา = 1
  รวม 18 ชิ้น · ข้อมูล 16 · บริบท 2 · เปล่า 0 · หมึกที่เป็นข้อมูล 88.9%

จำนวนชิ้นรวม 18 -> 18 · หมึกเปล่า 11 -> 0 · หมึกที่เป็นข้อมูล 5 -> 16
ที่ว่างที่ได้จากการลบ ไม่ได้กลายเป็นที่ว่าง มันถูกเอาไปใส่ข้อมูลจนเต็ม

=== งานโหมดไล่ทีละชิ้นที่คนอ่านต้องทำ ===
  สไลด์ตั้งต้น: 14 ครั้ง
    จับคู่ชิ้นกับคำอธิบายสัญลักษณ์ 5 ครั้ง
    ไล่เทียบเองเพื่อหาอันดับ 4 ครั้ง
    กะค่าจากภาพทีละชิ้น 5 ครั้ง
  สไลด์ที่ประกอบใหม่: 0 ครั้ง
    ไม่มีเลย ทุกอย่างอ่านได้ในโหมดขนาน

=== หน้าที่ของสี ===
  สไลด์ตั้งต้น: ใช้ 5 สี · สีทำหน้าที่แยกตัวตนของกลุ่ม · คนอ่านต้องจำคู่สี-ชื่อ 5 คู่
  สไลด์ที่ประกอบใหม่: ใช้ 1 สี · สีทำหน้าที่เน้นข้อสรุปหนึ่งจุด · คนอ่านต้องจำคู่สี-ชื่อ 0 คู่
  ทั้งสองใบไม่ได้เอาสีไปแบกปริมาณ ข้อผิดพลาดของบทที่ 8 จึงไม่ได้อยู่ที่สไลด์นี้
  สิ่งที่สีทำผิดในใบตั้งต้นคือทำหน้าที่ของป้าย ทั้งที่ป้ายวางติดชิ้นได้เลย

=== ย้ายช่องทางจากมุมไปความยาว แล้วช่องว่างได้ส่วนแบ่งเท่าไหร่ ===
  อันดับ 1 กับ 2 (3 จุด): มุม  3.00% ไม่ผ่าน | ความยาว 12.00% ผ่าน
  อันดับ 2 กับ 3 (3 จุด): มุม  3.00% ไม่ผ่าน | ความยาว 12.00% ผ่าน
  อันดับ 3 กับ 4 (1 จุด): มุม  1.00% ไม่ผ่าน | ความยาว  4.00% ไม่ผ่าน
  อันดับ 4 กับ 5 (2 จุด): มุม  2.00% ไม่ผ่าน | ความยาว  8.00% ผ่าน
  หัวตารางกับท้ายตาราง (9 จุด): มุม  9.00% ผ่าน | ความยาว 36.00% ผ่าน
  ข้อที่ภาพแบกไม่ไหว: วงกลม 4 ข้อ · แท่ง 1 ข้อ

=== คู่ที่สูสีที่สุด (19 กับ 18) ถ้าตัดฐานแกนออก ===
  ฐานแกน   0 -> ผลจริง   5.56% -> ภาพแสดง   5.56% -> ตัวคูณคำโกหก 1.00
  ฐานแกน  10 -> ผลจริง   5.56% -> ภาพแสดง  12.50% -> ตัวคูณคำโกหก 2.25
  ฐานแกน  15 -> ผลจริง   5.56% -> ภาพแสดง  33.33% -> ตัวคูณคำโกหก 6.00
  ฐานแกน  17 -> ผลจริง   5.56% -> ภาพแสดง 100.00% -> ตัวคูณคำโกหก 18.00
  ศูนย์คือฐานเดียวที่ตัวคูณเท่ากับ 1 และแท่งอ่านค่าจากความยาว จึงไม่มีทางเลือกอื่น

=== หัวข้อของสไลด์ที่ประกอบใหม่ ===
  หน่วย ค ใช้มากที่สุด 25 จาก 100 · จ กับ ข ต่างกัน 1 จุด
  แบกข้อเท็จจริง 2 ข้อ · ยาว 55 ตัวอักษร

=== เรขาคณิตของ FIG 14.1 (วงกลม รัศมี 72 เรียงตามลำดับในตาราง) ===
  ก:  22 ->  79.20 องศา | M 0 0 L    0.00  -72.00 A 72.0 72.0 0 0 1   70.72  -13.49 Z
  ข:  18 ->  64.80 องศา | M 0 0 L   70.72  -13.49 A 72.0 72.0 0 0 1   42.32   58.25 Z
  ค:  25 ->  90.00 องศา | M 0 0 L   42.32   58.25 A 72.0 72.0 0 0 1  -58.25   42.32 Z
  ง:  16 ->  57.60 องศา | M 0 0 L  -58.25   42.32 A 72.0 72.0 0 0 1  -66.94  -26.50 Z
  จ:  19 ->  68.40 องศา | M 0 0 L  -66.94  -26.50 A 72.0 72.0 0 0 1   -0.00  -72.00 Z

=== เรขาคณิตของ FIG 14.2 (แท่งเรียงจากมาก ฐานที่ศูนย์ สูงสุด 110 px) ===
  ค:  25 -> สูง 110.00 px
  ก:  22 -> สูง  96.80 px
  จ:  19 -> สูง  83.60 px
  ข:  18 -> สูง  79.20 px
  ง:  16 -> สูง  70.40 px

=== เรขาคณิตของ FIG 14.3 (จุดบนแกนร่วม ซูมช่วง 16-25 กว้าง 480 px) ===
  ค:  25 -> x 480.00 px
  ก:  22 -> x 320.00 px
  จ:  19 -> x 160.00 px
  ข:  18 -> x 106.67 px
  ง:  16 -> x   0.00 px
  ช่องว่าง 1 จุด บนแกนที่ซูมแล้ว = 11.11% ของช่วงที่วาด (บนแท่งฐานศูนย์ได้ 4.00%)

⚠️ ตัวเลข "14 ครั้ง" มาจาก serial_jobs ซึ่งเป็นแบบจำลองของงานที่คนอ่านต้องทำ ไม่ใช่ค่าที่จับเวลามาจากคนจริง หลักเดียวกับ threshold ในบทที่ 11 · สิ่งที่มันพิสูจน์ได้จริงคือ งานสามกองนั้นมีอยู่จริงและหายไปได้ทั้งกอง ไม่ใช่ว่าคนอ่านใช้เวลากี่วินาที

14.3 เจ็ดการตัดสินใจ

ทุกข้อข้างล่างมีโครงเดียวกันสามบรรทัด: คำถามที่ต้องตอบ · กลไกที่ตอบให้ · ตัวเลขที่ขยับหลังตอบ

หนึ่ง — ย้ายจากมุมไปความยาว คำถาม: ช่องทางที่ใช้อยู่แบกช่องว่างในชุดนี้ไหวไหม กลไก (บทที่ 4 · 5): มุมหารด้วยวงเต็ม ความยาวหารด้วยค่าสูงสุด ตัวหารต่างกันสี่เท่าตั้งแต่ต้น ตัวเลข: ข้อที่ภาพแสดงไม่ได้ลดจาก 4 ข้อ เหลือ 1 ข้อ · ช่องว่าง 3 จุดระหว่างอันดับหนึ่งกับสองเปลี่ยนจาก 3.00% เป็น 12.00% ซึ่งข้ามเกณฑ์พอดี

สอง — เรียงตามค่า คำถาม: ลำดับที่วางอยู่ตอนนี้บอกอะไรคนอ่าน กลไก (บทที่ 2 · 11): ลำดับในตารางต้นทางเป็นข้อมูลที่ไม่มีความหมายกับคำถามนี้ แต่ตาจะอ่านมันเป็นโครงสร้างอยู่ดี การเรียงคือการเข้ารหัสอันดับลงไปในตำแหน่ง ซึ่งไม่กินหมึกเลยสักหยด ตัวเลข: งานไล่เทียบเพื่อหาอันดับเอง 4 ครั้ง หายไปทั้งกอง

สาม — ย้ายป้ายไปติดแท่ง คำถาม: คนอ่านต้องเดินสายตากี่รอบกว่าจะรู้ว่าชิ้นไหนคือหน่วยไหน กลไก (บทที่ 2 · 11): การจับคู่ชิ้นกับคำอธิบายสัญลักษณ์คืองานโหมดไล่ทีละชิ้น และระยะห่างกำลังบอกว่าป้ายไม่ใช่พวกเดียวกับแท่ง ทั้งที่มันคือของชิ้นเดียวกัน ตัวเลข: การจับคู่ 5 ครั้ง หายไปทั้งกอง · หมึกเปล่าลดลง 5 ชิ้น

สี่ — ปลดสีออกจากหน้าที่ของป้าย คำถาม: สีกำลังทำงานอะไรอยู่บนสไลด์นี้ กลไก (บทที่ 8 · 2): สีห้าสีในใบตั้งต้นไม่ได้แบกปริมาณ ซึ่งถูกแล้ว แต่มันแบกตัวตนของกลุ่ม ผ่านคำอธิบายสัญลักษณ์ พอย้ายป้ายไปติดแท่ง สีก็ไม่เหลืองานให้ทำ และบทที่ 2 บอกว่ายิ่งจำนวนสีมาก การเด้งยิ่งอ่อนลงเรื่อย ๆ ตัวเลข: คู่สี-ชื่อที่คนอ่านต้องจำ 5 คู่ เหลือ 0 · สีที่ใช้ 5 เหลือ 1 และสีเดียวที่เหลือทำหน้าที่เน้นข้อสรุป

ห้า — ลบหมึกที่ไม่ตอบคำถามอะไรเลย คำถาม: ถ้าลบชิ้นนี้ออก มีคำถามไหนที่คนอ่านตอบไม่ได้อีกต่อไปหรือเปล่า กลไก (บทที่ 7): เงา กรอบ และเส้นคั่นตอบว่า "ไม่มี" ส่วนบรรทัดหน่วยและที่มาตอบว่า "มี" จึงอยู่ต่อ นี่คือเส้นแบ่งของหัวข้อ 7.3 ที่บทนี้เอามาใช้จริงเป็นครั้งแรก ตัวเลข: หมึกเปล่า 11 ชิ้น เหลือ 0 · สัดส่วนหมึกที่เป็นข้อมูลจาก 27.8% เป็น 88.9%

หก — ฐานแกนที่ศูนย์ และคำนวณให้เห็นว่าทำไม คำถาม: แกนควรเริ่มที่ไหน กลไก (บทที่ 6 · 9): แท่งเข้ารหัสด้วยความยาว ซึ่งอ่านค่าจากจุดเริ่มถึงจุดจบ ตัดฐานทิ้งเท่ากับโกหกเรื่องความยาว ตัวเลข: ถ้าตัดฐานที่ 15 คู่ที่ต่างกันจริง 5.56% จะถูกแสดงเป็น 33.33% คือ ตัวคูณคำโกหก 6.00 · ที่ฐาน 17 ตัวคูณพุ่งเป็น 18.00 · มีฐานเดียวที่ตัวคูณเท่ากับ 1 คือศูนย์

⚠️ ข้อนี้ไม่ได้แก้อาการไหนในตารางของหัวข้อ 14.1 เลย เพราะวงกลมไม่มีแกนให้ตัดตั้งแต่แรก มันเป็นการตัดสินใจที่เกิดขึ้นใหม่เพราะข้อที่หนึ่งย้ายมาใช้แท่ง — ทุกครั้งที่คุณเปลี่ยนช่องทาง คุณได้ทั้งความสามารถใหม่และภาระใหม่มาพร้อมกัน

เจ็ด — เขียนหัวข้อจากรายการที่เหลือ คำถาม: ภาพที่ได้ตอนนี้ยังแบกอะไรไม่ไหว กลไก (บทที่ 13 · 12): ข้อที่ตกเกณฑ์คือข้อที่ไม่ได้ถูกส่งไปถึงคนอ่านเลย ต้องเขียนบอก และข้อสรุปต้องขึ้นก่อนตามหลักพีระมิด ตัวเลข: เหลือ 1 ข้อ ที่แท่งแสดงไม่ได้ · หัวข้อจึงแบก 2 ข้อเท็จจริงและยาว 55 ตัวอักษร — เทียบกับ 127 ตัวอักษรถ้ายังใช้วงกลมอยู่

14.4 สไลด์ที่ประกอบใหม่

สไลด์ที่ประกอบใหม่หน่วย ค ใช้มากที่สุด 25 จาก 100 · จ กับ ข ต่างกัน 1 จุด25หน่วย 22หน่วย 19หน่วย 18หน่วย 16หน่วย หน่วย: สัดส่วนต่อ 100 · ชุดข้อมูลสมมติของคู่มือเล่มนี้18 ชิ้นเท่าเดิม · แบกข้อมูล 16 ชิ้น · หมึกเปล่า 0 · คนอ่านไล่ทีละชิ้น 0 ครั้ง
FIG 14.2 ข้อมูลชุดเดิมเป๊ะ หลังเจ็ดการตัดสินใจของบทนี้ · จำนวนชิ้นรวมเท่าเดิม 18 ชิ้น แต่ชิ้นที่แบกข้อมูลเพิ่มจาก 5 เป็น 16 และหมึกเปล่า 11 ชิ้นเหลือศูนย์ · ที่ว่างที่ได้จากการลบไม่ได้กลายเป็นที่ว่าง มันถูกเอาไปใส่ตัวเลข ป้าย และหัวข้อจนเต็ม

บรรทัดที่ควรอ่านซ้ำที่สุดของบทนี้อยู่ในผลรันของบัญชีหมึก

จำนวนชิ้นรวมเท่าเดิมเป๊ะ 18 ชิ้นทั้งสองใบ

เรื่องนี้สำคัญเพราะมันหักล้างความเข้าใจที่ว่า "ทำให้เรียบง่าย" แปลว่า "เอาของออก" หมึกเปล่า 11 ชิ้นหายไปจริง แต่ที่ว่างที่ได้มาไม่ได้กลายเป็นที่ว่าง มันถูกเอาไปใส่ตัวเลขบนแท่ง ป้ายใต้แท่ง และหัวข้อที่บอกข้อสรุป

สไลด์ที่ดีขึ้นไม่ได้มีของน้อยลง มันมีของเท่าเดิมที่ทำงานคนละอย่าง

บทที่ 7 เคยแสดงตัวเลข 33 ชิ้นเหลือ 16 ซึ่งดูเหมือนเรื่องของการลด บทนี้ทำให้เห็นอีกครึ่งที่บทที่ 7 ยังไม่ได้พูด — งบหมึกที่ปลดออกมาได้ มีที่ให้ไปต่อ

14.5 ทางที่ไม่ได้เลือก และเหตุผลของมัน

บทที่ 5 บอกว่าตำแหน่งบนแกนร่วมอยู่ขั้นหนึ่งของบันได ส่วนความยาวอยู่ขั้นสาม แล้วทำไมสไลด์ที่ประกอบใหม่ถึงยังใช้แท่ง

ทางที่ไม่ได้เลือก — จุดบนแกนร่วม ซูมช่วง 16 ถึง 25 16 18 19 22 25ช่องว่าง 1 จุด = 11.11% ของช่วงที่วาดบนแท่งที่เริ่มจากศูนย์ ช่องว่างเดียวกันได้ 4.00% — เกือบสามเท่าต่างกัน
FIG 14.3 ทางที่แพ้ไปอย่างหวุดหวิด · จุดเข้ารหัสด้วยตำแหน่ง ซึ่งเป็นขั้นหนึ่งของบันได และบทที่ 9 อนุญาตให้ซูมแกนได้ · ช่องว่าง 1 จุดจึงขยายจาก 4.00% เป็น 11.11% ของช่วงที่วาด · แต่พอซูมแล้ว คำถามว่า "ใช้เท่าไหร่จาก 100" ก็ตอบไม่ได้อีกต่อไป

ภาพนี้คือทางเลือกที่แพ้ไปอย่างหวุดหวิด และเหตุผลที่มันน่าสนใจคือมันชนะในเรื่องที่วัดได้ชัด ๆ

ข้อดีของมันมาจากบทที่ 9 โดยตรง — จุดเข้ารหัสด้วยตำแหน่ง ไม่ใช่ความยาว แกนจึงซูมได้โดยไม่ผิดหลักการ พอซูมช่วงเหลือ 16 ถึง 25 ช่องว่าง 1 จุดที่เคยได้ส่วนแบ่ง 4.00% บนแท่งที่เริ่มจากศูนย์ ก็กลายเป็น 11.11% ของช่วงที่วาดทันที

⚠️ ตรงนี้ต้องระวังคำ — 11.11% เป็นข้อเท็จจริงทางเรขาคณิต ไม่ใช่คำสัญญาว่าตาจะแยกออก เกณฑ์ K ในบทที่ 6 ตั้งไว้สำหรับความยาวที่เทียบกับตัวมันเอง เอามาทาบกับตำแหน่งบนแกนที่ซูมแล้วตรง ๆ ไม่ได้ สิ่งที่พูดได้แน่คือช่องว่างได้พื้นที่บนหน้ามากขึ้นเกือบสามเท่า

แล้วทำไมถึงไม่เลือก คำตอบอยู่ที่คำถามของสไลด์ ไม่ใช่ที่บันได

สไลด์ใบนี้ตอบคำถามว่า "แต่ละหน่วยใช้สัดส่วนเท่าไหร่จาก 100" ซึ่งเป็นคำถามที่ต้องอ่านค่าจากศูนย์ พอซูมแกนเป็น 16 ถึง 25 คำถามนั้นก็ตอบไม่ได้อีกต่อไป — ภาพจะบอกได้แค่ว่าใครมากกว่าใคร

ถ้าคำถามเปลี่ยนเป็น "ใครมากกว่าใคร และห่างกันแค่ไหน" จุดบนแกนร่วมชนะทันที และนั่นคือสิ่งที่หัวข้อ 5.5 พูดไว้ตั้งแต่ต้น ว่าบันไดวัดงานเดียว ถ้างานเปลี่ยน ลำดับก็เปลี่ยน

มีอีกสองทางที่ไม่ได้เลือก และเหตุผลสั้นกว่ามาก

  • ไม่ได้ลบเส้นฐานกับบรรทัดที่มา ทั้งที่บัญชีนับว่ามันไม่ใช่ข้อมูล เพราะบทที่ 7.3 ขีดเส้นไว้แล้วว่าหมึกบริบทคนละเรื่องกับหมึกเปล่า ลบแล้วมีคำถามที่ตอบไม่ได้
  • ไม่ได้แยกเป็นภาพชุด ตามบทที่ 11.4 เพราะข้อมูลชุดนี้มีมิติเดียว ห้าค่า ไม่มีอะไรให้แยก เครื่องมือนั้นรอวันที่มีมิติที่สอง

14.6 สิ่งที่บทนี้พิสูจน์

ไล่ทั้งเจ็ดข้อมาแล้ว ลองอ่านตารางนี้ทีเดียว

การตัดสินใจมาจากบทที่ตัวเลขที่ขยับ
ย้ายจากมุมไปความยาว4 · 5ข้อที่ภาพแบกไม่ไหว 4 เหลือ 1
เรียงตามค่า2 · 11งานไล่เทียบหาอันดับ 4 ครั้ง เหลือ 0
ย้ายป้ายไปติดแท่ง2 · 11งานจับคู่ 5 ครั้ง เหลือ 0
ปลดสีออกจากหน้าที่ของป้าย8 · 2คู่สี-ชื่อที่ต้องจำ 5 เหลือ 0
ลบหมึกที่ไม่ตอบคำถามอะไร7หมึกเปล่า 11 ชิ้น เหลือ 0
ฐานแกนที่ศูนย์6 · 9ตัวคูณคำโกหก 6.00 เหลือ 1.00
เขียนหัวข้อจากรายการที่เหลือ13 · 12หัวข้อ 127 ตัวอักษร เหลือ 55

ไม่มีข้อไหนในเจ็ดข้อนี้ที่ตอบว่า "เพราะมันดูดีกว่า" และไม่มีข้อไหนที่ต้องอาศัยรสนิยมของใคร

นี่คือสิ่งที่เล่มนี้สัญญาไว้ตั้งแต่บทที่ 1 ว่าจะไม่ให้กฎสิบข้อกับคุณ เพราะกฎบอกไม่ได้ว่าตัวเองใช้ไม่ได้เมื่อไหร่ ส่วนตัวเลขในคอลัมน์ขวาบอกได้เสมอ — พอเจอชุดข้อมูลใหม่ คุณรันใหม่แล้วดูว่าข้อไหนยังตก

Read the full book