Liseden eski trigonometri notlarını kazma zamanı! Zorluk, farklı üçgenlerin bilinmeyen taraflarını ve açılarını çözmek. Ve kod golf geleneksel olduğu gibi, en küçük çalışma kodu kazanır.
Bu önemsiz bir sorun değil; python'daki referans uygulamam şu anda 838 837 karaktere kadar, ama eminim golf çözümleri çok daha küçük olacak.
Ayrıca, takılırsanız, Wikipedia'daki bu bölüm sizi yönlendirecektir: Üçgen: Yanları ve açıları hesaplamak .
Giriş
Aşağıdaki üçgen, bu meydan okumada kullanılan kenarların ve açıların adlarını göstermektedir. Kenarların küçük ve açıların büyük harf olduğunu unutmayın.
Girdi, boşlukta stdin
veya komut satırı bağımsız değişkenleri (seçiminiz) olarak altı boşlukla ayrılmış değer olarak verilir . Altı değer kenarlara a, b, c
ve açılara karşılık gelir A, B, C
. Bilinmeyen taraflar soru işaretleri ( ?
) olarak verilir . Hem giriş hem de çıkış açıları radyan cinsinden olmalıdır. Giriş değerlerinin doğru olduğunu varsayabilirsiniz (hiçbir şeyi doğrulamanız gerekmez). Ayrıca giriş üçgeninin dejenere olmadığını ve tüm kenarların ve açıların sıfır olmadığını varsayabilirsiniz.
Aşağıdaki örnek, giriş tarafı olduğunu söyler a
olduğunu 8
, yan b
olduğunu 12
ve açı A
olduğunu 0.5
radyan:
8 12 ? 0.5 ? ?
Çıktı
Çıktı, girdi ile aynı biçimde verilir - altı boşlukla ayrılmış sayı açık stdout
. Tek istisna, giriş üçgeni çözülemediğinde - dize "No solution"
yazılmalıdır stdout
. İki çözüm mümkünse, ikisi de aralarında bir satırsonu ile çıkarılır.
Yukarıdaki giriş için çıkış aşağıdadır:
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
Çıktıda çok fazla hassasiyet olması gerekmez, ancak en az birkaç ondalık basamak gerekir.
kurallar
- Girdi okunuyor
stdin
veya komut satırı bağımsız değişkenleri - Çıktı
stdout
- Verilen giriş ile iki çözüm mümkünse, her iki çıkışı da
- Bir veya iki net çözüm elde etmek için çok az bilgi varsa, bunu bir
"No solution"
vaka olarak düşünün - Yerleşik veya önceden var olan bir kod kullanılamaz (elbette trig işlevlerini kullanabilirsiniz, ancak "
solveTriangle
" veya benzeri değil) - En kısa kod kazanır
Test senaryoları
İçinde 3 4 5 ? ? ?
Dışarı 3.0 4.0 5.0 0.643501108793 0.927295218002 1.57079630572
İçinde ? 4 ? 0.64 0.92 1.57
Dışarı 3.00248479301 4.0 5.02764025486 0.64 0.92 1.57
İçinde ? ? 5 ? 0.92 ?
Dışarı No solution
İçinde ? ? 5 ? 0.92 1.57
Dışarı 3.03226857833 3.97800936148 5.0 0.65159265359 0.92 1.57
İçinde 8 12 ? 0.5 ? ?
Out (iki çözüm)
8.0 12.0 16.0899264342 0.5 0.802561439714 1.83903121388
8.0 12.0 4.97205505116 0.5 2.33903121388 0.302561439714
İçinde 8 12 ? ? .5 ?
Dışarı 8.0 12.0 18.3912222133 0.325325285223 0.5 2.31626736837