Hidden WordScanner
Private scans · No account required

DuckieDai Smart Kinematics

Solve a selected constant-acceleration quantity from the available initial velocity, final velocity, acceleration, time, and displacement values.

Version 1.0.0 · Tested on a TI calculator

← Back to Calculator Program Library

Independent compatibility resource: Hidden Word Scanner is independent and is not affiliated with or endorsed by Texas Instruments. TI product names describe compatibility only.

Action-count privacy: Successful downloads, preview starts, and preview completions increment same-origin aggregate counters. No entered values, source text, IP address, account, cookie, device identifier, or fingerprint is stored with these counts.

physics · MIT License

Overview

Solve a selected constant-acceleration quantity from the available initial velocity, final velocity, acceleration, time, and displacement values.

Usage

Inputs

  • Target quantity
  • Known velocity, acceleration, time, and displacement values; unknown values are left blank

Outputs

  • Solved target with the selected constant-acceleration equation and labelled unit

Units: Use one consistent system such as metres, seconds, metres per second, and metres per second squared.

Assumptions and limitations

Assumptions

  • Acceleration is constant over the interval and all signed quantities share one direction convention.

Constraints

  • A solvable combination of known values is required and divisor values cannot be zero.

Known failures

  • Insufficient or incompatible known values produce no solution.
  • Some quadratic situations may have multiple physical interpretations requiring user judgment.

Compatibility and review

Review status
Tested on a TI calculator
Tested on
TI-84 Plus CE Python; OS 5.8.3; Python App 5.8.3.0048; exact paginated .py transferred through TI Connect CE into RAM and tested individually
What happened
Passed: branded intro, target selection, optional value entry, compatible kinematics solution, and paginated answer screen ran on the physical calculator
Dependencies
math
Suggested calculator name
KINETICS — you can give it another valid, unique name when you transfer it
Desktop test cases
Not available for this interactive-only source

This exact source auto-launches an interactive calculator session, so compatibility evidence comes from the recorded physical-device review rather than an importable desktop fixture.

Browser preview

Try the DuckieDai calculator screen

Follow the reviewed program's real menu, prompts, validation, calculation, and result flow before downloading.

Simulation boundary: This preview uses a reviewed browser adapter. It does not execute the downloaded Python and does not prove TI-Python or calculator compatibility.

JavaScript is required for the optional browser simulation. Source viewing and downloading remain available without it.

Exact reviewed bytes

Source code

Download .py

View source below, copy it when JavaScript is available, or download the exact .py bytes.

  1. """DuckieDai Smart Kinematics for TI-84 Plus CE Python."""
  2. from math import sqrt
  3. def duckiedai_intro(program_name, wait=True):
  4. """Show the reusable DuckieDai program opening."""
  5. title = program_name[:16]
  6. empty = 16 - len(title)
  7. left = empty // 2
  8. right = empty - left
  9. print("+----------------------+")
  10. print("| " + " " * left + title + " " * right + " |")
  11. print("| |")
  12. print("| __ |")
  13. print("| ___(o )> quack! |")
  14. print("| \\ <_. ) |")
  15. print("| `---' |")
  16. print("| by DuckieDai |")
  17. print("+----------------------+")
  18. print("Loading...")
  19. if wait:
  20. input("Press enter to start ")
  21. print("\n" * 6)
  22. def optional_number(prompt):
  23. """Return a number or None if left blank."""
  24. while True:
  25. raw = input(prompt)
  26. if raw == "":
  27. return None
  28. try:
  29. value = float(raw)
  30. if value > -1e100 and value < 1e100:
  31. return value
  32. except ValueError:
  33. pass
  34. print("Number or blank only.")
  35. def show_answer(name, value, unit):
  36. input("Press enter for answer ")
  37. print("\n" * 6)
  38. print("ANSWER")
  39. print(name + " = " + str(value))
  40. print(unit)
  41. def main():
  42. duckiedai_intro("KINEMATIC SOLVER")
  43. print("SMART KINEMATICS")
  44. print()
  45. print("What do you need?")
  46. print()
  47. print("1. Final velocity")
  48. print("2. Initial velocity")
  49. print("3. Acceleration")
  50. print("4. Time")
  51. print("5. Displacement")
  52. print()
  53. target = input("Choose 1-5: ")
  54. print()
  55. print("Enter known values.")
  56. print("Leave unknowns blank.")
  57. print()
  58. # -------------------------
  59. # GET KNOWN VALUES
  60. # -------------------------
  61. if target != "2":
  62. v0 = optional_number(
  63. "v0 (m/s): "
  64. )
  65. else:
  66. v0 = None
  67. if target != "1":
  68. v = optional_number(
  69. "v (m/s): "
  70. )
  71. else:
  72. v = None
  73. if target != "3":
  74. a = optional_number(
  75. "a (m/s^2): "
  76. )
  77. else:
  78. a = None
  79. if target != "4":
  80. t = optional_number(
  81. "t (s): "
  82. )
  83. else:
  84. t = None
  85. if target != "5":
  86. dx = optional_number(
  87. "dx (m): "
  88. )
  89. else:
  90. dx = None
  91. solved = False
  92. # ==================================================
  93. # 1. SOLVE FINAL VELOCITY
  94. # ==================================================
  95. if target == "1":
  96. # v = v0 + a*t
  97. if (v0 is not None and
  98. a is not None and
  99. t is not None):
  100. print()
  101. print("Using:")
  102. print("v = v0 + a*t")
  103. v = v0 + a * t
  104. print()
  105. print("v = " + str(v0) +
  106. " + (" + str(a) +
  107. " x " + str(t) + ")")
  108. show_answer(
  109. "v",
  110. v,
  111. "m/s"
  112. )
  113. solved = True
  114. # v^2 = v0^2 + 2*a*dx
  115. elif (v0 is not None and
  116. a is not None and
  117. dx is not None):
  118. inside = (
  119. v0 ** 2 +
  120. 2 * a * dx
  121. )
  122. if inside >= 0:
  123. v = sqrt(inside)
  124. print()
  125. print("Using:")
  126. print("v^2=v0^2+2*a*dx")
  127. print()
  128. print("Rearranged:")
  129. print("v=+/-sqrt(")
  130. print("v0^2+2*a*dx)")
  131. print()
  132. print("ANSWER")
  133. print("v = +/- " + str(v))
  134. print("m/s")
  135. print()
  136. print("Direction decides")
  137. print("the correct sign.")
  138. solved = True
  139. # ==================================================
  140. # 2. SOLVE INITIAL VELOCITY
  141. # ==================================================
  142. elif target == "2":
  143. # v = v0 + a*t
  144. if (v is not None and
  145. a is not None and
  146. t is not None):
  147. print()
  148. print("Using:")
  149. print("v = v0 + a*t")
  150. print()
  151. print("Rearranged:")
  152. print("v0 = v - a*t")
  153. v0 = v - a * t
  154. show_answer(
  155. "v0",
  156. v0,
  157. "m/s"
  158. )
  159. solved = True
  160. # dx = v0*t + 0.5*a*t^2
  161. elif (dx is not None and
  162. a is not None and
  163. t is not None and
  164. t != 0):
  165. print()
  166. print("Using:")
  167. print("dx=v0*t+.5*a*t^2")
  168. print()
  169. print("Rearranged:")
  170. print("v0=(dx-.5*a*t^2)/t")
  171. v0 = (
  172. dx -
  173. 0.5 * a * t ** 2
  174. ) / t
  175. show_answer(
  176. "v0",
  177. v0,
  178. "m/s"
  179. )
  180. solved = True
  181. # v^2 = v0^2 + 2*a*dx
  182. elif (v is not None and
  183. a is not None and
  184. dx is not None):
  185. inside = (
  186. v ** 2 -
  187. 2 * a * dx
  188. )
  189. if inside >= 0:
  190. v0 = sqrt(inside)
  191. print()
  192. print("Using:")
  193. print("v^2=v0^2+2*a*dx")
  194. print()
  195. print("Rearranged:")
  196. print("v0=+/-sqrt(")
  197. print("v^2-2*a*dx)")
  198. print()
  199. print("ANSWER")
  200. print("v0 = +/- " + str(v0))
  201. print("m/s")
  202. print()
  203. print("Direction decides")
  204. print("the correct sign.")
  205. solved = True
  206. # ==================================================
  207. # 3. SOLVE ACCELERATION
  208. # ==================================================
  209. elif target == "3":
  210. # v = v0 + a*t
  211. if (v is not None and
  212. v0 is not None and
  213. t is not None and
  214. t != 0):
  215. print()
  216. print("Using:")
  217. print("v = v0 + a*t")
  218. print()
  219. print("Rearranged:")
  220. print("a = (v-v0)/t")
  221. a = (v - v0) / t
  222. show_answer(
  223. "a",
  224. a,
  225. "m/s^2"
  226. )
  227. solved = True
  228. # dx = v0*t + 0.5*a*t^2
  229. elif (dx is not None and
  230. v0 is not None and
  231. t is not None and
  232. t != 0):
  233. print()
  234. print("Using:")
  235. print("dx=v0*t+.5*a*t^2")
  236. print()
  237. print("Rearranged:")
  238. print("a=2(dx-v0*t)/t^2")
  239. a = (
  240. 2 *
  241. (dx - v0 * t)
  242. / (t ** 2)
  243. )
  244. show_answer(
  245. "a",
  246. a,
  247. "m/s^2"
  248. )
  249. solved = True
  250. # v^2 = v0^2 + 2*a*dx
  251. elif (v is not None and
  252. v0 is not None and
  253. dx is not None and
  254. dx != 0):
  255. print()
  256. print("Using:")
  257. print("v^2=v0^2+2*a*dx")
  258. print()
  259. print("Rearranged:")
  260. print("a=(v^2-v0^2)/(2*dx)")
  261. a = (
  262. v ** 2 -
  263. v0 ** 2
  264. ) / (2 * dx)
  265. show_answer(
  266. "a",
  267. a,
  268. "m/s^2"
  269. )
  270. solved = True
  271. # ==================================================
  272. # 4. SOLVE TIME
  273. # ==================================================
  274. elif target == "4":
  275. # v = v0 + a*t
  276. if (v is not None and
  277. v0 is not None and
  278. a is not None and
  279. a != 0):
  280. print()
  281. print("Using:")
  282. print("v = v0 + a*t")
  283. print()
  284. print("Rearranged:")
  285. print("t = (v-v0)/a")
  286. t = (v - v0) / a
  287. show_answer(
  288. "t",
  289. t,
  290. "seconds"
  291. )
  292. solved = True
  293. # dx = v0*t + 0.5*a*t^2
  294. elif (dx is not None and
  295. v0 is not None and
  296. a is not None):
  297. print()
  298. print("Using:")
  299. print("dx=v0*t+.5*a*t^2")
  300. if a == 0:
  301. if v0 != 0:
  302. t = dx / v0
  303. print()
  304. print("Since a = 0:")
  305. print("t = dx/v0")
  306. show_answer(
  307. "t",
  308. t,
  309. "seconds"
  310. )
  311. solved = True
  312. else:
  313. inside = (
  314. v0 ** 2 +
  315. 2 * a * dx
  316. )
  317. if inside >= 0:
  318. root = sqrt(inside)
  319. t1 = (
  320. -v0 + root
  321. ) / a
  322. t2 = (
  323. -v0 - root
  324. ) / a
  325. print()
  326. print("Solving quadratic:")
  327. print()
  328. if t1 >= 0:
  329. print("t = " + str(t1) +
  330. " s")
  331. if t2 >= 0:
  332. print("t = " + str(t2) +
  333. " s")
  334. print()
  335. print("Use physical")
  336. print("positive time.")
  337. solved = True
  338. # ==================================================
  339. # 5. SOLVE DISPLACEMENT
  340. # ==================================================
  341. elif target == "5":
  342. # dx = v0*t + 0.5*a*t^2
  343. if (v0 is not None and
  344. a is not None and
  345. t is not None):
  346. print()
  347. print("Using:")
  348. print("dx=v0*t+.5*a*t^2")
  349. dx = (
  350. v0 * t +
  351. 0.5 * a * t ** 2
  352. )
  353. show_answer(
  354. "dx",
  355. dx,
  356. "meters"
  357. )
  358. solved = True
  359. # v^2 = v0^2 + 2*a*dx
  360. elif (v is not None and
  361. v0 is not None and
  362. a is not None and
  363. a != 0):
  364. print()
  365. print("Using:")
  366. print("v^2=v0^2+2*a*dx")
  367. print()
  368. print("Rearranged:")
  369. print("dx=(v^2-v0^2)/(2*a)")
  370. dx = (
  371. v ** 2 -
  372. v0 ** 2
  373. ) / (2 * a)
  374. show_answer(
  375. "dx",
  376. dx,
  377. "meters"
  378. )
  379. solved = True
  380. # ==================================================
  381. # COULD NOT SOLVE
  382. # ==================================================
  383. if not solved:
  384. print()
  385. print("Not enough usable")
  386. print("information.")
  387. print()
  388. print("Check the values")
  389. print("given in the problem.")
  390. print()
  391. print("DuckieDai says: done!")
  392. # TI-Python imports the selected AppVar rather than
  393. # setting __name__ to main.
  394. main()
Filename
KINETICS.py
Size
11874 bytes
SHA-256
5eb4efc0bee4bd73379ac513a08f05d889af8185695ff95053f6bbca30ec6bc2

Transfer and launch

  1. Confirm that your calculator is the Python-capable model named above. Check that its OS and Python App versions match the reviewed record.
  2. Download the .py source above and verify its SHA-256 digest if your computer provides that option.
  3. Use TI Connect CE to send the Python file to a compatible calculator. KINETICS is a suggested name; you may choose another valid, unique calculator name.
  4. Open the Python App, select the program, and check sample inputs before relying on other results.

Read the complete installation, launch, troubleshooting, and removal guide.

Availability does not mean a teacher, school, or exam permits this program. Follow the applicable rules.

Version history

Any source change requires a new immutable version and digest. Historical downloads remain available only while their review records remain valid.