100 karambol pozisyonu, 249 model içinde geçerli sonuç ve 151 boş veya reddedilmiş yuvadan (toplam 400 değerlendirilen sonuç yuvası) oluşan özgün ve sürümlenmiş simülatör veri seti. Değerler makine öğrenmesinden veya gerçek masa başarı araştırmasından değil, sürümlü deterministik fizik önbelleğinden gelir.
Metodoloji
Yayımlanan veri, sürümlü çözücü önbelleğinden üretilir. İndirme bağımsız doğrulanabilsin diye motor profili, kaynak parmak izi, sayımlar ve SHA-256 aşağıda kaydedilir. Bir satır yalnız kurala duyarlı motor seçilen modu tamamladığında simülatör sonucu sayılır; gerçek masa başarı oranı iddiası değildir.
Sürümlenmiş simülatör verisi
- Motor sözleşmesi
3ball-carom-match-v2 / physics 2.0.0 / solver 4.2.0- Veri seti SHA-256
256a8ec7e7e9a66d907bd43f5fdd6b87628dc067fd9621f2d2ebd2472c3e43ed- geçerli çözücü sonucu
- 249
- boş veya reddedilmiş sonuç yuvası
- 151
- İnceleme durumu
machine-assisted-reviewed
Alan sözlüğü
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.
Herkese açık indirmeleri doğrula
İndirme kontrolü dosya bütünlüğünü ve sayıları doğrular. Fizik motorunu yeniden üretmez, vuruşu bağımsız doğrulamaz veya gerçek masa doğruluğunu kanıtlamaz. Tam üretim ortamı herkese açık dağıtılmıyor.
Aşağıdakini verify_3ball.py olarak kaydedip Python 3 ile çalıştır. Yalnız standart kitaplığı kullanır ve 3ball.app üzerindeki açık JSON dosyalarını indirir; hesap veya proje kopyası gerekmez.
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'])Kapsam ve sınırlamalar
Bu, gerçek masa başarı araştırması değil deterministik simülatör veri setidir. Yayımlanan önbellek dondurulmuş V2 profilini kullanır. Physics V3 bağımsız gerçek masa ölçümünü beklemektedir. Marj ve sağlamlık alanları model tanısıdır; gerçek dünya olasılığı değildir.
Lisans ve gizlilik
İndirme yalnız hesaplanmış masa koordinatlarını ve çözücü çıktılarını içerir; fotoğraf, hesap kimliği, serbest metin veya kişisel veri içermez. CC BY 4.0 lisanslıdır.
Örnek pozisyonlar
| Pozisyon | Mod | Top | Solver atışı | En iyi marj |
|---|---|---|---|---|
3cushion::white::r2.130,0.710|w0.710,0.528|y0.710,0.710 | 3-bant | 3 | 3 | 1.15 |
freecarom::white::r2.130,0.710|w0.710,0.528|y0.710,0.710 | serbest karambol | 3 | 1 | 1.32 |
3cushion::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.710 | 3-bant | 3 | 1 | 0.94 |
freecarom::yellow::r2.130,0.710|w0.710,0.528|y0.710,0.710 | serbest karambol | 3 | 1 | 1.36 |
3cushion::white::r2.550,0.500|w0.300,0.300|y2.500,1.100 | 3-bant | 3 | 4 | 0.28 |
freecarom::white::r2.550,0.500|w0.300,0.300|y2.500,1.100 | serbest karambol | 3 | 4 | 0.50 |
3cushion::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.100 | 3-bant | 3 | 2 | 0.97 |
freecarom::yellow::r2.550,0.500|w0.300,0.300|y2.500,1.100 | serbest karambol | 3 | 4 | 2.13 |
3cushion::white::r0.550,0.300|w1.420,0.710|y1.950,1.100 | 3-bant | 3 | 1 | 1.47 |
freecarom::white::r0.550,0.300|w1.420,0.710|y1.950,1.100 | serbest karambol | 3 | 2 | 1.50 |
3cushion::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.100 | 3-bant | 3 | 1 | 0.24 |
freecarom::yellow::r0.550,0.300|w1.420,0.710|y1.950,1.100 | serbest karambol | 3 | 2 | 0.92 |
Tam veri setini indir
Eksiksiz makine-okunur veri seti, atıf ile ücretsiz indirilip yeniden kullanılabilir.
Nasıl kullanılır
Örnek koordinatları ve vuruş topu kimliğini kullanarak pozisyonu antrenöre yerleştir. Sabit V2 sonucu ile güncel V3 tekrarı farklı olabilir; karşılaştırırken motor sürümünü kaydet.
Antrenörü aç
Örnek koordinatları ve vuruş topu kimliğini kullanarak pozisyonu antrenöre yerleştir. Sabit V2 sonucu ile güncel V3 tekrarı farklı olabilir; karşılaştırırken motor sürümünü kaydet.
Antrenörü aç →