Dữ liệu mô phỏng có phiên bản gồm 100 thế bi, 249 kết quả hợp lệ trong mô hình và 151 ô trống hoặc bị loại (400 ô đã đánh giá). Nguồn là cache vật lý tất định có phiên bản, không phải nghiên cứu thành công trên bàn thật.
Phương pháp
Dữ liệu công bố được tạo từ bộ nhớ đệm solver có phiên bản. Hồ sơ engine, dấu vân tay nguồn, số lượng và SHA-256 được ghi để kiểm tra độc lập. Mỗi kết quả chỉ là kết quả mô phỏng, không phải xác suất thành công trên bàn thật.
Dữ liệu mô phỏng có phiên bản
- Hợp đồng engine
3ball-carom-match-v2 / physics 2.0.0 / solver 4.2.0- SHA-256 dữ liệu
256a8ec7e7e9a66d907bd43f5fdd6b87628dc067fd9621f2d2ebd2472c3e43ed- kết quả solver hợp lệ
- 249
- ô kết quả trống hoặc bị loại
- 151
- Trạng thái đánh giá
machine-assisted-reviewed
Từ điển trường
position: cueIdx, mode, firstIdx, balls, shots · ball: color, p.x, p.y · shots[]: shot {angle, power, sideSpin, topSpin}, label, length, margin, pct, tol, perturbPct, cushions.
Kiểm tra dữ liệu tải công khai
Kiểm tra xác nhận tính toàn vẹn tệp và số lượng. Nó không tái tạo động cơ vật lý, xác minh độc lập cú đánh hay chứng minh độ chính xác bàn thật. Môi trường tạo dữ liệu đầy đủ không được phân phối công khai.
Lưu nội dung dưới đây thành verify_3ball.py và chạy bằng Python 3. Chỉ dùng thư viện chuẩn và tải JSON công khai từ 3ball.app; không cần tài khoản hoặc bản sao dự án.
import hashlib, json, urllib.request
BASE = 'https://3ball.app/'
ALLOWED = {'data/solutions_cache.json', 'data/solutions_cache_v3.json'}
def download(path):
with urllib.request.urlopen(BASE + path, timeout=30) as response:
return response.read(2_000_001)
manifest = json.loads(download('data/research-manifest.json'))
for key in ('source', 'portfolioBeta'):
record = manifest if key == 'source' else manifest[key]
source = record['source']
assert source['path'] in ALLOWED, 'Unexpected dataset path'
raw = download(source['path'])
assert len(raw) == source['bytes'], 'File size mismatch'
assert hashlib.sha256(raw).hexdigest() == source['sha256'], 'Hash mismatch'
data = json.loads(raw)
positions = list(data['positions'].values())
assert len(positions) == record['counts']['positions'], 'Position count mismatch'
if key == 'source':
shots = [s for p in positions for s in p['shots']]
assert sum(s is not None for s in shots) == record['counts']['validShots']
assert sum(s is None for s in shots) == record['counts']['rejectedSlots']
else:
continuations = list(data['continuations'].values())
assert len(continuations) == record['counts']['continuations']
solutions = [s for p in positions + continuations for s in p['solutions']]
assert sum(s is not None for s in solutions) == record['counts']['solutions']
print(source['path'], 'OK', record['counts'])Phạm vi và giới hạn
Đây là dữ liệu mô phỏng tất định, không phải nghiên cứu tỉ lệ thành công trên bàn thật. Cache công bố dùng hồ sơ V2 đã đóng băng. Physics V3 vẫn chờ đo độc lập. Biên và độ bền là chẩn đoán mô hình, không phải xác suất thực tế.
Giấy phép và quyền riêng tư
Tệp tải chỉ có tọa độ bàn tính toán và đầu ra solver; không có ảnh, định danh tài khoản, văn bản tự do hay dữ liệu cá nhân. Giấy phép CC BY 4.0.
Thế bi mẫu
| Thế bi | Chế độ | Bi | Cú solver | Biên tốt nhất |
|---|---|---|---|---|
3cushion::white::r2.130,0.710|w0.710,0.528|y0.710,0.710 | ba băng | 3 | 3 | 1.15 |
freecarom::white::r2.130,0.710|w0.710,0.528|y0.710,0.710 | carom tự do | 3 | 1 | 1.32 |
3cushion::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.710 | ba băng | 3 | 1 | 0.94 |
freecarom::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.710 | carom tự do | 3 | 1 | 1.36 |
3cushion::white::r2.550,0.500|w0.300,0.300|y2.500,1.100 | ba băng | 3 | 4 | 0.28 |
freecarom::white::r2.550,0.500|w0.300,0.300|y2.500,1.100 | carom tự do | 3 | 4 | 0.50 |
3cushion::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.100 | ba băng | 3 | 2 | 0.97 |
freecarom::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.100 | carom tự do | 3 | 4 | 2.13 |
3cushion::white::r0.550,0.300|w1.420,0.710|y1.950,1.100 | ba băng | 3 | 1 | 1.47 |
freecarom::white::r0.550,0.300|w1.420,0.710|y1.950,1.100 | carom tự do | 3 | 2 | 1.50 |
3cushion::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.100 | ba băng | 3 | 1 | 0.24 |
freecarom::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.100 | carom tự do | 3 | 2 | 0.92 |
Tải toàn bộ dữ liệu
Bộ dữ liệu máy đọc đầy đủ được tải và dùng lại miễn phí kèm ghi nguồn.
Cách dùng
Đặt vị trí trong công cụ theo tọa độ mẫu và danh tính bi chủ. Kết quả V2 cố định có thể khác phát lại V3 hiện tại; ghi phiên bản động cơ khi so sánh.
Mở trình tập
Đặt vị trí trong công cụ theo tọa độ mẫu và danh tính bi chủ. Kết quả V2 cố định có thể khác phát lại V3 hiện tại; ghi phiên bản động cơ khi so sánh.
Mở trình tập →