gts growth.nim娱乐程序

import math, os, strformat, strutils

# 格式化函数,自动选择合适单位
proc formatMass(kg: float): string =
  if kg < 1e3:    return fmt"{kg:.2f} kg"
  elif kg < 1e6:  return fmt"{kg/1e3:.2f} 吨"
  elif kg < 1e9:  return fmt"{kg/1e6:.2f} 千吨"
  elif kg < 1e12: return fmt"{kg/1e9:.2f} 百万吨"
  elif kg < 1e15: return fmt"{kg/1e12:.2f} 十亿吨"
  elif kg < 1e18: return fmt"{kg/1e15:.2f} 万亿吨"
  else:           return fmt"{kg:.2e} kg"

proc formatLength(m: float): string =
  if m < 1e3:    return fmt"{m:.2f} 米"
  elif m < 1e6:  return fmt"{m/1e3:.2f} 公里"
  elif m < 1e9:  return fmt"{m/1e6:.2f} 万公里"
  elif m < 1e12: return fmt"{m/1e9:.2f} 百万公里"
  else:          return fmt"{m:.2e} 米"

proc formatVolume(m3: float): string =
  if m3 < 1e3:    return fmt"{m3:.2f} 立方米"
  elif m3 < 1e6:  return fmt"{m3/1e3:.2f} 千立方米"
  elif m3 < 1e9:  return fmt"{m3/1e6:.2f} 百万立方米"
  elif m3 < 1e12: return fmt"{m3/1e9:.2f} 十亿立方米"
  else:           return fmt"{m3:.2e} 立方米"

proc main() =
  let r = 0.1      # 每秒增长率 0.1%
  var w = 49.0       # 初始心智体重 (kg)
  const c = 0.4645   # 身高 = c * w^(1/3)   (由 1.7m 与 49kg 算出)
  const k = 85.25    # 容积 = k * w          (由初始容积 ~4189 m³ 导出)

  echo "开始增长,每秒增长 ", r*100, "%"
  echo "初始: 体重 ", formatMass(w), ", 身高 ", formatLength(1.7), ", 容积 ", formatVolume(k*w)
  echo "按 Ctrl+C 停止\n"

  var seconds = 0
  while true:
    seconds += 1
    w *= (1 + r)
    let h = c * pow(w, 1.0/3.0)
    let v = k * w
    echo fmt"第 {seconds:3d} 秒:我的心智体重 {formatMass(w):>12},我的心智身高 {formatLength(h):>12}, 我的心智容积 {formatVolume(v):>12}"
    sleep(1000)

when isMainModule:
  main()

 

posted on 2026-02-18 11:44  小沙盒工作室  阅读(19)  评论(0)    收藏  举报