跳转至

地下旅行

约 1438 个字 1 行代码 1 张图片 预计阅读时间 5 分钟

出题人:403

赛事来源:欣年 - 欣年3 (2026)

本站导航: 返回到当前赛事页面

剧透警告

题目主题:数据库;机场

提取方式:A1Z26

1. 这道题的主题是什么?

刘慈欣的作品。

2. 红色表示的是什么?

IATA机场代码。

3. 我应该怎么做?

计算前一个机场到后一个机场距离的连线到地心的距离(即从地心作连线的垂线,求垂线长度),以十万米为单位,四舍五入,保留整数。

4. 我找不到译名,怎么办?

本题使用英文维基百科为数据库,在此为因此造成的困扰表示歉意。 您可以参考:https://limewire.com/d/p74rV#keDnB2XR4Hhttps://441c-112-41-37-187.ngrok-free.app(感谢找不到北)

该题目未见有里程碑

最终答案

ELLIPSE


题目详情

20XX年的春节,你申请了国际隧道通行协会(International Association of Tunnel Access)的通行证,在地下高速穿行,脑中满是遐想……

他知道,这最后一课要提前讲了。
___ _______ _______
妈妈,宇宙的目的是什么?
_____ __ __ ___ _______
为了苦难中的祖国,我抖动蝴蝶的翅膀……
_________
弱小和无知不是生存的障碍,傲慢才是。
_____'_ ___
人们常说的寄托,也就是这么回事。
____ _________
与其说是为了纪念,更像是为了忘却。
___ _____-____ _______
过去的人真笨,过去的人真难。
____ __ ___ _____
富人和穷人已经不是同一个物种了。
___ ___ _______ __ _______
对宇宙和自然的内在美有深刻感觉的人,是不会去进行战争的。
____ ________ _______ _______
永远保持理智确实是一个奢求。
___ _________ _____
给岁月以文明,而不是给文明以岁月。
___ ____ ______
与山脉和海洋相比,恐龙也是灰尘。
__ ____ ___ _________
绝对时空就是你们思想的大地,离开它你们对一切都无从把握。
___________
你们这些世界上最有学问的人,在找世界上最小的沙粒。
___ __ ___ _____ ______
至于我们,来了,做了,走了。
_________ ___
只剩艺术,艺术是文明存在的唯一理由。
___ __ ______
不管走到天涯海角,我离她都不会更远了。
____ ___ ____
教授,上帝确实掷骰子。
___ _________
用这些天真的动物为他们肮脏的战争服务,这已经是最大的不道德了。
_____ ____
只有传遍全宇宙的冲动才能成为一次完整的感受。
___ _______
地球
ANSWER

腾讯文档


总结

题解

注意到这些都是刘慈欣的作品,在番茄小说APP下载选集然后全文搜索即可。

作品 英文 红字 作品 英文 红字
乡村教师 The Village Teacher ETR 朝闻道 Heard It in the Morning AEG
混沌蝴蝶 butterfly TER 三体3:死神永生 Death’s End EAE
球状闪电 Ball Lightning TIN 三体1 The Three-Body Problem ERE
地火 Fire in the Earth ETE 赡养人类 For the Benefit of Mankind REA
全频带阻塞干扰 Full Spectrum Barrage Jamming TEM 流浪地球 The Wandering Earth TNG
三体2:黑暗森林 The Dark Forest TEE 白垩纪往事 Of Ants and Dinosaurs FTI
坍缩 Contraction TAO 微观尽头 End of the Microcosmos FTE
超新星纪元 Supernova Era NER 梦之海 Sea of Dreams ERM
带上她的眼睛 With Her Eyes THE 信使 The Messenger TEN
鲸歌 Whale Song ANG 思想者 The Thinker THH

微观尽头的Microcosmos应该是没有空格的,不知道题目为什么多了个空格。

注意到ft里International Association of Tunnel Access的缩写为IATA,即机场代码。根据题中箭头和问号所在,推测需要将机场进行连线,然后取垂线段长度。多方搜索获得机场信息的表格,然后查找其经纬度:

机场 纬度 经度 机场 纬度 经度
圣罗莎国际机场 -3.441986 -79.996957 巴东石林潘 1.4001 99.430496
拉杰斯机场 38.761799 -27.090799 思沃机场 -17.0903 168.3430023
廷杜夫机场 27.7003994 -8.167099953 埃拉夫机场 -6.606463154 143.9002132
米提玛 12.93299961 36.16699982 雷奥机场 -18.46652 -136.43855
特莫拉机场 -34.421398 147.511993 伯克哈勒夫机场 35.731741 -5.921459
泰贝萨机场 35.43159866 8.12071991 费图伊塔机场 -14.2161 -169.424
青岛国际机场 36.361953 120.088171 埃尔卡拉法特机场 -50.2803 -72.053101
内尤格里机场 56.91389847 124.9140015 科曼达恩特克拉莫机场 -27.663614 -52.271489
特雷西纳机场 -5.06025 -42.823712 铜仁凤凰机场 27.883333 109.308889
布里查姆普尼厄斯机场 45.729198 0.221456 塔哈罗阿机场 -38.18109894 174.7079926

然后让大模型写代码计算垂线长度即可。根据题目暗示,最后结果要换算成以十万米为单位进行提取。运行解题代码,最后得到ANSELLIPSE,提交ELLIPSE

解题代码
import numpy as np


def latlon_to_cartesian(lat_deg, lon_deg, R):
    """将经纬度(度)转换为三维直角坐标"""
    lat = np.radians(lat_deg)
    lon = np.radians(lon_deg)
    x = R * np.cos(lat) * np.cos(lon)
    y = R * np.cos(lat) * np.sin(lon)
    z = R * np.sin(lat)
    return np.array([x, y, z])


def perpendicular_distance_to_chord(lat1, lon1, lat2, lon2, R=6371.0):
    """
    计算地心到地表两点所连线段(弦)的垂线段长度。

    参数:
        lat1, lon1: 第一个点的纬度和经度(度)
        lat2, lon2: 第二个点的纬度和经度(度)
        R: 地球半径(km),默认 6371 km

    返回:
        地心到该弦的垂直距离(km)

    原理:
        线段参数方程: P(t) = P1 + t·(P2 - P1),  t ∈ [0, 1]
        令 d = P2 - P1,最近点参数: t* = -P1·d / |d|²
        由于 |P1| = |P2| = R,可以证明 t* 恒等于 0.5,
        即垂足总在弦的中点(球心到等长弦的垂线平分该弦)。
        因此距离 = |(P1 + P2) / 2| = R·cos(θ/2),其中 θ 为圆心角。
    """
    P1 = latlon_to_cartesian(lat1, lon1, R)
    P2 = latlon_to_cartesian(lat2, lon2, R)

    d = P2 - P1
    d_dot_d = np.dot(d, d)

    # 两点重合时,弦退化为一个点,距离即为 R
    if d_dot_d < 1e-12:
        return R

    # 求原点到直线最近点的参数 t,并限制在 [0,1] 内(线段范围)
    t = -np.dot(P1, d) / d_dot_d
    t = np.clip(t, 0.0, 1.0)

    # 线段上离原点最近的点
    closest_point = P1 + t * d
    distance = np.linalg.norm(closest_point)

    return distance


# ===================== 示例与验证 =====================
if __name__ == "__main__":

    R = 6371.0  # 地球平均半径 (km)
    _targets = {
        'ETR':'AEG',
        'TER':'EAE',
        'TIN':'ERE',
        'ETE':'REA',
        'TEM':'TNG',
        'TEE':'FTI',
        'TAO':'FTE',
        'NER':'ERM',
        'THE':'TEN',
        'ANG':'THH'
    }
    new_targets = """圣罗莎国际机场	-3.441986	-79.996957	Heard It in the Morning	巴东石林潘	1.4001	99.430496
拉杰斯机场	38.761799	-27.090799	Death's End	思沃机场	-17.0903	168.3430023
廷杜夫机场	27.7003994	-8.167099953	The Three-Body Problem	埃拉夫机场	-6.606463154	143.9002132
米提玛	12.93299961	36.16699982	For the Benefit of Mankind	雷奥机场	-18.46652	-136.43855
特莫拉机场	-34.421398	147.511993	The Wandering Earth	伯克哈勒夫机场	35.731741	-5.921459
泰贝萨机场	35.43159866	8.12071991	Of Ants and Dinosaurs	费图伊塔机场	-14.216131	-169.423771
青岛国际机场	36.361953	120.088171	End of the Microcosmos	埃尔卡拉法特机场	-50.2803	-72.053101
内尤格里机场	56.91389847	124.9140015	Sea of Dreams	科曼达恩特克拉莫机场	-27.663614	-52.271489
特雷西纳机场	-5.06025	-42.823712	The Messenger	铜仁凤凰机场	27.883333	109.308889
布里查姆普尼厄斯机场	45.729198	0.221456	The Thinker	塔哈罗阿机场	-38.18109894	174.7079926"""
    d_list = []
    for line in new_targets.split('\n'):
        parts = line.strip().split('\t')
        key = parts[0]
        lat1 = float(parts[1])
        lon1 = float(parts[2])
        value = parts[4]
        lat2 = float(parts[5])
        lon2 = float(parts[6])
        d = perpendicular_distance_to_chord(lat1, lon1, lat2, lon2, R)
        d /= 100
        d_list.append(d)
        print(f"{key}{value}:  垂线段长度 = {d:.4f} (100000 m)")
    for d in d_list:
        d = int(round(d, 0))
        print(chr(d+ord('A')-1),end='')
    # --- 示例 1:北京 → 上海 ---
    # beijing = (39.9042, 116.4074)
    # shanghai = (31.2304, 121.4737)
    # d1 = perpendicular_distance_to_chord(*beijing, *shanghai, R)
    # print(f"北京 → 上海:  垂线段长度 = {d1:.4f} km")

    # # --- 示例 2:对径点(北极 → 南极),弦穿过球心,距离应为 0 ---
    # d2 = perpendicular_distance_to_chord(90, 0, -90, 0, R)
    # print(f"北极 → 南极:  垂线段长度 = {d2:.4f} km  (理论值 0)")

    # # --- 示例 3:同一点,距离应为 R ---
    # d3 = perpendicular_distance_to_chord(40, 116, 40, 116, R)
    # print(f"同一点:       垂线段长度 = {d3:.4f} km  (理论值 {R})")

    # # --- 示例 4:赤道上相隔 90°,理论值 R·cos(45°) ---
    # d4 = perpendicular_distance_to_chord(0, 0, 0, 90, R)
    # theory4 = R * np.cos(np.radians(45))
    # print(f"赤道 0° → 90°: 垂线段长度 = {d4:.4f} km  (理论值 {theory4:.4f})")

    # # --- 示例 5:赤道上相隔 180°(对径),距离应为 0 ---
    # d5 = perpendicular_distance_to_chord(0, 0, 0, 180, R)
    # print(f"赤道 0° → 180°: 垂线段长度 = {d5:.4f} km  (理论值 0)")

    # # --- 通用公式验证:距离 = R·cos(θ/2) ---
    # print("\n--- 通用公式验证: d = R·cos(θ/2) ---")
    # for angle in [30, 60, 90, 120, 150, 180]:
    #     d = perpendicular_distance_to_chord(0, 0, 0, angle, R)
    #     theory = R * np.cos(np.radians(angle / 2))
    #     print(f"  圆心角 {angle:>3}°:  计算值 = {d:.4f} km,  理论值 = {theory:.4f} km,  误差 = {abs(d - theory):.2e} km")
评价

题目不赖,赛后开始看大刘的中短篇了。写得确实很感人啊,宇宙的浪漫科幻。